標籤:

移動設備上的離線語音識別需要哪些技術支持,具體如何實現?


語音識別的過程和實現方式是一致的,無論是離線還是在線方式,只是語音交由本地處理還是雲端處理。離線語音識別的方式,就是語音識別引擎安裝再本地,基於硬體的運算能力和存儲空間限制,離線識別完成的限定範圍內語音識別,完成諸如本地操作命令的工作,現在也在本地做一些類似NLU的動作,但不能完成Dictation即聽寫的任務。對於如果提高性能表現,主要是在有限的範圍內如何壓縮聲學模型,語音模型,語義理解模型找到一個最優的平衡點。


離線識別和雲端識別,本質上沒有任何區別。由於硬體上的巨大差異(只有大約千分之一的可用內存,慢得多的處理器),離線識別要通過一些手段把模型的規模壓縮小,計算量控制到合理的水平。當然,識別的準確率也就大打折扣了。結果就是,目前我們看到的離線識別,大多隻支持少量句型的識別,滿足一些特定應用。對於任意語音的識別也能做,但準確率肯定沒法跟雲端識別比就是了。


感謝邀請。我是語義行業新丁,也非技術口,技術問題不太了解,所以找我們技術幫忙回復這個問題,如下:
基本的技術原理 張俊博 的回答中已經介紹,如果對技術研究感興趣可以去看看相關論文。
語音識別的工程應用中,最大的難題是計算資源的問題,對資源的消耗主要有兩種:
1, 語音識別需要的統計模型:聲學模型,語言模型,如果是在一個語音聽寫的場景,運行期佔用的內存可以達到10G以上甚至更高。 這是對內存資源的依賴。
2, 將用戶輸入的語音跟模型進行匹配搜索的過程(維特比解碼),對CPU的使用極高。
所以通用的大規模的語音識別目前都是在伺服器端進行的。
那麼要將如此大規模資源消耗的識別在手機上完成,有什麼辦法呢? 關鍵是:減少模型的大小。
減少模型大小是以犧牲識別性能為代價的。一般有如下幾種做法:
1, 限定識別的範圍,稱為語法識別,限定用戶只能按照固定的說法說話。比如撥號應用。好處是符合語法的識別率極高,速度也很快,但是給用戶的靈活度不高。
2, 減少模型複雜度,主要體現在:支持的詞表數量減小;減小語言模型的階數(採用bigram比fourgram資源會小很多)。 這個造成的影響就是識別率會下降,但是如果應用場景限定,比如說查天氣,查車票這樣的固定場景,這種方案也還是可行的。這種方案資源大小可以減小到100M以內,目前的手機基本可以支持了。
當然另外一種手機性能的不斷提高,浮點計算能力和內存的增加。


移動設備上的離線語音識別如果要求辭彙量很大的話,會很耗時耗內存。不過隨著移動設備配置增強還是可以實現的。但我更看好在線網路識別的架構,這樣會減輕移動端很多負擔。
有很多開源的系統,其中用到的具體技術還是比較多的,核心的是一個動態規劃演算法。但由於是一個龐大的系統,我給出一些技術的關鍵詞吧:HMM,GMM,LM Look-ahead,token passing,Viterbi Beam Search,n-gram LM,WFST,Lexical Tree,DNN,DTW...


語音識別可以說是模式識別的一個具體的應用。其中涉及的演算法多種多樣。
一般是對採集的聲音進行處理,提取特徵,再在資料庫上進行匹配。
先進的識別模型包括群體智能演算法和神經網路。
谷歌採用神經網路進行識別,並且使用知識圖譜來進行語義分析。
涉及模式識別的就很深奧了。
用於移動設備的分為軟體和硬體兩部分。採用硬體進行特徵提取可以有效降低設備在識別上的功耗。但門檻就會比使用軟體的高很多。像MOTO今年發布的手機採用的是一種所謂的 8X CPU, 其中有兩個語義核專門處理語音。現在使用硬體進行語音識別的應該都是專用集成晶元,不過MOTO的那個核是使用的哪種演算法還不清楚,指不定可能是神經網路。(純手工回答,語言和邏輯上或許欠妥)

最後,感謝邀請,就是我回復的比較遲


我也不是太懂,所以去維基了一下,說一下自己的理解,首先是來自於維基的資料
目前,主流的大辭彙量語音識別系統多採用統計模式識別技術。典型的基於統計模式識別方法的 語音識別系統由以下幾個基本模塊所構成[4]:

信號處理及特徵提取模塊。該模塊的主要任務是從輸入信號中提取特徵,供聲學模型處理。同時,它一般也包括了一些信號處理技術,以儘可能降低環境雜訊、信道、說話人等因素對特徵造成的影響。
統計聲學模型。典型系統多採用基於一階隱馬爾科夫模型進行建模。
發音詞典。發音詞典包含系統所能處理的辭彙集及其發音。發音詞典實際提供了聲學模型建模單元與語言模型建模單元間的映射。
語言模型。語言模型對系統所針對的語言進行建模。理論上,包括正則語言,上下文無關文法在內的各種語言模型都可以作為語言模型,但目前各種系統普遍採用的還是基於統計的N元文法及其變體。
解碼器。解碼器是語音識別系統的核心之一,其任務是對輸入的信號,根據聲學、語言模型及詞典,尋找能夠以最大概率輸出該信號的詞串。

以上是語音識別的各個組成部分,而離線的語音識別,應該也是基於以上的原理,而且在手機內部內置了語音的字典,從而實現無線的識別

我說的就是最簡單的原理,具體的還得看大神們了


我覺得主要是語音識別庫和識別演算法。進行離線語音識別關鍵就是不能聯網進行處理與獲取相關匹配數據,所以離線語音演算法關鍵要利用已有的本地資源進行。
在移動設備上無法存儲大量的訓練數據,所以要利用適當的匹配演算法,比如對漢語進行匹配,如果對一句話進行分詞之後對每一個詞進行匹配,這樣就要對每一個詞進行一次建模並且存儲,要存儲相當大量的數據,而如果對每一個音素進行建模並且識別,那麼存儲的數據量就小得多。
除了從語音識別的角度考慮,還可以從數據存儲、查詢的角度考慮,相當於直接對數據進行抽象,對數據進行一些壓縮,或者使用一些數據結構提高效率。


推薦閱讀:

詞尾輔音是否不利於語音識別?
為什麼 Deep Learning 最先在語音識別和圖像處理領域取得突破?
Moto X 的 Google Now 全程待命喚醒功能是如何實現的?
如何看待小米電視發布會上未提及出門問問對其相關技術支持?

TAG:語音識別 |