06.11 DFSMN在阿里巴巴的應用以及如何採用開源代碼訓練DFSMN模型

摘要: DFSMN模型是語音識別中一種先進的聲學模型,語音識別中的聲學模型是語音識別技術中的核心所在。具體來說,聲學模型是根據輸入語音進行發音可能性的識別,結合語言模型、解碼器,就構成了完整的語音識別系統。本次開源的DFSMN模型,是阿里巴巴的高效工業級實現,相對於傳統的LSTM、BLSTM等聲學模型,該模型具備訓練速度更快、識別更高效、識別準確率更高和模型大小壓縮等效果。

DFSMN模型是語音識別中一種先進的聲學模型,語音識別中的聲學模型是語音識別技術中的核心所在。具體來說,聲學模型是根據輸入語音進行發音可能性的識別,結合語言模型、解碼器,就構成了完整的語音識別系統。本次開源的DFSMN模型,是阿里巴巴的高效工業級實現,相對於傳統的LSTM、BLSTM等聲學模型,該模型具備訓練速度更快、識別更高效、識別準確率更高和模型大小壓縮等效果。

一、採用DFSMN模型的產品

那麼這個模型對普通人來說意味著什麼呢?我們從研發團隊獲得的最新消息,即日起,阿里雲所有公有云、專有云用戶都可以享受到這個技術所帶來的優勢。在2017年的雲棲大會上,阿里巴巴公開了關於語音識別聲學模型的一個最新的技術進展,即這次開源的DFSMN技術。DFSMN模型技術是阿里巴巴語音識別的基礎能力之一,在這些基礎能力之上,阿里巴巴構建了一系列智能語音應用。

在法庭庭審識別、智能客服、視頻審核和實時字幕轉寫、聲紋驗證、物聯網等多個場景成功應用。全國有近300家法院和超過一萬家法庭在使用ET,每年有超過1.2億次客服電話由ET協助人類接聽。

在傳統語音交互產品方面,阿里雲智能語音交互研究的技術平臺能夠精準轉換用戶的語音為對互聯網內容和服務的意圖,觸達手機、IoT設備、互聯網汽車、電視、智能音箱等各類終端,如與斑馬網絡、上汽合作的的榮威互聯網汽車、與海爾合作的人工智能電視等。

在下一代人機交互產品方面,已經落地語音售票機於上海地鐵讓市民使用;在前不久的2018雲棲大會武漢峰會上,使用該技術的智能語音點餐機與真人收銀員進行人機PK,人工智能收銀員用49秒鐘時間點了34杯咖啡,而對壘的人類收銀員用時兩分半完成。

二、如何接入阿里雲語音識別服務

對於開發人員來說,如何接入DFSMN語音識別服務,即阿里雲語音識別服務呢?具體可以參考兩個頁面,分別是:

1. 智能語音交互產品首頁 https://data.aliyun.com/product/nls

2. 智能語音交互文檔 https://help.aliyun.com/product/30413.html

下面,我們簡單的為大家介紹一下接入流程:

1. 申請開通智能語音服務

(1)進入阿里雲官網,註冊阿里雲賬號。若已有阿里雲賬號,請看下一步。

(2)到“智能語音交互服務”頁面,點擊『立即開通』。

(3)在跳轉後的頁面,點擊『立即購買』,購買語音服務。實際不需付費,目前公有云用戶可免費使用不超過10路併發。

(4) 在數加-Access Key頁面創建並獲取您的Access Key ID 和 Secret。您可以使用它們調用智能語音服務。

2. 賬號安全的最佳實踐:上面創建的Access Key對應您的主賬號,有權使用所有您主賬號上開通的服務,就像Linux系統中的root用戶。建議關注安全性的客戶不要直接使用這個Key,而應該在RAM系統創建子賬號,使用子賬號的Access Key訪問語音服務。具體操作步驟如下:

(1) 訪問RAM子賬號管理頁面

(2) 點擊右上角“新建用戶”按鈕,在彈出的對話框中填寫子賬號用戶名,其他為非必填項

(3) 勾選底部“為該用戶自動生成AccessKey”複選框,點擊“確定按鈕”

(4) 在新彈出的對話框中點擊“保存AK信息”,把該子賬號的Access Key ID和Secret信息保存到本地。

注意:這是查看和保存 Access Key Secret的唯一機會

(5) 下面就可以使用此 Key 調用智能語音服務了

3. 語音識別服務下的”一句話識別”服務支持的app_key如下表,選擇“社交領域”的app_key為nls-service。

DFSMN在阿里巴巴的應用以及如何採用開源代碼訓練DFSMN模型

注:

