chaore commited on
Commit
49e81b2
·
verified ·
1 Parent(s): 5f01d23

Upload gradio_app.py

Browse files
Files changed (1) hide show
  1. gradio_app.py +17 -6
gradio_app.py CHANGED
@@ -4,13 +4,13 @@ import asyncio
4
  import os
5
 
6
  # 定义生成音频的异步函数
7
- async def generate_audio(text, voice, rate, volume):
8
  try:
9
  # 创建输出文件路径
10
  output_path = "output.mp3"
11
 
12
  # 使用edge-tts生成音频
13
- communicate = edge_tts.Communicate(text, voice, rate=rate, volume=volume)
14
  await communicate.save(output_path)
15
 
16
  return output_path
@@ -19,16 +19,17 @@ async def generate_audio(text, voice, rate, volume):
19
  raise gr.Error(f"生成音频失败: {str(e)}")
20
 
21
  # 定义Gradio界面的主函数
22
- def text_to_speech(text, voice, rate, volume):
23
  try:
24
  # 将rate和volume参数转换为edge-tts需要的格式
25
  rate_str = f"+{int(rate)}%" if rate >= 0 else f"{int(rate)}%"
26
  volume_str = f"+{int(volume)}%" if volume >= 0 else f"{int(volume)}%"
 
27
 
28
  # 调用异步函数生成音频
29
  loop = asyncio.new_event_loop()
30
  asyncio.set_event_loop(loop)
31
- output_path = loop.run_until_complete(generate_audio(text, voice, rate_str, volume_str))
32
  loop.close()
33
 
34
  return output_path
@@ -72,7 +73,7 @@ voice_options = get_voices()
72
  # 创建Gradio界面
73
  with gr.Blocks(title="Edge TTS 配音工具") as demo:
74
  gr.Markdown("# Edge TTS 配音工具")
75
- gr.Markdown("输入文本,选择语音,调节语速音量,然后点击合成按钮生成音频。")
76
 
77
  with gr.Row():
78
  with gr.Column(scale=2):
@@ -111,6 +112,16 @@ with gr.Blocks(title="Edge TTS 配音工具") as demo:
111
  info="-50% 到 +50%"
112
  )
113
 
 
 
 
 
 
 
 
 
 
 
114
  # 合成按钮
115
  generate_button = gr.Button("合成语音", variant="primary")
116
 
@@ -124,7 +135,7 @@ with gr.Blocks(title="Edge TTS 配音工具") as demo:
124
  # 设置按钮点击事件
125
  generate_button.click(
126
  fn=text_to_speech,
127
- inputs=[text_input, voice_dropdown, rate_slider, volume_slider],
128
  outputs=audio_output
129
  )
130
 
 
4
  import os
5
 
6
  # 定义生成音频的异步函数
7
+ async def generate_audio(text, voice, rate, volume, pitch):
8
  try:
9
  # 创建输出文件路径
10
  output_path = "output.mp3"
11
 
12
  # 使用edge-tts生成音频
13
+ communicate = edge_tts.Communicate(text, voice, rate=rate, volume=volume, pitch=pitch)
14
  await communicate.save(output_path)
15
 
16
  return output_path
 
19
  raise gr.Error(f"生成音频失败: {str(e)}")
20
 
21
  # 定义Gradio界面的主函数
22
+ def text_to_speech(text, voice, rate, volume, pitch):
23
  try:
24
  # 将rate和volume参数转换为edge-tts需要的格式
25
  rate_str = f"+{int(rate)}%" if rate >= 0 else f"{int(rate)}%"
26
  volume_str = f"+{int(volume)}%" if volume >= 0 else f"{int(volume)}%"
27
+ pitch_str = f"+{int(pitch)}Hz" if pitch >= 0 else f"{int(pitch)}Hz"
28
 
29
  # 调用异步函数生成音频
30
  loop = asyncio.new_event_loop()
31
  asyncio.set_event_loop(loop)
32
+ output_path = loop.run_until_complete(generate_audio(text, voice, rate_str, volume_str, pitch_str))
33
  loop.close()
34
 
35
  return output_path
 
73
  # 创建Gradio界面
74
  with gr.Blocks(title="Edge TTS 配音工具") as demo:
75
  gr.Markdown("# Edge TTS 配音工具")
76
+ gr.Markdown("输入文本,选择语音,调节语速音量和语调,然后点击合成按钮生成音频。")
77
 
78
  with gr.Row():
79
  with gr.Column(scale=2):
 
112
  info="-50% 到 +50%"
113
  )
114
 
115
+ # 语调滑块
116
+ pitch_slider = gr.Slider(
117
+ label="语调",
118
+ minimum=-50,
119
+ maximum=50,
120
+ step=5,
121
+ value=0,
122
+ info="-50Hz 到 +50Hz"
123
+ )
124
+
125
  # 合成按钮
126
  generate_button = gr.Button("合成语音", variant="primary")
127
 
 
135
  # 设置按钮点击事件
136
  generate_button.click(
137
  fn=text_to_speech,
138
+ inputs=[text_input, voice_dropdown, rate_slider, volume_slider, pitch_slider],
139
  outputs=audio_output
140
  )
141