1. 程式人生 > >當語音識別搭配AI之後,我的語音助手更懂我的心了

當語音識別搭配AI之後,我的語音助手更懂我的心了

一定的 平均值 數據信息 均值 音頻 問題 做的 在屏幕上 要求

歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~

本文由騰訊雲AI中心發表於雲+社區專欄

技術分享圖片

我今天演講主要分四個部分,第一個是分享語音識別概述,然後是深度神經網絡的基礎;接下來就是深度學習在語音識別聲學模型上面的應用,最後要分享的是語音識別難點以及未來的發展方向。

技術分享圖片

首先簡單介紹一下語音識別,它主要是個怎麽樣的過程呢?語音識別最簡單的就是語音變成文字,這也是計算機發明以來人類一直追求的想要機器識別出來人說了什麽話,或者更進一步機器理解人到底說了什麽內容?但是語音識別這項技術,10年以前沒有得到大規模的商業應用,為什麽呢?因為10年前語音識別的效果不太好,識別準確率只有70%到80%。10個字識別了7、8個字,看起來還可以,但真正用到應用上時,這個準確率就遠遠不夠了。

10年前我們對產品的應用,並不是像現在手機上這麽多的應用,我們操作更多的是在電腦上,這種情況下,用鼠標和鍵盤的操作方式就會更加準確,更加方便。但是現在有了APP,比如說在車上,在很多產品上用鼠標或者用鍵盤就會變得不太合適,因此就產生了需要用語音去控制的情況。

技術分享圖片

今年來,為什麽準確率能夠得到大幅度的提升?我自己歸納有三個方面的原因:

第一是互聯網的發展,為什麽互聯網的發展讓語音識別技術的準確率能夠有很大的提升?因為互聯網的發展讓語音能夠在電腦上得到分享,讓大量的語音數據存儲起來,2000幾年的時候語音識別技術,可能只有幾百個小時的語音識別數據,那個時候覺得是很大的數據,現在我們做語音識別技術,都需要幾萬個小時才能做的比較好。

另外一個是硬件的發展也就是GPU/CPU硬件的發展,計算速度相比幾年前高了幾十個量級,更加突出的是GPU的應用,特別是在深度需要方面的應用。CPU一個指令做一個加法做一個乘法,但是GPU做1千維的,一次的加法GPU一個指令就完成了。這三者結合讓語音識別的準確率得到很高的提升。

技術分享圖片

再講一下語音識別系統基本的識別過程到底是什麽樣子?首先我們來看一下在進行語音識別的時候,我們先想象一下人自己,我們到底是怎麽樣識別一個語音變成文字的呢?比如說我們現在是一個小學生,剛剛學習中文不久,有人說了一句話,說“馬化騰”,識別出來幾個字,首先聽到是一個音波,比如說馬化騰,把它識別成為拼音,馬就是ma,化就是hua,teng,拿到拼音的時候不知道到底是哪幾個字,然後查一下新華字典,對應的麻、馬,我從拼音可以變成漢字了,漢字怎麽變成一句話和一個詞呢?我就看了一下,我覺得馬化騰這幾個字出現概率比較高,是我們經常可以看到的,說到這句話的時候,馬化騰,而不是後面的麻花疼。

我們得到發音以後,通過語言模型把音速通過一定的幹預變成識別結果,變成字、詞,或者是句。特征提取這部分,我們經常看到一些音頻說8K、16K,或者是16K,16B,這些是什麽意思呢?比如說8K,就是說音頻會采用8千次,相當於這個錄音設備在錄音的時候,每八千分之一秒采一個點,知道這個聲音的強度是多少?這相當於一個訓練的點,然後再對這個數據進行分幀,比如說25毫秒作為一個幀,不斷的往後移,對每幀的數據對數變化,如果是16K,就是400個點,相當於這一幀的數據裏面,之前是時間上面的先後點,然後再變成在這一幀上不同頻率的聲音是怎麽分布的,然後再經過頻率濾波,或者是對數變換,相當於是一個限量值。比如說MFCC,一幀數據得到13個數,一幀數據變成13個點,相當於13×100的限量,這就是一般的特征提取的過程。

技術分享圖片

我們得到這個特征數據以後,就需要把特征數據變成到底是發哪個音速的概率?這項研究的歷史過程大概是這樣的,很多年前他們做語音識別的時候,不是我們現在體驗式的語音識別,叫孤立詞識別DTW,比如說起立,在座的人400人,比如說開門是怎麽開的?把這個數據收集起來,然後還說很多難得的詞,現在新來一個詞,我就去比較這個人說的這句話跟哪個詞關聯性比較強的?比如說這個人進來,這個詞比較像開門,就識別出來開門,一開始的語音識別是比較簡單的一個詞一個詞識別。後來發展有了HMM/GMM,混合高速模型,這個對語音識別來說從孤立詞識別到大詞匯量的連續語音識別,是比較大的進步,做出這個還是很牛逼的。

