嘉賓 | 王強強
整理 | 劉雨瑤
在此前由51CTO主辦的AISummit全球人工智能技術大會中,作業幫的語音團隊負責人王強強老師為廣大聽眾帶來了《作業幫語音技術實踐》的主題演講,從語音合成、語音評測、語音識別三個方面解讀了作業幫的語音技術實踐,內容覆蓋語音識別中的端到端實現與數據高效利用、高并發場景中的語音發音糾錯,以及模型的因素區分與抗干擾能力提升。
為了能讓更多對語音技術感興趣的同學了解到目前語音技術的發展態勢與前沿優秀技術實踐,現將王強強老師的演講內容整理如下,希望能為諸君帶來一些啟發。
一、語音合成
小數據量語音合成
對于傳統的語音合成技術而言,想要完整合成一個人的聲音,需要十小時甚至更長時間的錄音。這對于錄音者而言是一個不小的挑戰,很少有人能夠在如此長的時間中始終保持良好的發音狀態。而通過小數據量語音合成技術,我們僅需要使用錄音者所說的幾十句話、幾分鐘的語音,便能達到完整的語音合成效果。
小數據量語音合成技術大體分為兩類。一類是對于標注和語音不匹配的情況,處理方式主要分為兩種:一是自監督學習,通過自監督的算法學習得到建模單元和音頻之間的對應關系,再通過特定人的標注語料進行Finetune,以達到比較好的合成效果;二是通過ASR識別未標注的語料,并利用TTS合成對偶函數、對偶學習的方式,逐步提升TTS的合成效果。
而對于文本和音頻匹配的情況,主要的處理方式也分為兩種:一是構建有標注語料的多語種預訓練模型。另一種則是基于這種方案之上,同語種內的多個說話人有標注數據預訓練,利用目標說話的人的數據進行Finetune,以達到預期的效果。
語音合成技術框架
作業幫的語音合成技術框架,在聲素部分使用了FastSpeech2。FastSpeech2擁有著合成速度快的主要優勢,與此同時FastSpeech2還融合了Duration、Pitch、Energy Predictor,能夠為我們提供更大的可操作性空間;而在聲碼器的選擇上,作業幫語音團隊選用了Multi-Band MelGAN,這是由于Multi-Band MelGAN擁有良好的合成效果,且合成速度非???。
多說話人語音合成
在確定基礎框架后,接下來要做的便是多說話人的語音合成。多說話人語音合成常見的思路是將Speaker Embedding信息加入到Encoder中,學習特定說話人的信息,而后利用模型訓練多說話人的語音合成模型。最后再利用特定的說話人進行一些簡單的Finetune。這套方案能夠將十小時的錄音需求壓縮到一小時左右,但在實際中,采集一小時時長的、能夠達到模型訓練標準的錄音還是存在一定難度。而小數據量語音合成的目標本質上是利用更少的聲音,合成一個相對不錯的聲音。
因此,作業幫語音團隊借鑒了M2VOC競賽的冠軍方案,最終選擇了D-Vector和基于ECAPA的Speaker Embedding的組合,并進行了三重升級,包括Speaker Embedding的升級;將FastSpeech2使用的Transformer升級到Conformer;以及將Speaker的信息加入LayerNorm之中。
二、語音評測
語音測評技術框架
作業幫的語音評測基礎技術框架,本質上還是用GOP打分判斷用戶單詞或者句子發音的好壞。但在模型方面已經升級到了Conformer以及CGC+attention-based這種完全端到端的模型訓練流程。GOP非常依賴聲音和音素,也就是建模單元對齊的程度,所以在訓練模型時,我們加入了通過GMM模型獲得的語料的對齊信息。通過完全的認證模型,加之對齊的相應信息,能夠訓練出一個效果非常不錯的模型,結合兩者的長處,保障GOP的得分相對準確。
測評系統的問題&痛點
測評場景天然對時延比較敏感,因此時延和網絡是GOP評測系統落地過程中的兩大問題。如果時延很高,實時性很差,整體的用戶體驗感就會受到很大的影響。此外,如果網絡出現問題,用戶的網絡環境發生波動,再加上網絡時延,很容易使用戶感知的染色時間超過一秒,這會帶來非常明顯的感覺凝滯,使得整個的課程效果受到嚴重影響。
解決方向-算法
對于上述問題,從算法上可以通過Chunk Mask的方式解決時延以及內存過大的問題。Chunk向前最多看兩幀向后最多看五幀,時延的問題就解決掉了。
在實際中真正算法去測試的時候,它的硬時延只有50毫秒左右,就是基本50毫秒就會激活這個詞,50毫秒在人的感知上是很快的。所以至少在算法層面,解決了硬延遲的問題。這是我們做的第一個層面的工作。
解決方向-端云一體平臺
一套端云一體平臺可以解決高并發以及由于網絡傳輸而造成的問題。這個平臺能夠自動地判斷用戶的手機算力是否足夠。如果足夠的話,就會優先進行本地評測。如果算力不太夠的話,就將這個請求發到云端,由云端來進行評測。若本地出了任何問題,對它的生命周期也是有把控的。
通過這套方案,我們解決了瞬間高并發所帶來的問題,由于部分算力被轉移到端上,云端只需要保留原來20%的機器就可以實現正常的運作,這大大的節省了資源。此外,在將算法做到本地化后,延遲的問題也得到了解決,對于大段的測評任務,能夠實現良好的支撐,給用戶帶來更為優質的視聽體驗。
發音糾錯
發音糾錯的需求背景是語境問題和教育資源的稀缺,同樣的,這個痛點可以利用測評技術解決。通過對測評技術的優化,可以判定發音正確與否,識別發音哪里存在問題。
在技術選型方面,雖然評測系統是基于GOP的穩定評測方案,但是GOP方案非常依賴音頻和建模單元的對齊,如果起始時間不準確,其偏差就會比較大,區分性就會變差。因此原先的方案便不太適合這種糾音的場景。并且GOP的思路是通過一些專家知識,對讀音進行糾正與指導,糾音中的漏讀和增讀GOP處理起來會非常痛,需要太多的人工支持。這便需要一個更靈活的方案,因此我們最后選擇了ASR的方案來做發音糾錯。
ASR方案很大的優勢就是訓練過程簡單,不需要太多的對齊信息。即使讀音錯誤,對上下文音素的判別也不會有太大的影響。ASR處理增讀、漏讀,有天然的理論上、技術上的優勢。所以我們最終選了純端到端的ASR模型來作為我們發音糾錯的技術底座。
同時,作業幫也在此基礎上做了一些優化及創新工作。第一,將先驗的文本信息通過Attention模塊加入到模型訓練中;第二,通過隨機替換的方式模擬出錯以訓練模型,使其有糾錯能力;第三,由于模型區分度不夠,我們對錯誤做了分層,有些細微的錯誤就不判錯。通過以上方案,最終實現了虛警率的大幅下降,同時保障召回率損失不是特別大,診斷正確率也有提升。
三、語音識別
語音識別技術框架
作業幫的語音識別技術框架是端到端的語音識別框架,相對于原始的HMM-GMM/DNN方案有非常明顯的優勢:第一,避免了很多復雜地聚類操作以及對齊操作;第二,訓練流程稍微簡單;第三,端到端的框架不需要人工生成發音詞典;第四,能夠同時學習到音素信息和序列信息,相當于一起學習聲學模型、語言模型。
當然其劣勢也比較明顯,端到端模型剛開始難以利用更多的語音或文本數據,而標注語料成本是很高的。我們的要求是內部選型一定要達到的目的是必須有端到端的生成模型,必須跟上最新的算法,還能夠將語料模型信息融合。
語音識別系統算法
提到CTC-CRF,需要先認識CTC。CTC是為整句建模而生的,CTC出現后,訓練整句的聲學模型就不再需要做音素和音頻之間的對齊。CTC的拓撲,一方面引入了一個Blank來吸收靜音,能夠把真正的有效的建模單元之外的靜音給吸收掉。另一方面它算整句概率的時候,是按照π,使用了動態規劃的算法,讓整句的路徑在一個相對合理的規模范圍內,這樣便能夠大大減輕計算量。這是CTC非常具有開創性的工作。
作業幫內部用的CTC-CRF語音識別系統。通過CRF的方式理解公式并擬合整句概率。整句概率是輸入為X的一個序列,輸出為π(π是用上文CTC的拓撲來表示),所以稱之為CTC-CRF。
其中CRF很重要的是勢函數以及勢函數整個規劃。勢函數是輸入為X,輸出為πt的條件概率,再加上一個整句的概率,它們其實就對應CRF中的節點和邊。
CTC-CRF與常用的聲學模型思路存在一定區別。常用的聲學模型有下面四個DNN-HMM、CTC、RNNT、AED。
RNNT基本的條件概率模型,是輸入X、輸出Y的概率,擬合的目標就是maxθ它的參數,讓這個概率最大化。
CTC如圖,CTC的一個假設很明顯,就是條件無關假設,它的狀態和狀態之間是沒有聯系的,沒有考慮它們之間的條件概率關系。
RNNT考慮了當前狀態跟所有歷史狀態的條件概率,如圖能明顯看出。AED也是這樣,是考慮當前狀態跟歷史狀態的條件概率。
但CTC-CRF其實不是基于條件概率的局部歸一化模型,它是一個整句歸一化的模型,是全局歸一化的模型。所以我們看到它不僅依賴于歷史,還依賴于未來,它其實是能夠考慮整句的概率信息的。這是它們在理論上的一個最大的不同。
我們對于CTC-CRF的利用,首先在Loss層,這是一個標準現階段用的Encoder、Decoder,然后加CTC-CRF、Loss,訓練聲學模型,端到端聲學模型的流程。Loss層上用的是CTC-CRF Loss,而不是原來的CTC Loss。CTC-CRF是Phone級別建模的,但是Attention這里,我們的Attention做的時候考慮了Word級別的建模。使用了Phone和Word級別兩重特征去訓練模型。
最后,關于具體效果方面,這是幾個開源工具在Aishell1測試集上效果,同時標出了參數數量。能看到基于CTC-CRF的相對來說還是比較有優勢的。
有了算法,理論上的效果也非常不錯,結合業務方看,業務方還是有不同的,但是所有的業務方有一個共同的訴求,就是效率上要達到最優。為了解決這個問題,有了熱詞方案。熱詞方案能夠完美的解決這個問題、快速地識別出業務方想要識別出的詞。
常見的熱詞方案是向TLG加入熱詞展開后的有向圖。上圖是常見的三級Ngram的WFST解碼圖,實線表示條件概率,虛線是回退概率。
作業幫的方案是基于前綴自動機的熱詞方案,這是因為熱詞的規模大到會產生效率瓶頸。用前綴自動機解多模式字符串的匹配的問題就很合適,尤其是對一個串中、命中了、覆蓋了熱詞表中的某個熱詞。如sher這樣一個序列,它覆蓋了兩個熱詞,就是she和her,在這個前綴自動機方案中,檢索完she之后,可以直接跳到her,能夠快速的找到字符串中包含的多個熱詞。結論是,這個方案夠快,還能夠節省一部分的存儲空間。
這個方案實際使用的時候也出現了一些問題。構建前綴樹還是需要遍歷整個前綴樹,代價比較大。因為要實時添加熱詞,隨時添加,隨時生效。為了解決這個問題,最后也做了一兩個樹,一個是普通前綴樹,一個是前綴自動機,就是用戶熱詞是加在普通前綴樹里的,普通前綴樹會馬上生效,相當于是隨時上線,可以激活熱詞了。超過一個閾值之后,前綴自動機會自動構建,這樣就基本上滿足了一批用戶的訴求。
四、總結
上文主要是通過三個方向,每個方向一到兩個點,這種技術解密的方式梳理了作業幫語音技術的落地以及落地中執行過程中遇到的問題,以及最后怎么輸出一套相對能夠滿足業務方訴求的方案。
但是除了這三個點,語音組還積累了很多語音的原子能力。評測層面做得非常細,甚至增讀、漏讀、連讀、濁化、重音、升降調都做了,識別還增加了中英文混合識別、聲紋、降噪,以及年齡判別。
有了這些原子能力,算法層面對于業務面的支撐和服務就更加得心應手了。
嘉賓介紹:
王強強,作業幫語音技術團隊負責人。在加入作業幫之前,曾任職于清華大學電子工程系語音處理與機器智能實驗室,負責語音識別算法落地,搭建工業級解決方案。 2018 年加入作業幫,負責語音相關算法研究和落地,主導了語音識別、評測、合成等算法在作業幫的落地實踐, 為公司提供整套語音技術解決方案。