使用魔搭開發自己的語音AI:從入門到精通

機器之心發表於2022-12-01

語音AI是最早從實驗室走向應用的AI技術,其發展史就是不斷創新、解鎖應用的歷史,從1995年 Dragon Dictate的桌面孤立詞語音識別,到2011年蘋果的手機語音助手SIRI,再到當下百花齊放的各種智慧語音應用。

由於技術的快速進步,以及各大雲端計算廠商以API形式提供的語音AI能力,目前開發者已能便捷使用語音AI去搭建應用。但API也存在侷限性,不少開發者希望獲得更多、更底層的把控力,希望對API背後AI模型有更深入的瞭解;不只是開發應用,還可以開發模型;不只是呼叫API介面,還可以透過對模型的訓練或微調(fine-tuning),以提升實際應用效果。

為了讓所有滿懷創意的開發者實現更高水平的創新,在最近推出的魔搭社群ModelScope上,阿里達摩院首批開源開放了40多個語音AI模型,公有云上廣受歡迎的付費模型這次也免費開放。模型背後,我們提供了訓練或微調指令碼工具鏈,含蓋語音AI各個主要方向。

下面,就讓我們以語音合成、語音識別、語音訊號處理為例,來展示如何玩轉魔搭社群的語音AI模型。

一、語音合成

語音合成是將文字作為輸入,讓AI能夠將文字轉換為語音的原子能力。例如,我們希望AI朗讀如下的一段文字:

“最當初,他只是覺得賽倫看莫穎兒的眼光溫柔得超過一般父女或是師徒的感情,在觀察了一段時間過後,他才逐漸確定賽倫似乎很在乎這個少女。”

在魔搭社群,可以有兩種方式來進行語音合成模型的體驗:

第一種方式是使用模型詳情頁的“線上體驗”功能,以最直觀的方式對每個語音合成模型進行體驗。這對模型的初步體驗和把玩品鑑非常高效。

接下來以“SambertHifigan語音合成-中文-多人預訓練-16k”模型為例,介紹如何進行線上體驗。

模型連結:https://modelscope.cn/models/speech_tts/speech_sambert-hifigan_tts_zh-cn_multisp_pretrain_16k/summary

使用魔搭開發自己的語音AI:從入門到精通

我們輸入文字,點選“執行測試”,等待片刻,便可試聽語音合成的效果。

第二種方式是使用程式設計,透過簡單的幾行程式碼,就可以實現自己的語音合成功能,並整合嵌入到具體的應用中去。這種方式適合選定喜歡的發音人後、進行深度的應用開發。

魔搭社群提供了免費的CPU算力(不限額)和GPU算力(NVIDIA-V100-16G 限額100小時),供開發者進行使用,下面我們使用Notebook開發環境來簡單演示如何實現使用程式碼進行語音合成。

讓我們選擇CPU服務,稍等幾分鐘服務啟動,我們點選“檢視NoteBook”,進入開發環境,選擇啟動一個python指令碼。

使用魔搭開發自己的語音AI:從入門到精通

這些語音AI模型都配備了程式碼示例,我們可以在模型詳情頁的程式碼示例中找到:

使用魔搭開發自己的語音AI:從入門到精通

將該程式碼進行復制並貼上至notebook的python指令碼當中,我們可以將程式碼中‘待合成文字’字串替換成想要的合成本文,並執行程式,便可以下載生成的音訊檔案進行試聽。

使用魔搭開發自己的語音AI:從入門到精通

這項語音合成技術背後是達摩院的顯式韻律聲學模型SAMBERT以及Hifi-GAN聲碼器的結合。

在語音合成領域,目前以FastSpeech2類似的Non-Parallel模型為主流,它針對基頻(pitch)、能量(energy)和時長(duration)三種韻律表徵分別建模。但是,該類模型普遍存在一些效果和效能上的問題:獨立建模時長、基頻、能量,忽視了其內在聯絡;完全非自迴歸的網路結構,無法滿足工業級實時合成需求;幀級別基頻和能量預測不穩定...

因此達摩院設計了SAMBERT,一種基於Non-Parallel結構的改良版TTS模型,它具有以下優點:

1.    建立時長與基頻、能量的依賴關係,並使用自迴歸結構的時長預測模組,提升預測韻律的自然度和多樣性;

