基於DeepSpeech2實現中文語音識別,實施全流程講解,拿來即用

2021-01-11 有數說數

你是否在苦苦尋找能識別中文的語音識別模型?那認真看完本文,你也能實現,本文可能為您節省少則幾小時多則數天的工作時間。

DeepSpeech2由百度矽谷AI實驗室在2015年發布,是一個採用PaddlePaddle深度學習框架實現的端到端自動語音識別系統,它能通過簡單學習算法較準確的識別英語和中文。百度在DeepSpeech2之前發布過DeepSpeech,可通過pip直接安裝,但它用於主要用於識別英文。

DeepSpeech2的原理不在此論述,有興趣可自行查閱,它只支持python的2.x,並已開源,直接網上搜索很容易找到github網站,也可以關注我私信關鍵詞「語音識別」,你將收到開源網站和已下載好的github內容,解決你可能下載github資源慢的難題。

PaddlePaddle是百度開源的深度學習框架,雖然不及Tensorflow和Pytorch使用廣泛,但它是我國最流行的深度學習框架,在Github上Star有12K+,百度也是相當重視它的推廣,同時它推出了paddle系列產品,如paddleOCR、paddleSlim、paddleXpaddleLite、paddleHub等等,可滿足用戶不同的需求,它與Tensorflow相似度較高,如果你有相關框架基礎,學習起來也不難。

DeepSpeech系列在2017年推出Deep Speech 3,但目前開源了DeepSpeech2,接下來從安裝、運行、識別速度、識別準確率幾個方面探討。

1. 安裝

官方推薦直接下載docker鏡像安裝,docker類似於虛擬機,下載的文件已幫您安裝好各種依賴,但該鏡像是GPU環境,需要安裝nvidia-docker工具,該工具不能在Windows系統安裝,因此你只有兩種選擇:

(1)在本地為Linux系統下實現,如無可考慮安裝雙系統:首先確保命令nvidia-smi可正確執行,否則安裝nvidia驅動,然後安裝docker和nvidia-docker,接著導入docker鏡像,官方給出的鏡像中CUDA版本是9.0,CUDNN版本是7.5,鏡像大小10G左右,在docker中建立容器時建議加上參數-v,可將指定目錄映射到本地,避免docker空間太小帶來麻煩,必要時也可考慮修改docker默認路徑。

(2)在win系統中安裝虛擬機創建Linux環境,但此環境下不能使用GPU,無法下載官方docker鏡像,需要自己安裝依賴項,這比較麻煩,而且容易出錯,鑑於此我分享了python2安裝的dick-packages文件夾,可直接拿來使用,關注我私信關鍵詞「語音識別」獲取。注意DeepSpeech2不支持python3,官方說PaddlePaddle版本需 1.8.0以上,其實1.6也可用,但推薦用新版本,1.8有較大變動。

2. 運行

安裝好環境後別急著運行,官方提供了訓練好的模型文件,包括聲學模型和語言模型,可直接下載使用,兩者缺一不可,後者在前者的基礎上生成最終識別的文本。

百度提供了兩個聲學模型,分別基於數據集Aishell和百度收集的數據訓練生成,經測試後者效果更好,可在開源項目主頁搜索「BaiduCN1.2k Model」定位,點擊下載後解壓放到models/baidu_ch1.2k下,下載的文件中已包括開源項目頁的數據準備所需的多個文件。

百度也提供了兩個語言模型,文件大小相差巨大,經測試速度有十倍的差距,若你硬體配置一般,選擇小模型下載,搜索關鍵詞「Mandarin LM Small」可定位,解壓後放到models/lm下。

在運行test.py前還需要修改一些參數:

use_gpu默認為True,如果沒使用GPU,改為False;use_gru默認為False需改為True,因為下載的模型文件訓練時採用的是GRU算法;share_rnn_weights改為False,batch_size和beam_size根據你的電腦配置調下點,不然可能出現內存溢出錯誤;修改幾個模型相關的文件路徑為自己電腦上對應的路徑;error_rate_type改為CER,表示字符錯誤率,用於評價識別精度,WER用於英文識別;關於網絡層尺寸和個數別修改,需與模型文件保持一致;cutoff_prob調為0.99試試;alpha和beta需要後續調節,介於0-5之間。

接下來可運行test.py試試,如可計算出CER則可以繼續後面的工作;實際使用過程中往往一次只會識別一句話,原項目是運行deploy/demo_server.py和demo_client.py等實現。你可以考慮將test.py改為實現一條音頻,腳本中的result_transcripts欄位就是識別結果,在此基礎上按自己的需求改造,可搭配Flask或者Django框架實現Web服務的後端,前端利用瀏覽器錄音功能上傳音頻文件可採用Ajax方法實現。

3. 識別速度

我的硬體配置如下:顯卡MX250,內存16G,而虛擬機8G.

經優化後最終在虛擬機中實現6S識別一句話;而GPU環境下的Linux系統2S識別,在公司伺服器上的GPU環境下可1S識別。

識別速度太慢會導致無法投入使用,以下幾個優化方向可供參考:

