smjain commited on
Commit
d4a4126
1 Parent(s): 2dcaf1e

Upload infertest.py

Browse files
Files changed (1) hide show
  1. infertest.py +41 -18
infertest.py CHANGED
@@ -26,6 +26,7 @@ tmp = os.path.join(now_dir, "TEMP")
26
  shutil.rmtree(tmp, ignore_errors=True)
27
  os.makedirs(tmp, exist_ok=True)
28
  os.environ["TEMP"] = tmp
 
29
  from lib.infer_pack.models import (
30
  SynthesizerTrnMs256NSFsid,
31
  SynthesizerTrnMs256NSFsid_nono,
@@ -119,8 +120,17 @@ def api_convert_voice():
119
  input_audio_path = os.path.join(tmp, f"{spk_id}_input_audio.{filename.split('.')[-1]}")
120
  file.save(input_audio_path)
121
 
122
- output_path = convert_voice(spk_id, input_audio_path, voice_transform)
 
 
 
 
 
 
 
123
  print(output_path)
 
 
124
  if os.path.exists(output_path):
125
  return send_file(output_path, as_attachment=True)
126
  else:
@@ -441,34 +451,47 @@ def cut_vocal_and_inst_yt(split_model):
441
  logs.append("Audio splitting complete.")
442
  yield "\n".join(logs), vocal, inst, vocal
443
 
444
- def cut_vocal_and_inst(split_model, audio_data):
445
  logs = []
446
  vocal_path = "output/result/audio.wav"
447
  os.makedirs("output/result", exist_ok=True)
448
- wavfile.write(vocal_path, audio_data[0], audio_data[1])
449
- logs.append("Starting the audio splitting process...")
450
- yield "\n".join(logs), None, None
451
  command = f"demucs --two-stems=vocals -n {split_model} {vocal_path} -o output"
452
  result = subprocess.Popen(command.split(), stdout=subprocess.PIPE, text=True)
453
- for line in result.stdout:
454
- logs.append(line)
455
- yield "\n".join(logs), None, None
456
  print(result.stdout)
457
  vocal = f"output/{split_model}/audio/vocals.wav"
458
  inst = f"output/{split_model}/audio/no_vocals.wav"
459
- logs.append("Audio splitting complete.")
460
- yield "\n".join(logs), vocal, inst
461
-
462
- def combine_vocal_and_inst(audio_data, vocal_volume, inst_volume, split_model):
 
 
463
  os.makedirs("output/result", exist_ok=True)
464
- vocal_path = "output/result/output.wav"
465
  output_path = "output/result/combine.mp3"
466
- inst_path = f"output/{split_model}/audio/no_vocals.wav"
467
- wavfile.write(vocal_path, audio_data[0], audio_data[1])
468
- command = f'ffmpeg -y -i {inst_path} -i {vocal_path} -filter_complex [0:a]volume={inst_volume}[i];[1:a]volume={vocal_volume}[v];[i][v]amix=inputs=2:duration=longest[a] -map [a] -b:a 320k -c:a libmp3lame {output_path}'
469
- result = subprocess.run(command.split(), stdout=subprocess.PIPE)
470
- print(result.stdout.decode())
 
471
  return output_path
 
 
 
 
 
 
 
 
 
 
472
 
473
  def download_and_extract_models(urls):
474
  logs = []
 
26
  shutil.rmtree(tmp, ignore_errors=True)
27
  os.makedirs(tmp, exist_ok=True)
28
  os.environ["TEMP"] = tmp
29
+ split_model=htdemucs
30
  from lib.infer_pack.models import (
31
  SynthesizerTrnMs256NSFsid,
32
  SynthesizerTrnMs256NSFsid_nono,
 
120
  input_audio_path = os.path.join(tmp, f"{spk_id}_input_audio.{filename.split('.')[-1]}")
121
  file.save(input_audio_path)
122
 
123
+ #split audio
124
+ cut_vocal_and_inst(input_audio_path)
125
+ print("audio splitting performed")
126
+ vocal_path = f"output/{split_model}/audio/vocals.wav"
127
+ inst = f"output/{split_model}/audio/no_vocals.wav"
128
+
129
+ output_path = convert_voice(spk_id, vocal_path, voice_transform)
130
+ output_path= combine_vocal_and_inst(output_path,inst)
131
  print(output_path)
132
+
133
+
134
  if os.path.exists(output_path):
135
  return send_file(output_path, as_attachment=True)
136
  else:
 
451
  logs.append("Audio splitting complete.")
452
  yield "\n".join(logs), vocal, inst, vocal
453
 
454
+ def cut_vocal_and_inst(audio_path):
455
  logs = []
456
  vocal_path = "output/result/audio.wav"
457
  os.makedirs("output/result", exist_ok=True)
458
+ #wavfile.write(vocal_path, audio_data[0], audio_data[1])
459
+ #logs.append("Starting the audio splitting process...")
460
+ #yield "\n".join(logs), None, None
461
  command = f"demucs --two-stems=vocals -n {split_model} {vocal_path} -o output"
462
  result = subprocess.Popen(command.split(), stdout=subprocess.PIPE, text=True)
463
+ #for line in result.stdout:
464
+ # logs.append(line)
465
+ # yield "\n".join(logs), None, None
466
  print(result.stdout)
467
  vocal = f"output/{split_model}/audio/vocals.wav"
468
  inst = f"output/{split_model}/audio/no_vocals.wav"
469
+ #logs.append("Audio splitting complete.")
470
+
471
+
472
+ def combine_vocal_and_inst(vocal_path, inst_path):
473
+ vocal_volume=1
474
+ inst_volume=1
475
  os.makedirs("output/result", exist_ok=True)
476
+ # Assuming vocal_path and inst_path are now directly passed as arguments
477
  output_path = "output/result/combine.mp3"
478
+ command = f'ffmpeg -y -i "{inst_path}" -i "{vocal_path}" -filter_complex [0:a]volume={inst_volume}[i];[1:a]volume={vocal_volume}[v];[i][v]amix=inputs=2:duration=longest[a] -map [a] -b:a 320k -c:a libmp3lame "{output_path}"'
479
+ result = subprocess.run(command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
480
+ if result.stderr:
481
+ print("Error:", result.stderr.decode())
482
+ else:
483
+ print("Success:", result.stdout.decode())
484
  return output_path
485
+
486
+ #def combine_vocal_and_inst(audio_data, vocal_volume, inst_volume):
487
+ # os.makedirs("output/result", exist_ok=True)
488
+ ## output_path = "output/result/combine.mp3"
489
+ # inst_path = f"output/{split_model}/audio/no_vocals.wav"
490
+ #wavfile.write(vocal_path, audio_data[0], audio_data[1])
491
+ #command = f'ffmpeg -y -i {inst_path} -i {vocal_path} -filter_complex [0:a]volume={inst_volume}[i];[1:a]volume={vocal_volume}[v];[i][v]amix=inputs=2:duration=longest[a] -map [a] -b:a 320k -c:a libmp3lame {output_path}'
492
+ #result = subprocess.run(command.split(), stdout=subprocess.PIPE)
493
+ #print(result.stdout.decode())
494
+ #return output_path
495
 
496
  def download_and_extract_models(urls):
497
  logs = []