import gradio as gr from vaniratts import VaniraTTS TTS = VaniraTTS() def generate_tts(text, speaker, volume, speed): output_path = "output.wav" TTS.infer( text, speaker=voices[speaker], output=output_path, volume=volume, speed=speed, ) return output_path voices = {"เสียงผู้หญิง 1":1, "เสียงผู้หญิง 2":2, "เสียงผู้ชาย 1":3, "เสียงผู้ชาย 2":4, "เสียงผู้หญิง 3(ASMR)":5, "เสียงผู้ชาย 3(ASMR)":6} voices_list = ["เสียงผู้หญิง 1", "เสียงผู้หญิง 2", "เสียงผู้ชาย 1", "เสียงผู้ชาย 2", "เสียงผู้หญิง 3(ASMR)", "เสียงผู้ชาย 3(ASMR)"] examples = [ ["ฉันชอบกินข้าวผัดกับไข่ดาว เพราะมันอร่อย ทำง่าย และเป็นเมนูที่กินได้ทุกวัน","เสียงผู้หญิง 1", 1.0, 0.85], ["สวัสดีครับ วันนี้อากาศดีมาก ท้องฟ้าแจ่มใส เหมาะกับการออกไปเดินเล่นและพักผ่อน", "เสียงผู้ชาย 2", 1.0, 0.85], ] with gr.Blocks(title="VaniraTTS-TH") as demo: gr.Markdown(f""" # VaniraTTS Text to Speech ภาษาไทย รวดเร็วและใช้งานง่าย. """) with gr.Row(): with gr.Column(scale=2): text_input = gr.Textbox(label="📝 ใส่ข้อความ", placeholder="พิมพ์ข้อความที่นี่...", lines=4) voice_dropdown = gr.Dropdown(choices=voices_list, value="เสียงผู้หญิง 1", label="🎤 Speaker") volume_slider = gr.Slider(0.5, 2.0, value=1.0, step=0.05, label="🔊 ระดับเสียง") speed_slider = gr.Slider(0.5, 2.0, value=0.85, step=0.05, label="⚡ ความเร็ว") generate_button = gr.Button("🚀 สร้าง",variant="primary") with gr.Column(scale=1): output_audio = gr.Audio(label="🔈 เสียงที่สร้าง", type="filepath") gr.Examples( examples=examples, inputs=[text_input, voice_dropdown, volume_slider, speed_slider], ) generate_button.click( fn=generate_tts, inputs=[text_input, voice_dropdown, volume_slider, speed_slider], outputs=[output_audio] ) if __name__ == "__main__": demo.launch(ssr_mode=False)