ISD9160学习笔记05_ISD9160语音识别代码分析
前言
语音识别是特别酷的功能,ISD9160的核心卖点就是这个语音识别,使用了Cybron VR 算法。
很好奇这颗10块钱以内的IC是如何实现人家百来块钱的方案。且听如下分析。
本文作者twowinter,转载请注明:http://blog.csdn.net/iotisan/
功能分析
语音识别例程中做了21条语音识别模型,只要识别到对应的语音,就从串口输出对应模型的命令ID。
具体21条命令如下:
全开模式 0 显示为1
外出模式 1 显示为2
房间开启 2 。。。
房间关闭 3
单灯变色 4
多灯变色 5
全部变色 6
打开开关 7
关闭开关 8
打开插座 9
关闭插座 10
我要开灯 11
我要关灯 12
打开空调 13
关闭空调 14
温度升高 15
温度降低 16
打开电视 17
关闭电视 18
更换频道 19
降低音量 20
增加音量 21
代码分析
代码主循环的逻辑特别清晰,我把主干抽出来,方便大家理解。
int32_t DoVR_sep()
{
Wave_StartRecord();
CSpotter_Reset(hCSpotter); while () {
nNumSample = Wave_GetSample(&lpsSample); if (CSpotter_AddSample(hCSpotter, lpsSample, nNumSample) == CSPOTTER_SUCCESS){
nID = CSpotter_GetResult(hCSpotter);
DrvUART_Write(UART_PORT0,&nID,); //confid 20150603
}
Wave_UnlockSample(&lpsSample);
}
}
Wave_StartRecord开始录音,Wave_GetSample取出音频数据。
CSpotter_AddSample进行语音识别,CSpotter_GetResult识别出语音命令ID,最后DrvUART_Write吐出ID。
如何修改自定义语音命令
原定计划是修改自定义语音命令,但是发现这块资料很少。对于如何实现语音识别的Cybron VR算法,这块是封装成库,具体是“CSpotterSDK16k24d.lib”。这部分底层核心不开放,是可以理解。但是在具体应用时,使用什么工具来产生具体的声音模型,却一直没能找到对应工具。
总结
可以看到ISD9160是可以实现本地一些预置的语音命令,基本上可以比的上一些几十块钱的模块。但是如何实现自定义的语音命令,还需要继续研究。
ISD9160学习笔记05_ISD9160语音识别代码分析的更多相关文章
- jQuery 学习笔记:jQuery 代码结构
jQuery 学习笔记:jQuery 代码结构 这是我学习 jQuery 过程中整理的笔记,这一部分主要包括 jQuery 的代码最外层的结构,写出来整理自己的学习成果,有错误欢迎指出. jQuery ...
- SPSS学习笔记之——Kaplan-Meier生存分析
SPSS学习笔记之--Kaplan-Meier生存分析 一.概述 关于生存分析的相关概念,Kaplan-Meier用于估计生存函数,允许有一个分组变量进行生存率的组间比较,还容许一个分层变量.若不考虑 ...
- Nginx学习笔记4 源码分析
Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- ISD9160学习笔记04_ISD9160音频编码代码分析
前言 录音例程涉及了录音和播放两大块内容,上篇笔记说了播放,这篇就来说说录音这块,也就是音频编码这部分功能. 上篇笔记中的这段话太装逼了,我决定再复制下,嘿嘿. “我的锤子便签中有上个月记下的一句话, ...
- ISD9160学习笔记03_ISD9160音频解码代码分析
录音例程涉及了录音和播放两大块内容,这篇笔记就先来说说播放,暂且先击破解码这部分功能. 我的锤子便签中有上个月记下的一句话,“斯蒂芬·平克说,写作之难,在于把网状思考,用树状结构,体现在线性展开的语句 ...
- Hadoop学习笔记—20.网站日志分析项目案例(三)统计分析
网站日志分析项目案例(一)项目介绍:http://www.cnblogs.com/edisonchou/p/4449082.html 网站日志分析项目案例(二)数据清洗:http://www.cnbl ...
- Jquery学习笔记1-jquery总体代码框架
第一次在博客中记录自己的笔记,希望能坚持下去吧,加油! 今天学习的是Jquery的源代码,官网上下载,然后使用DW(dream waver)编辑器打开Js(下载的是未压缩版),版本是2.0.3.第一次 ...
- Hadoop学习笔记—20.网站日志分析项目案例
1.1 项目来源 本次要实践的数据日志来源于国内某技术学习论坛,该论坛由某培训机构主办,汇聚了众多技术学习者,每天都有人发帖.回帖,如图1所示. 图1 项目来源网站-技术学习论坛 本次实践的目的就在于 ...
随机推荐
- Axiom3D:Ogre中Mesh网格分解成点线面。
这个需求可能比较古怪,一般Mesh我们组装好顶点,索引数据后,直接放入索引缓冲渲染就好了.但是如果有些特殊需要,如需要标注出Mesh的顶点,线,面这些信息,以及特殊显示这些信息. 最开始我想的是自己分 ...
- SAP+ 差旅报销集成方案的实现
跨国集团通常都会有一个财务共享中心SSC的集中处理业务部门,用于统计来自各个公司的差旅报销,而1).传统的OA审批 虽然审批流是优势存在着需要SAP数据二次录入,数据不同步等困难,2).如果终端用户都 ...
- 一个hadoop hdfs put 文件失败的小情况
/root/abc sudo -u hdfs hdfs dfs -put abc /user/larry 然而,提示“put: `abc': No such file or directory”. 一 ...
- Linux-HA实战(3)— 基于Pacemaker搭建TFS Nameserver HA
上篇文章简单介绍了下基于Heartbeat的虚拟IP配置,个人觉得简单易用已经能够应付大部分场景了.但是既然花时间研究HA,如果仅限于一个虚拟IP飘来飘去未免有点糊弄任务了,因此这篇文章打算介绍下基于 ...
- javapms部署之后首页不能正常显示问题
今天在ligerui的技术群里看见了javapms,于是就到官网逛了逛 首先要做的就是了解了javapms使用到的技术 然后下载了程序安装包javapms_v1.1_beta(官网下载失败了,就bai ...
- 联想服务器X3650 M2 配置 RAID5 + 热备盘
实验环境: 1. 服务器型号联想 System X3650 M2 2. 六块300G SAS硬盘 实验目的: 配置RAID 5 ,搭建重要文件备份服务器. 标注:本教程六块硬盘,其中五块硬盘做R ...
- “A configuration with this name already exists” error in eclipse run configurations
“A configuration with this name already exists” error in eclipse run configurations Is there a way t ...
- 彻底搞清楚Java并发 (一) 基础
多线程编程是为了让程序运行得更快,但是不是说,线程创建地越多越好,线程切换的时候上下文切换,以及受限于硬件和软件资源的限制问题 上下文切换 单核CPU同样支持多线程编程,CPU通过给每个线程分配CPU ...
- Android Studio配置设置
文章来源:http://www.cnblogs.com/smyhvae/p/4390905.html
- Python的Beautiful Soup简单使用
Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据 Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能 它是一个工具箱, ...