中國有數(shù)以億計的英語學(xué)習(xí)者,移動互聯(lián)網(wǎng)已經(jīng)成為這個產(chǎn)業(yè)新的爆發(fā)點??谡Z學(xué)習(xí)app為學(xué)習(xí)者提供了一個更加輕松環(huán)境和低成本的投入。一方面鼓勵用戶“大聲說出來",一方面為他們提供有效的評分反饋,指出發(fā)音中的具體錯誤,幫助他們進(jìn)行有針對性的訓(xùn)練。
有道口語大師就是這樣一款產(chǎn)品。這個號稱最有趣的英語學(xué)習(xí)APP ,由曾出品過有道詞典、有道翻譯官的團(tuán)隊傾力打造。上線一個多月,便吸引了超過100萬的用戶。除了進(jìn)階式口語訓(xùn)練體系,游戲化設(shè)計萌寵元素受到好評之外,產(chǎn)品如何實現(xiàn)用機(jī)器學(xué)習(xí)的方法來進(jìn)行口語自動評分,也是用戶很關(guān)心的問題。
下面有道口語大師技術(shù)團(tuán)隊將對口語評分原理進(jìn)行簡單的介紹,以解大家困惑。
評價標(biāo)準(zhǔn)是什么?
所謂口語評分,具體來說就是給定某個句子,讓用戶進(jìn)行發(fā)音,然后按照一定的標(biāo)準(zhǔn)進(jìn)行評分。通常來說有兩大類評分方法:第一,和某個特定的發(fā)音進(jìn)行比較,和給定發(fā)音越相近得分越高;第二,用普適的標(biāo)準(zhǔn)來評價用戶發(fā)音,即只要用戶讀的是正確的、地道的,就可以得到高分。我們認(rèn)為第二種方法是更為準(zhǔn)確合理,因為同樣的一句話不可能只有單一的正確的讀法,而給定的“標(biāo)準(zhǔn)”發(fā)音更無法保證是最標(biāo)準(zhǔn)的。發(fā)音存在夸張或連讀/省略,這就使基于相似度的評分,在很多場景下都存在偏差。所以我們的介紹會圍繞第二種評分方法展開,解釋其中運用的技術(shù)。
從音標(biāo)到單詞
圖1 有道口語大師跟讀題示例
目前比較流行的口語學(xué)習(xí)類軟件,都會給用戶提供單詞級別的評分反饋,但事實上,口語評分的內(nèi)部實現(xiàn)是在比單詞更小的單位——音標(biāo)上進(jìn)行的。我們在前面提到過,口語評分是將用戶的發(fā)音和普適的標(biāo)準(zhǔn)比較來進(jìn)行評價,這個“普適”的標(biāo)準(zhǔn),是通過對成千上萬的標(biāo)準(zhǔn)發(fā)音數(shù)據(jù)進(jìn)行訓(xùn)練得到的,而音標(biāo)就是我們訓(xùn)練和比較的單元。為什么選擇音標(biāo)而不是單詞呢?首先,對于任何機(jī)器學(xué)習(xí)的算法來說,有足夠多的訓(xùn)練樣本都是至關(guān)重要的;其次,英語中有數(shù)十萬計的單詞,如果選擇單詞作為評分的單元,我們就需要對每個單詞都收集到足夠多的樣本,這是非常困難的。而音標(biāo)就不同了,標(biāo)準(zhǔn)的英語國際音標(biāo)只有48個符號,因而我們只要對每個音標(biāo)符號收集數(shù)據(jù),就可以進(jìn)行模型的訓(xùn)練了。
強制對齊
接下來的問題就變成了:我們要如何將一個完整的句子劃分成音標(biāo)級別的數(shù)據(jù)呢?這里我們通常使用的是強制對齊的技術(shù)。強制對齊(Forced Alignment),是指給定音頻和文本,確定每個單詞(音素)的起止位置的過程。如下圖所示:我們給定一段波形,并給定該音頻對應(yīng)的文本She had a dark suit in greasy washwater all year. 通過強制對齊,能夠得到每個音素(即我們通常所說的音標(biāo),使用的符號和標(biāo)準(zhǔn)國際音標(biāo)略有差別)在原音頻中所處的位置。
圖2 強制對齊(Forced Alignment)
音頻強制對齊的實現(xiàn)中最常用的方法是Viterbi解碼,這是一個動態(tài)規(guī)劃的算法。簡單來說就是我們將音頻切分成一個個長度很短的幀(我們稱之為一個采樣),幀的長度通常取到5~10ms之間,因為我們認(rèn)為在這樣短的時間內(nèi)音頻的各種特征基本不會發(fā)生改變。我們對一個音頻的每個采樣進(jìn)行特征抽取,再和標(biāo)準(zhǔn)音標(biāo)的特征進(jìn)行相似度計算,用bi(Ot)來表示第t個采樣和第i個音標(biāo)模型的相似度。我們用δt(i)代表在采樣t的時刻當(dāng)前音頻到達(dá)音標(biāo)i的最大概率δt(i),則我們可以利用公式,由第t個采樣推算出第t+1個時刻的結(jié)果δt+1(i)。解碼過程中,t從0開始不斷遞增,直到音頻結(jié)束,最終得到各個音標(biāo)i對應(yīng)的δN(i)。
強制對齊是語音識別的一種特殊的、簡化了的情況,由于它的簡單性,強制對齊通常具有較高的準(zhǔn)確率(音素級別準(zhǔn)確率可達(dá)90%,單詞級別可達(dá)95%以上)。使用強制對齊,我們就可以對我們收集到的標(biāo)準(zhǔn)發(fā)音的數(shù)據(jù)進(jìn)行處理:根據(jù)音頻和它對應(yīng)的文本進(jìn)行強制對齊,得到每個音標(biāo)對應(yīng)的片段;對各個音標(biāo)收集到的樣本抽取特征并進(jìn)行訓(xùn)練。通過對大量數(shù)據(jù)進(jìn)行強制對齊,我們對每個音標(biāo)得到一個模型,該模型將用于后續(xù)的打分流程。
語音識別
有了音標(biāo)的模型,打分的過程就不難想到了。我們將用戶的發(fā)音也切分成一個一個的音標(biāo),再將這每個片段分別和對應(yīng)的音標(biāo)模型進(jìn)行比較,如果該片段表現(xiàn)的特征和我們在標(biāo)準(zhǔn)發(fā)音數(shù)據(jù)上訓(xùn)練得到的特征很相像,那么用戶的發(fā)音就是地道的、準(zhǔn)確的;反之,用戶就很可能讀錯了這個音標(biāo)。我們將一個單詞的各個音標(biāo)的得分綜合起來得到一個單詞的得分,再將各個單詞的得分總和起來,就得到了整個句子的得分。同時我們通過各個音標(biāo)的得分,也可以很容易地知道用戶的哪些單詞可能讀錯了,進(jìn)一步將這些信息反饋給用戶(如圖1所示)。
強制對齊可以達(dá)到很高的準(zhǔn)確率,但這必須要滿足一個前提:我們給定的文本和音頻必須是匹配的。具體來說,如果一個用戶把I am a student讀成了I was a student,我們在處理was所對應(yīng)的音頻片段時,會錯誤地將它和am對應(yīng)的音標(biāo)模型進(jìn)行比對,那么很可能造成后續(xù)的a和student也無法對齊到正確的位置,從而影響打分的準(zhǔn)確性。為了避免這樣的情況,通常我們在進(jìn)行強制對齊之前,還會增加一個語音識別的步驟,即先判斷用戶真正讀的句子是什么,再用該結(jié)果去進(jìn)行強制對齊。對上面的例子而言,我們用was對應(yīng)的音標(biāo)模型去和was的音頻片段進(jìn)行對比,那么后面的兩個單詞還是可以得到正確的切分結(jié)果。同時我們根據(jù)語音識別的結(jié)果,又可以發(fā)現(xiàn)部分用戶讀錯的單詞數(shù)據(jù)(am->was)并反饋給用戶。
2、芥末堆不接受通過公關(guān)費、車馬費等任何形式發(fā)布失實文章,只呈現(xiàn)有價值的內(nèi)容給讀者;
3、如果你也從事教育,并希望被芥末堆報道,請您 填寫信息告訴我們。