人工智慧之語音識別(ASR)
人工智慧之語音識別(ASR),AI產品經理必須知道的語音識別技術原理!
語音識別(Automatic Speech Recognition,簡稱ASR) ,是語音互動中最基礎的一個AI技術環節,常見的如siri,智慧音響等。
一、核心概念
1、 語音識別 (Automatic Speech Recognition)
簡稱 ASR ;是 將聲音轉化為文字 的過程。
1) 語音識別原理流程 :“輸入——編碼——解碼——輸出”
語音識別,大體可分為“ 傳統 ”識別方式與“ 端到端 ”識別方式,其 主要差異體現在聲學模型 上。“傳統”方式的聲學模型一般採用 隱馬爾可夫模型(HMM) ,而“端到端”方式一般採用 深度神經網路(DNN) 。
實際場景 ,有很多種 異常情況 ,都會導致語音識別的 效果大打折扣 ,比如距離太遠了,發音不標準,環境嘈雜,打斷等等。所以,還需要有各種解決方案來配合。
2)語音識別的 評價指標 —— 識別率
看 純引擎的識別率 ,以及 不同訊雜比狀態下的識別率 (訊雜比模擬不同車速、車窗、空調狀態等),還有 線上/離線識別 的區別。
實際工作中,一般識別率的直接指標是“WER (詞錯誤率,Word Error Rate)”
定義:為了使識別出來的詞序列和標準的詞序列之間保持一致,需要進行替換、刪除或者插入某些詞,這些插入、替換或刪除的詞的總個數,除以標準的詞序列中詞的總個數的百分比,即為WER。
公式為:
- Substitution——替換
- Deletion——刪除
- Insertion——插入
- N——單詞數目
3點說明
A)WER可以分男女、快慢、口音、數字/英文/中文等情況,分別來看。
B)因為有插入詞,所以理論上WER有可能大於100%,但實際中、特別是大樣本量的時候,是不可能的,否則就太差了,不可能被商用。
C)站在純產品體驗角度,很多人會以為識別率應該等於“句子識別正確的個數/總的句子個數”,即“識別(正確)率等於96%”這種,實際工作中,這個應該指向 “SER (句錯誤率,Sentence Error Rate)”,即“ 句子識別錯誤的個數/總的句子個數 ”。
2、遠場語音識別(Farfield Voice Recognition)
遠場語音識別,簡稱 遠場識別 ,口語中可更簡化為“ 遠場 ”。主要3個概念:語音啟用檢測、語音喚醒、以及麥克風陣列。
1) 語音啟用檢測 (voice active detection, VAD )
A)需求背景:
在近場識別場景,比如使用語音輸入法時,使用者可以用手按著語音按鍵說話,結束之後鬆開,由於近場情況下訊雜比(signal to noise ratio, SNR)比較高,訊號清晰,簡單演算法也能做到有效可靠。但遠場識別場景下,使用者不能用手接觸裝置,這時受噪聲影響比較大,SNR較低,必須使用VAD了。
B)定義:
判斷什麼時候有語音/什麼時候沒有語音 (靜音)。
後續的語音訊號處理或是語音識別,都是通過“VAD 檢測的語音起始點幀位置”擷取出來的有效語音片段上進行的。
2) 語音喚醒 (keyword spotting,簡稱 KWS ;或voice trigger, VT )
A)需求背景:
在近場識別時,使用者可以點選按鈕後直接說話,但是遠場識別時,需要 在VAD檢測到人聲之後,進行語音喚醒 ,相當於叫這個AI(機器人)的名字,引起ta的注意,比如蘋果的“Hey Siri”,Google的“OK Google”,亞馬遜Echo的“Alexa”等。
B)定義:
可以理解為 喊名字,引起聽者的注意 。
VT判斷是喚醒(啟用)詞,那後續的語音就應該進行識別了;否則,不進行識別。
C)語音喚醒的 應用互動模式
- 傳統模式 :先喚醒裝置,等裝置反饋後(提示音或亮燈),使用者認為裝置被喚醒了,再發出語音控制命令,缺點在於互動時間長;
- One-shot :直接將喚醒詞和工作命令一同說出,如“小雅小雅,我想聽周杰倫的歌”;
- Zero-shot :將常用使用者指令設定為喚醒詞,達到使用者無感知喚醒,例如直接對車機說“導航到XX大廈”。
- 多喚醒 :主要滿足使用者個性化的需求,給裝置起多個名字。
D)語音喚醒的 評價指標 (也是 難點 )
a) 喚醒率 。叫AI的時候,ta成功被喚醒的比率(注:喊ta的時候,ta不答應,叫做 漏報)。
b) 誤喚醒率(誤報) 。沒叫AI的時候,ta自己跳出來講話的比率;有時會按照“天”來算,比如要求“一天內不超過一次”。如果誤喚醒比較多,特別比如半夜時,智慧音響突然開始唱歌或講故事,會特別嚇人的……
- 注1:喚醒率=喚醒中真實喚醒的數量/嘗試喚醒的總數。這裡特意強調“真實喚醒的數量”,是因為喚醒的總資料中,還會包含誤喚醒的資料。
- 注2:關於準確率precision、召回率Recall等概念的辨析。
c) 喚醒詞的音節長度 。一般技術上要求,最少3個音節,如果音節太短,一般誤喚醒率會比較高。比如“OK Google”和“Alexa”有四個音節,“Hey Siri”有三個音節;國內的小雅智慧音響,喚醒詞是“小雅小雅”。不過,Rokid的喚醒詞“若琪”,做到了只有兩個音節,據說是全球唯一。
d) 喚醒響應時間 。
據說,除了Echo和小雅智慧音響能達到1.5秒,其他的都在3秒以上。
e) 功耗(要低) 。
看過報導,說iPhone 4s出現Siri,但直到iPhone 6s之後才允許不接電源的情況下直接喊“Hey Siri”進行語音喚醒;這是因為有6s上有一顆專門進行語音啟用的低功耗晶片,當然演算法和硬體要進行配合,演算法也要進行優化。
E)語音識別和語音喚醒的 本地/雲端策略
- 語音識別 :
- 通用的ASR一般在 雲端 ,不過目前很多裝置採用 離線上融合 的方式,一是解決無網狀態下的語音識別,二是一些常用指令,靠離線引擎的更快,體驗更好,三是有些廠商提供的個性化識別服務依賴本地模型。
- 語音喚醒 :
- 雖然很多具體產品的方案是 離線 方案,但目前亞馬遜、蘋果都明確在技術文件中表示,其使用了 雲端喚醒的方案(一級喚醒在本地,二級喚醒在雲端) 。
3) 麥克風陣列(Microphone Array)
A)需求背景:
在會議室、戶外、商場等各種複雜環境下,會有噪音、混響、人聲干擾、回聲等各種問題。特別是遠場環境,要求拾音麥克風的靈敏度高,這樣才能在較遠的距離下獲得有效的音訊振幅,同時近場環境下又不能爆音(振幅超過最大量化精度)。另外,家庭環境中的牆壁反射形成的混響對語音質量也有不可忽視的影響。
B)定義:
由一定數目的聲學感測器(一般是麥克風)組成,用來對聲場的空間特性進行取樣並處理的系統。
C)能幹什麼
- 語音增強(Speech Enhancement) :
- 當語音訊號被各種各樣的噪聲(包括語音)干擾甚至淹沒後,從含噪聲的語音訊號中提取出純淨語音的過程。
- 聲源定位(Source Localization) :
- 使用麥克風陣列來計算目標說話人的角度和距離,從而實現對目標說話人的跟蹤以及後續的語音定向拾取。
- 去混響(Dereverberation) :
- 聲波在室內傳播時,要被牆壁、天花板、地板等障礙物形成反射聲,並和直達聲形成疊加,這種現象稱為混響。
- 聲源訊號提取/分離 :
- 聲源訊號的提取就是從多個聲音訊號中提取出目標訊號,聲源訊號分離技術則是將需要將多個混合聲音全部提取出來。
D)分類
- 按陣列形狀分:線性、環形、球形麥克風 。
在原理上,三者並無太大區別,只是由於空間構型不同,導致它們可分辨的空間範圍也不同。比如,在聲源定位上,線性陣列只有一維資訊,只能分辨180度;環形陣列是平面陣列,有兩維資訊,能分辨360度;球性陣列是立體三維空間陣列,有三維資訊,能區分360度方位角和180度俯仰角。
- 按麥克風個數分:單麥、雙麥、多麥。
麥克風的個數越多,對說話人的定位精度越高,在嘈雜環境下的拾音質量越高;但如果互動距離不是很遠,或者在一般室內的安靜環境下,5麥和8麥的定位效果差異不是很大。
據說,全行業能做“6+1”麥克風陣列(環形對稱分佈6顆,圓心中間有1顆)的公司可能不超過兩三家,包括獵戶星空在內。而Google Home目前採用的是2mic的設計。
E)問題
- 距離太遠時(比如10m、20m),錄製訊號的訊雜比會很低,演算法處理難度很大;
- 對於便攜裝置來說,受裝置尺寸以及功耗的限制,麥克風的個數不能太多,陣列尺寸也不能太大。——分散式麥克風陣列技術則是解決當前問題的一個可能途徑。
- 麥克風陣列技術仍然還有很大的提升空間,尤其是背景噪聲很大的環境裡,如家裡開電視、開空調、開電扇,或者是在汽車裡面等等。
整體來說,遠場語音識別時,需要前後端結合去完成。一方面在前端使用麥克風陣列硬體,對聲源定位並通過自適應波束進行語音增強,在前端完成遠場拾音,並解決噪聲、混響、回聲等帶來的影響。另一方面,由於近場、遠場的語音訊號,在聲學上有一定的規律差異,所以在後端的語音識別上,還需要結合基於大資料訓練、針對遠場環境的聲學模型,才能較好解決識別率的問題。
4) 全雙工(Full-Duplex)
A)需求背景:
在傳統的語音喚醒方案中,是一次喚醒後,進行語音識別和互動,互動完成再進入待喚醒狀態。但是在實際人與人的交流中,人是可以 與多人對話的,而且支援被其他人插入和打斷。
B)定義:
- 單工 :a和b說話,b只能聽a說
- 半雙工 :參考對講機,A:能不能聽到我說話,over;B:可以可以,over
- 全雙工 :參考打電話,A:哎,老王啊!balabala……;B:balabala……
C)包含feature
人聲檢測、智慧斷句、拒識(無效的語音和無關說話內容)和回聲消除(Automatic Echo Cancellation ,簡稱AEC,在播放的同時可以拾音)。
特別說下回聲消除的需求背景:
近場環境下,播放音樂或是語音播報的時候可以按鍵停止這些,但遠場環境下,遠端揚聲器播放的音樂會回傳給近端麥克風,此時就需要有效的回聲消除演算法來抑制遠端訊號的干擾。
5) 糾錯
A)需求背景:
做了以上硬體、演算法優化後,語音識別就會OK了嗎?還不夠。因為還會 因為同音字(詞)等各種異常情況,導致識別出來的文字有偏差,這時,就需要做“糾錯”了。
B) 使用者主動糾錯
比如使用者語音說“我們今天,不對,明天晚上吃啥?”,經過雲端的自然語言理解過程,可以直接顯示使用者真正希望的結果“我們明天晚上吃啥”
C)根據場景/功能領域不同, AI來主動糾錯 。這裡,根據糾錯目標資料的來源,可以進一步劃分為3種:
a) 本地為主
比如, 打電話 功能。有位很好的朋友叫郭家,如果說“打電話給guo jia時”,一般語音識別預設出現的肯定是“國家”,但(手機)本地會有通訊錄,所以可以根據拼音,優先在通訊錄中尋找更匹配(相似度較高)的名字——郭家。就顯示為“打電話給郭家”。
b) 本地+雲端
比如, 音樂 功能。使用者說,“我想聽XX(歌曲名稱)”時,可以優先在本地的音樂庫中去找相似度較高的歌曲名稱,然後到雲端曲庫去找,最後再合在一起(排序)。
例如,實際工作中,遇到過的“糾錯例子”包括:
- 夜半小夜曲—>月半小夜曲
- 讓我輕輕地告訴你—>讓我輕輕的告訴你
- 他說—>她說
- 望凝眉—>枉凝眉
- 一聽要幸福—>一定要幸福
- 苦啥—>哭砂
- 鴿子是個傳說—>哥只是個傳說
c) 雲端為主
比如 地圖 功能,由於POI(Point of Interest,興趣點,指地理位置資料)資料量太大,直接到雲端搜尋可能更方便(除非是“家”、“公司”等個性化場景)。比如,使用者說“從武漢火車站到東福”,可以被糾正為“從武漢火車站到東湖”。
2 當前技術邊界
各家公司在宣傳時,會說語音識別率達到了97%,甚至98%,但那一般是需要使用者在 安靜環境下,近距離、原地不動、慢慢的、認真清晰發音 ;而在一些 實際場景,很可能還不夠好的 ,比如——
1、比如在大家都認為相對容易做的 翻譯 場景,其實也還沒完全可用,臺上演示是一回事,普通使用者使用是另一回事;特別是在一些 垂直行業,領域知識很容易出錯。
2、 車載
車內語音識別的難點很多,除了 多人說話的干擾 ,還有 胎噪 、 風噪 ,以及經常處於 離線 情況。
據說有的公司專門在做 車內降噪 ,還有些公司想通過 智慧硬體 來解決,至少目前好像還沒有哪個產品解決好了這個問題,並且獲得了使用者的口碑稱讚。
3、 家庭場景
由於相對安靜和可控,如果遠場做好了,還是有希望的。
4、 中英文混合 。
特別在聽歌場景,使用者說想聽某首英文歌時,很容易識別錯誤的。這方面,只有小雅音響曾說自己做了很多優化工作。
目前AI領域內, ASR已經是相對成熟(商用)的技術了,但還是需要使用者配合AI在特定場景下使用。
https://www.toutiao.com/a6721479023446196750/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2652896/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASR-使用whisper語音識別
- 語音識別 (ASR) 模型測試 之 評估指標探索模型指標
- 人工智慧 (08) 語音識別人工智慧
- 語音識別模型模型
- JavaScript的語音識別JavaScript
- 語音識別技術
- 語音情感識別--RNNRNN
- 揭秘語音識別演算法的神奇之處演算法
- 深度瞭解語音識別之發音詞典及語音資料採集標註
- 樹莓派語音互動--語音輸入識別樹莓派
- 論文筆記:語音情感識別(五)語音特徵集之eGeMAPS,ComParE,09IS,BoAW筆記特徵
- Swift-語音識別、翻譯Swift
- Python語音識別終極指南Python
- [譯] 使用 WFST 進行語音識別
- 百度API---語音識別API
- 語音識別2 -- Listen,Attend,and Spell (LAS)
- 詳解ASR語音轉寫場景下的應用
- 怎麼關閉win10語音識別 win10如何關閉電腦的語音識別Win10
- python語音識別入門及實踐Python
- 30分鐘實現小程式語音識別
- 語音識別CTC演算法原理解釋演算法
- 科大訊飛,不只是智慧語音識別
- 語音識別技術竟然發展如此迅速
- 海南話語音識別模型——模型訓練(一)模型
- 5 款不錯的開源語音識別/語音文字轉換系統
- 極速進化,光速轉錄,C++版本人工智慧實時語音轉文字(字幕/語音識別)Whisper.cpp實踐C++人工智慧
- 谷歌再獲語音識別新進展:利用序列轉導來實現多人語音識別和說話人分類谷歌
- 新一代 Kaldi: 支援 JavaScript 進行本地語音識別和語音合成啦!JavaScript
- 用python呼叫百度語音識別api批量處理本地語音檔案PythonAPI
- Windows10系統如何禁用語音識別功能Windows
- 語音識別技術有哪些應用場景?
- AI 聲音:數字音訊、語音識別、TTS 簡介與使用示例AI音訊TTS
- 邊緣計算、語音識別技術、人工智慧將助力PropTech掀起商業地產大革命人工智慧
- 思必馳xiaochi獲2020 AESR“口音種類識別“冠軍和“口音英語語音識別”亞軍
- 小程式實現語音識別到底要填多少坑?
- SACC 2017:網際網路大廠語音識別如何?
- 訊飛 離線語音識別+替換自己的id
- 語音識別--kaldi環境搭建(基於Ubuntu系統)Ubuntu