語音識別技術(shù)在B站的落地實踐
本期作者

前言
自動語音識別(Automatic Speech Recognition,ASR)技術(shù)目前已大規(guī)模落地于B站相關(guān)業(yè)務(wù)場景,例如音視頻內(nèi)容安全審核,AI字幕(C端,必剪,S12直播等),視頻理解(全文檢索)等。
另外,B站ASR引擎在工業(yè)界benchmark??SpeechIO?(https://github.com/SpeechColab/Leaderboard)2022年11月最近一期全量測評中也取得了第一名(https://github.com/SpeechColab/Leaderboard#5-ranking)的成績,且在非公開測試集中優(yōu)勢更加明顯。

AI字幕(中英文C端,必剪,S12直播等)


全文檢索

本文將介紹在這一過程中,我們在數(shù)據(jù)和算法上所做的積累與探索。
高質(zhì)量ASR引擎
一個適合工業(yè)化生產(chǎn)的高質(zhì)量(高性價比)ASR引擎,它應(yīng)該具有如下的特點:

下面結(jié)合B站的業(yè)務(wù)場景在以上幾個方面介紹我們相關(guān)的探索與實踐。
數(shù)據(jù)冷啟動
語音識別任務(wù)即從一段語音中完整識別出其中的文字內(nèi)容(語音轉(zhuǎn)文字)。
滿足現(xiàn)代工業(yè)生產(chǎn)的ASR系統(tǒng)依賴大量且多樣的訓(xùn)練數(shù)據(jù),這里“多樣”是指說話周圍環(huán)境,場景語境(領(lǐng)域)及說話人口音等非同質(zhì)數(shù)據(jù)。
針對于B站的業(yè)務(wù)場景,我們首先需要解決語音訓(xùn)練數(shù)據(jù)冷啟動的問題,我們將碰到如下挑戰(zhàn):
冷啟動:開始只有極少量的開源數(shù)據(jù),購買的數(shù)據(jù)和業(yè)務(wù)場景匹配度很低。
業(yè)務(wù)場景領(lǐng)域廣:B站音視頻業(yè)務(wù)場景覆蓋幾十個領(lǐng)域,可以認(rèn)為是泛領(lǐng)域,對數(shù)據(jù)“多樣性”要求很高。
中英文混合:B站年輕用戶較多,且存在較多中英文混合泛知識類視頻。
對于以上問題,我們采用了以下的數(shù)據(jù)解決方案:
業(yè)務(wù)數(shù)據(jù)篩選
B站存在少量UP主或用戶投稿的字幕(cc字幕),但同時也存在一些問題:
時間戳不準(zhǔn),句子開始和結(jié)束時間戳往往在首尾字中間或者數(shù)個字之后;
語音和文字沒有完全對應(yīng),多字,少字,注釋或翻譯,存在按意思理解生成字幕的情況;
數(shù)字轉(zhuǎn)換,比如字幕2002年(實際發(fā)音二千零二年,二零零二年等);
為此,我們基于開源數(shù)據(jù),采購的成品數(shù)據(jù)及少量標(biāo)注數(shù)據(jù)訓(xùn)練一個篩選數(shù)據(jù)的基礎(chǔ)模型,以投稿字幕文本訓(xùn)練子語言模型,用來做句子時間對齊及字幕篩選過濾;
?半監(jiān)督訓(xùn)練
近年來因數(shù)據(jù),GPU計算能力大幅提升及大規(guī)模人工標(biāo)注數(shù)據(jù)成本過高,業(yè)界涌現(xiàn)了大量無監(jiān)督(wAV2vec,HuBERT,data2vec等)[1][2]及半監(jiān)督訓(xùn)練方法。
B站存在大量的無標(biāo)注業(yè)務(wù)數(shù)據(jù),同時我們也從其它網(wǎng)站獲取了大量無標(biāo)注視頻數(shù)據(jù),我們前期采用被稱為NST(Noisy Student Training)[3]的半監(jiān)督訓(xùn)練方法,
初期按領(lǐng)域及播放量分布篩選了近50萬稿件最終生成約4萬小時自動標(biāo)注數(shù)據(jù),加上初始1.5萬小時標(biāo)注數(shù)據(jù)訓(xùn)練后識別精度有相對近15%左右的提升,且模型魯棒性改善明顯。

通過開源數(shù)據(jù),B站投稿數(shù)據(jù),人工標(biāo)注數(shù)據(jù)及自動標(biāo)注數(shù)據(jù)我們初步解決數(shù)據(jù)冷啟動問題,隨著模型的迭代,我們可以進一步篩選出識別比較差的領(lǐng)域數(shù)據(jù),
這樣形成一個正向循環(huán)。初步解決數(shù)據(jù)問題后,下面我們重點介紹模型算法相關(guān)優(yōu)化。
模型算法優(yōu)化
ASR技術(shù)發(fā)展歷程
我們簡單回顧下現(xiàn)代語音識別發(fā)展歷程,大體可以分為三個階段:
第一階段是從1993年到2009年,語音識別一直處于HMM-GMM時代,由以前基于標(biāo)準(zhǔn)模板匹配開始轉(zhuǎn)向統(tǒng)計模型,研究的重點也由小詞匯量、孤立詞轉(zhuǎn)大詞匯量、非特定人連續(xù)語音識別,自90年代以后在很長一段時間內(nèi)語音識別的發(fā)展比較緩慢,識別錯誤率沒有明顯的下降。
第二階段是2009年到2015年左右,隨著GPU計算能力的大幅提升,2009年深度學(xué)習(xí)又開始在語音識別中興起,語音識別框架開始轉(zhuǎn)變?yōu)镠MM-DNN,開始步入DNN時代,語音識別準(zhǔn)確度得到了顯著的提升。
第三階段是2015年以后,由于端到端技術(shù)的興起,CV,NLP等其它AI領(lǐng)域的發(fā)展相互促進,語音識別開始使用更深,更復(fù)雜的網(wǎng)絡(luò),同時采用端到端技術(shù)進一步大幅提升了語音識別的性能,在一些限制的條件下甚至超過了人類水平。

