語音識別技術
語音識別背後的技術
——GPU叢集+DNN演算法
專業名詞:
1、Automatic Speech Recognition (ASR):
2、deep neural network(DNN): 深度神經網路
3、Deep learning(DL):深度學習
4、Restricted Boltzmann Machine (RBM):限制波爾茲曼機
5、Deep Belief Networks(DBNs):深度信念網路
6、NVIDIA GeForce GTX 1080:8G視訊記憶體,訓練DNN的GPU
關鍵字:
語音識別、語義分析、深度神經網路、深度學習、深度信念網路、標籤
*:標準空管指令的訓練語音資料大約800小時,字錯誤率10%左右。
*:語音識別和語義解析 都是主要基於DNN實現的。
問題:
1、 使用成都空管記錄儀的管制語音的訓練的模型不適合用於太原現場。那在實驗室使用PCM傳輸的管制語音訓練的模型,適用直接從內話引接語音的情況嗎?還有假如更換內話系統之後呢?或使用VHF共用系統透過傳輸裝置來到語音呢?
2、 當識別率達到80%以上,即管制員可作為參考使用的水平時,做標籤訓練的工作由管制員完成更合適,需要提供維護介面,用於持續提高識別率水平。
3、 增加一臺終端放置在管制大廳管制主任席,引接實驗室語音識別的訊號。
4、 開發的Pad終端,建議每個Pad只顯示當前席位管制扇區的管制狀態綜合航跡,並引接當前扇區的對空指揮話音用於完成輔助提示等應用。
一、深度學習框架:
學習深度學習框架,要用到keras庫,keras可以搭建在tensorflow和theano上。Keras 可以基於兩個Backend,一個是 Theano,一個是 Tensorflow。如果我們選擇Theano作為Keras的Backend, 那麼Keras就用 Theano 在底層搭建你需要的神經網路;同樣,如果選擇 Tensorflow 的話呢,Keras 就使用 Tensorflow 在底層搭建神經網路。Keras 切換後端(Theano和TensorFlow)
keras的GPU模式安裝- theano 後端:
http://blog.csdn.net/dexter_morgan/article/details/53872900
二、訓練DNN 聲學模型:
一個神經網路就是一個分類工具,能夠將一些新的特徵(如聲學特徵)分類到某一個 class。DNN 的輸入 nodes 一般為 39 維的 MFCC 特徵,輸出的 nodes 為相關的 labels(eg: 900 個輸出 <-> 900 個 context-dependent triphones[即 decision tree leaves])。也就是說:Acoustic features 用於訓練 GMM-HMM 和 decision tree,這兩部分是 Acoustic model(input layer and outlayer) 建模的關鍵部分。
Keras用MNIST資料集訓練一個DNN。
——帶標籤資料訓練, Keras以Numpy陣列作為輸入資料和標籤的資料型別。訓練模型一般使用fit函式。Keras用帶標籤資料訓練集訓練DNN。
標籤分兩種:一種是語音識別的標籤,也就是我們識別出來的語音文字,要去人工修改為正確的。另一種是語義解析的標籤,也就是基於語音識別的文字資訊,我們要標出來哪些是航班號,哪些的意圖等等。
三、語音識別:
微軟研究人員透過與hinton合作,首先將RBM和DBN引入到語音識別聲學模型訓練中,並且在大詞彙量語音識別系統中獲得巨大成功,使得語音識別的錯誤率相對減低30%。但是,DNN還沒有有效的並行快速演算法,很多研究機構都是在利用大規模資料語料透過GPU平臺提高DNN聲學模型的訓練效率。
——2006 年,Hinton 等人基於受限波爾茲曼機(Re- stricted Boltzmann Machines, RBMs)提出的深度信念網路(Deep Belief Networks, DBNs)是深度學習理論在機器學習領域打響的第一槍,併成為了其後至今深度學習演算法的主要框架。
——(cnn深度神經網路)最開始的改進是使用GPU來加速訓練,GPU可以看成一種SIMT的架構,和SIMD有些類似,但是執行相同指令的warp裡的32個core可以有不同的程式碼路徑。對於反向傳播演算法來說,基本計算就是矩陣向量乘法,對一個向量應用啟用函式這樣的向量化指令,而不像在傳統的程式碼裡會有很多if-else這樣的邏輯判斷,所以使用GPU加速非常有用。
在國際上,IBM、google等公司都快速進行了DNN語音識別的研究,並且速度飛快。理論認為人的認知模式,處事方式是儲存在神經元與神經元之間的連線上的,稱為“神經元連線權重”,人腦神經佈局類似網狀結構,神經元是網的交叉點,權重就是網的連線,這些連線有粗有細,也就是權重的大小不同。而人類的學習能力就是去不斷改變權重的值,從而改變自己的認知模式和處事方式,簡單的說,不同人對同一個外部事物有不同看法,就是因為同樣的初始訊號,在不同粗細的神經元連線放大或縮小後,變成了側重點不同的最終訊號。
神經網路簡單說就是輸入是訓練資料,中間是隱藏節點,輸出是標籤。訓練資料可以以一定的權重啟用隱藏節點,隱藏節點啟用輸出標籤。
如何訓練:
既然我們希望網路的輸出儘可能的接近真正想要預測的值。那麼就可以透過比較當前網路的預測值和我們真正想要的目標值,再根據兩者的差異情況來更新每一層的權重矩陣(比如,如果網路的預測值高了,就調整權重讓它預測低一些,不斷調整,直到能夠預測出目標值)。因此就需要先定義“如何比較預測值和目標值的差異”,這便是損失函式或目標函式(loss function or objective function),用於衡量預測值和目標值的差異的方程。loss function的輸出值(loss)越高表示差異性越大。那神經網路的訓練就變成了儘可能的縮小loss的過程。
所用的方法是梯度下降(Gradient descent):透過使loss值向當前點對應梯度的反方向不斷移動,來降低loss。一次移動多少是由學習速率(learning rate)來控制的。
四、開源TensorFlow:
Google釋出的第二代深度學習系統Tensor Flow(TensorFlow核心以C++寫成,前端支援Python和C++,並且容易擴充套件對其他語言的支援):Google釋出的第二代深度學習系統。
TensorFlow最早是在2015年10月的灣區機器學習會(BayLearn 2015)上亮相的。當時,Google 資深系統專家Jeff Dean做了題為Large-Scale Deep Learning for Intelligent Computer Systems的演講,介紹了Google未曾在論文上發表過的第二代深度學習系統TensorFlow。TensorFlow支援CNN、RNN/LSTM等機器學習演算法,擁有C++/Python程式設計介面。
Google開源TensorFlow的意義:
這一次的Google開源深度學習系統TensorFlow在很多地方可以應用,如語音識別,自然語言理解,計算機視覺,廣告等等。但是,基於以上論點,我們也不能過分誇大TensorFlow這種通用深度學習框架在一個工業界機器學習系統裡的作用。在一個完整的工業界語音識別系統裡, 除了深度學習演算法外,還有很多工作是專業領域相關的演算法,以及海量資料收集和工程系統架構的搭建。
不過總的來說,這次谷歌的開源很有意義,尤其是對於中國的很多創業公司來說,他們大都沒有能力理解並開發一個與國際同步的深度學習系統,所以TensorFlow會大大降低深度學習在各個行業中的應用難度。
——Tensor(張量)意味著N維陣列,Flow(流)意味著基於資料流圖的計算,TensorFlow即為張量從圖的一端流動到另一端。
——TensorFlow 表達了高層次的機器學習計算,大幅簡化了第一代系統,並且具備更好的靈活性和可延展性。TensorFlow一大亮點是支援異構裝置分散式計算,它能夠在各個平臺上自動執行模型,從電話、單個CPU / GPU到成百上千GPU卡組成的分散式系統。從目前的文件看,TensorFlow支援CNN、RNN和LSTM演算法,這都是目前在Image,Speech和NLP最流行的深度神經網路模型。
——從目前Tensor Flow的release來看,他們只支援單機多卡,不支援多機的分散式環境。開源的TensorFlow是單機實現,其最有價值的分散式資料流實現,並沒有開源。
——深度學習系統或軟體不是一裝上就能用的,它在釋出前期需要透過使用者資料進行很多測試、調整,顧名思義就是一個學習的過程。調整這些引數需要不斷試錯,初次接觸的人要花費很長時間。
問題NOTE:
1、 語音識別主機系統重啟有時會出現NVIDIA掉驅動的問題,需要重新安裝驅動,Gcc4.7版本時安裝驅動提示DKMS Building核心模組失敗,改為Gcc5.0版本OK。
遇到編譯核心等問題可能會依賴於某個gcc版本,需要改變到合適的版本。在/usr/bin/目錄下,gcc開頭的檔案,其中有一個是gcc,是個連結檔案,連結到當前的gcc檔案(例如ubuntu16.04連結的是gcc-5),改變他的連結原始檔就可以了,假如我們現在的gcc是gcc-5.4,我們要降級到gcc-4.7:
apt install gcc-4.7 (在/usr/bin目錄下看到gcc-4.7這個檔案,然後在/usr/bin目錄下刪除gcc這個檔案)
rm /usr/bin/gcc
ln -s gcc gcc-4.7
gcc -v
1)ctrl + alt + F1 切換到控制檯,停止圖形介面: sudo service lightdm stop
2)降級到gcc-4.7後,先解除安裝原來的驅動:sudo apt-get --purge remove nvidia-*
3)然後安裝安裝nvidia依賴包: sudo apt-get install nvidia-384
編譯依賴:sudo apt-get install build-essential pkg-config xserver-xorg-dev linux-headers-`uname -r`
若命令不成功:單獨執行 uname -r 而後將輸出新增到上一行命令列尾
sudo ./NVIDIA-Linux-x86_64-384.59.run –no-x-check –no-nouveau-check –no-opengl-files
最後會詢問是否更新配置檔案,選擇否! 否則可能會進不去圖形化介面!
2、Ubuntu系統起來後,Internet網預設未連線,需要在桌面右上角點選一下“有線連線2”,提示“已連線”即OK。
3、在一個網路卡設兩個IP(192.168.1.51/168.192.11.90),cdc.bat和adapter.exe一啟動就退出,會初始化網路失敗,使用兩個網路卡OK。
4、透過Internet使用SSH連線到內網主機(Ubuntu):
cat /usr/local/bin/runssh.sh #runssh.sh可能需要安裝teamviewer後才有。檢視埠號和ID
ssh username@WAN-IP -p 埠號
2018/4/11
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7970627/viewspace-2151488/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows XP語音識別技術(轉)Windows
- 語音識別技術竟然發展如此迅速
- 語音識別技術有哪些應用場景?
- 語音識別技術面臨的問題 (轉)
- 科普丨一文看懂語音識別的技術原理
- 語音識別技術與政務資訊系統結合
- 挑戰蘋果谷歌:更強大的語音識別技術誕生蘋果谷歌
- 聲音識別技術真的能識別出蒙面聖戰士嗎?
- C# 10分鐘完成百度語音技術(語音識別與合成)——入門篇C#
- 低延遲流式語音識別技術在人機語音互動場景中的實踐
- 語音識別技術發展漸入佳境 AI企業奮力前行AI
- 【Recorder.js+百度語音識別】全棧方案技術細節JS全棧
- 聽懂未來:AI語音識別技術的進步與實戰AI
- JavaScript的語音識別JavaScript
- Google Brain推出語音識別新技術、面部表情識別助力商業再發展|AI一週學術GoAI
- 從不溫不火到炙手可熱:語音識別技術簡史
- 重磅公開!阿里語音識別模型端核心技術,讓你“聽”見未來阿里模型
- 重磅公開!阿里語音識別模型端核心技術,讓你「聽」見未來阿里模型
- 表格識別技術
- OCR識別技術
- 影像識別技術
- 樹莓派語音互動--語音輸入識別樹莓派
- 淘寶直播“一猜到底”——移動端實時語音識別技術方案及應用
- 百分點感知智慧實驗室:語音識別技術發展階段探究
- 人工智慧 (08) 語音識別人工智慧
- Swift-語音識別、翻譯Swift
- 語音識別----音高的處理
- 語音識別開源專案
- 語音識別方向的資料
- ASR-使用whisper語音識別
- ocr文字識別技術
- 智慧語音技術的深度解析
- 馬志強:語音識別技術研究進展和應用落地分享丨RTC Dev Meetupdev
- 人工智慧之語音識別(ASR)人工智慧
- [譯] 使用 WFST 進行語音識別
- 百度API---語音識別API
- Python語音識別終極指南Python
- OCR識別技術—財務報表識別