能否通过采样几个或十几个自己的声音,就能把所有输入的文字都用自己的声音发声

评论里有试过的人说:“拼接合成的话,几十句是不行的,会发音极其古怪。上万句差不多。可以使用一些算法从上万句的音库筛选到三千多句。”#原答案#几个和十几个不可能。几十个是可能的。假设只满足普通话,所有的声母和韵母的标本必须要有。而我们注意到bā和bī的b其实是有差异的;bā和bǎ的a也是有细节上的差异的(不单是声调);拖把、把柄和把握的把的具体读音也是不同的。换句话说,每个声母和韵母在不同字的读音可能不同,这就要求我们每种具体读法的标本都要有。直觉估计样本量要差不多一两百左右。另外,语句中不同字的轻重也是不同的。然后我们要设计一个算法,明确具体哪个字用哪种读法的声母和韵母合成读音,同时还要兼顾到多音字的问题。最难的部分是语句重音和意群的划分。这也就是目前语音助手说话有“机器人感”的原因,要做到语音和人类一样自然,势必会占用大量系统资源,而这是不经济的。当然,如果不介意听起来像一个机器人的自己说话的话,只录基本的声韵调凑活一下也是可以的。算法的难点就集中在了多音字的判断和字符到语音的映射上。具体地来说,这个程序可以这样设计。把所有字和拼音列为一张表,比如具 j ü 4体 t i 3地 d i 4 d e 1来 l ai 2说 sh uo 1 sh ui 4然后再配一张表用于区分多音字该用哪个音程序运行的时候读入要发音的字,先在单字表里查找读音,是多音字的再在多音字表里查找读音,最后根据确定的读音去音频库里调用对应的声韵,合成完整音节,最后output。另外,对于要求自然语音的程序来说,我们不妨考虑开发一套完善地参考音频体系,然后通过对用户是声音采样生成一个调整参数体系,然后通过调整参数,在发音的时候把参考音频调整为用户的声音。这样一来从用户的角度来说,客制化时的采样量就大幅减少了。当然这只是一个没有进行过任何可行性分析的想法而已。
■网友
不知道你说的「几个」「十几个」是多少。就我的感觉,如果你想要完全从你自己的声音中训练出模型,可能至少需要几个小时的数据。如果你已经有了一个模型,想要调整它让它合成你自己的声音,可能需要几分钟的数据。
■网友
这个网站就是用这个原理做的:
http://duchulai.com (读出来)
采样了全部普通话的读音,大概1000多个音节。
我写了专门的工具录制音节,一个人的全部声音,大概2个晚上能全部录完。

■网友
请自行参考B站鬼畜区
■网友
只有十几句的话,如果不借助其他资源或模型,别说合成出来好听的声音,合成出正确的语音都很难,语料的声韵母都没覆盖全的话,基本没戏。
但如果已经有了一个模型(不管是一个人的还是很多人的),再使用你自己的十几句做adaptation、迁移学习或者voice转换,倒是很有希望的。

■网友
我之前用HTS HMM-based speech synthesis system (HTS) 训练过一个自己的语音合成的系统。大概是自己录了自己朗读的1000个左右的句子吧,然后训练出来的系统听起来是这样的http://www.cs.jhu.edu/~hxu/intro.wav
【能否通过采样几个或十几个自己的声音,就能把所有输入的文字都用自己的声音发声】

■网友
数据太少,应该不行,至少要训练几小时,机器学习算法才能搞定吧


    推荐阅读