首先添加一个系统的语音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)
创新互联自2013年起,是专业互联网技术服务公司,拥有项目成都网站设计、成都做网站网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元辛集做网站,已为上家服务,为辛集各地企业和个人服务,联系电话:028-86922220
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语音识别的最基本的一些操作.希望对你有帮助.更深入的内容有兴趣的话可以和我一起研究.
声明:
Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength
As Long, ByVal hwndCallback As Long) As Long
代码:
Dim returnstring As String
FileName As String
returnstring = Space(127)
FileName = "C:\A1.avi"
erg = mciSendString("open " Chr$(34) FileName Chr$(34) " type avivideo alias video", returnstring, 127, 0)
erg = mciSendString("set video time format ms", returnstring, 127, 0)
erg = mciSendString("play video from 0", returnstring, 127, 0)
'记着关闭!
erg = mciSendString("close video", returnstring, 127, 0)
如果声音在资源文件内
假设这个声音文件的关键字为"HAHA",先定义一个API函数:
Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (lpszSoundName As Any, Byval uFlags As Long) As Long
注意:必须把的lpszSoundName类型设成Any,不能按照win32api.txt文件中的定义
Const SND_ASYNC = H1
Const SND_MEMORY = H4
再输入如下代码:
Dim Toms() As Byte
Toms=LoadResData("HAHA","WAVE")
sndPlaySound Toms(0), SND_MEMORY Or SND_ASYNC
这样就OK了!
在.NET里,没有托管的音乐播放器,用API只能播放WAV格式,对于MP3等形式的音频文件,就要依赖于其他控件了,常用的就是
MediaPlayer。使用方法:
在工具箱上点右键,选择“选择项目(Choose
Items)”,切到COM选项卡,找到
Windows
Media
Player,
勾选,确定
在t工具箱上,把刚才加入的MediaPlayer控件,拖放到窗体上
代码:
WindowsMediaPlayer1.URL
=
"mp3文件路径,支持网络路径"
WindowsMediaPlayer1.Ctlcontrols.play
基本就OK了,至于其他的操作诸如下一曲上一曲暂停停止,直接看
WindowsMediaPlayer1.Ctlcontrols.
里面的方法吧。
例:Rem 添加三个控件,一个按钮Command,一个计时器Timer,一个文本框Text,自己在窗体添加
Private Sub Command1_Click()
Static flag As Boolean
If flag = True Then
Command1.Caption = "开始"
Timer1.Enabled = False
Else
Command1.Caption = "暂停"
Timer1.Enabled = True
End If
flag = Not flag
End Sub
Private Sub Form_Load()
Timer1.Interval = 10
Timer1.Enabled = False
Command1.Caption = "开始"
Text1 = ""
End Sub
Private Sub Timer1_Timer()
Randomize
Text1 = Int(351 * Rnd)
End Sub
大体意思是:0-350随机选择,开始,停止控制,在开始时添加声音,停止时声音停止。 解决方法:在面板添加一个MMControl1控件
在“开始”下面输入以下代码,开始播放
MMControl1.FileName = 播放音乐的绝对路径
MMControl1.Command = "open"
MMControl1.Command = "play"
在“停止”下面,输入
MMControl1.Command = "Close"
可以停止音乐播放
添加一个timer控件,隔一秒(Interval = 1000)对照一次本地时间和指定的时间,如果相同就执行铃声,并停止对照。 或者启动时取得本地时间,没一秒把这时间加1秒,直到加到指定的时间执行铃声,并停止加。 播放mp3的代码 System.Runtime.InteropServices.DllImport("winmm.dll", _ CharSet:=System.Runtime.InteropServices.CharSet.Auto) _Private Shared Function mciSendString(ByVal command As String, _ ByVal buffer As System.Text.StringBuilder, _ ByVal bufferSize As Integer, ByVal hwndCallback As IntPtr) As IntegerEnd FunctionPrivate aliasName As String = "MediaFile"'点击Button1(变成到指定时间就可以Private Sub Button1_Click(ByVal sender As Object, _ ByVal e As EventArgs) Handles Button1.Click '要播放的文件比如在C:\music.mp3 Dim fileName As String = "C:\music.mp3" Dim cmd As String '打开文件代码 cmd = "open """ + fileName + """ type mpegvideo alias " + aliasName If mciSendString(cmd, Nothing, 0, IntPtr.Zero) 0 Then Return End If '播放 cmd = "play " + aliasName mciSendString(cmd, Nothing, 0, IntPtr.Zero)End Sub'点击Button2停止播放(根据你自己的情况,比如建一个停止的按钮Private Sub Button2_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button2.Click Dim cmd As String '播放中音乐停止 cmd = "stop " + aliasName mciSendString(cmd, Nothing, 0, IntPtr.Zero) '关闭 cmd = "close " + aliasName mciSendString(cmd, Nothing, 0, IntPtr.Zero)End Sub