一文讀懂PaddleSpeech中英混合語音識別技術(shù)
? ? ? 語音識別技術(shù)能夠讓計算機(jī)理解人類的語音,從而支持多種語音交互的場景,如手機(jī)應(yīng)用、人車協(xié)同、機(jī)器人對話、語音轉(zhuǎn)寫等。然而,在這些場景中,語音識別的輸入并不總是單一的語言,有時會出現(xiàn)多語言混合的情況。例如,在中文場景中,我們經(jīng)常會使用一些英文專業(yè)術(shù)語來表達(dá)意思,如“GPS信號弱”、“Java工程師”等,這就給語音識別技術(shù)帶來了新的挑戰(zhàn)。
? ? ? 本次PaddleSpeech發(fā)布的中英文語音識別預(yù)訓(xùn)練模型Conformer_talcs可以通過PaddleSpeech封裝的命令行工具CLI或者Python接口快速使用,開發(fā)者們可以基于此搭建自己的智能語音應(yīng)用,也可以參考示例訓(xùn)練自己的中英文語音識別模型。
示例鏈接https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/tal_cs/asr1
快速體驗
示例音頻:https://paddlespeech.bj.bcebos.com/PaddleAudio/ch_zh_mix.wav
? ? ? 使用命令行工具CLI 快速體驗語音識別效果,命令如下:
bash
paddlespeech asr --model conformer_talcs --lang zh_en --codeswitch True --input ./ch_zh_mix.wav -v
#?終端輸出:今天是monday 明天是tuesday
? ? ? Python 接口快速體驗,代碼實(shí)現(xiàn)如下:
python
>>>?import?paddle
>>>?from?paddlespeech.cli.asr?import?ASRExecutor
>>>?asr_executor?=?ASRExecutor()
>>>?text?=?asr_executor(
????model='conformer_talcs',
????lang='zh_en',
????sample_rate=16000,
????config=None,?
????ckpt_path=None,
????audio_file='./ch_zh_mix.wav',
????codeswitch=True,
????force_yes=False,
????device=paddle.get_device())
>>>?print('ASR?Result:?\n{}'.format(text))
ASR?Result:
今天是?monday?明天是tuesday
01 中英文語音識別技術(shù)
PART1 中英文語音識別難點(diǎn)? ? ? 中英文語音識別相較于單語言的語音識別而言,主要難點(diǎn)如下:
數(shù)據(jù)量少
? ? ? 中英混合數(shù)據(jù)相較于單語言的數(shù)據(jù)更少。目前開源的中文語音識別數(shù)據(jù)集如WenetSpeech(10000小時有監(jiān)督,2500小時弱監(jiān)督,10000小時無監(jiān)督)、英文語音識別數(shù)據(jù)集Giga Speech(10000小時有監(jiān)督,33000小時無監(jiān)督)都達(dá)到了萬小時級別,但是混合的開源中英文語音識別數(shù)據(jù)只有SEAME(120小時)和TAL_CSASR(587小時)兩個開源數(shù)據(jù),混合數(shù)據(jù)集比單語言數(shù)據(jù)集會更少。
中英相似發(fā)音易混淆
? ? ? 中英文語音識別需要一個單一的模型來學(xué)習(xí)多種語音,相似但具有不同含義的發(fā)音通常會導(dǎo)致模型的復(fù)雜度和計算量增加,同時由于它需要區(qū)分處理不同語言的類似發(fā)音,因此在模型建模時就需要按照不同語言區(qū)分不同的建模單元。
PART2 PaddleSpeech 中英文語音識別方案
模型選擇與介紹
? ? ? 本方案使用了一種端到端語音識別模型Conformer U2模型,其采用了Joint CTC/Attention with Transformer or Conformer的結(jié)構(gòu)。訓(xùn)練時使用CTC 和 Attention Loss 聯(lián)合優(yōu)化,并且通過dynamic chunk的訓(xùn)練技巧,使Shared Encoder能夠處理任意大小的chunk(即任意長度的語音片段)。其還使用CTC-Prefix Beam Search和Attention Decoder的方式進(jìn)行解碼,得到最終結(jié)果,同時實(shí)現(xiàn)了流式和非流式的語音識別,支持控制推理延遲。
? ? ? 本次PaddleSpeech開源的預(yù)訓(xùn)練模型,是非流式的端到端識別Conformer U2模型,chunk中包含全部上下文信息,需要整句輸入進(jìn)行識別。如果你想訓(xùn)練流式中英文語音識別模型,也可以參考PaddleSpeech的Conformer U2/U2++模型流式語音識別的示例訓(xùn)練自己的流式中英文語音識別模型。
示例鏈接https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/wenetspeech/asr1