B戰(zhàn)ASR技術(shù)方案
重要概念介紹
為方便理解,下面簡單介紹一些重要基礎(chǔ)概念
建模單元

Hybrid or E2E
第二階段基于神經(jīng)網(wǎng)絡(luò)的混合框架HMM-DNN相比比第一階段HMM-GMM系統(tǒng)語音識別準(zhǔn)確率是有著巨大的提升,這點也得到了大家的共識。
但第三階段端到端(end-to-end,E2E)系統(tǒng)對比第二階段在開始的一段時間業(yè)界也有爭議[4],隨著AI技術(shù)的發(fā)展,特別是transformer相關(guān)模型的出現(xiàn),模型的表征能力越來越強,
同時隨著GPU計算能力的大幅提升,我們可以加入更多的數(shù)據(jù)訓(xùn)練,?端到端方案逐漸表現(xiàn)出它的優(yōu)勢,越來越多的公司選擇端到端的方案。
這里我們結(jié)合B站業(yè)務(wù)場景對比這兩種方案:

圖二是一個典型的DNN-HMM框架,可以看出它的pipeline 很長,不同的語言都需要專業(yè)的發(fā)音詞典,
而圖三端到端系統(tǒng)把所有這些放在一個神經(jīng)網(wǎng)絡(luò)模型中,神經(jīng)網(wǎng)絡(luò)輸入是音頻(或特征),輸出即是我們想要的識別結(jié)果。

隨著技術(shù)的發(fā)展端到端系統(tǒng)在開發(fā)工具,社區(qū)及性能上優(yōu)勢也越來越明顯:
代表性工具及社區(qū)比較

性能比較
下面表格是典型的數(shù)據(jù)集基于代表性工具下的最優(yōu)結(jié)果(字錯誤率 CER):

