faelfernandes commited on
Commit
a0cd857
1 Parent(s): 3e47526

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -30
app.py CHANGED
@@ -3,45 +3,70 @@ import edge_tts
3
  import asyncio
4
  import os
5
 
 
 
 
 
 
 
 
 
 
6
  # Função para gerar o áudio
7
- async def text_to_speech(text, language):
8
- # Mapeamento de idiomas para vozes da Azure
9
- voices = {
10
- "Português (Brasil)": "pt-BR-FranciscaNeural",
11
- "Inglês": "en-US-AriaNeural",
12
- "Espanhol": "es-ES-ElviraNeural",
13
- "Francês": "fr-FR-DeniseNeural",
14
- "Italiano": "it-IT-ElsaNeural"
15
- }
16
-
17
- voice = voices.get(language, "pt-BR-FranciscaNeural")
18
-
19
- # Gerar um nome de arquivo único
20
  output_file = f"output_{hash(text)}.mp3"
21
-
22
- # Criar a comunicação com o edge-tts
23
  communicate = edge_tts.Communicate(text, voice)
24
-
25
- # Salvar o áudio
26
  await communicate.save(output_file)
27
-
28
  return output_file
29
 
30
  # Função para processar a entrada e chamar o TTS
31
- def process_tts(text, language):
32
- return asyncio.run(text_to_speech(text, language))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
 
34
  # Configurar a interface Gradio
35
- iface = gr.Interface(
36
- fn=process_tts,
37
- inputs=[
38
- gr.Textbox(label="Texto para converter em fala"),
39
- gr.Dropdown(["Português (Brasil)", "Inglês", "Espanhol", "Francês", "Italiano"], label="Idioma")
40
- ],
41
- outputs=gr.Audio(label="Áudio gerado"),
42
- title="Conversor de Texto para Fala usando Azure TTS",
43
- description="Converta texto em fala usando as vozes da Azure em diferentes idiomas."
44
- )
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  # Iniciar a aplicação
47
  iface.launch()
 
3
  import asyncio
4
  import os
5
 
6
+ # Função para obter todas as vozes disponíveis
7
+ async def get_voices():
8
+ voices = await edge_tts.list_voices()
9
+ return voices
10
+
11
+ # Função para filtrar vozes por idioma
12
+ def filter_voices_by_language(voices, language):
13
+ return [v for v in voices if v.locale.startswith(language)]
14
+
15
  # Função para gerar o áudio
16
+ async def text_to_speech(text, voice):
 
 
 
 
 
 
 
 
 
 
 
 
17
  output_file = f"output_{hash(text)}.mp3"
 
 
18
  communicate = edge_tts.Communicate(text, voice)
 
 
19
  await communicate.save(output_file)
 
20
  return output_file
21
 
22
  # Função para processar a entrada e chamar o TTS
23
+ def process_tts(text, voice):
24
+ return asyncio.run(text_to_speech(text, voice))
25
+
26
+ # Função para atualizar as opções de voz com base no idioma selecionado
27
+ def update_voice_options(language):
28
+ voices = asyncio.run(get_voices())
29
+
30
+ language_codes = {
31
+ "Português (Brasil)": "pt-BR",
32
+ "Inglês": "en",
33
+ "Espanhol": "es",
34
+ "Francês": "fr",
35
+ "Italiano": "it",
36
+ "Multilíngue": "multi"
37
+ }
38
+
39
+ if language == "Multilíngue":
40
+ filtered_voices = [v for v in voices if "multilingual" in v.properties.get("VoiceType", "").lower()]
41
+ else:
42
+ filtered_voices = filter_voices_by_language(voices, language_codes[language])
43
+
44
+ voice_options = [f"{v.short_name} ({v.gender})" for v in filtered_voices]
45
+ return gr.Dropdown.update(choices=voice_options, value=voice_options[0] if voice_options else None)
46
 
47
  # Configurar a interface Gradio
48
+ with gr.Blocks() as iface:
49
+ gr.Markdown("# Conversor de Texto para Fala usando Azure TTS")
50
+ gr.Markdown("Converta texto em fala usando as vozes da Azure em diferentes idiomas.")
51
+
52
+ with gr.Row():
53
+ language = gr.Dropdown(
54
+ ["Português (Brasil)", "Inglês", "Espanhol", "Francês", "Italiano", "Multilíngue"],
55
+ label="Idioma",
56
+ value="Português (Brasil)"
57
+ )
58
+ voice = gr.Dropdown(label="Voz")
59
+
60
+ text_input = gr.Textbox(label="Texto para converter em fala", lines=3)
61
+ audio_output = gr.Audio(label="Áudio gerado")
62
+
63
+ convert_button = gr.Button("Converter")
64
+
65
+ language.change(update_voice_options, inputs=[language], outputs=[voice])
66
+ convert_button.click(process_tts, inputs=[text_input, voice], outputs=[audio_output])
67
+
68
+ # Inicializar as opções de voz
69
+ iface.load(update_voice_options, inputs=[language], outputs=[voice])
70
 
71
  # Iniciar a aplicação
72
  iface.launch()