2.    Decoder使用PNCA自迴歸結構,降低頻寬要求,支援CPU實時合成;

3.    音素級別建模基頻、能量,提高容錯率;

4.    以預訓練BERT語言模型為編碼器,在小規模資料上效果更好。

使用魔搭開發自己的語音AI:從入門到精通

二、語音識別

在魔搭社群上,達摩院語音實驗室開放了核心的語音識別模型“Paraformer語音識別-中文-通用-16k-離線”,這是即將大規模商業部署的下一代模型,其訓練資料規模達到5萬小時以上,透過對非自迴歸語音識別模型技術的改進,不僅達到當前類Transformer自迴歸模型的語音識別準確率,而且在推理效率上有10倍的加速比提升。

模型連結:https://modelscope.cn/models/damo/speech_paraformer_asr_nat-zh-cn-16k-common-vocab8358-tensorflow1/summary

使用魔搭開發自己的語音AI:從入門到精通

在魔搭社群中,語音識別模型與語音合成一樣,提供Demo和Notebook兩種方式進行效果體驗,操作方法請參見上文,不再贅述。

除了開放最先進的Paraformer模型之外,語音實驗室還免費開放了當紅的語音識別模型UniASR,它在公有云上提供商業化的服務,廣受歡迎。UniASR模型含蓋了中、英、日、俄等語種,支援8k/16k取樣率,可以滿足開發者不同場景的開發需求。

模型連結:https://modelscope.cn/models/damo/speech_UniASR-large_asr_2pass-zh-cn-16k-common-vocab8358-tensorflow1-offline/summary 

使用魔搭開發自己的語音AI:從入門到精通 三、語音訊號處理

訊號處理也是語音處理的一個重要的技術組成分支,達摩院開源了基於深度學習的回聲殘餘抑制演算法。

模型名:DFSMN回聲消除-單麥單參考-16k

模型連結:https://modelscope.cn/models/damo/speech_dfsmn_aec_psm_16k/summary  

從使用者體驗角度,一個理想的回聲消除演算法要達到以下效果:遠端單講(far end single talk)時零回聲洩露;近端單講(near end single talk)時語音無損;雙端同時講話時可以互相聽清,也即雙講(double talk)通透。目前在開源的訊號處理演算法當中,雙講時的效果都比較差強人意。這是因為目前的開源訊號處理演算法無法有效區分錄音訊號中的回聲訊號和近端語音訊號,而且真實通話中雙講出現的時間一般較短、時間佔比也很低,所以從策略上為了確保零回聲洩露,只好犧牲雙講時的效果。

達摩院這個模型能夠進一步提升雙講通話效果,滿足使用者對語音通訊時的音質要求,已在阿里內部音影片專案上完成了工業化部署。大家如果現在使用釘釘視訊會議,會發現了多一個較為方便的對講功能。這次模型開源,希望能對從事webRTC的研究者與開發者有所幫助,歡迎大家基於這個模型進行應用開發,在NoteBook中只需要5行程式碼就可以得到回聲消除結果。

使用魔搭開發自己的語音AI:從入門到精通

該模型的技術創新點在於借鑑了智慧降噪的解決思路:資料模擬->模型最佳化->模型推理。

具體而言,我們結合回聲殘餘抑制的任務特點,在輸入特徵上,拼接了線性濾波器的輸出訊號和時延對齊的回採訊號,並提取FBank進行均值方差歸一化。在輸出目標上,選擇了相位感知的掩蔽值(Phase-Sensitive Mask, PSM)。在模型推理階段,對PSM與線性輸出的訊號頻譜逐點相乘後再進行IFFT (inverse Fast Fourier Transform)獲得近端語音。

使用魔搭開發自己的語音AI:從入門到精通 

四、寫在最後

在過去的語音 AI 探索當中,達摩院完整實現了從研到發,從模型創新到提供API的全鏈條。但是隨著近年來語音AI的飛速發展,開發者角色變得多元化、各方面需求也變得越來越豐富,傳統的“包打天下”的模式已不再合適。面向未來,我們希望透過魔搭這樣的開放、開源的社群來推進語音AI的研究和應用,促進語音AI生態的活躍和繁榮。

使用魔搭開發自己的語音AI:從入門到精通

魔搭社群官網連結:https://modelscope.cn


相關文章