《語音識別的前世今生》Q&A


這是我4月份在BitTiger公開課聽的王贇大牛《語音識別的前世今生》整理的筆記 ,本來打算整理通暢再發的,結果實在沒時間就一拖再拖。筆記有些草率,不過應該可以看明白,希望可以對大家有用,也祝王贇大神好。
 
Q&A
1. 歷史上非特定人和特定人的語音識別是不是有很大的不同?
這個就是前面講過的打補丁,各種說話人適應的那一頁(如下圖)
 這一頁上的這三種方法就是歷史上,其實也包括現在,來應對不同的說話人的口音的三種措施。
就是專門收集這個人的數據,或者在測試的時候來調整模型和特征讓它倆互相適應,或者就是說在識別之后再加入到訓練數據中,讓它慢慢的跟說話人的聲音去接近。
在神經網絡上其實現在大家也在想這些事情。
 
2. 這些訓練好像都是大數據上的訓練,在實際寫代碼的時候怎樣快速測試代碼的正確性?
正確性和性能還是有點不一樣的。正確性可以只拿少數的幾條,比如說雖然現在你有1萬小時的數據,可能只拿1分鍾的數據來訓練一下,然后看看這個模型能不能跑。有的時候如果你的程序有bug,它跑到第一次迭代的時候就掛了,這時候就給它一個小的數據量,就能快速的知道程序寫的對不對。
 
但是有一些錯誤,比如你要是有個地方加號減號寫反了,這種東西不會導致你的程序掛掉,但是結果就不對的這種,有的時候還真得大數據的時候才體現的出來。這樣的話有時候你debug的時間也是很長的。有時候你要de一個bug,然后跑一下,然后一天就過去了。
 
3. 看PPT中2010年之后紅線的錯誤率也沒有降到10%以下,
 
4. 語言模型得分通常還會有權重,還有插入懲罰,能詳細講一下插入懲罰的意義嗎?
這是一個非常細節的問題了,我也有好幾年沒碰過這些東西了。插入懲罰應該是說你這一句話,它的單詞的平均長度應該是一個合理的值,如果你這個聲學模型也好語言模型也好訓練的不好,它有可能造成你這個系統偏愛輸出更長的單詞或者偏愛輸出更短的單詞。比如它如果偏愛輸出偏短的單詞的話那么它就會輸出很多單詞,很容易造成詞錯誤率超過100%,這是不想要的。所以如果我們發現它輸出的單詞特別特別多,我們就給它一定的懲罰,這就是所謂的插入懲罰。
 
5. 對國內訊飛語音識別的看法
我主要研究技術,對產品並沒有追蹤。
 
6. 有好辦法解決多國語言的識別嗎?
一般說不同語種的識別還是訓練獨立的系統,但是它們之間也有一部分東西是可以共享的。比如說在Tandem或者Hybrid結構里面會有一個神經網絡來進行音素的分類,在不同的語言之中有一些音素還是很相似的,雖然每種語言都有自己的特色音素,那么這些相似的部分其實是可以共享的。哪怕不共享,不同語言的識別器的神經網絡它的底下的幾層也是可以共享的。上面幾層是各自不同的。這個也叫作 multi - lingual training.
 
7. HMM將單詞轉變成音素之后,狀態少了,但是轉移概率是由大量語料中的各個文字中的音素來計算的。
是的,但是不僅是要用文字,因為需要知道每個音素的持續時間,所以這個還是要用EM算法,就是不停的去更新對齊,然后統計每個音素它留在自己和轉移到下一個的概率分別是多少。
 
8. 目前做語音識別比較好的學校和實驗室有哪些?
我們實驗室算一個,另外Johns Hopkins的那個組也比較厲害。我了解比較多的主要就是這兩個了。
 
9. 除了WER,還有沒有其他的評價方法?
有一些,但都是跟它很像的。比如說對於中文的識別,有的時候用的是字錯誤率而不是詞錯誤率來評價,因為詞錯誤率還涉及到分詞,比如說我說了一個語音識別我標准答案里是一個詞,你給我輸出的是兩個詞,那這里就出現了200%的詞錯誤率,但是字錯誤率是0.所以會有一些小的變種,但是基本上都是這種思路。
 
