jerryuhoo / VTuberTalk

Apache License 2.0
366 stars 54 forks source link

关于MFA以及训练效果的几个问题 #17

Open prophesier opened 2 years ago

prophesier commented 2 years ago

原来的issue太长了,所以关了重新开了一个。 首先是发现了revise_text.py里面的一个bug

def process(files, path):
    text_dict = {}
    with open("./text.txt" ,'r', encoding='utf-8') as text_file:
        for line in text_file.readlines():
            line = line[:-1]
            file_name, text = line.split()[0],line.split()[1]#line.split()[0], re.search(r'[".txt "].*',line).group()[5:]
            text_dict[file_name] = text
    text_file.close()

这里是拆分文件名和对应的字幕,中间注释那行原来的写法,只切了txt一行的前5个字出去,导致最后生成的字幕还带着原来文件的文件名。最后直接被切进mfa里面变成不可识别的单词(xxx.txt这样),应该会极大影响训练效果。

然后是自己的训练效果的问题,这次我用了fastspeech2+aishell3+parallel wavegan,vocoder感觉影响不大直接用的预训练模型。将aishell3中其中一个speaker替换成训练对象,从头开始训练,batchsize=16大概跑了十多万step。训练出来的模型aishell3本身那些speaker效果很好,但是自己的speaker就不太行,音质不佳可能是本身音源消伴奏后音质就不太行有杂音导致的。但是有一个百思不得其解的现象,就是我的speaker一直二倍速说话。。。音源速度和采样格式、采样率应该没有问题,不知道您有没有什么头绪?会不会是MFA分词的问题(已排除上面提到的那个问题)。 关于MFA还有一个疑惑,就是如果用mfa官方那个mandarin2.0模型align,

mfa align data/wav_temp/speaker/split mandarin_mfa mandarin_mfa data/TextGrid/speaker --clean

生成的textgrid文件里面只有单字拼音那一层是正常的,音素那一层都变成“spn”这个音素,疑似识别错误。不知道是不是注音文件的问题,或者是dict的问题(?)。(aishell本身的textgrid文件或者自己用mfa train之后的文件都不会这样,音素也是正常识别的)所以自己的mfa一直用的是自己train的,但是因为样本量较少,只有几百句,很担心mfa的质量。 最后就是感觉训练出来的模型音色几乎不像自己原来speaker的音色(aishell本身的那些speaker倒是感觉还挺像的),可能有上面一些问题的叠加影响,也有可能是自己有哪些问题没有注意到,希望能够指点一下。

jerryuhoo commented 2 years ago

这两天外出可能不太方便,mfa首先需要自己训练的,可以多人一起训练,readme里应该有多人训练的例子。关于二倍速的问题可以检查一下textgrid里每个音素时常是否正确,有可能是你mfa训练的不好的问题。然后关于revise text我到时候再具体看一下吧。

prophesier commented 2 years ago

好的谢谢,估计还是mfa的问题,我再检查一下,试试多人训练mfa。