这个问题的第一部分现在是它自己的,这里:Analyzing Text for Accents
问题:如何将重音添加到生成的语音中?
我想出了什么:
我的意思不是仅仅重音符号,拐点或类似的东西。我的意思是像完整的英式口音,苏格兰式口音或俄语等。
我认为这也可以在语言之外完成。例如:俄语中的某些内容可能带有英国口音,普通话中的某些内容可能带有俄罗斯口音。
我认为基本过程是这样的:
这实际上更多是关于一般DSP的问题,但是我想提出一种程序算法来代替一般的想法。
最佳答案
什么是口音?
口音不是声音过滤器;这是一种语言中文字的声音实现方式。您无法录制美式英语,无法通过“振幅和滤波器阵列”运行它,并且弹出英式英语。 DSP有用的是实现prosody而不是口音。
基本上(最简单的建模),重音由音素序列的音标实现规则组成。口音的感知会进一步影响by prosody,并且说话者在阅读文本时会选择哪种音素。
语音产生
语音生成过程有两个基本步骤:
通常这些是配对的。尽管您可能拥有使用美式发音的以英语为中心的语音生成器,但这听起来很奇怪。
以给定的口音产生语音
编写文本语音转换程序需要大量工作(尤其是要实现一种通用方案,您必须录制以母语讲每种双音素的母语的人),因此最好使用现有的一。
简而言之,如果您想使用英式口音,请同时使用英式英语文本到音素引擎和英式英语声音到语音引擎。
对于美式和英式英语,标准普通话,大都会法语等常见的口音,将有多种选择,包括您可以修改的开源内容(如下所示)。例如,查看FreeTTS和eSpeak。对于不太常见的口音,不幸的是可能不存在现有的引擎。
说带有外国口音的文字
具有外国口音的英语在社会上不是很负盛名,因此可能不存在完整的系统。
一种策略是将用于本地口音的现成的文本转音素引擎与用于外语的音素转语音引擎结合起来。例如,一位说俄语的母语人士在美国学习英语,就会合理地使用实验室等单词的美式发音,并将其音素映射到他的俄语母语音素上,并以俄语发音。 (我相信有一个网站可以用英语和日语进行此操作,但是我没有链接。)
问题是结果太极端了。真正的英语学习者将尝试识别并生成其母语不存在的音素,并且还将更改他对母语音素的理解以近似母语发音。结果与母语使用者的匹配程度当然会有所不同,但是使用纯净的外来极端声音却是荒谬的(而且大多是难以理解的)。
因此,要生成合理的带有俄语口音的美式英语(例如),您必须编写一个文本转音素引擎。您可以使用现有的美国英语和俄语文本到音素引擎作为起点。如果您不愿意找到并录制这样的扬声器,那么使用DSP组合来自这两个引擎的样本,您可能仍然可以获得不错的近似效果。对于eSpeak,它使用共振峰合成而不是记录的样本,因此合并来自多种语言的信息可能会更容易。
要考虑的另一件事是,外语说话者通常会在其母语的音位变化的影响下修改音素的顺序,通常是通过简化辅音组,插入美化的元音,或二音化或破坏元音顺序来进行。
There is some literature on this topic.