10. 語音可不可以推斷出這個人說的是真話還是假話?通過幾個斷斷續續的語音推斷出語音發生的場景?
 
這兩個問題都是屬於元(?)數據的識別。
第一個是語音里面除了文字之外的信息,測謊本身就很難,語音並不是能夠很精確的判斷出真假,即便是人也很難做到。但這個可以把它歸結到情感識別里。情感識別就是去辨別他是高興還是悲傷還是憤怒。
第二個是場景識別。這個跟我現在在做的課題比較像。在這個場景里,語音其實是一個你不想要的內容,因為場景的話,不管你是在市場還是在家里,主要是周圍環境的信息比較有用。所以你可能需要從這里邊把語音去掉,然后再去做場景識別。
 
11. 請問基於語音里面的語速、停頓等做情緒判斷,是不是比語音識別低很多?它跟語音識別的相似度如何?
從難度上講,那怎么看這個難度呢?就是說你可以說情感識別比較容易,因為一般來說情感就那么幾類,而語音識別本身詞匯量就已經上萬了,這一句話里面還有那么多的詞。從這個角度上講情感識別是比較容易的。
但是從另一個角度講,語音識別答案比較固定,情感的模糊性更強,可能同一句話不同的人聽起來情緒是不一樣的。從這個角度來講情感識別是更難的。
 
12. 是不是神經網絡每一層的輸出就是有意義的?
這是一個算是有點哲學的問題吧。像剛剛我說的識別花紋識別器官識別臉,這個可以認為是人可以這么來理解。但是神經網絡里面的輸出並不是還有這么明確的意思。它可以說有這樣大概的這么一個層次,但並不是明確的說這個就是識別耳朵。這也是神經網絡經常被人詬病的一點。就是它中間的內容人類沒辦法理解。
但是人腦也是這樣啊。
 
13. 文本轉換到語音的庫有沒有什么推薦的?
文本轉換到語音其實說的就是語音合成這個事情,CMU這邊有一個庫叫做festival可以做這件事情。不過這個庫也是比較老,最近幾年我沒有用過,不知道它與時俱進的情況如何。
如果大家只是想給它一段文字讓它讀出來,有一個很好的工具叫做google翻譯。Google翻譯文本塊下面有一個小喇叭圖標,你點一下,它可以把這段話讀出來,而且第一次點會讀的很快,第二次點會讀的很慢。這個質量還是挺高的。
 
14. 跟人類比,機器識別需要的數據也太多了。為什么人類不需要那么多數據?這對神經網絡技術有什么啟發?
這個也是一個哲學上的問題。首先人類需要的數據少這個命題還有待確定。
 
其次,人類在有老師教的時候學習很快,也就是老師把邏輯明確的告訴大家時,大家可以很快的學會。但是機器不能,機器需要在大量的數據中自己去發現邏輯。
人類可以通過邏輯的方式來教授,但是為什么不能這么教機器呢?因為機器聽不懂。那這個事情可以跟嬰兒來對比。比如說一個嬰兒去學習什么東西是能摸的,什么東西不能摸,摸起來會痛,爸爸媽媽很難教,因為嬰兒聽不懂,那它的學習方式就只能是去不停的試驗,痛過幾次之后就知道這個東西不能摸了。這就是一個從數據中不斷摸索的過程。神經網絡現在還處在這個階段,就是說它的學習還和嬰兒的學習比較類似。
 
還有一個原因是人類學習的所有的任務都是放在同一個大腦里面的,它就可以觸類旁通。比如同樣是學外語,語音識別就可以把它理解成聽,你在學聽的過程中你其實還在練習說。但是你一個做語音識別的神經網絡它就專門做神經網絡,不做語音合成。這也是人類學習效率比機器高的一個原因。
 
15. RNN是recurrent RNN還是recursive RNN?
這里講的是recurrent.這兩個詞確實很像,有人說中文把 recurrent  翻譯成時間遞歸,把 recursive  翻譯成結構遞歸,我這里是時間遞歸這種。結構遞歸在NLP里邊語法樹的構建里面用的比較多。
 
16. Tandem, Hybird, RNN需要的數據量和訓練時間是什么樣的數量級?
Tandem, Hybird比較相似,它倆比RNN需要的少。
 
