|
import streamlit as st |
|
import requests |
|
import json |
|
import base64 |
|
|
|
|
|
st.title("TTS") |
|
|
|
|
|
text = st.text_area("Enter the text to convert to speech") |
|
|
|
|
|
lang_options = ['Hindi', 'Malayalam', 'Manipuri', 'Marathi', 'Kannada', 'English', 'Assamese', 'Tamil', 'Odia', 'Rajasthani', 'Telugu', 'Bengali', 'Gujarati'] |
|
lang = st.selectbox("Select language", lang_options) |
|
|
|
|
|
gender_options = ['Male', 'Female'] |
|
gender = st.selectbox("Select gender", gender_options) |
|
|
|
|
|
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", |
|
|
|
|
|
} |
|
|
|
|
|
selected_url = api_urls.get((lang, gender)) |
|
|
|
if selected_url: |
|
|
|
if st.button("Generate Speech"): |
|
|
|
payload = { |
|
"input": text, |
|
"gender": gender.lower(), |
|
"lang": lang.lower(), |
|
"alpha": 1, |
|
"segmentwise": "True" |
|
} |
|
|
|
|
|
response = requests.post(selected_url, json=payload) |
|
|
|
|
|
if response.status_code == 200: |
|
|
|
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.") |