RafaG commited on
Commit
14a0306
·
verified ·
1 Parent(s): b3acc96

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +116 -42
app.py CHANGED
@@ -12,11 +12,13 @@ subprocess.run(comando_elevenlabs)
12
  # Executando o comando para instalar ou atualizar o pacote edge-tts
13
  subprocess.run(comando_edge_tts)
14
 
 
15
  import subprocess
16
  import os
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):
@@ -77,17 +79,21 @@ def controlador_generate_audio(audio_input, voice_model_input, speed_input, chec
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):
83
  output_dir = "output"
84
  os.makedirs(output_dir, exist_ok=True) # Certifique-se de que o diretório de saída exista
85
 
86
  try:
 
 
 
87
  # Gerar áudio usando elevenlabs
88
  audio = generate(
89
  text=texto,
90
- voice=modelo_de_voz,
91
  model='eleven_multilingual_v2'
92
  )
93
 
@@ -103,35 +109,77 @@ def generate_audio_elevenlabsfree(texto, modelo_de_voz):
103
  except Exception as e:
104
  print("Erro ao gerar áudio:", e)
105
  return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
 
107
- badges = """
108
- <div style="display: flex">
109
- <span style="margin-right: 5px">
110
-
111
- [ ![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=for-the-badge&logo=github&logoColor=white) ](https://github.com/rafaelGodoyEbert)
112
-
113
- </span>
114
- <span style="margin-right: 5px">
115
-
116
- [ ![Twitter](https://img.shields.io/badge/Twitter-%231DA1F2.svg?style=for-the-badge&logo=Twitter&logoColor=white) ](https://twitter.com/GodoyEbert)
117
-
118
- </span>
119
- <span>
120
-
121
- [ ![](https://dcbadge.vercel.app/api/server/aihubbrasil) ](https://discord.gg/aihubbrasil)
122
-
123
- </span>
124
- </div>
125
- """
126
-
127
- description = """
128
- # TTS Rápido
129
- TTS Rápido, para todos aqueles que sempre me pediam alguma forma de fazer algum TTS.<br>
130
- Tem em diversos idiomas, só aproveitar<br>
131
- Increva-se no canal do <a href='https://www.youtube.com/@aihubbrasil' target='_blank'>Youtube do AI HUB Brasil</a> e no meu pessoal <a href='https://www.youtube.com/@godoyy' target='_blank'>Godoyy</a>
132
- """
133
-
134
-
135
  with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"), title="TTS Rápido") as iface:
136
  gr.Markdown(badges)
137
  gr.Markdown(description)
@@ -154,17 +202,43 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"
154
  clear_button = gr.ClearButton(audio_input, value='Limpar')
155
  gr.Markdown("Agradecimentos a rany2 pelo Edge-TTS")
156
 
157
- with gr.TabItem("Elevenlabs SEM API"):
158
- gr.Markdown("Esse é a API gratuita que é disponivel pela própria Elevenlabs, não sei os limites, mas sei que tem, acredito que após 3 requests seguidos já caia, então tenha certeza o texto que vá usar.")
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, 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')
166
- gr.Markdown("Agradecimentos ao Elevenlabs")
167
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
168
  # Executar o aplicativo Gradio
