語音識別技術在B站的落地實踐
自動語音識別(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% |
6 | 訊飛 | 4.05% |
7 | 思必馳 | 5.19% |
8 | 百度 | 8.14% |
- AI字幕(中英文C端,必剪,S12直播等)
- 全文檢索
本文將介紹在這一過程中,我們在數據和算法上所做的積累與探索。
高質量ASR引擎
一個適合工業化生產的高質量(高性價比)ASR引擎,它應該具有如下的特點:
說明 | |
高精度 | 在相關的業務場景精度高,魯棒性好 |
高性能 | 工業化部署延遲低,速度快,計算資源占用少 |
高擴展性 | 能高效支持業務迭代定制,滿足業務快速更新需求 |
下面結合B站的業務場景在以上幾個方面介紹我們相關的探索與實踐。
數據冷啟動
語音識別任務即從一段語音中完整識別出其中的文字內容(語音轉文字)。
滿足現代工業生產的ASR系統依賴大量且多樣的訓練數據,這里“多樣”是指說話周圍環境,場景語境(領域)及說話人口音等非同質數據。
針對于B站的業務場景,我們首先需要解決語音訓練數據冷啟動的問題,我們將碰到如下挑戰:
- 冷啟動:開始只有極少量的開源數據,購買的數據和業務場景匹配度很低。
- 業務場景領域廣:B站音視頻業務場景覆蓋幾十個領域,可以認為是泛領域,對數據“多樣性”要求很高。
- 中英文混合:B站年輕用戶較多,且存在較多中英文混合泛知識類視頻。
對于以上問題,我們采用了以下的數據解決方案:
業務數據篩選
B站存在少量UP主或用戶投稿的字幕(cc字幕),但同時也存在一些問題:
- 時間戳不準,句子開始和結束時間戳往往在首尾字中間或者數個字之后;
- 語音和文字沒有完全對應,多字,少字,注釋或翻譯,存在按意思理解生成字幕的情況;
- 數字轉換,比如字幕2002年(實際發音二千零二年,二零零二年等);
為此,我們基于開源數據,采購的成品數據及少量標注數據訓練一個篩選數據的基礎模型,以投稿字幕文本訓練子語言模型,用來做句子時間對齊及字幕篩選過濾;
半監督訓練
近年來因數據,GPU計算能力大幅提升及大規模人工標注數據成本過高,業界涌現了大量無監督(wav2vec,HuBERT,data2vec等)[1][2]及半監督訓練方法。
B站存在大量的無標注業務數據,同時我們也從其它網站獲取了大量無標注視頻數據,我們前期采用被稱為NST(Noisy Student Training)[3]的半監督訓練方法,
初期按領域及播放量分布篩選了近50萬稿件最終生成約4萬小時自動標注數據,加上初始1.5萬小時標注數據訓練后識別精度有相對近15%左右的提升,且模型魯棒性改善明顯。
圖一
通過開源數據,B站投稿數據,人工標注數據及自動標注數據我們初步解決數據冷啟動問題,隨著模型的迭代,我們可以進一步篩選出識別比較差的領域數據,
這樣形成一個正向循環。初步解決數據問題后,下面我們重點介紹模型算法相關優化。
模型算法優化
ASR技術發展歷程
我們簡單回顧下現代語音識別發展歷程,大體可以分為三個階段:
第一階段是從1993年到2009年,語音識別一直處于HMM-GMM時代,由以前基于標準模板匹配開始轉向統計模型,研究的重點也由小詞匯量、孤立詞轉大詞匯量、非特定人連續語音識別,自90年代以后在很長一段時間內語音識別的發展比較緩慢,識別錯誤率沒有明顯的下降。
第二階段是2009年到2015年左右,隨著GPU計算能力的大幅提升,2009年深度學習又開始在語音識別中興起,語音識別框架開始轉變為HMM-DNN,開始步入DNN時代,語音識別準確度得到了顯著的提升。
第三階段是2015年以后,由于端到端技術的興起,CV,NLP等其它AI領域的發展相互促進,語音識別開始使用更深,更復雜的網絡,同時采用端到端技術進一步大幅提升了語音識別的性能,在一些限制的條件下甚至超過了人類水平。
圖二
B戰ASR技術方案
重要概念介紹
為方便理解,下面簡單介紹一些重要基礎概念
建模單元
Hybrid or E2E
第二階段基于神經網絡的混合框架HMM-DNN相比比第一階段HMM-GMM系統語音識別準確率是有著巨大的提升,這點也得到了大家的共識。
但第三階段端到端(end-to-end,E2E)系統對比第二階段在開始的一段時間業界也有爭議[4],隨著AI技術的發展,特別是transformer相關模型的出現,模型的表征能力越來越強,
同時隨著GPU計算能力的大幅提升,我們可以加入更多的數據訓練, 端到端方案逐漸表現出它的優勢,越來越多的公司選擇端到端的方案。
這里我們結合B站業務場景對比這兩種方案:
圖三
圖二是一個典型的DNN-HMM框架,可以看出它的pipeline 很長,不同的語言都需要專業的發音詞典,
而圖三端到端系統把所有這些放在一個神經網絡模型中,神經網絡輸入是音頻(或特征),輸出即是我們想要的識別結果。
圖四
隨著技術的發展端到端系統在開發工具,社區及性能上優勢也越來越明顯:
- 代表性工具及社區比較
混合框架(hybrid) | 端到端框架(E2E) | |
代表性開源工具及社區 | HTK, Kaldi | Espnet, Wenet, DeepSpeech, K2等 |
編程語言 | C/C++, Shell | Python, Shell |
可擴展性 | 從頭開發 | TensorFlow/Pytorch |
- 性能比較
下面表格是典型的數據集基于代表性工具下的最優結果(字錯誤率 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 |
總之,選擇端到端系統,相比傳統的混合框架,在資源一定的情況下,我們可以更快更好的開發出一個高質量的ASR系統。
當然,基于混合框架,如果我們也采用同等先進的模型及高度優化的解碼器也是可以達到和端到端接近的效果,但我們可能需要投入數倍的人力及資源來開發優化這個系統。
端到端方案選擇
B站每天都有數十萬小時的音頻需要轉寫,對ASR系統吞吐和速度要求都很高,生成AI字幕對精度也有較高的要求,同時B站的場景覆蓋也非常廣泛,選擇一個合理高效的ASR系統對我們來說很重要。
理想的ASR系統
圖五
我們希望基于端到端框架構建一個高效的ASR系統解決在B站場景的問題。
端到端系統比較
圖六
圖四是現在有代表性的三種端到端系統[5],分別是E2E-CTC,E2E-RNNT,E2E-AED,下面從各個方面對比各個系統優缺點(分數越高越好)
- 系統比較
E2E-AED | E2E-RNNT | 優化的E2E-CTC | |
識別精度 | 6 | 5 | 6 |
實時(流式) | 3 | 5 | 5 |
成本及速度 | 4 | 3 | 5 |
快修 | 3 | 3 | 6 |
快速高效迭代 | 6 | 4 | 5 |
- 非流式精度比較(字錯誤率 CER)
2000小時 | 15000小時 | |
Kaldi Chain model+LM | 13.7 | -- |
E2E-AED | 11.8 | 6.6 |
E2E-RNNT | 12.4 | -- |
E2E-CTC(greedy) | 13.1 | 7.1 |
優化的E2E-CTC+LM | 10.2 | 5.8 |
上面是分別基于2000小時及15000小時視頻訓練數據在B站生活美食場景的結果,其中Chain及E2E-CTC采用了相同語料訓練的擴展語言模型,
E2E-AED及E2E-RNNT沒有采用擴展的語言模型,端到端系統都是基于Conformer模型。
從第二表格可以看出單一的E2E-CTC系統精度并不明顯弱于其它端到端系統,但同時E2E-CTC 系統存在著以下優點:
- 因為沒有神經網絡的自回歸(AED decoder 及RNNT predict)結構,E2E-CTC 系統在流式,解碼速度,部署成本有著天然的優勢;
- 在業務定制上,E2E-CTC 系統也更容易外接各種語言模型(nnlm及ngram),這樣使得在沒有足夠數據充分覆蓋的通用開放領域其泛化穩定性要明顯優于其它端到端系統。
高質量ASR解決方案
高精度可擴展ASR框架
圖七
在B站生產環境中對速度,精度以及資源消耗都有較高的要求,在不同的場景也有快速更新及定制的需求(比如稿件相關的實體詞,熱門游戲及體育賽事的定制等),
這里我們總體采用端到端CTC系統,通過動態解碼器解決可擴展性定制問題。下面將重點分開闡述模型精度,速度及擴展性優化工作。
端到端CTC區分性訓練
我們系統采用中文字加上英文BPE建模,基于AED及CTC多任務訓練完以后,我們只保留CTC部分,后面我們會進行區分性訓練,我們采用端到端的lattice free mmi[6][7]區分性訓練:
- 區分性訓練準則
- 區分性準則-MMI
- 和傳統區分性訓練區別
1. 傳統做法
a. 先在CPU上生成全部訓練語料對應的alignment和解碼lattice;
b. 訓練的時候每個minibatch由預先生成的alignment和lattice 分別計算分子和分母梯度并更新模型;
2. 我們做法
a. 訓練的時候每個minibatch直接在GPU上計算分子和分母梯度并更新模型;
- 和kaldi基于phone的lattice free mmi區分性訓練區別
1. 直接端到端對字及英文BPE建模,拋棄phone hmm狀態轉移結構;
2. 建模粒度大,訓練輸入沒有近似截斷,context 為整個句子;
下表是在15000小時數據上,CTC訓練完成后,用解碼置信度選取3000小時進行區分性訓練的結果,可以看出采用端到端的lattice free mmi區分性訓練結果要好于傳統DT訓練,除了精度上的提升,整個訓練過程都能在tensorflow/pytorch GPU中完成。
B站視頻測試集 | |
CTC baseline | 6.96 |
傳統DT | 6.63 |
E2E LFMMI DT | 6.13 |
相對混合系統,端到端系統解碼結果時間戳都不是很準,AED 訓練沒有隨時間單調的對其,CTC 訓練的模型相比 AED 時間戳準確很多,但也存在尖峰問題,每個字的持續時長不準;
經過端到端區分性訓練后,模型輸出會變得更加平整,解碼結果的時間戳邊界更加準確;
端到端CTC解碼器
在語音識別技術發展過程中,無論是基于GMM-HMM的第一階段還是基于DNN-HMM混合框架的第二階段,解碼器都是其中非常重要的組成部分。
解碼器的性能直接決定了最終ASR系統的速度及精度,業務的擴展及定制也大部分依賴靈活高效的解碼器方案。傳統解碼器不管是動態解碼器還是基于WFST的靜態解碼器都非常復雜,不僅依賴大量的理論知識,還需要專業的軟件工程設計,開發一個性能優越的傳統解碼引擎不僅前期需要投入大量的人力開發,而且后期維護成本也很高。
典型的傳統的 WFST 解碼器,需要把hmm,triphone context,字典,語言模型編譯成一個統一的網絡,即HCLG,在一個統一的FST網絡搜索空間,這樣可以提升解碼速度,提高精度。
隨著端到端系統技術的成熟,端到端系統建模單元粒度較大,比如一般為中文的字或英文的wordpiece,因為去除了傳統HMM轉移結構,triphone context及發音字典,這使得后面的解碼搜索空間變的小很多,這樣我們選擇基于beam search 為基礎的簡單高效動態解碼器,下圖是兩種解碼框架,相比傳統的WFST解碼器,端到端動態解碼器有以下優勢:
- 占用資源少,典型的為WFST解碼資源1/5;
- 其耦合度低,方便業務定制,方便和各種語言模型融合解碼,每次修改不需要重新編譯解碼資源;
- 解碼速度快,采用字同步解碼[8],典型的比WFST解碼速度快5倍;
圖八
模型推理部署
在一個合理高效的端到端ASR框架下,計算量最大的部分應該在神經網絡模型的推理上,而這塊計算密集的部分可以充分利用GPU的計算能力,我們分別從推理服務,模型結構及模型量化幾部分優化模型推理部署:
- 模型采用F16半精度推理;
- 模型轉FasterTransformer[9],基于nvidia高度優化的 transformer;
- 采用triton部署推理模型,自動組batch,充分提升GPU使用效率;
在單塊GPU T4下速度提升30%,吞吐提升2倍,1小時能轉寫3000小時長音頻;
總結
這篇文章主要介紹了語音識別技術在B站場景的落地,如何從頭解決訓練數據問題,整體技術方案的選擇,各個子模塊的介紹及優化,包括模型訓練,解碼器優化及服務推理部署等。未來我們將進一步提升相關落地場景用戶體驗,比如采用即時熱詞技術,優化稿件級別相關實體詞準確率;結合流式ASR相關技術,更加高效的定制支持游戲,體育賽事的實時字幕轉寫。
參考資料
[1] A Baevski, H Zhou, et al. wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations
[2] A Baevski, W Hsu, et al. data2vec: A General Framework for Self-supervised Learning in Speech, Vision and Language
[3] Daniel S, Y Zhang, et al. Improved Noisy Student Training for Automatic Speech Recognition
[4] C Lüscher, E Beck, et al. RWTH ASR Systems for LibriSpeech: Hybrid vs Attention -- w/o Data Augmentation
[5] R Prabhavalkar , K Rao, et al, A Comparison of Sequence-to-Sequence Models for Speech Recognition
[6] D Povey, V Peddinti1, et al, Purely sequence-trained neural networks for ASR based on lattice-free MMI
[7] H Xiang, Z Ou, CRF-BASED SINGLE-STAGE ACOUSTIC MODELING WITH CTC TOPOLOGY
[8] Z Chen, W Deng, et al, Phone Synchronous Decoding with CTC Lattice
[9] ??https://github.com/NVIDIA/FasterTransformer??
本期作者:鄧威
資深算法工程師
嗶哩嗶哩語音識別方向負責人