python語音識別框架_橫評:五款免費開源的語音識別工具

編者按:本文原作者 Cindi Thompson,美國德克薩斯大學奧斯汀分校(University of Texas at Austin)計算機科學博士,數據科學咨詢公司硅谷數據科學(Silicon Valley Data Science,SVDS)首席科學家,在機器學習、自然語言處理等領域具有豐富的學術研究和產業界從業經驗。雷鋒網編譯。

作為 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 具體應用和如何將神經網絡應用于語音識別的更多文章,歡迎大家繼續關注。

來源:kdnuggets,雷鋒網編譯

雷鋒網(公眾號:雷鋒網)相關閱讀:

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/537145.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/537145.shtml
英文地址,請注明出處:http://en.pswp.cn/news/537145.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

csharp read excel file get sheetName list

1 /// <summary>2 /// 3 /// 塗聚文4 /// 201208035 /// Geovin Du6 ///找到EXCEL的工作表名稱 要考慮打開的文件的進程問題7 /// </summary>8 /// <param name"filename">…

Spring Bean的生命周期以及IOC源碼解析

IOC源碼這一塊太多只能講個大概吧&#xff0c;建議還是去買本Spring IOC源碼解析的書來看比較好&#xff0c;我也是自己看源代碼以及視頻整理的筆記 Bean的生命周期大概可以分為四個階段&#xff0c;具體的等會再說&#xff0c;先看看IOC的源碼吧 1、bean的創建 2、bean的屬…

python3繪圖_python3繪圖示例2(基于matplotlib:柱狀圖、分布圖、三角圖等)

#!/usr/bin/env python# -*- coding:utf-8 -*-from matplotlib import pyplot as pltimport numpy as npimport pylabimport os,sys,time,math,random# 圖1-給已有的圖加上刻度filer‘D:\jmeter\jmeter3.2\data\Oracle數據庫基礎.png‘arrnp.array(file.getdata()).reshape(fil…

bzoj4152-[AMPPZ2014]The_Captain

Description 給定平面上的n個點&#xff0c;定義(x1,y1)到(x2,y2)的費用為min(|x1-x2|,|y1-y2|)&#xff0c;求從1號點走到n號點的最小費用。 Input 第一行包含一個正整數n(2<n<200000)&#xff0c;表示點數。 接下來n行&#xff0c;每行包含兩個整數x[i],yi&#xff0c;…

python日志統計_python試用-日志統計

最近兩天嘗試用python代替bash寫Linux Shell腳本來統計日志。發現python寫起來比bash更簡單和容易閱讀&#xff0c;發現不少驚喜。所以寫了一個粗糙的腳本來統計日志。目標1、通過簡單命令和腳本統計事件發生數2、日志限定文本類型假定環境日志文件&#xff1a;1.logtest:aaa,1…

Spring AOP兩種使用方式以及如何使用解析

AOP是一種面向切面編程思想&#xff0c;也是面向對象設計&#xff08;OOP&#xff09;的一種延伸。 在Spring實現AOP有兩種實現方式&#xff0c;一種是采用JDK動態代理實現&#xff0c;另外一種就是采用CGLIB代理實現&#xff0c;Spring是如何實現的在上篇已經講到了Spring Be…

如何用python生成可執行程序必須經過_python怎么生成可執行文件

.py文件&#xff1a;對于開源項目或62616964757a686964616fe58685e5aeb931333363393664者源碼沒那么重要的&#xff0c;直接提供源碼&#xff0c;需要使用者自行安裝Python并且安裝依賴的各種庫。(Python官方的各種安裝包就是這樣做的).pyc文件&#xff1a;有些公司或個人因為機…

Jmeter 老司機帶你一小時學會Jmeter

Jmeter的安裝 官網下載地址&#xff1a;http://jmeter.apache.org/download_jmeter.cgi 作為Java應用&#xff0c;是需要JDK環境的&#xff0c;因此需要下載安裝JAVA&#xff0c;并且作必要的的環境變量配置。 一、bin目錄 examples:    目錄中有CSV樣例 jmeter.bat/jmeter…

MongoDB位運算基本使用以及位運算應用場景