169
  gr.Markdown("""
170
  Desenvolvido por Rafael Godoy <br>
 
12
  # Executando o comando para instalar ou atualizar o pacote edge-tts
13
  subprocess.run(comando_edge_tts)
14
 
15
+
16
  import subprocess
17
  import os
18
  import gradio as gr
19
  from pydub import AudioSegment
20
  from voice_map import SUPPORTED_VOICES
21
+ from header import badges, description
22
  from pydub.silence import split_on_silence
23
 
24
  def generate_audio(texto, modelo_de_voz, velocidade):
 
79
  print("Erro ao gerar áudio.")
80
  return audio_file # Retornar o caminho do arquivo de áudio
81
 
82
+ from elevenlabs import voices, generate
83
+ import requests
84
 
85
+ def generate_audio_elevenlabsfree(texto, voice_name):
86
  output_dir = "output"
87
  os.makedirs(output_dir, exist_ok=True) # Certifique-se de que o diretório de saída exista
88
 
89
  try:
90
+ # Pegar o nome abreviado do modelo de voz
91
+ modelo_abreviado = voice_name
92
+
93
  # Gerar áudio usando elevenlabs
94
  audio = generate(
95
  text=texto,
96
+ voice=modelo_abreviado,
97
  model='eleven_multilingual_v2'
98
  )
99
 
 
109
  except Exception as e:
110
  print("Erro ao gerar áudio:", e)
111
  return None
112
+
113
+ def elevenlabsAPI(audio_input_elevenlabs_api, voice_model_input,model_elevenlabs_t, stability_elevenlabs, similarity_boost_elevenlabs, style_elevenlabs, use_speaker_boost_elevenlabs, id_voz_input, id_api, output_dir="output"):
114
+ try:
115
+ if not id_api.strip():
116
+ print("API não fornecida.")
117
+ return None
118
+
119
+ id_api_value = id_api
120
+ modelos= model_elevenlabs_t
121
+
122
+ if id_voz_input.strip(): # Se um ID de voz foi fornecido
123
+ voice_id = id_voz_input
124
+ print(voice_id)
125
+ url = f"https://api.elevenlabs.io/v1/text-to-speech/{voice_id}"
126
+ headers = {
127
+ "Accept": "audio/mpeg",
128
+ "Content-Type": "application/json",
129
+ "xi-api-key": id_api
130
+ }
131
+ print(modelos)
132
+ print(stability_elevenlabs)
133
+ print(similarity_boost_elevenlabs)
134
+ print(style_elevenlabs)
135
+ print(use_speaker_boost_elevenlabs)
136
+ data = {
137
+ "text": audio_input_elevenlabs_api,
138
+ "model_id": modelos,
139
+ "voice_settings": {
140
+ "stability": stability_elevenlabs,
141
+ "similarity_boost": similarity_boost_elevenlabs,
142
+ "style": style_elevenlabs,
143
+ "use_speaker_boost": use_speaker_boost_elevenlabs,
144
+ }
145
+ }
146
+ print(data)
147
+
148
+ response = requests.post(url, headers=headers, json=data)
149
+ if response.status_code == 200:
150
+ audio = response.content
151
+ else:
152
+ print("Erro ao gerar áudio:", response.text)
153
+ return None
154
+ else: # Se nenhum ID de voz foi fornecido, usar o modelo de voz fornecido
155
+ print(modelos)
156
+ print(stability_elevenlabs)
157
+ print(similarity_boost_elevenlabs)
158
+ print(style_elevenlabs)
159
+ print(use_speaker_boost_elevenlabs)
160
+ audio = generate(
161
+ text=audio_input_elevenlabs_api,
162
+ voice=voice_model_input,
163
+ # voice=Voice(
164
+ # voice_id='EXAVITQu4vr4xnSDxMaL',
165
+ # name=voice_model_input,
166
+ # settings=VoiceSettings(stability=stability_elevenlabs, similarity_boost=similarity_boost_elevenlabs, style=style_elevenlabs, use_speaker_boost=use_speaker_boost_elevenlabs)
167
+ # ),
168
+ model=modelos,
169
+ api_key=id_api
170
+ )
171
+
172
+ if audio:
173
+ output_file_path = os.path.join(output_dir, "new_audio.wav")
174
+ with open(output_file_path, 'wb') as wf:
175
+ wf.write(audio)
176
+ print("Áudio gerado com sucesso em:", output_file_path)
177
+ return output_file_path
178
+ except Exception as e:
179
+ print("Erro ao gerar áudio:", e)
180
+ return None
181
 
182
+ all_voices = voices()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
183
  with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"), title="TTS Rápido") as iface:
184
  gr.Markdown(badges)
185
  gr.Markdown(description)
 
202
  clear_button = gr.ClearButton(audio_input, value='Limpar')
203
  gr.Markdown("Agradecimentos a rany2 pelo Edge-TTS")
204
 
205
+ with gr.TabItem("Elevenlabs"):
206
+ with gr.TabItem("Elevenlabs Free"):
207
+ gr.Markdown("Esse é a API gratuita que é disponivel pela própria Elevenlabs, não sei os limites, mas sei que tem, acredito que após 3 requests seguidos já caia, então tenha certeza o texto que vá usar.")
208
+ audio_input = gr.Textbox(label="Texto (Não botei limite de caracteres, mas não sei se tem limite no request)", value='Texto de exemplo!', interactive=True)
209
+ voice_model_input = gr.Dropdown([ voice.name for voice in all_voices], label="Modelo de Voz", value='Adam', interactive=True)
210
+ 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")
211
+ audio_output = gr.Audio(label="Resultado", type="filepath", interactive=False)
212
+ elevenlabs_button = gr.Button(value="Falar")
213
+ elevenlabs_button.click(fn=generate_audio_elevenlabsfree, inputs=[audio_input, voice_model_input], outputs=[audio_output])
214
+ clear_button = gr.ClearButton(audio_input, value='Limpar')
215
+ gr.Markdown("Agradecimentos ao Elevenlabs")
216
+ with gr.TabItem("Elevenlabs com API"):
217
+ gr.Markdown("Versão com API, basicamente mesma coisa que o site, mas por algum motivo as pessoas me pediram")
218
+ audio_input_elevenlabs_api = gr.Textbox(label="Texto (Acho que o limite é 2500 caracteres)", value='Texto de exemplo!', interactive=True)
219
+ with gr.Row():
220
+ id_api = gr.Textbox(label="Digite sua API (Obrigatório)", interactive=True)
221
+ voice_model_input = gr.Dropdown([ voice.name for voice in all_voices], label="Modelo de Voz", value="Adam", interactive=True)
222
+ id_voz_input = gr.Textbox(label="Ou digite o ID da voz", interactive=True)
223
+ gr.Markdown("Abaixo só funciona o Modelo (multilingual_v1,v2,mono), só funciona todas abaixo se tiver com o ID de voz (Por enquanto). <br> <a href='https://api.elevenlabs.io/v1/voices' target='_blank'>Nesse link</a> tem ID de voz, só filtrar por voice_id")
224
+ with gr.Row():
225
+ model_elevenlabs_t = gr.Dropdown(['eleven_multilingual_v2', 'eleven_multilingual_v1', 'eleven_monolingual_v1'], label="Modelo", value='eleven_multilingual_v2', interactive=True)
226
+ stability_elevenlabs = gr.Slider(0, 1, step=0.1, label="Establidade", value=0.67, interactive=True)
227
+ similarity_boost_elevenlabs = gr.Slider(0, 1, step=0.1, label="Claridade + Similaridade", value=0.8, interactive=True)
228
+ style_elevenlabs = gr.Slider(0, 1, step=0.1, label="Exagero de estilo", value=0.0, interactive=True)
229
+ use_speaker_boost_elevenlabs = gr.Checkbox(label="Speaker Boost", value=True, interactive=True)
230
+ 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")
231
+ audio_output = gr.Audio(label="Resultado", type="filepath", interactive=False)
232
+ elevenlabs_button = gr.Button(value="Falar")
233
+ elevenlabs_button.click(fn=elevenlabsAPI, inputs=[audio_input_elevenlabs_api, voice_model_input, model_elevenlabs_t, stability_elevenlabs, similarity_boost_elevenlabs, style_elevenlabs, use_speaker_boost_elevenlabs, id_voz_input, id_api], outputs=[audio_output])
234
+ clear_button = gr.ClearButton(audio_input_elevenlabs_api, value='Limpar')
235
+ gr.Markdown("Agradecimentos ao Elevenlabs")
236
+ with gr.TabItem("Conqui-TTS"):
237
+ gr.Markdown("Em DEV - Conqui")
238
+ # Chame a função do arquivo conqui.py para criar os blocos específicos
239
+ # tabs_conqui = conqui.criar_tab_conqui()
240
+ # Adicione os blocos criados ao bloco principal
241
+ # gr.Component(tabs_conqui)
242
  # Executar o aplicativo Gradio
243
  gr.Markdown("""
244
  Desenvolvido por Rafael Godoy <br>