Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

调整英文格式化输出和英文G2P逻辑 #821

Merged
merged 1 commit into from
Mar 20, 2024

Conversation

KamioRinn
Copy link
Contributor

  1. 将g2p_en的文字格式化内容前移至text_normalize,暴露至命令行使显示的文字与实际生成音素文字对应。
  2. 重写g2p_en推理逻辑,将缩写A发音修正为"EY1",量词a仍保持为"AH0"。同时减少递归重复运算。
  3. 扩展所有格xxx's推理应有的三个正确发音。

@Downupanddownup
Copy link
Contributor

所以现在用最新的代码训练模型,不会再把“AI”读作“爱”了,是吧?

@KamioRinn
Copy link
Contributor Author

所以现在用最新的代码训练模型,不会再把“AI”读作“爱”了,是吧?

无英文素材不需要训练

@RVC-Boss RVC-Boss merged commit 7bc0836 into RVC-Boss:main Mar 20, 2024
@Downupanddownup
Copy link
Contributor

谢谢回复,我去试试

KakaruHayate added a commit to KakaruHayate/GPT-SoVITS-musa that referenced this pull request Mar 21, 2024
…sh-G2P"

This reverts commit 7bc0836, reversing
changes made to b451372.
@lyris
Copy link
Contributor

lyris commented Mar 21, 2024

@KamioRinn 现在很多英文人名读不出来了,比如Shenny 这个人名,以前是可以读出来 ['SH', 'EH1', 'N', 'IY0'] 的,现在读作 ['SH', 'EH1', 'N', 'EH1', 'N', 'W', 'AY1'] 后面两个字母直接发单个字母音了。
是从 ca57a01 这个版本开始不用 g2p的predict开始出问题的。

@KamioRinn
Copy link
Contributor Author

@KamioRinn 现在很多英文人名读不出来了,比如Shenny 这个人名,以前是可以读出来 ['SH', 'EH1', 'N', 'IY0'] 的,现在读作 ['SH', 'EH1', 'N', 'EH1', 'N', 'W', 'AY1'] 后面两个字母直接发单个字母音了。 是从 ca57a01 这个版本开始不用 g2p的predict开始出问题的。

现在的算法逻辑是为了应对复合词(chatgpt、openai、xiaomi)等,对字典里没有的词先考虑进行拆分尝试从字典里查找读音。查找不到的如果小于三个字母就当缩写去读了,长于三个的就还是交由g2p_en predict预测。
shenny被拆成了可查的shen和不可查的ny作为缩写,所以产生了这个问题。我这边除了手工添加字典外暂时想不到什么好办法来处理。您有没有什么想法可以来规避这一问题。

@lyris
Copy link
Contributor

lyris commented Mar 22, 2024

这个感觉没有太好的办法,如果从字母大小写入手,建议可以细化一下:

  1. 如果一个word以大写字母开头,而且只有一个字母大写,这个时候大概率就是人名,就直接predict;
  2. 如果word中有非首字母还大写,再考虑拆分根据根据非开头的大写字母拆分。拆分后的前面部分去词典里找,找不到对大写字母直接读字母我觉得还是可以的——之所以先拆分,因为词典里面全是大写,如果拆分前就去词典里面找的话相当于这个word中的大小写不一样的字母全被一视同仁了。
  3. 如果全部小写,我觉得用现在的逻辑可以,甚至直接predict我觉得也没有问题。也就是说OpenAI可以读分为两部分AI 按照字母读没有问题, 全部小写如openai/xiaomi进来我觉得直接去predict都行——让从源头上就规范大小写

@KamioRinn
Copy link
Contributor Author

这个感觉没有太好的办法,如果从字母大小写入手,建议可以细化一下:

原版Predict的准确性非常低,所以才被换掉了。尝试了几个大模型,测试下都不如现在分词逻辑靠谱。控制用户输入也是特别难的一件事,本身的文本就不知道是哪里复制的,不少都不是自己写的。

其实字典里面有一些传统英文名,但是英文名的自由度很高,长度也没限制,组合也没限制,越起越花,还有一些是外国名转换的。其中一些分词就能直接读出来,一些压根可以说跟传统英文单词毫无关联…

我试着跑了一份英文姓名字典,名字数据来自fb,筛选出现2000次以上的英美加地区名字,对其中无法直接分词朗读的名字用模型预测了读音,我晚些时候传上来,如果你有人名朗读需求可以试试看

@lyris
Copy link
Contributor

lyris commented Mar 23, 2024

这个感觉没有太好的办法,如果从字母大小写入手,建议可以细化一下:

原版Predict的准确性非常低,所以才被换掉了。尝试了几个大模型,测试下都不如现在分词逻辑靠谱。控制用户输入也是特别难的一件事,本身的文本就不知道是哪里复制的,不少都不是自己写的。

其实字典里面有一些传统英文名,但是英文名的自由度很高,长度也没限制,组合也没限制,越起越花,还有一些是外国名转换的。其中一些分词就能直接读出来,一些压根可以说跟传统英文单词毫无关联…

我试着跑了一份英文姓名字典,名字数据来自fb,筛选出现2000次以上的英美加地区名字,对其中无法直接分词朗读的名字用模型预测了读音,我晚些时候传上来,如果你有人名朗读需求可以试试看

赞,这类人名确实是移民后裔的名字,起的没有任何章法,通过挂专门的.dict来补充吧,不要影响现在的逻辑了。

@KamioRinn
Copy link
Contributor Author

赞,这类人名确实是移民后裔的名字,起的没有任何章法,通过挂专门的.dict来补充吧,不要影响现在的逻辑了。

可以看一下#869

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants