1. 程式人生 > 資訊 >語音識別大拿 Daniel Povey 釋出新一代框架 Kaldi,有望年內應用於小米產品

語音識別大拿 Daniel Povey 釋出新一代框架 Kaldi,有望年內應用於小米產品

8 月 31 日,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 的任務。

新一代 Kaldi 依然開源

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

以小米小愛為例,“通過它,使用者可以連線到各種各樣的 AIoT 裝置並與它們產生互動: 智慧音箱、手機、電視、智慧手錶、兒童故事機、車載後視鏡等。”

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

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

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

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

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

關於 Daniel

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

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

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