建立一个语音词典
介绍
语音词典为系统提供了词汇到音素序列的映射。它可能看起来像这样:
hello H EH L OW
world W ER L D
字典还可以包含替代发音。在这种情况下,您可以用括号中的数字来指定它们:
the TH IH
the(2) TH AH
There are various phonesets to represent phones, such as IPA or SAMPA. CMUSphinx does not yet require you to use any well-known phoneset, moreover, it prefers to use letter-only phone names without special symbols. This requirement simplifies some processing algorithms, for example, you can create files with phone names as part of the filenames without any violating of the OS filename requirements.
A dictionary should contain all the words you are interested in, otherwise the recognizer will not be able to recognize them. However, it is not sufficient to have the words in the dictionary. The recognizer looks for a word in both the dictionary and the language model. Without the language model, a word will not be recognized, even if it is present in the dictionary.
除非你想节省内存,否则不需要从字典中删除未使用的单词,字典中多余的单词不会影响准确性。
使用现有词典
我们支持多种语言的词典 – CMUDict 适用于美国英语、法语、德语、俄语、荷兰语、意大利语、西班牙语和普通话。其他词典可能会在网络上找到。如果字典有正确的格式,您就可以使用它。
如果字典没有涵盖您感兴趣的所有单词,您可以使用g2p工具对其进行扩展。
使用g2p-seq2seq扩展字典
有多种工具可以帮助您扩展现有词典的新单词或从头开始构建新词典。其中两个是 Phonetisaurus和 Sequitur。
我们建议使用我们最新的工具g2p-seq2seq 。它基于 Tensorflow 框架中实现的神经网络,并提供最先进的转换精度。
具有 512 个隐藏单元的英文模型 2 层 LSTM 可以在 CMUSphinx 网站上下载。下载后解压模型。它是根据 CMU 英语词典进行训练的。顾名思义,该模型仅适用于英语。对于其他语言,您首先需要如下所述引导字典,然后使用 G2P 工具扩展它。
检查 G2P 工具如何工作的最简单方法是使用上面的模型运行交互模式:
g2p-seq2seq --interactive --model model_folder_path
> hello
HH EH L OW
要使用经过训练的模型生成英语单词列表的发音,请运行:
g2p-seq2seq --decode your_wordlist --model model_folder_path
单词列表是一个包含单词的文本文件,每行一个单词。
要训练 G2P,您需要一本字典(标准形式中每行一个单词和音素序列)。运行训练:
g2p-seq2seq --train train_dictionary.dic --model model_folder_path
有关 G2P 工具的更多信息,请参阅G2P 项目的自述文件。
引导其他语言的字典
如果您没有适合您的语言的词典,通常可以通过多种方式创建它们。
通常,词典是通过手写规则引导的。您可以在有关您的语言的维基百科页面中找到您的语言的音素列表,并编写一个简单的 Python 脚本将单词映射到音素。即使最好的词典也不可能包含规则,大多数语言的发音都非常不规则,这对于新手来说可能不是很明显,即使传统上认为您说的是书面内容。这是由于人类言语中的协同发音效应造成的。然而,对于一个基本的字典来说,规则已经足够好了。
您可以抓取维基词典以获取其中涵盖的大量单词的映射。
您可以使用 TTS 工具(例如用Java 编写的OpenMary或用 C 编写的Espeak)来为它们支持的语言创建语音词典。
许多使用象形文字的语言(如韩语或日语)都有专门的软件(如Mecab)来将其单词罗马化。您可以使用 Mecab 通过将单词转换为罗马化形式,然后简单地应用规则将它们转换为音素来构建语音词典。
转录几千个最常用的单词来引导词典就足够了。
一旦你的字典被引导,你就可以使用 g2p-seq2seq 工具扩展它以容纳更大的词汇量,如上一节所述。