有了混合高速模型之後,它的識別率比之前有了很大幅度的提高,但還是達不到工藝上或者我們生活中應用的程度,最近10年之內深度學習讓語音識別準確率達到90%以上,之前可能是70%到80%,達到90%以上才有了商業上大規模的應用。

技術分享圖片

前面說的發音上的特征,首先是變成一個音速,然後是音速變成句子,一個節點有一個輸入,生成這個詞需要幾個原料,發音辭典,語音模型,很多文本性的產生,發音辭典是需要提前問題的。

技術分享圖片

接下來講一下神經網絡的基本知識,首先是深度的神經元,包括細胞核和樹突,接受外部的信號,根據信號和其他的原因選擇它的細胞到底是激活還是不激活?

技術分享圖片

據說這些科學家受到了動物深度神經元的啟發,發明了在數學上神經元的基本結構,實際上是不是受這個啟發也不知道?也就是每個輸入乘以一個值,把它們加起來,然後再非線性函數處理一下就是輸出,是一種很簡單的方式。

技術分享圖片

簡單的神經網絡,還有這麽簡單的神經元到底能夠幹什麽事情呢?第一印象是幹不了什麽事情的,通過把這些神經元組合起來,組合成一個神經網絡,神經網絡結構也是比較簡單的,他是一種分層結構,有輸入層,隱藏層,以及輸出層,每一個神經元,也是前面說的簡單的神經元結構,這麽一個簡單的神經元如果做事情的話,對數據的表現能力也還是比較簡單的。

技術分享圖片

技術分享圖片

前面說的發音上的特征,首先是變成一個音速,然後是音速變成句子,一個節點有一個輸入,生成這個詞需要幾個原料,發音辭典,語音模型,很多文本性的產生,發音辭典是需要提前問題的。

技術分享圖片

接下來講一下神經網絡的基本知識,首先是深度的神經元,包括細胞核和樹突,接受外部的信號,根據信號和其他的原因選擇它的細胞到底是激活還是不激活?

技術分享圖片

卷積神經網絡,卷積到底是什麽東西?我們可能也經常聽說卷積,一開始的時候我也覺得卷積是什麽東西?就像它的名字一樣卷一下積一下,積就是乘一下,卷就是卷起來了,我是這麽理解的,可以看一下這個圖。前面是一個原始元素值,中間這是一個卷積核,這是卷積之後的,至於卷積的過程,就是把這個卷積盒跟前面對應起來,每一個對應點都相乘加起來,變成後面這個樣子,這是卷積過程。

技術分享圖片

這個卷積到底有什麽用?乘一下計算一下到底有什麽用?沒有直觀的感受,現在給一個直觀的感受,這三個是卷積盒,這是用前面的方式對這個圖像進行卷積處理,最後得出來的圖像是這個樣子,相當於我一個圖像主對角線加起來,可以提出來主對角線的紋路。第二種是把中間這個減進去,然後是求平均值,得到的效果是主對角線紋路,然後是周圍象素檢測邊緣,然後是變模糊了。前面看資料的時候卷積資料是什麽特征,這個圖可以看出來直觀的感受。

技術分享圖片

RNN單元是對數據做空間上相近特征的提取,語音識別和NRP數據的提取,數據前後時間上的點有關聯性的,語音識別上前後相連的幀是有關聯的,選擇前面的字和後面的字,語音上也是有關聯的。RNN循環神經網絡結構,它的一個神經元的輸入,可以作為下一個時間點的輸入,第一個時間點輸入,有原來的輸入,也有這樣一個時間點的輸入,這樣的網絡化,可以得到之前N個時間點的數據信息,RNN網絡有一個梯隊爆炸和梯隊小時的特點,每次訓練的時候,都會經過激活函數,要麽大於1,要麽小於1,經過這個函數的時候,往前傳播的時候要麽變大,要麽變小,如果小於1,不斷的乘以0點幾,一直到前面的話影響就比較小了,如果是大的話乘以1點幾就越來越大,我們在語音識別上面造成很大影響,我們在第10幀的時候已經感受不到在第一幀的數據了。

技術分享圖片

有人提出LSTM單元,LSTM就是長短時間記憶單元,在這種網絡結構中,它增加了兩個比較明顯的特征,來解決前面說的梯度消失和梯度爆炸的概念,增加了一個門,在這個通道上,它的梯隊不會消失或者爆炸的,通過門的控制可以控制上一個信息點進來的多少。

技術分享圖片