17. 遞歸神經網絡又多了好多參數,是不是需要更大規模的數據來訓練?
是的。
 
18.每批數據是一幀一幀輸入的嗎?還是要多少幀一批?
這個“批”我不知道是不是說的mini batch,mini batch 就是在訓練的過程中,每次給它多少數據讓它更新參數。這個一批就叫做一個mini batch,一個mini batch是幾十條語音,每條語音是一個完整的語音,一般是幾秒到十幾秒的樣子。
 
19. 神經網絡的優化。
神經網絡的優化方法一般分為一階的和二階的,二階的一般是不用的,因為參數太多了,一般一個神經網絡中的參數是在百萬到千萬這個級別的。二階方法要算二階導的矩陣,就是一個幾千萬乘以幾千萬的矩陣,這個是算不來的。所以一般都是用的一階方法。
一階方法里面除了梯度下降以外,還有一些比較常見的方法,比如說rmsprop等,這些方法現在看來沒有哪種方法是一直比別的好,所以這些方法大家一般都會挨個試一遍。
 
20. CTC對中文的處理效果如何?
這個應該說對不同語言來說沒有很大的區別,如果你是以單詞為級別的話。如果是以字為級別的話,我覺得它對中文來說是更難一些,因為中文在字這個層面上的詞匯量是大的多的,常用字有幾千,而英語就只需要考慮幾十個字母就可以了。
open source庫的話,eesen里面是有CTC的。CTC在tensorflow里面應該是有實現的。
 
21. 端到端的話最后要不要對字符再分詞?
這個是不需要的,因為空格也是一個字符。
 
22. 是不是HMM的只是可以不用去學習了?
如果你想快速的到達前沿的話,可以直接去學神經網絡。
 
23. 怎么從文字反向轉化為語音?
這是語音合成的問題。這里面其實也是會有一個聲學模型,也就是說每個字符它怎樣發音,這里邊預處理的階段就比較多。比如要把文本處理成音素串這里面就需要一個詞典,變成一個音素串還不夠,你還需要在哪里停頓,語調如何,這些就可以看成是NLP的任務。
 
24. 語音識別的訓練量有多大?能有一個大概的估計嗎?
一般要得到一個還能看的過去的系統的話一般是需要50到100小時的訓練。當然后來這些比較飄逸的模型,比如graphem的話那就需要更大量的訓練了。Google一般是用上千小時的數據來訓練這些比較前沿的模型的,能夠在switchboard上得到接近前沿的錯誤率的值。
 
25. 哪里有公開的訓練集?
訓練集的話比較常用的有 switchboard,但不是公開的。公開的話還沒有專門找過。
 
26. 能不能推薦一些前沿的入門的書籍?
現在的發展太快,書籍從寫作到出版這樣一個周期下來,就是一兩年過去,技術就已經過時了。所以現在基本上是大家通過某種方式比如說聽我的講座入門了之后,然后在這個框架下去找文獻,直接讀前沿的論文來把知識體系搭建起來,而不是通過教材了。
 
27. 噪音問題是不是有很多實時降噪的算法?
是的。效果有些還可以,只是產品里面它不一定用這個東西。
 
28. 用深度學習是不是需要PHD?
深度學習理論是要用到本科的一些課程,主要就是線性代數,微積分和概率,所以一般來說你至少要學過本科的這些課程,才能學深度學習。但也不需要到PHD的程度,因為它的理論就那么多,基本上你花個半年的時間就差不多了,包括工具包的使用什么的。當然你也可以深入研究做一個PHD.
 
29. 郭德綱語音導航是怎么實現的?
這個說的其實是語音合成。語音合成里邊主流的方法是有兩類,一類是拼接法,就是錄一下真人的片段,要合成的時候從中找最像的片段來拼起來,這樣拼起來就會質量高一些,更像真人一些。另一類就是純粹參數的合成,就像語音識別一樣,先訓練一些模型,然后這個模型里生成語音。這樣生成的語音往往比拼接法生成的語音質量差一些。
 
30. 語音識別會成為主流的交互方式嗎?感覺只能用於特定的場景,因為人總是懶得說話。
我認為語音識別會成為一個重要的但不是主要的交互方式,它在y有些場景下是很有用的。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM