Plachtaa / VITS-fast-fine-tuning

This repo is a pipeline of VITS finetuning for fast speaker adaptation TTS, and many-to-many voice conversion
Apache License 2.0
4.71k stars 706 forks source link

推理时语音会切掉最后一个字的半个音 #192

Closed RemSynch closed 1 year ago

RemSynch commented 1 year ago

image 生成是成功的,调节语速也一样,就是最后一个字的半个音会被切掉是为什么

RemSynch commented 1 year ago

不对,调节语速到0.3勉强能听到最后一个字的大半个音

liubin3702 commented 1 year ago

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

RemSynch commented 1 year ago

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

尝试过让他读较长的句子后再读短句可能可以修复,但是有时候还是不行。

Fatfish588 commented 1 year ago

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

@liubin3702 我在英文推理的时候也遇到了这个问题,请问如果要修改字典标签是不是只要加上缺少的字符就好了?需要在改动别的文件吗?需要改动的文件是哪个呢?期待您的回复!

youxingtian commented 1 year ago

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

尝试过让他读较长的句子后再读短句可能可以修复,但是有时候还是不行。

你好,我在进行中文推理的时候,对于语料里没出现过的字发音还是不准,请问你这个是加在哪个文件里,怎么加的,可以给个例子吗,万分感谢!

liubin3702 commented 1 year ago

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

尝试过让他读较长的句子后再读短句可能可以修复,但是有时候还是不行。

你好,我在进行中文推理的时候,对于语料里没出现过的字发音还是不准,请问你这个是加在哪个文件里,怎么加的,可以给个例子吗,万分感谢!

就是在你自己使用的 json字典中补全所有字符,例如我的finetune_speakerchinese.json 文件的symbols是这样的 "symbols": ["", ",", ".", "!", "?", "-", "~", "\u2026", "A", "E", "I", "N", "O", "Q", "U", "a", "b", "c","d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q","r", "s", "t", "u", "v", "w", "x","y", "z", "\u0283", "\u02a7", "\u02a6", "\u026f", "\u0279", "\u0259", "\u0265", "\u207c", "\u02b0", "`", "\u2192", "\u2193", "\u2191", " ","1","2","3","4"] 最后四个是音调 前面就是拼音字母,使用的最小字符编码是单个字母, 例如 “你好”->"n i 3 h a o 3" 我的字典就是充分包所有的节点,这样训练之后音准就比较好,不会漏或者吞音,遇到没见过的字也可以通过见过的字母和音调组合顺利发音,但是要更改字典就需要重新训练中文了 不适用预训练模型 实测aishell3 150epoch 效果就很好了,还有 如果你语料有比较好的标点标注 就保留下来,将标点增加到字典中,就能学到停顿和例如疑问句的语气。

youxingtian commented 1 year ago

finetune_speaker_chinese.json

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

尝试过让他读较长的句子后再读短句可能可以修复,但是有时候还是不行。

你好,我在进行中文推理的时候,对于语料里没出现过的字发音还是不准,请问你这个是加在哪个文件里,怎么加的,可以给个例子吗,万分感谢!

就是在你自己使用的 json字典中补全所有字符,例如我的finetune_speakerchinese.json 文件的symbols是这样的 "symbols": ["", ",", ".", "!", "?", "-", "~", "\u2026", "A", "E", "I", "N", "O", "Q", "U", "a", "b", "c","d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q","r", "s", "t", "u", "v", "w", "x","y", "z", "\u0283", "\u02a7", "\u02a6", "\u026f", "\u0279", "\u0259", "\u0265", "\u207c", "\u02b0", "`", "\u2192", "\u2193", "\u2191", " ","1","2","3","4"] 最后四个是音调 前面就是拼音字母,使用的最小字符编码是单个字母, 例如 “你好”->"n i 3 h a o 3" 我的字典就是充分包所有的节点,这样训练之后音准就比较好,不会漏或者吞音,遇到没见过的字也可以通过见过的字母和音调组合顺利发音,但是要更改字典就需要重新训练中文了 不适用预训练模型 实测aishell3 150epoch 效果就很好了,还有 如果你语料有比较好的标点标注 就保留下来,将标点增加到字典中,就能学到停顿和例如疑问句的语气。

非常感谢您的回复,受益非常大,还有一些细节想跟你了解一下,你是通过修改finetune_speaker.json中symbols,在aishell3训练150epoch,然后将这个训练完成的模型作为预训练模型,再在其他数据集的上的音频进行微调的吗

liubin3702 commented 1 year ago

finetune_speaker_chinese.json

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

