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