[语音技术]C#在win平台基于录音类试写唤醒
goJhou 发布于2017-10-29 13:01 浏览:3980 回复:29
0
收藏

基本的思想就是

我会多线程不停的利用录音类识别实时的话语

当我的话语中出现了 xxx(语音唤醒词) 时,以后的句子(包括本句)将被计算机处理

直到再次说出 xxx 时,程序再次进入监听状态 等待唤醒。

这是一个基于windows的唤醒实验。试用下来交互其实还是可以接受的。

如下是部分代码,我的唤醒词设置成了“贾维斯”

public Task Update()
        {
            return Task.Run(() =>
            {
                var data = File.ReadAllBytes(time + ".wav");
                Dictionary d = new Dictionary();                
                //d.Add("lan", "zh");
                var result = _asrClient.Recognize(data, "pcm", 16000, d);                
                if (result.GetValue("err_msg").ToString() == "success.")
                {
                    File.Delete(time + ".wav");
                    Application.Current.Dispatcher.Invoke(() =>
                    {
                        string res = result.GetValue("result").First.ToString();
                        Console.WriteLine(result.GetValue("result").ToString());
                        Regex regex = new Regex("贾维斯");//捕捉唤醒词 可在语音识别中设定特别词优化
                        Match match = regex.Match(res);
                        if (match.Success || IsJarvis) //说出了贾维斯或处于唤醒 开始一系列操作
                        {
                            if(IsJarvis)
                            {
                                if (match.Success)//唤醒状态下又说出了贾维斯 退出唤醒
                                {
                                    IsJarvis = false;//退出贾维斯模式
                                    Console.Write("\t进入睡眠,等待唤醒");
                                }
                                else
                                {
                                    if (!UNIT.UNIT.IsFinishedThisUnit)
                                    {
                                        Queue.Queue.WaitForIntentionsWord.Add(WordToNumber.WordToNumberClass.WordToNumber(res));
                                    }
                                    else
                                        Queue.Queue.WaitForDealFromVoice.Add(WordToNumber.WordToNumberClass.WordToNumber(res));
                                }
                            }else
                            {
                                IsJarvis = true;
                                Console.Write("\t唤醒成功");
                                Queue.Queue.WaitForDealFromVoice.Add(WordToNumber.WordToNumberClass.WordToNumber(res));//res..Replace(",", "").Replace("贾维斯", ""))
                            }
                        }
                    });
                    return result.GetValue("result").First.ToString().Replace(",","");
                }
                return null;
            });
        }
收藏
点赞
0
个赞
共29条回复 最后由goJhou回复于2019-04-19 00:08
#30goJhou回复于2019-04-19 00:08:29
#29 荒墨丶迷失回复
winform 按go大神的说法就是过时了...

是呀~winform没啥市场了

0
#29荒墨丶迷失回复于2019-04-18 19:22:16
#27 177******01回复
winform封装

winform 按go大神的说法就是过时了...

0
#28goJhou回复于2019-04-18 18:57:32
#27 177******01回复
winform封装

不是喔,WPF封装

0
#27177******01回复于2019-04-18 13:50:13

winform封装

0
#26荒墨丶迷失回复于2019-04-17 22:42:22
#22 188******00回复
实际应用确实应该是传入的语音,期待后续更新

大家赶紧扯了 2年前的帖子 作者已经发了新的测评,快去围观吧

0
#25goJhou回复于2019-04-17 20:16:02
#23 liguanghui2588回复
但是感觉现在用这个语言的不多

嗯,BS的兴起对CS确实冲击有点

0
#24goJhou回复于2019-04-17 20:15:01
#22 188******00回复
实际应用确实应该是传入的语音,期待后续更新

这个系列已经完结啦,文章是17年的喔

0
#23liguanghui2588回复于2019-04-17 19:28:44
#21 goJhou回复
是的呢,.net还是有一席之地的

但是感觉现在用这个语言的不多

0
#22188******00回复于2019-04-17 17:32:54

实际应用确实应该是传入的语音,期待后续更新

0
#21goJhou回复于2019-04-17 14:57:13
#20 liguanghui2588回复
我们主要使用studio软件,这个c#应用较多        

是的呢,.net还是有一席之地的

0
#20liguanghui2588回复于2019-04-17 12:23:03

我们主要使用studio软件,这个c#应用较多

 

 

 

 

0
#19rose20135188回复于2019-04-17 10:52:06

写得不错,学习一下。

0
#18goJhou回复于2019-04-16 14:12:16
#16 丿ZXY丶丑小亚回复
这也叫唤醒吗?唤醒不是为了解放双手吗?直接读一个音频文件,可还行。如果这个音频文件是前端传给后端的, 有什么办法控制上传录音的时长?《我会多线程不停的利用录音类识别实时的话语》这部分,代码能分享一下吗?
展开

请看一整个系列,不要拿其中一篇说事喔

0
#16丿ZXY丶丑小亚回复于2019-04-16 09:15:50

这也叫唤醒吗?唤醒不是为了解放双手吗?直接读一个音频文件,可还行。如果这个音频文件是前端传给后端的, 有什么办法控制上传录音的时长?《我会多线程不停的利用录音类识别实时的话语》这部分,代码能分享一下吗?

0
#15独孤焰坤回复于2018-01-21 19:49:05
#14 goJhou回复
哈哈哈哈哈哈

水帖是不好的行为哟~

0
#14goJhou回复于2017-12-03 12:43:08
#13 笔墨哥回复
嗯哼,你这么说,我就是很开森~

哈哈哈哈哈哈

0
#13笔墨哥回复于2017-12-03 12:24:45
#12 goJhou回复
你终于又开始水起来了!

嗯哼,你这么说,我就是很开森~

0
#12goJhou回复于2017-12-02 14:36:56
#11 笔墨哥回复
在社区,经常发生这种“刚好”的事情,社区真的好棒哟~

你终于又开始水起来了!

0
#11笔墨哥回复于2017-12-02 10:51:00
#10 荒墨丶迷失回复
我刚好试着写一个java的唤醒线程

在社区,经常发生这种“刚好”的事情,社区真的好棒哟~

0
#10荒墨丶迷失回复于2017-11-27 15:38:02

我刚好试着写一个java的唤醒线程

1
TOP
切换版块