Google提供了一個在線語音識別的API接口,通過該API可以進行中文、英文等語言的識別。 API地址:http://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=zh-CN&maxresults=1 —參數(shù)解釋 xjerr:錯誤標準 client: 客戶端類型 lang:待識別語言類型,en-US是英文,中文為zh-CN, maxresults:最大返回識別結果數(shù)量 —識別基本流程: 從音頻輸入設備獲取原始音頻并編碼或直接調(diào)用音頻文件。 將音頻POST至接口地址。 分析處理返回的JSON并得出結果。 —請求接口 地址:如前 請求方式:http post 請求數(shù)據(jù):編碼后的音頻數(shù)據(jù) 音頻編碼格式:wav、speex或flac。 音頻采樣頻率:8000Hz、11025Hz、16000Hz、22050Hz、24000Hz、32000Hz、44100Hz、48000Hz —主要優(yōu)點 語音識別引擎龐大,識別精度很高,適用于文本語音識別。提供多國語言的語音識別。 任何平臺都可以進行訪問,容易使用。 —主要缺點 API未開放,未能獲知具體開發(fā)細節(jié)。 識別引擎位于服務器端,識別的速度和網(wǎng)絡質量有關,識別速度較慢。 待識別音頻的格式、大小、時長的限制。 MicrosoftSpeech SDK —Microsoft Speech SDK是微軟公司提供在Windows平臺上開發(fā)語音識別和語音合成應用程序的開發(fā)包,簡稱為SAPI,內(nèi)含SR(Speech Recognition)和SS(Speechsynthesis)引擎,因此可以很方便地在自己的應用程序中添加這些功能。 —該語音引擎支持多種語音的識別和朗讀,包括英文、日文、中文等。微軟推出的應用編程接口API,雖然現(xiàn)在不是業(yè)界標準,但是應用比較廣泛。 —識別基本流程: 從音頻輸入設備獲取原始音頻并編碼或直接調(diào)用音頻文件。 設定語音引擎和識別上下文等內(nèi)容,配置本地訪問屬性。 分析處理得到的文本結果 —請求接口 請求方式:本地訪問 請求數(shù)據(jù):編碼后的音頻數(shù)據(jù) 音頻編碼格式:wav 音頻采樣頻率:8000Hz、11025Hz、16000Hz、22050Hz、24000Hz、32000Hz、44100Hz、48000Hz —主要優(yōu)點 基于COM組件,便于與DirectShow中的組件整合。 語音識別引擎位于本地,便于訪問,識別速度較快。 待識別音頻的大小、時長無限制。 —主要缺點 缺少其他平臺的支持,僅支持windows平臺。 語音識別引擎不夠龐大,識別精準度較低。 僅提供中日英三種語言的語音識別功能。 iFLY Mobile Speech Platform 2.0 —科大訊飛為開發(fā)者提供了語音應用開發(fā)平臺,提供語音合成、語音聽寫、語音識別、聲紋識別等服務,為語音應用開發(fā)愛好者提供方便易用的開發(fā)接口,使得用戶能夠基于該開發(fā)接口進行多種語音應用開發(fā)。 —其主要功能有: 實現(xiàn)基于HTTP協(xié)議的語音應用服務器,支持語音合成、語音聽寫、語音識別、聲紋識別等服務 提供基于移動平臺和PC上的語音客戶端子系統(tǒng),內(nèi)部集成音頻處理和音頻編解碼模塊,提供關于語音合成、語音聽寫、語音識別和聲紋識別完善的API —只需要在http://open.上申請成為開發(fā)者,便可以下載相關的SDK和開發(fā)文檔。 —主要優(yōu)點 支持平臺豐富,各個平臺上都有相應的詳細SDK文檔 語音識別引擎較龐大,對中文的識別精度很高。 具端點檢測功能,便于劃分識別文本的句子。 —主要缺點 識別引擎位于服務器端,須遠程訪問,識別速度較慢。 對語言支持不如Google,目前僅支持中文聽寫。 需要使用1028端口,在某些地方會有使用限制。 當軟件用戶達到百萬次后,需要開始收費。 —測試流程: 從麥克風輸入語音并編碼或直接調(diào)用音頻文件,調(diào)用的音頻文件主要是從電影或是新聞節(jié)目中提取其音頻,前者主要體現(xiàn)識別語音口音的多樣性,后者是體現(xiàn)識別語音口音的正規(guī)性,從麥克風輸入體現(xiàn)對針對某個人特定的口音。主要測試音頻文件格式為wav和flac(flac需要由相同采樣率的wav轉換而來)測試采樣率有8KHz、16KHz、24KHz、32KHz、44.1KHz。 分析各個引擎的識別準確度和花費時間時,選取了5段時長為25S、平均長度為150個中文字符的音頻作為其測試音頻,記錄識別正確的文字和花費時間,準確度以識別正確的文字/文本總字數(shù),同時包含識別出的單獨的字、詞,花費時間對于非本地引擎需要考慮音頻傳送和結果返回的時間。 分析各個引擎中語速對識別準確度的影響,針對同一文本,測試不同語速(分為慢速、中速、快速)的音頻,且時間均控制在25S,僅選取了24KHz和44.1KHz音頻進行測試,因為由測試準確度的測試中,已經(jīng)得出在24KHz和44.1KHz情況下,識別精確度較高。 分別用google、Microsoft和科大訊飛語音識別引擎對測試音頻文件進行測試。其中使用google和科大訊飛引擎需通過訪問其相關服務器,而Microsoft的語音識別引擎則是從本地進行訪問。 對所得結果進行數(shù)據(jù)分析,列出數(shù)據(jù)表格,分析各自引擎的優(yōu)缺點。 — 測試結果: 語速對識別時間的影響 慢速 中速 快速 Google 8s 8.94s 10.125s SAPI 6.06s 6.63s 5.375s 科大訊飛 34.6s 35s 23.6s 語速對識別精度的影響 慢速 中速 快速 Google 78.93% 77.52% 11.58% SAPI 28.7% 42.79% 6.81% 科大訊飛 78.2% 80.48% 15.53% 結果評價: —1.Google Google語音識別引擎可以識別wav格式音頻,但是測試所用wav均為非原始wav故識別精度很低,若將其轉換為flac后則識別精度增加。對于flac格式中文音頻,快速語音準確率達到11.58%,中速語音準確率達到72.52%,平均花費時間8.94S。慢速語音準確率達到78.93%,平均花費時間為8S。對于英文音頻,快速語音準確率達到40.22%,中速語音準確率達到89.2%,慢速語音準確率達到80.58%,平均花費時間各為9.2s,8.5s和9.9s。 不同的音頻采樣率對識別效果和花費時間有影響,識別效果主要體現(xiàn)在音頻中間部分名詞和音頻末端1s的識別結果,于中文而言新聞類平均準確率為72.37%,電影類平均準確率為44.36%。于英文而言,電影類平均準確率為35.3%。平均花費時間采樣率越大,識別時間越短,如24KHz和44.1KHz的同樣內(nèi)容音頻,后者時間少1S左右。 對于google語音識別引擎,由于語速過快會導致識別不準確,會出現(xiàn)多個音識別為一個字的現(xiàn)象,故所用時間較短,但是準確度較差。而語速過慢時,雖然語音的特征更加明晰會使得準確率上升,但是字與字之間的聯(lián)系不密切,會出現(xiàn)本該是一個詞卻識別為同音的兩個字,導致準確率下降,故其平均準確率和中速識別率相當,另一方面是所需識別的字較少,故識別時間相對中速短。 對于視頻流提取的音頻和麥克風輸入人聲的識別,麥克風輸入人聲的平均準確度高于視頻流中的的平均準確度,原因是視頻流中的人聲會帶有各種口音一般帶有背景噪音,而麥克風輸入人聲是單一的穩(wěn)定的,背景噪音較小。準確度順序大致為:新聞類>特定人>電影類,但不能忽略電影中也存在普通話標準發(fā)音。對于時間長度為20s以上的快速語音,測試期間無法識別,一直未能返回正確結果。不知原因。對于特定人輸入的音頻,音頻頭尾都可正確識別。若是輸入視頻流中音頻,頭尾1S的內(nèi)容都不能很好的識別,容易出錯。 Google語音識別引擎數(shù)據(jù)庫豐富,可以識別大部分日常用語,還包括當下流行詞匯,人名,地名等。對于新聞類詞匯判別比較準,而特定專業(yè)類名詞通常以同音字代替。 對于google識別的時間包括網(wǎng)絡發(fā)送音頻數(shù)據(jù)包時間,識別花費時間,返回結果時間。由于引擎位于服務器,需要通過網(wǎng)絡訪問,故網(wǎng)絡質量在識別時間上占據(jù)極重要的位置,識別過程中經(jīng)常會發(fā)生訪問延遲、訪問超時和請求無效等錯誤,故應該在網(wǎng)絡良好的條件下使用google引擎,這也是非本地語音引擎庫的缺點。同時音頻文件超過1M時,也無法正確返回結果,估計是服務器的文件限制。 若考慮語音的精準度,則傾向于選擇google語音識別引擎。 —2.SAPI 微軟的SAPI語音識別引擎可以識別任意采樣率的wav格式音頻,當采樣率比較低時如僅為8KHz,音頻內(nèi)容采樣過程中會缺失,故識別不準確,理論上來說,采樣率越高,識別精度越好。但是采樣率超過一定值后,改進并不明顯。經(jīng)過測試得出以44.1KHz采樣率識別精度較好,且花費時間較短。快速語音準確率為6.81%,中速語音準確率達到42.79%,平均花費時間6.63S。慢速語音準確率達到28.7%,平均花費時間為6.06S。識別效果主要體現(xiàn)在音頻中間部分名詞和音頻末端1s的識別結果,新聞類平均準確率51.48%,電影類平均準確率為41.43%,特定人平均準確率為53.06%。 對于特定人輸入的音頻,音頻頭尾都可正確識別。若是輸入視頻流中音頻,頭尾1S的內(nèi)容容易漏識別,且漏識別內(nèi)容并非不顯示,而是以其他文字代替諸如“他、淡”等字,影響了識別結果的理解。 微軟語音識別引擎數(shù)據(jù)庫位于本地,訪問方便、快捷,無需考慮網(wǎng)絡延遲、音頻文件過大無法傳送等問題。其缺點便是本地數(shù)據(jù)庫的大小限制了其識別精度,需要通過長時間的訓練才有可能達到比較高的精準度,而相比之下google引擎數(shù)據(jù)庫可以收集網(wǎng)絡上的所有資料,訓練文本并不缺乏,容易達到很高的精準度。SAPI可以識別大部分日常用語和常用的新聞詞匯,但是對當下流行詞匯,人名,地名識別精度很低,對特定專業(yè)類名詞通常也以同音字代替。 —3.科大訊飛 科大訊飛語音識別引擎僅可識別wav格式音頻,為了達到理想的效果,有諸如條件限制,如音頻須為采樣率16KHz、每采樣一點16bit、單聲道,且音頻長度小于90s。由于具有端點檢測功能,每句話的長度不宜過長。快速語音準確率達到17.63%,平均花費時間29.2S。中速語音準確率達到80.48%,平均花費時間35S。慢速語音準確率達到78.2%,平均花費時間為34.6S。平均花費時間比另外兩個引擎多了許多,主要原因是其端點檢測功能,故一次能識別的語句長度有限制,需要分段識別,因此加長了識別的時間。 端點檢測的好處是方便音頻中句子的分段,易于對對識別結果的理解。 其引擎庫也是位于服務器,需要通過網(wǎng)絡訪問,識別的時間包括網(wǎng)絡發(fā)送音頻數(shù)據(jù)包時間,識別花費時間,返回結果時間。網(wǎng)絡質量在識別時間上也占據(jù)極重要的位置,且其需要開啟80/1028端口后才能有效使用該引擎。待識別的音頻需要質量清晰,一般對于網(wǎng)上流媒體而言,聲音質量不高,識別較困難。 以上的SAPI和科大訊飛的測試DEMO都是用他們SDK里自帶的。GOOGLE的C#代碼可參照http://www.cnblogs.com/eboard/archive/2012/02/29/speech-api.html 另外介紹關于google語音識別的內(nèi)容還可以參照http://blog.csdn.net/dlangu0393/article/details/7214728本文中有轉載其小部分內(nèi)容。 由于測試樣本數(shù)量并不算多,因此以上測試僅供參考。 |
|