Spaces:
Running
Running
File size: 3,031 Bytes
3b1f0f3 5bd7020 770a448 3b1f0f3 8a1ba2b 4306d26 8a1ba2b 770a448 8a1ba2b 8aa19f9 3b1f0f3 8aa19f9 3b1f0f3 0cfe795 3b1f0f3 770a448 3b1f0f3 4306d26 3b1f0f3 12b611e 3b1f0f3 1fd896c 3b1f0f3 7ad246b 3b1f0f3 0ad3caf 3b1f0f3 770a448 3b1f0f3 c470673 |
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 |
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):
try:
audio = generate(
text[:250], # Limit to 250 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 = """
Here's a demonstration of the world's most advanced TTS systems, created by ElevenLabs. ๐ I wanted to experiment with this amazing technology for the Italian language ๐ฎ๐น, and I'm excited to share its capabilities with you! Eleven Multilingual V2 is a single foundational model supporting an impressive 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 to get fast access to long-form generation, voice cloning, API keys, and more! ๐
"""
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="Ciao, mi chiamo Sab, sono un ragazzo italiano appassionato di AI e nuove tecnologie!",
elem_id="input_text"
)
all_voices = voices()
input_voice = gr.Dropdown(
[ voice.name for voice in all_voices ],
value="Callum",
label="Voice",
elem_id="input_voice"
)
run_button = gr.Button(
value="Generate Voice",
)
out_audio = gr.Audio(
label="Generated Voice",
type="numpy",
elem_id="out_audio",
format="mp3"
)
inputs = [input_text, input_voice]
outputs = [out_audio]
run_button.click(
fn=generate_voice,
inputs=inputs,
outputs=outputs,
queue=True
)
block.launch(debug=False, show_error=True, share=True) |