最近在公司業務上用到了二進制匹配數據&#xff0c;但是MongoDB進行二進制運算&#xff08;Bitwise&#xff09;沒用過&#xff0c;網上博客文章少&#xff0c;所以就上官網看API&#xff0c;因此記錄一下&#xff0c;順便在普及一下使用二進制位運算的一些應用。 在MongoDB的…

好用的下拉第三方——nicespinner

1.簡介 GitHub地址&#xff1a;https://github.com/arcadefire/nice-spinner Gradle中添加&#xff1a; allprojects {repositories {...maven { url "https://jitpack.io" }} }dependencies {implementation com.github.arcadefire:nice-spinner:1.3.7 }2.使用 xml文…

Mybatis配置文件參數定義

官網有時候進不去&#xff0c;所以就記錄一下Mybatis的配置文件的各項參數定義&#xff0c;大家也可以上官網查詢&#xff0c;官方文檔&#xff0c;進不進的去看各自的緣分了 properties 定義配置&#xff0c;在這里配置的屬性可以在整個配置文件使用&#xff1b;可以加載指定…

python和java后期發展_Python與java的發展前景誰最大

Python和Java是目前IT行業內兩大編程語言&#xff0c;很多人都喜歡拿來比較&#xff0c;一個是后起之秀&#xff0c;潛力無限&#xff1b;一個是行業經典&#xff0c;成熟穩定。對于許多想從事IT行業的同學來說&#xff0c;這兩門語言真的很難抉擇。那么&#xff0c;Python和Ja…

JDK源碼學習筆記——Enum枚舉使用及原理

一、為什么使用枚舉 什么時候應該使用枚舉呢&#xff1f;每當需要一組固定的常量的時候&#xff0c;如一周的天數、一年四季等。或者是在我們編譯前就知道其包含的所有值的集合。 利用 public final static 完全可以實現的功能&#xff0c;為什么要使用枚舉&#xff1f; public…

Mybatis源碼日志模塊分析

看源碼需要先下載源碼&#xff0c;可以去Mybatis的github上的倉庫進行下載&#xff0c;Mybatis 這次就先整理一下日志這一塊的源碼分析&#xff0c;這塊相對來說比較簡單而且這個模塊是Mybatis的基礎模塊。 之前的文章有談到過Java的日志實現&#xff0c;大家也可以參考一下&…

python手機端給電腦端發送數據_期貨交易軟件有哪些比較好用?分手機端和電腦端...

一、電腦端交易軟件期貨電腦端交易軟件目前市場上用的最多的是文華財經和博易大師&#xff0c;這兩個軟件都是免費交易使用的。從投資者使用角度來看&#xff0c;目前電腦端文華財經的評價比博易大師高一些。當然每個投資者有自己的使用習慣&#xff0c;博易大師也有自己優點&a…

Find the Difference(leetcode389)

2019獨角獸企業重金招聘Python工程師標準>>> Given two strings s and t which consist of only lowercase letters. String t is generated by random shuffling string s and then add one more letter at a random position. Find the letter that was added in …

Mybatis源碼之數據源模塊分析

先來看看java純jdbc查詢數據的示例&#xff1a; try {//加載對應的驅動類Class.forName("com.mysql.cj.jdbc.Driver");//創建連接Connection connection DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?serverTimezoneUTC", "roo…

reactnative 獲取定位_[RN] React Native 獲取地理位置

import React, {Component} from react;import {StyleSheet, Text, View}from react-native;exportdefault classTestGeo extends Component {state{longitude:,//經度latitude: ,//緯度city: ,district:,street:,position:,//位置名稱};componentWillMount () >{this.getPo…

第二沖刺階段第三天

查閱資料&#xff0c;修改控件界面轉載于:https://www.cnblogs.com/gyy0/p/10066452.html

Mybatis源碼之緩存模塊分析

緩存這個東西在很多應用中都能看到它們的身影&#xff0c;這次就講講在Mybatis中的緩存是怎么應用的&#xff0c;雖然說吧Mybatis中的緩存基本不怎么用&#xff0c;用的更多是第三方組件redis、MongoDB、MemCache等等。 Mybatis的緩存是基于Map實現的&#xff0c;從緩存中讀寫…