0qwpifs commited on
Commit
7ffc2fd
·
verified ·
1 Parent(s): 5b70cb2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -6
app.py CHANGED
@@ -1,6 +1,7 @@
1
  import gradio as gr
2
  import torchaudio
3
  import soundfile as sf
 
4
  from demucs.apply import apply_model
5
  import numpy as np
6
  import subprocess
@@ -14,17 +15,20 @@ def process(voice_file_path, song_file_path):
14
  if sr != 44100:
15
  raise ValueError("Частота дискретизации должна быть 44100 Гц")
16
 
 
 
 
17
  # Применение модели для разделения
18
- tracks = apply_model('htdemucs', mixture, device='cpu')
19
 
20
  # Извлечение вокала и музыкального трека
21
- vocal_track = tracks['vocals'].numpy()
22
- music_track = (tracks['drums'] + tracks['bass'] + tracks['other']).numpy()
23
 
24
  # Сохранение музыкального трека
25
  if num_channels == 1:
26
  music_track = music_track[0] # Преобразование в моно
27
- sf.write('music_track.wav', music_track, sr)
28
 
29
  # Подготовка вокала для SEED-VC: преобразование в моно, если стерео
30
  if vocal_track.shape[0] == 2:
@@ -37,7 +41,13 @@ def process(voice_file_path, song_file_path):
37
  source_path = 'vocal_track_mono.wav'
38
 
39
  # Запуск SEED-VC для конверсии голоса
40
- subprocess.run(['python', 'seed-vc/inference.py', '--source', source_path, '--target', voice_file_path, '--output', 'converted_vocal', '--checkpoint', 'seed-uvit-whisper-base'])
 
 
 
 
 
 
41
 
42
  # Загрузка преобразованного вокала (моно)
43
  converted_vocal, sr_vocal = sf.read('converted_vocal/output.wav')
@@ -56,13 +66,14 @@ def process(voice_file_path, song_file_path):
56
  music_track_loaded, _ = sf.read('music_track.wav')
57
 
58
  # Объединение вокала и музыки
59
- final_song = converted_vocal_stereo + music_track_loaded
60
 
61
  # Сохранение финальной песни
62
  sf.write('final_song.wav', final_song, sr)
63
 
64
  return 'final_song.wav'
65
 
 
66
  with gr.Blocks() as demo:
67
  voice_input = gr.File(label="Загрузите запись вашего голоса")
68
  song_input = gr.File(label="Загрузите песню для модификации")
 
1
  import gradio as gr
2
  import torchaudio
3
  import soundfile as sf
4
+ from demucs.pretrained import get_model
5
  from demucs.apply import apply_model
6
  import numpy as np
7
  import subprocess
 
15
  if sr != 44100:
16
  raise ValueError("Частота дискретизации должна быть 44100 Гц")
17
 
18
+ # Загрузка модели Demucs
19
+ model = get_model('htdemucs')
20
+
21
  # Применение модели для разделения
22
+ tracks = apply_model(model, mixture, device='cpu')
23
 
24
  # Извлечение вокала и музыкального трека
25
+ vocal_track = tracks[2].numpy() # вокал обычно третий по порядку в htdemucs
26
+ music_track = (tracks[0] + tracks[1] + tracks[3]).numpy() # drums + bass + other
27
 
28
  # Сохранение музыкального трека
29
  if num_channels == 1:
30
  music_track = music_track[0] # Преобразование в моно
31
+ sf.write('music_track.wav', music_track.T, sr)
32
 
33
  # Подготовка вокала для SEED-VC: преобразование в моно, если стерео
34
  if vocal_track.shape[0] == 2:
 
41
  source_path = 'vocal_track_mono.wav'
42
 
43
  # Запуск SEED-VC для конверсии голоса
44
+ subprocess.run([
45
+ 'python', 'seed-vc/inference.py',
46
+ '--source', source_path,
47
+ '--target', voice_file_path,
48
+ '--output', 'converted_vocal',
49
+ '--checkpoint', 'seed-uvit-whisper-base'
50
+ ])
51
 
52
  # Загрузка преобразованного вокала (моно)
53
  converted_vocal, sr_vocal = sf.read('converted_vocal/output.wav')
 
66
  music_track_loaded, _ = sf.read('music_track.wav')
67
 
68
  # Объединение вокала и музыки
69
+ final_song = converted_vocal_stereo.T + music_track_loaded
70
 
71
  # Сохранение финальной песни
72
  sf.write('final_song.wav', final_song, sr)
73
 
74
  return 'final_song.wav'
75
 
76
+ # Создание интерфейса Gradio
77
  with gr.Blocks() as demo:
78
  voice_input = gr.File(label="Загрузите запись вашего голоса")
79
  song_input = gr.File(label="Загрузите песню для модификации")