Synthetics commited on
Commit
417bff0
·
1 Parent(s): a210a37

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -25
app.py CHANGED
@@ -1,7 +1,13 @@
1
  import gradio as gr
2
  from pydub import AudioSegment
3
- from pyo import Server, Sig, Phasor, Sine, Mixer
4
-
 
 
 
 
 
 
5
  def processar_audio(trilha, faixa2, volume_trilha, tonalidade_narracao):
6
  trilha = AudioSegment.from_file(trilha.name)
7
  faixa2 = AudioSegment.from_file(faixa2.name)
@@ -15,36 +21,35 @@ def processar_audio(trilha, faixa2, volume_trilha, tonalidade_narracao):
15
  # Ajustar o volume da trilha
16
  trilha_com_volume = trilha + volume_trilha
17
 
18
- # Inicializar o servidor Pyo
19
- server = Server().boot()
20
-
21
- # Converter faixa2 para PyoObject
22
- faixa2_pyo = server.readBuffer(faixa2.raw_data, chnls=1)
23
 
24
- # Criar um oscilador para ajustar a tonalidade da narração
25
- pitch_factor = 2 ** (tonalidade_narracao / 1200.0)
26
- pitch_control = Sig(pitch_factor)
27
- pitch_control.ctrl(title="Pitch Shift")
 
 
 
28
 
29
- phasor = Phasor(freq=pitch_control, mul=faixa2_pyo.getRate())
 
30
 
31
- # Usar um oscilador senoidal para modular a fase e, assim, ajustar a tonalidade
32
- modulator = Sine(freq=3, mul=0.5)
33
- phasor.mulAdd(modulator, 0.5)
34
 
35
- # Aplicar pitch shift
36
- pitch_shifted = faixa2_pyo.pitchShift(phasor)
37
-
38
- # Ajustar o tamanho para a duração total
39
- pitch_shifted = pitch_shifted * (len(trilha_com_volume) / pitch_shifted.getDur())
40
 
41
  # Sobrepor as duas faixas
42
- trilha_mesclada = trilha_com_volume.overlay(pitch_shifted.to_audio_segment(), position=0)
43
 
44
  # Determinar o ponto de corte (após o final da trilha)
45
  ponto_de_corte = len(trilha_com_volume)
46
 
47
- print(f'Duração total: {ponto_de_corte}')
48
 
49
  # Cortar a trilha após o ponto de corte
50
  trilha_cortada = trilha_mesclada[:ponto_de_corte]
@@ -56,9 +61,6 @@ def processar_audio(trilha, faixa2, volume_trilha, tonalidade_narracao):
56
  # Adicionar reprodução do áudio no Gradio
57
  resultado_audio = gr.Audio(resultado_path)
58
 
59
- # Desligar o servidor Pyo
60
- server.stop()
61
-
62
  return resultado_audio
63
 
64
  iface = gr.Interface(
 
1
  import gradio as gr
2
  from pydub import AudioSegment
3
+ import numpy as np
4
+ import subprocess
5
+ import pydub
6
+ except ImportError:
7
+ subprocess.run(['pip', 'install', 'pydub'])
8
+ import numpy
9
+ except ImportError:
10
+ subprocess.run(['pip', 'install', 'numpy'])
11
  def processar_audio(trilha, faixa2, volume_trilha, tonalidade_narracao):
12
  trilha = AudioSegment.from_file(trilha.name)
13
  faixa2 = AudioSegment.from_file(faixa2.name)
 
21
  # Ajustar o volume da trilha
22
  trilha_com_volume = trilha + volume_trilha
23
 
24
+ # Ajustar a tonalidade da faixa de narração
25
+ rate = 2 ** (tonalidade_narracao / 1200.0)
26
+ faixa2_array = np.array(faixa2.get_array_of_samples())
27
+ faixa2_array_pitch_shifted = faixa2_array * rate
 
28
 
29
+ # Criar um novo segmento de áudio a partir do array pitch shift
30
+ faixa2 = AudioSegment(
31
+ faixa2_array_pitch_shifted.tobytes(),
32
+ frame_rate=faixa2.frame_rate,
33
+ sample_width=faixa2.sample_width,
34
+ channels=faixa2.channels
35
+ )
36
 
37
+ # Obter a duração total das faixas
38
+ duracao_total = max(len(trilha_com_volume), len(faixa2))
39
 
40
+ print(f'Duração total: {duracao_total}')
 
 
41
 
42
+ # Ajustar o tamanho das faixas para a duração total
43
+ trilha_com_volume = trilha_com_volume[:duracao_total]
44
+ faixa2 = faixa2[:duracao_total]
 
 
45
 
46
  # Sobrepor as duas faixas
47
+ trilha_mesclada = trilha_com_volume.overlay(faixa2, position=0)
48
 
49
  # Determinar o ponto de corte (após o final da trilha)
50
  ponto_de_corte = len(trilha_com_volume)
51
 
52
+ print(f'Ponto de corte: {ponto_de_corte}')
53
 
54
  # Cortar a trilha após o ponto de corte
55
  trilha_cortada = trilha_mesclada[:ponto_de_corte]
 
61
  # Adicionar reprodução do áudio no Gradio
62
  resultado_audio = gr.Audio(resultado_path)
63
 
 
 
 
64
  return resultado_audio
65
 
66
  iface = gr.Interface(