重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
Interop.SpeechLib.dll 引用后,朗讀不限制
我們提供的服務有:成都網站設計、做網站、微信公眾號開發、網站優化、網站認證、臺前ssl等。為上千余家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的臺前網站制作公司
Me.Cursor = Cursors.WaitCursor
Dim oVoice As New SpeechLib.SpVoice
Dim cpFileStream As New SpeechLib.SpFileStream
oVoice.Voice = oVoice.GetVoices.Item(cmbVoices.SelectedIndex)
oVoice.Volume = trVolume.Value
oVoice.Speak(txtSpeach.Text, SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault)
oVoice = Nothing
Me.Cursor = Cursors.Arrow
首先添加一個系統的語音COM組件的引用microsoft speech object library然后在程序中聲明一個語音類dim RC As SpeechLib.SpSharedRecoContext這個類有一些事件,如果你要處理它的一些事件,可以用withevent來聲明然后在窗體LOAD事件或你需要的地方先創建一個實例RC = New SpeechLib.SpSharedRecoContext當一個RC被實例化后,系統就會運行語音識別程序.前提是你的系統已經正確安裝這個功能.一般默認就已經安裝好的.其次提醒一下,WIN7的語音識別比XP的好N倍.從閱讀到偵聽都好很多.然后就可以在你需要閱讀的地方使用RC.Voice.Speak("hello 我", 11)11那里是一些枚舉,用來標識系統用前臺還是后臺或其他方式來閱讀文字,簡單的來說就是閱讀的時候不會卡住你的程序.你可以選其他的枚舉來試試作用.以上為閱讀部分.如果需要程序聽你說話,則需要聲明一個偵聽類dim RG As SpeechLib.ISpeechRecoGrammar在初始化時將之與上面的RC建立關系,此時則必須要用withevent來聲明上面的RC,因為涉及電腦聽到你的語音后,會觸發一個事件,并將聽到的內容傳遞到該事件.其次,要讓系統聽到的解析為命令,就必須準備一個XML結構的文件來保存那些固定的命令.如果電腦在XML文件中找不到那些固定命令或同時不屬于系統命令,電腦將會將其解釋為聽寫.RG = RC.CreateGrammar '(0)
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關閉你自己 /L
/RULE
/GRAMMAR要讓系統正確地偵聽到你說的話,前提你必須運行語音識別程序并讓其激活到"正在聆聽"狀態.并且你必須有一個能正常使用的話筒而且保證話筒已經打開.(廢話-_-|||)以上就是用VB.NET語音識別的最基本的一些操作.希望對你有幫助.更深入的內容有興趣的話可以和我一起研究.
不要用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,如果你要提取兩個非連續空格之間的字符串,可以用
Dim arr() As String
arr = Split(r.ReadLine, " ")
arr()數組里就存了你要的單詞。
快要下班了,明后天不上班,如果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
軟糖來告訴你吧。
VB.net中讀寫文件主要使用System.IO命名空間。
① 使用 File.ReadAllText 讀取
Dim s As String = System.IO.File.ReadAllText("C:\a.txt")
② 使用 StreamReader 讀取,注意編碼格式和寫入的編碼保持一致。
Dim sr As StreamReader = New StreamReader("C:\a.txt", System.Text.Encoding.UTF8)
Dim s As String = sr.ReadToEnd()
sr.Close()
③ 使用 File.WriteAllText 寫入,會覆蓋同名的文件。
Dim 要寫的內容 As String = ""
File.WriteAllText(文件路徑, 要寫的內容, System.Text.Encoding.UTF8)
④ 使用 StreamWriter 寫入。
Dim sw As System.IO.StreamWriter = New System.IO.StreamWriter("C:\a.txt", False, System.Text.Encoding.UTF8)
sw.WriteLine(TextTB.Text)
sw.Close()
⑤ 使用 StreamWriter 追加寫入。
將上面代碼的第二個參數False改為True。
◆ 滿意請采納,謝謝 ◆