當(dāng)然,基于混合框架,如果我們也采用同等先進的模型及高度優(yōu)化的解碼器也是可以達到和端到端接近的效果,但我們可能需要投入數(shù)倍的人力及資源來開發(fā)優(yōu)化這個系統(tǒng)。
端到端方案選擇
B站每天都有數(shù)十萬小時的音頻需要轉(zhuǎn)寫,對ASR系統(tǒng)吞吐和速度要求都很高,生成AI字幕對精度也有較高的要求,同時B站的場景覆蓋也非常廣泛,選擇一個合理高效的ASR系統(tǒng)對我們來說很重要。
理想的ASR系統(tǒng)

我們希望基于端到端框架構(gòu)建一個高效的ASR系統(tǒng)解決在B站場景的問題。
端到端系統(tǒng)比較

圖
圖四是現(xiàn)在有代表性的三種端到端系統(tǒng)[5],分別是E2E-CTC,E2E-RNNT,E2E-AED,下面從各個方面對比各個系統(tǒng)優(yōu)缺點(分?jǐn)?shù)越高越好)
系統(tǒng)比較

非流式精度比較(字錯誤率 CER)

上面是分別基于2000小時及15000小時視頻訓(xùn)練數(shù)據(jù)在B站生活美食場景的結(jié)果,其中Chain及E2E-CTC采用了相同語料訓(xùn)練的擴展語言模型,
E2E-AED及E2E-RNNT沒有采用擴展的語言模型,端到端系統(tǒng)都是基于Conformer模型。
從第二表格可以看出單一的E2E-CTC系統(tǒng)精度并不明顯弱于其它端到端系統(tǒng),但同時E2E-CTC 系統(tǒng)存在著以下優(yōu)點:
因為沒有神經(jīng)網(wǎng)絡(luò)的自回歸(AED decoder 及RNNT predict)結(jié)構(gòu),E2E-CTC 系統(tǒng)在流式,解碼速度,部署成本有著天然的優(yōu)勢;
在業(yè)務(wù)定制上,E2E-CTC 系統(tǒng)也更容易外接各種語言模型(nnlm及ngram),這樣使得在沒有足夠數(shù)據(jù)充分覆蓋的通用開放領(lǐng)域其泛化穩(wěn)定性要明顯優(yōu)于其它端到端系統(tǒng)。
高質(zhì)量ASR解決方案
高精度可擴展ASR框架

在B站生產(chǎn)環(huán)境中對速度,精度以及資源消耗都有較高的要求,在不同的場景也有快速更新及定制的需求(比如稿件相關(guān)的實體詞,熱門游戲及體育賽事的定制等),
這里我們總體采用端到端CTC系統(tǒng),通過動態(tài)解碼器解決可擴展性定制問題。下面將重點分開闡述模型精度,速度及擴展性優(yōu)化工作。
端到端CTC區(qū)分性訓(xùn)練
我們系統(tǒng)采用中文字加上英文BPE建模,基于AED及CTC多任務(wù)訓(xùn)練完以后,我們只保留CTC部分,后面我們會進行區(qū)分性訓(xùn)練,我們采用端到端的lattice free mmi[6][7]區(qū)分性訓(xùn)練:
區(qū)分性訓(xùn)練準(zhǔn)則

區(qū)分性準(zhǔn)則-MMI

和傳統(tǒng)區(qū)分性訓(xùn)練區(qū)別
1. 傳統(tǒng)做法
? ?a. 先在CPU上生成全部訓(xùn)練語料對應(yīng)的alignment和解碼lattice;
? ?b. 訓(xùn)練的時候每個minibatch由預(yù)先生成的alignment和lattice 分別計算分子和分母梯度并更新模型;
? ? ? 2. 我們做法? ?
? ?a. 訓(xùn)練的時候每個minibatch直接在GPU上計算分子和分母梯度并更新模型;
和kaldi基于phone的lattice free mmi區(qū)分性訓(xùn)練區(qū)別
? ? ?1.?直接端到端對字及英文BPE建模,拋棄phone hmm狀態(tài)轉(zhuǎn)移結(jié)構(gòu);? ?
? ? ?2. 建模粒度大,訓(xùn)練輸入沒有近似截斷,context 為整個句子;
下表是在15000小時數(shù)據(jù)上,CTC訓(xùn)練完成后,用解碼置信度選取3000小時進行區(qū)分性訓(xùn)練的結(jié)果,可以看出采用端到端的lattice free mmi區(qū)分性訓(xùn)練結(jié)果要好于傳統(tǒng)DT訓(xùn)練,除了精度上的提升,整個訓(xùn)練過程都能在tensorflow/pytorch GPU中完成。

