Spaces:
Sleeping
Sleeping
File size: 1,880 Bytes
0a88ee7 | 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 | import gradio as gr
from mini_tts.service import LocalTTSService
service = LocalTTSService()
def run_tts(text: str, voice: str, speed: float, pitch: float):
return service.synthesize(
text=text,
voice=voice,
speed=speed,
pitch_shift=pitch,
)
with gr.Blocks(title="Tiny Code-Only TTS") as demo:
gr.Markdown(
"""
# Tiny Code-Only TTS
A simple text-to-speech engine built from code only.
- No API key
- No hosted model
- No pretrained checkpoint
- Designed for Hugging Face Spaces
"""
)
with gr.Row():
with gr.Column():
text = gr.Textbox(
label="Text",
value="Hello. This is a simple text to speech demo built only with code.",
lines=8,
)
voice = gr.Dropdown(
label="Voice",
choices=["neutral", "bright", "deep"],
value="neutral",
)
speed = gr.Slider(
label="Speed",
minimum=0.6,
maximum=1.6,
value=1.0,
step=0.1,
)
pitch = gr.Slider(
label="Pitch shift",
minimum=-0.3,
maximum=0.3,
value=0.0,
step=0.05,
)
speak_button = gr.Button("Generate Speech", variant="primary")
with gr.Column():
audio = gr.Audio(label="Audio", type="numpy")
status = gr.Textbox(label="Status", value=service.describe())
normalized = gr.Textbox(label="Normalized Text", lines=8)
speak_button.click(
fn=run_tts,
inputs=[text, voice, speed, pitch],
outputs=[audio, status, normalized],
)
if __name__ == "__main__":
demo.launch()
|