语音识别计算机用微软件的程序

原创 2012年03月25日 20:55:36

通过微软的SAPI,不仅仅可以实现语音合成TTS,同样可以实现语音识别SR。下面我们就介绍并贴出相关代码。主要有两种方式:
1、使用COM组件技术,不管是C++,C#,Delphi都能玩的转,开发出来的东西在XP和WIN7都能跑。(注意要引入系统组件SpeechLib,XP要安装识别引擎)
2、使用WIN7的windows api,其实最终还是调用了SAPI,所以开发出来的东西就只能在WIN7上面跑。
其实不管是哪一种,都是调用SAPI,可能后一种代码比较简单。

使用第一种方式,需要注意在COM选项卡里面的Microsoft Speech  object  library引用
C#代码

    public class SpRecognition 
        { 
            private static SpRecognition _Instance = null; 
            private SpeechLib.ISpeechRecoGrammar isrg; 
            private SpeechLib.SpSharedRecoContextClass ssrContex = null; 
     
            public delegate void StringEvent(string str); 
            public StringEvent SetMessage; 
     
            private SpRecognition() 
            { 
                ssrContex = new SpSharedRecoContextClass(); 
                isrg = ssrContex.CreateGrammar(1); 
                SpeechLib._ISpeechRecoContextEvents_RecognitionEventHandler recHandle = 
                     new _ISpeechRecoContextEvents_RecognitionEventHandler(ContexRecognition); 
                ssrContex.Recognition += recHandle; 
            } 
            public void BeginRec() 
            { 
                isrg.DictationSetState(SpeechRuleState.SGDSActive); 
            } 
            public static SpRecognition instance() 
            { 
                if (_Instance == null) 
                    _Instance = new SpRecognition(); 
                return _Instance; 
            } 
            public void CloseRec() 
            { 
                isrg.DictationSetState(SpeechRuleState.SGDSInactive); 
            } 
            private void ContexRecognition(int iIndex, object obj, SpeechLib.SpeechRecognitionType type, SpeechLib.ISpeechRecoResult result) 
            { 
                if (SetMessage != null) 
                { 
                    SetMessage(result.PhraseInfo.GetText(0, -1, true)); 
                } 
            } 
        } 


第二种同样需要引入,不过引入的是Win7中的.NET3.5类库
C# 代码

    using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Speech; 
    using System.Speech.Recognition; 
    using System.Globalization; 
    using System.Windows.Forms; 
     
    namespace StudyBeta 
    { 
        public class SRecognition 
        { 
            public SpeechRecognitionEngine recognizer = null;//语音识别引擎 
            public DictationGrammar dictationGrammar = null; //自然语法 
            public System.Windows.Forms.Control cDisplay; //显示控件 
     
            public SRecognition(string[] fg) //创建关键词语列表 
            { 
                CultureInfo myCIintl = new CultureInfo("en-US"); 
                foreach (RecognizerInfo config in SpeechRecognitionEngine. InstalledRecognizers())//获取所有语音引擎 
                { 
            if (config.Culture.Equals(myCIintl) && config.Id == "MS-1033-80-DESK" ) 
                    { 
                        recognizer = new SpeechRecognitionEngine(config); 
                        break; 
                    }//选择美国英语的识别引擎 
                } 
                if (recognizer != null) 
                { 
                    InitializeSpeechRecognitionEngine(fg);//初始化语音识别引擎 
                    dictationGrammar = new DictationGrammar(); 
                } 
                else 
                { 
                    MessageBox.Show("创建语音识别失败"); 
                } 
            } 
            private void InitializeSpeechRecognitionEngine(string[] fg) 
            { 
                recognizer.SetInputToDefaultAudioDevice();//选择默认的音频输入设备 
                Grammar customGrammar = CreateCustomGrammar(fg); 
                //根据关键字数组建立语法 
                recognizer.UnloadAllGrammars(); 
                recognizer.LoadGrammar(customGrammar); 
                //加载语法 
    recognizer.SpeechRecognized += new EventHandler <SpeechRecognizedEventArgs>(recognizer_SpeechRecognized); 
    recognizer.SpeechHypothesized += new EventHandler <SpeechHypothesizedEventArgs>(recognizer_SpeechHypothesized); 
            } 
            public void BeginRec(Control tbResult)//关联窗口控件 
            { 
                TurnSpeechRecognitionOn(); 
                TurnDictationOn(); 
                cDisplay = tbResult; 
            } 
            public void over()//停止语音识别引擎 
            { 
                TurnSpeechRecognitionOff(); 
            } 
            public virtual Grammar CreateCustomGrammar(string[] fg) //创造自定义语法 
            { 
                GrammarBuilder grammarBuilder = new GrammarBuilder(); 
                grammarBuilder.Append(new Choices(fg)); 
                return new Grammar(grammarBuilder); 
            } 
            private void TurnSpeechRecognitionOn()//启动语音识别函数 
            { 
                if (recognizer != null) 
                { 
                    recognizer.RecognizeAsync(RecognizeMode.Multiple);  
    //识别模式为连续识别 
                } 
                else 
                { 
                    MessageBox.Show("创建语音识别失败"); 
                } 
            } 
            private void TurnSpeechRecognitionOff()//关闭语音识别函数 
            { 
                if (recognizer != null) 
                { 
                    recognizer.RecognizeAsyncStop(); 
                    TurnDictationOff(); 
                } 
                else 
                { 
                    MessageBox.Show("创建语音识别失败"); 
                } 
            } 
    private void recognizer_SpeechRecognized(object sender, SpeechRecognized EventArgs e) 
            { 
                //识别出结果完成的动作,通常把识别结果传给某一个控件 
                string text = e.Result.Text; 
                cDisplay.Text = text; 
            } 
            private void TurnDictationOn() 
            { 
                if (recognizer != null) 
                { 
                    recognizer.LoadGrammar(dictationGrammar); 
                    //加载自然语法 
                } 
                else 
                { 
                    MessageBox.Show("创建语音识别失败"); 
                } 
            } 
            private void TurnDictationOff() 
            { 
                if (dictationGrammar != null) 
                { 
                    recognizer.UnloadGrammar(dictationGrammar); 
                    //卸载自然语法 
                } 
                else 
                { 
                    MessageBox.Show("创建语音识别失败"); 
                } 
            } 
        } 
    } 

