from flask import Flask, request, jsonify from faster_whisper import WhisperModel import os import tempfile app = Flask(__name__) # Load Model model_size = "small.en" model = WhisperModel(model_size, device="cpu", compute_type="int8") @app.route('/transcribe', methods=['POST']) def transcribe_audio(): if 'audio' not in request.files: return jsonify({"error": "No audio file provided"}), 400 audio_file = request.files['audio'] temp_file_path = None # Initialize variable # Save file with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as tmp_audio: audio_file.save(tmp_audio.name) temp_file_path = tmp_audio.name try: # Now we can safely use temp_file_path segments, info = model.transcribe(temp_file_path, beam_size=5, language="en") transcript = " ".join([segment.text for segment in segments]) print(f"Transcript: {transcript}") return jsonify({"transcript": transcript}) except Exception as e: print(f"Error: {e}") return jsonify({"error": str(e)}), 500 finally: # Cleanup if temp_file_path and os.path.exists(temp_file_path): os.remove(temp_file_path) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)