搜索
bottom↓
回复: 223

一个简单的语音识别程序

  [复制链接]

出0入0汤圆

发表于 2012-5-19 22:53:33 | 显示全部楼层 |阅读模式
本帖最后由 lcw_swust 于 2012-5-19 22:57 编辑

最近想做语音识别玩玩,网上查了查,找到一个用Atmega32实现的语音识别机械车
地址是:http://courses.cit.cornell.edu/e ... h8_css34/index.html
貌似是利用带通滤波取得频谱(或者叫功率谱?),看不太懂.我决定用DFT算法,因为它节约内存

DFT程序借借鉴了 hendry 单片机 DTMF 软解码算法的实现
http://www.ourdev.cn/forum.php?m ... &highlight=dtmf

//--------------------------------------------------
//DFT运算
//注意,ad是有符号数,无符号的AD值需减128
//返回值为1表示已经计算了功率谱
//--------------------------------------------------
U8 dft(S8 ad)
{
        U8        i;
        U8        offset;//查表指针
        U32 temp;
        //ad-=128;//去直流分量
        for(i=0;i<NFREQ;i++)//每个频点计算实部和虚部
        {
                offset=tabp;//取查表指针
                s_dft_image += (S16)ad * sintab[offset];//>>8;
                offset+=PI2/4;//偏移1/4周期为cos表
                s_dft_real += (S16)ad * sintab[offset];//>>8;//cos表
                tabp+=tabinc;//指针下移
        }

        s_dft_p ++;
        if (s_dft_p == NSAMP)        //采样点已达到设定值,计算功率
        {
                s_dft_p = 0;                //点数清0
                for (i = 0; i < NFREQ; i ++)//每个频点计算功率
                {                       
                        s_dft_real/=NSAMP*6;        //除以合适的值能使得功率在一字节内
                        s_dft_image/=NSAMP*6;
                        temp=s_dft_real*s_dft_real + s_dft_image*s_dft_image;
                        if(temp>65535)temp=65535;
                        s_dft_real = sqrt16(temp);
                        //s_dft_real = sqrt32(((s_dft_real*s_dft_real) + (s_dft_image*s_dft_image)));
                }
                return 1;
        }
        return 0;
}

本程序流程大概是这样:
定时读取ADC,计算5个频率点的实部与虚部,采集64点后计算5个频率点的功率,称之为功率谱
当功率值达到一定值后,认为是一帧语音开始,此后计算的34次功率谱分别存入数组中.
若是在训练状态,则将这34个功率谱存入模板数组,训练完毕后进入识别状态.
在识别状态下,用这34个功率谱去与模板匹配,找出误差最小的,若误差小于一定值,则识别成功.
目前程序只识别两个命令,识别率还不太理想,偶尔会有误码.
如果把模板存进EEPROM,则可以增加命令的个数.
程序量较小,占用内存也小,可以很方便的移植到AVR单片机.

电路用了AGC,就是把2SK30A当作可变电阻,GS间负电压越大,DS间电阻越大.
据说可以用发光二极管+光敏电阻来做AGC.
初步的实验也可以用电脑音频输出串联电容到ADC输入口,至少这样每次放出来的声音是一样的,便于验证

频谱计算是否正确.

附件中有一个用VB写的查看波形的程序,只需通过串口向它发送数据就行了,格式是0xAA+数据字节数+数据
识别结果.jpg里每行最后一个字节是结果,为0表示未能识别,前10行是对命令1的识别,后10行是对命令2的识别

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-19 22:58:20 | 显示全部楼层
这个厉害呀,顶帖!

出0入0汤圆

发表于 2012-5-19 23:16:58 | 显示全部楼层
语音 图像 这一块其实前景挺大的
因为用户会觉得交互越来越好了

出0入0汤圆

发表于 2012-5-19 23:19:56 | 显示全部楼层
这个得好好看看,我们现在的语音合成方案,声音不怎么好。

出0入0汤圆

发表于 2012-5-19 23:24:11 | 显示全部楼层
用光耦做AGC应该可行

出0入0汤圆

发表于 2012-5-19 23:34:04 | 显示全部楼层
wxw123321 发表于 2012-5-19 23:19
这个得好好看看,我们现在的语音合成方案,声音不怎么好。

LZ的是语音识别喔

出0入0汤圆

发表于 2012-5-19 23:43:22 | 显示全部楼层
对的,是看错了,不过这个也不容错过哈,业余学习一下

出0入0汤圆

