Spaces:
Runtime error
Runtime error
File size: 2,893 Bytes
3b1f0f3 5bd7020 a7c380d 3b1f0f3 8a1ba2b a368b88 8a1ba2b 770a448 8a1ba2b 8aa19f9 3b1f0f3 8aa19f9 3b1f0f3 a368b88 3b1f0f3 a368b88 3b1f0f3 4306d26 3b1f0f3 dce5f84 3b1f0f3 770a448 3b1f0f3 a7c380d 3b1f0f3 0ad3caf 3b1f0f3 a7c380d 3b1f0f3 dce5f84 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
import random
import gradio as gr
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, api_key):
set_api_key(api_key) #set API key
try:
audio = generate(
text[:4000], # Limit to 4000 characters
voice=voice_name,
model="eleven_multilingual_v2"
)
return (44100, np.frombuffer(pad_buffer(audio), dtype=np.int16))
except UnauthenticatedRateLimitError as e:
raise gr.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:
raise gr.Error(e)
description = """
Introducing the world's most advanced TTS system by ElevenLabs. Eleven Multilingual V2 is a single foundational model supporting 28 languages including: English, Chinese, Spanish, Hindi, Portuguese, French, German, Japanese, Arabic, Korean, Indonesian, Italian, Dutch, Turkish, Polish, Swedish, Filipino, Malay, Romanian, Ukrainian, Greek, Czech, Danish, Finnish, Bulgarian, Croatian, Slovak, and Tamil. Sign up on [ElevenLabs](https://elevenlabs.io) to get an API Key.
"""
with gr.Blocks() as block:
#gr.Markdown('[  ](https://elevenlabs.io)')
gr.Markdown(description)
input_text = gr.Textbox(
label="Input Text (250 characters max)",
lines=2,
value="Hello! 你好! Hola! नमस्ते! Bonjour! こんにちは! مرحبا! 안녕하세요! Ciao! Cześć! Привіт! Γειά σας! Здравей! வணக்கம்!",
elem_id="input_text"
)
all_voices = voices()
input_voice = gr.Dropdown(
[ voice.name for voice in all_voices ],
value="Bella",
label="Voice",
elem_id="input_voice"
)
input_api_key = gr.Textbox(
type='password',
label='Elevenlabs API Key',
placeholder='Enter your API key',
elem_id="input_api_key"
)
run_button = gr.Button(
text="Generate Voice",
type="button"
)
out_audio = gr.Audio(
label="Generated Voice",
type="numpy",
elem_id="out_audio",
format="mp3"
)
inputs = [input_text, input_voice, input_api_key]
outputs = [out_audio]
run_button.click(
fn=generate_voice,
inputs=inputs,
outputs=outputs,
queue=True
)
block.queue(concurrency_count=5).launch(debug=True) |