| import whisper |
| from transformers import MarianMTModel, MarianTokenizer |
| from gtts import gTTS |
| import tempfile |
| import os |
| import certifi |
|
|
| os.environ["SSL_CERT_FILE"] = certifi.where() |
|
|
| def transcribe_translate_speak(audio_path, target_language): |
| |
| model = whisper.load_model("tiny") |
| result = model.transcribe(audio_path) |
| transcription = result["text"] |
|
|
| |
| model_map = { |
| 'hi': "Helsinki-NLP/opus-mt-en-hi", |
| 'es': "Helsinki-NLP/opus-mt-en-es", |
| 'fr': "Helsinki-NLP/opus-mt-en-fr", |
| 'bn': "shhossain/opus-mt-en-to-bn" |
| } |
|
|
| if target_language not in model_map: |
| raise ValueError(f"Unsupported language: {target_language}") |
|
|
| trans_model = MarianMTModel.from_pretrained(model_map[target_language]) |
| tokenizer = MarianTokenizer.from_pretrained(model_map[target_language]) |
| inputs = tokenizer(transcription, return_tensors="pt", padding=True, truncation=True) |
| outputs = trans_model.generate(**inputs) |
| translated_text = tokenizer.decode(outputs[0], skip_special_tokens=True) |
|
|
| |
| tts = gTTS(translated_text, lang=target_language) |
| tts_path = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False).name |
| tts.save(tts_path) |
|
|
| return transcription, translated_text, tts_path |
|
|