自動語音辨識(Automatic Speech Recognition,ASR)技術目前已大規模落地於B站相關業務場景,例如影音內容安全審核,AI字幕(C端,必剪,S12直播等),視訊理解(全文檢索)等。
另外,B站ASR引擎在工業界benchmark SpeechIO (https://github.com/SpeechColab/Leaderboard)2022年11月最近一期全量測評中也取得了第一名(https: //github.com/SpeechColab/Leaderboard#5-ranking)的成績,且在非公開測驗集中優勢更加明顯。
#完整測試集排名 | ||
排名 |
廠家 |
#字錯誤率 |
1 |
B站 |
2.82% |
2 |
阿里雲 |
2.85% |
3 |
依圖 |
3.16% |
4 | 微軟 |
3.28% |
#5 |
##3.85% |
|
##3.85% |
6 | #訊息 |
#4.05% |
4.05% | |
7 | 思必馳 | #5.19% |
本文將介紹在這一過程中,我們在數據和演算法上所做的累積與探索。
#一個適合工業化生產的高品質(高性價比)ASR引擎,它應該具有如下的特點:
##說明 |
|
#高精度 |
在相關的業務場景精確度高,穩健性好 |
高效能 |
#工業化部署延遲低,速度快,運算資源佔用少 |
下面結合B站的業務場景在以上幾個方面介紹我們相關的探索與實務。
#語音辨識任務即從一段語音中完整辨識出其中的文字內容(語音轉文字)。
滿足現代工業生產的ASR系統依賴大量且多樣的訓練數據,這裡「多樣」是指說話周圍環境,場景語境(領域)及說話人口音等非同質數據。
針對於B站的業務場景,我們首先需要解決語音訓練資料冷啟動的問題,我們將碰到以下挑戰:
對於上述問題,我們採用了以下的資料解決方案:
#為此,我們基於開源數據,採購的成品數據及少量標註數據訓練一個篩選數據的基礎模型,以投稿字幕文字訓練子語言模型,用來做句子時間對齊及字幕篩選過濾;
半監督訓練 近年來因數據,GPU運算能力大幅提升及大規模人工標註數據成本過高,業界湧現了大量無監督(wav2vec,HuBERT,data2vec等)[1][2]及半監督訓練方法。 B站存在大量的無標註業務數據,同時我們也從其它網站獲取了大量無標註視頻數據,我們前期採用被稱為NST(Noisy Student Training)[3]的半監督訓練方法,初期按領域及播放量分佈篩選了近50萬稿件最終生成約4萬小時自動標註數據,加上初始1.5萬小時標註數據訓練後識別精度有相對近15%左右的提升,且模型魯棒性改善明顯。圖一
這樣形成一個正向循環。初步解決數據問題後,以下我們將重點放在模型演算法相關最佳化。
模型演算法最佳化
ASR技術發展歷程 我們簡單回顧下現代語音辨識發展歷程,大體可以分為三個階段:第一階段是從1993年到2009年,語音辨識一直處於HMM-GMM時代,由先前基於標準模板匹配開始轉向統計模型,研究的重點也由小詞彙量、孤立詞轉大詞彙量、非特定人連續語音識別,自90年代以後在很長一段時間內語音辨識的發展比較緩慢,辨識錯誤率沒有明顯的下降。 第二階段是2009年到2015年左右,隨著GPU運算能力的大幅提升,2009年深度學習又開始在語音辨識中興起,語音辨識框架開始轉變為HMM-DNN,開始步入DNN時代,語音辨識準確度得到了顯著的提升。 第三階段是2015年後,由於端對端技術的興起,CV,NLP等其它AI領域的發展相互促進,語音識別開始使用更深,更複雜的網絡,同時採用端到端科技進一步大幅提升了語音辨識的效能,在一些限制的條件下甚至超過了人類等級。圖二
#B戰ASR技術方案 #######重要概念介紹############為方便理解,以下簡單介紹一些重要基礎概念######建模單元######## ##################第二階段基於神經網路的混合框架HMM-DNN相比比第一階段HMM-GMM系統語音辨識準確率是有著巨大的提升,這點也得到了大家的共識。
但第三階段端對端(end-to-end,E2E)系統對比第二階段在開始的一段時間業界也有爭議[4],隨著AI技術的發展,特別是transformer相關模型的出現,模型的表徵能力越來越強,
同時隨著GPU運算能力的大幅提升,我們可以加入更多的資料訓練, 端到端方案逐漸展現它的優勢,越來越多的公司選擇端到端的方案。
這裡我們結合B站業務場景比較這兩個方案:
#圖三
圖二是一個典型的DNN- HMM框架,可以看出它的pipeline 很長,不同的語言都需要專業的發音字典,
而圖三端到端系統把所有這些放在一個神經網路模型中,神經網路輸入是音訊(或特徵),輸出即是我們想要的辨識結果。
圖四
隨著技術的發展端對端系統在開發工具,社群及效能上優勢也越來越明顯:
|
#混合框架(hybrid) |
#端對端框架(E2E) |
##代表性開源工具及社群 |
||
Espnet, Wenet, DeepSpeech, K2等 | 程式語言 |
|
Python, Shell | 可擴充性 |
下面表格是典型的資料集基於代表性工具下的最優結果(字錯誤率CER):
#混合框架(hybrid) |
端對端框架(E2E) |
||
#代表工具 |
Kaldi |
Espnet |
|
#代表技術 |
##tdnn chain rnnlm rescoring | conformer-las/ctc/rnnt | |
#Librispeech | 3.06 | 1.90 | |
#GigaSpeech | 14.84 | 10.80 | |
Aishell-1 | 7.43 | #4.72 | |
##WenetSpeech | #12.83 | 8.80 |
E2E-AED |
E2E-RNNT |
優化的E2E-CTC |
|
辨識精確度 |
6 |
5 |
##6 |
即時(串流) | 3 | #5 | 5 |
成本及速度 | 4 |
3 |
#5 |
快修 |
3 |
#3 |
##6 |
#快速高效迭代 | 6 | 4 | #5 |
#2000小時 |
#15000小時 |
|
#Kaldi Chain model LM |
13.7 |
-- |
# #E2E-AED | 11.8 | |
6.6 |
E2E- RNNT | 12.4 |
-- |
##E2E-CTC( greedy) | 13.1 |
上面是分別基於2000小時及15000小時視訊訓練資料在B站生活美食場景的結果,其中Chain及E2E-CTC採用了相同語料訓練的擴展語言模型,
E2E-AED及E2E-RNNT並沒有採用擴展的語言模型,端對端系統都是基於Conformer模型。
從第二表格可以看出單一的E2E-CTC系統精度並不明顯弱於其它端對端系統,但同時E2E-CTC 系統存在著以下優點:
#高精度可擴展ASR框架
圖七
在B站生產環境中對速度,精度以及資源消耗都有較高的要求,在不同的場景也有快速更新及客製化的需求(如稿件相關的實體詞,熱門遊戲及體育賽事的客製化等),
這裡我們整體採用端對端CTC系統,透過動態解碼器解決可擴展性自訂問題。以下將重點分開闡述模型精度,速度及擴展性優化工作。
端對端CTC區分性訓練
我們系統採用中文字加上英文BPE建模,基於AED及CTC多工訓練完以後,我們只保留CTC部分,後面我們會進行區分性訓練,我們採用端到端的lattice free mmi[6][7]區分性訓練:
1. 傳統做法
a. 全部訓練語料對應的alignment和解碼lattice;
b . 訓練的時候每個minibatch由預先生成的alignment和lattice 分別計算分子和分母梯度並更新模型;
2. 我們做法
# a. 訓練的時候每個minibatch直接在GPU上計算分子和分母梯度並更新模型;
B站影片測試集 | |
CTC baseline | #6.96 |
6.63 |
|
E2E LFMMI DT |
##6.13 |
以上是語音辨識技術在B站的落地實踐的詳細內容。更多資訊請關注PHP中文網其他相關文章!