|
import streamlit as st |
|
import torch |
|
from transformers import MarianMTModel, MarianTokenizer |
|
import speech_recognition as sr |
|
from gtts import gTTS |
|
import os |
|
|
|
|
|
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" |
|
|
|
|
|
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) |
|
|
|
|
|
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") |
|
|
|
|
|
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') |
|
|