數(shù)據(jù)集介紹
? ? ? 本次使用了TAL_CSASR中英混合語音數(shù)據(jù)集。語音場景為語音授課音頻,包括中英混合講課的情況,總計587小時語音。
數(shù)據(jù)集下載地址
https://ai.100tal.com/dataset

中英混合語音識別建模單元
? ? ? 在中文語音識別系統(tǒng)中,常采用音素、漢字、詞等作為聲學(xué)模型的建模單元,在英文語音識別系統(tǒng)中則常采用英文音素、國際音標(biāo)、子詞等作為聲學(xué)模型的建模單元。
? ? ? 本次PaddleSpeech開源的預(yù)訓(xùn)練中英文語音識別模型是采用端到端語音識別模型Conformer U2,未接入語言模型,使用了中文字/詞加英文子詞的建模方法,將中英文分開建模,通過模型推理,直接得到識別后的結(jié)果。
試驗結(jié)果對比
? ? ? 由于本項目使用的是中英文混合數(shù)據(jù)集,所以我們選擇混合錯誤率(MER,Mix Error Rate)作為評價指標(biāo),中文部分計算字錯誤率(CER,Character Error Rate),英文部分計算詞錯誤率(Word Error Rate)。測試數(shù)據(jù)集選擇TAL_CSASR中已經(jīng)劃分好的測試集。由于不同的解碼方式識別的效果不同,這里我們使用 Attention、CTC Greedy Search、CTC Prefix Beam Search、Attention Rescoring 四種解碼方式進(jìn)行試驗,解碼效果最佳為Attention Rescoring,混合錯誤率MER為0.084,折算為我們常說的語音識別正確率91.6%。
進(jìn)一步優(yōu)化與效果提升
? ? ? 當(dāng)前中英文語音識別方案的效果還有進(jìn)一步提升的空間,比如在Conformer U2 模型后面加入Language Model,通過語言模型學(xué)習(xí)中英文語言信息,PaddleSpeech中提供了基于N-Gram的語言模型訓(xùn)練方案。此外,可以在訓(xùn)練過程中加入Language ID,使用token級別或者幀級別的語言ID標(biāo)注信息,可以進(jìn)一步提高中英文語音識別的效果。如果你有更大的中英文混合數(shù)據(jù)集或者是場景相關(guān)的數(shù)據(jù)集,可以通過微調(diào)或者進(jìn)一步訓(xùn)練,提高在業(yè)務(wù)場景中的識別效果。
02 PaddleSpeech 語音識別技術(shù)介紹
? ? ? 除了中英文混合的Conformer U2模型以外,飛槳語音模型庫PaddleSpeech中包含了多種語音識別模型,能力涵蓋了聲學(xué)模型、語言模型、解碼器等多個環(huán)節(jié),支持多種語言。目前PaddleSpeech已經(jīng)支持的語音識別聲學(xué)模型包括DeepSpeech2、Transfromer、Conformer U2/U2 ++,支持中文和英文的單語言識別以及中英文混合識別;支持CTC前束搜索(CTC Prefix Beam Search)、CTC貪心搜索(CTC Greedy Search)、注意力重打分(Attention Rescoring)等多種解碼方式;支持 N-Gram語言模型、有監(jiān)督多語言大模型Whisper、無監(jiān)督預(yù)訓(xùn)練大模型wAV2vec2;同時還支持服務(wù)一鍵部署,可以快速封裝流式語音識別和非流式語音識別服務(wù)。通過PaddleSpeech提供的命令行工具CLI和Python接口可以快速體驗上述功能。
? ? ? 通過PaddleSpeech精品項目合集,可以在線體驗PaddleSpeech的優(yōu)秀項目,上面更有PaddleSpeech核心開發(fā)者精心打造的《飛槳PaddleSpeech語音技術(shù)課程》,幫助開發(fā)者們快速入門。
項目傳送門:https://aistudio.baidu.com/aistudio/projectdetail/4692119?contributionType=1
? ? ? 如果您想了解更多有關(guān)PaddleSpeech的內(nèi)容,歡迎前往PaddleSpeech主頁學(xué)習(xí)更多用法,Star 關(guān)注,獲取PaddleSpeech最新資訊。
PaddleSpeech地址:https://github.com/PaddlePaddle/PaddleSpeech

引用
[1]?模型結(jié)構(gòu)圖:https://arxiv.org/pdf/2012.05481.pdf
[2] 數(shù)據(jù)集介紹:https://ai.100tal.com/dataset