欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

20200814:汉字转语音(语音合成)(一):技术调研和准备

程序员文章站 2022-07-14 19:55:37
...

一、参考资料

1、https://zhuanlan.zhihu.com/p/26726297

参考语录:汉字转语音实现就分为两步,第一步将汉字转为拼音,第二步通过拼音调用相匹配的音频文件。

 

2、汉字转拼音

参考:https://blog.csdn.net/mydistance/article/details/85009791

涉及的第三方库:xpinyin和pypinyin

 

from xpinyin import Pinyin 
# 实例拼音转换对象 
p = Pinyin() 
# 进行拼音转换
ret = p.get_pinyin(u"汉语拼音转换", tone_marks='marks') 
ret1 = p.get_pinyin(u"汉语拼音转换", tone_marks='numbers') 
print(ret+'\n'+ret1) 
# 得到转化后的结果 
# hàn-yǔ-pīn-yīn-zhuǎn-huàn 
# han4-yu3-pin1-yin1-zhuan3-huan4
import pypinyin

# 不带声调的(style=pypinyin.NORMAL)
def pinyin(word):
    s = ''
    for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):
        s += ''.join(i)
    return s

# 带声调的(默认)
def yinjie(word):
    s = ''
    # heteronym=True开启多音字
    for i in pypinyin.pinyin(word, heteronym=True):
        s = s + ''.join(i) + " "
    return s

if __name__ == "__main__":
    print(pinyin("忠厚传家久"))
    print(yinjie("诗书继世长"))

 

3、Tacotron中文语音合成

 

二、模型算法

1、开源

  • Wavenet

  • Deepvoice

  • Tacotron(端到端)

  • Tacotron2(端到端)

2、优缺点

  • Wavenet的缺陷是需要进行自回归,即把这一次的输出附加到下一次运算的输入中,使得运算无法并行进行,速度较慢,并且它并不是端到端,它需要对TTS前端语言的特征进行调节。

  • Tacotron则使用了RNN模型,具有短期记忆、梯度消失严重等问题,导致信号合成效果并不是很好,不如Wavenet。

  • Tacotron2则将Wavenet和Tacotron相结合,吸取了两者的优势并解决了两者的问题。

三、Tacotron2 实践

 

 

 

 

 

 

 

相关标签: 语音合成