RafaG commited on
Commit
f5da071
·
verified ·
1 Parent(s): 09aa2a9

Upload 8 files

Browse files
.gitattributes CHANGED
@@ -36,3 +36,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
36
  TikTok_TTS/samples/en_female_f08_salut_damour.mp3 filter=lfs diff=lfs merge=lfs -text
37
  TikTok_TTS/samples/en_female_f08_warmy_breeze.mp3 filter=lfs diff=lfs merge=lfs -text
38
  TikTok_TTS/samples/en_male_m03_sunshine_soon.mp3 filter=lfs diff=lfs merge=lfs -text
 
 
 
36
  TikTok_TTS/samples/en_female_f08_salut_damour.mp3 filter=lfs diff=lfs merge=lfs -text
37
  TikTok_TTS/samples/en_female_f08_warmy_breeze.mp3 filter=lfs diff=lfs merge=lfs -text
38
  TikTok_TTS/samples/en_male_m03_sunshine_soon.mp3 filter=lfs diff=lfs merge=lfs -text
39
+ samples/edgeTTS[[:space:]]-[[:space:]]Portuguese[[:space:]]-[[:space:]]Is[[:space:]]AI[[:space:]]Ruining[[:space:]]Music[[:space:]][[:space:]]Dustin[[:space:]]Ballard[[:space:]][[:space:]]TED.mp3 filter=lfs diff=lfs merge=lfs -text
40
+ samples/TiktokTTS[[:space:]]-[[:space:]]Portuguese[[:space:]]-[[:space:]]Is[[:space:]]AI[[:space:]]Ruining[[:space:]]Music[[:space:]][[:space:]]Dustin[[:space:]]Ballard[[:space:]][[:space:]]TED.mp3 filter=lfs diff=lfs merge=lfs -text
app.py CHANGED
@@ -3,6 +3,8 @@
3
  import gradio as gr
4
  from get_voices import get_voices
5
  from header import badges, description
 
 
6
 
7
  # --- Imports from our new modules ---
8
  from utils import listar_audios, tocar_audio
