語(yǔ)音交互:聊聊語(yǔ)音識(shí)別-ASR
編輯導(dǎo)語(yǔ):語(yǔ)音識(shí)別已經(jīng)走進(jìn)了大家的日常生活中,我們的手機(jī)、汽車、智能音箱均能對(duì)我們的語(yǔ)音進(jìn)行識(shí)別。那么什么是語(yǔ)音識(shí)別呢?它又能應(yīng)用于哪里?該如何對(duì)其進(jìn)行測(cè)試與運(yùn)營(yíng)維護(hù)呢?本文作者為我們進(jìn)行了詳細(xì)地介紹。
現(xiàn)在人機(jī)語(yǔ)音交互已經(jīng)成為我們?nèi)粘I畹囊徊糠?,語(yǔ)音交互更自然,大大的提高了效率。上一篇文章我們聊了語(yǔ)音喚醒,這次我們繼續(xù)聊聊語(yǔ)音交互的關(guān)鍵步驟之一——語(yǔ)音識(shí)別。
一、什么是語(yǔ)音識(shí)別
文字絕對(duì)算是人類最偉大的發(fā)明之一,正是因?yàn)橛辛宋淖郑祟惖奈拿鞒晒诺靡匝永m(xù)。
但是文字只是記錄方式,人類一直都是依靠聲音進(jìn)行交流。所以人腦是可以直接處理音頻信息的,就像你每次聽到別人和你說話的時(shí)候,你就會(huì)很自然地理解,不用先把內(nèi)容轉(zhuǎn)變成文字再理解。
而機(jī)器目前只能做到先把音頻轉(zhuǎn)變成文字,再按照字面意思理解。
微信或者輸入法的語(yǔ)音轉(zhuǎn)文字相信大家都用過,這就是語(yǔ)音識(shí)別的典型應(yīng)用,就是把我們說的音頻轉(zhuǎn)換成文字內(nèi)容。
語(yǔ)音識(shí)別技術(shù)(Automatic Speech Recognition)是一種將人的語(yǔ)音轉(zhuǎn)換為文本的技術(shù)。
概念理解起來很簡(jiǎn)單,但整個(gè)過程還是非常復(fù)雜的。正是由于復(fù)雜,對(duì)算力的消耗比較大,一般我們都將語(yǔ)音識(shí)別模型放在云端去處理。
這也就是我們常見的,不聯(lián)網(wǎng)無法使用的原因,當(dāng)然也有在本地識(shí)別的案列,像輸入法就有本地語(yǔ)音識(shí)別的包。
二、語(yǔ)音識(shí)別的應(yīng)用
語(yǔ)音識(shí)別的應(yīng)用非常廣泛,常見的有語(yǔ)音交互、語(yǔ)音輸入。隨著技術(shù)的逐漸成熟和5G的普及,未來的應(yīng)用范圍只會(huì)更大。
語(yǔ)音識(shí)別技術(shù)的應(yīng)用往往按照應(yīng)用場(chǎng)景進(jìn)行劃分,會(huì)有私人場(chǎng)景、車載場(chǎng)景、兒童場(chǎng)景、家庭場(chǎng)景等,不同場(chǎng)景的產(chǎn)品形態(tài)會(huì)有所不同,但是底層的技術(shù)都是一樣的。
1. 私人場(chǎng)景
私人場(chǎng)景常見的是手機(jī)助手、語(yǔ)音輸入法等,主要依賴于我們常用的設(shè)備—手機(jī)。
如果你的手機(jī)內(nèi)置手機(jī)助手,你可以方便快捷的實(shí)現(xiàn)設(shè)定鬧鐘,打開應(yīng)用等,大大的提高了效率。語(yǔ)音輸入法也有非常明顯的優(yōu)勢(shì),相較于鍵盤輸入,提高了輸入的效率,每分鐘可以輸入300字左右。
2. 車載場(chǎng)景
車載場(chǎng)景的語(yǔ)音助手是未來的趨勢(shì),現(xiàn)在國(guó)產(chǎn)電動(dòng)車基本上都有語(yǔ)音助手,可以高效的實(shí)現(xiàn)對(duì)車內(nèi)一些設(shè)施的控制,比如調(diào)低座椅、打開空調(diào)、播放音樂等。
開車是需要高度集中注意力的事情,眼睛和手會(huì)被占用,這個(gè)時(shí)候使用語(yǔ)音交互往往會(huì)有更好的效果。
3. 兒童場(chǎng)景
語(yǔ)音識(shí)別在兒童場(chǎng)景的應(yīng)用也很多,因?yàn)閮和瘜?duì)于新鮮事物的接受能力很高,能夠接受現(xiàn)在技術(shù)的不成熟。常見的兒童學(xué)習(xí)軟件中的跟讀功能,識(shí)別孩子發(fā)音是否準(zhǔn)確,這就應(yīng)用的是語(yǔ)音識(shí)別能力。
還有一些可以語(yǔ)音交互的玩具,也有ASR識(shí)別的部分。
4. 家庭場(chǎng)景
家庭場(chǎng)景最常見的就是智能音箱和智能電視了,我們通過智能音箱,可以語(yǔ)音控制家里面的所有電器的開關(guān)和狀態(tài);通過語(yǔ)音控制電視切換節(jié)目,搜索我們想要觀看的內(nèi)容。
三、語(yǔ)音識(shí)別詳解
整個(gè)從語(yǔ)音識(shí)別的過程,先從本地獲取音頻,然后傳到云端,最后識(shí)別出文本,就是一個(gè)聲學(xué)信號(hào)轉(zhuǎn)換成文本信息的過程。整個(gè)識(shí)別的過程如下圖:
1. VAD技術(shù)
在開始語(yǔ)音識(shí)別之前,有時(shí)需要把首尾端的靜音切除,降低對(duì)后續(xù)步驟造成干擾,這個(gè)切除靜音的炒作一般稱為VAD。
這個(gè)步驟一般是在本地完成的,這部分需要用到信號(hào)處理的一些技術(shù)。
VAD(Voice Activity Detection):也叫語(yǔ)音激活檢測(cè),或者靜音抑制。其目的是檢測(cè)當(dāng)前語(yǔ)音信號(hào)中是否包含話音信號(hào)存在,即對(duì)輸入信號(hào)進(jìn)行判斷,將話音信號(hào)與各種背景噪聲信號(hào)區(qū)分出來,分別對(duì)兩種信號(hào)采用不同的處理方法。
算法方面,VAD算法主要用了2-3個(gè)模型來對(duì)語(yǔ)音建模,并且分成噪聲類、語(yǔ)音類還有靜音類。目前大多數(shù)還是基于信噪比的算法,也有一些基于深度學(xué)習(xí)(DNN)的模型。
一般在產(chǎn)品設(shè)計(jì)的時(shí)候,會(huì)固定一個(gè)VAD截?cái)嗟臅r(shí)間,但面對(duì)不同的應(yīng)用場(chǎng)景,可能會(huì)要求這個(gè)時(shí)間是可以自定義的,主要是用來控制多長(zhǎng)時(shí)間沒有聲音進(jìn)行截?cái)唷?/p>
比如小孩子說話會(huì)比較慢,常常會(huì)留尾音,那么我們就需要針對(duì)兒童場(chǎng)景,設(shè)置比較長(zhǎng)的VAD截?cái)鄷r(shí)間;而成人就可以相對(duì)短一點(diǎn),一般會(huì)設(shè)置在400ms-1000ms之間。
2. 本地上傳(壓縮)
人的聲音信息首先要經(jīng)過麥克風(fēng)整列收集和處理,然后再把處理好的音頻文件傳到云端,整個(gè)語(yǔ)音識(shí)別模型才開始工作。
這里的上傳并不是直接把收音到的音頻丟到云端,而是要進(jìn)行壓縮的,主要考慮到音頻太小,網(wǎng)絡(luò)等問題,會(huì)影響整體的響應(yīng)速度。從本地到云端是一個(gè)壓縮?上傳?解壓的過程,數(shù)據(jù)才能夠到達(dá)云端。
整個(gè)上傳的過程也是實(shí)時(shí)的,是以數(shù)據(jù)流的形式進(jìn)行上傳,每隔一段時(shí)間上傳一個(gè)包。
你可以理解為每說一個(gè)字,就要上傳一次,這也就對(duì)應(yīng)著我們常??吹降囊粋€(gè)字一個(gè)字的往屏幕上蹦的效果。一般一句“明天天氣怎么樣?”,會(huì)上傳大約30多個(gè)包到云端。
一般考慮我們大部分設(shè)備使用的都是Wi-Fi和4G網(wǎng)絡(luò),每次上傳的包的大小在128個(gè)字節(jié)的大小,整個(gè)響應(yīng)還是非常及時(shí)的。
3. 信號(hào)處理
這里的信號(hào)處理一般指的是降噪,有些麥克風(fēng)陣列本身的降噪算法受限于前端硬件的限制,會(huì)把一部分降噪的工作放在云端。
像專門提供云端語(yǔ)音識(shí)別能力的公司,比如科大訊飛、谷歌,自己的語(yǔ)音識(shí)別模型都是有降噪能力的,因?yàn)槟悴恢狼岸说柠溈孙L(fēng)陣列到底是什么情況。
除了降噪以外可能還涉及到數(shù)據(jù)格式的歸一化等,當(dāng)然有些模型可能不需要這些步驟,比如自研的語(yǔ)音識(shí)別模型,只給自己的機(jī)器用,那么我解壓完了就是我想要的格式。
4. 特征提取
特征提取是語(yǔ)音識(shí)別關(guān)鍵的一步,解壓完音頻文件后,就要先進(jìn)行特征提取,提取出來的特征作為參數(shù),為模型計(jì)算做準(zhǔn)備。簡(jiǎn)單理解就是語(yǔ)音信息的數(shù)字化,然后再通過后面的模型對(duì)這些數(shù)字化信息進(jìn)行計(jì)算。
特征提取首先要做的是采樣,前面我們說過音頻信息是以數(shù)據(jù)流的形式存在,是連續(xù)不斷的,對(duì)連續(xù)時(shí)間進(jìn)行離散化處理的過程就是采樣率,單位是Hz。
可以理解為從一條連續(xù)的曲線上面取點(diǎn),取的點(diǎn)越密集,越能還原這條曲線的波動(dòng)趨勢(shì),采樣率也就越高。理論上越高越好,但是一般10kHz以下就夠用了,所以大部分都會(huì)采取16kHz的采樣率。
具體提取那些特征,這要看模型要識(shí)別那些內(nèi)容,一般只是語(yǔ)音轉(zhuǎn)文字的話,主要是提取音素;但是想要識(shí)別語(yǔ)音中的情緒,可能就需要提取響度、音高等參數(shù)。
最常用到的語(yǔ)音特征就是梅爾倒譜系數(shù)(Mel-scaleFrequency Cepstral Coefficients,簡(jiǎn)稱MFCC),是在Mel標(biāo)度頻率域提取出來的倒譜參數(shù),Mel標(biāo)度描述了人耳頻率的非線性特性。
5. 聲學(xué)模型(AM)
聲學(xué)模型將聲學(xué)和發(fā)音學(xué)的知識(shí)進(jìn)行整合,以特征提取模塊提取的特征為輸入,計(jì)算音頻對(duì)應(yīng)音素之間的概率。簡(jiǎn)單理解就是把從聲音中提取出來的特征,通過聲學(xué)模型,計(jì)算出相應(yīng)的音素。
聲學(xué)模型目前的主流算法是混合高斯模型+隱馬爾可夫模型(GMM-HMM),HMM模型對(duì)時(shí)序信息進(jìn)行建模,在給定HMM的一個(gè)狀態(tài)后,GMM對(duì)屬于該狀態(tài)的語(yǔ)音特征向量的概率分布進(jìn)行建模。
現(xiàn)在也有基于深度學(xué)習(xí)的模型,在大數(shù)據(jù)的情況下,效果要好于GMM-HMM。
聲學(xué)模型就是把聲音轉(zhuǎn)成音素,有點(diǎn)像把聲音轉(zhuǎn)成拼音的感覺,所以優(yōu)化聲學(xué)模型需要音頻數(shù)據(jù)。
6. 語(yǔ)言模型(LM)
語(yǔ)言模型是將語(yǔ)法和字詞的知識(shí)進(jìn)行整合,計(jì)算文字在這句話下出現(xiàn)的概率。一般自然語(yǔ)言的統(tǒng)計(jì)單位是句子,所以也可以看做句子的概率模型。簡(jiǎn)單理解就是給你幾個(gè)字詞,然后計(jì)算這幾個(gè)字詞組成句子的概率。
語(yǔ)言模型中,基于統(tǒng)計(jì)學(xué)的有n-gram 語(yǔ)言模型,目前大部分公司用的也是該模型。
還有基于深度學(xué)習(xí)的語(yǔ)言模型,語(yǔ)言模型就是根據(jù)一些可能的詞(詞典給的),然后計(jì)算出那些詞組合成一句話的概率比較高,所以優(yōu)化語(yǔ)言模型需要的是文本數(shù)據(jù)。
7. 詞典
詞典就是發(fā)音字典的意思,中文中就是拼音與漢字的對(duì)應(yīng),英文中就是音標(biāo)與單詞的對(duì)應(yīng)。
其目的是根據(jù)聲學(xué)模型識(shí)別出來的音素,來找到對(duì)應(yīng)的漢字(詞)或者單詞,用來在聲學(xué)模型和語(yǔ)言模型建立橋梁,將兩者聯(lián)系起來——簡(jiǎn)單理解詞典是連接聲學(xué)模型和語(yǔ)言模型的月老。
詞典不涉及什么算法,一般的詞典都是大而全的,盡可能地覆蓋我們所有地字。詞典這個(gè)命名很形象,就像一本“新華字典”,給聲學(xué)模型計(jì)算出來的拼音配上所有可能的漢字。
整個(gè)這一套組成了一個(gè)完整的語(yǔ)音識(shí)別模型,其中聲學(xué)模型和語(yǔ)言模型是整個(gè)語(yǔ)音識(shí)別的核心,各家識(shí)別效果的差異也是這兩塊內(nèi)容的不同導(dǎo)致的。
一般我們更新的熱詞,更新的都是語(yǔ)言模型中的內(nèi)容,后面會(huì)詳細(xì)闡述。
四、語(yǔ)音識(shí)別相關(guān)內(nèi)容
語(yǔ)音識(shí)別除了把語(yǔ)音轉(zhuǎn)換成文本以外,還有一些其他用處,這里也簡(jiǎn)單提一下。
1. 方言識(shí)別/外語(yǔ)識(shí)別
這里把方言和外語(yǔ)一起討論,是因?yàn)橛?xùn)練一個(gè)方言的語(yǔ)音識(shí)別模型,和訓(xùn)練一個(gè)外語(yǔ)的模型差不多,畢竟有些方言聽起來感覺和外語(yǔ)一樣。
所以方言和外語(yǔ)識(shí)別,就需要重新訓(xùn)練的語(yǔ)音識(shí)別模型,才能達(dá)到一個(gè)基本可用的狀態(tài)。
這里就會(huì)遇到兩個(gè)問題:
- 從零開始訓(xùn)練一個(gè)聲學(xué)模型需要大量的人工標(biāo)注數(shù)據(jù),成本高,時(shí)間長(zhǎng),對(duì)于一些數(shù)據(jù)量有限的小語(yǔ)種,就更是難上加難。所以選擇新語(yǔ)種(方言)的時(shí)候要考慮投入產(chǎn)出,是否可以介入第三方的先使用,順便積累數(shù)據(jù);
- 除了單獨(dú)的外語(yǔ)(方言)識(shí)別之外,還有混合語(yǔ)言的語(yǔ)音識(shí)別需求,比如在香港,英文詞匯經(jīng)常會(huì)插入中文短語(yǔ)中。如果把每種語(yǔ)言的語(yǔ)言模型分開構(gòu)建,會(huì)阻礙識(shí)別的平滑程度,很難實(shí)現(xiàn)混合識(shí)別。
2. 語(yǔ)種識(shí)別(LID)
語(yǔ)種識(shí)別(LID)是用來自動(dòng)區(qū)分不同語(yǔ)言的能力,將識(shí)別結(jié)果反饋給相應(yīng)語(yǔ)種的語(yǔ)音識(shí)別模型,從而實(shí)現(xiàn)自動(dòng)化的多語(yǔ)言交互體驗(yàn)。簡(jiǎn)單理解就是計(jì)算機(jī)知道你現(xiàn)在說的是中文,它就用中文回復(fù)你,如果你用英文和計(jì)算機(jī)說話,計(jì)算機(jī)就用英文回復(fù)你。
語(yǔ)種識(shí)別主要分三個(gè)過程:首先根據(jù)語(yǔ)音信號(hào)進(jìn)行特征提??;然后進(jìn)行語(yǔ)種模型的構(gòu)建;最后是對(duì)測(cè)試語(yǔ)音進(jìn)行語(yǔ)種判決。
算法層面目前分為兩類:一類是基于傳統(tǒng)的語(yǔ)種識(shí)別,一種是基于神經(jīng)網(wǎng)絡(luò)的語(yǔ)種識(shí)別。
傳統(tǒng)的語(yǔ)種識(shí)別包括基于HMM的語(yǔ)種識(shí)別、基于音素器的語(yǔ)種識(shí)別、基于底層聲學(xué)特征的語(yǔ)種識(shí)別等。神經(jīng)網(wǎng)絡(luò)的語(yǔ)種識(shí)別主要基于融合深度瓶頸特征的DNN語(yǔ)種識(shí)別,深度神經(jīng)網(wǎng)絡(luò)中,有的隱層的單元數(shù)目被人為地調(diào)小,這種隱層被稱為瓶頸層。
目前基于傳統(tǒng)的語(yǔ)種識(shí)別,在復(fù)雜語(yǔ)種之間的識(shí)別率,只有80%左右;而基于深度學(xué)習(xí)的語(yǔ)種識(shí)別,理論上效果會(huì)更好。當(dāng)然這和語(yǔ)種的多樣性強(qiáng)相關(guān),比如兩種語(yǔ)言的語(yǔ)種識(shí)別,和十八種語(yǔ)言的語(yǔ)種識(shí)別,之間的難度是巨大的。
3. 聲紋識(shí)別(VPR)
聲紋識(shí)別也叫做說話人識(shí)別,是生物識(shí)別技術(shù)的一種,通過聲音判別說話人身份的技術(shù)。其實(shí)和人臉識(shí)別的應(yīng)用有些相似,都是根據(jù)特征來判斷說話人身份的,只是一個(gè)是通過聲音,一個(gè)是通過人臉。
聲紋識(shí)別的原理是借助不同人的聲音,在語(yǔ)譜圖中共振峰的分布情況不同這一特征,去對(duì)比兩個(gè)人的聲音,在相同音素上的發(fā)聲來判斷是否為同一個(gè)人。
主要是借助的特征有:音域特征、嗓音純度特征、共鳴方式特征等,而對(duì)比的模型有高斯混合模型(GMM)、深度神經(jīng)網(wǎng)絡(luò)(DNN)等。
注:
- 共振峰:共振峰是指在聲音的頻譜中能量相對(duì)集中的一些區(qū)域,共振峰不但是音質(zhì)的決定因素,而且反映了聲道(共振腔)的物理特征。提取語(yǔ)音共振峰的方法比較多,常用的方法有倒譜法、LPC(線性預(yù)測(cè)編碼)譜估計(jì)法、LPC倒譜法等。
- 語(yǔ)譜圖:語(yǔ)譜圖是頻譜分析視圖,如果針對(duì)語(yǔ)音數(shù)據(jù)的話,叫語(yǔ)譜圖。語(yǔ)譜圖的橫坐標(biāo)是時(shí)間,縱坐標(biāo)是頻率,坐標(biāo)點(diǎn)值為語(yǔ)音數(shù)據(jù)能量。由于是采用二維平面表達(dá)三維信息,所以能量值的大小是通過顏色來表示的,顏色深,表示該點(diǎn)的語(yǔ)音能量越強(qiáng)。
聲音識(shí)別也會(huì)有1to1、1toN、Nto1三種模式:
- 1to1:是判斷當(dāng)前發(fā)聲和預(yù)存的一個(gè)聲紋是否一致,有點(diǎn)像蘋果手機(jī)的人臉解鎖,判斷當(dāng)前人臉和手機(jī)錄的人臉是否一致;
- 1toN:是判斷當(dāng)前發(fā)聲和預(yù)存的多個(gè)聲紋中的哪一個(gè)一致,有點(diǎn)像指紋識(shí)別,判斷當(dāng)前的指紋和手機(jī)里面錄入的五個(gè)指紋中的哪一個(gè)一致;
- Nto1:就比較難了,同時(shí)有多個(gè)聲源一起發(fā)聲,判斷其中那個(gè)聲音和預(yù)存的聲音一致,簡(jiǎn)單理解就是所有人在一起拍照,然后可以精確的找到其中某一個(gè)人。當(dāng)然也有NtoN,邏輯就是所有人一起拍照,每個(gè)人都能認(rèn)出來。
除了以上的分類,聲紋識(shí)別還會(huì)區(qū)分為:
- 固定口令識(shí)別,就是給定你文字,你照著念就行,常見于音箱付款的驗(yàn)證;
- 隨機(jī)口令識(shí)別,這個(gè)就比較厲害了,他不會(huì)限制你說什么,自動(dòng)識(shí)別出你是誰。
聲紋識(shí)別說到底就是身份識(shí)別,和我們常見的指紋識(shí)別、人臉識(shí)別、虹膜識(shí)別等都一樣,都是提取特征,然后進(jìn)行匹配。只是聲紋的特征沒有指紋等特征穩(wěn)定,會(huì)受到外部條件的影響,所以沒有其他的身份識(shí)別常見。
4. 情緒識(shí)別
目前情緒識(shí)別方式有很多,比如檢測(cè)生理信號(hào)(呼吸、心率、腎上腺素等)、檢測(cè)人臉肌肉變化、檢測(cè)瞳孔擴(kuò)張程度等。通過語(yǔ)音識(shí)別情緒也是一個(gè)維度,但是所能參考的信息有限,相較于前面談到的方法,目前效果一般。
通過語(yǔ)音的情緒識(shí)別,首先要從語(yǔ)音信息中獲取可以判斷情緒的特征,然后根據(jù)這些特征再進(jìn)行分類;這里主要借助的特征有:能量(energy)、音高(pitch)、梅爾頻率倒譜系數(shù)(MFCC)等語(yǔ)音特征。
常用的分類模型有:高斯混合模型(GMM)、隱馬爾可夫模型(HMM)長(zhǎng)短時(shí)記憶模型(LSTM)等。
語(yǔ)音情緒識(shí)別一般會(huì)有兩種方法:一種是依據(jù)情緒的不同表示方式進(jìn)行分類,常見的有難過、生氣、害怕、高興等等,使用的是分類算法;還有一種是將情緒分為正面和負(fù)面兩種,一般會(huì)使用回歸算法。
具體使用以上哪種方法,要看實(shí)際應(yīng)用情況。
如果需要根據(jù)不同的情緒,伴隨不同的表情和語(yǔ)氣進(jìn)行回復(fù),那么需要使用第一種的分類算法;如果只是作為一個(gè)參數(shù)進(jìn)行識(shí)別,判斷當(dāng)前說話人是消極還是積極,那么第二種的回歸算法就夠了。
五、語(yǔ)音識(shí)別如何測(cè)試
由于語(yǔ)言文字的排列組合是無限多的,測(cè)試語(yǔ)音識(shí)別的效果要有大數(shù)據(jù)思維,就是基于統(tǒng)計(jì)學(xué)的測(cè)試方法,最好是可以多場(chǎng)景、多人實(shí)際測(cè)試,具體要看產(chǎn)品的使用場(chǎng)景和目標(biāo)人群。
另外一般還要分為模型測(cè)試和實(shí)際測(cè)試,我們下面談到的都是實(shí)際測(cè)試的指標(biāo)。
1. 測(cè)試環(huán)境
人工智能產(chǎn)品由于底層邏輯是計(jì)算概率,天生就存在一定的不確定性,這份不確定性就是由外界條件的變化帶來的,所以在測(cè)試語(yǔ)音識(shí)別效果的時(shí)候,一定要控制測(cè)試環(huán)境的條件。
往往受到以下條件影響:
1)環(huán)境噪音
最好可以在實(shí)際場(chǎng)景中進(jìn)行測(cè)試,如果沒有條件,可以模擬場(chǎng)景噪音,并且對(duì)噪音進(jìn)行分級(jí)處理。
比如車載場(chǎng)景,我們需要分別測(cè)試30km/h、60km/h、90km/h、120km/h的識(shí)別效果,甚至需要加入車內(nèi)有人說話和沒人說話的情況,以及開關(guān)車窗的使用情況——這樣才能反應(yīng)真是的識(shí)別情況,暴露出產(chǎn)品的不足。
2)發(fā)音位置
發(fā)音位置同樣需要根據(jù)場(chǎng)景去定義 ,比如車載場(chǎng)景:我們需要分別測(cè)試主駕駛位置、副駕駛位置、后排座位的識(shí)別效果,甚至面向不同方向的發(fā)音,都需要考慮到。
3)發(fā)音人(群體、語(yǔ)速、口音、響度)
發(fā)音人就是使用我們產(chǎn)品的用戶,如果我們產(chǎn)品覆蓋的用戶群體足夠廣,我們需要考慮不同年齡段,不同地域的情況,比如你的車載語(yǔ)音要賣給香港人,就要考慮粵語(yǔ)的測(cè)試。
這里不可控的因素會(huì)比較多,有些可能遇到之后才能處理。
2. 測(cè)試數(shù)據(jù)
整個(gè)測(cè)試過程中,一般我們會(huì)先準(zhǔn)備好要測(cè)試的數(shù)據(jù)(根據(jù)測(cè)試環(huán)境),當(dāng)然測(cè)試數(shù)據(jù)越豐富,效果會(huì)越好。
首先需要準(zhǔn)備場(chǎng)景相關(guān)的發(fā)音文本,一般需要準(zhǔn)備100-10000條;其次就是在對(duì)應(yīng)的測(cè)試環(huán)境制造相應(yīng)的音頻數(shù)據(jù),需要在實(shí)際的麥克風(fēng)陣列收音,這樣可以最好的模擬實(shí)際體驗(yàn);最后就是將音頻和文字一一對(duì)應(yīng),給到相應(yīng)的同學(xué)進(jìn)行測(cè)試。
關(guān)于測(cè)試之前有過一些有趣的想法, 就是準(zhǔn)備一些文本,然后利用TTS生成音頻,再用ASR識(shí)別,測(cè)試識(shí)別的效果。這樣是行不通的,根本沒有實(shí)際模擬用戶體驗(yàn),機(jī)器的發(fā)音相對(duì)人來說太穩(wěn)定了。
3. 詞錯(cuò)率
詞錯(cuò)率(WER):也叫字錯(cuò)率,計(jì)算識(shí)別錯(cuò)誤的字?jǐn)?shù)占所有識(shí)別字?jǐn)?shù)的比例,就是詞錯(cuò)率,是語(yǔ)音識(shí)別領(lǐng)域的關(guān)鍵性評(píng)估指標(biāo)。無論多識(shí)別,還是少識(shí)別,都是識(shí)別錯(cuò)誤。
公式如下:
- Substitutions是替換數(shù);
- Deletions是刪除數(shù);
- Insertions是插入次數(shù);
- Total Words in Correct Transcript是單詞數(shù)目。
這里需要注意的是,因?yàn)橛胁迦朐~的存在,所以詞錯(cuò)率可能會(huì)大于100%的,不過這種情況比較少見。
一般測(cè)試效果會(huì)受到測(cè)試集的影響,之前有大神整理過不同語(yǔ)料庫(kù),識(shí)別的詞錯(cuò)率情況,數(shù)據(jù)比較老,僅供參考:
4. 句錯(cuò)率
句錯(cuò)率(SWR):表示句子中如果有一個(gè)詞識(shí)別錯(cuò)誤,那么這個(gè)句子被認(rèn)為識(shí)別錯(cuò)誤,句子識(shí)別錯(cuò)誤的個(gè)數(shù)占總句子個(gè)數(shù)的比例,就是句錯(cuò)率。
- # of sentences with at least one word error是句子識(shí)別錯(cuò)誤的個(gè)數(shù);
- total # of sentences是總句子的個(gè)數(shù)。
一般單純測(cè)模型的話,主要以詞錯(cuò)率為關(guān)鍵指標(biāo);用戶體驗(yàn)方面的測(cè)試,則更多偏向于句錯(cuò)率。因?yàn)檎Z(yǔ)音交互時(shí),ASR把文本傳給NLP,我們更關(guān)注這句話是否正確。
在實(shí)際體驗(yàn)中,句子識(shí)別錯(cuò)誤的標(biāo)準(zhǔn)也會(huì)有所不同,有些場(chǎng)景可能需要識(shí)別的句子和用戶說的句子完全一樣才算正確,而有些場(chǎng)景可能語(yǔ)意相近就算正確,這取決于產(chǎn)品的定位,以及接下來的處理邏輯。
比如語(yǔ)音輸入法,就需要完全一樣才算正確,而一般閑聊的語(yǔ)音交互,可能不影響語(yǔ)意即可。
六、后期如何運(yùn)營(yíng)維護(hù)
在實(shí)際落地中,會(huì)頻繁的出現(xiàn)ASR識(shí)別不對(duì)的問題,比如一些生僻詞,阿拉伯?dāng)?shù)字的大小寫,這個(gè)時(shí)候就需要通過后期運(yùn)營(yíng)來解決。
一句話或者一個(gè)詞識(shí)別不對(duì),可能存在多種原因;首先需要找到識(shí)別不對(duì)的原因,然后再利用現(xiàn)有工具進(jìn)行解決。一般會(huì)分為以下幾種問題:
1. VAD截?cái)?/h3>
這屬于比較常見的問題,就是機(jī)器只識(shí)別了用戶一部分的語(yǔ)音信息,另一部分沒有拾到音。
這個(gè)和用戶的語(yǔ)速有很大關(guān)系,如果用戶說話比較慢的,機(jī)器就容易以為用戶說完了,所以會(huì)產(chǎn)生這樣的問題。
一般的解決方案分為兩種:第一種是根據(jù)用戶群體的平均語(yǔ)速,設(shè)置截?cái)嗟臅r(shí)間,一般400ms差不多;第二種是根據(jù)一些可見的細(xì)節(jié)去提示用戶,注意說話的語(yǔ)速。
2. 語(yǔ)言模型修改
這類問題感知最強(qiáng),表面上看就是我說了一句話,機(jī)器給我識(shí)別成了一句不想相關(guān)的內(nèi)容:這種問題一方面和用戶想要識(shí)別的詞相關(guān),一方面和用戶的發(fā)音有關(guān),我們先不考慮用戶的發(fā)音。
一般生僻詞會(huì)遇到識(shí)別錯(cuò)誤的問題,這主要是模型在訓(xùn)練的時(shí)候沒有見過這類的內(nèi)容,所以在識(shí)別的時(shí)候會(huì)比較吃力。遇到這種問題,解決方案是在語(yǔ)言模型里面加入這個(gè)詞。
比如說:我想看魑魅魍魎,訓(xùn)練的時(shí)候沒有“魑魅魍魎”這四個(gè)字,就很可能識(shí)別錯(cuò)誤,我們只需要在語(yǔ)言模型中加入這個(gè)詞就可以。一般工程師會(huì)把模型做成熱更新的方式,方便我們操作。
有的雖然不是生僻字,但還是會(huì)出現(xiàn)競(jìng)合問題,競(jìng)合就是兩個(gè)詞發(fā)音非常像,會(huì)互相沖突。一般我們會(huì)把想要識(shí)別的這句話,都加到語(yǔ)言模型。
比如:帶我去宜家商場(chǎng),這句話里面的“宜家”可能是“一家”,兩個(gè)詞之間就會(huì)出現(xiàn)競(jìng)合。如果客戶希望識(shí)別的是“宜家”,那我們就把 “帶我去宜家商場(chǎng)”整句話都加入到語(yǔ)言模型之中。
3. 干預(yù)解決
還有一類識(shí)別錯(cuò)誤的問題,基本上沒有解決方法。
雖然我們上面說了在語(yǔ)言模型中加詞,加句子,但實(shí)際操作的時(shí)候,你就會(huì)發(fā)現(xiàn)并不好用;有些詞就算加在語(yǔ)言模型里面,還是會(huì)識(shí)別錯(cuò)誤,這其實(shí)就是一個(gè)概率問題。
這個(gè)時(shí)候我們可以通過一些簡(jiǎn)單粗暴的方式解決。
我們一般會(huì)ASR模型識(shí)別完成之后,再加入一個(gè)干預(yù)的邏輯,有點(diǎn)像NLP的預(yù)處理。在這步我們會(huì)將識(shí)別錯(cuò)誤的文本強(qiáng)行干預(yù)成預(yù)期的識(shí)別內(nèi)容,然后再穿給NLP。
比如:我想要一個(gè)switch游戲機(jī),而機(jī)器總是識(shí)別成“我想要一個(gè)思維詞游戲機(jī)”,這個(gè)時(shí)候我們就可以通過干預(yù)來解決,讓“思維詞”=“switch”,這樣識(shí)別模型給出的還是“我想要一個(gè)思維詞游戲機(jī)”。
我們通過干預(yù),給NLP的文本就是“我想要一個(gè)switch游戲機(jī)”。
七、未來展望
目前在理想環(huán)境下,ASR的識(shí)別效果已經(jīng)非常好了,已經(jīng)超越人類速記員了。但是在復(fù)雜場(chǎng)景下,識(shí)別效果還是非常大的進(jìn)步空間,尤其雞尾酒效應(yīng)、競(jìng)合問題等。
1. 強(qiáng)降噪發(fā)展
面對(duì)復(fù)雜場(chǎng)景的語(yǔ)音識(shí)別,還是會(huì)存在問題,比如我們常說的雞尾酒效應(yīng),目前仍然是語(yǔ)音識(shí)別的瓶頸。針對(duì)復(fù)雜場(chǎng)景的語(yǔ)音識(shí)別,未來可能需要端到端的深度學(xué)習(xí)模型,來解決常見的雞尾酒效應(yīng)。
2. 語(yǔ)音鏈路整合
大部分公司會(huì)把ASR和NLP分開來做研發(fā),認(rèn)為一個(gè)是解決聲學(xué)問題,一個(gè)是解決語(yǔ)言問題。其實(shí)對(duì)用戶來講,體驗(yàn)是一個(gè)整體。
未來可以考慮兩者的結(jié)合,通過NLP的回復(fù)、或者反饋,來動(dòng)態(tài)調(diào)整語(yǔ)言模型,從而實(shí)現(xiàn)更準(zhǔn)確的識(shí)別效果,避免競(jìng)合問題。
3. 多模態(tài)結(jié)合
未來有可能結(jié)合圖像算法的能力,比如唇語(yǔ)識(shí)別、表情識(shí)別等能力,輔助提高ASR識(shí)別的準(zhǔn)確率。比如唇語(yǔ)識(shí)別+語(yǔ)音識(shí)別,來解決復(fù)雜場(chǎng)景的,聲音信息混亂的情況。
目前很多算法的能力都是一個(gè)一個(gè)的孤島,需要產(chǎn)品經(jīng)理把這些算法能力整合起來,從而作出更準(zhǔn)確的判斷。
八、總結(jié)
語(yǔ)音識(shí)別就是把聲學(xué)信號(hào)轉(zhuǎn)化成文本信息的一個(gè)過程,中間最核心的算法是聲學(xué)模型和語(yǔ)言模型,其中聲學(xué)模型負(fù)責(zé)找到對(duì)應(yīng)的拼音,語(yǔ)言模型負(fù)責(zé)找到對(duì)應(yīng)的句子。
后期運(yùn)營(yíng)我們一般會(huì)對(duì)語(yǔ)言模型進(jìn)行調(diào)整,來解決識(shí)別過程中的badcase。
通過聲音,我們可以做語(yǔ)種識(shí)別、聲紋識(shí)別、情緒識(shí)別等,主要是借助聲音的特征進(jìn)行識(shí)別,其中常用的特征有能量(energy)、音高(pitch)、梅爾頻率倒譜系數(shù)(MFCC)等。
未來語(yǔ)音識(shí)別必將會(huì)和自然語(yǔ)言處理相結(jié)合,進(jìn)一步提高目前的事變效果,對(duì)環(huán)境的依賴越來越小。
本文由 @我叫人人 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Pexels,基于CC0協(xié)議
催更??!
感覺作者分享 是整個(gè)社區(qū)看到寫ASR最干貨的,受益匪淺??!好奇作者是PM還是RD?
太棒了,希望作者有時(shí)間可以聊聊NLP和TTS。催更催更~
不錯(cuò)
感謝作者的分享,受益匪淺!