Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import numpy as np | |
| from elevenlabs import voices, generate, set_api_key, UnauthenticatedRateLimitError | |
| def pad_buffer(audio): | |
| # Pad buffer to multiple of 2 bytes | |
| buffer_size = len(audio) | |
| element_size = np.dtype(np.int16).itemsize | |
| if buffer_size % element_size != 0: | |
| audio = audio + b'\0' * (element_size - (buffer_size % element_size)) | |
| return audio | |
| def generate_voice(text, voice_name, model_name): | |
| audio = generate( | |
| text[:250], # Limit to 250 characters | |
| voice=voice_name, | |
| model=model_name | |
| ) | |
| audio_data = np.frombuffer(pad_buffer(audio), dtype=np.int16) | |
| audio_bytes = audio_data.tobytes() | |
| return audio_bytes | |
| # Set the API key | |
| set_api_key("f868e836c02c78b7ee9075d1e116a139") | |
| st.title("π€ World's most advanced Text-to-Speech") | |
| description = """ | |
| A demo of the world's most advanced TTS systems, made by [ElevenLabs](https://elevenlabs.io). Eleven Monolingual is designed to generate highly realistic voices in English, where Eleven Multilingual is a single model supporting multiple languages including English, German, Polish, Spanish, Italian, French, Portuguese, and Hindi. Sign up on [ElevenLabs](https://elevenlabs.io) to get fast access, long-form generation, voice cloning, API keys, and more! | |
| """ | |
| st.markdown(description) | |
| # Input text | |
| input_text = st.text_area( | |
| "Input Text (250 characters max)", | |
| value="Hahaha OHH MY GOD! This is SOOO funny, I-I am Eleven a text-to-speech system!", | |
| max_chars=250 | |
| ) | |
| # Voice selection | |
| all_voices = voices() | |
| input_voice = st.selectbox( | |
| "Voice", | |
| options=[voice.name for voice in all_voices], | |
| index=0 | |
| ) | |
| # Model selection | |
| input_model = st.radio( | |
| "Model", | |
| options=["eleven_monolingual_v1", "eleven_multilingual_v1"], | |
| index=0 | |
| ) | |
| # Generate voice | |
| if st.button("Generate Voice"): | |
| try: | |
| audio = generate_voice(input_text, input_voice, input_model) | |
| st.audio(audio, format='audio/wav') | |
| except UnauthenticatedRateLimitError: | |
| st.error("Thanks for trying out ElevenLabs TTS! You've reached the free tier limit. Please provide an API key to continue.") | |
| except Exception as e: | |
| st.error(str(e)) |