求一个用VB做的"语音转换成文字"的程序源码学习!

XYRGASYX 2011-09-27 09:21:13
我希望用麦克风说"VB,认识您真好!",能在文本控件中显示出"VB,认识您真好"来...谢谢!(抱歉,我只有32分了)
...全文
1751 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanlong520 2013-07-16
  • 打赏
  • 举报
回复
我能做,但不是你所想像这么简单
无·法 2011-09-27
  • 打赏
  • 举报
回复
记得以前vista上面好像自带的,你只要说“记事本”,然后系统就打开记事本了,说文件,打开 ,然后系统就去执行菜单 文件-打开,然后弹出对话框,相当牛x,当然说普通文字也可以,这技术好多年前就有了吧,记得初中时语文老师说要买个机器,以后写书就直接在小房间里自己对着话筒说就行了。
实际应用好像不理想,因为它对普通话要求很苛刻,而且周围不得有杂音,那么凳子挪下发出的小声音都不行,各种外界因素都排除的情况下系统本身识别也会有点误差。
波导终结者 2011-09-27
  • 打赏
  • 举报
回复
相关的东西我都试过,比如号称全世界最好的IBM那套还有其他几种。虽说我的普通话不是特别标准,但也还算清楚了,识别率是很差的,学习了N次还是很差,我傻傻的照着它给的范文读了不知道多少次了。其他领域的也不怎么样,比如手机的语音拨号,认对的概率实在可怜。你要靠这个识别或者打字?别逗了,你校对的时间不知道要花上几十倍呢……
三断笛 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 alifriend 的回复:]

就当前来说:做梦
[/Quote]
应该只对英文有效吧,好像还要学习来的
贝隆 2011-09-27
  • 打赏
  • 举报
回复
你到人工智能版去问问?
XYRGASYX 2011-09-27
  • 打赏
  • 举报
回复
我在网上下载了下面的资料,照着做,但是没有做出效果来,不知问题出在哪了?

《Visual Basic开发实战1200例(第II卷)》本书以开发人员在项目开发中经常遇到的问题和必须掌握的技术为核心,介绍了应用Visual Basic进行程序开发的多方面的知识和技巧,主要包括Visual Basic的多媒体开发、数据库应用、网络技术与Web开发、安全防护与入侵破解、打印技术与报表图表、程序控制与磁盘管理和系统与硬件设备等内容。本节为大家介绍实例003 WAV音频流识别程序。

实例003 WAV音频流识别程序

实例001是对来自麦克风的声音进行识别的,但有时可能需要对来自其他音频流的声音进行识别。例如,对WAV文件的音频流进行识别,将WAV文件中录制的话语以文字的形式显示出来。本实例程序通过对微软Speech SDK的调用,实现识别WAV音频流的功能。运行程序,单击"浏览"按钮,选择一个WAV文件Computer.wav,如图1.4所示。在"识别WAV声音源"对话框中单击"开始"按钮进行识别,效果如图1.5所示,开始对文本框中的字符串进行朗读。


图1.4 选择WAV文件

图1.5 WAV音频流识别效果


创建WAV音频流的语音识别程序,首先需要创建语音识别引擎及上下文接口,然后创建流对象并打开WAV文件的音频流,最后将WAV音频流设置为识别引擎的输入流。在本实例程序中所使用的关键技术如下。

(1)创建独享识别引擎。

微软Speech SDK 5.1支持共享(Share)和独享(Inproc)两种模式。一般情况下可以使用共享型,大的服务型或程序使用独享型。

创建独享识别引擎对象,代码如下:


Set InProcRecognizer = New SpInprocRecognizer (2)创建识别上下文接口。

使用SpInprocRecognizer类型对象的CreateRecoContext方法创建识别上下文接口。代码如下:


Set InProcRecoContext = InProcRecognizer.CreateRecoContext (3)创建流对象。

创建流对象通过创建命名空间SpeechLib下SpFileStream类的对象实现。代码如下:


Dim FileStream As SpFileStream Set FileStream = New SpFileStream (4)将WAV文件以流的形式打开。

将WAV文件以流的形式打开,通过使用SpFileStream类型对象的Open()方法实现。例如变量FileName中保存WAV文件的路径,将WAV文件以流的形式打开的代码如下:

FileStream.Open FileName (5)指定识别引擎的音频输入流。

对来自WAV文件的音频流进行识别需要指定识别引擎的音频输入流,指定音频输入流通过设置SpInprocRecognizer类型对象的AudioInputStream属性实现,代码如下:

Set InProcRecognizer.AudioInputStream = FileStream 说明:上面代码中的FileStream是SpFileStream类型对象。

(1)创建VB工程,并引用Microsoft Speech Object Library类库。引用步骤参见实例001。

(2)在工程中的默认窗体Form1上添加3个CommandButton控件,分别命名为Cmd_Start、Cmd_Stop和Cmd_Close。其Caption属性分别设置为"开始"、"停止"和"浏览"。

(3)在窗体上添加一个PictureBox控件,命名为Pic_Frame。

(4)在窗体上添加一个TextBox控件,命名为Txt_Show,其MultiLine 属性为True。

