pengdaqian commited on
Commit
3f4fdab
·
1 Parent(s): f679ac2
Files changed (1) hide show
  1. app.py +22 -21
app.py CHANGED
@@ -14,6 +14,7 @@ from audio2numpy import open_audio
14
  from spleeter.separator import Separator
15
  from spleeter.audio.adapter import AudioAdapter
16
  from pydub import AudioSegment
 
17
 
18
  import logging
19
 
@@ -168,19 +169,29 @@ def svc_change(argswave, argsspk):
168
  return out_audio
169
 
170
 
 
 
 
 
 
 
 
 
171
  def svc_main(sid, input_audio):
172
  if input_audio is None:
173
  return "You need to upload an audio", None
174
  sampling_rate, audio = input_audio
 
175
  #
176
- prediction = separator.separate(audio)
177
- vocals, accompaniment = prediction["vocals"], prediction["accompaniment"]
 
 
 
 
 
178
 
179
- # 歌词和伴奏是否有问题
180
- # audio_loader.save('vocals_111.wav', vocals, sampling_rate)
181
- # audio_loader.save('accompaniment_111.wav', accompaniment, sampling_rate)
182
- soundfile.write('vocals_111.wav', vocals, sampling_rate, format="wav")
183
- soundfile.write('accompaniment_111.wav', accompaniment, sampling_rate, format="wav")
184
 
185
  vocals = (vocals / np.iinfo(vocals.dtype).max).astype(np.float32)
186
  if len(vocals.shape) > 1:
@@ -193,21 +204,11 @@ def svc_main(sid, input_audio):
193
  soundfile.write(wav_path, vocals, 16000, format="wav")
194
 
195
  out_vocals = svc_change(wav_path, f"configs/singers/singer00{sid}.npy")
 
 
196
 
197
- soundfile.write('out_vocals_111.wav', out_vocals, 48000, format="wav")
198
-
199
- sound1 = AudioSegment.from_file(
200
- out_vocals[:, 0].tobytes(),
201
- frame_rate=sampling_rate,
202
- sample_width=out_vocals[:, 0].dtype.itemsize,
203
- channels=1
204
- )
205
- sound2 = AudioSegment(
206
- accompaniment[:, 0].tobytes(),
207
- frame_rate=sampling_rate,
208
- sample_width=accompaniment[:, 0].dtype.itemsize,
209
- channels=1
210
- )
211
 
212
  played_togther = sound1.overlay(sound2)
213
 
 
14
  from spleeter.separator import Separator
15
  from spleeter.audio.adapter import AudioAdapter
16
  from pydub import AudioSegment
17
+ import scipy.io.wavfile
18
 
19
  import logging
20
 
 
169
  return out_audio
170
 
171
 
172
+ def np_to_audio_segment(fp_arr):
173
+ wav_io = io.BytesIO()
174
+ scipy.io.wavfile.write(wav_io, 16000, fp_arr)
175
+ wav_io.seek(0)
176
+ sound = AudioSegment.from_wav(wav_io)
177
+ return sound
178
+
179
+
180
  def svc_main(sid, input_audio):
181
  if input_audio is None:
182
  return "You need to upload an audio", None
183
  sampling_rate, audio = input_audio
184
+ input_audio_tmp_file = 'origin.wav'
185
  #
186
+ # prediction = separator.separate(audio)
187
+ # vocals, accompaniment = prediction["vocals"], prediction["accompaniment"]
188
+ soundfile.write(input_audio_tmp_file, audio, sampling_rate, format="wav")
189
+ separator.separate_to_file(input_audio_tmp_file, '')
190
+
191
+ vocals_filepath = os.path.join(os.path.splitext(input_audio_tmp_file)[0], 'vocals.wav')
192
+ accompaniment_filepath = os.path.join(os.path.splitext(input_audio_tmp_file)[0], 'accompaniment.wav')
193
 
194
+ vocals, sampling_rate = soundfile.read(vocals_filepath)
 
 
 
 
195
 
196
  vocals = (vocals / np.iinfo(vocals.dtype).max).astype(np.float32)
197
  if len(vocals.shape) > 1:
 
204
  soundfile.write(wav_path, vocals, 16000, format="wav")
205
 
206
  out_vocals = svc_change(wav_path, f"configs/singers/singer00{sid}.npy")
207
+ out_vocals_filepath = os.path.join(os.path.splitext(input_audio_tmp_file)[0], 'out_vocals.wav')
208
+ soundfile.write(out_vocals_filepath, out_vocals, 48000, format="wav")
209
 
210
+ sound1 = AudioSegment.from_file(out_vocals_filepath)
211
+ sound2 = AudioSegment.from_file(accompaniment_filepath)
 
 
 
 
 
 
 
 
 
 
 
 
212
 
213
  played_togther = sound1.overlay(sound2)
214