发表于 2012-5-19 23:46:48 | 显示全部楼层
有谁能把这语音识别电路详细讲解下?  对AGC部分不太明了。

出0入0汤圆

发表于 2012-5-19 23:49:56 | 显示全部楼层
不是MEGA32吗,怎么又是51的

出0入0汤圆

发表于 2012-5-20 01:52:48 | 显示全部楼层
太需要了,及时雨啊

出0入13汤圆

发表于 2012-5-20 08:58:12 来自手机 | 显示全部楼层
学习,这个很有用!

出0入0汤圆

发表于 2012-5-20 09:12:12 | 显示全部楼层
特来学习

出0入4汤圆

发表于 2012-5-20 09:50:42 | 显示全部楼层
will try it later.

出0入0汤圆

发表于 2012-5-20 09:55:26 | 显示全部楼层
这个东西好

出0入0汤圆

发表于 2012-5-20 10:11:57 | 显示全部楼层
这个猛料啊!怎么没置酷啊!

出0入0汤圆

发表于 2012-5-20 10:19:57 | 显示全部楼层
牛掰啊,学习了

出0入0汤圆

发表于 2012-5-20 11:04:17 | 显示全部楼层
这个资料猛啊,可以置酷了。

出0入34汤圆

发表于 2012-5-20 11:15:14 | 显示全部楼层
這太酷了,很喜歡研究這方面的東西,真的是即時雨呀! 不的不說一個贊字!!

出0入0汤圆

发表于 2012-5-20 18:48:01 | 显示全部楼层
有两位MM也是做了这个,原理好像差不多http://people.ece.cornell.edu/la ... %20yz526/index.html

出0入0汤圆

发表于 2012-5-20 18:55:36 | 显示全部楼层
这个要标记一下

出0入0汤圆

 楼主| 发表于 2012-5-20 20:48:33 | 显示全部楼层
smfox10 发表于 2012-5-20 18:48
有两位MM也是做了这个,原理好像差不多http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects ...

这个貌似是用的"沃尔什(Walsh)变换"呀,速度应该会快些,就是没有看到源代码

出0入0汤圆

发表于 2012-5-20 21:03:11 | 显示全部楼层
核心问题是识别率有多少? 不过能有这个思路果断要赞一个... 个人觉得模版的提取是个大学问...

出100入0汤圆

发表于 2012-5-20 21:21:43 | 显示全部楼层
这东西要的!

出0入0汤圆

发表于 2012-5-20 23:02:56 | 显示全部楼层
这个可特别的厉害啊!

出0入0汤圆

发表于 2012-5-20 23:08:00 | 显示全部楼层
标记一下!!

出0入0汤圆

发表于 2012-5-21 11:37:46 | 显示全部楼层
不错啊!!记录一下!!

出0入0汤圆

发表于 2012-5-21 11:39:42 | 显示全部楼层
smfox10 发表于 2012-5-20 18:48
有两位MM也是做了这个,原理好像差不多http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects ...

那两个mm不错!!!

出0入0汤圆

发表于 2012-5-23 10:23:19 | 显示全部楼层
mark!

出0入0汤圆

发表于 2012-5-23 10:35:03 | 显示全部楼层
标记,用得着

出0入0汤圆

发表于 2012-5-23 10:55:43 | 显示全部楼层
这个有意思,还可以发挥发挥。

出0入0汤圆

发表于 2012-5-23 19:13:49 | 显示全部楼层
楼主太利害了!学习学习了。

出0入0汤圆

发表于 2012-5-23 19:54:05 | 显示全部楼层
这可是一个好东西,一定要试下.

出10入10汤圆

发表于 2012-5-23 20:05:47 | 显示全部楼层
非特定人识别不好搞

出0入0汤圆

发表于 2012-5-23 21:22:55 | 显示全部楼层
用51搞出这个,实在是太厉害啦~!~~~~~~~~~~
头像被屏蔽

出0入0汤圆

发表于 2012-5-24 07:44:12 | 显示全部楼层
cool !

出0入0汤圆

发表于 2012-5-24 08:31:37 来自手机 | 显示全部楼层
mark
来自:amoBBS 阿莫电子论坛 Android客户端

出0入0汤圆

发表于 2012-5-24 08:48:30 | 显示全部楼层
非特定人识别咋搞的呢?

出0入0汤圆

 楼主| 发表于 2012-5-24 08:57:21 | 显示全部楼层
