kevinwang676 commited on
Commit
650decf
1 Parent(s): ceb86b8

Update app_multi.py

Browse files
Files changed (1) hide show
  1. app_multi.py +83 -7
app_multi.py CHANGED
@@ -3,6 +3,8 @@ from typing import Union
3
  from argparse import ArgumentParser
4
  from pathlib import Path
5
  import subprocess
 
 
6
 
7
  import asyncio
8
  import json
@@ -29,6 +31,8 @@ from vc_infer_pipeline import VC
29
  # Reference: https://huggingface.co/spaces/zomehwh/rvc-models/blob/main/app.py#L21 # noqa
30
  in_hf_space = getenv('SYSTEM') == 'spaces'
31
 
 
 
32
  # Argument parsing
33
  arg_parser = ArgumentParser()
34
  arg_parser.add_argument(
@@ -169,6 +173,72 @@ def youtube_downloader(
169
  else:
170
  return None
171
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  # https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/infer-web.py#L118 # noqa
173
  def vc_func(
174
  input_audio, model_index, pitch_adjust, f0_method, feat_ratio,
@@ -340,17 +410,23 @@ with app:
340
  'A lot of inspiration from what\'s already out there, including [zomehwh/rvc-models](https://huggingface.co/spaces/zomehwh/rvc-models) & [DJQmUKV/rvc-inference](https://huggingface.co/spaces/DJQmUKV/rvc-inference).\n ' # thx noqa
341
  )
342
 
343
- with gr.Tab("YouTube Video to Audio"):
344
  with gr.Row():
345
  with gr.Column():
346
- ydl_url_input = gr.Textbox(label="Enter URL YouTube")
347
- start = gr.Number(value=0, label="Start Time (seconds)")
348
- end = gr.Number(value=15, label="End Time (seconds)")
349
- ydl_url_submit = gr.Button("Convert Now", variant="primary")
 
350
  with gr.Column():
351
- ydl_audio_output = gr.Audio(label="Audio from YouTube")
352
-
 
 
 
 
353
  ydl_url_submit.click(fn=youtube_downloader, inputs=[ydl_url_input, start, end], outputs=[ydl_audio_output])
 
354
 
355
  with gr.Row():
356
  with gr.Column():
 
3
  from argparse import ArgumentParser
4
  from pathlib import Path
5
  import subprocess
6
+ import librosa
7
+ import os
8
 
9
  import asyncio
10
  import json
 
31
  # Reference: https://huggingface.co/spaces/zomehwh/rvc-models/blob/main/app.py#L21 # noqa
32
  in_hf_space = getenv('SYSTEM') == 'spaces'
33
 
34
+ high_quality = True
35
+
36
  # Argument parsing
37
  arg_parser = ArgumentParser()
38
  arg_parser.add_argument(
 
173
  else:
174
  return None
175
 
176
+ def audio_separated(audio_input, progress=gr.Progress()):
177
+ # start progress
178
+ progress(progress=0, desc="Starting...")
179
+ time.sleep(0.1)
180
+
181
+ # check file input
182
+ if audio_input is None:
183
+ # show progress
184
+ for i in progress.tqdm(range(100), desc="Please wait..."):
185
+ time.sleep(0.01)
186
+
187
+ return (None, None, 'Please input audio.')
188
+
189
+ # create filename
190
+ filename = str(random.randint(10000,99999))+datetime.now().strftime("%d%m%Y%H%M%S")
191
+
192
+ # progress
193
+ progress(progress=0.10, desc="Please wait...")
194
+
195
+ # make dir output
196
+ os.makedirs("output", exist_ok=True)
197
+
198
+ # progress
199
+ progress(progress=0.20, desc="Please wait...")
200
+
201
+ # write
202
+ if high_quality:
203
+ write(filename+".wav", audio_input[0], audio_input[1])
204
+ else:
205
+ write(filename+".mp3", audio_input[0], audio_input[1])
206
+
207
+ # progress
208
+ progress(progress=0.50, desc="Please wait...")
209
+
210
+ # demucs process
211
+ if high_quality:
212
+ command_demucs = "python3 -m demucs --two-stems=vocals -d cpu "+filename+".wav -o output"
213
+ else:
214
+ command_demucs = "python3 -m demucs --two-stems=vocals --mp3 --mp3-bitrate 128 -d cpu "+filename+".mp3 -o output"
215
+
216
+ os.system(command_demucs)
217
+
218
+ # progress
219
+ progress(progress=0.70, desc="Please wait...")
220
+
221
+ # remove file audio
222
+ if high_quality:
223
+ command_delete = "rm -v ./"+filename+".wav"
224
+ else:
225
+ command_delete = "rm -v ./"+filename+".mp3"
226
+
227
+ os.system(command_delete)
228
+
229
+ # progress
230
+ progress(progress=0.80, desc="Please wait...")
231
+
232
+ # progress
233
+ for i in progress.tqdm(range(80,100), desc="Please wait..."):
234
+ time.sleep(0.1)
235
+
236
+ if high_quality:
237
+ return "./output/htdemucs/"+filename+"/vocals.wav","./output/htdemucs/"+filename+"/no_vocals.wav","Successfully..."
238
+ else:
239
+ return "./output/htdemucs/"+filename+"/vocals.mp3","./output/htdemucs/"+filename+"/no_vocals.mp3","Successfully..."
240
+
241
+
242
  # https://github.com/fumiama/Retrieval-based-Voice-Conversion-WebUI/blob/main/infer-web.py#L118 # noqa
243
  def vc_func(
244
  input_audio, model_index, pitch_adjust, f0_method, feat_ratio,
 
410
  'A lot of inspiration from what\'s already out there, including [zomehwh/rvc-models](https://huggingface.co/spaces/zomehwh/rvc-models) & [DJQmUKV/rvc-inference](https://huggingface.co/spaces/DJQmUKV/rvc-inference).\n ' # thx noqa
411
  )
412
 
413
+ with gr.Tab("🤗 - B站视频提取声音"):
414
  with gr.Row():
415
  with gr.Column():
416
+ ydl_url_input = gr.Textbox(label="B站视频网址(请填写相应的BV号)", value = "https://www.bilibili.com/video/BV...")
417
+ start = gr.Number(value=0, label="起始时间 ()")
418
+ end = gr.Number(value=15, label="结束时间 ()")
419
+ ydl_url_submit = gr.Button("提取声音文件吧", variant="primary")
420
+ as_audio_submit = gr.Button("去除背景音吧", variant="primary")
421
  with gr.Column():
422
+ ydl_audio_output = gr.Audio(label="Audio from Bilibili")
423
+ as_audio_input = ydl_audio_output
424
+ as_audio_vocals = gr.Audio(label="Vocal only")
425
+ as_audio_no_vocals = gr.Audio(label="Music only", type="filepath")
426
+ as_audio_message = gr.Textbox(label="Message", visible=False)
427
+
428
  ydl_url_submit.click(fn=youtube_downloader, inputs=[ydl_url_input, start, end], outputs=[ydl_audio_output])
429
+ as_audio_submit.click(fn=audio_separated, inputs=[as_audio_input], outputs=[as_audio_vocals, as_audio_no_vocals, as_audio_message], show_progress=True, queue=True)
430
 
431
  with gr.Row():
432
  with gr.Column():