下載的聲學模型解壓後,需在models/baidu_ch1.2k下保留壓縮文件,但可以隨便用一個小文件代替,只需文件名為baidu_cn1.2k_model_fluid.tar.gz,你也可以考慮更改腳本;將ds2_model.logger.info("start recognize...")前面的部分腳本移到函數外面,避免多次加載模型內容;將model_utils/model.py中exe.run(startup_prog)注釋,避免每次初始化,但這樣處理有一定風險,可能導致識別結果有變,需慎重考慮實施。4. 識別精度

利用AiShell數據集測試,精度可達92%,可參考以下方式提高精度。

非常重要:將音頻文件的採樣率改為8k,利用wave模塊判斷是否8k,sox模塊修改為8k,精度經明顯提升;調節參數alpha和beta,根據CER結果來微調,可先按0.5間隔變化調整,鎖定大致範圍後再精調;對識別結果再進行智能糾錯調整,有時候識別文本錯誤,但拼音是對的或者很接近。DeepSpeech2的使用就介紹到這裡,如果你使用過程中遇到問題,可在評論區留言或私信我。

相關焦點

  • 基於DL的中文語音識別系統ASRT開源
    2月11日消息,一套基於深度學習實現的語音識別系統ASRT(全稱Auto Speech Recognition Tool),由AI檸檬博主開發並在GitHub上開源(GPL 3.0 協議)。本項目聲學模型通過採用卷積神經網絡和連接性時序分類方法,使用大量中文語音數據集進行訓練,將聲音轉錄為中文拼音,並通過語言模型,將拼音序列轉換為中文文本。
  • 團隊新作 | CIF:基於神經元整合發放的語音識別新機制
    基於CIF的模型不僅有效地支持了在線識別、邊界定位及聲學Embedding提取,而且在兩個中文基準語音識別集(HKUST、AISHELL-2)上創造了SOTA的性能。相關成果被ICASSP 2020錄用為Oral論文。基於注意力機制的端到端模型正深刻影響著語音識別技術的發展。
  • 基於DSP的漢字語音識別系統的實現方式解析
    語音識別是機器通過識別和理解過程把語音信號轉變為相應的文本文件或命令的高技術。作為專門的研究領域,語音識別又是一門交叉學科,它與聲學、語音學、語言學、數位訊號處理理論、資訊理論、計算機科學等眾多學科緊密相連。語音識別經過四十多年的發展,已經顯示出巨大的應用前景。本文從實現原理入手,介紹語音識別系統的實現方式。
  • 基於DSP的語音識別系統的實現及分析
    2.1 Matlab平臺上的仿真實現  2.1.1 實驗數據的建立  基於Matlab平臺,本文實驗語音信號在安靜的實驗室環境下用普通的麥克風通過Windows音頻設備和Cool edit軟體進行錄製,語速一般,音量適中,文件存儲格式為wav文件。
  • 從原理入手,解析基於DSP的漢字語音識別系統的實現方式
    語音識別是機器通過識別和理解過程把語音信號轉變為相應的文本文件或命令的高技術。作為專門的研究領域,語音識別又是一門交叉學科,它與聲學、語音學、語言學、數位訊號處理理論、資訊理論、計算機科學等眾多學科緊密相連。語音識別經過四十多年的發展,已經顯示出巨大的應用前景。本文從實現原理入手,介紹語音識別系統的實現方式。
  • 基於片上系統SoC的孤立詞語音識別算法設計
    它具有速度快,體積小,成本低,可擴展性強等優點,有著廣泛的應用前景,已經成為語音識別技術應用發展的一個重要方向[2-3]。研究和開發應用於片上系統SoC晶片的語音識別算法有著非常重要的意義。2. 孤立詞語音識別系統孤立詞語音識別系統應用於嵌入式控制領域,例如數字家庭控制、車載語音控制和智能語音可控玩具等。
  • 中文語音處理在數字助聽器的設計
    本文引用地址:http://www.eepw.com.cn/article/201706/350039.htm一.中文語音技術處理原理 中文語音處理策略的英文詞有 「Chinese speech processing strategy」 或 「Chinese speech recognition」, ( 中文語音識別 )
  • 基於語音識別的移動電子病歷應用探索
    語音識別是一門交叉學科,涉及生理學、聲學、語音學、計算機科學、信號處理等,儘管不同的語音識別系統,實現的細節不同,但原理大致相同,如圖1所示。圖1 語音識別原理語音識別技術主要分為前端處理與後端處理2個部分。前端處理主要包括端點檢測、降噪、特徵提取等。後端處理主要包括2個過程,分別是訓練與解碼。端點檢測從連續的語音流中檢測出有效的語音段。
  • 語音識別第一課:基於Tensorflow的端到端語音識別技術
    雖然當下關於如何搭建基礎機器學習系統的文獻或資料有很多,但是大部分都是圍繞計算機視覺和自然語言處理展開的,極少有文章就語音識別展開介紹。本文旨在填補這一空缺,幫助初學者降低入門難度,提高學習自信。音頻預處理搭建語音識別系統,首先需要將音頻轉換為特徵矩陣,並輸入到神經網絡中。完成這一步的簡單方法就是創建頻譜圖。
  • 使用Python和Keras創建簡單語音識別引擎
    語音識別是機器或程序識別口語中的單詞和短語並將其轉換為機器可讀格式的能力。通常,這些算法的簡單實現有一個有限的詞彙表,它可能只識別單詞/短語。但是,更複雜的算法(例如Google的Cloud Speech-to-Text和Amazon Transcribe)具有廣泛的詞彙量,並包含方言、噪音和俚語。
  • 基於Julius的機器人語音識別系統構建
    語音識別技術的發展,使得這一理想得以實現,把語音識別技術與機器人控制技術相結合,正成為目前研究的熱點,不但具有較好的理論意義,而且有較大的實用價值。   語音識別技術應用於機器人系統大多是針對特定的環境,設計出語音命令來進行控制的。
  • 基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計
    基於Cyclone II FPGA開發平臺實現語音識別算法程序的設計 瀋陽;馮良;洪誠 發表於 2021-01-12 10:21:38 SOPC可編程片上系統是一種獨特的嵌入式微處理系統。
  • 基於DSP的語音識別計算器電路設計
    根據實際的應用,語音識別可以分為:特定人與非特定人的識別、孤立詞與連續詞的識別、中小詞彙量與無限詞彙量的識別。 考慮到成本及使用範圍因素,本文中應用的是基於TMS320VC5509 DSP的非特定人、孤立詞、小詞彙量的語音識別系統。
  • 平安科技羅冬日:如何用RNN實現語音識別?| 分享總結
    但是,網上目前關於RNNs的基礎介紹很少,本文便是介紹RNNs的基礎知識,原理以及在自然語言處理任務重是如何實現的。文章內容根據雷鋒網AI研習社線上分享視頻整理而成。在近期雷鋒網AI研習社的線上分享會上,來自平安科技的人工智慧實驗室的算法研究員羅冬日為大家普及了RNN的基礎知識,分享內容包括其基本機構,優點和不足,以及如何利用LSTM網絡實現語音識別。
  • AI浪潮下,語音識別建模技術的演進 | 雷鋒網公開課
    搜狗知音引擎是搜狗公司自主研發的一項專注於自然交互的智能語音技術,於2016年8月3日正式對外發布,該技術集合了語音識別、語義理解、語音交互、以及提供服務等多項功能,不僅能聽會說,還能理解會思考, 本文將結合知音引擎中語音識別建模技術的使用來為大家講解。
  • 專注E2E語音識別,騰訊AILab開源語音處理工具包PIKA
    機器之心報導作者:魔王、杜偉PyTorch + Kaldi,騰訊 AI Lab 開源輕量級語音處理工具包 PIKA,專注於端到端語音識別任務。Kaldi 是一個開源的語音識別系統,由 Daniel Povey 主導開發,在很多語音識別測試和應用中廣泛使用。
  • 語音識別技術簡史
    GMM-HMM時代70 年代,語音識別主要集中在小詞彙量、孤立詞識別方面,使用的方法也主要是簡單的模板匹配方法,即首先提取語音信號的特徵構建參數模板,然後將測試語音與參考模板參數進行一一比較和匹配,取距離最近的樣本所對應的詞標註為該語音信號的發音。該方法對解決孤立詞識別是有效的,但對於大詞彙量、非特定人連續語音識別就無能為力。
  • 語音識別是什麼 語音識別聲學特徵介紹【圖文】
    東芝中國研發中心,從二零零一年成立以來,致力於中文(包含粵語及各種方言)語音識別技術的研發,開發了高性能的中文語音識別引擎,如下圖所示:   語音識別技術支持不同層次的系統要求除了可以完成高精度的命令詞識別,東芝的嵌入式語音識別引擎支持大詞彙量的地址識別,結合在線文法生成功能和語音標籤功能,使得聲控的汽車導航成為現實。此外,該引擎還支持中文數字串識別和人名識別等,可以輕鬆完成聲控撥號/定位任務。引擎採用了高效的搜索算法和聲學模型壓縮等技術,可以在資源十分有限的條件下工作,目前已經應用到多款汽車導航系統中。  2. 語音對話系統和翻譯系統中的語音聽寫引擎。
  • 基於Tacotron2實現中文語音合成,免去調試環節,輕鬆上手
    語音合成相比語音識別的應用場景少一些,因工作中有接觸過語音合成並實現,也許有些朋友也需要用到它,特記錄在此,本文側重實現過程,對技術感興趣的朋友建議參考其他文獻,但對於技術新手和初次接觸並期待快速實現的朋友,不妨看看。
  • 橫評:五款免費開源的語音識別工具
    為此,我們對比了五款基於 HMM 和 N-gram 模型的語音識別工具:CMU Sphinx,Kaldi,HTK,Julius 和 ISIP。它們都是開源世界的頂級項目,與 Dragon 和 Cortana 等商業語音識別工具不同,這些開源、免費的工具可以為開發者提供更大的自由度以及更低的開發成本,因此在開發圈始終保持著強大的生命力。