下面講深度學習和聲學模型上的應用,語音識別最主要的工作集中在聲學模型建模,主要是人發音以後,到底識別出來的音速是什麽樣,到底是什麽聲音?深度學習在語音識別上面的工作,主要是有DNN、LSTM、CLDNN,看起來是一些英文字母,其實都是深度學習的神經網絡。

技術分享圖片

首先DNN,輸入一幀數據,得到發音單元的分類結果,其實這是比較純粹的,輸入一幀數據,有一個分類結果的概率,也沒有應用到其他的信息。

技術分享圖片

LSTM單元,會利用到這個時間點,和之前分割時間點的一些數據源,來進行輔助判斷,當前的這幀數據到底數據哪一個分類?

雙向的LSTM效果比單向的效果更好一些,因為它是同時兩個方向,比如說今天去吃飯,現在的LSTM識別的時候,識別我的時候它可能只應用到今天,前面的數據,但是雙向的話,在識別我的時候會用到今天,會用到我們去吃飯,其實兩邊都會用到,能夠獲取上下文的信息更多一些,效果也更好。現在我們很多語音識別的產品可以看到,我們一邊說話一邊在出結果,這個模型是不知道後面的數據,一般只能識別單向的。

技術分享圖片

CLDNN,這種網絡結構目前來看是比較成熟和穩定的一種結構,在這上面有訓練數據,也能夠比較容易的訓練出來,前面是幾個網絡後面再接LSTM,後來再接Dense,有一些高效的企業會提出增加新的網絡,比如說可能會把卷積網絡加很多層,可能會加10幾層,因為卷積網絡的特點是如果加10幾層後會提出來聲音特征,最後的識別效果也會更好

技術分享圖片

最近幾年來在語音識別上面有一些新的技術,其實也不是太新,CTC最開始的算法是在2003年還是2006年就提出來了,這是端到端的識別方法,在語音識別之前需要做一些預處理,比如說我們的訓練數據,我說這句話它的文本是什麽?需要把人的音頻和對應的發音,要先對好,端到端的算法不需要,一句話輸進去,然後一句話出來,我們的訓練是輸入音頻數據,然後得到結果,跟之前不一樣的是對整個一句話的訓練和識別,對一句話做計算。

單元粒度的變化,可以訓練音速,到最後的漢字,我們不用關心裏面的細節是什麽樣子,也不用加工人工的處理,對於去操作這個模型的人來說更加簡單了。

技術分享圖片

技術分享圖片

RNN單元是對數據做空間上相近特征的提取,語音識別和NRP數據的提取,數據前後時間上的點有關聯性的,語音識別上前後相連的幀是有關聯的,選擇前面的字和後面的字,語音上也是有關聯的。RNN循環神經網絡結構,它的一個神經元的輸入,可以作為下一個時間點的輸入,第一個時間點輸入,有原來的輸入,也有這樣一個時間點的輸入,這樣的網絡化,可以得到之前N個時間點的數據信息,RNN網絡有一個梯隊爆炸和梯隊小時的特點,每次訓練的時候,都會經過激活函數,要麽大於1,要麽小於1,經過這個函數的時候,往前傳播的時候要麽變大,要麽變小,如果小於1,不斷的乘以0點幾,一直到前面的話影響就比較小了,如果是大的話乘以1點幾就越來越大,我們在語音識別上面造成很大影響,我們在第10幀的時候已經感受不到在第一幀的數據了。

技術分享圖片

有人提出LSTM單元,LSTM就是長短時間記憶單元,在這種網絡結構中,它增加了兩個比較明顯的特征,來解決前面說的梯度消失和梯度爆炸的概念,增加了一個門,在這個通道上,它的梯隊不會消失或者爆炸的,通過門的控制可以控制上一個信息點進來的多少。

技術分享圖片

下面講深度學習和聲學模型上的應用,語音識別最主要的工作集中在聲學模型建模,主要是人發音以後,到底識別出來的音速是什麽樣,到底是什麽聲音?深度學習在語音識別上面的工作,主要是有DNN、LSTM、CLDNN,看起來是一些英文字母,其實都是深度學習的神經網絡。

技術分享圖片

首先DNN,輸入一幀數據,得到發音單元的分類結果,其實這是比較純粹的,輸入一幀數據,有一個分類結果的概率,也沒有應用到其他的信息。

技術分享圖片

LSTM單元,會利用到這個時間點,和之前分割時間點的一些數據源,來進行輔助判斷,當前的這幀數據到底數據哪一個分類?

