from flask import Flask, request, jsonify import whisper import io from deep_translator import GoogleTranslator app = Flask(__name__) # Load Whisper model once for efficiency model = whisper.load_model("base") @app.route('/transcribe', methods=['POST']) def transcribe(): try: # Read raw bytes from request audio_bytes = request.data if not audio_bytes: return jsonify({"error": "No audio data provided"}), 400 # Save bytes to a temporary file (required for Whisper) temp_audio_path = "temp_audio.wav" with open(temp_audio_path, "wb") as f: f.write(audio_bytes) # Transcribe using Whisper result = model.transcribe(temp_audio_path) print(result) return jsonify({"text": result["text"]}) except Exception as e: print("Error:", str(e)) # Log error for debugging return jsonify({"error": "Internal Server Error", "details": str(e)}), 500 @app.route('/translate', methods=['POST']) def translate_text(): # Get JSON data from the request data = request.get_json() # Extract text and target language from the request text = data.get('text') target_language = data.get('target_language', 'ar') # Default to Arabic ('ar') # Translate the text try: translated = GoogleTranslator(source='auto', target=target_language).translate(text) response = { 'status': 'success', 'translated_text': translated } except Exception as e: response = { 'status': 'error', 'message': str(e) } return jsonify(response)