《智能語音》專題第三章:泛語音識別。設(shè)備在獲取到語音信號之后,如何將其轉(zhuǎn)換為所需要識別的內(nèi)容(文本、符號、狀態(tài)、模式等等),完成“聽懂”這個過程?!奥牰钡臉藴蕬?yīng)該如何定義,有哪些要點需要注意,在我們進行產(chǎn)品設(shè)計的時候應(yīng)當如何處理,本文將為您解答。本專題之前章節(jié)參考:JimmyChen:智能語音專題(一):智能語音交互的概念JimmyChen:智能語音專題(二):語音信號處理
語音識別ASR(Auto Speech Recognition)負責(zé)將輸入的語音信號轉(zhuǎn)化為文本識別結(jié)果。
ASR拿到的語音信號一般是經(jīng)過VAD處理后的語音,音頻中的靜默、非語音的端頭和端尾部分應(yīng)當已經(jīng)被切割掉。(語音開頭和結(jié)尾處的靜默語音是一定程度上能提升語音識別率的,尤其針對短句子。)
語音信號首先進行特征提取,將語音信息進行數(shù)字量化,聲學(xué)模型描述出語音的單個發(fā)音特點,發(fā)音詞典和語言模型描述出發(fā)音之間的關(guān)系,之后解碼器基于這兩個模型組合的所有可能組合,找到最優(yōu)解,給出最終的識別結(jié)果。
ASR功能劃分
核心模塊按功能劃分為以上部分,而語音信號中的從提取信息的數(shù)據(jù)流上分為以下部分。
語音信息流
整個語音識別的過程可以概況為兩個核心學(xué)科的綜合應(yīng)用,一個是聲學(xué),一個是語言學(xué)。
語音識別中的聲學(xué)
之前大量的篇章講了語音信號處理,基于聲學(xué)場景,增強我們需要識別的聲音,抑制我們不需要識別的聲音,怎么現(xiàn)在這里又要講聲學(xué),有什么區(qū)別嗎?
當然有的,信號處理的聲學(xué)我們關(guān)注的是空間、聲源、噪音的相互影響,關(guān)注的是環(huán)境層面的聲學(xué);而語音識別中的聲學(xué),關(guān)注的是語音和語言中的聲學(xué),覆蓋的是目標語言的聲學(xué)特點。
我們的每一個發(fā)音稱為“音素”,是語音中的最小單位,比如普通話發(fā)音中的元音,輔音。聲學(xué)模型通過將語音分幀,主要處理發(fā)音相關(guān)的工作,模型包含發(fā)聲的基本音素狀態(tài)和概率,覆蓋了目標語言中的聲學(xué)特點,識別語音中最小的“音素”,再由多個音素組成單詞,再由單詞組成文本句子。
“Hello”聲學(xué)處理示意圖
同樣的一句話,不同人、不同年紀、性別、口音、語速、音調(diào)產(chǎn)生的語音都是不同的,不同場景下安靜的,嘈雜,遠距離的語音也是不同的。同一句“Hello”,不同的人,不同場景下經(jīng)過聲學(xué)處理得到的特征信息,“音素”差異是非常大的,人也很難聽清楚你說的到底是Hello還是Hallo,這也就是聲學(xué)處理的一大難點。
聲學(xué)部分作為語音識別的入口,需要盡可能的覆蓋各種差異性語音,盡量采集多種場景,安靜的,嘈雜的,遠距離的發(fā)聲語料生成聲學(xué)模型,同時我們在做產(chǎn)品定位的時候一定要弄清楚應(yīng)用的場景。一方面是用戶群體,人員結(jié)構(gòu),口音等要求,例如兒童類語音產(chǎn)品大多需要針對兒童發(fā)音特點進行定制;另一方面是噪音疊加場景,距離等要求,例如車載ASR引擎供應(yīng)商一般會疊加不同車速,車窗狀態(tài)的胎噪、風(fēng)噪等噪音數(shù)據(jù)進行ASR的訓(xùn)練。
不同語種、方言、場景之間可能發(fā)音上都有很大的差異,如果不能兼容,這時就需要考慮單獨針對語言或者口音定制,例如不同的方言會用不同的聲學(xué)模型,在提高精度的同時降低計算量。
語音識別中的語言學(xué)
ASR語言學(xué)部分同樣重要,ASR解碼器部分通過語言模型和發(fā)音詞典,在各種發(fā)音之間給出最有可能的文本識別結(jié)果。不同的語言,發(fā)音方式不同,詞匯不同,句型語法也存在差異。
例如漢語是一個單音節(jié),多聲調(diào)的語言,只有400多個無調(diào)音節(jié),帶調(diào)音節(jié)也只有1600多個,但常用的漢字卻有40000多,一音多字和一字多音的情況非常普遍。英語是多音節(jié),比如說good morning,Good有兩個音節(jié),morning也有兩個音節(jié),也不會有分詞的問題,所以整體上英文的識別難度比中文要低。漢語識別難點
針對漢語普通話,語言學(xué)中影響ASR識別率的主要兩個點:
分詞:不同的分詞方式,會導(dǎo)致不同的識別結(jié)果。例如“等/幾首/需要/提前/多久?”和“登機/手續(xù)/要/提前/多久?”,雖說前句從語義上來說不太合理,但是后一句明顯也只有針對登機相關(guān)的場景才會這么說。同音字:一天下課,老師匆匆走進教室說:“來兩個人,我要班花。”大家覺得很好玩,尤其是男生們,很興奮,表現(xiàn)十分積極,經(jīng)過一番周折終于選出了兩個很漂亮的女生,老師大手一揮:“走,和我到教務(wù)處搬花?!?/span>
從上可以看出,語音識別需要結(jié)合語義場景和上下文才能達到一個最佳的效果,這是語言學(xué)應(yīng)當解決的問題,我們一定要知道語音交互時的主題和領(lǐng)域是什么,才不至于對牛彈琴。從產(chǎn)品應(yīng)用層面,行業(yè)內(nèi)的解決方案:
針對各個垂直領(lǐng)域,通用、金融、醫(yī)療、稅務(wù)、車載等等區(qū)分不同的ASR,同時支持定制語言模型,額外收費。產(chǎn)品經(jīng)理梳理出需要的業(yè)務(wù)場景,尋找最優(yōu)的ASR方案。語音交互的業(yè)務(wù)流程中,例如有屏的語音交互場景,能夠限定或者知道用戶接下來會說什么,大概交互范圍是什么。ASR能夠支持個性化熱詞表,200-1000詞條的不等規(guī)模,應(yīng)用中通過上傳對應(yīng)的詞組和句式,定向的提升語音識別率。將ASR和NLP相結(jié)合,通過NLP語義和上下文理解,加權(quán)給出最終的識別結(jié)果。目前運算量和資源消耗都比較大,大多只做少量的糾正,無法達到完全的上下文理解。
整個語音識別基于統(tǒng)計結(jié)果,基于上下文,沒有100%的正確,也沒有萬能的ASR,離開測試集,別說識別率。各個廠商對外宣傳的97%的識別率,使用新聞播音的語音測試可以有95%的識別率,而網(wǎng)絡(luò)課程中針對編程、高數(shù)等領(lǐng)域的識別只有75%(老師通常帶口音)。
即使相同的語言,不同的地域也會體現(xiàn)差異:對應(yīng)發(fā)音的變化、詞匯的變化和語法的變化,方言的支持通常意味著獨立的ASR。有時候市場上可能會有類似的要求,“我要產(chǎn)品能夠同時支持普通話、粵語、四川話、臺灣話、上海話等等,最好能夠自適應(yīng),用戶不管用什么方言自動識別出來?!边@個從目前的技術(shù)現(xiàn)狀來說,無法通過單一的識別引擎做到。
方言和地域差異
針對英文有美國英語、加拿大英語、UK英語、澳洲英語、印度英語等等,上圖右方的是Google 針對不同英語對應(yīng)的ASR識別引擎。
針對漢語有八大語系(方言),北方語系、吳語系、湘語系、贛語系、客家語系、閩南語系、閩東語系和粵語。
1、北方方言以北京話為代表,包括長江以北,鎮(zhèn)江以上九江以下的沿江地帶,四川、云南 、貴州和湖北、湖南兩省的西北部,廣西西部、北部一帶。使用人口占漢族總?cè)藬?shù)的70 %以上。2、吳方言以蘇州話和上海話為代表,主要包括江蘇省長江以南、鎮(zhèn)江以東部分(鎮(zhèn)江不在內(nèi))及長江以北靖江(除西南角新橋、東興等鄉(xiāng))、南通(縣城金沙鎮(zhèn)及周圍鄉(xiāng)村)、海門(北部包場等12鄉(xiāng))、啟東,浙江省大部分,上海市。使用人口占漢族總?cè)藬?shù)的8.4%左右。3、湘方言以長沙話為代表。分布在湖南省大部分地區(qū)。使用人口占漢族總?cè)藬?shù)的5%左右。4、贛方言贛方言 以南昌話為代表。主要分布在江西省(東部沿江地帶和南部除外)和湖北省東南一帶。使用人口占漢族總?cè)藬?shù)的2.4%左右。5、客家方言客家方言是以梅州市區(qū)(梅江區(qū)、梅縣區(qū))梅城口音的梅州話為代表。主要分布在廣東省東部、南部和北部,廣西省東南部,福建省西部,江西省南部,及湖南、四川的少數(shù)地區(qū)。使用人口占漢族總?cè)藬?shù)的4%左右。6、閩東方言閩東方言以福州話為代表,分布在福建省北部和臺灣省的一部分,通行于福建東部的福州十邑,寧德市和南平市部分地區(qū),三明尤溪縣,臺灣地區(qū)的馬祖列島等地。使用人口占漢族總?cè)藬?shù)的1.2%左右。7、閩南方言閩南方言以廈門話為代表。分布在福建省南部,廣東省東部和海南島的一部分,以及臺灣省的大部分。南洋華僑也有不少人說閩南方言。使用人口占漢族總?cè)藬?shù)的3%左右。8、粵方言粵方言以廣州話為代表。分布在廣東省大部分地區(qū)和廣西省東南部。南洋及其他一些國家的華僑,大多數(shù)都說粵方言。使用人口占漢族總?cè)藬?shù)的5%左右。
這些差異都會在聲學(xué)模型、語言模型、發(fā)音詞典中體現(xiàn)。例如:四川話屬于北方語系,發(fā)音和普通話相似度很高,專有的四川話詞匯也比較少,所以大多普通話的ASR在加入了帶口音的數(shù)據(jù)之后能夠較好的支持四川話。而單獨的四川話識別引擎,語言模型可能和普通話差異不大,聲學(xué)模型和發(fā)音詞典則是完全只針對四川本地發(fā)音特點的支持,數(shù)據(jù)規(guī)模和成本等綜合考慮,通常這類方言識別引擎的成熟度是弱于普通話的。
粵語這類發(fā)音有很大差異的語言則無法在普通話引擎中做兼容,帶口音的普通話識別,方言的識別是兩個不同的命題。
前面把主要的聲學(xué)、語言學(xué)相關(guān)介紹之后,我們能夠?qū)SR的實現(xiàn)有了一個基本的了解,同時以上部分關(guān)注的都是對于識別率的影響,而除了識別率,ASR的處理耗時對于語音交互的體驗影響也非常大。當音頻輸入之后,ASR基于音頻給出識別結(jié)果,處理的耗時同音頻長度正相關(guān),語音越長耗時越長。衡量ASR或者識別引擎的耗時,我們通常使用RTF指標,這個指標越小對應(yīng)的耗時性能越好。
識別的耗時/語音長度 = 實時率(RTF),體現(xiàn)ASR的處理性能:800/1200 = 0.67
曾經(jīng)傳統(tǒng)的語音識別方式都是等用戶說完話,然后對應(yīng)的語音上傳給ASR引擎進行識別,這就導(dǎo)致了語音交互的時延和用戶說話的長短強相關(guān),體驗相對較差。在最近幾年由于算力和算法的持續(xù)提升,云端ASR服務(wù)能夠支持更多的計算量,云端引擎都會支持流式語音識別。即我們對設(shè)備說話的時候,引擎可以在開始說話第一個音傳入引擎之時就進行識別,不斷的輸出識別結(jié)果,不斷的校準,當用戶說完之后,VAD 檢測到用戶說話結(jié)束再由ASR輸出流式識別結(jié)果。
ASR耗時示例流式識別示例https:// ** .zhihu.com/video/
這樣做到了邊聽邊識別,語音識別的時延只和最小單元的處理時間有關(guān)(RTF小于1的情況下,ASR處理時延可以穩(wěn)定在一定區(qū)間),開始說話即有響應(yīng),結(jié)合ASR結(jié)果文本回顯的的可視化效果,能夠明顯改善語音交互體驗。(進一步的,我們還可以做到邊聽便理解,提升整個語音交互體驗,在后續(xù)章節(jié)詳細展開)
以上部分介紹了ASR的基本原理,聲學(xué)和語言學(xué)對于識別率的影響,不同方言的影響,時延對于交互體驗的影響,在產(chǎn)品應(yīng)用過程中需要根據(jù)實際的需求、場景進行分析和定義,達到最優(yōu)的產(chǎn)品化語音識別效果。如果有對于技術(shù)細節(jié)想了解的更清楚的同學(xué)可以參考我之前的文章。
JimmyChen:語音交互(一)—— 語音識別
本章的標題稱為泛語音識別,因為我想進一步展開話題討論下語音識別還能做什么。從本質(zhì)上來說,語音識別為一種模式識別技術(shù),輸入相應(yīng)的音頻而得到期望的文本、符號、狀態(tài)和模式,ASR是一個廣義上的應(yīng)用不應(yīng)該只局限于獲得文本,在音頻當中我們還能夠獲得更多有價值的信息。
語音識別的泛應(yīng)用
語音識別的泛應(yīng)用,從聲學(xué)和語言學(xué)上找到特征,可以是純粹的聲學(xué)特征,也可以是結(jié)合在一起的文本特征,主要包含喚醒詞識別、命令詞識別、語種識別、聲紋識別、關(guān)鍵事件監(jiān)測等等應(yīng)用。
喚醒詞識別、命令詞識別:可以理解為語音識別的簡化版,本質(zhì)都是做關(guān)鍵字識別(Key Word Spoting),基于輕量化的聲學(xué)模型,以及個位數(shù)級別的喚醒詞(語言模型),期望低功耗的快速響應(yīng),完成設(shè)備從休眠到等待語音指令狀態(tài)的快速切換,喚醒設(shè)備。關(guān)鍵事件檢測:識別聲音特征,檢測音頻流當中的特殊事件,用來獲取環(huán)境相關(guān)事件信息,未來可以進一步的補充用戶交互的環(huán)境信息。例如嬰兒啼哭,狗叫,警報聲等關(guān)鍵事件,攔截喊麥、嬌喘、 ** 、A ** R等違法違規(guī)音頻。語種識別:在做ASR之前能夠判斷用戶是用的哪一種語言類型,再調(diào)用指定的ASR進行識別。目前的成熟度較低,除非語言的本身差異性較大,同時需要判斷的語言類型少,否則通常都需要1分種左右的語音才能準確判定。產(chǎn)品上如果確實需要類似的需求,可以考慮同時接多個不同語種的ASR引擎,將不同引擎的ASR結(jié)果再并行多語言NLP處理,基于語義輸出對應(yīng)語言的結(jié)果。(成本較高)特征識別:情緒識別,識別聲音特征中的性別、年齡、情緒等等元素,謊言識別等等,除了性別識別準確率較高,其余部分目前主要處于研究階段,未達到可以產(chǎn)品化的成熟度。
最后單說目前應(yīng)用較多的聲紋識別(支付寶和微信都已開通聲紋鎖,大家可以體驗),基于人在講話時使用的發(fā)聲器官在尺寸和形態(tài)方面每個人的差異很大,所以任何兩個人的聲紋圖譜都有差異。不同人的聲音在頻譜圖中共振峰的分布情況不同,聲紋識別正是通過比對兩段語音的說話人在相同音素上的發(fā)聲來判斷是否為同一個人。識別聲音特征,進行1:1和1:N的說話人聲紋特征識別,用于身份校驗或者身份辨別。
聲紋識別
聲紋識別主要包含聲紋注冊和聲紋識別兩個核心部分。
聲紋注冊:用戶通過長語音注冊,識別引擎提取聲紋特征并保存聲紋數(shù)據(jù)庫。聲紋識別:用戶提供語音,識別引擎提取聲紋特征比對聲紋數(shù)據(jù)庫,給出識別結(jié)果。基于提供識別的語音文本和注冊的文本是否相同,分為文本無關(guān)和文本相關(guān)兩種常見?;诒葘r是做1:1比對,還是1:N檢索,分為1:1和1:N兩種不同的應(yīng)用場景。文本相關(guān)場景:注冊文本同驗證文本相同的情況,準確性更高,針對高安全場景。文本無關(guān)場景:注冊文本和驗證文本不同的情況,自由度更高,針對個性化場景。1:1的場景在開卡、開戶、注冊、登錄、解鎖、支付等多場景下,進行聲紋比對,確保身份認證安全。1:N的場景在個性化推薦、門禁、考勤等場景下,進行聲紋檢索,根據(jù)用戶畫像精準匹配身份,實現(xiàn)業(yè)務(wù)效果。
聲紋識別視具體應(yīng)用場景,提出不同的安全性要求,通常支付類和鎖類應(yīng)用需要更高的安全級別。主要采用活體檢測,隨機驗證文本,抵御錄音重放攻擊。采用針對人工語音的非自然檢測模型識別波形拼接、語音合成等攻擊方式。
當我們要采用語音相關(guān)的技術(shù)方案時,基于我們的語音交互場景,需要使用不同的語音技術(shù)。如果制定選型標準,我們應(yīng)該關(guān)注那些語音指標,哪些是會對我們的產(chǎn)品造成明確影響的,羅列以下供大家參考:
主要指標
希望通過此文能夠讓大家對泛語音識別有更好的了解。
免責(zé)聲明: 本文章轉(zhuǎn)自其它平臺,并不代表本站觀點及立場。若有侵權(quán)或異議,請聯(lián)系我們刪除。謝謝! |
微信咨詢客服