Spaces:
Sleeping
Sleeping
File size: 2,162 Bytes
f12fa11 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# --coding:utf-8--
import os
from encoder.utils import convert_audio
import torchaudio
import torch
from decoder.pretrained import WavTokenizer
import time
import logging
device1=torch.device('cuda:0')
device2=torch.device('cpu')
input_path = "./WavTokenizer/data/infer/lirbitts_testclean"
out_folder = './WavTokenizer/result/infer'
# os.system("rm -r %s"%(out_folder))
# os.system("mkdir -p %s"%(out_folder))
# ll="libritts_testclean500_large"
ll="wavtokenizer_smalldata_frame40_3s_nq1_code4096_dim512_kmeans200_attn_testclean_epoch34"
tmptmp=out_folder+"/"+ll
os.system("rm -r %s"%(tmptmp))
os.system("mkdir -p %s"%(tmptmp))
# 自己数据模型加载
config_path = "./WavTokenizer/configs/wavtokenizer_smalldata_frame40_3s_nq1_code4096_dim512_kmeans200_attn.yaml"
model_path = "./WavTokenizer/result/train/wavtokenizer_smalldata_frame40_3s_nq1_code4096_dim512_kmeans200_attn/lightning_logs/version_3/checkpoints/wavtokenizer_checkpoint_epoch=24_step=137150_val_loss=5.6731.ckpt"
wavtokenizer = WavTokenizer.from_pretrained0802(config_path, model_path)
wavtokenizer = wavtokenizer.to(device1)
# wavtokenizer = wavtokenizer.to(device2)
with open(input_path,'r') as fin:
x=fin.readlines()
x = [i.strip() for i in x]
# 完成一些加速处理
features_all=[]
for i in range(len(x)):
wav, sr = torchaudio.load(x[i])
# print("***:",x[i])
# wav = convert_audio(wav, sr, 24000, 1) # (1,131040)
bandwidth_id = torch.tensor([0])
wav=wav.to(device1)
print(i)
features,discrete_code= wavtokenizer.encode_infer(wav, bandwidth_id=bandwidth_id)
features_all.append(features.cpu())
wavtokenizer = wavtokenizer.to(device2)
for i in range(len(x)):
bandwidth_id = torch.tensor([0])
print(i)
audio_out = wavtokenizer.decode(features_all[i], bandwidth_id=bandwidth_id)
# print(i,time.time())
# breakpoint() # (1, 131200)
audio_path = out_folder + '/' + ll + '/' + x[i].split('/')[-1]
# os.makedirs(out_folder + '/' + ll, exist_ok=True)
torchaudio.save(audio_path, audio_out, sample_rate=24000, encoding='PCM_S', bits_per_sample=16)
|