水晶文字转换语音(TTS)引擎
C++ 实现的水晶文字转换语音(TTS)引擎。
水晶 TTS 引擎提供了一个多语言 TTS 合成引擎的统一框架实现——水晶。 统一框架定义了不同语言和/或方言的通用 TTS 模块。 连续模块之间的接口符合语音合成标记语言(SSML)规范,以实现标准化、互操作性、多语言性和可扩展性。
架构
参考文献
有关框架的动机和设计,您可以参考以下论文。 请也将此文献用作该项目的参考:
- 吴志勇,曹光启,孟乐英,蔡连洪,"SSML规范作为接口的多语言文本到语音合成的统一框架", 清华科学与技术,第 14 卷,第 5 期,第 623-630,2009 年 10 月。
原生支持 SSML
该框架使用语音合成标记语言(SSML)规范作为不同模块之间的接口。因此,框架原生支持 SSML 标签。
同时,框架提供 cst::xml::CSSMLTraversal(xml/ssml_traversal)将 SSML 文档转换为内部数据结构以便于处理。这意味着在实现自己的算法时实际上不需要处理复杂的 SSML 文档解析过程。你需要做的只是通过覆盖 cst::tts::base::* 模块中的函数以内部数据结构来实现你的算法。
支持动态模块加载和跨平台
该框架支持在不同平台上的动态模块加载。
您可以为每个模块实现不同的算法并编译为新的动态库(Windows 上的 .dll,Linux 平台上的 .so)。 框架的主架构 cst::tts::base::CTextParser(ttsbase/tts.text/tts_textparser)和 cst::tts::base::CSynthesizer(ttsbase/tts.synth/tts_synthesizer)会自动加载由基于 XML 的配置文件指定的模块。 通过这种方式,框架提供在不同 TTS 引擎或算法之间切换的灵活性。
例如,上左图通过指定 "cmn.xml" 作为配置输入来运行拼接普通话 TTS 引擎;而上右图通过指定 "zh.xml" 作为配置输入来运行基于 HMM 的中文 TTS 引擎。
支持多语言 TTS 引擎
您可以通过覆盖 cst::tts::base::* 中的 TTSBase 模块来实现不同语言的 TTS 引擎。下图描绘了架构的多语言支持。
关于项目
版权所有 © 清华大学 - 香港中文大学联合媒体科学、技术与系统研究中心。保留所有权利。
http://mjrc.sz.tsinghua.edu.cn
清华大学 - 香港中文大学联合研究中心有权创建、修改、复制、编译、删除、重命名、解释和交付源代码。