INTERSPEECH 2017系列 | 语音识别之语言模型技术
編者:今年的INTERSPEECH于8月20日至24日在瑞典的斯德哥爾摩順利召開,眾多的高校研究機構(gòu)和著名的公司紛紛在本次會議上介紹了各自最新的技術(shù)、系統(tǒng)和相關(guān)產(chǎn)品,而阿里巴巴集團(tuán)作為鉆石贊助商也派出了強大的陣容前往現(xiàn)場。從10月25日開始,阿里iDST語音團(tuán)隊和云棲社區(qū)將共同打造一系列語音技術(shù)分享會,旨在為大家分享INTERSPEECH2017會議上語音技術(shù)各個方面的進(jìn)展。第二期分享的主題是語音識別之語言模型技術(shù)(視頻回顧請戳這里),以下是本次分享的主要內(nèi)容。
1 語音識別技術(shù)
隨著iPHONE 4S中siri的出現(xiàn),越來越多的民用語音識別出現(xiàn)在大家眼前。現(xiàn)在市面上各種語音輸入法、語音機器人層出不窮。下圖是去年阿里云棲大會,基于iDST語音技術(shù)的ET機器人。現(xiàn)在市面上漫山遍野的智能音箱大戰(zhàn),其中也包含語音識別技術(shù)。
2 語言模型
語言模型,顧名思義,對語言進(jìn)行建模的模型。語言表達(dá)可以看作一串字符序列,不同的字符序列組合代表不同的含義,字符的單位可以是字或者詞。語言模型的任務(wù),可以看作是給定字符序列,如何估計該序列的概率,或者說,如何估計該序列的合理性。
P(上海 的 工人 師傅 有 力量)>P(上海 的 工人 食腐 有 力量)
拿這句話做個例子。比如到底應(yīng)該是“工人師傅有力量”,還是“工人食腐有力量”,哪句話更“合適”。我們?nèi)菀着袛嘧筮呥@句的概率大一點,工人師傅。于是我們希望通過語言模型的建模,可以給出符合人類預(yù)期的概率分配。就像這句,工人師傅的概率,大于工人食腐的概率。
根據(jù)條件概率的公式,我們很容易推出一句話的概率應(yīng)該符合各個詞條件概率的連乘,也就是鏈?zhǔn)椒▌t。比如“上海的工人師傅有力量“,通過分詞分成上海、的、工人、師傅、有、力量六個詞,于是這句話(不考慮句首句尾)的概率就可以根據(jù)鏈?zhǔn)椒▌t計算了,上海的概率,乘以”上海“后面跟”的“的概率,也就是上海條件下”的“的概率,再乘以”上海的“后面跟”工人“的概率,再乘以”上海的工人”后面出現(xiàn)“師傅“的概率,以此類推,一直到”上海的工人師傅有”,后面跟力量的概率。對于這種條件概率,也很容易通過樸素地計算詞頻的方式計算出來。然而我們發(fā)現(xiàn),實際計算中,當(dāng)句子比較長的時候,可能的組合數(shù)實在太多,實際操作中難以進(jìn)行計算,于是人們就開始想著怎么簡化問題,比如馬爾可夫假設(shè)。
馬爾可夫假設(shè)是,大致描述一下,給定時刻t的狀態(tài)的條件下,則時刻t+1的狀態(tài)與t-1及之前時刻的狀態(tài)條件獨立。比如一階情況,假設(shè)在給定W(k-1)的情況下,W(k)和W(k-2)及以前的狀態(tài)(也就是詞),條件獨立。我們可以理解為W(k)只與W(k-1)相關(guān),計算的時候不考慮W(k-2)的影響,只與前面一個詞有關(guān),于是事情就變得簡單了,以前計算”上海的工人師傅有”這一大長串后面出現(xiàn)”力量”的概率,很麻煩,現(xiàn)在只需要計算”有”后面”力量”的概率。
對于高階版本,也是一個道理,比如假設(shè)只與前面N-1個詞有關(guān),于是W(1)到W(k-1)這一長串后面跟W(k)的概率轉(zhuǎn)化成了W(k-N+1)W(k-N+2)到W(k-1)后面跟W(k)的概率,就只需要計算一個N元組W(k-N+1)到W(k)的詞頻,以及一個N-1元組W(k-N+1)一直到W(k-1)的詞頻,兩者作比求得。這種通過馬爾可夫假設(shè)簡化計算、通過N元組詞頻計算得到條件概率的模型,叫做N元組模型,或者N元文法模型,英文N-Gram Model。
總結(jié)一下N元文法模型:通過馬爾可夫假設(shè)簡化了模型結(jié)構(gòu)和計算,通過數(shù)數(shù)的方式計算,通過查找的方式使用。它計算簡單(數(shù)數(shù)),計算速度快(查表)。有超過三十年的歷史,性能穩(wěn)定可靠,經(jīng)得起檢驗。但限于詞頻計數(shù)的計算,它比較稀疏,依賴平滑算法,但對于沒見過的組合(unseen data)它的泛化能力還是不太好;而且限于馬爾可夫假設(shè),其可用的歷史信息有限,只與前N-1個詞有關(guān),再長就影響不到了。前段時間深度學(xué)習(xí)火了幾年,于是大家都在想能不能用神經(jīng)網(wǎng)絡(luò)做點什么,于是人們開始嘗試用神經(jīng)網(wǎng)絡(luò)替代N元文法模型。
首先是全連接神經(jīng)網(wǎng)絡(luò),最早經(jīng)得起檢驗的模型。內(nèi)部實值節(jié)點,連續(xù)空間建模,于是比數(shù)數(shù)流擁有了更好的泛化性,訓(xùn)練得到Projection層作為詞向量,也被發(fā)現(xiàn)具有不錯的語義相關(guān)性。但FCNN, fully-connected NN全連接神經(jīng)網(wǎng)絡(luò),結(jié)構(gòu)并沒有比ngram模型用更長的歷史信息,依然跟前面N-1個詞相關(guān)。于是大家就開始用理論歷史信息無限長的遞歸結(jié)構(gòu)的RNN,遞歸神經(jīng)網(wǎng)絡(luò),來對語言進(jìn)行建模。理論上無窮長的歷史信息,實際上人們通過LSTM,long short-term memory或者GRU這種改進(jìn)結(jié)構(gòu)來彌補梯度衰減的問題,于是獲得了還挺明顯的提升。實際應(yīng)用的時候有以下幾個問題吧,節(jié)點數(shù)多,除了占空間,就是訓(xùn)練和測試的計算量都很大,然后對訓(xùn)練數(shù)據(jù)也比較敏感。
詞表的大小是影響模型的關(guān)鍵因素,比如一個100w詞的詞表,對應(yīng)100w的輸入/輸出節(jié)點,如果recurrent層有1000個節(jié)點,那光輸出層的權(quán)重就有10的九次方量級,算起來可是個大工程,于是壓縮詞典尺寸成了一個最直接的解決方案,很多時候壓縮詞典尺寸會造成性能損失,其實真正制約速度性能的主要是輸出層節(jié)點,所以一個折中的解決方案就是僅壓縮輸出層詞表,輸入選用一個大點的詞表。
除了直接壓縮詞表,也可以對詞表進(jìn)行聚類,比如100w詞表聚成1000個類,每個類別1000個詞,于是就把100w的輸出變成了2000的兩個softmax,大幅提升了速度;第三種方法是瓶頸層,就是輸出或輸入增加瓶頸層來削減節(jié)點數(shù)量,但輸出softmax的計算量不減,而且節(jié)點數(shù)過少對性能還是有很大影響的,分層輸出Hierarchical Softmax是個樹狀結(jié)構(gòu),通過對輸出層類別進(jìn)行樹狀結(jié)構(gòu)的聚類(或者叫編碼),這樣只有標(biāo)簽節(jié)點對應(yīng)的路徑需要計算,但CPU上實現(xiàn)還好,這種結(jié)構(gòu)在樹節(jié)點串行運算,不太適合GPU這種低主頻高并發(fā)的計算架構(gòu),而且同數(shù)據(jù)量情況下性能衰減還是挺嚴(yán)重的。前段時間剛剛出來的文章,LightRNN,通過類似聚類的方式,利用embedding的思想,把詞表映射到一個實值矩陣上,實際輸出只需要矩陣的行加矩陣的列,計算量大概也能開個方。和節(jié)點數(shù)多一起造成計算量大的一個原因就是softmax輸出,需要計算所有的節(jié)點求個和,然后得到分母。若是這個分母能保持一個常數(shù),實際計算的時候就只算需要的節(jié)點,在測試環(huán)節(jié)就快的多了。于是就有了正則項相關(guān)的方法,variance regularization,如果訓(xùn)練速度可以接受的話,這種方法在基本不損失模型正確性的情況下可以大幅提升前向計算速度;如果訓(xùn)練的時候也想提速,還可以考慮基于采樣,sampling,的方法,比如NCE、IS importance sampling、black sampling等,本質(zhì)上就是說,在訓(xùn)練的時候不計算全部節(jié)點,只計算正樣本(也就是標(biāo)簽為1的節(jié)點),以及部分通過某種分布采樣的到的負(fù)樣本,避免高輸出造成的計算緩慢。速度上提升還是很明顯的。
3 評價指標(biāo)
語言模型一般通過混淆度,英文Perplexity,簡稱PPL或者PP值,來評價語言模型性能。
首先我們知道熵,可以表達(dá)一組分布的最短平均編碼長度,比如一個標(biāo)簽的值符合一組分布p1 p2 pn,出現(xiàn)第i個值得概率是pi,那如果我們對第i個值按負(fù)的以二為底pi的對數(shù)個bit進(jìn)行編碼,則可以得到最短平均編碼長度。
現(xiàn)在有一篇文檔,或者說我們的測試集,S,每一句是Sj,我們可以根據(jù)模型算得其總概率為P(向量S),于是要達(dá)到理論最優(yōu),其編碼位數(shù)應(yīng)該是負(fù)的以2為底P(S)的對數(shù),我們除以總詞數(shù)Nw,得到文檔的平均最短編碼長度。為了計算簡便,以此二的平均編碼位數(shù)次方,作為PPL,展開之后就是最下面的公式,每個詞概率連乘后,開Nw次方。一般幾十幾百不等,偶爾上千吧,對應(yīng)平均編碼位數(shù)在6到10這一塊。編碼位數(shù)越少,對應(yīng)匹配度越高,也就是PPL越小,我們認(rèn)為模型越好
因為是語音識別中的一部分,為語音識別服務(wù),所以最終的評價指標(biāo),往往是語音識別常用的評價體系,叫做符號錯誤率。錯誤包含三種,插入錯誤,刪除錯誤,替換錯誤。通過找到最小化三種錯誤的一組匹配,來計算實際的錯誤率,是三種錯誤總數(shù),除以總符號數(shù)。例如上面這個例子,上海的工人師傅有力量,被識別成了上海工人食腐有的是力量,這里左邊的紅字“的”,屬于刪除錯誤;“師傅”被錯誤識別成“食腐“,屬于替換錯誤;多出來的右邊的”的”、“是”,屬于插入錯誤。錯誤一共有2+1+2共5處,原句10個字,所以錯誤率是50% 。對于中文,我們一般使用字錯誤率,對于英文,我們一般使用詞錯誤率。
4 會議前沿
接下來是Interspeech2017會議的,語音識別中語言模型的研究進(jìn)展。分為以下四個方面,模型優(yōu)化相關(guān)的、數(shù)據(jù)和其它信息自適應(yīng)相關(guān)的、解碼過程相關(guān)的,以及分析類的文章。
首先是模型優(yōu)化相關(guān)的,直接從模型入手,包含以上這幾篇文章,比如使用更新的模型結(jié)構(gòu),殘差網(wǎng)絡(luò)、更大廣度的CNN、雙向RNN等;或者更好的訓(xùn)練方式,比如基于Batch的NCE訓(xùn)練、谷歌的稀疏非負(fù)矩陣語言模型SNM LM參數(shù)估計等。
然后是adaptation,也就是自適應(yīng)相關(guān)的文章。實際業(yè)務(wù)中我們也會碰倒類似問題,比如我們用大量數(shù)據(jù)訓(xùn)練了一個通用模型,這是有業(yè)務(wù)需求說,我們需要做某一個domain的識別,可不可以幫我們優(yōu)化一下,這個domain的數(shù)據(jù)不是很多。
這種時候就需要自適應(yīng)相關(guān)的方法了,將通用的大模型,通過少量數(shù)據(jù),或者其它信息(比如這里有knowledge graph的),自適應(yīng)到某一特定領(lǐng)域。
第三部分是解碼部分。如何將各種花樣地語言模型用于語音識別。比如傳說中的NNLM,基于神經(jīng)網(wǎng)絡(luò)的語言模型,剛剛說的全連接NN或者RNN結(jié)構(gòu)的語言模型,其計算量是遠(yuǎn)大于N-Gram這種可以查表操作的模型的。語音識別的解碼工作是一個很復(fù)雜的搜索,有很大的計算量和很高的實時性要求,如果每一次查表操作都替換成一次神經(jīng)網(wǎng)絡(luò)輸出的計算,不好好優(yōu)化一下可能會非常慢。這里就有一些語言模型解碼這塊的優(yōu)化工作,包含以上三篇文章。
最后是一篇分析類的文章,分析現(xiàn)在的語言模型技術(shù),和人類之間的差距。文中估計的人類對于一般文本的理解,對應(yīng)的PPL在14左右,與目前語言模型技術(shù)有較大差距,預(yù)測至少需要10-20甚至更多年,機器才能在語言模型領(lǐng)域達(dá)到人類的認(rèn)知。
總覽完這些,我們就挑兩篇文章一起看一下吧。
第一篇,題目是Empirical Exploration of Novel Architectures and Objectives for Language Models,對比了LSTM-RNN和文章提出的一種廣度更大的CNN,在單任務(wù)傳統(tǒng)交叉熵(也就是CE)準(zhǔn)則下和多任務(wù)學(xué)習(xí)(multitask learning)下的性能對比。文章的contribution有兩點,嘗試了一個更大廣度的CNN,一個是用了multitask learning。
是LSTM-RNN的兩個基線系統(tǒng),包括word-level和character-level兩個建模尺度。模型比較基本,對于word-level,embedding上面兩層LSTM,對于character-level,尺度更細(xì),于是加了一層LSTM以更好地刻畫。輸出都是word。兩種尺度和LSTM-RNN的建模之前的工作中都有,所以只算是基線系統(tǒng),這里沒有創(chuàng)新。
這里是作者propose的word-level 的DCC。這里為了增加對更長時的信息進(jìn)行建模,使用了一個更大時間尺度的CNN,這里為了建模的效果,它沒有采取一整個大卷積窗,而是分層合并的方式,比如左邊這個例子,不是傳統(tǒng)的對wanted to be able這四個單詞一次卷積,而是分為wanted to和be able兩個組,分別卷積,然后再卷一層的方式。右邊做了一點小改進(jìn),就是又增加了一級1x2的卷積,word-DCC加一個additional的卷積層。傳統(tǒng)CNN在英文上往往采用character-level的建模,以發(fā)揮CNN的優(yōu)勢,對較細(xì)的尺度進(jìn)行建模,同時利用窗長和多層卷積的優(yōu)勢,在保證計算效率的前提下,提高時間尺度的長度;這里更加側(cè)重時間尺度的長度,而不是更細(xì)的粒度。
第二個contribution是用了multi-task learning。很經(jīng)典的訓(xùn)練策略,通過加入額外的secondary task,來提升primary task(也就是主task)的性能。當(dāng)然很多時候兩個task互相幫助。合并的優(yōu)化目標(biāo)按照左邊這個公式,兩個交叉熵準(zhǔn)則按權(quán)相加,按照兩個task的相關(guān)性選擇一個合適的lamda參數(shù)。新的task意味著額外的信息量,同時也是一種正則,對于抑制過擬合有幫助。對于數(shù)據(jù)有限的任務(wù),multi-task learning尤為有效。這里采用了單詞的類別分類作為一個task,類別是灰度聚類的到的,先聚類,再把聚類結(jié)果用于分類。沒有直接增加人為設(shè)計的準(zhǔn)則,自己對自己提升,也可以看成一種boost。
實驗在三個數(shù)據(jù)集展開,分別是Broadcast News、switchboard和callhome三個語音識別的常用8k采樣英文數(shù)據(jù)集。其中swtichboard和callhome都是電話對話,放在后面說,我們先來看broadcast news。
上表是混淆度PPL,下表兩種不同AM情況下的WER。左邊表中word-level LSTM RNN明顯好過其它模型,其中Multitask learning訓(xùn)練的LSTM-RNN獲得最低的PPL96.47;其次是character-level的LSTM,最后是CNN,其中多一個卷積層的Word-DCC+C,就是最下面兩個結(jié)果,比沒有這個卷積層還是有點用的。Multitask learning在這個量級的數(shù)據(jù)下面還是有一定幫助的,或多或少都看到一點提升。
這個結(jié)果也是比較符合預(yù)期,LSTM-RNN作為經(jīng)典的模型,在大多數(shù)情況還是非常優(yōu)異的,只是因為其recurrent結(jié)構(gòu),它的訓(xùn)練速度相比CNN還是慢了一些。上面的表格是語音識別的詞錯誤率結(jié)果,使用了兩種聲學(xué)模型,一種是差一些的GMM模型,一種是比較好的CNN聲學(xué)模型。結(jié)果一樣符合預(yù)期,word-level的LSTM-RNN + multitask learning訓(xùn)練獲得單模型最優(yōu),與CNN及character-level LSTM合并后又小幅提升了一點。
第二個實驗在兩個電話對話數(shù)據(jù)庫上進(jìn)行,就是剛剛提到的switchboard SWB和 callhome CH。相比上一個實驗測試不同的AM,這個實驗加強了基礎(chǔ)LM,使用了N-Gram模型+一個modelM,一個準(zhǔn)神經(jīng)網(wǎng)絡(luò)模型,這里不詳述了。對于這種更強的基線LM,幾個模型的相對提升下降了一些,但總體趨勢與之前一致,還是word-level LSTM-RNN + multitask learning效果最好。右邊的WER在兩個測試集上進(jìn)行,趨勢基本一致,三個模型融合相比最優(yōu)的單個模型又小幅提升了一點。
這里個人覺得本文的這種CNN應(yīng)該嘗試character-level的建模,發(fā)揮CNN的優(yōu)勢,和LSTM長時信息形成互補。
剛剛是一篇模型結(jié)構(gòu)、訓(xùn)練準(zhǔn)則的探究,實際應(yīng)用中,之前說過,基于神經(jīng)網(wǎng)絡(luò)的語言模型比基于查表的N-Gram模型計算量大了很多,在實際系統(tǒng)中很難實時運算,往往采用重打分的模式做rerank。這里有一篇工程性強一些的文章,針對幾個影響速度的點,結(jié)合了幾種優(yōu)化方式,做到了NNLM的準(zhǔn)實時one-pass解碼。特色在于用N-Gram模型查表的計算量,做到NNLM的計算。
Contribution包含以下幾點,加速100倍以上,做到準(zhǔn)實時計算;
其中使用了NCE訓(xùn)練的unnormalized NNLM解決輸出問題;
通過預(yù)計算存儲和緩存解決隱層節(jié)點輸出;
通過PReLU和Maxout激活函數(shù)替代tanh。
幾個技術(shù)都不是新技術(shù),但本文把它們用到一起,達(dá)到了比較好的效果。
模型結(jié)構(gòu)如下圖所示,n-1個詞的輸入,每個輸入按1-hot編碼,通過shared weights映射到E維的embedding。n-1個E維的embedding拼在一起作為隱層輸入,經(jīng)過隱層線性映射到維度H,這里的affine映射耗時(n-1)*E*H;隱層節(jié)點通過雙曲正切函數(shù)tanh的映射,耗時T_n,也就是H個Tanh的計算時間;輸出層共計V個節(jié)點,也就是輸出詞典的size是V,包括一個H*V的affine projection和一個節(jié)點數(shù)為V的softmax計算。
下面我們看看這篇文章是怎么一點一點壓縮計算量的。首先是對于hidden layer的affine projection計算,一個(n-1)*E維映射到H維的矩陣乘法。這個輸入特征(n-1)*E維,可以看作n-1個E維的子矩陣,每個矩陣分別有一個E->H的映射,屆時再把這n-1個H維的向量加在一起,就是整個過程了。而這個過程中,詞表是有限的,E維向量就是有限的,n-1個位置的E->H的映射也就是有限的,我們本來要存V個E維的embedding,V是詞表size,這里可以認(rèn)為需要存儲V個(n-1)*H維embedding就可以免去剛剛說的E->H的映射了,于是隱層affine計算的時間就從n-1乘以E乘以H,降低到(n-1)*H次加法運算
當(dāng)然,存儲成本從V*E,變到V * n-1 * H,增加了n-1 * H / E倍。比如H是1024,E是128,n是5,則增加了4*8=32倍。
解決完affine transform,第二步就是激活函數(shù)。我們知道雙曲正切函數(shù),就是tanh函數(shù),泰勒需要展開到好多階,單CPU計算代價還是比較大的。文章中替換成了PReLU(Parametric ReLU),一個參數(shù)可學(xué)習(xí)的ReLU函數(shù),以及嘗試了maxout。兩個激活函數(shù)計算量都是比較低的,這樣激活函數(shù)的時間Tn也就壓縮到kTmax(H),k個H維向量取max的時間。
第三步是cache策略,對于一組n-1個詞的詞序列 w1 w2 w(n-1),當(dāng)我們計算過它的值之后,可以把輸入的詞序列和輸出的概率都存下來放到緩存中,當(dāng)計算的時候就可以直接拿出來用,避免復(fù)雜的計算。這也是常見的工程技巧,假設(shè)命中率為1-p,則計算時間可以進(jìn)一步壓縮為p倍
我們的目標(biāo)是計算一個詞序列的概率,其實對于每個輸入詞,我只需要計算它后面一個詞的輸出概率,而不是全詞典的輸出概率。但softmax函數(shù),需要計算分母,用于歸一化整個概率和為1,所有節(jié)點的值都需要被計算一遍。對于較大的詞典,也就是V較大的時候,比如100w,計算量還是很大的。這里我們把分母的求和看做一個整體Zc,我們想要是Zc是個常數(shù)就好了。
本文引入了Noise Contrastive Estimation,噪聲對比估計,NCE的訓(xùn)練準(zhǔn)則,通過對噪聲(負(fù)樣本)進(jìn)行采樣,把一個多類分類問題,轉(zhuǎn)化成每個類別的二類分類問題。一方面訓(xùn)練的時候不需要計算全部輸出,只需要計算采樣的噪聲和目標(biāo)節(jié)點,節(jié)省訓(xùn)練開銷;一方面測試的時候,分母Zc可以趨近于一個常數(shù),從而只需要計算目標(biāo)節(jié)點的輸出,節(jié)省測試開銷。
于是通過NCE訓(xùn)練,輸出層計算量也壓縮到只有H量級了。系統(tǒng)中每個步驟的計算,都如下表壓縮到一個很低的量級。
下面是實驗結(jié)果。這里用的數(shù)據(jù)集跟之前比較相似,用了switchboard和broadcast news兩個測試集,分別記作swb和bn。首先看看識別率。對于上表,用的是6-元文法模型,識別率分別從7.0降到6.6,以及10.9降到10.0,降幅都是很樂觀的,識別率性能有保證。對于ModelM,提升小一些,但也相對比較穩(wěn)定。
性能問題不大,這篇文章主要看速度。首先是表4,precompute策略和cache策略,分別加速50倍和15-50倍。其中Broadcast news和switchboard用的embedding數(shù)不一樣,所以加速倍數(shù)不一樣。但總體都有不少于100倍的提升,switchboard因為embedding數(shù)較大,更有225倍速的提升。
然后表5是激活函數(shù)的提升,maxout在保證性能的前提下提速1.9倍,prelu性能稍降,6.6到6.7,但提速3.6倍,屆時需要tradeoff一下;
表6是cache的memory消耗,顯然這里對cache的消耗還是大幅提升的,這里cache的size和命中率也是需要tradeoff一下;
最后表7是整體的提升,將5.62的RTF,real time factor,實時率,整體優(yōu)化到1.04,趨近ngram的1.01。實際系統(tǒng)中ngram模型的rtf還可以繼續(xù)優(yōu)化到遠(yuǎn)小于1,對應(yīng)的NNLM也是可以提供one-pass實時識別服務(wù)的。
4 總結(jié)
本屆INTERSPEECH的論文中,語言模型的文章有很多。對這些文章的調(diào)研有助于了解目前實際產(chǎn)品中的性能水平,技術(shù)細(xì)節(jié),很有借鑒意義。通過本文的介紹,希望大家能對語音識別中的語言模型技術(shù)有一定的了解。
注:
下期主題:語音合成技術(shù)
時間:11月15日晚7:30
嘉賓:阿里巴巴iDST算法專家,盧恒
報名鏈接:https://yq.aliyun.com/webinar/play/340
總結(jié)
以上是生活随笔為你收集整理的INTERSPEECH 2017系列 | 语音识别之语言模型技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php7 出现Class 'DOMDoc
- 下一篇: 为Docker Swarm添加调度策略