Linly-Talker / TTS /edge_app.py
linxianzhong0128's picture
Upload folder using huggingface_hub
7088d16 verified
import librosa
import gradio as gr
from EdgeTTS import EdgeTTS
import os
title = "TTS WebUI"
tts = EdgeTTS()
def generateAudio(text, voice, rate, volume, pitch):
audio_file, sub_file = tts.predict(text, voice, rate, volume, pitch, "output.wav", "output.srt")
print(text, audio_file, sub_file)
audio, sr = librosa.load(path=audio_file)
return gr.make_waveform(
audio=audio_file,
),(sr, audio)
def main():
with gr.Blocks(title=title) as demo:
with gr.Row():
gr.HTML("<center><h1>TTS WebUI</h1></center>")
with gr.Row():
with gr.Column():
text = gr.Text(label = "Text to be spoken")
voice = gr.Dropdown(tts.SUPPORTED_VOICE, label="Voice to be used", value = 'zh-CN-XiaoxiaoNeural')
with gr.Accordion("Advanced Settings",
open=True,
visible=True) as parameter_article:
rate = gr.Slider(minimum=-100,
maximum=100,
value=0,
step=1.0,
label='Rate')
volume = gr.Slider(minimum=0,
maximum=100,
value=100,
step=1,
label='Volume')
pitch = gr.Slider(minimum=-100,
maximum=100,
value=0,
step=1,
label='Pitch')
with gr.Column():
video = gr.Video(label="Waveform Visual")
audio = gr.Audio(label = "Audio file")
generate = gr.Button("Generate Audio", variant="primary")
generate.click(generateAudio,
inputs=[text, voice, rate, volume, pitch],
outputs=[video, audio],
)
gr.Markdown("## Text Examples")
gr.Examples(
examples=[
['大家好,很高兴认识你们!','zh-CN-XiaoxiaoNeural'],
['みなさん、こんにちは!お会いできて嬉しいです!','ja-JP-NanamiNeural'],
['hello, Nice to meet you!','en-US-RogerNeural']
],
fn=generateAudio,
inputs=[text, voice],
outputs=[video, audio],
)
return demo
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--server_port", type=int, default=7860)
opt = parser.parse_args()
demo = main()
demo.launch(server_port=opt.server_port)