兼容PyTorch!語音辨識大佬Daniel Povey正式發表新一代框架Kaldi!
琰琰 / 何渝婷編譯
2021-09-02 19:01

Daniel Povey日前以小米集團首席語音科學家的身份,正式推出了新一代Kaldi。

Daniel Povey是語音辨識領域的執牛耳者,他主要開發和維護的開源工具Kaldi,是業界公認的語音辨識框架的基石,他也被稱為Kaldi之父。

2019年Daniel離任約翰霍普金斯大學語言和語音處理中心教職,在 Facebook、美團、滴滴、快手等一眾互聯網巨頭拋來的橄欖枝中,選擇了小米,開始帶領小米語音技術團隊開發新一代Kaldi。

加入小米後,業界開發者對Daniel的研究動向一直高度關注。

日前,Daniel亮相發表會現場,宣布新一代Kaldi完成了所有子項目的佈局。他表示:「新一代Kaldi的目標,不僅僅是趕上或者稍微領先現有語音辨識庫,而是要從根本上改變語音辨識的實現方式。」

據悉,經過近一年多的技術研發,Daniel團隊完成了所有模塊的研發和更新,新一代Kaldi在Librispeech數據集上的詞錯率降到了2.57%;通過全新代碼庫解決了Kaldi靈活性不足、體量過大等問題;作為核心部件的k2,不僅可以用來做語音辨識,也可以用來做手寫文字辨識等其他任務。

兼容PyTorch,提高辨識精度

Kaldi集成了多種語音辨識模型,包括隱藏式馬可夫模型和最新的深度學習神經網路,自2011年發布以來下載量超過了兩萬多次,無論是工業界還是學術界,幾乎所有的語音團隊都在使用Kaldi引擎來開發智慧解決方案,包括MIT、哈佛、清華、微軟、谷歌、Facebook等等。

作為語音辨識領域的「老前輩」,Kaldi也急需更新迭代。

Daniel在媒體見面會上坦言,初版Kaldi的舊程式碼資料庫已經難以滿足機器學習發展的需求,用戶需要更輕便、更靈活的源代碼,也需要兼容 PyTorch等主流框架的工具包。

新一代Kaldi的研發工作從2019開始啓動,去年已經完成了k2和Lhotse模塊的研發工作。Daniel還在2020 MIDC大會上進行了展示,不過當時Icefall模塊還只是一個初步概念,今年研發團隊進一步完善了k2和Lhotse模塊, 並基於二者正式發布Icefall項目。

Daniel介紹說,與初代Kaldi相比,新一代Kaldi是一個全新的程式碼資料庫,主要是由C++、CUDA寫就;支持Python調用;後端也由PyTorch取代了此前的自定義程式碼。

發表會現場,Daniel團隊不僅展示了如何使用k2和Lhotse,來實現現有的各種不同的語音辨識模型,如基於Transformer/Conformer的CTC和LF-MMI等,更著重展示了k2何以能從根本上改變人們實現語音辨識的方式。

「我們實現了多輪解碼(mutiple pass decoding)的示例,以及我們稱之為『雙向建模』(bidirectional modeling)的模型」。Daniel興奮地表示,基於這種多層模型的優勢,新一代Kaldi可以大大提高語音辨識模型的建模能力,從而降低詞錯誤率。目前,新一代Kaldi在LibriSpeech數據集上的詞錯誤率為2.57%。

值得一提的是,Daniel團隊在k2中實現了所有的FSA操作的可導性,用戶僅使用幾十行程式碼,就可以完成複雜的多層模型結構。同時,他們還為用戶提供了極大的「自定義」空間,諸如在網路中加入phone的embedding資訊,支持帶置信度的辨識等用戶自己的各種想法,都能夠基於k2來實現。

Daniel表示,希望通過新一代Kaldi,能為語音辨識領域打開一扇嶄新的大門。

引入Python,改善靈活性

新一代Kaldi分為Lhotse、Icefall和k2三個部分,Daniel Povey博士在發表會上表示,新一代Kaldi的獨立設計是為了降低耦合性,方便用戶使用。更重要的是,這樣有助於擴展了組件使用的靈活性。

例如,用作數據準備的Lhotse,既可以用在Icefall項目裡,也可以用在任意其他語音辨識庫裡,來處理音頻和文本數據。Daniel團隊在發表會上介紹了Lhotse、Icefall和k2三個部分的更新細節。

Lhotse拋棄了傳統的shell腳本,採用了更加方便易用的Python語言。通過通用且不失靈活性的接口設計,滿足了包括語音辨識、語音合成等多種語音任務的需求,方便用戶基於Lhotse可以方便地實現針對自己特定任務的接口,操縱各種不同的音訊元數據和文本。

Lhotse引入了Audio Cuts的概念,將訓練數據自動地組織為一組組Cuts,並基於這種表示,提供了on-the-fly的數據混合,裁剪,增強和特徵提取等操作,從而在不影響數據處理效率的前提下,降低了數據儲存所需空間。 

此外,Lhotse還提供了很多公開數據集的數據處理腳本,用戶可以直接使用這些腳本,來進行相關語音任務的數據處理工作,大大降低了用戶在某個數據集上進行實驗的前期成本。

「相信在不久的將來,隨著新一代Kaldi的推廣和普及,Lhotse甚至有可能成為語音領域使用最為廣泛的數據準備工具。」Daniel期待地表示。

