(注意:高手就不用看了,初学者可以看看)
做了一个多星期的语音识别,现在把我个人的总结写在下面:
1,首先要要明确训练时的语音放在SRAM中,(注意:不会和变量空间冲突),要播放语音提示音信息放在flash中
2,就是resource.asm的播放表了:
.PUBLIC T_SACM_S480_SpeechTable
T_SACM_S480_SpeechTable:
.DW _RES_1_48K_SA//0 请输入触发名称
.DW _RES_2_48K_SA//1 请输入第一条命令
//0:代表索引号,例如:
SACM_S480_Play(Result, 3, 3); //播放资源中的SACM_S480语音,Result为语音索引号:定义在resource.asm中(T_SACM_S480_SpeechTable)的偏移地址 ,你Result=0则播放1.48K这个文件,Result=1则播放2.48K这个文件。播放文件的先后顺序只和代表索引号有关系,跟文件在resouce中的排列顺序无关。
3,语音识别和语音播放函数有的会开一个FIQ定时中断。语音播放是频率好象为8hz左右(具体还不太清楚)也就是说它每过一段时间就要产生一次中断去取数据来播放,识别训练时也一样的吧(具体也不是很清楚)每过一段时间也采样一次
4,多组识别时每组都要一个触发命令
5,为了做到每次掉电时不用重新训练,办法:把训练语音模型先保存到flask中,系统上电时,在把保存的语音模型从flash中导出到sram中,具体做法请参考:语音小车。多组识别也是一个道理,把每组训练的结果先保存到flash中,当用到某组时就把相应的语音模型导出到sram中。
好了先写这么多了,有时间我再补充。
觉得对你有用,就顶一下!!!!!!!!!!
ilove314_323192455 2008-8-29 19:50