微信小程序之语音识别(附小程序+服务器源码)

通过微信小程序wx.startRecord()和wx.stopRecord()接口录音并上传silk录音文件至服务器,通过ffmpeg将silk录音文件转成wav录音文件,再通过百度语音识别 REST...
  • qq_38125123
  • qq_38125123
  • 2017年04月05日 15:11
  • 10233

小程序语音与讯飞语音识别踩坑过程

【由于CSDN的markdown的排版不是很好,所以整理了一下,新的地址:[http://blog.csdn.net/c910511/article/details/54839160](%E6%96%...
  • c910511
  • c910511
  • 2016年12月17日 22:26
  • 6707

微信小程序语音识别服务搭建全过程解析(内附免费的供小程序语音识别的https服务)

silk v3录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 微信小程序语音识别服务搭建全过程解析 内附免费的供小程序语音识别的https服务...
  • happycxz
  • happycxz
  • 2017年09月18日 10:19
  • 5809

支持语音识别、自然语言理解的微信小程序(“遥知之”智能小秘)完整源码分享

记录自己搭建https的silk录音文件语音识别服务的调用过程,所有代码分享,API免费开放,目前仅对接olami开放平台,支持语音识别和语义处理。...
  • happycxz
  • happycxz
  • 2017年09月18日 23:07
  • 4198

微信语音识别和语义理解接口

微信开发现在已经逐步向智能化的方向发展,像摇一摇和语义理解各种功能都是越来越高大上,也多亏了腾讯那些开发微信的程序员,不得不说他们很强大。...
  • SmartCodeKM
  • SmartCodeKM
  • 2015年12月05日 23:20
  • 6975

Python3.4 语音控制电脑(基于win10语音识别)

import speech import win32api import os import sys import time import win32con command1 = {'关机': 'sh...
  • u013511642
  • u013511642
  • 2015年08月16日 10:11
  • 3516

一个典型的语音识别系统

一、语音识别技术     语音识别技术,广泛来说是指语意识别和声纹识别;从狭义上来说指语音语义的理解识别,也称为自动语音识别(ASR)。其关键技术包括选择识别单元、语音端点检测、特征参数提取、...
  • u012637501
  • u012637501
  • 2015年01月05日 16:56
  • 7865

为语音识别录制pcm音频文件

在PC上使用科大讯飞语音识别或听写的sdk时,需要提前录制好pcm文件,并且文件格式要求为16K、16bit、单声道、无压缩,在我们测试的时候,我们可以用音频软件去转化成这一格式,但集成编程时,我们必...
  • m_zhangJingDong
  • m_zhangJingDong
  • 2016年09月10日 09:20
  • 1402

Nuance语音识别例子的使用

1、打开Nuance官网,注册并登陆 2.下载app sample 3、主页-->My Account -->My Sandbox --> Sandbox Credentials 4、...
  • nicolelili1
  • nicolelili1
  • 2017年08月03日 18:00
  • 1004

【语音识别】日语语音识别系统Julius(v4.4)的基于DNN的识别(5月8号:识别结果更新)

发现国内对于Julius的资料太少了,现在补充一下。Julius最新更新于2016.9,加入了基于DNN的识别,但实际使用的时候发现有很多必要条件并没有在homepage上标明出来。现在做一个00re...
  • u013016525
  • u013016525
  • 2017年05月02日 15:31
  • 1641
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:语音识别计算机用微软件的程序
举报原因:
原因补充:

(最多只允许输入30个字)