NV语音合成器

\n

基于Klatt的语音合成引擎,用c ++编写。作者:NV Access Limited

简介

NV Speech Player是一款免费的开源原型语音合成器,可供NVDA使用。它使用Klatt合成生成语音,使其有点类似于,Dectalk和Eloquence。

许可和版权

NV语音合成器版权所有(c)2014 NV语音播放器贡献者NV语音播放器受GNU通用公共许可证(第2版)的保护。只要附带许可证,您就可以以任何您喜欢的方式共享或更改此软件,并且您可以向所有想要它的人提供所有源代码。这适用于本软件的原始副本和修改后的副本,以及任何衍生作品。有关详细信息,您可以在线查看许可证:http://www.gnu.org/licenses/old-licenses/gpl-2.0.html

背景

70年代和80年代在语音合成方面进行了大量的研究。出现的最突出的合成模型之一是称为Klatt合成的共振峰频率合成。一些着名的Klatt合成器是Dectalk和Eloquence。它们非常适合盲人使用,因为它们反应速度快,发音平滑且可预测,并且内存占用小。然而,研究很快转向了其他方向,例如连词,尽管这种情况比较慢,但它更接近于人类的声音。这对于在诸如GPS单元或电话系统之类的主流应用中的使用是有利的,但对于盲人来说不一定有这么大的优势,盲人往往更关心响应性和对速度和可预测性。

虽然Dectalk和Eloquence等合成器继续维持并可用近20年,但现在它们变得越来越难以获取,多家公司表示这些及其变体已经终止并且不再更新。

随着速度和平滑性的提高,协同合成现在开始有了不少的替代品。然而,大多数(如果不是全部)可接受的质量合成器都是商业的并且相当昂贵。

Dectalk和Eloquence都是闭源商业产品。但是,社区可以获得大量有关Klatt综合的源代码和研究资料。 NV语音合成器试图通过成为Klatt合成器的现代原型来利用这一点,希望能够替代像Dectalk或Eloquence这样的合成器,或者至少重新开始围绕这种合成方法的研究和进行开发。

eSpeak合成器本身就是一个免费的开源产品,已被证明可以替代社区中的一定数量的语音合成器,但许多听到它的人非常快地指出它的“金属”声音,似乎无法继续使用它。虽然NV Speech Player的作者仍然更喜欢eSpeak作为他们选择的合成器,但他们仍然希望能够更好地理解这种对eSpeak的奇怪抵抗究竟是为什么,这可能与eSpeak的频谱合成与Klatt合成有关。它也可能与辅音也是从记录的语音中收集的事实有关,因此可以被感知为被注入语音流中。

工具

合成引擎本身是用C ++编写的,使用现代习语,但是密切关注klsyn-88的实现,可以在https://linguistics.berkeley.edu/phonlab/resources/找到

eSpeak用于将文本解析为IPA中表示的音素,利用现有的eSpeak字典处理。 eSpeak可在以下网址找到:http://espeak.sourceforge.net/

每个音素的Klatt共振峰数据主要是从一个名为PyKlatt的项目中收集的:http://code.google.com/p/pyklatt/然而,它已根据测试和eSpeak自己的数据进行了进一步调整。

音素长度,间隙,速度和语调的规则已经在Python中手动编码,尽管尝试尽可能地复制eSpeak自己的语调数据。

构建NV语音合成器

你会需要:

  • Python 2.7: https://www.python.org
  • SCons 2.3.0: https://www.scons.org/
  • Visual Studio 2012桌面(快速或专业)版

构建:运行scons

构建之后,根目录中将有一个nvSpeechPlayer_xxx.nvda-addon文件,其中xxx是git修订版或硬编码版本号。将此插件安装到NVDA中将允许您在NVDA中使用语音合成器合成器。请注意您需要的所有内容都在附加组件中,不需要复制额外的dll或文件。