首先添加一個(gè)系統(tǒng)的語(yǔ)音COM組件的引用microsoft speech object library然后在程序中聲明一個(gè)語(yǔ)音類dim RC As SpeechLib.SpSharedRecoContext這個(gè)類有一些事件,如果你要處理它的一些事件,可以用withevent來(lái)聲明然后在窗體LOAD事件或你需要的地方先創(chuàng)建一個(gè)實(shí)例RC = New SpeechLib.SpSharedRecoContext當(dāng)一個(gè)RC被實(shí)例化后,系統(tǒng)就會(huì)運(yùn)行語(yǔ)音識(shí)別程序.前提是你的系統(tǒng)已經(jīng)正確安裝這個(gè)功能.一般默認(rèn)就已經(jīng)安裝好的.其次提醒一下,WIN7的語(yǔ)音識(shí)別比XP的好N倍.從閱讀到偵聽(tīng)都好很多.然后就可以在你需要閱讀的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚舉,用來(lái)標(biāo)識(shí)系統(tǒng)用前臺(tái)還是后臺(tái)或其他方式來(lái)閱讀文字,簡(jiǎn)單的來(lái)說(shuō)就是閱讀的時(shí)候不會(huì)卡住你的程序.你可以選其他的枚舉來(lái)試試作用.以上為閱讀部分.如果需要程序聽(tīng)你說(shuō)話,則需要聲明一個(gè)偵聽(tīng)類dim RG As SpeechLib.ISpeechRecoGrammar在初始化時(shí)將之與上面的RC建立關(guān)系,此時(shí)則必須要用withevent來(lái)聲明上面的RC,因?yàn)樯婕半娔X聽(tīng)到你的語(yǔ)音后,會(huì)觸發(fā)一個(gè)事件,并將聽(tīng)到的內(nèi)容傳遞到該事件.其次,要讓系統(tǒng)聽(tīng)到的解析為命令,就必須準(zhǔn)備一個(gè)XML結(jié)構(gòu)的文件來(lái)保存那些固定的命令.如果電腦在XML文件中找不到那些固定命令或同時(shí)不屬于系統(tǒng)命令,電腦將會(huì)將其解釋為聽(tīng)寫(xiě).RG = RC.CreateGrammar '(0)
成都創(chuàng)新互聯(lián)公司是專業(yè)的監(jiān)利網(wǎng)站建設(shè)公司,監(jiān)利接單;提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行監(jiān)利網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
RG.CmdLoadFromFile("聽(tīng)到.xml", SpeechLib.SpeechLoadOption.SLODynamic)
RG.CmdSetRuleIdState(0, SpeechLib.SpeechRuleState.SGDSActive)然后寫(xiě)一個(gè)過(guò)程來(lái)處理聽(tīng)到的事件Private Sub 聽(tīng)到命令(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal 話語(yǔ) As SpeechLib.ISpeechRecoResult) Handles RC.Recognition RC.Voice.Speak("我聽(tīng)到了" 話語(yǔ).PhraseInfo.GetText, 11)End Sub以上為偵聽(tīng)部分.下面列一個(gè)XML的例文?xml version="1.0" encoding="gb2312"?
GRAMMAR LANGID="804"
RULE NAME="命令" TOPLEVEL="ACTIVE"
L
P打開(kāi)播放器
P上我的QQ
P關(guān)閉你自己 /L
/RULE
/GRAMMAR要讓系統(tǒng)正確地偵聽(tīng)到你說(shuō)的話,前提你必須運(yùn)行語(yǔ)音識(shí)別程序并讓其激活到"正在聆聽(tīng)"狀態(tài).并且你必須有一個(gè)能正常使用的話筒而且保證話筒已經(jīng)打開(kāi).(廢話-_-|||)以上就是用VB.NET語(yǔ)音識(shí)別的最基本的一些操作.希望對(duì)你有幫助.更深入的內(nèi)容有興趣的話可以和我一起研究.
安裝了sdk后應(yīng)該可以在控件箱單擊鼠標(biāo)右鍵,然后選擇部件,在彈出的列表中應(yīng)該可以找到microsoft tts engine或之類的東西,選擇后就可以吧tts engine作為控件放到窗體上。 調(diào)用貌似是用.speak(String)實(shí)現(xiàn)的。 由于我是很久以前用的,所以也記得不是很清楚了,你可以找找看。
這就要調(diào)用API函數(shù)了
給你代碼吧
記得給點(diǎn)分啊
Private
Const
KeysM
=
H8000
Private
Declare
Function
GetAsyncKeyState
Lib
"user32"
(ByVal
vKey
As
Long)
As
Integer
Private
Sub
TextBox1_KeyDown(ByVal
sender
As
Object,
ByVal
e
As
System.Windows.Forms.KeyEventArgs)
Handles
TextBox1.KeyDown
Me.Text
=
e.KeyValue
If
e.KeyValue
=
Keys.ShiftKey
And
GetAsyncKeyState(160)
And
KeysM
Then
MsgBox("你按的是左SHIFT")
ElseIf
e.KeyValue
=
Keys.ShiftKey
And
GetAsyncKeyState(161)
And
KeysM
Then
MsgBox("你按的是右SHIFT")
End
If
End
Sub