Spaces:
Sleeping
Sleeping
| 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() | |