Hev832 commited on
Commit
057b246
·
verified ·
1 Parent(s): 3b67f5f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +73 -0
app.py CHANGED
@@ -13,6 +13,20 @@ from lib.infer import infer_audio
13
  import edge_tts
14
  import tempfile
15
  import anyio
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
 
17
 
18
  language_dict = {
@@ -363,6 +377,60 @@ async def text_to_speech_edge(text, language_code):
363
 
364
 
365
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
366
  # Gradio Blocks Interface with Tabs
367
  with gr.Blocks(title="Hex RVC") as app:
368
  gr.Markdown("# Hex RVC")
@@ -419,6 +487,11 @@ with gr.Blocks(title="Hex RVC") as app:
419
  outputs=output_audio
420
  )
421
 
 
 
 
 
 
422
  with gr.Tab("Audio Separation"):
423
  with gr.Row():
424
  input_audio = gr.Audio(source="upload", type="filepath", label="Upload Audio File")
 
13
  import edge_tts
14
  import tempfile
15
  import anyio
16
+ from pathlib import Path
17
+ import os
18
+ import zipfile
19
+ import shutil
20
+ import urllib.request
21
+ import gdown
22
+ import subprocess
23
+
24
+ main_dir = Path().resolve()
25
+ print(main_dir)
26
+
27
+ os.chdir(main_dir)
28
+ models_dir = "models"
29
+
30
 
31
 
32
  language_dict = {
 
377
 
378
 
379
 
380
+
381
+ def extract_zip(extraction_folder, zip_name):
382
+ os.makedirs(extraction_folder)
383
+ with zipfile.ZipFile(zip_name, 'r') as zip_ref:
384
+ zip_ref.extractall(extraction_folder)
385
+ os.remove(zip_name)
386
+
387
+ index_filepath, model_filepath = None, None
388
+ for root, dirs, files in os.walk(extraction_folder):
389
+ for name in files:
390
+ if name.endswith('.index') and os.stat(os.path.join(root, name)).st_size > 1024 * 100:
391
+ index_filepath = os.path.join(root, name)
392
+
393
+ if name.endswith('.pth') and os.stat(os.path.join(root, name)).st_size > 1024 * 1024 * 40:
394
+ model_filepath = os.path.join(root, name)
395
+
396
+ if not model_filepath:
397
+ raise Exception(f'No .pth model file was found in the extracted zip. Please check {extraction_folder}.')
398
+
399
+ # move model and index file to extraction folder
400
+ os.rename(model_filepath, os.path.join(extraction_folder, os.path.basename(model_filepath)))
401
+ if index_filepath:
402
+ os.rename(index_filepath, os.path.join(extraction_folder, os.path.basename(index_filepath)))
403
+
404
+ # remove any unnecessary nested folders
405
+ for filepath in os.listdir(extraction_folder):
406
+ if os.path.isdir(os.path.join(extraction_folder, filepath)):
407
+ shutil.rmtree(os.path.join(extraction_folder, filepath))
408
+
409
+ def download_online_model(url, dir_name):
410
+ try:
411
+ print(f'[~] Downloading voice model with name {dir_name}...')
412
+ zip_name = url.split('/')[-1]
413
+ extraction_folder = os.path.join(models_dir, dir_name)
414
+ if os.path.exists(extraction_folder):
415
+ raise Exception(f'Voice model directory {dir_name} already exists! Choose a different name for your voice model.')
416
+
417
+ if 'pixeldrain.com' in url:
418
+ url = f'https://pixeldrain.com/api/file/{zip_name}'
419
+ if 'drive.google.com' in url:
420
+ zip_name = dir_name + ".zip"
421
+ gdown.download(url, output=zip_name, use_cookies=True, quiet=True, fuzzy=True)
422
+ else:
423
+ urllib.request.urlretrieve(url, zip_name)
424
+
425
+ print(f'[~] Extracting zip file...')
426
+ extract_zip(extraction_folder, zip_name)
427
+ print(f'[+] {dir_name} Model successfully downloaded!')
428
+
429
+ except Exception as e:
430
+ raise Exception(str(e))
431
+
432
+
433
+
434
  # Gradio Blocks Interface with Tabs
435
  with gr.Blocks(title="Hex RVC") as app:
436
  gr.Markdown("# Hex RVC")
 
487
  outputs=output_audio
488
  )
489
 
490
+ with gr.Tqb("Download RVC Model"):
491
+ url = gr.Textbox(label="Your model URL")
492
+ dirname = gr.Textbox(label="Your Model name")
493
+ button_model = gr.Button("Download model")
494
+ button_model.click(fn=download_online_model, inputs=url, dirname, output=dirname)
495
  with gr.Tab("Audio Separation"):
496
  with gr.Row():
497
  input_audio = gr.Audio(source="upload", type="filepath", label="Upload Audio File")