Spaces:
Runtime error
Runtime error
import streamlit as st | |
import requests | |
import json | |
import base64 | |
# Streamlit UI | |
st.title("TTS") | |
# User inputs | |
text = st.text_area("Enter the text to convert to speech") | |
# Language selection | |
lang_options = ['Hindi', 'Malayalam', 'Manipuri', 'Marathi', 'Kannada', 'English', 'Assamese', 'Tamil', 'Odia', 'Rajasthani', 'Telugu', 'Bengali', 'Gujarati'] | |
lang = st.selectbox("Select language", lang_options) | |
# Gender selection | |
gender_options = ['Male', 'Female'] | |
gender = st.selectbox("Select gender", gender_options) | |
# Dictionary mapping language and gender to API URLs | |
api_urls = { | |
('Hindi', 'Female'): "https://asr.iitm.ac.in/tts/hindi/female", | |
('Hindi', 'Male'): "https://asr.iitm.ac.in/tts/hindi/male", | |
('English', 'Male'): "https://asr.iitm.ac.in/tts/english/male", | |
('English', 'Female'): "https://asr.iitm.ac.in/tts/english/female", | |
('Malayalam', 'Male'): "https://asr.iitm.ac.in/tts/malayalam/male", | |
('Malayalam', 'Female'): "https://asr.iitm.ac.in/tts/malayalam/female", | |
('Tamil', 'Male'): "https://asr.iitm.ac.in/tts/tamil/male", | |
('Tamil', 'Female'): "https://asr.iitm.ac.in/tts/tamil/female", | |
('Telugu', 'Male'): "https://asr.iitm.ac.in/tts/telugu/male", | |
('Telugu', 'Female'): "https://asr.iitm.ac.in/tts/telugu/female", | |
('Punjabi', 'Male'): "https://asr.iitm.ac.in/tts/punjabi/male", | |
('Punjabi', 'Female'): "https://asr.iitm.ac.in/tts/punjabi/female", | |
('Urdu', 'Male'): "https://asr.iitm.ac.in/tts/urdu/male", | |
('Urdu', 'Female'): "https://asr.iitm.ac.in/tts/urdu/female", | |
('Marathi', 'Male'): "https://asr.iitm.ac.in/tts/marathi/male", | |
('Marathi', 'Female'): "https://asr.iitm.ac.in/tts/marathi/female", | |
('Gujarati', 'Male'): "https://asr.iitm.ac.in/tts/gujarati/male", | |
('Gujarati', 'Female'): "https://asr.iitm.ac.in/tts/gujarati/female", | |
('Assamese', 'Male'): "https://asr.iitm.ac.in/tts/assamese/male", | |
('Assamese', 'Female'): "https://asr.iitm.ac.in/tts/assamese/female", | |
('Bengali', 'Male'): "https://asr.iitm.ac.in/tts/bengali/male", | |
('Bengali', 'Female'): "https://asr.iitm.ac.in/tts/bengali/female", | |
('Bodo', 'Male'): "https://asr.iitm.ac.in/tts/bodo/male", | |
('Bodo', 'Female'): "https://asr.iitm.ac.in/tts/bodo/female", | |
('Kannada', 'Male'): "https://asr.iitm.ac.in/tts/kannada/male", | |
('Kannada', 'Female'): "https://asr.iitm.ac.in/tts/kannada/female", | |
('Manipuri', 'Male'): "https://asr.iitm.ac.in/tts/Manipuri/male", | |
('Manipuri', 'Female'): "https://asr.iitm.ac.in/tts/Manipuri/female", | |
('Odia', 'Male'): "https://asr.iitm.ac.in/tts/odia/male", | |
('Odia', 'Female'): "https://asr.iitm.ac.in/tts/odia/female", | |
('Rajasthani', 'Male'): "https://asr.iitm.ac.in/tts/rajasthani/male", | |
('Rajasthani', 'Female'): "https://asr.iitm.ac.in/tts/rajasthani/female", | |
# Add more combinations as needed | |
} | |
# Get the URL based on language and gender selection | |
selected_url = api_urls.get((lang, gender)) | |
if selected_url: | |
# Button to trigger TTS | |
if st.button("Generate Speech"): | |
# Prepare payload | |
payload = { | |
"input": text, | |
"gender": gender.lower(), | |
"lang": lang.lower(), | |
"alpha": 1, | |
"segmentwise": "True" | |
} | |
# Make API request | |
response = requests.post(selected_url, json=payload) | |
# Handle response | |
if response.status_code == 200: | |
# Decode audio | |
audio = response.json()['audio'] | |
audio_bytes = base64.b64decode(audio) | |
st.audio(audio_bytes, format='audio/mp3') | |
else: | |
st.error("Failed to generate speech. Please check your input and try again.") | |
else: | |
st.error("Selected language and gender combination is not supported.") | |