尝试过让他读较长的句子后再读短句可能可以修复,但是有时候还是不行。

你好,我在进行中文推理的时候,对于语料里没出现过的字发音还是不准,请问你这个是加在哪个文件里,怎么加的,可以给个例子吗,万分感谢!

就是在你自己使用的 json字典中补全所有字符,例如我的finetune_speakerchinese.json 文件的symbols是这样的 "symbols": ["", ",", ".", "!", "?", "-", "~", "\u2026", "A", "E", "I", "N", "O", "Q", "U", "a", "b", "c","d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q","r", "s", "t", "u", "v", "w", "x","y", "z", "\u0283", "\u02a7", "\u02a6", "\u026f", "\u0279", "\u0259", "\u0265", "\u207c", "\u02b0", "`", "\u2192", "\u2193", "\u2191", " ","1","2","3","4"] 最后四个是音调 前面就是拼音字母,使用的最小字符编码是单个字母, 例如 “你好”->"n i 3 h a o 3" 我的字典就是充分包所有的节点,这样训练之后音准就比较好,不会漏或者吞音,遇到没见过的字也可以通过见过的字母和音调组合顺利发音,但是要更改字典就需要重新训练中文了 不适用预训练模型 实测aishell3 150epoch 效果就很好了,还有 如果你语料有比较好的标点标注 就保留下来,将标点增加到字典中,就能学到停顿和例如疑问句的语气。

非常感谢您的回复,受益非常大,还有一些细节想跟你了解一下,你是通过修改finetune_speaker.json中symbols,在aishell3训练150epoch,然后将这个训练完成的模型作为预训练模型,再在其他数据集的上的音频进行微调的 是的 微调还蛮快的

youxingtian commented 1 year ago

好的,谢谢您,该项目是将文本转注音符号lazy_pinyin(word, BOPOMOFO)进行训练的,您将文本转成“你好”->"n i 3 h a o 3"这样的形式,是使用这个吗?lazy_pinyin(word, style=Style.TONE3),使用这个脚本训练还需要修改哪些地方,麻烦您指导一下!

youxingtian commented 1 year ago

finetune_speaker_chinese.json

我中文也遇到了这个问题 发现标签里里面少了 c x q三个字符,这个方法是要需要字符向量的,并且在某些情况下音调不准,我在字典标签增加了所有的拼音用到的字符和1234 四个音调,目前音准和半个音的情况解决了。你可以看看日文字符是否也存在这个问题

尝试过让他读较长的句子后再读短句可能可以修复,但是有时候还是不行。

你好,我在进行中文推理的时候,对于语料里没出现过的字发音还是不准,请问你这个是加在哪个文件里,怎么加的,可以给个例子吗,万分感谢!

就是在你自己使用的 json字典中补全所有字符,例如我的finetune_speakerchinese.json 文件的symbols是这样的 "symbols": ["", ",", ".", "!", "?", "-", "~", "\u2026", "A", "E", "I", "N", "O", "Q", "U", "a", "b", "c","d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q","r", "s", "t", "u", "v", "w", "x","y", "z", "\u0283", "\u02a7", "\u02a6", "\u026f", "\u0279", "\u0259", "\u0265", "\u207c", "\u02b0", "`", "\u2192", "\u2193", "\u2191", " ","1","2","3","4"] 最后四个是音调 前面就是拼音字母,使用的最小字符编码是单个字母, 例如 “你好”->"n i 3 h a o 3" 我的字典就是充分包所有的节点,这样训练之后音准就比较好,不会漏或者吞音,遇到没见过的字也可以通过见过的字母和音调组合顺利发音,但是要更改字典就需要重新训练中文了 不适用预训练模型 实测aishell3 150epoch 效果就很好了,还有 如果你语料有比较好的标点标注 就保留下来,将标点增加到字典中,就能学到停顿和例如疑问句的语气。

非常感谢您的回复,受益非常大,还有一些细节想跟你了解一下,你是通过修改finetune_speaker.json中symbols,在aishell3训练150epoch,然后将这个训练完成的模型作为预训练模型,再在其他数据集的上的音频进行微调的 是的 微调还蛮快的 好的,谢谢您,该项目是将文本转注音符号lazy_pinyin(word, BOPOMOFO)进行训练的,您将文本转成“你好”->"n i 3 h a o 3"这样的形式,是使用这个吗?lazy_pinyin(word, style=Style.TONE3),使用这个脚本训练还需要修改哪些地方,麻烦您指导一下!

liulfy commented 11 months ago

请问cjke有试过吗?怎么去改呢?