File size: 1,286 Bytes
4a76fcb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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):
    # Transcribe
    model = whisper.load_model("tiny")
    result = model.transcribe(audio_path)
    transcription = result["text"]

    # Translate
    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
    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