(1) “SDK支持的結果返回方式”式包括“非流式”和“流式”兩種模式,“非流式”簡單來說就是用戶整句話說完後返回識別結果,“流式”模式下用戶一邊說話一邊返回識別結果。

(2) “一句話識別”支持的領域包括:社交聊天、家庭娛樂、電商購物、智能客服等。用戶可針對具體的使用場景選擇對應領域的app_key。

4. 下載JAVA SDK和DEMO,開始語音識別。

5. 鑑權請求和具體方式可以登陸官網參考。

6. 除了語音識別服務之外,阿里雲智能語音交互還支持關鍵詞檢測和語音合成等服務,具體接入方式也可以參考智能語音交互的產品頁面或文檔頁面。

三、如何自己訓練DFSMN聲學模型

這裡我們介紹如何利用阿里巴巴開源的DFSMN代碼,搭建一個基於DFSMN的語音識別系統。

Step1. 訓練數據下載

目前開源的流程腳本是以LibriSpeech數據庫為例子的。Librispeech是一個一千小時的免費開源的英文數據集。下載地址:http://www.openslr.org/12/

DFSMN在阿里巴巴的應用以及如何採用開源代碼訓練DFSMN模型

可以將這些文件下載都本地一個data目錄下,然後解壓縮。其中train-clean-100,train-clean-360,train-clean-500會合並組成一個960小時的訓練集。dev-clean 和 dev-other用於指導訓練調參。test-clean和test-other 是兩個測試集。關於Librispeech數據庫的詳細描述可以參考這篇論文:"LibriSpeech: an ASR corpus based on public domain audio books", Vassil Panayotov, Guoguo Chen, Daniel Povey and Sanjeev Khudanpur, ICASSP 2015。

Step2. 訓練代碼的下載和編譯

我們提供了兩種開源代碼形式:1)github-project:基於kaldi新建的一個分支,添加了DFSMN相關的代碼;2)github-patch:將相關的代碼改動編成一個補丁包。大家可以選擇其中的任意一種方式去獲得DFSMN的代碼和相關實驗腳本。

方法一、Github Project

工程的地址:https://github.com/tramphero/kaldi

工程下載:git clone https://github.com/tramphero/kaldi

Kaldi中文手冊:https://shiweipku.gitbooks.io/chinese-doc-of-kaldi/content/

方法二、Github Patch

我們基於官方kaldi的"04b1f7d6658bc035df93d53cb424edc127fab819"版本添加的DFSMN相關的改動,然後將這些改動編譯成一個PATCH包。PATCH的地址:https://github.com/alibaba/Alibaba-MIT-Speech

這樣做的好處是不同的研究人員可以將這個PATCH下載到自己的kaldi分支,然後把PATCH中的改動添加到自己當前的kaldi裡。具體的命令是:

#Take a look at what changes are in the patch

git apply --stat Alibaba_MIT_Speech_DFSMN.patch

#Test the patch before you actually apply it

git apply --check Alibaba_MIT_Speech_DFSMN.patch

#If you don’t get any errors, the patch can be applied cleanly.

git am --signoff < Alibaba_MIT_Speech_DFSMN.patch

Step3. 模型訓練

獲得了數據和訓練工具並且編譯以後,我們可以利用開源的腳本訓練模型,腳本所在的目錄:

kaldi/egs/librispeech/s5/run.sh.

run.sh可以完全整個訓練流程,不過需要注意的是需要在一開始配置下載的數據路徑。

腳本的前面都是官方提供的前端數據處理,GMM-HMM訓練等流程。關於DFSMN的訓練在跑完這些官方流程以後可以通過如下的命令進行:

DFSMN在阿里巴巴的應用以及如何採用開源代碼訓練DFSMN模型

這裡我們提供了3組不同的DFSMN配置。DFSMN_S, DFSMN_M, DFSMN_L對應的模型大小分別為9MB,21MB,30MB。目前開源的腳本以DFSMN_S為例子。local/nnet/run_fsmn_ivector.sh腳本是DFSMN相關的訓練腳本。主要包含三部分:1)CE訓練;2)生成alignment和lattice;3)smbr訓練。通常我們只需要觀察CE訓練的模型就可以了。CE訓練階段,利用單個M40 GPU 將所有數據過一遍需要的訓練時間大致需要6個小時,模型會進行10次迭代。所以單機訓練只需要不到3天的時間就可以訓練得到一個1千小時數據訓練的聲學模型。

我們提供的流程是標準的960小時的訓練集的任務。通常這個任務可以通過進行數據變形(speed-perturbed and volumn-perturbed)將訓練集擴展到3千小時左右。我們實驗採用多幾多卡並行訓練,得到了一個訓練結果,相應的結果在kaldi/egs/librispeech/s5/RESULTS文件裡作為一個參考性能。


分享到:


相關文章: