Spaces:
Sleeping
Sleeping
| # 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.") | |