毕业论文

打赏
当前位置: 毕业论文 > 电子通信 >

SPCE061A语音控制小车设计+源代码(11)

时间:2016-12-15 19:41来源:毕业论文
break; case COMMAND_GO_ID: //识别出第一条命令 GoAhead(); //执行动作一:直走 break; case COMMAND_BACK_ID://识别出第二条命令 BackUp(); //执行动作二:倒车 break; case COMM


            break;
        case COMMAND_GO_ID:    //识别出第一条命令
            GoAhead();                //执行动作一:直走
            break;
        case COMMAND_BACK_ID://识别出第二条命令
            BackUp();                //执行动作二:倒车
            break;
        case COMMAND_LEFT_ID:    //识别出第三条命令
            TurnLeft();                //执行动作三:左转
            break;
        case COMMAND_RIGHT_ID://识别出第四条命令
            TurnRight();                //执行动作四:右转
            break;
        default:
            break;
        }
    }
}
(13)实现中断服务的程序
void IRQ5(void)__attribute__((ISR));        //运动定时控制
void IRQ5(void)
{
    if(uiTimecont++ == uiTimeset)
    {
        *P_IOB_Data = 0x0000;
    }
    *P_INT_Clear = 0x0004;
}

4.2 模块设计
4.2.1中断流程图部分
SPCE061单片机有两个外部中断,分别为EXT1和EXT2,两个外部输入脚分别为B口的IOB2和IOB3的复用脚。EXT1(IOB2)和EXT2(IOB3)两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断以负跳沿触发方式来输入中断请求信号。EXT1(IOB2)为黑线检测,确定小车位置,EXT2(IOB3)为轮子转数检测用于计算路程。IRQ4用做整个行程的时间计数。
图15 中断服务流程图
4.2.2语音识别部分
在这里我们用的是SPCE061的特定语者辨识SD(Speaker Dependent),SD即语音样板由单个人训练,也只能识别训练某人的语音命令,而他人的命令识别率较低或几乎不能识别。
(1) 语音的准备:
可利用计算机进行录音,选择录音效果一般的MIC比较好,因为小车跑动时要受环境的影响,效果一般的MIC录制的音更加接近凌阳单片机上的MIC所录制的。录制语音可为:“yeah”,“烦不烦”,“前进”,“倒退”,“拐就拐”。分别保存名称为:yeah.48k、qj.48k、dt.48k zg.48k、yg.48k.
语音录制时,注意录制属性设置,最好选择为8Khz,  16位,单声道。语音录制好后,保存格式为“.wav”,利用凌阳单片机光盘内目录“\TOOLS\s480\”下的工具进行语音压缩后放在程序目录“\voice”下边,然后修改配置文件“Makefile”中的OBJFILES的值以及对应的语音文件的目录地址值和“clean”的值 ,并且配置值顺序必须对应于语音训练的过程。
该程序模块包括三部分:训练样本、识别、语音提示。具体程序见主程序。见下图整体框图。
  图16 语音辨识整体框图
在程序中我们通过五条语句的训练演示特定人连续音识别,其中第一条语句为触发名称。另外四条为命令,训练完毕开始辨识当识别出触发名称后,开始发布命令,则会听到自己设置的应答,具体流程图如图22。 SPCE061A语音控制小车设计+源代码(11):http://www.751com.cn/tongxin/lunwen_1001.html
------分隔线----------------------------
推荐内容