首先添加一個系統(tǒng)的語音COM組件的引用microsoft speech object library然后在程序中聲明一個語音類dim RC As SpeechLib.SpSharedRecoContext這個類有一些事件,如果你要處理它的一些事件,可以用withevent來聲明然后在窗體LOAD事件或你需要的地方先創(chuàng)建一個實例RC = New SpeechLib.SpSharedRecoContext當一個RC被實例化后,系統(tǒng)就會運行語音識別程序.前提是你的系統(tǒng)已經(jīng)正確安裝這個功能.一般默認就已經(jīng)安裝好的.其次提醒一下,WIN7的語音識別比XP的好N倍.從閱讀到偵聽都好很多.然后就可以在你需要閱讀的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚舉,用來標識系統(tǒng)用前臺還是后臺或其他方式來閱讀文字,簡單的來說就是閱讀的時候不會卡住你的程序.你可以選其他的枚舉來試試作用.以上為閱讀部分.如果需要程序聽你說話,則需要聲明一個偵聽類dim RG As SpeechLib.ISpeechRecoGrammar在初始化時將之與上面的RC建立關(guān)系,此時則必須要用withevent來聲明上面的RC,因為涉及電腦聽到你的語音后,會觸發(fā)一個事件,并將聽到的內(nèi)容傳遞到該事件.其次,要讓系統(tǒng)聽到的解析為命令,就必須準備一個XML結(jié)構(gòu)的文件來保存那些固定的命令.如果電腦在XML文件中找不到那些固定命令或同時不屬于系統(tǒng)命令,電腦將會將其解釋為聽寫.RG = RC.CreateGrammar '(0)
10年積累的成都網(wǎng)站設計、做網(wǎng)站經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設流程,更有海滄免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
RG.CmdLoadFromFile("聽到.xml", SpeechLib.SpeechLoadOption.SLODynamic)
RG.CmdSetRuleIdState(0, SpeechLib.SpeechRuleState.SGDSActive)然后寫一個過程來處理聽到的事件Private Sub 聽到命令(ByVal StreamNumber As Integer, ByVal StreamPosition As Object, ByVal RecognitionType As SpeechLib.SpeechRecognitionType, ByVal 話語 As SpeechLib.ISpeechRecoResult) Handles RC.Recognition RC.Voice.Speak("我聽到了" 話語.PhraseInfo.GetText, 11)End Sub以上為偵聽部分.下面列一個XML的例文?xml version="1.0" encoding="gb2312"?
GRAMMAR LANGID="804"
RULE NAME="命令" TOPLEVEL="ACTIVE"
L
P打開播放器
P上我的QQ
P關(guān)閉你自己 /L
/RULE
/GRAMMAR要讓系統(tǒng)正確地偵聽到你說的話,前提你必須運行語音識別程序并讓其激活到"正在聆聽"狀態(tài).并且你必須有一個能正常使用的話筒而且保證話筒已經(jīng)打開.(廢話-_-|||)以上就是用VB.NET語音識別的最基本的一些操作.希望對你有幫助.更深入的內(nèi)容有興趣的話可以和我一起研究.
分類: 電腦/網(wǎng)絡 程序設計 其他編程語言
問題描述:
vb.如何精確的分割中英文混合字符串?
要求1。給出一個分割大小,比如是2KB,那么就把這段字符串分割成每個準確的2KB的字符串。
2。處理過程中不可以用帶有存盤的方法。(如果保存了,用FSO是很好分割,但是這個不是我需要的)
3。再次提醒是 中英文混合 的,如果給出MID LEN函數(shù)的簡單分割,那就拜托別發(fā)了,因為肯定不對。
4?;貜偷囊暾囊欢未a,別說方法,因為說的簡單,寫出來的多半是錯的。
解析:
Do While LenB(StrConv(StrSaveTmp, vbFromUnicode)) = LonLtxt * 1000
StrSaveIt = StrConv(MidB(StrConv(StrSaveTmp, vbFromUnicode), 1, LonLtxt * 1000), vbUnicode)
call save(strsaveit)
StrSaveTmp = StrConv(MidB(StrConv(StrSaveTmp, vbFromUnicode), LonLtxt * 1000, LenB(StrConv(StrSaveTmp, vbFromUnicode))), vbUnicode)
Loop
Dim wz As New StreamReader(wjm) 'wz文字 這一句改一下: Dim wz As New StreamReader(wjm,System.Text.Encoding.GetEncoding("gb2312")) 'wz文字
兄弟你可以用session["current"] = langgue ;來保存你的多語言的狀態(tài),頁面載入的時候讀sesion,;“中文”和“英文”切換的時候也讀一下,多語言存放在res資源文件中就可以
不要用do until,用for:
Dim arr() As String, i As Integer
arr = Split(r.ReadLine, " ")
For i = LBound(arr) To UBound(arr)
MsgBox(arr(i))
Next
--------------------
還是用readline,如果你要提取兩個非連續(xù)空格之間的字符串,可以用
Dim arr() As String
arr = Split(r.ReadLine, " ")
arr()數(shù)組里就存了你要的單詞。
快要下班了,明后天不上班,如果16:30之前還搞不定就要下個星期1了。
----------------------------------
哈,是我的失誤沒想到還有可能有半角的日文。
用utf-8就OK了,代碼如下:
(文本文件存的時候不能存成ansi,要存成utf-8,或是Unicode)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim r As System.IO.StreamReader
r = New System.IO.StreamReader("c:\a.txt", System.Text.Encoding.GetEncoding("utf-8"))
Do While Not r.EndOfStream
MsgBox(r.ReadLine)
Loop
End Sub
使用gb2312編碼即可:
Dim fs As IO.FileStream
Dim r As IO.BinaryReader
fs = New IO.FileStream("C:\temp.txt",IO.FileMode.OpenOrCreate)
r = New IO.BinaryReader(fs)
TextBox1.Text = System.Text.Encoding.GetEncoding("gb2312").GetString(r.ReadBytes(fs.Length), 0, fs.Length)