语音控制PPT

    昨天看到博比123写的《语音控制程序操作》,于是自己也手筋发痒。正好最近办公室墙上刚挂了一个42寸显示器,用来显示日常的一些事务,主要是用PPT显示,目前是用罗技摄像头+QQ手势达人配合使用,虽然识别率不高,但够酷呀,惹得其他办公室的时不时地来串门。罗技摄像头上还自带麦克风,作为一位程序员,咱可不能浪费了,开工~

一、测试环境

    Win7旗舰版(非旗舰版不带语音识别功能!)、.NET4.0(这个无所谓)

二、语音识别

    首先附上主要code:

Choices choices = new Choices();
string[] basicCommands = new string[] { textNext, textPreview };
choices.Add(basicCommands);

Grammar grammer = new Grammar(new GrammarBuilder(choices));

speechRecognizer = new SpeechRecognizer();
speechRecognizer.LoadGrammar(grammer);
speechRecognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(speechRecognizer_SpeechRecognized);

    textNext, textPreview是自定义的“下一页”“上一页”语音识别单词,可以自定义,具体可以参照Demo,注意语音识别的单词需要添加到“语音词典”当中,最好添加自己的录音以便提高识别率,别忘了引用System.Speech.dll类库。

speech_1

三、PPT控制

    说到控制PPT,最容易想到的就是使用COM接口直接控制,这当然是一种非常可行的办法,但我查阅了一下资料发现使用COM控制的话必须知道指定PPT文档的句柄,但我的情况是PPT已经由QQ手势达人打开了,我只是在它的基础上附加个语音控制功能,因此我绕道而行,采用了一个简便的方法,模拟按键!也就是PageDown(下一页)和PageUp(上一页),希望大家能给出更好的解决方案。

public class KeyEmulator
    {
        [DllImport("user32.dll")]
        static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);

        public static void Emulate(byte key)
        {
            keybd_event(key, 0, 0, 0);
        }

        public static void PgUp()
        {
            Emulate(33);
        }

        public static void PgDn()
        {
            Emulate(34);
        }
    }
void speechRecognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            if (e.Result.Text == textNext)
                KeyEmulator.PgDn();
            else if (e.Result.Text == textPreview)
                KeyEmulator.PgUp();
        }

Demo下载

转载于:https://www.cnblogs.com/deeroad/articles/2056415.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值