RafaG commited on
Commit
dbf3c82
1 Parent(s): a4f5564

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +37 -7
app.py CHANGED
@@ -17,11 +17,9 @@ import os
17
  import gradio as gr
18
  from pydub import AudioSegment
19
  from voice_map import SUPPORTED_VOICES
 
20
 
21
  def generate_audio(texto, modelo_de_voz, velocidade):
22
- if velocidade is None: # Verifique se velocidade é None
23
- velocidade = 0 # Defina um valor padrão se velocidade for None
24
-
25
  if velocidade >= 0:
26
  rate_str = f"+{velocidade}%"
27
  else:
@@ -50,6 +48,35 @@ def generate_audio(texto, modelo_de_voz, velocidade):
50
 
51
  return wav_output_file # Retorna o caminho completo do arquivo de áudio WAV
52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  from elevenlabs import generate
54
 
55
  def generate_audio_elevenlabsfree(texto, modelo_de_voz):
@@ -117,10 +144,13 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"
117
  # Defina os elementos de entrada e saída
118
  audio_input = gr.Textbox(label="Texto", value='Texto de exemplo!', interactive=True)
119
  voice_model_input = gr.Dropdown(SUPPORTED_VOICES, label="Modelo de Voz", value="pt-BR-AntonioNeural")
120
- speed_input = gr.Slider(minimum=-200, maximum=200, label="Velocidade (%)", value=0)
121
- audio_output = gr.Audio(label="Áudio", type="filepath", interactive=False)
 
122
  edgetts_button = gr.Button(value="Falar")
123
- edgetts_button.click(fn=generate_audio, inputs=[audio_input, voice_model_input, speed_input], outputs=[audio_output])
 
 
124
  clear_button = gr.ClearButton(audio_input, value='Limpar')
125
  gr.Markdown("Agradecimentos a rany2 pelo Edge-TTS")
126
 
@@ -129,7 +159,7 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"
129
  audio_input = gr.Textbox(label="Texto (Acho que o limite é 250 caracteres)", value='Texto de exemplo!', interactive=True)
130
  voice_model_input = gr.Dropdown(['Arnold', 'Antoni','Bella', 'Rachel', 'Drew', 'Clyde', 'Paul' ], label="Modelo de Voz", value="Arnold")
131
  gr.Markdown("Se estiver usando huggingface e não rodar, vá em logs, que está acima da imagem do github e veja se já não passou o limite de request da API")
132
- audio_output = gr.Audio(label="Áudio", type="filepath", interactive=False)
133
  elevenlabs_button = gr.Button(value="Falar")
134
  elevenlabs_button.click(fn=generate_audio_elevenlabsfree, inputs=[audio_input, voice_model_input], outputs=[audio_output])
135
  clear_button = gr.ClearButton(audio_input, value='Limpar')
 
17
  import gradio as gr
18
  from pydub import AudioSegment
19
  from voice_map import SUPPORTED_VOICES
20
+ from pydub.silence import split_on_silence
21
 
22
  def generate_audio(texto, modelo_de_voz, velocidade):
 
 
 
23
  if velocidade >= 0:
24
  rate_str = f"+{velocidade}%"
25
  else:
 
48
 
49
  return wav_output_file # Retorna o caminho completo do arquivo de áudio WAV
50
 
51
+ def remove_silence(input_file, output_file):
52
+ audio = AudioSegment.from_wav(input_file)
53
+
54
+ # Encontra os segmentos de áudio que não são silêncio
55
+ segments = split_on_silence(audio, min_silence_len=500, silence_thresh=-40)
56
+
57
+ # Concatena os segmentos de áudio não silenciosos
58
+ non_silent_audio = AudioSegment.silent(duration=0)
59
+ for segment in segments:
60
+ non_silent_audio += segment
61
+
62
+ # Salva o áudio sem as partes de silêncio
63
+ non_silent_audio.export(output_file, format="wav")
64
+
65
+ def controlador_generate_audio(audio_input, voice_model_input, speed_input, checkbox_cortar_silencio):
66
+ # Gerar áudio
67
+ audio_file = generate_audio(audio_input, voice_model_input, speed_input)
68
+ if audio_file:
69
+ print("Áudio gerado com sucesso:", audio_file)
70
+ # Verificar se o checkbox de cortar silêncio está marcado
71
+ if checkbox_cortar_silencio:
72
+ print("Cortando silêncio...")
73
+ # Remover silêncio do áudio
74
+ remove_silence(audio_file, audio_file)
75
+ print("Silêncio removido com sucesso!")
76
+ else:
77
+ print("Erro ao gerar áudio.")
78
+ return audio_file # Retornar o caminho do arquivo de áudio
79
+
80
  from elevenlabs import generate
81
 
82
  def generate_audio_elevenlabsfree(texto, modelo_de_voz):
 
144
  # Defina os elementos de entrada e saída
145
  audio_input = gr.Textbox(label="Texto", value='Texto de exemplo!', interactive=True)
146
  voice_model_input = gr.Dropdown(SUPPORTED_VOICES, label="Modelo de Voz", value="pt-BR-AntonioNeural")
147
+ speed_input = gr.Slider(minimum=-200, maximum=200, label="Velocidade (%)", value=0, interactive=True)
148
+ checkbox_cortar_silencio = gr.Checkbox(label="Cortar Silencio", interactive=True)
149
+ audio_output = gr.Audio(label="Resultado", type="filepath", interactive=False)
150
  edgetts_button = gr.Button(value="Falar")
151
+ edgetts_button.click(controlador_generate_audio, inputs=[audio_input, voice_model_input, speed_input, checkbox_cortar_silencio], outputs=[audio_output])
152
+ #edgetts_button = gr.Button(value="Falar")
153
+ #edgetts_button.click(fn=generate_audio, inputs=[audio_input, voice_model_input, speed_input], outputs=[audio_output])
154
  clear_button = gr.ClearButton(audio_input, value='Limpar')
155
  gr.Markdown("Agradecimentos a rany2 pelo Edge-TTS")
156
 
 
159
  audio_input = gr.Textbox(label="Texto (Acho que o limite é 250 caracteres)", value='Texto de exemplo!', interactive=True)
160
  voice_model_input = gr.Dropdown(['Arnold', 'Antoni','Bella', 'Rachel', 'Drew', 'Clyde', 'Paul' ], label="Modelo de Voz", value="Arnold")
161
  gr.Markdown("Se estiver usando huggingface e não rodar, vá em logs, que está acima da imagem do github e veja se já não passou o limite de request da API")
162
+ audio_output = gr.Audio(label="Resultado", type="filepath", interactive=False)
163
  elevenlabs_button = gr.Button(value="Falar")
164
  elevenlabs_button.click(fn=generate_audio_elevenlabsfree, inputs=[audio_input, voice_model_input], outputs=[audio_output])
165
  clear_button = gr.ClearButton(audio_input, value='Limpar')