![]()
關(guān)于中文識(shí)別 網(wǎng)上很多都是學(xué)習(xí)自下面的博客,Sphinx武林秘籍(上) 但很多人照做之后紛紛表示識(shí)別不出來(lái),我們猜測(cè)是某個(gè)參數(shù)設(shè)定錯(cuò)誤或者版本變化導(dǎo)致的 http://www.cnblogs.com/huanghuang/archive/2011/07/14/2106579.html 然后最近我也看了幾篇,查看思路發(fā)現(xiàn)了下面兩篇文章 http://leiwuluan./blog/1287305 - pocketsphinxAdroid離線語(yǔ)音識(shí)別---入門 http://zuoshu./blog/1463867 - Android平臺(tái)使用PocketSphinx做離線語(yǔ)音識(shí)別,小范圍語(yǔ)音99%識(shí)別率
這兩篇文章,一個(gè)說(shuō)20%識(shí)別,一個(gè)說(shuō)99% 然后再仔細(xì)看之后發(fā)現(xiàn)是 tdt_sc_8k 中文識(shí)別模型 然后小范圍語(yǔ)音99%識(shí)別率這個(gè)博客的博主(好長(zhǎng)的稱呼,直接叫99博主算了。。。)說(shuō)的直接用在線工具(http://www.speech.cs./tools/lmtool.html)生成的字典和語(yǔ)言模型,那時(shí)候我去測(cè)試了下,發(fā)現(xiàn)不支持分詞,也不支持語(yǔ)料庫(kù)里注音,我就直接扔掉了結(jié)果。。?,F(xiàn)在想來(lái),我應(yīng)該也測(cè)試一把的 然后我突然想到,上次那個(gè)zh_broadcastnews_ptm256_8000 雖然測(cè)試的沒(méi)識(shí)別出來(lái)任何東西,但不是有個(gè)很全的語(yǔ)料庫(kù)嗎?2.1mb的純文本 我就去打開了看,并挨個(gè)單詞搜了下,單詞的確很全 但是LM模型呢?在線工具不支持中文分詞。。。我自己有沒(méi)搞懂lm的格式和參數(shù)各自是什么 然后想到不支持分詞,那我自己分詞,然后讓在線工具生成不行嗎?就跟上午英語(yǔ)識(shí)別一樣 下面是我的command6.txt 打開 瀏覽器 打開 音樂(lè) 打開 記事本 關(guān)閉 窗口 關(guān)閉 音樂(lè) 然后直接用生成的6010.lm,因?yàn)?010.dic注音表完全是空白的(在線工具不支持中文注音映射到英文)直接扔掉。 然后直接調(diào)用了zh_broadcastnews_utf8.dic,發(fā)現(xiàn)識(shí)別不出來(lái)。。。明明和上午的格式一樣 然后想起來(lái)zh_broadcastnews_utf8.dic這個(gè)這么大,lm那么小,是不是太大了,而且文件開頭一大段看不懂的東東然后我自己就臨時(shí)創(chuàng)建了一個(gè)6010.dic 內(nèi)容是 窗口 ch uang k ou
打開 d a k ai
關(guān)閉 g uan b i
記事本 j i sh ib b en
瀏覽器 l iu l an q i
音樂(lè) y in uxs uxe
這里的發(fā)音是怎么出來(lái)的?我其實(shí)就是在zh_broadcastnews_utf8.dic里面查找到那個(gè)單詞后,復(fù)制過(guò)來(lái)的 然后測(cè)試 pocketsphinx_continuous -hmm tdt_sc_8k -lm 6010.lm -dict 6010.dic 我去,竟然能識(shí)別的出來(lái)。。。下面是結(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)閉 音樂(lè) 如果的確說(shuō)了的話,也跟上午的準(zhǔn)確率差不多,說(shuō)了11句,全部識(shí)別正確了 不過(guò)這個(gè)識(shí)別庫(kù)貌似比較敏感,我沒(méi)說(shuō)話,只有鍵盤聲音他竟然能識(shí)別成打開 要實(shí)用的話、這個(gè)問(wèn)題可能要解決。
然后hmm模型調(diào)用 zh_broadcastnews_ptm256_8000之后,發(fā)現(xiàn)他智能識(shí)別一開始語(yǔ)料庫(kù)里出現(xiàn)過(guò),所以在語(yǔ)料庫(kù)有記錄的組合 這樣的話,損失一些自由度,比如我開始的語(yǔ)料庫(kù)沒(méi)有 ”打開窗口“這句話,但是使用tdt_sc_8k這個(gè)模型,他能準(zhǔn)確的識(shí)別出來(lái),而zh_broadcastnews_ptm256_8000識(shí)別不出來(lái)。應(yīng)該是對(duì)lm的依賴度和策略選擇問(wèn)題。 上午的hub4wsj_sc_8k和tdt_sc_8k都是默認(rèn)提供的簡(jiǎn)單模型,實(shí)際使用識(shí)別都很準(zhǔn)確。但是tdt_sc_8k有時(shí)候過(guò)于自由敏感,某一次連鍵盤敲擊聲竟然都識(shí)別成了打開 不過(guò)有人說(shuō)話的話還是很準(zhǔn)確的。 至于這個(gè)自由度的度量,只能看你們需要什么程度的模型了。
然后就是那個(gè)zh_broadcastnews_utf8.dic這個(gè)字典、如果你不想自己搜索,并粘貼過(guò)去,可以。但是你需要把dic字典文檔的編碼轉(zhuǎn)換成GB2312的、那樣才能識(shí)別,否則系統(tǒng)識(shí)別不了你的字典。因?yàn)閦h_broadcastnews_utf8.dic這個(gè)本身的編碼是utf8的、而windows下貌似默認(rèn)識(shí)別的是GB2312;UTF-8的會(huì)出現(xiàn)亂碼或者不能識(shí)別 而linux下又只是識(shí)別UTF-8,而不識(shí)別GB2312。跟著武林秘籍訓(xùn)練lm和dic的可以查看下你們訓(xùn)練的文檔編碼格式對(duì)不對(duì),有時(shí)候這個(gè)編碼錯(cuò)誤,直接出現(xiàn)空白的
能識(shí)別到中文真是糾結(jié)啊,各種查官網(wǎng)資料,語(yǔ)音識(shí)別資料,還有好幾個(gè)博客。 雖然有些照做不能跑,但是畢竟博主們都各自運(yùn)行成功過(guò),都有不少借鑒價(jià)值 這套方案,雖然挺麻煩的,但至少可以用。大家先參考下
|
|