armok 发表于 2012-5-24 07:44
cool !

呵呵,多谢阿莫

出90入372汤圆

发表于 2012-5-24 09:22:21 | 显示全部楼层
很好的资料,马渴!

出0入4汤圆

发表于 2012-5-24 09:24:36 | 显示全部楼层
8位机做FFT太耗资源,不如搞两个324,一级前级放大,加5个带通一个高通,一个低通,然后学习这7路输出的特性。

有一广告词在我桌面摆了好久,忘了是TI还是AD的。  --- 世界还是模拟的。

把模拟的事情交个模拟IC做,逻辑的交个MCU做。可能效率更高。

出0入0汤圆

发表于 2012-5-24 09:26:59 | 显示全部楼层
学习了      

出0入0汤圆

发表于 2012-5-24 09:31:48 | 显示全部楼层
顶一下!

出0入4汤圆

发表于 2012-5-24 09:42:45 | 显示全部楼层
http://wenku.baidu.com/view/b8ce ... ight=15&count=5

http://wenku.baidu.com/view/cf7d ... ight=17&count=5

http://wenku.baidu.com/view/46cb ... ight=17&count=5

出350入8汤圆

发表于 2012-5-24 09:46:12 | 显示全部楼层
好帖留名!

出0入0汤圆

 楼主| 发表于 2012-5-24 11:40:56 | 显示全部楼层
gmyu 发表于 2012-5-24 09:24
8位机做FFT太耗资源,不如搞两个324,一级前级放大,加5个带通一个高通,一个低通,然后学习这7路输出的特 ...

各有各的优点,模拟电路速度快,数字的方式更灵活.
其实8位机做FFT也不会消耗太多资源,比如用ATMEGA8就能实现128点FFT,如果这个用模拟电路搭出来得多少阶滤波多少个运放呀.

出0入4汤圆

发表于 2012-5-24 11:47:04 | 显示全部楼层
说的也对,有时间用STM8试试,如果后续处理太复杂就用两个MCU,哈哈,双核。关键是经验参数需要花时间提取。

出0入0汤圆

发表于 2012-5-24 12:48:14 | 显示全部楼层
语音识别。音源怎么弄的呢

出0入0汤圆

 楼主| 发表于 2012-5-24 12:56:50 | 显示全部楼层
tangguanglun 发表于 2012-5-24 12:48
语音识别。音源怎么弄的呢

音源可以自己说话呀,或者用手机录音,或者用windows录音机

出0入0汤圆

发表于 2012-5-24 14:22:06 | 显示全部楼层
厉害阿!语音识别

出0入0汤圆

发表于 2012-5-24 15:02:07 | 显示全部楼层
好东西啊!!

不过没看懂是怎么回事!!

出0入30汤圆

发表于 2012-5-24 15:10:02 | 显示全部楼层
学习学习。很强大

出0入0汤圆

发表于 2012-5-24 15:57:07 | 显示全部楼层
MARK!  非常感谢!

出0入0汤圆

发表于 2012-5-24 16:04:06 | 显示全部楼层
MEGA32是avr吗
头像被屏蔽

出0入0汤圆

发表于 2012-5-25 15:20:18 | 显示全部楼层
语音识别 mark

出0入0汤圆

发表于 2012-5-25 23:11:27 | 显示全部楼层
可以好好学习下

出0入0汤圆

发表于 2012-5-25 23:30:03 | 显示全部楼层
mark  顶上来

出0入0汤圆

发表于 2012-5-25 23:35:53 | 显示全部楼层
这个有空得试试

出0入0汤圆

发表于 2012-6-5 09:07:45 | 显示全部楼层
精辟啊     

出0入0汤圆

发表于 2012-6-13 07:28:32 | 显示全部楼层
不错,学习了  

出0入0汤圆

发表于 2012-6-13 08:08:30 | 显示全部楼层
很强大啊,期待更低误码,更多命令

出0入0汤圆

发表于 2012-6-13 09:08:52 | 显示全部楼层
算法还有很多可以改进的地方

出0入0汤圆

发表于 2012-6-13 14:46:54 | 显示全部楼层
lcw_swust 发表于 2012-5-20 20:48
这个貌似是用的"沃尔什(Walsh)变换"呀,速度应该会快些,就是没有看到源代码

有源码的,仔细找找

出0入30汤圆

发表于 2012-6-13 14:56:02 | 显示全部楼层
MARK.个人也觉得这方面前景不错。

出0入0汤圆

