Spaces:
Sleeping
Sleeping
| 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") | |
| 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 | |
| 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) |