Spaces:
Sleeping
Sleeping
File size: 1,657 Bytes
c2864d3 2ea3a36 419ab6f f2e4d8d fcf5834 c2864d3 2ea3a36 8ec66b1 94d43b0 2ea3a36 5020140 68d753f 8ec66b1 9bb1bc6 68d753f 8ec66b1 fa58d25 8ec66b1 b202c57 fa58d25 68d753f 2ea3a36 68d753f 9bb1bc6 f2e4d8d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
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) |