发表于 2012-6-13 15:17:35 | 显示全部楼层
标注,等有时间学习一下

出0入0汤圆

发表于 2012-6-13 23:21:32 | 显示全部楼层
在新域名下标记一下

出0入0汤圆

发表于 2012-6-14 12:32:45 | 显示全部楼层
很好的资料,特来学习

出0入0汤圆

发表于 2012-6-14 15:39:04 | 显示全部楼层
强大,顶

出0入0汤圆

发表于 2012-6-14 15:44:45 | 显示全部楼层
这个确实比较cool  之前用过一款语音芯片无疑增加了硬件成本。这样既好了。

出0入0汤圆

发表于 2012-6-17 00:33:32 | 显示全部楼层
不错,mark一下日后研究

出0入0汤圆

发表于 2012-6-17 08:25:30 | 显示全部楼层
语言识别,能识别人 就难了

出0入0汤圆

发表于 2012-6-17 09:33:22 | 显示全部楼层
好东西,必须顶!

出0入0汤圆

发表于 2012-6-17 11:27:45 | 显示全部楼层
学习学习..........................

出0入0汤圆

发表于 2012-6-17 11:56:57 | 显示全部楼层
不错,想法和效果都挺好的

出0入0汤圆

发表于 2012-6-17 22:14:05 | 显示全部楼层
好东西,学习了!

出0入0汤圆

发表于 2012-6-18 16:23:19 | 显示全部楼层
不知STM8能否搞定啊,不过即使能做出来,和台湾那些带51核的专业语音识别芯片比,效果应该还是要差很多的,而且此类芯片已经可以做到20元以下啦,就是资料太少了……

出0入0汤圆

发表于 2012-6-20 16:55:49 | 显示全部楼层
真是好东西!

出0入0汤圆

发表于 2012-6-20 21:48:06 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2012-6-21 09:58:23 | 显示全部楼层
这个好,mark下

出0入0汤圆

发表于 2012-6-21 10:01:24 | 显示全部楼层
mark                           

出0入0汤圆

发表于 2012-6-21 11:17:29 | 显示全部楼层
很好的东东
支持

出0入0汤圆

发表于 2012-6-21 15:27:45 | 显示全部楼层
好厉害谢谢         楼主

出0入0汤圆

发表于 2012-6-21 21:34:11 | 显示全部楼层
好好学习 不懂的太多了 算法

出0入0汤圆

发表于 2012-8-11 19:53:27 | 显示全部楼层
   mark               

出0入17汤圆

发表于 2012-8-11 20:53:59 | 显示全部楼层
好东西,要顶上去!!!!!!!!!!!

出0入0汤圆

发表于 2012-9-7 21:18:16 | 显示全部楼层
参考下,正准备做个语言控制系统。

出0入0汤圆

发表于 2012-9-8 08:02:49 来自手机 | 显示全部楼层
谢谢分享了         

出0入0汤圆

发表于 2012-9-8 08:16:39 | 显示全部楼层
xuexiyixia

出0入0汤圆

发表于 2012-9-25 23:44:29 | 显示全部楼层
mark,方便学习

出0入0汤圆

发表于 2012-9-25 23:52:10 | 显示全部楼层
MARK               

出0入0汤圆

发表于 2012-9-26 00:01:09 | 显示全部楼层
不错 哦~~~~~~

出0入0汤圆

发表于 2012-9-26 10:26:50 | 显示全部楼层
菜鸟漂过~~~

出0入0汤圆

发表于 2012-9-26 10:28:17 | 显示全部楼层
好厉害.exe

出0入0汤圆

发表于 2012-9-26 11:51:33 | 显示全部楼层
这个很牛

出0入0汤圆

发表于 2012-9-26 11:54:24 | 显示全部楼层
好东西,做一个标签!

出0入0汤圆

发表于 2012-9-26 21:26:31 | 显示全部楼层
语音识别

出0入0汤圆

发表于 2012-10-5 19:37:50 | 显示全部楼层
顶,喜欢看数学算法的帖子

出0入0汤圆

发表于 2012-10-23 06:28:51 | 显示全部楼层
学习了!!!

出0入0汤圆

发表于 2012-10-23 08:43:08 | 显示全部楼层
        mark

出0入0汤圆

发表于 2012-10-23 09:00:26 | 显示全部楼层
cool                                                                  

出0入0汤圆

发表于 2012-11-27 16:41:14 | 显示全部楼层
MARK  音频通信
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 19:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表