DFSMN在阿里巴巴的應用以及如何採用開原始碼訓練DFSMN模型
DFSMN模型是語音識別中一種先進的聲學模型,語音識別中的聲學模型是語音識別技術中的核心所在。具體來說,聲學模型是根據輸入語音進行發音可能性的識別,結合語言模型、解碼器,就構成了完整的語音識別系統。本次開源的DFSMN模型,是阿里巴巴的高效工業級實現,相對於傳統的LSTM、BLSTM等聲學模型,該模型具備訓練速度更快、識別更高效、識別準確率更高和模型大小壓縮等效果。
一、採用DFSMN模型的產品
那麼這個模型對普通人來說意味著什麼呢?我們從研發團隊獲得的最新訊息,即日起,阿里雲所有公有云、專有云使用者都可以享受到這個技術所帶來的優勢。在2017年的雲棲大會上,阿里巴巴公開了關於語音識別聲學模型的一個最新的技術進展,即這次開源的DFSMN技術。DFSMN模型技術是阿里巴巴語音識別的基礎能力之一,在這些基礎能力之上,阿里巴巴構建了一系列智慧語音應用。
在法庭庭審識別、智慧客服、影片稽核和實時字幕轉寫、聲紋驗證、物聯網等多個場景成功應用。全國有近300家法院和超過一萬家法庭在使用ET,每年有超過1.2億次客服電話由ET協助人類接聽。
在傳統語音互動產品方面,阿里雲智慧語音互動研究的技術平臺能夠精準轉換使用者的語音為對網際網路內容和服務的意圖,觸達手機、IoT裝置、網際網路汽車、電視、智慧音響等各類終端,如與斑馬網路、上汽合作的的榮威網際網路汽車、與海爾合作的人工智慧電視等。
在下一代人機互動產品方面,已經落地語音售票機於上海地鐵讓市民使用;在前不久的2018雲棲大會武漢峰會上,使用該技術的智慧語音點餐機與真人收銀員進行人機PK,人工智慧收銀員用49秒鐘時間點了34杯咖啡,而對壘的人類收銀員用時兩分半完成。
二、如何接入阿里雲語音識別服務
對於開發人員來說,如何接入DFSMN語音識別服務,即阿里雲語音識別服務呢?具體可以參考兩個頁面,分別是:
1. 智慧語音互動產品首頁
2. 智慧語音互動文件
下面,我們簡單的為大家介紹一下接入流程:
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。
注:
(1) “SDK支援的結果返回方式”式包括“非流式”和“流式”兩種模式,“非流式”簡單來說就是使用者整句話說完後返回識別結果,“流式”模式下使用者一邊說話一邊返回識別結果。
(2) “一句話識別”支援的領域包括:社交聊天、家庭娛樂、電商購物、智慧客服等。使用者可針對具體的使用場景選擇對應領域的app_key。
4. 下載JAVA SDK和DEMO,開始語音識別。具體SDK呼叫方式和demo可以參考 https://help.aliyun.com/document_detail/30414.html?spm=a2c4g.11186623.6.540.UIYqFJ
5. 鑑權請求和具體方式可以參考 https://help.aliyun.com/document_detail/54528.html?spm=a2c4g.11186623.6.541.6cm5Ah
6. 除了語音識別服務之外,阿里雲智慧語音互動還支援關鍵詞檢測和語音合成等服務,具體接入方式也可以參考智慧語音互動的產品頁面或文件頁面。
三、如何自己訓練DFSMN聲學模型
這裡我們介紹如何利用阿里巴巴開源的DFSMN程式碼,搭建一個基於DFSMN的語音識別系統。
Step1. 訓練資料下載
目前開源的流程指令碼是以LibriSpeech資料庫為例子的。Librispeech是一個一千小時的免費開源的英文資料集。下載地址:
可以將這些檔案下載都本地一個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
工程的地址:
工程下載:git clone
Kaldi中文手冊:
方法二、Github Patch
我們基於官方kaldi的"04b1f7d6658bc035df93d53cb424edc127fab819"版本新增的DFSMN相關的改動,然後將這些改動編譯成一個PATCH包。PATCH的地址:
這樣做的好處是不同的研究人員可以將這個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的訓練在跑完這些官方流程以後可以透過如下的命令進行:
這裡我們提供了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檔案裡作為一個參考效能。
本文轉載自雲棲社群,本文作者鐳銘,譫良
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31077337/viewspace-2156064/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [原始碼分析] Facebook如何訓練超大模型 --- (3)原始碼大模型
- [原始碼分析] Facebook如何訓練超大模型---(4)原始碼大模型
- [原始碼分析] Facebook如何訓練超大模型--- (5)原始碼大模型
- [原始碼分析] Facebook如何訓練超大模型---(1)原始碼大模型
- [原始碼分析] Facebook如何訓練超大模型 --- (2)原始碼大模型
- 用Flask在伺服器上部署訓練好的模型Flask伺服器模型
- RxJava在安卓開發中應用原始碼RxJava安卓原始碼
- 阿里巴巴稀疏模型訓練引擎-DeepRec阿里模型
- 機器學習在入侵檢測方面的應用 - 基於ADFA-LD訓練集訓練入侵檢測判別模型機器學習模型
- leela zero 一種開源的採用alphago zero論文思路的訓練軟體 正在招募訓練者Go
- PaddlePaddle分散式訓練及CTR預估模型應用分散式模型
- 文字主題抽取:用gensim訓練LDA模型LDA模型
- fasttext訓練模型程式碼AST模型
- 「四大模型」革新NLP技術應用,揭秘百度文心ERNIE最新開源預訓練模型大模型
- 大模型如何提升訓練效率大模型
- 原始碼開放:WebSocket應用示例原始碼Web
- 使用Bert預訓練模型文字分類(內附原始碼)模型文字分類原始碼
- 阿里巴巴開源大規模稀疏模型訓練/預測引擎DeepRec阿里模型
- 【設計模式】介面卡模式以及原始碼應用設計模式原始碼
- 採用動量梯度下降演算法訓練 BP 網路梯度演算法
- [原始碼解析] 模型並行分散式訓練Megatron (5) --Pipedream Flush原始碼模型並行分散式
- [原始碼解析] 模型並行分散式訓練 Megatron (3) ---模型並行實現原始碼模型並行分散式
- 火山引擎釋出大模型訓練影片預處理方案,已應用於豆包影片生成模型大模型
- 使用LLaMA-Factory訓練LLM大模型並用ollama呼叫大模型
- python Ai 應用開發基礎訓練,字串,字典,檔案PythonAI字串
- [原始碼解析] 模型並行分散式訓練 Megatron (4) --- 如何設定各種並行原始碼模型並行分散式
- 在零程式碼開發平臺上如何開發應用程式
- PyTorch 模型訓練實⽤教程(程式碼訓練步驟講解)PyTorch模型
- [譯] 互聯汽車是什麼以及如何開發用於它的應用?
- 在windows下執行Felzenszwalb的Deformable Part Model(DPM)原始碼voc-release3.1來訓練自己的模型WindowsORM原始碼模型
- 採用線性迴歸實現訓練和預測(Python)Python
- 【Java併發】【AQS鎖】鎖在原始碼中的應用JavaAQS原始碼
- 2020-12-13——門面模式在MyBatis以及Tomcat原始碼中的應用模式MyBatisTomcat原始碼
- 如何將keras訓練的模型轉換成tensorflow lite模型Keras模型
- (原)SCOR模型在化工行業的應用模型行業
- 婚戀交友原始碼開發,採用連線複用實現效能優化原始碼優化
- 用免費TPU訓練Keras模型,速度還能提高20倍!Keras模型
- 用 Sentence Transformers v3 訓練和微調嵌入模型ORM模型