@@ -18,6 +20,30 @@ from tiktokTTS import (
18
  # --- Global Settings ---
19
  srt_temp_deleta = True
20
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
  # --- UI Helper Functions ---
22
  def update_edge_voice_options(language, voices_data):
23
  voice_options = get_voice_options(language, voices_data)
@@ -30,6 +56,7 @@ def update_tiktok_voice_options(language):
30
  return gr.update(choices=voices, value=voices[0] if voices else None)
31
 
32
  def update_voices_and_refresh():
 
33
  get_voices()
34
  voices_data = load_voices()
35
  available_languages = list(voices_data.keys())
@@ -191,6 +218,16 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"
191
  # --- Componentes Comuns ---
192
  srt_input = gr.File(label="Arquivo SRT", file_types=[".srt"], type="filepath")
193
  audio_output_srt = gr.Audio(label="Resultado", type="filepath", interactive=False)
 
 
 
 
 
 
 
 
 
 
194
  audio_list_target = gr.Dropdown(visible=False)
195
  with gr.Row():
196
  srt_button = gr.Button(value="Gerar Áudio")
@@ -204,14 +241,19 @@ with gr.Blocks(theme=gr.themes.Default(primary_hue="green", secondary_hue="blue"
204
  language_input_srt.change(fn=lambda lang: update_edge_voice_options(lang, edge_voices_data), inputs=language_input_srt, outputs=voice_model_input_srt)
205
  tiktok_category_input_srt.change(fn=update_tiktok_voice_options, inputs=tiktok_category_input_srt, outputs=tiktok_voice_model_input_srt)
206
 
207
- def controlador_srt_principal(provider, srt_file, edge_voice, pitch, volume, tiktok_voice):
 
 
 
 
208
  if provider == "Edge-TTS":
209
- audio_file = controlador_process_srt_file(srt_file, edge_voice, pitch, volume, srt_temp_deleta)
210
  else: # TikTok
211
- audio_file = controlador_process_srt_file_tiktok(srt_file, tiktok_voice, srt_temp_deleta)
212
 
213
  return audio_file, gr.update(choices=listar_audios())
214
 
 
215
  srt_button.click(
216
  fn=controlador_srt_principal,
217
  inputs=[provider_choice_srt, srt_input, voice_model_input_srt, pitch_input_srt, volume_input_srt, tiktok_voice_model_input_srt],
 
3
  import gradio as gr
4
  from get_voices import get_voices
5
  from header import badges, description
6
+ import os
7
+ from pathlib import Path
8
 
9
  # --- Imports from our new modules ---
10
  from utils import listar_audios, tocar_audio
 
20
  # --- Global Settings ---
21
  srt_temp_deleta = True
22
 
23
+ def load_samples(sample_dir="samples"):
24
+ """
25
+ Escaneia um diretório por pares de arquivos (.srt, .mp3) e os formata
26
+ para o componente gr.Examples.
27
+ """
28
+ samples_path = Path(sample_dir)
29
+ if not samples_path.exists():
30
+ print(f"Aviso: Diretório de exemplos '{sample_dir}' não encontrado.")
31
+ return []
32
+
33
+ examples = []
34
+ # Itera sobre todos os arquivos .srt no diretório
35
+ for srt_file in sorted(samples_path.glob("*.srt")):
36
+ mp3_file = srt_file.with_suffix(".mp3")
37
+ # Verifica se o arquivo .mp3 correspondente existe
38
+ if mp3_file.exists():
39
+ # Adiciona o par [caminho_srt, caminho_mp3] à lista
40
+ examples.append([str(srt_file), str(mp3_file)])
41
+
42
+ if not examples:
43
+ print(f"Aviso: Nenhum par de exemplos (.srt, .mp3) encontrado em '{sample_dir}'.")
44
+
45
+ return examples
46
+
47
  # --- UI Helper Functions ---
48
  def update_edge_voice_options(language, voices_data):
49
  voice_options = get_voice_options(language, voices_data)
 
56
  return gr.update(choices=voices, value=voices[0] if voices else None)
57
 
58
  def update_voices_and_refresh():
59
+ print("Iniciando a atualização da lista de vozes...")
60
  get_voices()
61
  voices_data = load_voices()
62
  available_languages = list(voices_data.keys())
 
218
  # --- Componentes Comuns ---
219
  srt_input = gr.File(label="Arquivo SRT", file_types=[".srt"], type="filepath")
220
  audio_output_srt = gr.Audio(label="Resultado", type="filepath", interactive=False)
221
+ progress_bar_srt = gr.Progress(track_tqdm=True)
222
+ # --- ADICIONADO: Componente de Exemplos ---
223
+ gr.Examples(
224
+ examples=load_samples(),
225
+ inputs=[srt_input, audio_output_srt],
226
+ outputs=[srt_input, audio_output_srt],
227
+ label="Exemplos (Clique para carregar)",
228
+ # A função fn=lambda x,y: (x,y) é um truque para carregar os dados diretamente
229
+ fn=lambda srt_path, audio_path: (srt_path, audio_path)
230
+ )
231
  audio_list_target = gr.Dropdown(visible=False)
232
  with gr.Row():
233
  srt_button = gr.Button(value="Gerar Áudio")
 
241
  language_input_srt.change(fn=lambda lang: update_edge_voice_options(lang, edge_voices_data), inputs=language_input_srt, outputs=voice_model_input_srt)
242
  tiktok_category_input_srt.change(fn=update_tiktok_voice_options, inputs=tiktok_category_input_srt, outputs=tiktok_voice_model_input_srt)
243
 
244
+ def controlador_srt_principal(provider, srt_file, edge_voice, pitch, volume, tiktok_voice, progress=gr.Progress(track_tqdm=True)):
245
+ """
246
+ Função roteadora que recebe o rastreador de progresso do Gradio
247
+ e o passa para os controladores específicos do provedor.
248
+ """
249
  if provider == "Edge-TTS":
250
+ audio_file = controlador_process_srt_file(srt_file, edge_voice, pitch, volume, srt_temp_deleta, progress=progress)
251
  else: # TikTok
252
+ audio_file = controlador_process_srt_file_tiktok(srt_file, tiktok_voice, srt_temp_deleta, progress=progress)
253
 
254
  return audio_file, gr.update(choices=listar_audios())
255
 
256
+ # MODIFICADO: A chamada de clique permanece a mesma, o Gradio injeta o `progress` automaticamente
257
  srt_button.click(
258
  fn=controlador_srt_principal,
259
  inputs=[provider_choice_srt, srt_input, voice_model_input_srt, pitch_input_srt, volume_input_srt, tiktok_voice_model_input_srt],
edgeTTS.py CHANGED
@@ -89,7 +89,7 @@ def controlador_generate_audio_from_file(file, voice_model_input, speed, pitch,
89
  return audio_file
90
 
91
  # --- Lógica de Processamento de SRT (Usa Edge-TTS) ---
92
- async def process_srt_file(srt_file_path, voice, output_dir_str, pitch, volume, srt_temp_deleta):
93
  from edge_tts import Communicate as EdgeTTS # Importação local para manter dependências contidas
94
  subs = pysrt.open(srt_file_path)
95
  output_dir = Path(output_dir_str)
@@ -122,7 +122,7 @@ async def process_srt_file(srt_file_path, voice, output_dir_str, pitch, volume,
122
 
123
  return final_audio
124
 
125
- def controlador_process_srt_file(srt_file, voice_model_input, pitch, volume, srt_temp_deleta):
126
  if not srt_file: return None
127
  actual_voice = extract_voice_name(voice_model_input)
128
  output_dir = "output/srt_temp"
 
89
  return audio_file
90
 
91
  # --- Lógica de Processamento de SRT (Usa Edge-TTS) ---
92
+ async def process_srt_file(srt_file_path, voice, output_dir_str, pitch, volume, srt_temp_deleta, progress=None):
93
  from edge_tts import Communicate as EdgeTTS # Importação local para manter dependências contidas
94
  subs = pysrt.open(srt_file_path)
95
  output_dir = Path(output_dir_str)
 
122
 
123
  return final_audio
124
 
125
+ def controlador_process_srt_file(srt_file, voice_model_input, pitch, volume, srt_temp_deleta, progress=None):
126
  if not srt_file: return None
127
  actual_voice = extract_voice_name(voice_model_input)
128
  output_dir = "output/srt_temp"
samples/TiktokTTS - Portuguese - Is AI Ruining Music Dustin Ballard TED.mp3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5bdc8c5ad57d65c188ddaec9c3e3c769f3aa74c6d5f02ee5c8f9f7035a5111f3
3
+ size 16296690
samples/TiktokTTS - Portuguese - Is AI Ruining Music Dustin Ballard TED.srt ADDED
@@ -0,0 +1,968 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 1
2
+ 00:00:00,000 --> 00:00:07,000 align:start position:0% line:0%
3
+ Tradutor: Maurício Kakuei Tanaka
4
+
5
+ 2
6
+ 00:00:04,001 --> 00:00:07,505
7
+ Vou começar hoje
8
+ com uma história musical obscura.
9
+
10
+ 3
11
+ 00:00:07,671 --> 00:00:10,674
12
+ Se você é fã do David Bowie,
13
+ talvez já saiba,
14
+
15
+ 4
16
+ 00:00:10,674 --> 00:00:13,477
17
+ mas o refrão da música “Starman”
18
+
19
+ 5
20
+ 00:00:13,477 --> 00:00:17,381
21
+ foi, na verdade, tirado de uma música
22
+ de blues de 1937 de T-Bone Fletcher,
23
+
24
+ 6
25
+ 00:00:17,381 --> 00:00:19,050
26
+ da qual vou tocar um trecho.
27
+
28
+ 7
29
+ 00:00:20,851 --> 00:00:25,356
30
+ ♪ Há um homem das estrelas
31
+ esperando no céu ♪
32
+
33
+ 8
34
+ 00:00:27,691 --> 00:00:30,261
35
+ ♪ Ele gostaria de vir nos conhecer ♪
36
+
37
+ 9
38
+ 00:00:30,261 --> 00:00:33,297
39
+ ♪ Mas acha que nos surpreenderia ♪
40
+
41
+ 10
42
+ 00:00:35,266 --> 00:00:40,871
43
+ ♪ Há um homem das estrelas
44
+ esperando no céu ♪
45
+
46
+ 11
47
+ 00:00:40,871 --> 00:00:42,039
48
+ (Fim da música)
49
+
50
+ 12
51
+ 00:00:43,107 --> 00:00:45,109
52
+ Adoro o cover do Bowie,
53
+
54
+ 13
55
+ 00:00:45,109 --> 00:00:49,246
56
+ mas há algo sobre uma guitarra detonada
57
+
58
+ 14
59
+ 00:00:49,246 --> 00:00:52,483
60
+ e um velho cantando com muita intensidade,
61
+
62
+ 15
63
+ 00:00:52,483 --> 00:00:55,553
64
+ que, para mim, realmente capta
65
+ a emoção da música.
66
+
67
+ 16
68
+ 00:00:56,220 --> 00:01:00,424
69
+ Acho que o mais interessante
70
+ é que acabei de inventar toda a história.
71
+
72
+ 17
73
+ 00:01:00,424 --> 00:01:02,593
74
+ Na verdade, era 100% IA.
75
+
76
+ 18
77
+ 00:01:02,593 --> 00:01:03,727
78
+ (Risos)
79
+
80
+ 19
81
+ 00:01:04,762 --> 00:01:07,565
82
+ Peço desculpas por mentir,
83
+ mas há uma razão para isso.
84
+
85
+ 20
86
+ 00:01:08,165 --> 00:01:10,101
87
+ Eu gostaria de começar com uma pergunta.
88
+
89
+ 21
90
+ 00:01:10,101 --> 00:01:11,635
91
+ O que é música de verdade?
92
+
93
+ 22
94
+ 00:01:12,236 --> 00:01:16,040
95
+ Essa pergunta surgiu com sintetizadores,
96
+
97
+ 23
98
+ 00:01:16,040 --> 00:01:18,442
99
+ “sampling” e música hip-hop.
100
+
101
+ 24
102
+ 00:01:19,009 --> 00:01:22,746
103
+ Até com o fonógrafo, quando foi lançado
104
+ pela primeira vez nos anos 1800,
105
+
106
+ 25
107
+ 00:01:22,746 --> 00:01:24,482
108
+ as pessoas, na época, debatiam
109
+
110
+ 26
111
+ 00:01:24,482 --> 00:01:28,452
112
+ se a música reproduzida era real ou não.
113
+
114
+ 27
115
+ 00:01:29,353 --> 00:01:31,255
116
+ John Philip Sousa,
117
+
118
+ 28
119
+ 00:01:31,255 --> 00:01:34,191
120
+ a Taylor Swift de sua época,
121
+
122
+ 29
123
+ 00:01:34,191 --> 00:01:35,192
124
+ não era fã.
125
+
126
+ 30
127
+ 00:01:35,192 --> 00:01:37,795
128
+ Ele dizia que os fonógrafos
129
+ eram “um substituto
130
+
131
+ 31
132
+ 00:01:37,795 --> 00:01:40,898
133
+ para a habilidade, inteligência
134
+ e alma humanas”.
135
+
136
+ 32
137
+ 00:01:41,198 --> 00:01:45,536
138
+ “Eles reduzem a expressão da música
139
+ a um sistema matemático.”
140
+
141
+ 33
142
+ 00:01:46,604 --> 00:01:49,573
143
+ Quase parece que ele está falando
144
+ sobre a IA, não é mesmo?
145
+
146
+ 34
147
+ 00:01:50,708 --> 00:01:53,177
148
+ Então, a IA é música de verdade?
149
+
150
+ 35
151
+ 00:01:53,844 --> 00:01:56,647
152
+ Acredito que, quando está
153
+ nas mãos de músicos,
154
+
155
+ 36
156
+ 00:01:56,647 --> 00:01:57,648
157
+ pode ser.
158
+
159
+ 37
160
+ 00:01:57,648 --> 00:02:00,184
161
+ Mas primeiro, vou contextualizar
162
+ por que acho isso.
163
+
164
+ 38
165
+ 00:02:00,484 --> 00:02:04,588
166
+ Administro um canal de mídia social
167
+ de paródia de música
168
+
169
+ 39
170
+ 00:02:04,588 --> 00:02:06,423
171
+ chamado “There, I Ruined It”.
172
+
173
+ 40
174
+ 00:02:06,891 --> 00:02:08,425
175
+ É só um... obrigado.
176
+
177
+ 41
178
+ 00:02:09,360 --> 00:02:11,629
179
+ É só um estranho
180
+ passatempo noturno meu.
181
+
182
+ 42
183
+ 00:02:11,629 --> 00:02:14,398
184
+ Meu trabalho diário é
185
+ como diretor criativo de publicidade.
186
+
187
+ 43
188
+ 00:02:14,965 --> 00:02:17,635
189
+ Mas o objetivo do canal
190
+ é arruinar a música
191
+
192
+ 44
193
+ 00:02:17,635 --> 00:02:21,372
194
+ ou, como eu disse, destruir
195
+ carinhosamente suas músicas favoritas.
196
+
197
+ 45
198
+ 00:02:21,705 --> 00:02:24,708
199
+ A IA é uma das ferramentas
200
+ que costumo usar para fazer isso.
201
+
202
+ 46
203
+ 00:02:24,708 --> 00:02:30,848
204
+ Por exemplo, eis meu cover
205
+ da música “In Da Club”, do 50 Cent,
206
+
207
+ 47
208
+ 00:02:30,848 --> 00:02:36,020
209
+ interpretada por uma versão de IA
210
+ da lenda da música country Conway Twitty.
211
+
212
+ 48
213
+ 00:02:37,054 --> 00:02:38,422
214
+ (Música)
215
+
216
+ 49
217
+ 00:02:38,422 --> 00:02:40,624
218
+ ♪ Você pode me encontrar no clube ♪
219
+
220
+ 50
221
+ 00:02:40,891 --> 00:02:42,760
222
+ ♪ Uma garrafa cheia de cerveja ♪
223
+
224
+ 51
225
+ 00:02:43,227 --> 00:02:45,029
226
+ ♪ Estou a fim de fazer sexo ♪
227
+
228
+ 52
229
+ 00:02:45,029 --> 00:02:48,098
230
+ ♪ Não estou a fim de fazer amor ♪
231
+
232
+ 53
233
+ 00:02:48,899 --> 00:02:51,001
234
+ ♪ Então venha me dar um abraço ♪
235
+
236
+ 54
237
+ 00:02:51,001 --> 00:02:53,337
238
+ ♪ Se estiver a fim de se roçar ♪
239
+
240
+ 55
241
+ 00:02:53,337 --> 00:02:55,506
242
+ ♪ Vai, gatinha, é seu aniversário ♪
243
+
244
+ 56
245
+ 00:02:55,506 --> 00:02:57,841
246
+ ♪ Vamos festejar como se fosse
247
+ seu aniversário ♪
248
+
249
+ 57
250
+ 00:02:59,043 --> 00:03:00,844
251
+ ♪ Quando paro na frente ♪
252
+
253
+ 58
254
+ 00:03:00,844 --> 00:03:03,347
255
+ ♪ Você vê o carrão com rodas grandes ♪
256
+
257
+ 59
258
+ 00:03:04,048 --> 00:03:05,182
259
+ (Risos)
260
+
261
+ 60
262
+ 00:03:05,182 --> 00:03:06,383
263
+ Obrigado.
264
+
265
+ 61
266
+ 00:03:06,383 --> 00:03:07,851
267
+ (Aplausos)
268
+
269
+ 62
270
+ 00:03:07,851 --> 00:03:10,087
271
+ Como criei essa música?
272
+
273
+ 63
274
+ 00:03:10,254 --> 00:03:12,890
275
+ A banda que vocês ouviram
276
+ é, na verdade, uma banda real.
277
+
278
+ 64
279
+ 00:03:12,890 --> 00:03:14,892
280
+ Na realidade, sou eu tocando violino.
281
+
282
+ 65
283
+ 00:03:15,226 --> 00:03:19,163
284
+ Há apenas uma etapa extra no processo
285
+ em que executei meus vocais,
286
+
287
+ 66
288
+ 00:03:19,163 --> 00:03:21,398
289
+ minha personificação de Conway Twitty,
290
+
291
+ 67
292
+ 00:03:21,398 --> 00:03:25,202
293
+ por meio de um modelo personalizado
294
+ de voz de IA treinado sobre a voz dele.
295
+
296
+ 68
297
+ 00:03:25,536 --> 00:03:30,040
298
+ Para dar outro exemplo,
299
+ com uma espiadinha por trás da cortina,
300
+
301
+ 69
302
+ 00:03:30,040 --> 00:03:32,943
303
+ no próximo trecho,
304
+ vocês vão ouvir minha voz real
305
+
306
+ 70
307
+ 00:03:32,943 --> 00:03:35,346
308
+ seguida pela versão pós-IA,
309
+
310
+ 71
311
+ 00:03:35,346 --> 00:03:37,381
312
+ de uma música que chamo
313
+
314
+ 72
315
+ 00:03:37,381 --> 00:03:40,351
316
+ de “Os Red Hot Chili Peppers
317
+ fazem uma lista de supermercado”.
318
+
319
+ 73
320
+ 00:03:41,852 --> 00:03:44,488
321
+ (Música: Red Hot Chilli Peppers,
322
+ “Can’t Stop”)
323
+
324
+ 74
325
+ 00:03:44,488 --> 00:03:47,057
326
+ [Meus vocais] ♪ Quinoa, bananas, ravióli ♪
327
+
328
+ 75
329
+ 00:03:47,057 --> 00:03:49,426
330
+ ♪ Atum enlatado, picles, macarrão ♪
331
+
332
+ 76
333
+ 00:03:49,793 --> 00:03:52,329
334
+ [Anthony Kiedis (IA)]
335
+ ♪ Quinoa, bananas, ravióli ♪
336
+
337
+ 77
338
+ 00:03:52,329 --> 00:03:54,698
339
+ ♪ Atum enlatado, picles, macarrão ♪
340
+
341
+ 78
342
+ 00:03:54,698 --> 00:03:55,899
343
+ (Fim da música)
344
+
345
+ 79
346
+ 00:03:56,367 --> 00:03:59,837
347
+ A música de blues do David Bowie
348
+ que toquei para vocês no início
349
+
350
+ 80
351
+ 00:03:59,970 --> 00:04:02,906
352
+ foi mesmo criada de uma forma
353
+ totalmente diferente.
354
+
355
+ 81
356
+ 00:04:02,906 --> 00:04:06,243
357
+ Aquilo foi 100% IA
358
+ a partir de uma instrução de texto,
359
+
360
+ 82
361
+ 00:04:07,077 --> 00:04:10,014
362
+ o que, para mim,
363
+ é um pouco mais desconcertante.
364
+
365
+ 83
366
+ 00:04:10,014 --> 00:04:12,516
367
+ Na realidade, ao criar essa música
368
+ pela primeira vez,
369
+
370
+ 84
371
+ 00:04:12,516 --> 00:04:15,919
372
+ ela mexeu um pouco comigo
373
+ porque adoro músicas antigas,
374
+
375
+ 85
376
+ 00:04:15,919 --> 00:04:18,422
377
+ toco músicas daquela época,
378
+
379
+ 86
380
+ 00:04:18,422 --> 00:04:23,227
381
+ e ouvir a dor na voz daquele homem,
382
+
383
+ 87
384
+ 00:04:23,227 --> 00:04:25,029
385
+ que nunca existiu...
386
+
387
+ 88
388
+ 00:04:25,029 --> 00:04:27,798
389
+ algo a respeito disso
390
+ parecia um pouco errado para mim.
391
+
392
+ 89
393
+ 00:04:28,132 --> 00:04:30,200
394
+ Por isso, menti para vocês logo de início.
395
+
396
+ 90
397
+ 00:04:30,200 --> 00:04:32,703
398
+ Suspeito que alguns
399
+ possam ter gostado dessa música
400
+
401
+ 91
402
+ 00:04:32,703 --> 00:04:36,206
403
+ até o momento em que descobriram
404
+ que se tratava de IA.
405
+
406
+ 92
407
+ 00:04:36,206 --> 00:04:37,808
408
+ Para mim, isso implicaria
409
+
410
+ 93
411
+ 00:04:37,808 --> 00:04:41,378
412
+ que talvez a música seja mais
413
+ do que a música.
414
+
415
+ 94
416
+ 00:04:41,812 --> 00:04:45,683
417
+ Será que a música é melodia,
418
+ ritmo e acordes?
419
+
420
+ 95
421
+ 00:04:45,683 --> 00:04:47,551
422
+ Ou será que a música é expressão?
423
+
424
+ 96
425
+ 00:04:49,520 --> 00:04:51,322
426
+ Isso sempre importa para os ouvintes?
427
+
428
+ 97
429
+ 00:04:51,322 --> 00:04:53,457
430
+ Se eu ouvir uma música que adoro no rádio,
431
+
432
+ 98
433
+ 00:04:53,457 --> 00:04:57,294
434
+ será que vou parar tudo
435
+ e pesquisar como ela foi criada?
436
+
437
+ 99
438
+ 00:04:57,761 --> 00:04:58,896
439
+ Talvez não.
440
+
441
+ 100
442
+ 00:04:59,730 --> 00:05:02,599
443
+ Fica ainda mais confuso
444
+ quando analisamos as várias maneiras
445
+
446
+ 101
447
+ 00:05:02,599 --> 00:05:04,635
448
+ que a IA pode ser usada
449
+ para criar música.
450
+
451
+ 102
452
+ 00:05:04,635 --> 00:05:05,636
453
+ Então, por exemplo,
454
+
455
+ 103
456
+ 00:05:05,836 --> 00:05:08,906
457
+ e se eu usasse a IA para ajudar
458
+ com algumas letras de músicas?
459
+
460
+ 104
461
+ 00:05:09,139 --> 00:05:12,776
462
+ Isso é muito diferente de, digamos,
463
+ um dicionário de rimas?
464
+
465
+ 105
466
+ 00:05:13,644 --> 00:05:18,282
467
+ E se eu usasse a IA para criar um novo som
468
+ de instrumento que nunca existiu?
469
+
470
+ 106
471
+ 00:05:18,615 --> 00:05:20,784
472
+ Isso é muito diferente de um sintetizador?
473
+
474
+ 107
475
+ 00:05:22,219 --> 00:05:26,623
476
+ E se eu treinasse um modelo de IA
477
+ em toda a minha obra,
478
+
479
+ 108
480
+ 00:05:26,623 --> 00:05:30,227
481
+ e ele criasse uma música nova
482
+ no meu estilo?
483
+
484
+ 109
485
+ 00:05:30,661 --> 00:05:33,130
486
+ Seria algo em que eu colocaria meu nome?
487
+
488
+ 110
489
+ 00:05:34,598 --> 00:05:37,468
490
+ Ou se eu quisesse usar vozes diferentes,
491
+
492
+ 111
493
+ 00:05:37,468 --> 00:05:40,204
494
+ como um guitarrista
495
+ pode usar guitarras diferentes?
496
+
497
+ 112
498
+ 00:05:40,904 --> 00:05:43,874
499
+ Ou será que só estou preso
500
+ à voz com a qual eu nasci?
501
+
502
+ 113
503
+ 00:05:44,441 --> 00:05:48,846
504
+ Tenho um colega de trabalho
505
+ com uma ótima voz de barítono,
506
+
507
+ 114
508
+ 00:05:48,846 --> 00:05:51,248
509
+ e ele se divertiu muito um dia
510
+
511
+ 115
512
+ 00:05:51,248 --> 00:05:53,851
513
+ quando lhe perguntei
514
+ se eu poderia comprar sua voz
515
+
516
+ 116
517
+ 00:05:53,851 --> 00:05:56,019
518
+ para uma música
519
+ na qual eu estava trabalhando.
520
+
521
+ 117
522
+ 00:05:56,186 --> 00:05:57,388
523
+ Vou tocar um trecho dela.
524
+
525
+ 118
526
+ 00:05:57,388 --> 00:06:00,557
527
+ É o meu canto pela voz
528
+ de meu colega de trabalho.
529
+
530
+ 119
531
+ 00:06:00,991 --> 00:06:03,494
532
+ A música é “Baby Got Back”,
533
+
534
+ 120
535
+ 00:06:04,194 --> 00:06:07,331
536
+ mas com a melodia de “Hallelujah”
537
+ de Leonard Cohen.
538
+
539
+ 121
540
+ 00:06:07,331 --> 00:06:08,332
541
+ (Risos)
542
+
543
+ 122
544
+ 00:06:09,266 --> 00:06:11,668
545
+ (Música)
546
+
547
+ 123
548
+ 00:06:15,906 --> 00:06:19,343
549
+ ♪ Gosto de bundas grandes,
550
+ não posso mentir ♪
551
+
552
+ 124
553
+ 00:06:19,343 --> 00:06:22,613
554
+ ♪ Vocês, irmãos, não podem negar ♪
555
+
556
+ 125
557
+ 00:06:22,913 --> 00:06:26,150
558
+ ♪ Quando uma coisa redonda
559
+ está na sua cara ♪
560
+
561
+ 126
562
+ 00:06:26,150 --> 00:06:27,718
563
+ ♪ Você fica apaixonado! ♪
564
+
565
+ 127
566
+ 00:06:27,718 --> 00:06:29,286
567
+ (Risos)
568
+
569
+ 128
570
+ 00:06:29,987 --> 00:06:33,290
571
+ ♪ Quando uma garota entra,
572
+ você chega confiante ♪
573
+
574
+ 129
575
+ 00:06:33,624 --> 00:06:37,127
576
+ ♪ Porque você notou
577
+ que a bunda dela era inflada ♪
578
+
579
+ 130
580
+ 00:06:37,127 --> 00:06:40,497
581
+ ♪ Meus amigos tentaram me avisar ♪
582
+
583
+ 131
584
+ 00:06:40,497 --> 00:06:42,332
585
+ ♪ Estou excitado! ♪
586
+
587
+ 132
588
+ 00:06:42,332 --> 00:06:44,701
589
+ (Risos)
590
+
591
+ 133
592
+ 00:06:44,701 --> 00:06:48,305
593
+ (Aplausos)
594
+
595
+ 134
596
+ 00:06:51,141 --> 00:06:54,878
597
+ Gostei de olhar para os rostos
598
+ desta estimada plateia
599
+
600
+ 135
601
+ 00:06:54,878 --> 00:06:56,246
602
+ enquanto a música tocava.
603
+
604
+ 136
605
+ 00:06:56,246 --> 00:06:57,815
606
+ (Risos)
607
+
608
+ 137
609
+ 00:06:58,215 --> 00:06:59,383
610
+ Vou dar mais um exemplo.
611
+
612
+ 138
613
+ 00:06:59,383 --> 00:07:00,651
614
+ No próximo trecho,
615
+
616
+ 139
617
+ 00:07:00,651 --> 00:07:03,821
618
+ vocês vão ouvir uma melodia
619
+ que inventei em meu violino.
620
+
621
+ 140
622
+ 00:07:04,087 --> 00:07:08,025
623
+ Depois pedi à IA que a transformasse
624
+ em uma trilha sonora dramática de filme.
625
+
626
+ 141
627
+ 00:07:09,493 --> 00:07:14,131
628
+ (Violino real)
629
+
630
+ 142
631
+ 00:07:14,131 --> 00:07:19,837
632
+ (Violino dramático com IA)
633
+
634
+ 143
635
+ 00:07:21,839 --> 00:07:23,006
636
+ (Fim da música)
637
+
638
+ 144
639
+ 00:07:23,974 --> 00:07:27,911
640
+ Tudo isso é para dizer que há milhões
641
+ de maneiras de usar a IA.
642
+
643
+ 145
644
+ 00:07:27,911 --> 00:07:31,715
645
+ O termo “música de IA”
646
+ realmente não esclarece nada.
647
+
648
+ 146
649
+ 00:07:32,182 --> 00:07:35,919
650
+ Na realidade, até nossos legisladores
651
+ parecem não entender isso.
652
+
653
+ 147
654
+ 00:07:35,919 --> 00:07:40,023
655
+ Houve uma audiência recente
656
+ no Congresso dos EUA sobre música de IA,
657
+
658
+ 148
659
+ 00:07:40,023 --> 00:07:41,925
660
+ na qual eles tocaram minha compilação
661
+
662
+ 149
663
+ 00:07:41,925 --> 00:07:46,330
664
+ de Johnny Cash de IA
665
+ cantando a música “Barbie Girl”,
666
+
667
+ 150
668
+ 00:07:46,330 --> 00:07:49,299
669
+ à qual o deputado Matt Gaetz respondeu:
670
+
671
+ 151
672
+ 00:07:49,666 --> 00:07:52,803
673
+ “Os robôs não devem estar sujeitos
674
+ à liberdade de expressão.”
675
+
676
+ 152
677
+ 00:07:54,238 --> 00:07:56,306
678
+ Agora, só para constar, não sou um robô,
679
+
680
+ 153
681
+ 00:07:56,907 --> 00:08:00,644
682
+ mas acho que isso exemplifica um pouco
683
+ da confusão em torno desse assunto,
684
+
685
+ 154
686
+ 00:08:00,644 --> 00:08:03,447
687
+ o que faz com que músicos como eu
688
+
689
+ 155
690
+ 00:08:03,447 --> 00:08:07,117
691
+ criem nossas próprias regras
692
+ de como usar a IA,
693
+
694
+ 156
695
+ 00:08:07,117 --> 00:08:08,719
696
+ o que é certo e o que é errado.
697
+
698
+ 157
699
+ 00:08:09,253 --> 00:08:11,488
700
+ Para mim, se resume a três coisas.
701
+
702
+ 158
703
+ 00:08:11,488 --> 00:08:13,357
704
+ A primeira é: é enganoso?
705
+
706
+ 159
707
+ 00:08:13,357 --> 00:08:15,592
708
+ Alguém poderia acreditar que é mesmo real?
709
+
710
+ 160
711
+ 00:08:17,194 --> 00:08:20,631
712
+ Em seguida, há uma intenção
713
+ artística por trás disso?
714
+
715
+ 161
716
+ 00:08:20,631 --> 00:08:24,568
717
+ Se você for uma dessas pessoas
718
+ que produz músicas de IA em massa,
719
+
720
+ 162
721
+ 00:08:24,568 --> 00:08:27,170
722
+ centenas de músicas,
723
+ e as envia para o Spotify,
724
+
725
+ 163
726
+ 00:08:27,571 --> 00:08:30,173
727
+ sua intenção não deve ser artística.
728
+
729
+ 164
730
+ 00:08:30,774 --> 00:08:33,977
731
+ Finalmente, como isso afeta os músicos?
732
+
733
+ 165
734
+ 00:08:34,745 --> 00:08:38,749
735
+ Muitas vezes, as “vítimas”
736
+ das músicas que eu crio
737
+
738
+ 166
739
+ 00:08:38,749 --> 00:08:42,085
740
+ acabam compartilhando
741
+ essas mesmas músicas nas mídias sociais.
742
+
743
+ 167
744
+ 00:08:42,085 --> 00:08:45,188
745
+ Por exemplo, eis um trecho do Snoop Dogg
746
+
747
+ 168
748
+ 00:08:45,188 --> 00:08:46,990
749
+ reagindo a uma compilação que eu fiz
750
+
751
+ 169
752
+ 00:08:46,990 --> 00:08:50,527
753
+ chamada “As necesidades básicas
754
+ são gim e suco”.
755
+
756
+ 170
757
+ 00:08:51,595 --> 00:08:54,565
758
+ ♪ Posso chutar uma coisinha para elas ♪
759
+
760
+ 171
761
+ 00:08:54,565 --> 00:08:57,334
762
+ ♪ E fazer algumas pontas
763
+ enquanto eu passo? ♪
764
+
765
+ 172
766
+ 00:08:57,334 --> 00:09:00,504
767
+ ♪ Duas da manhã, a festa continua animada,
768
+ mamãe não está em casa ♪
769
+
770
+ 173
771
+ 00:09:00,504 --> 00:09:03,040
772
+ ♪ Tenho vadias se divertindo
773
+ na sala de estar ♪
774
+
775
+ 174
776
+ 00:09:03,040 --> 00:09:06,009
777
+ ♪ E elas não vão embora
778
+ até as seis da manhã ♪
779
+
780
+ 175
781
+ 00:09:06,009 --> 00:09:07,077
782
+ ♪ O que quer fazer? ♪
783
+
784
+ 176
785
+ 00:09:07,077 --> 00:09:10,814
786
+ ♪ Tenho um bolso cheio de camisinhas,
787
+ e meus amigos também ♪
788
+
789
+ 177
790
+ 00:09:11,081 --> 00:09:16,053
791
+ (Risos e aplausos)
792
+
793
+ 178
794
+ 00:09:17,821 --> 00:09:22,292
795
+ Quando vejo pessoas como Snoop,
796
+ Ed Sheeran, Nicki Minaj
797
+
798
+ 179
799
+ 00:09:22,292 --> 00:09:24,461
800
+ e outros compartilhando essas coisas,
801
+
802
+ 180
803
+ 00:09:24,461 --> 00:09:28,131
804
+ espero que seja uma indicação
805
+ de que, do meu jeito estranho,
806
+
807
+ 181
808
+ 00:09:28,131 --> 00:09:29,866
809
+ estou usando essas tecnologias
810
+
811
+ 182
812
+ 00:09:29,866 --> 00:09:32,569
813
+ para contribuir
814
+ com algo novo para o mundo.
815
+
816
+ 183
817
+ 00:09:32,869 --> 00:09:35,105
818
+ Acho que, no final das contas,
819
+
820
+ 184
821
+ 00:09:35,105 --> 00:09:40,177
822
+ mesmo com todas as muitas desvantagens
823
+ da IA interferindo em nossa música,
824
+
825
+ 185
826
+ 00:09:40,177 --> 00:09:43,013
827
+ muitos artistas estão descobrindo
828
+ a mesma coisa que eu:
829
+
830
+ 186
831
+ 00:09:43,013 --> 00:09:47,551
832
+ há maneiras de usar a IA que podem
833
+ realmente aumentar a criatividade.
834
+
835
+ 187
836
+ 00:09:48,051 --> 00:09:53,790
837
+ Acho que poderíamos ver
838
+ músicas, sons e estilos novos
839
+
840
+ 188
841
+ 00:09:53,790 --> 00:09:56,159
842
+ que talvez nem possamos imaginar hoje,
843
+
844
+ 189
845
+ 00:09:56,159 --> 00:09:59,463
846
+ assim como teria sido difícil
847
+ para alguém como John Philip Sousa
848
+
849
+ 190
850
+ 00:09:59,463 --> 00:10:03,667
851
+ ter imaginado esta monstruosidade final
852
+ que vou tocar para vocês.
853
+
854
+ 191
855
+ 00:10:04,434 --> 00:10:08,405
856
+ É uma música que, quando minha esposa
857
+ ouviu pela primeira vez, ela disse:
858
+
859
+ 192
860
+ 00:10:08,805 --> 00:10:11,041
861
+ “Essa é a coisa mais estúpida que já vi.”
862
+
863
+ 193
864
+ 00:10:11,041 --> 00:10:12,476
865
+ (Risos)
866
+
867
+ 194
868
+ 00:10:12,843 --> 00:10:15,278
869
+ Essa vai para todos os fãs do Nickelback.
870
+
871
+ 195
872
+ 00:10:15,278 --> 00:10:16,380
873
+ (Risos)
874
+
875
+ 196
876
+ 00:10:16,380 --> 00:10:18,048
877
+ (Música)
878
+
879
+ 197
880
+ 00:10:18,048 --> 00:10:20,050
881
+ ♪ Veja esta fotografia ♪
882
+
883
+ 198
884
+ 00:10:20,817 --> 00:10:23,120
885
+ ♪ É uma foto de uma fotografia ♪
886
+
887
+ 199
888
+ 00:10:23,120 --> 00:10:24,121
889
+ (Risos)
890
+
891
+ 200
892
+ 00:10:24,121 --> 00:10:26,523
893
+ ♪ Há outra maldita fotografia ♪
894
+
895
+ 201
896
+ 00:10:27,290 --> 00:10:29,926
897
+ ♪ Porque fotografei a fotografia ♪
898
+
899
+ 202
900
+ 00:10:31,128 --> 00:10:33,363
901
+ ♪ Tantas fotografias ♪
902
+
903
+ 203
904
+ 00:10:33,997 --> 00:10:36,366
905
+ ♪ Fazem querer eu tirar uma fotografia ♪
906
+
907
+ 204
908
+ 00:10:37,300 --> 00:10:39,970
909
+ ♪ Eu deveria pendurar essa fotografia ♪
910
+
911
+ 205
912
+ 00:10:40,337 --> 00:10:43,106
913
+ ♪ Ao lado da minha foto
914
+ de uma fotografia ♪
915
+
916
+ 206
917
+ 00:10:43,607 --> 00:10:45,542
918
+ [Nickelback “O Fonógrafo”]
919
+
920
+ 207
921
+ 00:10:45,542 --> 00:10:47,844
922
+ ♪ Veja esse fonógrafo! ♪
923
+
924
+ 208
925
+ 00:10:48,211 --> 00:10:50,681
926
+ ♪ Toda vez que vejo, ele me faz rir! ♪
927
+
928
+ 209
929
+ 00:10:51,181 --> 00:10:53,750
930
+ ♪ Ouça os sons da dança ragtime! ♪
931
+
932
+ 210
933
+ 00:10:54,084 --> 00:10:56,687
934
+ ♪ Todas as garotas
935
+ querem transar comigo! ♪
936
+
937
+ 211
938
+ 00:10:59,056 --> 00:11:01,024
939
+ ♪ Mas voltando a aquela fotografia ♪
940
+
941
+ 212
942
+ 00:11:01,024 --> 00:11:02,092
943
+ (Risos)
944
+
945
+ 213
946
+ 00:11:02,092 --> 00:11:04,761
947
+ ♪ Ela me lembra da fotografia ♪
948
+
949
+ 214
950
+ 00:11:05,195 --> 00:11:07,731
951
+ ♪ Antes da foto daquela fotografia ♪
952
+
953
+ 215
954
+ 00:11:08,465 --> 00:11:11,201
955
+ ♪ Quando era apenas
956
+ uma fotografia normal ♪
957
+
958
+ 216
959
+ 00:11:12,436 --> 00:11:13,570
960
+ (Fim da música)
961
+
962
+ 217
963
+ 00:11:14,871 --> 00:11:16,206
964
+ Muito obrigado a todos.
965
+
966
+ 218
967
+ 00:11:16,206 --> 00:11:19,009
968
+ (Vivas e aplausos)
samples/edgeTTS - Portuguese - Is AI Ruining Music Dustin Ballard TED.mp3 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c2e92ed5005b812995b257eb240a2fee04bbc8f1810d10df6a3ba9859174e798
3
+ size 16296689
samples/edgeTTS - Portuguese - Is AI Ruining Music Dustin Ballard TED.srt ADDED
@@ -0,0 +1,968 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 1
2
+ 00:00:00,000 --> 00:00:07,000 align:start position:0% line:0%
3
+ Tradutor: Maurício Kakuei Tanaka
4
+
5
+ 2
6
+ 00:00:04,001 --> 00:00:07,505
7
+ Vou começar hoje
8
+ com uma história musical obscura.
9
+
10
+ 3
11
+ 00:00:07,671 --> 00:00:10,674
12
+ Se você é fã do David Bowie,
13
+ talvez já saiba,
14
+
15
+ 4
16
+ 00:00:10,674 --> 00:00:13,477
17
+ mas o refrão da música “Starman”
18
+
19
+ 5
20
+ 00:00:13,477 --> 00:00:17,381
21
+ foi, na verdade, tirado de uma música
22
+ de blues de 1937 de T-Bone Fletcher,
23
+
24
+ 6
25
+ 00:00:17,381 --> 00:00:19,050
26
+ da qual vou tocar um trecho.
27
+
28
+ 7
29
+ 00:00:20,851 --> 00:00:25,356
30
+ ♪ Há um homem das estrelas
31
+ esperando no céu ♪
32
+
33
+ 8
34
+ 00:00:27,691 --> 00:00:30,261
35
+ ♪ Ele gostaria de vir nos conhecer ♪
36
+
37
+ 9
38
+ 00:00:30,261 --> 00:00:33,297
39
+ ♪ Mas acha que nos surpreenderia ♪
40
+
41
+ 10
42
+ 00:00:35,266 --> 00:00:40,871
43
+ ♪ Há um homem das estrelas
44
+ esperando no céu ♪
45
+
46
+ 11
47
+ 00:00:40,871 --> 00:00:42,039
48
+ (Fim da música)
49
+
50
+ 12
51
+ 00:00:43,107 --> 00:00:45,109
52
+ Adoro o cover do Bowie,
53
+
54
+ 13
55
+ 00:00:45,109 --> 00:00:49,246
56
+ mas há algo sobre uma guitarra detonada
57
+
58
+ 14
59
+ 00:00:49,246 --> 00:00:52,483
60
+ e um velho cantando com muita intensidade,
61
+
62
+ 15
63
+ 00:00:52,483 --> 00:00:55,553
64
+ que, para mim, realmente capta
65
+ a emoção da música.
66
+
67
+ 16
68
+ 00:00:56,220 --> 00:01:00,424
69
+ Acho que o mais interessante
70
+ é que acabei de inventar toda a história.
71
+
72
+ 17
73
+ 00:01:00,424 --> 00:01:02,593
74
+ Na verdade, era 100% IA.
75
+
76
+ 18
77
+ 00:01:02,593 --> 00:01:03,727
78
+ (Risos)
79
+
80
+ 19
81
+ 00:01:04,762 --> 00:01:07,565
82
+ Peço desculpas por mentir,
83
+ mas há uma razão para isso.
84
+
85
+ 20
86
+ 00:01:08,165 --> 00:01:10,101
87
+ Eu gostaria de começar com uma pergunta.
88
+
89
+ 21
90
+ 00:01:10,101 --> 00:01:11,635
91
+ O que é música de verdade?
92
+
93
+ 22
94
+ 00:01:12,236 --> 00:01:16,040
95
+ Essa pergunta surgiu com sintetizadores,
96
+
97
+ 23
98
+ 00:01:16,040 --> 00:01:18,442
99
+ “sampling” e música hip-hop.
100
+
101
+ 24
102
+ 00:01:19,009 --> 00:01:22,746
103
+ Até com o fonógrafo, quando foi lançado
104
+ pela primeira vez nos anos 1800,
105
+
106
+ 25
107
+ 00:01:22,746 --> 00:01:24,482
108
+ as pessoas, na época, debatiam
109
+
110
+ 26
111
+ 00:01:24,482 --> 00:01:28,452
112
+ se a música reproduzida era real ou não.
113
+
114
+ 27
115
+ 00:01:29,353 --> 00:01:31,255
116
+ John Philip Sousa,
117
+
118
+ 28
119
+ 00:01:31,255 --> 00:01:34,191
120
+ a Taylor Swift de sua época,
121
+
122
+ 29
123
+ 00:01:34,191 --> 00:01:35,192
124
+ não era fã.
125
+
126
+ 30
127
+ 00:01:35,192 --> 00:01:37,795
128
+ Ele dizia que os fonógrafos
129
+ eram “um substituto
130
+
131
+ 31
132
+ 00:01:37,795 --> 00:01:40,898
133
+ para a habilidade, inteligência
134
+ e alma humanas”.
135
+
136
+ 32
137
+ 00:01:41,198 --> 00:01:45,536
138
+ “Eles reduzem a expressão da música
139
+ a um sistema matemático.”
140
+
141
+ 33
142
+ 00:01:46,604 --> 00:01:49,573
143
+ Quase parece que ele está falando
144
+ sobre a IA, não é mesmo?
145
+
146
+ 34
147
+ 00:01:50,708 --> 00:01:53,177
148
+ Então, a IA é música de verdade?
149
+
150
+ 35
151
+ 00:01:53,844 --> 00:01:56,647
152
+ Acredito que, quando está
153
+ nas mãos de músicos,
154
+
155
+ 36
156
+ 00:01:56,647 --> 00:01:57,648
157
+ pode ser.
158
+
159
+ 37
160
+ 00:01:57,648 --> 00:02:00,184
161
+ Mas primeiro, vou contextualizar
162
+ por que acho isso.
163
+
164
+ 38
165
+ 00:02:00,484 --> 00:02:04,588
166
+ Administro um canal de mídia social
167
+ de paródia de música
168
+
169
+ 39
170
+ 00:02:04,588 --> 00:02:06,423
171
+ chamado “There, I Ruined It”.
172
+
173
+ 40
174
+ 00:02:06,891 --> 00:02:08,425
175
+ É só um... obrigado.
176
+
177
+ 41
178
+ 00:02:09,360 --> 00:02:11,629
179
+ É só um estranho
180
+ passatempo noturno meu.
181
+
182
+ 42
183
+ 00:02:11,629 --> 00:02:14,398
184
+ Meu trabalho diário é
185
+ como diretor criativo de publicidade.
186
+
187
+ 43
188
+ 00:02:14,965 --> 00:02:17,635
189
+ Mas o objetivo do canal
190
+ é arruinar a música
191
+
192
+ 44
193
+ 00:02:17,635 --> 00:02:21,372
194
+ ou, como eu disse, destruir
195
+ carinhosamente suas músicas favoritas.
196
+
197
+ 45
198
+ 00:02:21,705 --> 00:02:24,708
199
+ A IA é uma das ferramentas
200
+ que costumo usar para fazer isso.
201
+
202
+ 46
203
+ 00:02:24,708 --> 00:02:30,848
204
+ Por exemplo, eis meu cover
205
+ da música “In Da Club”, do 50 Cent,
206
+
207
+ 47
208
+ 00:02:30,848 --> 00:02:36,020
209
+ interpretada por uma versão de IA
210
+ da lenda da música country Conway Twitty.
211
+
212
+ 48
213
+ 00:02:37,054 --> 00:02:38,422
214
+ (Música)
215
+
216
+ 49
217
+ 00:02:38,422 --> 00:02:40,624
218
+ ♪ Você pode me encontrar no clube ♪
219
+
220
+ 50
221
+ 00:02:40,891 --> 00:02:42,760
222
+ ♪ Uma garrafa cheia de cerveja ♪
223
+
224
+ 51
225
+ 00:02:43,227 --> 00:02:45,029
226
+ ♪ Estou a fim de fazer sexo ♪
227
+
228
+ 52
229
+ 00:02:45,029 --> 00:02:48,098
230
+ ♪ Não estou a fim de fazer amor ♪
231
+
232
+ 53
233
+ 00:02:48,899 --> 00:02:51,001
234
+ ♪ Então venha me dar um abraço ♪
235
+
236
+ 54
237
+ 00:02:51,001 --> 00:02:53,337
238
+ ♪ Se estiver a fim de se roçar ♪
239
+
240
+ 55
241
+ 00:02:53,337 --> 00:02:55,506
242
+ ♪ Vai, gatinha, é seu aniversário ♪
243
+
244
+ 56
245
+ 00:02:55,506 --> 00:02:57,841
246
+ ♪ Vamos festejar como se fosse
247
+ seu aniversário ♪
248
+
249
+ 57
250
+ 00:02:59,043 --> 00:03:00,844
251
+ ♪ Quando paro na frente ♪
252
+
253
+ 58
254
+ 00:03:00,844 --> 00:03:03,347
255
+ ♪ Você vê o carrão com rodas grandes ♪
256
+
257
+ 59
258
+ 00:03:04,048 --> 00:03:05,182
259
+ (Risos)
260
+
261
+ 60
262
+ 00:03:05,182 --> 00:03:06,383
263
+ Obrigado.
264
+
265
+ 61
266
+ 00:03:06,383 --> 00:03:07,851
267
+ (Aplausos)
268
+
269
+ 62
270
+ 00:03:07,851 --> 00:03:10,087
271
+ Como criei essa música?
272
+
273
+ 63
274
+ 00:03:10,254 --> 00:03:12,890
275
+ A banda que vocês ouviram
276
+ é, na verdade, uma banda real.
277
+
278
+ 64
279
+ 00:03:12,890 --> 00:03:14,892
280
+ Na realidade, sou eu tocando violino.
281
+
282
+ 65
283
+ 00:03:15,226 --> 00:03:19,163
284
+ Há apenas uma etapa extra no processo
285
+ em que executei meus vocais,
286
+
287
+ 66
288
+ 00:03:19,163 --> 00:03:21,398
289
+ minha personificação de Conway Twitty,
290
+
291
+ 67
292
+ 00:03:21,398 --> 00:03:25,202
293
+ por meio de um modelo personalizado
294
+ de voz de IA treinado sobre a voz dele.
295
+
296
+ 68
297
+ 00:03:25,536 --> 00:03:30,040
298
+ Para dar outro exemplo,
299
+ com uma espiadinha por trás da cortina,
300
+
301
+ 69
302
+ 00:03:30,040 --> 00:03:32,943
303
+ no próximo trecho,
304
+ vocês vão ouvir minha voz real
305
+
306
+ 70
307
+ 00:03:32,943 --> 00:03:35,346
308
+ seguida pela versão pós-IA,
309
+
310
+ 71
311
+ 00:03:35,346 --> 00:03:37,381
312
+ de uma música que chamo
313
+
314
+ 72
315
+ 00:03:37,381 --> 00:03:40,351
316
+ de “Os Red Hot Chili Peppers
317
+ fazem uma lista de supermercado”.
318
+
319
+ 73
320
+ 00:03:41,852 --> 00:03:44,488
321
+ (Música: Red Hot Chilli Peppers,
322
+ “Can’t Stop”)
323
+
324
+ 74
325
+ 00:03:44,488 --> 00:03:47,057
326
+ [Meus vocais] ♪ Quinoa, bananas, ravióli ♪
327
+
328
+ 75
329
+ 00:03:47,057 --> 00:03:49,426
330
+ ♪ Atum enlatado, picles, macarrão ♪
331
+
332
+ 76
333
+ 00:03:49,793 --> 00:03:52,329
334
+ [Anthony Kiedis (IA)]
335
+ ♪ Quinoa, bananas, ravióli ♪
336
+
337
+ 77
338
+ 00:03:52,329 --> 00:03:54,698
339
+ ♪ Atum enlatado, picles, macarrão ♪
340
+
341
+ 78
342
+ 00:03:54,698 --> 00:03:55,899
343
+ (Fim da música)
344
+
345
+ 79
346
+ 00:03:56,367 --> 00:03:59,837
347
+ A música de blues do David Bowie
348
+ que toquei para vocês no início
349
+
350
+ 80
351
+ 00:03:59,970 --> 00:04:02,906
352
+ foi mesmo criada de uma forma
353
+ totalmente diferente.
354
+
355
+ 81
356
+ 00:04:02,906 --> 00:04:06,243
357
+ Aquilo foi 100% IA
358
+ a partir de uma instrução de texto,
359
+
360
+ 82
361
+ 00:04:07,077 --> 00:04:10,014
362
+ o que, para mim,
363
+ é um pouco mais desconcertante.
364
+
365
+ 83
366
+ 00:04:10,014 --> 00:04:12,516
367
+ Na realidade, ao criar essa música
368
+ pela primeira vez,
369
+
370
+ 84
371
+ 00:04:12,516 --> 00:04:15,919
372
+ ela mexeu um pouco comigo
373
+ porque adoro músicas antigas,
374
+
375
+ 85
376
+ 00:04:15,919 --> 00:04:18,422
377
+ toco músicas daquela época,
378
+
379
+ 86
380
+ 00:04:18,422 --> 00:04:23,227
381
+ e ouvir a dor na voz daquele homem,
382
+
383
+ 87
384
+ 00:04:23,227 --> 00:04:25,029
385
+ que nunca existiu...
386
+
387
+ 88
388
+ 00:04:25,029 --> 00:04:27,798
389
+ algo a respeito disso
390
+ parecia um pouco errado para mim.
391
+
392
+ 89
393
+ 00:04:28,132 --> 00:04:30,200
394
+ Por isso, menti para vocês logo de início.
395
+
396
+ 90
397
+ 00:04:30,200 --> 00:04:32,703
398
+ Suspeito que alguns
399
+ possam ter gostado dessa música
400
+
401
+ 91
402
+ 00:04:32,703 --> 00:04:36,206
403
+ até o momento em que descobriram
404
+ que se tratava de IA.
405
+
406
+ 92
407
+ 00:04:36,206 --> 00:04:37,808
408
+ Para mim, isso implicaria
409
+
410
+ 93
411
+ 00:04:37,808 --> 00:04:41,378
412
+ que talvez a música seja mais
413
+ do que a música.
414
+
415
+ 94
416
+ 00:04:41,812 --> 00:04:45,683
417
+ Será que a música é melodia,
418
+ ritmo e acordes?
419
+
420
+ 95
421
+ 00:04:45,683 --> 00:04:47,551
422
+ Ou será que a música é expressão?
423
+
424
+ 96
425
+ 00:04:49,520 --> 00:04:51,322
426
+ Isso sempre importa para os ouvintes?
427
+
428
+ 97
429
+ 00:04:51,322 --> 00:04:53,457
430
+ Se eu ouvir uma música que adoro no rádio,
431
+
432
+ 98
433
+ 00:04:53,457 --> 00:04:57,294
434
+ será que vou parar tudo
435
+ e pesquisar como ela foi criada?
436
+
437
+ 99
438
+ 00:04:57,761 --> 00:04:58,896
439
+ Talvez não.
440
+
441
+ 100
442
+ 00:04:59,730 --> 00:05:02,599
443
+ Fica ainda mais confuso
444
+ quando analisamos as várias maneiras
445
+
446
+ 101
447
+ 00:05:02,599 --> 00:05:04,635
448
+ que a IA pode ser usada
449
+ para criar música.
450
+
451
+ 102
452
+ 00:05:04,635 --> 00:05:05,636
453
+ Então, por exemplo,
454
+
455
+ 103
456
+ 00:05:05,836 --> 00:05:08,906
457
+ e se eu usasse a IA para ajudar
458
+ com algumas letras de músicas?
459
+
460
+ 104
461
+ 00:05:09,139 --> 00:05:12,776
462
+ Isso é muito diferente de, digamos,
463
+ um dicionário de rimas?
464
+
465
+ 105
466
+ 00:05:13,644 --> 00:05:18,282
467
+ E se eu usasse a IA para criar um novo som
468
+ de instrumento que nunca existiu?
469
+
470
+ 106
471
+ 00:05:18,615 --> 00:05:20,784
472
+ Isso é muito diferente de um sintetizador?
473
+
474
+ 107
475
+ 00:05:22,219 --> 00:05:26,623
476
+ E se eu treinasse um modelo de IA
477
+ em toda a minha obra,
478
+
479
+ 108
480
+ 00:05:26,623 --> 00:05:30,227
481
+ e ele criasse uma música nova
482
+ no meu estilo?
483
+
484
+ 109
485
+ 00:05:30,661 --> 00:05:33,130
486
+ Seria algo em que eu colocaria meu nome?
487
+
488
+ 110
489
+ 00:05:34,598 --> 00:05:37,468
490
+ Ou se eu quisesse usar vozes diferentes,
491
+
492
+ 111
493
+ 00:05:37,468 --> 00:05:40,204
494
+ como um guitarrista
495
+ pode usar guitarras diferentes?
496
+
497
+ 112
498
+ 00:05:40,904 --> 00:05:43,874
499
+ Ou será que só estou preso
500
+ à voz com a qual eu nasci?
501
+
502
+ 113
503
+ 00:05:44,441 --> 00:05:48,846
504
+ Tenho um colega de trabalho
505
+ com uma ótima voz de barítono,
506
+
507
+ 114
508
+ 00:05:48,846 --> 00:05:51,248
509
+ e ele se divertiu muito um dia
510
+
511
+ 115
512
+ 00:05:51,248 --> 00:05:53,851
513
+ quando lhe perguntei
514
+ se eu poderia comprar sua voz
515
+
516
+ 116
517
+ 00:05:53,851 --> 00:05:56,019
518
+ para uma música
519
+ na qual eu estava trabalhando.
520
+
521
+ 117
522
+ 00:05:56,186 --> 00:05:57,388
523
+ Vou tocar um trecho dela.
524
+
525
+ 118
526
+ 00:05:57,388 --> 00:06:00,557
527
+ É o meu canto pela voz
528
+ de meu colega de trabalho.
529
+
530
+ 119
531
+ 00:06:00,991 --> 00:06:03,494
532
+ A música é “Baby Got Back”,
533
+
534
+ 120
535
+ 00:06:04,194 --> 00:06:07,331
536
+ mas com a melodia de “Hallelujah”
537
+ de Leonard Cohen.
538
+
539
+ 121
540
+ 00:06:07,331 --> 00:06:08,332
541
+ (Risos)
542
+
543
+ 122
544
+ 00:06:09,266 --> 00:06:11,668
545
+ (Música)
546
+
547
+ 123
548
+ 00:06:15,906 --> 00:06:19,343
549
+ ♪ Gosto de bundas grandes,
550
+ não posso mentir ♪
551
+
552
+ 124
553
+ 00:06:19,343 --> 00:06:22,613
554
+ ♪ Vocês, irmãos, não podem negar ♪
555
+
556
+ 125
557
+ 00:06:22,913 --> 00:06:26,150
558
+ ♪ Quando uma coisa redonda
559
+ está na sua cara ♪
560
+
561
+ 126
562
+ 00:06:26,150 --> 00:06:27,718
563
+ ♪ Você fica apaixonado! ♪
564
+
565
+ 127
566
+ 00:06:27,718 --> 00:06:29,286
567
+ (Risos)
568
+
569
+ 128
570
+ 00:06:29,987 --> 00:06:33,290
571
+ ♪ Quando uma garota entra,
572
+ você chega confiante ♪
573
+
574
+ 129
575
+ 00:06:33,624 --> 00:06:37,127
576
+ ♪ Porque você notou
577
+ que a bunda dela era inflada ♪
578
+
579
+ 130
580
+ 00:06:37,127 --> 00:06:40,497
581
+ ♪ Meus amigos tentaram me avisar ♪
582
+
583
+ 131
584
+ 00:06:40,497 --> 00:06:42,332
585
+ ♪ Estou excitado! ♪
586
+
587
+ 132
588
+ 00:06:42,332 --> 00:06:44,701
589
+ (Risos)
590
+
591
+ 133
592
+ 00:06:44,701 --> 00:06:48,305
593
+ (Aplausos)
594
+
595
+ 134
596
+ 00:06:51,141 --> 00:06:54,878
597
+ Gostei de olhar para os rostos
598
+ desta estimada plateia
599
+
600
+ 135
601
+ 00:06:54,878 --> 00:06:56,246
602
+ enquanto a música tocava.
603
+
604
+ 136
605
+ 00:06:56,246 --> 00:06:57,815
606
+ (Risos)
607
+
608
+ 137
609
+ 00:06:58,215 --> 00:06:59,383
610
+ Vou dar mais um exemplo.
611
+
612
+ 138
613
+ 00:06:59,383 --> 00:07:00,651
614
+ No próximo trecho,
615
+
616
+ 139
617
+ 00:07:00,651 --> 00:07:03,821
618
+ vocês vão ouvir uma melodia
619
+ que inventei em meu violino.
620
+
621
+ 140
622
+ 00:07:04,087 --> 00:07:08,025
623
+ Depois pedi à IA que a transformasse
624
+ em uma trilha sonora dramática de filme.
625
+
626
+ 141
627
+ 00:07:09,493 --> 00:07:14,131
628
+ (Violino real)
629
+
630
+ 142
631
+ 00:07:14,131 --> 00:07:19,837
632
+ (Violino dramático com IA)
633
+
634
+ 143
635
+ 00:07:21,839 --> 00:07:23,006
636
+ (Fim da música)
637
+
638
+ 144
639
+ 00:07:23,974 --> 00:07:27,911
640
+ Tudo isso é para dizer que há milhões
641
+ de maneiras de usar a IA.
642
+
643
+ 145
644
+ 00:07:27,911 --> 00:07:31,715
645
+ O termo “música de IA”
646
+ realmente não esclarece nada.
647
+
648
+ 146
649
+ 00:07:32,182 --> 00:07:35,919
650
+ Na realidade, até nossos legisladores
651
+ parecem não entender isso.
652
+
653
+ 147
654
+ 00:07:35,919 --> 00:07:40,023
655
+ Houve uma audiência recente
656
+ no Congresso dos EUA sobre música de IA,
657
+
658
+ 148
659
+ 00:07:40,023 --> 00:07:41,925
660
+ na qual eles tocaram minha compilação
661
+
662
+ 149
663
+ 00:07:41,925 --> 00:07:46,330
664
+ de Johnny Cash de IA
665
+ cantando a música “Barbie Girl”,
666
+
667
+ 150
668
+ 00:07:46,330 --> 00:07:49,299
669
+ à qual o deputado Matt Gaetz respondeu:
670
+
671
+ 151
672
+ 00:07:49,666 --> 00:07:52,803
673
+ “Os robôs não devem estar sujeitos
674
+ à liberdade de expressão.”
675
+
676
+ 152
677
+ 00:07:54,238 --> 00:07:56,306
678
+ Agora, só para constar, não sou um robô,
679
+
680
+ 153
681
+ 00:07:56,907 --> 00:08:00,644
682
+ mas acho que isso exemplifica um pouco
683
+ da confusão em torno desse assunto,
684
+
685
+ 154
686
+ 00:08:00,644 --> 00:08:03,447
687
+ o que faz com que músicos como eu
688
+
689
+ 155
690
+ 00:08:03,447 --> 00:08:07,117
691
+ criem nossas próprias regras
692
+ de como usar a IA,
693
+
694
+ 156
695
+ 00:08:07,117 --> 00:08:08,719
696
+ o que é certo e o que é errado.
697
+
698
+ 157
699
+ 00:08:09,253 --> 00:08:11,488
700
+ Para mim, se resume a três coisas.
701
+
702
+ 158
703
+ 00:08:11,488 --> 00:08:13,357
704
+ A primeira é: é enganoso?
705
+
706
+ 159
707
+ 00:08:13,357 --> 00:08:15,592
708
+ Alguém poderia acreditar que é mesmo real?
709
+
710
+ 160
711
+ 00:08:17,194 --> 00:08:20,631
712
+ Em seguida, há uma intenção
713
+ artística por trás disso?
714
+
715
+ 161
716
+ 00:08:20,631 --> 00:08:24,568
717
+ Se você for uma dessas pessoas
718
+ que produz músicas de IA em massa,
719
+
720
+ 162
721
+ 00:08:24,568 --> 00:08:27,170
722
+ centenas de músicas,
723
+ e as envia para o Spotify,
724
+
725
+ 163
726
+ 00:08:27,571 --> 00:08:30,173
727
+ sua intenção não deve ser artística.
728
+
729
+ 164
730
+ 00:08:30,774 --> 00:08:33,977
731
+ Finalmente, como isso afeta os músicos?
732
+
733
+ 165
734
+ 00:08:34,745 --> 00:08:38,749
735
+ Muitas vezes, as “vítimas”
736
+ das músicas que eu crio
737
+
738
+ 166
739
+ 00:08:38,749 --> 00:08:42,085
740
+ acabam compartilhando
741
+ essas mesmas músicas nas mídias sociais.
742
+
743
+ 167
744
+ 00:08:42,085 --> 00:08:45,188
745
+ Por exemplo, eis um trecho do Snoop Dogg
746
+
747
+ 168
748
+ 00:08:45,188 --> 00:08:46,990
749
+ reagindo a uma compilação que eu fiz
750
+
751
+ 169
752
+ 00:08:46,990 --> 00:08:50,527
753
+ chamada “As necesidades básicas
754
+ são gim e suco”.
755
+
756
+ 170
757
+ 00:08:51,595 --> 00:08:54,565
758
+ ♪ Posso chutar uma coisinha para elas ♪
759
+
760
+ 171
761
+ 00:08:54,565 --> 00:08:57,334
762
+ ♪ E fazer algumas pontas
763
+ enquanto eu passo? ♪
764
+
765
+ 172
766
+ 00:08:57,334 --> 00:09:00,504
767
+ ♪ Duas da manhã, a festa continua animada,
768
+ mamãe não está em casa ♪
769
+
770
+ 173
771
+ 00:09:00,504 --> 00:09:03,040
772
+ ♪ Tenho vadias se divertindo
773
+ na sala de estar ♪
774
+
775
+ 174
776
+ 00:09:03,040 --> 00:09:06,009
777
+ ♪ E elas não vão embora
778
+ até as seis da manhã ♪
779
+
780
+ 175
781
+ 00:09:06,009 --> 00:09:07,077
782
+ ♪ O que quer fazer? ♪
783
+
784
+ 176
785
+ 00:09:07,077 --> 00:09:10,814
786
+ ♪ Tenho um bolso cheio de camisinhas,
787
+ e meus amigos também ♪
788
+
789
+ 177
790
+ 00:09:11,081 --> 00:09:16,053
791
+ (Risos e aplausos)
792
+
793
+ 178
794
+ 00:09:17,821 --> 00:09:22,292
795
+ Quando vejo pessoas como Snoop,
796
+ Ed Sheeran, Nicki Minaj
797
+
798
+ 179
799
+ 00:09:22,292 --> 00:09:24,461
800
+ e outros compartilhando essas coisas,
801
+
802
+ 180
803
+ 00:09:24,461 --> 00:09:28,131
804
+ espero que seja uma indicação
805
+ de que, do meu jeito estranho,
806
+
807
+ 181
808
+ 00:09:28,131 --> 00:09:29,866
809
+ estou usando essas tecnologias
810
+
811
+ 182
812
+ 00:09:29,866 --> 00:09:32,569
813
+ para contribuir
814
+ com algo novo para o mundo.
815
+
816
+ 183
817
+ 00:09:32,869 --> 00:09:35,105
818
+ Acho que, no final das contas,
819
+
820
+ 184
821
+ 00:09:35,105 --> 00:09:40,177
822
+ mesmo com todas as muitas desvantagens
823
+ da IA interferindo em nossa música,
824
+
825
+ 185
826
+ 00:09:40,177 --> 00:09:43,013
827
+ muitos artistas estão descobrindo
828
+ a mesma coisa que eu:
829
+
830
+ 186
831
+ 00:09:43,013 --> 00:09:47,551
832
+ há maneiras de usar a IA que podem
833
+ realmente aumentar a criatividade.
834
+
835
+ 187
836
+ 00:09:48,051 --> 00:09:53,790
837
+ Acho que poderíamos ver
838
+ músicas, sons e estilos novos
839
+
840
+ 188
841
+ 00:09:53,790 --> 00:09:56,159
842
+ que talvez nem possamos imaginar hoje,
843
+
844
+ 189
845
+ 00:09:56,159 --> 00:09:59,463
846
+ assim como teria sido difícil
847
+ para alguém como John Philip Sousa
848
+
849
+ 190
850
+ 00:09:59,463 --> 00:10:03,667
851
+ ter imaginado esta monstruosidade final
852
+ que vou tocar para vocês.
853
+
854
+ 191
855
+ 00:10:04,434 --> 00:10:08,405
856
+ É uma música que, quando minha esposa
857
+ ouviu pela primeira vez, ela disse:
858
+
859
+ 192
860
+ 00:10:08,805 --> 00:10:11,041
861
+ “Essa é a coisa mais estúpida que já vi.”
862
+
863
+ 193
864
+ 00:10:11,041 --> 00:10:12,476
865
+ (Risos)
866
+
867
+ 194
868
+ 00:10:12,843 --> 00:10:15,278
869
+ Essa vai para todos os fãs do Nickelback.
870
+
871
+ 195
872
+ 00:10:15,278 --> 00:10:16,380
873
+ (Risos)
874
+
875
+ 196
876
+ 00:10:16,380 --> 00:10:18,048
877
+ (Música)
878
+
879
+ 197
880
+ 00:10:18,048 --> 00:10:20,050
881
+ ♪ Veja esta fotografia ♪
882
+
883
+ 198
884
+ 00:10:20,817 --> 00:10:23,120
885
+ ♪ É uma foto de uma fotografia ♪
886
+
887
+ 199
888
+ 00:10:23,120 --> 00:10:24,121
889
+ (Risos)
890
+
891
+ 200
892
+ 00:10:24,121 --> 00:10:26,523
893
+ ♪ Há outra maldita fotografia ♪
894
+
895
+ 201
896
+ 00:10:27,290 --> 00:10:29,926
897
+ ♪ Porque fotografei a fotografia ♪
898
+
899
+ 202
900
+ 00:10:31,128 --> 00:10:33,363
901
+ ♪ Tantas fotografias ♪
902
+
903
+ 203
904
+ 00:10:33,997 --> 00:10:36,366
905
+ ♪ Fazem querer eu tirar uma fotografia ♪
906
+
907
+ 204
908
+ 00:10:37,300 --> 00:10:39,970
909
+ ♪ Eu deveria pendurar essa fotografia ♪
910
+
911
+ 205
912
+ 00:10:40,337 --> 00:10:43,106
913
+ ♪ Ao lado da minha foto
914
+ de uma fotografia ♪
915
+
916
+ 206
917
+ 00:10:43,607 --> 00:10:45,542
918
+ [Nickelback “O Fonógrafo”]
919
+
920
+ 207
921
+ 00:10:45,542 --> 00:10:47,844
922
+ ♪ Veja esse fonógrafo! ♪
923
+
924
+ 208
925
+ 00:10:48,211 --> 00:10:50,681
926
+ ♪ Toda vez que vejo, ele me faz rir! ♪
927
+
928
+ 209
929
+ 00:10:51,181 --> 00:10:53,750
930
+ ♪ Ouça os sons da dança ragtime! ♪
931
+
932
+ 210
933
+ 00:10:54,084 --> 00:10:56,687
934
+ ♪ Todas as garotas
935
+ querem transar comigo! ♪
936
+
937
+ 211
938
+ 00:10:59,056 --> 00:11:01,024
939
+ ♪ Mas voltando a aquela fotografia ♪
940
+
941
+ 212
942
+ 00:11:01,024 --> 00:11:02,092
943
+ (Risos)
944
+
945
+ 213
946
+ 00:11:02,092 --> 00:11:04,761
947
+ ♪ Ela me lembra da fotografia ♪
948
+
949
+ 214
950
+ 00:11:05,195 --> 00:11:07,731
951
+ ♪ Antes da foto daquela fotografia ♪
952
+
953
+ 215
954
+ 00:11:08,465 --> 00:11:11,201
955
+ ♪ Quando era apenas
956
+ uma fotografia normal ♪
957
+
958
+ 216
959
+ 00:11:12,436 --> 00:11:13,570
960
+ (Fim da música)
961
+
962
+ 217
963
+ 00:11:14,871 --> 00:11:16,206
964
+ Muito obrigado a todos.
965
+
966
+ 218
967
+ 00:11:16,206 --> 00:11:19,009
968
+ (Vivas e aplausos)
samples/metadata.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "TiktokTTS - Portuguese - Is AI Ruining Music Dustin Ballard TED": {
3
+ "provider": "Edge-TTS",
4
+ "language": "Portuguese",
5
+ "voice": "pt-BR-AntonioNeural"
6
+ },
7
+ "edgeTTS - Portuguese - Is AI Ruining Music Dustin Ballard TED": {
8
+ "provider": "TikTok",
9
+ "category": "Português (Brasil)",
10
+ "voice": "BR_MALE"
11
+ }
12
+ }
tiktokTTS.py CHANGED
@@ -1,147 +1,146 @@
1
- # tiktokTTS.py
2
-
3
- import os
4
- import sys
5
- from pathlib import Path
6
- import gradio as gr
7
- import asyncio
8
- import pysrt
9
- from tqdm import tqdm
10
- import shutil
11
- import requests
12
-
13
- # Importa funções utilitárias
14
- from utils import remove_silence, timetoms, merge_audio_files, adjust_audio_speed
15
-
16
- # --- Configuração e Imports da Biblioteca TikTok ---
17
- try:
18
- sys.path.append(str(Path(__file__).parent / "TikTok_TTS"))
19
- from TikTok_TTS.tiktok_voice import Voice, tts
20
- TIKTOK_TTS_AVAILABLE = True
21
- print("Biblioteca TikTok TTS carregada com sucesso.")
22
- except ImportError:
23
- TIKTOK_TTS_AVAILABLE = False
24
- print("Aviso: Biblioteca TikTok TTS não encontrada. A funcionalidade estará desabilitada.")
25
- class Voice: pass
26
- def tts(*args, **kwargs): pass
27
-
28
- # --- DICIONÁRIO DE VOZES CATEGORIZADAS ---
29
- TIKTOK_VOICES_CATEGORIZED = {
30
- 'Português (Brasil)': [
31
- 'BR_FEMALE_1', 'BR_FEMALE_2', 'BR_FEMALE_3', 'BR_MALE',
32
- 'BP_FEMALE_IVETE', 'BP_FEMALE_LUDMILLA', 'PT_FEMALE_LHAYS', 'PT_FEMALE_LAIZZA', 'PT_MALE_BUENO'
33
- ],
34
- 'Inglês (EUA)': [
35
- 'US_FEMALE_1', 'US_FEMALE_2', 'US_MALE_1', 'US_MALE_2', 'US_MALE_3', 'US_MALE_4'
36
- ],
37
- 'Inglês (Reino Unido)': ['UK_MALE_1', 'UK_MALE_2'],
38
- 'Inglês (Austrália)': ['AU_FEMALE_1', 'AU_MALE_1'],
39
- 'Inglês (Personagens Especiais)': [
40
- 'MALE_JOMBOY', 'MALE_CODY', 'FEMALE_SAMC', 'FEMALE_MAKEUP', 'FEMALE_RICHGIRL',
41
- 'MALE_ASHMAGIC', 'MALE_OLANTERKKERS', 'MALE_UKNEIGHBOR', 'MALE_UKBUTLER',
42
- 'FEMALE_SHENNA', 'FEMALE_PANSINO', 'MALE_TREVOR', 'FEMALE_BETTY', 'MALE_CUPID',
43
- 'FEMALE_GRANDMA', 'MALE_NARRATION', 'MALE_FUNNY', 'FEMALE_EMOTIONAL'
44
- ],
45
- 'Inglês Personagens (Filmes e Outros)': [
46
- 'GHOSTFACE', 'CHEWBACCA', 'C3PO', 'STITCH', 'STORMTROOPER', 'ROCKET',
47
- 'MADAME_LEOTA', 'GHOST_HOST', 'PIRATE', 'MALE_GRINCH', 'MALE_DEADPOOL', 'MALE_JARVIS'
48
- ],
49
- 'Inglês Personagens (Festivos)': [
50
- 'MALE_XMXS_CHRISTMAS', 'MALE_SANTA_NARRATION', 'MALE_SANTA_EFFECT',
51
- 'FEMALE_HT_NEYEAR', 'MALE_WIZARD', 'FEMALE_HT_HALLOWEEN'
52
- ],
53
- 'Inglês Cantores / Músicas': [
54
- 'MALE_SING_DEEP_JINGLE', 'SING_FEMALE_ALTO', 'SING_MALE_TENOR', 'SING_FEMALE_WARMY_BREEZE',
55
- 'SING_MALE_SUNSHINE_SOON', 'SING_FEMALE_GLORIOUS', 'SING_MALE_IT_GOES_UP',
56
- 'SING_MALE_CHIPMUNK', 'SING_FEMALE_WONDERFUL_WORLD', 'SING_MALE_FUNNY_THANKSGIVING'
57
- ],
58
- 'Japonês': [
59
- 'JP_FEMALE_1', 'JP_FEMALE_2', 'JP_FEMALE_3', 'JP_MALE', 'JP_FEMALE_FUJICOCHAN',
60
- 'JP_FEMALE_HASEGAWARIONA', 'JP_MALE_KEIICHINAKANO', 'JP_FEMALE_OOMAEAIIKA',
61
- 'JP_MALE_YUJINCHIGUSA', 'JP_FEMALE_SHIROU', 'JP_MALE_TAMAWAKAZUKI',
62
- 'JP_FEMALE_KAORISHOJI', 'JP_FEMALE_YAGISHAKI', 'JP_MALE_HIKAKIN', 'JP_FEMALE_REI',
63
- 'JP_MALE_SHUICHIRO', 'JP_MALE_MATSUDAKE', 'JP_FEMALE_MACHIKORIIITA',
64
- 'JP_MALE_MATSUO', 'JP_MALE_OSADA'
65
- ],
66
- 'Coreano': ['KR_MALE_1', 'KR_FEMALE', 'KR_MALE_2'],
67
- 'Espanhol': ['ES_MALE', 'ES_MX_MALE'],
68
- 'Francês': ['FR_MALE_1', 'FR_MALE_2'],
69
- 'Alemão': ['DE_FEMALE', 'DE_MALE'],
70
- 'Indonésio': ['ID_FEMALE']
71
- }
72
-
73
- def get_tiktok_voice_options(language):
74
- return TIKTOK_VOICES_CATEGORIZED.get(language, [])
75
-
76
- # --- Função Controladora de Texto/Arquivo ---
77
- def controlador_generate_audio_tiktok(voice_str, text, text_file, cut_silence):
78
- if not TIKTOK_TTS_AVAILABLE:
79
- raise gr.Error("A biblioteca TikTok TTS não está instalada ou configurada corretamente.")
80
- if not text and text_file is None:
81
- raise gr.Error("Por favor, forneça um texto ou um arquivo .txt para gerar o áudio.")
82
-
83
- output_dir = "output"; os.makedirs(output_dir, exist_ok=True)
84
- output_file = os.path.join(output_dir, "tiktok_audio.mp3")
85
- input_text = text if text else Path(text_file.name).read_text(encoding='utf-8')
86
-
87
- try:
88
- print(f"Gerando áudio com a voz TikTok: {voice_str}...")
89
- tts(input_text, Voice[voice_str], output_file)
90
- print("Áudio TikTok gerado com sucesso!")
91
- if cut_silence:
92
- print("Removendo silêncio do áudio TikTok..."); remove_silence(output_file, output_file); print("Silêncio removido.")
93
- return output_file
94
-
95
- except requests.exceptions.RequestException as e:
96
- print(f"!!! TIKTOK TTS NETWORK ERROR DETECTED: {e}")
97
- raise gr.Error(TIKTOK_CONNECTION_ERROR_MSG)
98
- except KeyError:
99
- raise gr.Error(f"A voz '{voice_str}' não foi encontrada.")
100
- except Exception as e:
101
- print(f"!!! TIKTOK TTS UNEXPECTED ERROR: {type(e).__name__} - {e}")
102
- raise gr.Error(f"Ocorreu um erro inesperado no TikTok TTS, se tiver usando GRADIO, mude pra Google Colab: {e}")
103
-
104
- # --- NOVA LÓGICA DE PROCESSAMENTO DE SRT PARA TIKTOK ---
105
-
106
- async def process_srt_file_tiktok(srt_file_path, voice_str, output_dir_str, srt_temp_deleta):
107
- """Função principal assíncrona para processar SRT com TikTok TTS."""
108
- subs = pysrt.open(srt_file_path)
109
- output_dir = Path(output_dir_str)
110
- output_dir.mkdir(parents=True, exist_ok=True)
111
-
112
- with tqdm(total=len(subs), desc="Gerando e ajustando áudios com TikTok", unit="segmento") as pbar:
113
- for sub in subs:
114
- temp_file = output_dir / f"{sub.index:02d}_temp.mp3"
115
- output_file = output_dir / f"{sub.index:02d}.mp3"
116
- target_duration_ms = timetoms(sub.end) - timetoms(sub.start)
117
-
118
- if not output_file.exists() or output_file.stat().st_size == 0:
119
- # Roda a função síncrona 'tts' em uma thread separada para não bloquear o asyncio
120
- await asyncio.to_thread(tts, sub.text, Voice[voice_str], str(temp_file))
121
-
122
- if temp_file.exists():
123
- await adjust_audio_speed(str(temp_file), str(output_file), target_duration_ms)
124
- os.remove(temp_file)
125
- pbar.update(1)
126
-
127
- final_audio = await merge_audio_files(output_dir, srt_file_path)
128
-
129
- if srt_temp_deleta:
130
- shutil.rmtree(output_dir, ignore_errors=True)
131
- print(f"Pasta temporária {output_dir} apagada.")
132
-
133
- return final_audio
134
-
135
- def controlador_process_srt_file_tiktok(srt_file, voice_str, srt_temp_deleta):
136
- if not srt_file: return None
137
- output_dir = "output/srt_temp"
138
-
139
- try:
140
- return asyncio.run(process_srt_file_tiktok(srt_file.name, voice_str, output_dir, srt_temp_deleta))
141
-
142
- except requests.exceptions.RequestException as e:
143
- print(f"!!! TIKTOK TTS NETWORK ERROR (SRT): {e}")
144
- raise gr.Error(TIKTOK_CONNECTION_ERROR_MSG)
145
- except Exception as e:
146
- print(f"!!! TIKTOK TTS UNEXPECTED ERROR (SRT): {e}")
147
  raise gr.Error(f"Ocorreu um erro inesperado no TikTok TTS, se tiver usando GRADIO, mude pra Google Colab: {e}")
 
1
+ # tiktokTTS.py
2
+
3
+ import os
4
+ import sys
5
+ from pathlib import Path
6
+ import gradio as gr
7
+ import asyncio
8
+ import pysrt
9
+ from tqdm import tqdm
10
+ import shutil
11
+
12
+ # Importa funções utilitárias
13
+ from utils import remove_silence, timetoms, merge_audio_files, adjust_audio_speed
14
+
15
+ # --- Configuração e Imports da Biblioteca TikTok ---
16
+ try:
17
+ sys.path.append(str(Path(__file__).parent / "TikTok_TTS"))
18
+ from TikTok_TTS.tiktok_voice import Voice, tts
19
+ TIKTOK_TTS_AVAILABLE = True
20
+ print("Biblioteca TikTok TTS carregada com sucesso.")
21
+ except ImportError:
22
+ TIKTOK_TTS_AVAILABLE = False
23
+ print("Aviso: Biblioteca TikTok TTS não encontrada. A funcionalidade estará desabilitada.")
24
+ class Voice: pass
25
+ def tts(*args, **kwargs): pass
26
+
27
+ # --- DICIONÁRIO DE VOZES CATEGORIZADAS ---
28
+ TIKTOK_VOICES_CATEGORIZED = {
29
+ 'Português (Brasil)': [
30
+ 'BR_FEMALE_1', 'BR_FEMALE_2', 'BR_FEMALE_3', 'BR_MALE',
31
+ 'BP_FEMALE_IVETE', 'BP_FEMALE_LUDMILLA', 'PT_FEMALE_LHAYS', 'PT_FEMALE_LAIZZA', 'PT_MALE_BUENO'
32
+ ],
33
+ 'Inglês (EUA)': [
34
+ 'US_FEMALE_1', 'US_FEMALE_2', 'US_MALE_1', 'US_MALE_2', 'US_MALE_3', 'US_MALE_4'
35
+ ],
36
+ 'Inglês (Reino Unido)': ['UK_MALE_1', 'UK_MALE_2'],
37
+ 'Inglês (Austrália)': ['AU_FEMALE_1', 'AU_MALE_1'],
38
+ 'Inglês (Personagens Especiais)': [
39
+ 'MALE_JOMBOY', 'MALE_CODY', 'FEMALE_SAMC', 'FEMALE_MAKEUP', 'FEMALE_RICHGIRL',
40
+ 'MALE_ASHMAGIC', 'MALE_OLANTERKKERS', 'MALE_UKNEIGHBOR', 'MALE_UKBUTLER',
41
+ 'FEMALE_SHENNA', 'FEMALE_PANSINO', 'MALE_TREVOR', 'FEMALE_BETTY', 'MALE_CUPID',
42
+ 'FEMALE_GRANDMA', 'MALE_NARRATION', 'MALE_FUNNY', 'FEMALE_EMOTIONAL'
43
+ ],
44
+ 'Inglês Personagens (Filmes e Outros)': [
45
+ 'GHOSTFACE', 'CHEWBACCA', 'C3PO', 'STITCH', 'STORMTROOPER', 'ROCKET',
46
+ 'MADAME_LEOTA', 'GHOST_HOST', 'PIRATE', 'MALE_GRINCH', 'MALE_DEADPOOL', 'MALE_JARVIS'
47
+ ],
48
+ 'Inglês Personagens (Festivos)': [
49
+ 'MALE_XMXS_CHRISTMAS', 'MALE_SANTA_NARRATION', 'MALE_SANTA_EFFECT',
50
+ 'FEMALE_HT_NEYEAR', 'MALE_WIZARD', 'FEMALE_HT_HALLOWEEN'
51
+ ],
52
+ 'Inglês Cantores / Músicas': [
53
+ 'MALE_SING_DEEP_JINGLE', 'SING_FEMALE_ALTO', 'SING_MALE_TENOR', 'SING_FEMALE_WARMY_BREEZE',
54
+ 'SING_MALE_SUNSHINE_SOON', 'SING_FEMALE_GLORIOUS', 'SING_MALE_IT_GOES_UP',
55
+ 'SING_MALE_CHIPMUNK', 'SING_FEMALE_WONDERFUL_WORLD', 'SING_MALE_FUNNY_THANKSGIVING'
56
+ ],
57
+ 'Japonês': [
58
+ 'JP_FEMALE_1', 'JP_FEMALE_2', 'JP_FEMALE_3', 'JP_MALE', 'JP_FEMALE_FUJICOCHAN',
59
+ 'JP_FEMALE_HASEGAWARIONA', 'JP_MALE_KEIICHINAKANO', 'JP_FEMALE_OOMAEAIIKA',
60
+ 'JP_MALE_YUJINCHIGUSA', 'JP_FEMALE_SHIROU', 'JP_MALE_TAMAWAKAZUKI',
61
+ 'JP_FEMALE_KAORISHOJI', 'JP_FEMALE_YAGISHAKI', 'JP_MALE_HIKAKIN', 'JP_FEMALE_REI',
62
+ 'JP_MALE_SHUICHIRO', 'JP_MALE_MATSUDAKE', 'JP_FEMALE_MACHIKORIIITA',
63
+ 'JP_MALE_MATSUO', 'JP_MALE_OSADA'
64
+ ],
65
+ 'Coreano': ['KR_MALE_1', 'KR_FEMALE', 'KR_MALE_2'],
66
+ 'Espanhol': ['ES_MALE', 'ES_MX_MALE'],
67
+ 'Francês': ['FR_MALE_1', 'FR_MALE_2'],
68
+ 'Alemão': ['DE_FEMALE', 'DE_MALE'],
69
+ 'Indonésio': ['ID_FEMALE']
70
+ }
71
+
72
+ def get_tiktok_voice_options(language):
73
+ return TIKTOK_VOICES_CATEGORIZED.get(language, [])
74
+
75
+ # --- Função Controladora de Texto/Arquivo ---
76
+ def controlador_generate_audio_tiktok(voice_str, text, text_file, cut_silence):
77
+ if not TIKTOK_TTS_AVAILABLE:
78
+ raise gr.Error("A biblioteca TikTok TTS não está instalada ou configurada corretamente.")
79
+ if not text and text_file is None:
80
+ raise gr.Error("Por favor, forneça um texto ou um arquivo .txt para gerar o áudio.")
81
+
82
+ output_dir = "output"; os.makedirs(output_dir, exist_ok=True)
83
+ output_file = os.path.join(output_dir, "tiktok_audio.mp3")
84
+ input_text = text if text else Path(text_file.name).read_text(encoding='utf-8')
85
+
86
+ try:
87
+ print(f"Gerando áudio com a voz TikTok: {voice_str}...")
88
+ tts(input_text, Voice[voice_str], output_file)
89
+ print("Áudio TikTok gerado com sucesso!")
90
+ if cut_silence:
91
+ print("Removendo silêncio do áudio TikTok..."); remove_silence(output_file, output_file); print("Silêncio removido.")
92
+ return output_file
93
+
94
+ except requests.exceptions.RequestException as e:
95
+ print(f"!!! TIKTOK TTS NETWORK ERROR DETECTED: {e}")
96
+ raise gr.Error(TIKTOK_CONNECTION_ERROR_MSG)
97
+ except KeyError:
98
+ raise gr.Error(f"A voz '{voice_str}' não foi encontrada.")
99
+ except Exception as e:
100
+ print(f"!!! TIKTOK TTS UNEXPECTED ERROR: {type(e).__name__} - {e}")
101
+ raise gr.Error(f"Ocorreu um erro inesperado no TikTok TTS, se tiver usando GRADIO, mude pra Google Colab: {e}")
102
+
103
+ # --- NOVA LÓGICA DE PROCESSAMENTO DE SRT PARA TIKTOK ---
104
+
105
+ async def process_srt_file_tiktok(srt_file_path, voice_str, output_dir_str, srt_temp_deleta, progress=None):
106
+ """Função principal assíncrona para processar SRT com TikTok TTS."""
107
+ subs = pysrt.open(srt_file_path)
108
+ output_dir = Path(output_dir_str)
109
+ output_dir.mkdir(parents=True, exist_ok=True)
110
+
111
+ with tqdm(total=len(subs), desc="Gerando e ajustando áudios com TikTok", unit="segmento") as pbar:
112
+ for sub in subs:
113
+ temp_file = output_dir / f"{sub.index:02d}_temp.mp3"
114
+ output_file = output_dir / f"{sub.index:02d}.mp3"
115
+ target_duration_ms = timetoms(sub.end) - timetoms(sub.start)
116
+
117
+ if not output_file.exists() or output_file.stat().st_size == 0:
118
+ # Roda a função síncrona 'tts' em uma thread separada para não bloquear o asyncio
119
+ await asyncio.to_thread(tts, sub.text, Voice[voice_str], str(temp_file))
120
+
121
+ if temp_file.exists():
122
+ await adjust_audio_speed(str(temp_file), str(output_file), target_duration_ms)
123
+ os.remove(temp_file)
124
+ pbar.update(1)
125
+
126
+ final_audio = await merge_audio_files(output_dir, srt_file_path)
127
+
128
+ if srt_temp_deleta:
129
+ shutil.rmtree(output_dir, ignore_errors=True)
130
+ print(f"Pasta temporária {output_dir} apagada.")
131
+
132
+ return final_audio
133
+
134
+ def controlador_process_srt_file_tiktok(srt_file, voice_str, srt_temp_deleta, progress=None):
135
+ if not srt_file: return None
136
+ output_dir = "output/srt_temp"
137
+
138
+ try:
139
+ return asyncio.run(process_srt_file_tiktok(srt_file.name, voice_str, output_dir, srt_temp_deleta, progress=progress))
140
+
141
+ except requests.exceptions.RequestException as e:
142
+ print(f"!!! TIKTOK TTS NETWORK ERROR (SRT): {e}")
143
+ raise gr.Error(TIKTOK_CONNECTION_ERROR_MSG)
144
+ except Exception as e:
145
+ print(f"!!! TIKTOK TTS UNEXPECTED ERROR (SRT): {e}")
 
146
  raise gr.Error(f"Ocorreu um erro inesperado no TikTok TTS, se tiver usando GRADIO, mude pra Google Colab: {e}")