CMUSphinx系列目錄
關(guān)于中文識別 網(wǎng)上很多都是學(xué)習(xí)自下面的博客,Sphinx武林秘籍(上) 但很多人照做之后紛紛表示識別不出來,我們猜測是某個參數(shù)設(shè)定錯誤或者版本變化導(dǎo)致的 http://www.cnblogs.com/huanghuang/archive/2011/07/14/2106579.html 然后最近我也看了幾篇,查看思路發(fā)現(xiàn)了下面兩篇文章 http://leiwuluan./blog/1287305 - pocketsphinxAdroid離線語音識別---入門 http://zuoshu./blog/1463867 - Android平臺使用PocketSphinx做離線語音識別,小范圍語音99%識別率
這兩篇文章,一個說20%識別,一個說99% 然后再仔細(xì)看之后發(fā)現(xiàn)是 tdt_sc_8k 中文識別模型 然后小范圍語音99%識別率這個博客的博主(好長的稱呼,直接叫99博主算了。。。)說的直接用在線工具(http://www.speech.cs./tools/lmtool.html)生成的字典和語言模型,那時候我去測試了下,發(fā)現(xiàn)不支持分詞,也不支持語料庫里注音,我就直接扔掉了結(jié)果。?!,F(xiàn)在想來,我應(yīng)該也測試一把的 然后我突然想到,上次那個zh_broadcastnews_ptm256_8000 雖然測試的沒識別出來任何東西,但不是有個很全的語料庫嗎?2.1mb的純文本 我就去打開了看,并挨個單詞搜了下,單詞的確很全 但是LM模型呢?在線工具不支持中文分詞。。。我自己有沒搞懂lm的格式和參數(shù)各自是什么 然后想到不支持分詞,那我自己分詞,然后讓在線工具生成不行嗎?就跟上午英語識別一樣 下面是我的command6.txt 打開 瀏覽器 打開 音樂 打開 記事本 關(guān)閉 窗口 關(guān)閉 音樂 然后直接用生成的6010.lm,因為6010.dic注音表完全是空白的(在線工具不支持中文注音映射到英文)直接扔掉。 然后直接調(diào)用了zh_broadcastnews_utf8.dic,發(fā)現(xiàn)識別不出來。。。明明和上午的格式一樣 然后想起來zh_broadcastnews_utf8.dic這個這么大,lm那么小,是不是太大了,而且文件開頭一大段看不懂的東東然后我自己就臨時創(chuàng)建了一個6010.dic 內(nèi)容是 這里的發(fā)音是怎么出來的?我其實就是在zh_broadcastnews_utf8.dic里面查找到那個單詞后,復(fù)制過來的 然后測試 pocketsphinx_continuous -hmm tdt_sc_8k -lm 6010.lm -dict 6010.dic 我去,竟然能識別的出來。。。下面是結(jié)果 INFO: ngram_search.c(875): bestpath 0.00 CPU 0.000 xRT INFO: ngram_search.c(878): bestpath 0.00 wall 0.001 xRT 000000003: 打開 瀏覽器 READY.... Listening... Stopped listening, please wait... INFO: cmn_prior.c(121): cmn_prior_update: from < 50.66 1.37 0.15 0.75 -0.44 0.37 0.02 0.19 -0.09 0.08 0.04 -0.07 -0.00 > INFO: cmn_prior.c(139): cmn_prior_update: to < 52.13 1.51 0.64 0.68 -0.80 0.44 -0.26 0.10 -0.07 -0.03 0.08 -0.19 -0.02 > INFO: ngram_search_fwdtree.c(1549): 825 words recognized (5/fr) INFO: ngram_search_fwdtree.c(1551): 18335 senones evaluated (111/fr) INFO: ngram_search_fwdtree.c(1553): 7691 channels searched (46/fr), 965 1st, 4828 last INFO: ngram_search_fwdtree.c(1557): 1203 words for which last channels evalu ated (7/fr) INFO: ngram_search_fwdtree.c(1560): 343 candidate words for entering last p hone (2/fr) INFO: ngram_search_fwdtree.c(1562): fwdtree 0.05 CPU 0.028 xRT INFO: ngram_search_fwdtree.c(1565): fwdtree 2.52 wall 1.528 xRT INFO: ngram_search_fwdflat.c(305): Utterance vocabulary contains 5 words INFO: ngram_search_fwdflat.c(940): 630 words recognized (4/fr) INFO: ngram_search_fwdflat.c(942): 14119 senones evaluated (86/fr) INFO: ngram_search_fwdflat.c(944): 6618 channels searched (40/fr) INFO: ngram_search_fwdflat.c(946): 1293 words searched (7/fr) INFO: ngram_search_fwdflat.c(948): 206 word transitions (1/fr) INFO: ngram_search_fwdflat.c(951): fwdflat 0.03 CPU 0.019 xRT INFO: ngram_search_fwdflat.c(954): fwdflat 0.02 wall 0.015 xRT INFO: ngram_search.c(1201): </s> not found in last frame, using <sil>.163 instea d INFO: ngram_search.c(1253): lattice start node <s>.0 end node <sil>.105 INFO: ngram_search.c(1281): Eliminated 99 nodes before end node INFO: ngram_search.c(1386): Lattice has 215 nodes, 219 links INFO: ps_lattice.c(1352): Normalizer P(O) = alpha(<sil>:105:163) = -1028613 INFO: ps_lattice.c(1390): Joint P(O,S) = -1029390 P(S|O) = -777 INFO: ngram_search.c(875): bestpath 0.00 CPU 0.000 xRT INFO: ngram_search.c(878): bestpath 0.00 wall 0.001 xRT 000000004: 關(guān)閉 音樂 如果的確說了的話,也跟上午的準(zhǔn)確率差不多,說了11句,全部識別正確了 不過這個識別庫貌似比較敏感,我沒說話,只有鍵盤聲音他竟然能識別成打開 要實用的話、這個問題可能要解決。
然后hmm模型調(diào)用 zh_broadcastnews_ptm256_8000之后,發(fā)現(xiàn)他智能識別一開始語料庫里出現(xiàn)過,所以在語料庫有記錄的組合 這樣的話,損失一些自由度,比如我開始的語料庫沒有 ”打開窗口“這句話,但是使用tdt_sc_8k這個模型,他能準(zhǔn)確的識別出來,而zh_broadcastnews_ptm256_8000識別不出來。應(yīng)該是對lm的依賴度和策略選擇問題。 上午的hub4wsj_sc_8k和tdt_sc_8k都是默認(rèn)提供的簡單模型,實際使用識別都很準(zhǔn)確。但是tdt_sc_8k有時候過于自由敏感,某一次連鍵盤敲擊聲竟然都識別成了打開 不過有人說話的話還是很準(zhǔn)確的。 至于這個自由度的度量,只能看你們需要什么程度的模型了。
然后就是那個zh_broadcastnews_utf8.dic這個字典、如果你不想自己搜索,并粘貼過去,可以。但是你需要把dic字典文檔的編碼轉(zhuǎn)換成GB2312的、那樣才能識別,否則系統(tǒng)識別不了你的字典。因為zh_broadcastnews_utf8.dic這個本身的編碼是utf8的、而windows下貌似默認(rèn)識別的是GB2312;UTF-8的會出現(xiàn)亂碼或者不能識別 而linux下又只是識別UTF-8,而不識別GB2312。跟著武林秘籍訓(xùn)練lm和dic的可以查看下你們訓(xùn)練的文檔編碼格式對不對,有時候這個編碼錯誤,直接出現(xiàn)空白的
能識別到中文真是糾結(jié)啊,各種查官網(wǎng)資料,語音識別資料,還有好幾個博客。 雖然有些照做不能跑,但是畢竟博主們都各自運行成功過,都有不少借鑒價值 這套方案,雖然挺麻煩的,但至少可以用。大家先參考下
|
|
|