23 lines
811 B
Python
23 lines
811 B
Python
import os
|
|
import torch
|
|
import torchaudio
|
|
|
|
audio_dir = "./user_voice/"
|
|
wavfiles = []
|
|
for filename in list(os.walk(audio_dir))[0][2]:
|
|
if filename.endswith(".wav"):
|
|
wavfiles.append(filename)
|
|
|
|
# denoise with demucs
|
|
for i, wavfile in enumerate(wavfiles):
|
|
os.system(f"demucs --two-stems=vocals {audio_dir}{wavfile}")
|
|
|
|
# read & store the denoised vocals back
|
|
for wavfile in wavfiles:
|
|
i = wavfile.strip(".wav")
|
|
wav, sr = torchaudio.load(f"./separated/htdemucs/{i}/vocals.wav", frame_offset=0, num_frames=-1, normalize=True, channels_first=True)
|
|
# merge two channels into one
|
|
wav = wav.mean(dim=0).unsqueeze(0)
|
|
if sr != 22050:
|
|
wav = torchaudio.transforms.Resample(orig_freq=sr, new_freq=22050)(wav)
|
|
torchaudio.save(f"./user_voice/{i}.wav", wav, 22050, channels_first=True) |