TRIAL_CODE / app.py
mishiawan's picture
Update app.py
e977341 verified
# Import required libraries
import streamlit as st
import speech_recognition as sr
from transformers import pipeline
from gtts import gTTS
import os
# Function to transcribe audio to text
def transcribe_audio(audio_file, input_language):
try:
recognizer = sr.Recognizer()
with sr.AudioFile(audio_file) as source:
audio_data = recognizer.record(source)
text = recognizer.recognize_google(audio_data, language=input_language)
return text
except Exception as e:
return f"Error: {str(e)}"
# Function to translate text
def translate_text(text, target_language):
try:
translator = pipeline("translation", model=f"Helsinki-NLP/opus-mt-en-{target_language}")
translated = translator(text)[0]["translation_text"]
return translated
except Exception as e:
return f"Error: {str(e)}"
# Function to generate and play speech
def speak_text(text, language):
try:
tts = gTTS(text=text, lang=language)
tts.save("translated_audio.mp3")
return "translated_audio.mp3"
except Exception as e:
return None
# Streamlit app
st.title("Real-Time Voice-to-Voice Translator 🌍🎀")
st.markdown("""
This app translates spoken input between multiple languages in real time.
1. Select input and output languages.
2. Upload your audio file or record audio for translation.
3. Listen to the translated speech.
""")
# Language options
languages = {
"English": "en",
"Spanish": "es",
"French": "fr",
"German": "de",
"Chinese": "zh",
"Japanese": "ja",
"Korean": "ko",
"Hindi": "hi",
}
# Select input and output languages
input_lang = st.selectbox("Select input language", options=languages.keys())
output_lang = st.selectbox("Select output language", options=languages.keys())
# Upload audio file
uploaded_audio = st.file_uploader("Upload an audio file", type=["wav", "mp3", "ogg"])
if uploaded_audio:
# Process the uploaded audio
st.audio(uploaded_audio, format="audio/wav")
st.write("Transcribing audio...")
input_language_code = languages[input_lang]
transcribed_text = transcribe_audio(uploaded_audio, input_language_code)
st.write(f"Transcribed Text: {transcribed_text}")
# Translate text
if transcribed_text and not transcribed_text.startswith("Error"):
st.write("Translating text...")
output_language_code = languages[output_lang]
translated_text = translate_text(transcribed_text, output_language_code)
st.write(f"Translated Text: {translated_text}")
# Generate speech for the translated text
st.write("Generating translated audio...")
audio_file = speak_text(translated_text, output_language_code)
if audio_file:
st.audio(audio_file, format="audio/mp3")
else:
st.error("Error in generating translated speech.")
else:
st.error("Error in transcription.")