Spaces:
Running
Running
| import torch | |
| import torchaudio | |
| import streamlit as st | |
| import requests | |
| import streamlit.components.v1 as components | |
| import asyncio | |
| import io | |
| import os | |
| from dotenv import load_dotenv | |
| load_dotenv() | |
| model_id = '11mlabs/indri-0.1-124m-tts' | |
| task = 'indri-tts' | |
| st.title("Indri") | |
| st.subheader("Ultrafast multi-modal AI") | |
| baseUrl = os.getenv("BASE_URL") | |
| speakers = { | |
| "[spkr_63]" : "๐ฌ๐ง ๐จ book reader", | |
| "[spkr_67]" : "๐บ๐ธ ๐จ influencer", | |
| "[spkr_68]" : "๐ฎ๐ณ ๐จ book reader", | |
| "[spkr_69]" : "๐ฎ๐ณ ๐จ book reader", | |
| "[spkr_70]" : "๐ฎ๐ณ ๐จ motivational speaker", | |
| "[spkr_62]" : "๐ฎ๐ณ ๐จ book reader heavy", | |
| "[spkr_53]" : "๐ฎ๐ณ ๐ฉ recipe reciter", | |
| "[spkr_60]" : "๐ฎ๐ณ ๐ฉ book reader", | |
| "[spkr_74]" : "๐บ๐ธ ๐จ book reader", | |
| "[spkr_75]" : "๐ฎ๐ณ ๐จ entrepreneur", | |
| "[spkr_76]" : "๐ฌ๐ง ๐จ nature lover", | |
| "[spkr_77]" : "๐ฎ๐ณ ๐จ influencer", | |
| "[spkr_66]" : "๐ฎ๐ณ ๐จ politician" | |
| } | |
| with st.container(): | |
| st.markdown("### Speaker Selection") | |
| speaker_id = st.selectbox("Select a speaker:", options=list(speakers.keys()), format_func=lambda x: speakers[x]) | |
| st.markdown("### Text Input") | |
| text_input = st.text_area("Enter text for TTS (max 200 characters):", max_chars=200) | |
| async def generate_audio(): | |
| if text_input: | |
| speaker_name = speakers[speaker_id] | |
| response = requests.post( | |
| f"{baseUrl}/tts", | |
| json={ | |
| "text": text_input, | |
| "speaker": speaker_name | |
| }, | |
| headers={ | |
| "accept": "application/json", | |
| "Content-Type": "application/json" | |
| } | |
| ) | |
| if response.ok: | |
| audio_blob = response.content | |
| audio_tensor, sample_rate = torchaudio.load(io.BytesIO(audio_blob)) | |
| torchaudio.save('output.wav', audio_tensor, sample_rate=sample_rate) | |
| st.audio('output.wav') | |
| else: | |
| st.warning(f"Received invalid response format. Status Code: {response.status_code}, Response: {response.text}") | |
| else: | |
| st.warning("Please enter text to generate audio.") | |
| if st.button("Generate Audio", key="generate_audio"): | |
| asyncio.run(generate_audio()) | |