from flask import Flask, request, jsonify from flask_cors import CORS from faster_whisper import WhisperModel import tempfile import os app = Flask(__name__) CORS(app) # Load model (same as your working Gradio code) model_size = "tiny" device = "cpu" compute_type = "int8" model = WhisperModel(model_size, device=device, compute_type=compute_type) @app.route('/transcribe', methods=['POST']) def transcribe(): if 'audio' not in request.files: return jsonify({'error': 'No audio file'}), 400 file = request.files['audio'] # Save temp file temp = tempfile.NamedTemporaryFile(delete=False, suffix='.wav') file.save(temp.name) temp.close() try: # Same transcribe function that worked segments, _ = model.transcribe(temp.name, beam_size=5) text = "".join([segment.text for segment in segments]) return jsonify({'text': text}) except Exception as e: return jsonify({'error': str(e)}), 500 finally: os.unlink(temp.name) @app.route('/health', methods=['GET']) def health(): return jsonify({'status': 'ok'}) if __name__ == '__main__': app.run(host='0.0.0.0', port=7860)