(5)添加一个CommonDialog控件,命名为Cdg_Select。在使用CommonDialog控件前需要在VB开发环境中执行"工程"/"部件"命令,调用"部件"窗体,并选中Microsoft Common Dialog Control 6.0(SP6)复选框添加部件。

(6)编写主要程序代码。

① 选择WAV文件,将其以流的形式打开,并将该流作为识别引擎的输入流;创建识别对象并加载识别规则。代码如下:




Private Sub Cmd_Browse_Click() With Cdg_Select .FileName = "" .CancelError = False .ShowOpen End With If Cdg_Select.FileName <> "" Then Set InProcRecognizer = New SpInprocRecognizer Set InProcRecoContext = InProcRecognizer.CreateRecoContext Dim FileName As String FileName = Cdg_Select.FileName Dim FileStream As SpFileStream Set FileStream = New SpFileStream FileStream.Open FileName Set InProcRecognizer.AudioInputStream = FileStream Set RecoContext = InProcRecognizer.CreateRecoContext Set Grammar = RecoContext.CreateGrammar(1) Grammar.DictationLoad End If End Sub ② 激活语音识别对象,代码如下:

Public Sub PlayPlug() On Error GoTo Cancel Txt_Show.Text = "" Grammar.DictationSetState SGDSActive Cancel: Exit Sub End Sub ③ 显示从WAV音频流识别出的字符串,该过程在识别上下文对象的Recognition事件中实现。代码如下:
Private Sub RecoContext_Recognition(ByVal StreamNumber As Long, _ ByVal StreamPosition As Variant, _ ByVal RecognitionType As SpeechLib.SpeechRecognitionType, _ ByVal Result As SpeechLib.ISpeechRecoResult) Txt_Show.Text = Result.PhraseInfo.GetText & Txt_Show.Text End Sub 心法领悟003:音频流的识别。

对音频流进行识别可以从音频文件中获取所需的信息,并转换为文字进行保存。例如,对电话录音文件进行识别,可以将谈话内容以文本的方式进行保存。



【责任编辑:云霞 TEL:(010)68476606】

波导终结者 2011-09-27
  • 打赏
  • 举报
回复
就当前来说:做梦
贝隆 2011-09-27
  • 打赏
  • 举报
回复
卡拉OK中的打分软件就是声音识别的一个应用。
XYRGASYX 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 of123 的回复:]
语音识别,是模式识别中比较困难的一种。近年来,在书写识别、图形识别的研究进展较快,已经大量转入应用。但语音识别还是比较困难的,可能较多地依赖人工智能的发展。在其相反的方向上,电子语音发展得较好,现在公交、地铁上,到站广播很多已经是电子化语音系统了。

如果语音识别方面有突破,机器翻译、语音门禁等都会有一个大的变革,甚至你到 ATM 机跟前说上一声“取两万”,钱就出来了。
[/Quote]

呵呵,我真的希望快点做出来,然后我也去对着ATM 机说上一声“取两万”,哈哈,别人的钱就进我的口袋啦!。
XYRGASYX 2011-09-27
  • 打赏
  • 举报
回复
你好,我运行你的方法,是能说出"VB,认识您真好!"来...但是我希望是"先对着话筒说"VB,认识您真好"",然后才在文本控件中显示出"VB,认识您真好"的文字来...我用话筒说话是"随机"的,随机说话的内容要都能在文本控件中显示出来...麻烦您在帮我想想办法,谢谢!
csdn_风中雪狼 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 patrickkong 的回复:]
text1 = "VB,认识您真好"
[/Quote]
呵呵
of123 2011-09-27
  • 打赏
  • 举报
回复
语音识别,是模式识别中比较困难的一种。近年来,在书写识别、图形识别的研究进展较快,已经大量转入应用。但语音识别还是比较困难的,可能较多地依赖人工智能的发展。在其相反的方向上,电子语音发展得较好,现在公交、地铁上,到站广播很多已经是电子化语音系统了。

如果语音识别方面有突破,机器翻译、语音门禁等都会有一个大的变革,甚至你到 ATM 机跟前说上一声“取两万”,钱就出来了。

无·法 2011-09-27
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Form_Load()
CreateObject("SAPI.SpVoice").Speak "VB,认识您真好!"
End Sub
  • 打赏
  • 举报
回复
text1 = "VB,认识您真好"
XYRGASYX 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 veron_04 的回复:]
卡拉OK中的打分软件就是声音识别的一个应用。
[/Quote]
你知道这种打分软件的代码吗?呵呵,好想学习呢
XYRGASYX 2011-09-27
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 alifriend 的回复:]
相关的东西我都试过,比如号称全世界最好的IBM那套还有其他几种。虽说我的普通话不是特别标准,但也还算清楚了,识别率是很差的,学习了N次还是很差,我傻傻的照着它给的范文读了不知道多少次了。其他领域的也不怎么样,比如手机的语音拨号,认对的概率实在可怜。你要靠这个识别或者打字?别逗了,你校对的时间不知道要花上几十倍呢……
[/Quote]
有简单的VB源码吗?望给我学习参考下.

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