0
本文作者: 亞萌 | 2017-01-23 18:05 |
雷鋒網(wǎng)按:2016年1月11日-12日,美國加州圣克拉拉市,AI Frontier大會召開,這次大會聚集了美國人工智能公司里最強悍的明星人物,包括谷歌大腦負責人Jeff Dean、微軟AI首席科學家鄧力、亞馬遜首席科學家Nikko Strom、百度AI實驗室主管Adam Coates、Facebook科學家賈楊清等20多位業(yè)界大咖,堪稱AI業(yè)界領域的一場盛事。
作為2017開年最火的人工智能之星Alexa項目的領導者,亞馬遜首席科學家Nikko Strom帶來了演講,詳細闡述了Alexa里的大規(guī)模深度的基本架構(gòu)、語音識別、語音合成等內(nèi)容,尤其提到了Alexa為“雞尾酒派對難題”找到了有效的解決方法。
Nikko Strom,亞馬遜首席科學家。1997年于瑞典工學院獲得博士學位,之后擔任MIT計算機科學實驗室研究員,2000年加入初創(chuàng)公司Tellme Networks,2007年加入微軟,推進商業(yè)語音識別技術(shù)的前沿研究。2011年加入亞馬遜,并擔任首席科學家,領導語音識別及相關(guān)領域的深度學習項目,是如今炙手可熱的亞馬遜Echo和Alexa項目的創(chuàng)始成員。
以下是雷鋒網(wǎng)根據(jù)Nikko Strom現(xiàn)場演講整理而成,在不改變愿意的基礎上做了刪減和補充。
這是Amazon Echo,內(nèi)置了一個Alexa系統(tǒng),提供語音服務,你可以把它放到你的家里,你可以跟它對話,并不需要拿遙控器來控制。這個Holiday Season,我們加入了新的白色Echo和Dot,你們當中應該有很多人比較偏愛白色的電子產(chǎn)品。其它的一些產(chǎn)品,并沒有內(nèi)置Alexa系統(tǒng),但是可以與其連接,比如家里的燈具、咖啡機、恒溫器等,你只需要語音,就可以讓它們執(zhí)行一些命令。另外,開發(fā)者們通過“Skills”來給Alexa增加更多的功能應用。
如今數(shù)百萬的家庭里放置了Echo,而它真正地在被使用著,由此我們得到的數(shù)據(jù)多到瘋狂(insane),可能會超出你的想象。我無法告訴你確切的數(shù)字,但盡可能往大了去想吧。
人的耳朵并非每時每刻都在搜集語音信息,“聽”的時間大約占10%,所以一個人成長到16歲的年紀,他/她所聽到的語音訓練時間大概有14016小時,關(guān)于這個數(shù)據(jù),我后面會提到一個對比。
回到Alexa,我們把數(shù)千個小時的真實語音訓練數(shù)據(jù)存儲到S3中,使用EC2云上的分布式GPU集群來訓練深度學習模型。
在訓練模型的過程中,用MapReduce的方法效果并不理想,因為節(jié)點之間需要頻繁地保持同步更新,不能再通過增加更多的節(jié)點來加速運算。我們可以這樣理解,那就是GPU集群更新模型的計算速度非常之快,每秒都有幾次更新,而每次更新大約是模型本身的大小。也就是說,每一個線程(Worker)都要跟其它線程同步更新幾百兆的量,而這在一秒鐘的時間里要發(fā)生很多次。所以,MapReduce的方法效果并不是很好。
我們在Alexa里的解決方法就是,使用幾個逼近算法(Approximations)來減少這些更新的規(guī)模,將其壓縮3個量級。這里是我們一篇2015年論文的圖表,我們可以看到,隨著GPU線程的增加,訓練速度加快。到 40個GUP線程時,幾乎成直線上升,然后增速有點放緩。80 GPU線程對應著大約55萬幀/秒的速度,每一秒的語音大約包含100幀,也就是說這時的一秒鐘可以處理大約90分鐘的語音。前面我提到一個人要花16年的時間來學習1.4萬小時的語音,而用我們的系統(tǒng),大約3個小時就可以學習完成。
這就是我們大致的深度學習基礎架構(gòu)。
我們知道語音識別系統(tǒng)框架主要包括四大塊:信號處理、聲學模型、解碼器和后處理。
首先我們將從麥克風收集來的聲音,進行一些信號處理,將語音信號轉(zhuǎn)化到頻域,從每10毫秒的語音中提出一個特征向量,提供給后面的聲學模型。聲學模型負責把音頻分類成不同的音素。接下來就是解碼器,可以得出概率最高一串詞串,最后一步是后處理,就是把單詞組合成容易讀取的文本。
在這幾個步驟中,我們或多或少都會用到機器學習和深度學習的方法。但是我今天主要講一下聲學模型的部分。
聲學模型就是一個分類器(classifier),輸入的是向量,輸出的是語音類別的概率。這是一個典型的神經(jīng)網(wǎng)絡。底部是輸入的信息,隱藏層將向量轉(zhuǎn)化到最后一層里的音素概率。
這里是一個美式英語的Alexa語音識別系統(tǒng),所以就會輸出美式英語中的各個音素。在Echo初始發(fā)布的時候,我們錄了幾千個小時的美式英語語音來訓練神經(jīng)網(wǎng)絡模型,這個成本是很高的。當然,世界上還有很多其它的語言,比如我們在2016年9月發(fā)行了德語版的Echo,如果再重頭來一遍用幾千個小時的德語語音來訓練,成本是很高的。所以,這個神經(jīng)網(wǎng)絡模型一個有趣的地方就是可以“遷移學習”,你可以保持原有網(wǎng)絡中其它層不變,只把最后的一層換成德語的。
兩種不同的語言,音素有很多是不一樣的,但是仍然有很多相同的部分。所以,你可以只使用少量的德語的訓練數(shù)據(jù),在稍作改變的模型上就可以最終得到不錯的德語結(jié)果。
在一個充滿很多人的空間里,Alexa需要弄清楚到底誰在說話。開始的部分比較簡單,用戶說一句喚醒詞“Alexa”,Echo上的對應方向的麥克風就會開啟,但接下來的部分就比較困難了。比如,在一個雞尾酒派對中,一個人說“Alexa,來一點爵士樂”,但如果他/她的旁邊緊挨著同伴一起交談,在很短的時間里都說話,那么要弄清楚到底是誰在發(fā)出指令就比較困難了。
這個問題的解決方案來自于2016年的一份論文《錨定語音檢測》(Anchored Speech Detection)。一開始,我們得到喚醒詞“Alexa”,我們使用一個RNN從中提取一個“錨定嵌入”(Anchor embedding),這代表了喚醒詞里包含語音特征。接下來,我們用了另一個不同的RNN,從后續(xù)的請求語句中提取語音特征,基于此得出一個端點決策。這就是我們解決雞尾酒派對難題的方法。
Alexa里的語音合成技術(shù),也用在了Polly里。語音合成的步驟一般包括:
第一步,將文本規(guī)范化。如果你還記得的話,這一步驟恰是對“語音識別”里的最后一個步驟的逆向操作。
第二步,把字素轉(zhuǎn)換成音素,由此得到音素串。
第三步是關(guān)鍵的一步,也是最難的一步,就是將音素生成波形,也就是真正的聲音。
最后,就可以把音頻播放出來了。
Alexa擁有連續(xù)的語音合成。我們錄下了數(shù)小時人的自然發(fā)音的音頻,然后將其切割成非常小的片段,由此組成一個數(shù)據(jù)庫。這些被切割的片段被稱為“雙連音片段”(Di-phone segment),雙連音由一個音素的后半段和另一個音素的前半段組成,當最終把語音整合起來時,聲音聽起來的效果就比較好。
當你創(chuàng)建這個數(shù)據(jù)庫時,要高度細致,保證整個數(shù)據(jù)庫里片段的一致性。另外一個重要的環(huán)節(jié)是算法方面的,如何選擇最佳的片段序列結(jié)合在一起形成最終的波形。首先要弄清楚目標函數(shù)是什么,來確保得到最合適的“雙連音片段”,以及如何從龐大的數(shù)據(jù)庫里搜索到這些片段。比如,我們會把這些片段標簽上屬性,我今天會談到三個屬性,分別是音高(pitch)、時長(duration)和密度(intensity),我們也要用RNN為這些特征找到目標值。之后,我們在數(shù)據(jù)庫中,搜索到最佳片段組合序列,然后播放出來。
PS:文章由雷鋒網(wǎng)獨家原創(chuàng),未經(jīng)許可拒絕轉(zhuǎn)載~
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。