PlayVoice / lora-svc

singing voice change based on whisper, and lora for singing voice clone
MIT License
617 stars 77 forks source link

请问48K比特率是否是24bit? #54

Open lianganbin opened 1 year ago

lianganbin commented 1 year ago

请问48K比特率是否是24bit?

MaxMax2016 commented 1 year ago

模型运算用的float,生成的wav也是48K的float,最后是否保存为24bit都行。

lianganbin commented 1 year ago

感谢回答,我想咨询的是,我准备的素材可否是48 24bit的。是否会被重采成其他的素材?

MaxMax2016 commented 1 year ago

可以是48 24bit的, 被重采成16bit

这个是重采样的代码,如果介意int16,可以保存为32bit

def resample_wave(wav_in, wav_out, samplerate): wav, = librosa.load(wav_in, sr=sample_rate) wav = wav / np.abs(wav).max() 0.6 wav = wav / max(0.01, np.max(np.abs(wav))) 32767 * 0.6 wavfile.write(wav_out, sample_rate, wav.astype(np.int16))

这个是训练加载的代码

def read_wav_np(path): sr, wav = read(path) if len(wav.shape) == 2: wav = wav[:, 0] if wav.dtype == np.int16: wav = wav / 32768.0 elif wav.dtype == np.int32: wav = wav / 2147483648.0 elif wav.dtype == np.uint8: wav = (wav - 128) / 128.0 wav = wav.astype(np.float32) return sr, wav

lianganbin commented 1 year ago

你好,因为我的bit录音的时候就是48k 24bit,所以我可以在训练前就做好所有的预处理,我的意思是预处理我自己手动作,包括音量标准啥的。因为我用了几种方式训练出来的声音,到最后总是觉得超高频很散,我怀疑就是问题出在重采这一块

MaxMax2016 commented 1 year ago

哦,现在训练代码用的scipy.wave.read,它只支持16bit和32bit,需要修改代码支持24bit

lianganbin commented 1 year ago

就是,我录音采用32bit就可以对吗,或者我输出48 32bit代码是支持32bit的对吗

MaxMax2016 commented 1 year ago

你好,因为我的bit录音的时候就是48k 24bit,所以我可以在训练前就做好所有的预处理,我的意思是预处理我自己手动作,包括音量标准啥的。因为我用了几种方式训练出来的声音,到最后总是觉得超高频很散,我怀疑就是问题出在重采这一块

24bit也可以转换为32bit的吧

lianganbin commented 1 year ago

嗯嗯,可以转的,往上转肯定比往下转好。就是训练是可以基于 48k 32bit训练的嘛!对吗?那么预训练的文件是否有讲究?

MaxMax2016 commented 1 year ago

要训练预训练模型对的话,音色要覆盖全,音高要覆盖全;训练单发音人的话,音高要覆盖全。音质要好。

lianganbin commented 1 year ago

意思是,我要用48 32bit的话。练预训练模型是需要我自己训练是吗?我干声素材倒是挺多的, 只是不太懂代码这些。我只懂音频

MaxMax2016 commented 1 year ago

哦,48K预训练模型要5 1之后才能发出来了。现在发的48K模型,复用的16K模型的参数,低频有问题。使用32bit,可以用16bit数据训练的预训练模型,模型都是用float训练的。

lianganbin commented 1 year ago

就是我有48 32bit的话,我可以自己做48K的模型对不对?只要够多?多人的声音是否OK?

lianganbin commented 1 year ago

非常抱歉,我问的问题可能相对太小白了。但是真心想弄懂这里面的区别,所以问题可能太傻瓜了。

MaxMax2016 commented 1 year ago

就是我有48 32bit的话,我可以自己做48K的模型对不对?只要够多?多人的声音是否OK?

是的,可以是多人的

lianganbin commented 1 year ago

就是我可以把很多人的干声,不管男的女的各种语言各种发音,只要是高质量的48k 32bit放在集里面一起跑?然后代码改成48k 32bit。然后回头这个模型就能当做我的预模型?是这个理解方式吗?

MaxMax2016 commented 1 year ago

就是我可以把很多人的干声,不管男的女的各种语言各种发音,只要是高质量的48k 32bit放在集里面一起跑?然后代码改成48k 32bit。然后回头这个模型就能当做我的预模型?是这个理解方式吗?

是的,只是不用改代码,之前说改代码是不支持24bit

lianganbin commented 1 year ago

那么,我是不是不用加载预训练模型?我指的是我自己训练48 32bit的模型

MaxMax2016 commented 1 year ago

数据够是可以的,至少无重复的wav 5000条;一般歌里面都大量重复的句子。

lianganbin commented 1 year ago

明白了,也就是说我们现在项目里这个48K的模型还没弄好对吗

MaxMax2016 commented 1 year ago

是的,之前弄的48K有问题