首先添加一个系统的语音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)
10年积累的成都网站设计、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站策划后付款的网站建设流程,更有海沧免费网站建设让你可以放心的选择与我们合作。
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语音识别的最基本的一些操作.希望对你有帮助.更深入的内容有兴趣的话可以和我一起研究.
分类: 电脑/网络 程序设计 其他编程语言
问题描述:
vb.如何精确的分割中英文混合字符串?
要求1。给出一个分割大小,比如是2KB,那么就把这段字符串分割成每个准确的2KB的字符串。
2。处理过程中不可以用带有存盘的方法。(如果保存了,用FSO是很好分割,但是这个不是我需要的)
3。再次提醒是 中英文混合 的,如果给出MID LEN函数的简单分割,那就拜托别发了,因为肯定不对。
4。回复的要完整的一段代码,别说方法,因为说的简单,写出来的多半是错的。
解析:
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 ;来保存你的多语言的状态,页面载入的时候读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,如果你要提取两个非连续空格之间的字符串,可以用
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
使用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)
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款