天天看點

橫評:五款免費開源的語音識别工具

作為 svds 研究團隊的成員,我們會經常接觸各種不同的語音識别技術,也差不多見證了語音識别技術近幾年的發展。直到幾年之前,最先進的語音技術方案大多都是以語音為基礎的(phonetic-based),包括發音模型(pronunciation models),聲學模型(acoustic modelling)和語言模型(language model)等。通常情況下,這些模型大多都是以隐馬爾可夫模型(hmm)和 n-gram 模型為核心的。未來,我們希望以這些傳統模型為基礎,探索一些諸如與百度 deep speech 等最新的語音識别系統相結合的新技術。當然,目前網際網路上可以找到許多針對這些基礎模型進行解釋、彙總的文章和資料,但針對它們之間的差别和特點展開闡述的卻并不多。

為此,我們對比了五款基于 hmm 和 n-gram 模型的語音識别工具:cmu sphinx,kaldi,htk,julius 和 isip。它們都是開源世界的頂級項目,與 dragon 和 cortana 等商業語音識别工具不同,這些開源、免費的工具可以為開發者提供更大的自由度以及更低的開發成本,是以在開發圈始終保持着強大的生命力。

需要提前說明的是:以下分析大多來源于我們的主觀經驗,同時也參考了網際網路上的其他資訊。而且這篇文章也并非一個覆寫所有語音識别開源工具的彙總類文章,我們隻是對比了其中五款相對更主流的産品。另外,htk 并不是嚴格開源的,它的代碼并不能重新組織釋出,也不能用于商業用途。

想知道更多語音識别工具的使用者請點選以下連結,其中列出了幾乎所有開源/非開源的語音識别工具,非常全面。

橫評:五款免費開源的語音識别工具

根據你對不同程式設計語言的熟悉程度,你可能會更偏愛某一種工具。如上圖所示,這裡列出的五款工具中,除了 isip 隻支援 c++ 之外,全都支援 python。你可以直接在它們的官網找到不同語言對應的下載下傳連結。不過,python 版有可能并不會覆寫工具包的全部功能,有些功能還可能是為其他語言的特性單獨設計的。另外值得注意的是,cmu sphinx 還支援 java、c 和其他更多語言。

這裡列出的五個項目均源于學術研究。

從名字也能看出,cmu sphinx 是一款源于卡内基梅隆大學的産品。它的研發曆史大約可以追溯到 20 年前,目前在 github 和 sourceforge 平台同步更新。在 github 平台有 c 和 java 兩個版本,而且據說分别隻有一個管理者維護。但在 sourceforge 平台卻有 9 個管理者和十幾個開發者。

kaldi 源于 2009 年的一場研讨會,代碼目前在 github 平台開源,共有 121 位貢獻者。 

htk 始于 1989 年的劍橋大學,曾一度商業化,但目前又回歸劍橋。如前所述 htk 現在并不是一款嚴格意義的開源工具,而且更新緩慢(雖然它的最新版本更新于 2015 年 12 月,但前一個版本的更新時間卻是 2009 年,中間隔了差不多 6 年時間)。

julius 始于 1997 年,最後一個主要版本更新于 2016 年 9 月,據稱其 github 平台有三名管理者維護。

isip 是第一個比較先進的開源語音識别系統,起源于密西西比州。它主要在 1996 年到 1999 年之間研發,最後一個版本釋出于 2011 年,在 github 平台出現之前就已經停止更新了。

橫評:五款免費開源的語音識别工具

這一部分我們考察了上述五個工具的郵件和社群讨論情況。

cmu sphinx 的論壇讨論熱烈,回帖積極。但其 sourceforge 和 github 平台存在許多重複的 repository。相比之下,kaldi 的使用者則擁有更多互動方式,包括郵件、論壇和 github repository 等。htk 有郵件清單,但沒有公開的 repository。julius 官網上的論壇連結目前已經不可用,其日本官網上可能有更詳細的資訊。isip 主要用于教育目的,其郵件清單目前已不可用。

cmu sphinx 的文檔簡單易讀,講解深入淺出,且貼近實踐操作。

kaldi 的文檔覆寫也很全面,但是在我看來更難了解。而且,kaldi 同時包括了語音識别解決方案中的語音和深度學習方法。

如果你并不熟悉語音識别,那麼可以通過對 htk 官方文檔(注冊後可以使用)的學習對該領域有一個概括的認識。同時,htk 的文檔還适用于實際産品設計和使用等場景。

julius 專注于日語,其最新的文檔也是日語,但團隊正在積極推動英文版的釋出。

以下連結提供了一些基于 julius 的語音識别樣例。

最後是 isip,雖然它也有一些文檔,但是并不系統。

即使你使用這些開源工具的主要目的是想要學習如何去訓練一個專業的語音識别模型,但一個開箱即用的預先訓練好的模型仍然是一個不可忽略的優點。

cmu sphinx 包括英語、法語、西班牙語和意大利語在内的諸多可以直接使用的模型,詳情可以參考它的說明文檔。

kaldi對現有模型進行解碼的指令深藏在文檔中,不太容易找到,但我們仍然發現了貢獻者在 egs/voxforge 子目錄下基于英文 voxforge 語料庫訓練好的一個模型,并且還可以通過 online-data 子目錄下的一個腳本直接運作。詳情可以參考 kaldi 項目的 repository。

我們沒有深入挖掘其他三個軟體包的模型訓練情況,但它們應該至少包含一些簡單可用的預訓練模型,而且與 voxforge 相容(voxforge 是一個非常活躍的衆包語音識别資料庫和經過訓練的模型庫)。

未來我們将陸續推出關于 cmu sphinx 具體應用和如何将神經網絡應用于語音識别的更多文章,歡迎大家繼續關注。

本文作者:恒亮

繼續閱讀