import gradio as gr import edge_tts import asyncio # TTS synthesis function 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 # Gradio-compatible function for TTS 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 # API-friendly Gradio Interface interface = gr.Interface( fn=generate_tts, inputs=[ gr.Textbox(label="Enter Text"), gr.Dropdown(choices=["en-US-GuyNeural", "en-US-JennyNeural"], label="Voice"), # Add more voices 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", # Disables user feedback live=True # Supports real-time processing ) if __name__ == "__main__": interface.launch(server_name="0.0.0.0", server_port=7860)