雙向的LSTM效果比單向的效果更好一些,因為它是同時兩個方向,比如說今天去吃飯,現在的LSTM識別的時候,識別我的時候它可能只應用到今天,前面的數據,但是雙向的話,在識別我的時候會用到今天,會用到我們去吃飯,其實兩邊都會用到,能夠獲取上下文的信息更多一些,效果也更好。現在我們很多語音識別的產品可以看到,我們一邊說話一邊在出結果,這個模型是不知道後面的數據,一般只能識別單向的。

技術分享圖片

CLDNN,這種網絡結構目前來看是比較成熟和穩定的一種結構,在這上面有訓練數據,也能夠比較容易的訓練出來,前面是幾個網絡後面再接LSTM,後來再接Dense,有一些高效的企業會提出增加新的網絡,比如說可能會把卷積網絡加很多層,可能會加10幾層,因為卷積網絡的特點是如果加10幾層後會提出來聲音特征,最後的識別效果也會更好

技術分享圖片

最近幾年來在語音識別上面有一些新的技術,其實也不是太新,CTC最開始的算法是在2003年還是2006年就提出來了,這是端到端的識別方法,在語音識別之前需要做一些預處理,比如說我們的訓練數據,我說這句話它的文本是什麽?需要把人的音頻和對應的發音,要先對好,端到端的算法不需要,一句話輸進去,然後一句話出來,我們的訓練是輸入音頻數據,然後得到結果,跟之前不一樣的是對整個一句話的訓練和識別,對一句話做計算。

單元粒度的變化,可以訓練音速,到最後的漢字,我們不用關心裏面的細節是什麽樣子,也不用加工人工的處理,對於去操作這個模型的人來說更加簡單了。

技術分享圖片

另外一種端到端的識別,是encoder—decoder+attention,通過借助機器翻譯中的編碼、解碼模型和註意力機制。首先是聽者×××,處理的數據剛開始跟傳統的數據一樣,將數據的特征提取以後,把這組數據經過小的神經網絡,提取出來高位特征,然後再輸Attender,參與者對前面提取出來的特征采用註意力機制,然後結果輸給拼字者Speller,將這些音速變成字和句子。

我看谷歌發布的文章裏面說,這種方法比之前傳統的算法錯誤率低了很多,它是一種完全端到端的分法,它出來以後,前面其他的算法都變成的傳統的算法,但是這樣的算法也有一個缺陷,不能做實時的識別,不能一邊說話一邊識別,實時功能暫時還不能做。

技術分享圖片

至於我們現在的技術難點,如果哪個廠商說準確率97%,那這個就很牛了,關於它的準確率各個廠商都這麽說,其實準確率是在安靜的情況下還有標準化的情況下才能夠達到,如果說有噪音,或者說那個人普通話不標準,或者有口音的普通話,識別率會降到80%,效果並沒有想象那麽好。關於遠場識別,如果說我有一個話筒,同聲傳譯效果比較好,高噪音環境下效果不是很好。還有就是帶口音的識別不好。還有多人的時候語音混雜,以及帶情緒的聲音。這些都會使識別效果不好。

技術分享圖片

怎麽解決這些問題呢?采用麥克風,更高質量的陣列麥克風,更多的遠場數據,增加語義理解的輔助。

我們的運營同學要求我們加一些廣告,是我們騰訊AI有關的小程序,很多產品可以體驗一下。

現在騰訊雲語音識別的相關產品就有上面這幾種,離線語音識別,實時語音,一句話識別,同聲傳譯,語音識成。

離線語音識別,客戶留言識別出來,還有就是實時語音,突然說話的時候可以識別出來,我自己開發一個APP,選擇這個功能可以嵌入進去。一句話識別,說完這句話就可以識別傳給我。同聲傳譯,識別漢語的同時把漢語翻譯成英文,然後在屏幕上識別出來。還有就是語音合成。

Q&A

Q:老師你好,我想問一下騰訊雲上雲端服務語音識別的調用時間能夠做到二三十毫秒的響應時間嗎?謝謝。

A:如果是我們自己內部設施的話,識別的話,可以到30毫秒,但是如果是我們提供的服務,你們自己請求過來,還要返回去,主要是這個方面延遲,所以到不了那麽快,可能要100毫秒左右。

Q:人工智能可以有嗅覺嗎?

A:我之前也想過這個問題,我記得我讀書的時候,我們老師叫做我們寫一個文章,跟你今天問的差不多,有嗅覺,有人走進來就知道這個人來了,現在沒有。

相關閱讀
這是一份「不正經」的深度學習簡述
【每日課程推薦】機器學習實戰!快速入門在線廣告業務及CTR相應知識

此文已由作者授權騰訊雲+社區發布,更多原文請點擊

搜索關註公眾號「雲加社區」,第一時間獲取技術幹貨,關註後回復1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區!

當語音識別搭配AI之後,我的語音助手更懂我的心了