tts_agent / app.py
mehakkhan's picture
Upload app.py
7b94c4e verified
import streamlit as st
import tempfile
import os
from agent import TranslationAgent
# Page config
st.set_page_config(
page_title="Multi-Language Translation Agent",
page_icon="🌍",
layout="wide"
)
# Initialize agent
@st.cache_resource
def get_agent():
return TranslationAgent()
def main():
st.title("🌍 Multi-Language Translation Agent")
st.markdown("### Translate text between 70+ languages and convert to speech")
agent = get_agent()
# Create columns for layout
col1, col2 = st.columns(2)
with col1:
st.subheader("πŸ“ Input")
# Source language selection
source_lang = st.selectbox(
"Source Language:",
options=list(agent.languages.keys()),
format_func=lambda x: f"{agent.languages[x]} ({x})",
index=0 # Default to English
)
# Text input
input_text = st.text_area(
"Enter text to translate:",
height=150,
placeholder="Type your text here..."
)
# Auto-detect option
auto_detect = st.checkbox("Auto-detect source language", value=True)
with col2:
st.subheader("🎯 Output")
# Target language selection
target_lang = st.selectbox(
"Target Language:",
options=list(agent.languages.keys()),
format_func=lambda x: f"{agent.languages[x]} ({x})",
index=1 # Default to Spanish
)
# Translation output area
translation_output = st.empty()
# Audio output area
audio_output = st.empty()
# Process button
if st.button("πŸš€ Translate & Generate Speech", type="primary"):
if input_text.strip():
with st.spinner("Processing..."):
try:
# Perform translation
result = agent.translate_and_speak(
text=input_text,
source_lang=None if auto_detect else source_lang,
target_lang=target_lang
)
# Display results
with translation_output.container():
st.text_area(
f"Translation to {agent.languages[target_lang]}:",
value=result['translated_text'],
height=150,
key="translation_result"
)
# Show detected language if auto-detect was used
if auto_detect and result['detected_language']:
st.info(f"Detected language: {agent.languages.get(result['detected_language'], result['detected_language'])}")
# Display audio
with audio_output.container():
st.audio(result['audio_file'], format='audio/mp3')
# Download button
with open(result['audio_file'], 'rb') as audio_file:
st.download_button(
label="πŸ“₯ Download Audio",
data=audio_file.read(),
file_name=f"translation_{target_lang}.mp3",
mime="audio/mpeg"
)
st.success("βœ… Translation and speech generation completed!")
except Exception as e:
st.error(f"❌ Error: {str(e)}")
else:
st.warning("⚠️ Please enter text to translate")
# Language support info
with st.expander("🌐 Supported Languages"):
st.write("This agent supports translation between any of these languages:")
# Create columns for better display
lang_cols = st.columns(4)
lang_items = list(agent.languages.items())
for i, (code, name) in enumerate(lang_items):
with lang_cols[i % 4]:
st.write(f"**{name}** ({code})")
# Instructions
with st.expander("πŸ“‹ How to Use"):
st.markdown("""
1. **Select Source Language** or enable auto-detect
2. **Enter your text** in the input area
3. **Choose Target Language** for translation
4. **Click Translate & Generate Speech** button
5. **Listen to the audio** and download if needed
**Features:**
- βœ… 20+ languages supported
- βœ… Auto-detect source language
- βœ… High-quality translations
- βœ… Natural-sounding speech
- βœ… Download audio files
""")
if __name__ == "__main__":
main()