簡介
??拼音字典(phonetic dictionary,我自己是這么翻譯的,可能不準確,能力所限,勿噴_)為語音識別系統提供了語音音素向詞匯表的映射。大致形式如下:
hello H EH L OW
world W ER L D
??拼音字典可以同時包含多音字,這種情況下,可以用括號中的數字來指定多音字。例如:
the TH IH
the(2) TH AH
??語音拼音有多種表示方式,如:IPA和SAMPA。CMUSphinx 不需要我們去使用任何高級的語音表示方式,它更傾向于單純使用字母而不是特殊字符來表示。這樣可以簡化一下處理算法。
??在語音識別實際應用中,拼音字典應該包含所有我們感興趣的單詞,否則這些單詞將不能被識別出來。當然,僅僅在拼音字典中囊括這些單詞也是不行的,因為識別器會同時從拼音字典和語音模型中進行檢索,如果該單詞不在語音模型中,即使這個單詞在拼音字典中,也不能被識別出來。當然,我們也不需要為了節約存儲空間而將拼音字典中不需要識別的單詞移除,這樣做其實對提升性能沒有任何太大的意義,因為多余的單詞并不影響識別的準確率。
使用現有模型
??CMUSphinx提供了大量可以支持的語言的拼音字典,包括US English, French, German, Russian, Dutch, Italian, Spanish and Mandarin(中文)。除了上述的拼音字典外,CMUSphinx提供了構件新的拼音字典或擴展現有字典的方法。
使用g2p-seq2seq擴展拼音字典
??目前有許多工具可以用于擴展現有的拼音字典或構建新的拼音字典,Phonetisaurus 和 Sequitur是其中的兩個,這里推薦使用CMU最新版本的g2p-seq2seq。它是目前轉換精度最好的基于神經網絡實現的tensorflow框架。
??查看G2P工具如何工作的,可以使用交互模式:
g2p-seq2seq --interactive --model model_folder_path
> hello
HH EH L OW
用訓練好的G2P模型生成單詞列表的發音的命令如下:
g2p-seq2seq --decode your_wordlist --model model_folder_path
??單詞列表的格式為每行一個單詞或文字。為了訓練G2P模型,需要一個拼音字典,然后用以下命令進行訓練:
g2p-seq2seq --train train_dictionary.dic --model model_folder_path
??最后,至于拼音字典如何生成,每個語音有不同的生成方式,一般都跟發音方式有關。具體的可以去百度或者維基百科搜索。