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()