NV Speech Player. A Klatt-based speech synthesis engine written in c++

简介

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

许可和版权

NV Speech Player is Copyright (c) 2014 NV Speech Player contributors NV Speech Player is covered by the GNU General Public License (Version 2). You are free to share or change this software in any way you like as long as it is accompanied by the license and you make all source code available to anyone who wants it. This applies to both original and modified copies of this software, plus any derivative works. For further details, you can view the license online at: 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合成有关。它也可能与辅音也是从记录的语音中收集的事实有关,因此可以被感知为被注入语音流中。

工具

The synthesis engine itself is written in C++ using modern idioms, but closely following the implementation of klsyn-88, found at http://linguistics.berkeley.edu/phonlab/resources/

eSpeak is used to parse text into phonemes represented in IPA, making use of existing eSpeak dictionary processing. eSpeak can be found at: http://espeak.sourceforge.net/

The Klatt formant data for each individual phoneme was collected mostly from a project called PyKlatt: http://code.google.com/p/pyklatt/ However it has been further tweaked based on testing and matching with eSpeak's own data.

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

构建NV语音合成器

You will need: - Python 3.7: http://www.python.org - SCons 3: http://www.scons.org/ - Visual Studio 2019 Community

构建:运行scons

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