作為訓練腳本的集合,同Lhotse一樣,Icefall也是一個純Python項目。

用過Kaldi的人都知道,Kaldi裡有大量基於不同數據集的示例腳本,顯著降低了用戶的學習成本。

但這同時也帶來一個缺點:示例腳本集合太過龐大,程式碼耦合過於緊密,導致維護成本較高。

考慮到這一點,Daniel表示Icefall並不是對大量腳本的盲目集合,而是在提取公共組件的同時,將不同數據集的示例腳本進行獨立組織,以方便用戶的學習和使用。

此外,由於將數據準備部分單獨放在Lhotse項目中,核心計算部分單獨放在k2中,Icefall項目只需要關注語音辨識模型的結構定義部分,降低了整個語音辨識過程的耦合性,方便了網路結構的復用。

k2是新一代Kaldi的核心,它的貢獻在於,將加權有限狀態轉換器(Weighted Finite State Transducers, WFST)和相關算法無縫地集成到基於Autograd的機器學習工具包中,如PyTorch(已完成支持)和TensorFlow。

WFST是語音辨識領域最為核心的數據結構,可以用來建構諸如「音標->詞->句子」的狀態轉換概率圖。

支持WFST可導意味著我們可以做很多以前很難做到,甚至做不到的事情,如消除以往語音辨識任務中訓練跟解碼過程不匹配的問題、多輪(可求導)的語音辨識過程、在聲學網路中嵌入任意輔助資訊等。

同時,k2也支持很多現有的語音辨識模型,如CTC、LF-MMI、RNN-T等。

值得一提的是,去年Facebook發布了類似於k2的圖網路建模GTN框架。與之相比,k2實現了更多的WFST相關算法,並且能夠高效地支持GPU(GTN目前只支持CPU)。GPU實現,意味著語音辨識模型的訓練速度更快,解碼速度更高效。新一代kaldi的解碼速度已經是即時的300倍左右。此外,k2在語音辨識的基礎上,還可以應用於手寫文字辨識等其他seq-to-seq的任務。

全面賦能小米語音產品

在萬物互聯的時代,智慧語音交互扮演者越來越重要的角色。嗅覺敏銳的小米早在2017年已經注意到到這片藍海市場,在Daniel加盟之前,小米已經逐步搭建了自己的語音技術團隊,並推出了智慧語音產品「小愛音箱」。2019年年初,小米創始人雷軍提出「手機+AIoT」雙引擎發展戰略,為小米在語音辨識領域的發展指明了一條可行路徑。

「新一代Kaldi或將在明年之前,將全部應用到小米所有的智慧語音產品中」,Daniel向媒體表示。他說,新一代Kaldi能夠適用各種場景的不同語音模型,如遠近場語音喚醒、離線上語音辨識、說話人辨識等通用模型,以及口語評測、語種辨識、語音情緒辨識等。

以小米小愛為例,「通過它,用戶可以連接到各種各樣的AIoT設備並與它們產生互動:智慧音箱、手機、電視、智慧手錶、兒童故事機、車載後視鏡等。」

不僅是小米,所有企業、開發者和普通用戶都可以繼續享受新一代Kaldi的核心技術。Daniel表示,當初之選擇加盟小米,也是因為小米承諾Kaldi可以繼續作為開源項目。「小米是一家穩定的公司,重視開源開放,而且允諾我一直做開源項目,這對於我來說是最好的選擇」

Kaldi從誕生之日起,就是一款開源語音辨識工具包。Daniel一直堅持開源工作,鼓勵更廣泛的用戶自由使用、複製以及修改源程式碼,並推動智慧語音技術的發展。

新一代Kaldi依舊採用了高效的C++程式碼實現,由於將k2的C++程式碼都包裝到了Python,模型的訓練迭代都可以使用純Python程式碼完成。

Daniel表示,基於Icefall中的示例腳本,開發者們可以很容易地基於自己公司產品的數據集進行修改,進而快速地搭建線上數據回饋和模型自動迭代更新的流程,這將大大縮短模型更新的週期。

隨著新一代Kaldi的發布和其在小米產品線的逐步落地,相信在不久的將來,小米將和其他公司一起,為普通用戶帶來更加完善的AIoT產品體驗。

正如崔寶秋博士在去年舉行的Kaldi線下交流會中所講,這將是圍繞Kaldi的「四贏」局面:Kaldi項目贏、小米語音贏、全球的Kaldi社群贏,所有跟Kaldi相關的中小型公司贏!

關於Daniel

Daniel可以說是語音辨識領域的殿堂級人物。除了開發kaldi外,他還對語音辨識做出了許多科學貢獻,包括助力判別訓練(現在稱為序列訓練)的早期發展等。從1999年發布語音辨識研究成果以來,其論文被引用次數超過了30000次。也因如此,Daniel從約翰斯·霍普金斯大學離職後,引發了全球科技巨頭的一場人才爭奪戰。

Daniel在2012年加入約翰斯·霍普金斯大學,擔任語言和語音處理中心任副教授,在此之前,他在IBM研究院、微軟研究院從事電腦語音辨識研究。

2019年10月,Daniel正式加入小米公司,擔任小米集團首席語音科學家。

本文為雷鋒網授權刊登,原文標題為「兼容PyTorch!語音識別大牛Daniel Povey正式發佈新一代框架Kaldi!