經(jīng)過端到端區(qū)分性訓(xùn)練后,模型輸出會變得更加平整,解碼結(jié)果的時間戳邊界更加準(zhǔn)確;
端到端CTC解碼器
在語音識別技術(shù)發(fā)展過程中,無論是基于GMM-HMM的第一階段還是基于DNN-HMM混合框架的第二階段,解碼器都是其中非常重要的組成部分。
解碼器的性能直接決定了最終ASR系統(tǒng)的速度及精度,業(yè)務(wù)的擴展及定制也大部分依賴靈活高效的解碼器方案。傳統(tǒng)解碼器不管是動態(tài)解碼器還是基于WFST的靜態(tài)解碼器都非常復(fù)雜,不僅依賴大量的理論知識,還需要專業(yè)的軟件工程設(shè)計,開發(fā)一個性能優(yōu)越的傳統(tǒng)解碼引擎不僅前期需要投入大量的人力開發(fā),而且后期維護成本也很高。
典型的傳統(tǒng)的 WFST 解碼器,需要把hmm,triphone context,字典,語言模型編譯成一個統(tǒng)一的網(wǎng)絡(luò),即HCLG,在一個統(tǒng)一的FST網(wǎng)絡(luò)搜索空間,這樣可以提升解碼速度,提高精度。
隨著端到端系統(tǒng)技術(shù)的成熟,端到端系統(tǒng)建模單元粒度較大,比如一般為中文的字或英文的wordpiece,因為去除了傳統(tǒng)HMM轉(zhuǎn)移結(jié)構(gòu),triphone context及發(fā)音字典,這使得后面的解碼搜索空間變的小很多,這樣我們選擇基于beam search 為基礎(chǔ)的簡單高效動態(tài)解碼器,下圖是兩種解碼框架,相比傳統(tǒng)的WFST解碼器,端到端動態(tài)解碼器有以下優(yōu)勢:
占用資源少,典型的為WFST解碼資源1/5;
其耦合度低,方便業(yè)務(wù)定制,方便和各種語言模型融合解碼,每次修改不需要重新編譯解碼資源;
解碼速度快,采用字同步解碼[8],典型的比WFST解碼速度快5倍;

模型推理部署
在一個合理高效的端到端ASR框架下,計算量最大的部分應(yīng)該在神經(jīng)網(wǎng)絡(luò)模型的推理上,而這塊計算密集的部分可以充分利用GPU的計算能力,我們分別從推理服務(wù),模型結(jié)構(gòu)及模型量化幾部分優(yōu)化模型推理部署:
模型采用F16半精度推理;
模型轉(zhuǎn)FasterTransformer[9],基于nvidia高度優(yōu)化的 transformer;
采用triton部署推理模型,自動組batch,充分提升GPU使用效率;
在單塊GPU T4下速度提升30%,吞吐提升2倍,1小時能轉(zhuǎn)寫3000小時長音頻;
總結(jié)
這篇文章主要介紹了語音識別技術(shù)在B站場景的落地,如何從頭解決訓(xùn)練數(shù)據(jù)問題,整體技術(shù)方案的選擇,各個子模塊的介紹及優(yōu)化,包括模型訓(xùn)練,解碼器優(yōu)化及服務(wù)推理部署等。未來我們將進一步提升相關(guān)落地場景用戶體驗,比如采用即時熱詞技術(shù),優(yōu)化稿件級別相關(guān)實體詞準(zhǔn)確率;結(jié)合流式ASR相關(guān)技術(shù),更加高效的定制支持游戲,體育賽事的實時字幕轉(zhuǎn)寫。
參考資料
[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
