橫向對比5大開源語音識別工具包,CMU Sphinx最佳

李澤南發表於2017-06-26
目前開源世界裡存在多種不同的語音識別工具包,它們為開發者構建應用提供了很大幫助。這些工具各有哪些優劣?資料科學公司 Silicon Valley Data Science 為我們帶來了 5 種流行工具包的深度橫向對比。此前,他們曾為我們帶來過流行深度學習框架的對比:《從 TensorFlow 到 Theano:橫向對比七大深度學習框架》。

橫向對比5大開源語音識別工具包,CMU Sphinx最佳

作為深度學習研發團隊的一員,我們對於迴圈神經網路(RNN)和其他語音識別需要用到的方法都有所涉及。在幾年之前,業內最佳的語音識別系統還是基於語音分析的方法,包含發音、聲學和語言模型。通常,這些方法包含 n-gram 語言模型,以及隱馬爾科夫模型(HMM)。在此,我們以這種模型作為基準,試圖對比目前流行的一些語音識別方法。迄今為止,我們很難看到有人對開源語音識別模型進行過真正對比,希望本文可以拋磚引玉,為大家帶來一些幫助。

本文回顧了使用傳統 HMM&n-gram 語言模型的開源語音識別工具包。對於使用者而言,大多數人都會知道 Siri 或 Cortana 這樣的消費產品。而對於研發工程師來說,更靈活、更具專注性的解決方案則更符合需求,很多公司都會研發自己的語音識別通路。以下是目前開源世界上出現的流行工具包,以及我們對它們的各項評價。

橫向對比5大開源語音識別工具包,CMU Sphinx最佳

開源免費語音識別工具包橫向對比

本次分析基於 svds 開發者的主觀經驗和開源社群的已有訊息。上表列出了目前大部分流行的語音識別軟體(但略微超出開源的範疇)。2014 年 Gaida 等人的一篇論文評估了 CMU Sphinx、Kaldi 和 HTK。其中 HTK 嚴格意義上來說並不是開源的,因為其程式碼並不能重用或作為商業用途使用。

程式語言

因為使用者使用語言的情況各不相同,你可能會對特定的工具包有自己的偏好。以上工具除了 ISIP 以外都有 Python 的封裝,雖然在一些情況下,Python 封裝並不包括核心程式碼的全部功能。CMU Sphinx 也包含了其他幾種程式語言,如 Java 和 C。

開發工作

在學術研究中,所有列出的專案都包含它們的來源。CMU Sphinix,顯而易見,從它的名字就能看出來是卡內基梅隆大學的產物。它已經以某些形式存在了 20 年了,現在它在 Github(C (https://github.com/cmusphinx/pocketsphinx) 版本和 Java (https://github.com/cmusphinx/sphinx4) 版本)和 SourceForge (https://sourceforge.net/projects/cmusphinx/) 上都開源了,而且兩個平臺上都有最新活動。Github 上的 Java 版本和 C 版本都只有一個貢獻者,但是這並不影響此專案的歷史真實性(在 SourceForge repo 上有 9 個管理人員還有很多開發者)。

Kaldi 從 2009 年的研討會起就有它的學術根基了,現在已經在 GitHub (https://github.com/kaldi-asr/kaldi) 上開源,有 121 名貢獻者。HTK 始於 1989 年的劍橋大學,已經商用一段時間了,但是現在它的版權又回到了劍橋大學並且已經不是開源軟體了。它的最新版本更新於 2015 年 12 月,先前釋出於 2009 年。Julius (http://julius.osdn.jp/en_index.php) 起源於 1997 年,最後一個主要版本釋出於 2016 年 9 月,有些活躍的 Github repo 包含三個貢獻者,現在已經不大可能反應真實情況了。ISIP 是第一個最新型的開源語音識別系統,源於密西西比州立大學。它主要發展於 1996 到 1999 年間,最後版本釋出於 2011 年,但是這個專案在 Github 出現前就已經不復存在了。

橫向對比5大開源語音識別工具包,CMU Sphinx最佳

社群

這裡我們關注一下郵件、討論群還有開發者團體的情況。CMU Sphinx 在它的 repos 上有著線上交流論壇和積極的關注。然而,我們想知道複製 SourceForge 和 GitHub 的 repo 是否阻礙了更多的投稿。相比之下,Kaldi 不僅有著論壇和討論群,還有一個活躍的 GitHub repo。HTK 也有討論群但是沒有開放資源庫。Julius 網站上的使用者論壇壞掉了,但是在日本站裡可能有更多的資訊。ISIP 主要用於教育目的,而且郵件清單檔案現在已經不再實用。

教程和例子

CMU Sphinx 的教程非常具有可讀性,易於學習,Kaldi 的文件也很全面,但似乎更難理解。不過 Kaldi 的內容覆蓋了語音識別中的語音和深度學習方法。如果你缺乏語音識別的知識,HTK 的教程文件(註冊使用者可看)對這一領域有詳盡的描述。Julius 專案聚焦於日語,最新的資料就是 Japanese2 (https://www.svds.com/open-source-toolkits-speech-recognition/#fn2),但是他們也主動地譯成英文,並且也提供相關資料;這裡列有一些執行語音識別的例項(https://github.com/julius-speech/dictation-kit)。ISIP 也有一些資料,但是有些難以瀏覽。

訓練模型

即使你使用這些開源工具的最大理由是訓練特定的識別模型,其他語音功能也會是它們吸引人的地方。CMU Sphinx 包含英語和很多其他即開即用的模型,在該專案 GitHub 的 redme 上,我們可以很容易地找到它們。而 Kaldi 對現有模型進行解碼的指令深深地隱藏在文件中,我們最終在 egs/voxforge 子目錄的 repo 下發現了一個英語 VoxForge 資料集訓練後的模型,而識別功能在 online-data 子目錄下。其他三個軟體包沒有容易找到的功能,但它們至少都有適配 VoxForge 格式的簡單模型,後者是一個語音識別資料和訓練模型的著名眾包網站。

目前,這項研究還沒有加入神經網路語音識別的內容,以上的對比還處於初步階段,歡迎大家的討論。

原文連結:http://www.kdnuggets.com/2017/03/open-source-toolkits-speech-recognition.html


相關文章