語音程式設計之Speech SDK概述 4

2021-04-06 19:56:32 字數 3216 閱讀 2854

2

.語音識別

api

正如ispvoice

是主要的語音合成介面一樣,

isprecocontext

是語音識別的主要介面。與

ispvoice

一樣,它也是一種

ispeventsource

介面,提供了為請求的語音識別事件接收通知訊息的基本載體。

有兩種不同的語音識別引擎(

isprecognizer

),即共享語音識別引擎(

shared speech recognition engine

)和程序內語音識別引擎(

inproc speech recognition engine

)。應用程式可以選擇其中的一種。

一般推薦使用共享語音識別引擎,這種引擎能被多個應用程式共享。建立共享

isprecognizer

的isprecocontext

介面很簡單,應用程式只需指定引數為元件的

clsid_spsharedrecocontext

並呼叫com

的cocreateinstance

函式即可。這時,

sapi

將設定音訊輸入流為

sapi

的預設音訊輸入流。

對於單獨執行於乙個系統中的大型伺服器應用程式,其執行效率是很重要的。這時使用程序內語音識別引擎更合適。使用程序內語音識別引擎有

3個步驟:首先,應用程式需指定引數為元件的

clsid_ spinprocrecoinstance

並呼叫com

的cocreateinstance

函式來建立其自己的程序內語音識別

isprecognizer

;其次,應用程式需呼叫

isprecognizer::setinput

方法(參見

ispobjecttoken

介面的說明)來設定音訊輸入流;最後,應用程式可呼叫

isprecognizer::createrecocontext

來獲取isprecocontext

介面。

下一步需要為應用程式感興趣的事件設定通知訊息。

isprecognizer

也是一種

ispeventsource

介面,自然是一種

ispnotifysource

介面,因此,應用程式能夠從其

isprecocontext

介面中呼叫

ispnotifysource

的方法來指定

isprecocontext

所需的訊息應通知到何處。呼叫

ispeventsource::setinterest

方法可以設定什麼樣的事件需要被通知。最重要的事件是

spei_recognition

,它標識了

isprecognizer

已從isprecocontext

中識別了一些語音。

speech sdk

文件中speventenum

的說明提供了其他語音識別事件的詳細說明。

最後需要說明的是,應用程式必須建立、裝載並啟用乙個

isprecogrammar

介面。該介面從本質上說明了什麼語音型別,即口述或命令和控制語法。應用程式首先應呼叫

isprecocontext::creategrammar

方法建立乙個

isprecogrammar

介面。然後裝載合適的語法,呼叫

isprecogrammar::loaddictation

方法可裝載口述語法,呼叫

isprecogrammar::loadcmd***

方法可裝載命令和控制語法。最後,為了啟用語法並啟動識別,應用程式應該呼叫

isprecogrammar::setdictationstate

方法設定口述狀態,或者呼叫

isprecogrammar::setrulestate

方法或isprecogrammar::setruleidstate

方法設定命令和控制狀態。

當應用程式通過請求的通知機制得到通知訊息時,

spevent

結構的lparam

成員包含了乙個

isprecoresult

介面,應用程式能從中確定用

isprecocontext

中的哪個

isprecogrammar

介面已識別了什麼語音。

無論共享的還是程序內的

isprecognizer

介面都能擁有多個與其關聯的

isprecocontexts

介面,並且每乙個介面都能通過自己的事件通知方式得到相應的訊息。可以從乙個

isprecocontext

介面中建立多個

isprecogrammars

介面,不同的介面可用於識別不同的語音型別。

進行text-to-speech

miscrosoft speech sdk

,並將它安裝到你的系統中。

。至筆者編寫本章時為止,最新的

speech sdk

版本是5.1

speechsdk51.exe

是乙個可執行的檔案包壓縮檔案。執行它,將安裝檔案釋放到乙個臨時目錄中,執行其中的

microsoft speech sdk 5.1.msi

,將speech sdk

安裝到相應的目錄中。一般選用預設的安裝目錄(

c:/program files/microsoft speech sdk 5.1)。

speech sdk

支援的預設語言是英語,即安裝

speech sdk

speechsdk51langpack.exe

。執行它,將安裝檔案釋放到乙個臨時目錄中,執行其中的

microsoft speech sdk 5.1 language pack.msi

,將中、日文支援安裝到系統中。

安裝好

speech sdk

後,語音控制程式將被新增到系統的控制面板中。利用該控制程式可以設定語音識別和文字

-語音轉換的各項屬性,包括語言

/語音、語速和輸入裝置等,如圖

11-2

所示。

程式設計之我見

激情不夠,活也不行 部分專注專案,理論不行。或當下的技術棧完全可以勝任工作,拿到可觀的薪水,溫水之中做乙隻安逸的青蛙。學好程式設計必須富有激情,充滿了性趣。理論 沒有理論支撐,實踐只是機械性的死記硬背 實踐 將理論穿插進實踐,將理論都玩明白,姿勢要舒服。經驗 遇到的問題多了,解決的多了,經驗就多了。...

網路程式設計之Socket程式設計

對 tcp ip udp socket 程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission co...

網路程式設計之socket程式設計

大多數專案是在linux下開發伺服器端,而在windows下開發客戶端,需要經常在兩大平台之間進行切換,單獨學習一種平台沒有實踐意義。值得欣慰的是,兩大平台下的 socket 程式設計非常相似,並不會增加多少學習成本。網路程式設計就是編寫程式使兩台聯網的計算機相互交換資料。這就是socket的全部內...