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的全部內...