|
|
import gradio as gr |
|
|
import edge_tts |
|
|
import asyncio |
|
|
|
|
|
|
|
|
async def synthesize_tts(text, voice, rate, pitch): |
|
|
tts = edge_tts.Communicate(text, voice, rate=f"{rate}%", pitch=f"{pitch}%") |
|
|
output_file = "output.mp3" |
|
|
await tts.save(output_file) |
|
|
return output_file |
|
|
|
|
|
|
|
|
def generate_tts(text, voice, rate, pitch): |
|
|
loop = asyncio.new_event_loop() |
|
|
asyncio.set_event_loop(loop) |
|
|
output_file = loop.run_until_complete(synthesize_tts(text, voice, rate, pitch)) |
|
|
return output_file |
|
|
|
|
|
|
|
|
interface = gr.Interface( |
|
|
fn=generate_tts, |
|
|
inputs=[ |
|
|
gr.Textbox(label="Enter Text"), |
|
|
gr.Dropdown(choices=["en-US-GuyNeural", "en-US-JennyNeural"], label="Voice"), |
|
|
gr.Slider(-50, 50, value=0, label="Rate (%)"), |
|
|
gr.Slider(-50, 50, value=0, label="Pitch (%)"), |
|
|
], |
|
|
outputs=gr.Audio(label="Generated Audio"), |
|
|
allow_flagging="never", |
|
|
live=True |
|
|
) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
interface.launch(server_name="0.0.0.0", server_port=7860) |