File size: 1,712 Bytes
d4eb552
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st  # Make sure to import streamlit
import torch
from transformers import MarianMTModel, MarianTokenizer
import speech_recognition as sr
from gtts import gTTS
import os

# Function to recognize speech from an audio file
def recognize_speech_from_file(audio_file):
    recognizer = sr.Recognizer()
    with sr.AudioFile(audio_file) as source:
        audio = recognizer.record(source)
    try:
        return recognizer.recognize_google(audio)
    except sr.UnknownValueError:
        return "Could not understand audio"
    except sr.RequestError:
        return "Could not request results; check your internet connection"

# Function to translate text
def translate_text(text):
    model_name = "Helsinki-NLP/opus-mt-en-hi"
    tokenizer = MarianTokenizer.from_pretrained(model_name)
    model = MarianMTModel.from_pretrained(model_name)
    translated = model.generate(**tokenizer(text, return_tensors="pt", padding=True))
    return tokenizer.decode(translated[0], skip_special_tokens=True)

# Function to convert text to audio
def convert_to_audio(text):
    tts = gTTS(text, lang="hi")
    audio_output = "output.mp3"
    tts.save(audio_output)
    return audio_output

st.title("English to Hindi Audio Translation")

# Make the translation service available without time restrictions
audio_file = st.file_uploader("Upload an audio file", type=["wav", "mp3"])
if audio_file is not None:
    text = recognize_speech_from_file(audio_file)
    st.write(f"Recognized English Text: {text}")
    translated_text = translate_text(text)
    st.write(f"Translated Hindi Text: {translated_text}")
    audio_output = convert_to_audio(translated_text)
    st.audio(audio_output, format='audio/mp3')