用单片机实现语音控制机器人
- 格式:doc
- 大小:317.00 KB
- 文档页数:14
单片机控制的移动机器人设计与实现第一章绪论随着科技的不断发展,人们的生活变得越来越便捷。
移动机器人的出现,更是让人们惊叹不已。
移动机器人可以帮助人们完成很多工作,同时也节省了人力。
然而,机器人的制作不是一件简单的事情。
本文就是关于单片机控制的移动机器人设计与实现。
第二章移动机器人硬件设计2.1 机器人整体设计移动机器人的硬件设计非常重要,这决定了机器人的移动和性能。
本设计采用的是四轮驱动的设计:1、整体设计:长500mm,宽400mm,高350mm。
2、四轮:选用直径为64mm和宽20mm的带凸起的轮胎,可以很好的适应各种地形,同时也增加了机器人的摩擦力。
3、四个马达:每个马达在机器人的四个角上,一旦收到指令,会以不同的速度改变以实现机器人的转向和前进。
2.2 单片机的选取和控制机器人的移动需要一个稳定和可靠的单片机控制系统,本设计采用了TI公司的MSP430系列单片机,起到了控制机器人整体运动的作用。
MSP430是一种微控制器,具有一些出色的特性,如低功耗、高性能和具有4KB闪存等。
MSP430可用于更小的电池和能源收集器,以增强其节能优势。
为了实现机器人的移动,要连接四个电机。
在这里,我们需要使用4根PWM(脉宽调制)针,针的输出建立在50Hz左右的频率上,占空比为0到100%。
如果占空比等于0,电机则停止。
如果占空比为100,则电机运行在最大速度。
但是,光有单片机是没法工作的。
需要让单片机通过各个端口去激活电机,从而让机器人运动起来。
为此,我们需要添加一个工作板和一个电机驱动器。
在本项目中,我们使用了L293NE电机驱动器来控制机器人的电机。
2.3 传感器的选择和使用为了让机器人更智能化和敏感,我们需要添加传感器模块。
这里我们使用了一些传感器:1、红外测距传感器:可实现对障碍物的监测和机器人在路上的规划。
2、光电编码器:用于了解单轮旋转一定角度的时间。
3、加速度传感器:利用这个传感器,可以了解机器人的加速度和速度,从而更准确地控制机器人的运动。
单片机在机器人技术中的应用机器人技术是近年来快速发展的领域之一,而单片机作为机器人控制的核心部件,发挥着至关重要的作用。
本文将介绍单片机在机器人技术中的应用,并探讨其优势和未来发展趋势。
一、单片机的概念和特点单片机,全称为单片微型计算机,是一种集成度超高的微型计算机系统,包含了CPU、RAM、ROM、I/O等功能模块。
相比于传统的微型计算机,单片机具有体积小、功耗低、成本低、易于集成和编程等优势。
二、单片机在机器人控制中的应用1. 传感器接口机器人需要通过各种传感器获取环境信息,单片机可以提供丰富的接口用于连接各种传感器,如温度传感器、声音传感器、图像传感器等。
通过单片机的数据处理能力,可以将传感器获取的信息转化为控制指令,实现智能的环境感知和响应。
2. 运动控制机器人需要准确地执行各种运动动作,单片机可以通过控制电机驱动器实现精确的运动控制。
通过编程控制单片机输出电平和PWM信号,可以精确控制电机的转速、方向和角度,从而实现机器人的运动。
3. 决策与控制机器人需要根据环境信息做出决策,并实时控制各个执行机构。
单片机具有较强的控制能力和逻辑处理能力,能够实时解析传感器信息并做出相应的决策,对机器人的动作进行精确定时控制。
4. 通信和网络现代机器人技术离不开与外部设备的通信和网络连接,单片机通常支持各种通信协议,如UART、SPI和I2C等。
通过单片机的通信功能,可以实现机器人与计算机、其他机器人或云服务器的连接,实现数据传输和远程控制。
三、单片机在机器人技术中的优势1. 灵活性和可扩展性单片机具有易编程的特点,可以根据实际需求进行灵活的功能扩展和定制。
通过编写程序,可以实现各种复杂的控制算法和功能,满足不同机器人应用的需求。
2. 低成本和低功耗单片机的制造成本相对较低,能够为机器人技术提供经济实惠的解决方案。
同时,单片机的功耗很低,有利于提升机器人的续航能力和工作效率。
3. 实时性和稳定性单片机通常具有快速的数据处理能力和响应速度,可以实现实时的控制和反馈。
单片机在机器人技术中的应用机器人技术是一个蓬勃发展的领域,它正在改变着我们的生活和工作方式。
单片机作为一种重要的电子器件,广泛应用于机器人技术的各个方面。
本文将从控制系统、传感器、运动控制等方面探讨单片机在机器人技术中的应用。
一、控制系统机器人是由一系列的电子和机械组件组成的系统,它需要一个稳定而高效的控制系统来实现各种功能。
单片机可作为机器人的主控制器,负责处理各种输入输出信号,并根据预定的算法进行决策与控制。
单片机具有成本低、功耗低、体积小等特点,非常适合用于机器人控制系统。
例如,在自动导航机器人中,单片机可以接收和处理来自传感器的数据,进行路径规划和避障判断,并通过控制电机实现机器人的行走和转向。
在工业机器人中,单片机可以实现各个关节的运动控制和协调,精确控制机器人的动作。
二、传感器机器人需要获取外界环境的信息,需要各种传感器来感知周围的状态和变化。
单片机可以与各种传感器进行通信,实现对外部环境的感知和控制。
例如,机器人可以使用红外线传感器、超声波传感器等来检测距离、避障或测量光照强度。
单片机可以通过串口或者其他通信方式与这些传感器进行连接,并实时获取传感器数据。
另外,视觉传感器是机器人非常重要的一种传感器。
机器人可以通过摄像头等设备获取图像信息,并通过单片机进行图像处理和分析。
这种应用非常广泛,例如在无人驾驶汽车、智能家居领域。
三、运动控制机器人需要根据外界信号进行运动控制,实现各种动作和工作。
单片机可以作为机器人的运动控制器,控制电机的转速、转向和位置。
例如,在工业机器人中,单片机可以通过控制电机的电流和脉冲信号,实现机械手臂的各项动作。
在无人机中,单片机可以控制电机的转速和角度,实现飞行器的平稳升降和悬停。
此外,单片机还可以实现机器人的闭环控制。
通过传感器获取机器人自身的状态信息,与预设目标进行比对和调整,使机器人保持稳定的运动状态。
总结:单片机在机器人技术中起着重要的作用,它可以作为机器人的控制器、传感器的接口和电机的驱动器,实现机器人的各种功能和动作。
单片机在人工智能中的应用随着科技的不断发展,人工智能(AI)正在崭露头角并逐渐应用于各个领域。
单片机作为一种集成了处理器、存储器和各种输入输出接口的微型计算机芯片,也开始在人工智能领域发挥着重要作用。
本文将探讨单片机在人工智能中的应用,并介绍其背后的原理和技术。
一、人工智能概述人工智能是指通过模拟人类的思维过程,使机器能够实现一定程度的智能。
它包括机器学习、深度学习、模式识别等技术,可以用于图像识别、语音识别、自动驾驶等众多领域。
二、单片机的基本原理单片机是一种嵌入式系统,由集成电路制成,内部集成了CPU、存储器和各种外设接口。
它具有体积小、功耗低、成本低等优点,适合用于各种智能设备中。
三、单片机在图像识别中的应用图像识别是人工智能领域的重要应用之一。
单片机通过连接相机模块,可以获取实时图像信息,然后利用图像处理算法进行分析,识别出图像中的目标物体。
这种应用可以用于人脸识别、物体检测、手势识别等场景。
四、单片机在语音识别中的应用语音识别是指通过机器听取语音输入并将其转化为文本或命令的技术。
单片机可以通过连接麦克风模块,获取外部环境中的声音信息,并将其传输到处理器进行分析。
通过学习和训练,单片机可以逐渐提高对语音的识别准确率。
五、单片机在机器人领域的应用机器人是人工智能领域的重要应用方向,而单片机则是机器人的核心控制中心。
单片机通过连接传感器和执行器等外设,可以实现对机器人的控制。
通过编程和算法的设计,单片机可以让机器人实现各种功能,如避障、路径规划、物品抓取等。
六、单片机在智能家居中的应用智能家居是指利用人工智能技术,使居住环境更加智能化和便捷化的系统。
单片机可以作为智能家居中的控制中心,通过连接传感器、执行器、家电等设备,实现对家居设备的远程控制和自动化操作。
例如,通过连接单片机和温湿度传感器,可以实现对室内温度和湿度的监测和调节。
七、单片机在智能交通中的应用智能交通是指利用人工智能技术对交通系统进行智能化管理和控制的系统。
单片机与人工智能的结合实现智能机器人在科技不断发展的今天,单片机与人工智能的结合已经成为一个充满潜力和前景的领域。
这种结合使得智能机器人成为可能,它们能够模拟人类的思维和行为,并在许多领域发挥作用。
本文将探讨单片机与人工智能的结合如何实现智能机器人,并分析其在日常生活和工业领域的应用。
一、单片机的基础知识在介绍单片机与人工智能的结合之前,我们先来了解一下单片机的基础知识。
单片机指的是一种集成电路,它集中了处理器、存储器、输入输出接口等功能模块,具有体积小、功耗低、成本低等特点。
单片机广泛应用于各种电子设备中,例如家电、汽车电子、医疗设备等。
二、人工智能的基础知识人工智能是一门研究如何使计算机具备人类智能的学科。
它涉及到许多领域,包括机器学习、自然语言处理、图像识别等。
人工智能的目标是让计算机能够像人类一样思考、学习和决策,从而实现智能化的功能。
三、单片机与人工智能的结合将单片机与人工智能结合起来,可以实现智能机器人的功能。
智能机器人是能够感知环境、理解人类语言、做出相应反应的机器人。
单片机提供了硬件平台,而人工智能则提供了智能算法和模型,二者相结合可以实现智能机器人的各种功能。
1.感知环境智能机器人需要能够感知环境,即通过传感器获取外部信息。
单片机可以与各种传感器进行连接,例如温度传感器、声音传感器等。
通过人工智能算法的处理,智能机器人可以对感知到的信息进行分析和识别,从而准确把握当前环境。
2.理解人类语言智能机器人还需要能够理解人类语言,与人进行交流。
通过语音识别算法,智能机器人可以将人类语言转化为数字信号,进行语义解析和指令理解。
此时,单片机可以作为控制中心,根据解析的指令执行相应的操作。
3.做出相应反应智能机器人可以通过单片机控制的执行机构来做出相应的反应。
例如,当接收到指令时,机器人可以通过电机运动、展示表情等方式作出反应。
这些反应可以根据人工智能算法的优化来实现更加智能化的效果。
四、智能机器人的应用智能机器人在日常生活和工业领域有着广泛的应用。
单片机智能机器人控制技术应用智能机器人控制技术是当今科技领域的热门话题之一,其中单片机智能机器人控制技术的应用更是备受关注。
本文将介绍单片机智能机器人控制技术的概念、应用领域以及未来发展前景。
一、单片机智能机器人控制技术概述单片机智能机器人控制技术指的是利用单片机系统对机器人进行程序控制,使其能够实现各种自动化任务和智能化交互。
单片机作为一种集成度高、功耗低、成本较低的微处理器,广泛应用于各种领域,如通信、电子设备和机器人控制等。
单片机智能机器人控制技术的发展,为机器人行业带来了更多的创新和可能性。
二、单片机智能机器人控制技术应用领域1. 工业自动化在工业领域,智能机器人控制技术的应用可以提高生产效率和产品质量。
单片机智能机器人可以代替传统的人工劳动,实现自动化生产线。
通过预设的程序和传感器,机器人可以准确、高效地完成各种工艺操作,大大提升了生产效率,并降低了工业事故的风险。
2. 家庭服务随着智能家居技术的发展,单片机智能机器人逐渐走进千家万户,为人们提供便利的家庭服务。
单片机智能机器人可以承担家庭清扫、照顾老人和儿童等任务,使家庭生活更加舒适和便捷。
通过与智能家居系统的连接,机器人可以根据主人的需求进行语音控制和智能化交互。
3. 医疗保健单片机智能机器人控制技术在医疗保健领域的应用也具有巨大潜力。
机器人可以承担病房巡视、药物分发、康复训练等工作,为医疗人员提供有效的支持和协助。
此外,机器人还可以通过传感器监测患者的生理指标,及时反馈给医生,帮助提高医疗质量。
三、单片机智能机器人控制技术的发展前景随着各行各业对智能化、自动化的需求不断增加,单片机智能机器人控制技术的发展前景非常广阔。
未来,随着人工智能技术的不断进步,单片机智能机器人将具备更高的智能化水平和更广泛的应用。
例如,在军事领域,单片机智能机器人可以应用于战场侦查、无人驾驶飞机等,提高国防能力和作战效率。
在服务领域,机器人可以承担更多的工作,为人们提供更加便捷的生活和工作体验。
基于单片机简易机器人的设计与实现近些年,机器人科技的发展及其在实际生活中的应用受到了广泛关注,它不仅给人们带来了便利,也为社会发展和各行各业都带来了许多可能性与机遇。
随着人们对智能机器人技术的更深入研究,各类机器人已经成为当今社会中越来越受欢迎的一部分,人们也更加渴望了解和学习如何构建机器人。
基于单片机简易机器人的设计与实现是一项有趣又有意义的研究,这也是一个吸引人的领域。
其中的基本概念是利用计算机的思想设计一个机器人,它能够根据输入信号做出反应,控制电机或其他设备以及运行一些特定的任务。
本文将重点讨论利用单片机简易机器人的设计和实现。
首先,介绍机器人基本原理。
机器人是一个电子计算机系统,它可以从环境中获取信息,然后根据这些信息做出响应。
在最简单的情况下,一个机器人可以根据输入信号来控制一个电机,让它转动或移动到某一位置。
但是,机器人的设计并不仅仅是简单的控制电机,还需要设计各种功能模块,例如传感器模块、控制算法模块,与单片机的结合;还需要协调传感器和电机的输入和输出才能实现简单机器人的功能。
其次,介绍如何使用单片机来控制简易机器人。
单片机是一种微处理器,它是由一个小型的芯片组成的电子系统,专门用于统一控制和处理电子系统的计算任务,如控制电机,执行自动化控制等。
因此,我们可以使用单片机结合各类传感器和电机,将简易机器人的功能得以实现。
最后,介绍如何实现可编程机器人。
首先,需要安装操作系统,如Windows或Linux等,使用该操作系统中的应用软件与单片机结合控制和运行机器人。
其次,需要准备一个软件开发环境,例如C语言、C++等,使用该软件开发环境可以编写出控制机器人的程序,以实现不同的任务。
最后,将上述程序烧录到单片机,让其去控制机器人,实现可编程机器人的功能。
综上所述,基于单片机简易机器人的设计与实现是一项有趣又有意义的研究,它的核心思想是利用计算机的思想设计一个机器人。
利用单片机结合传感器和电机,可以控制机器人,实现某些特定任务。
单片机在智能工业机器人中的应用随着科技的发展和人工智能的崛起,智能工业机器人已经成为制造业的重要组成部分。
而单片机作为一种集成电路,具有体积小、功耗低、成本较低等优点,正在广泛应用于智能工业机器人中。
本文将探讨单片机在智能工业机器人中的应用,并分析其优势和挑战。
一、单片机控制智能工业机器人的基本原理智能工业机器人通常由多个执行器和传感器组成,通过单片机来控制机器人的各个部分进行精确的操作。
单片机作为控制中心,接收传感器的反馈信号,经过处理后,再发送相应的指令给执行器。
通过单片机的高度集成化和实时性,实现对机器人运动、感知和决策的控制,并能进行复杂的任务。
二、单片机在智能工业机器人中的应用领域1. 运动控制方面:单片机可以精确控制机器人的运动轨迹和速度,通过对电机驱动器和编码器的控制,实现机械臂的精确定位和运动。
2. 视觉感知方面:单片机可以接收摄像头等传感器获取到的图像信息,并对图像进行处理和分析。
通过图像识别算法,实现机器人对目标物体的识别和定位。
3. 智能决策方面:单片机可以通过对传感器数据的处理和分析,判断周围环境的变化。
根据预先设定的规则和算法,实现机器人的智能决策能力,使其能够适应不同的工作场景。
4. 物联网连接方面:单片机可以通过无线通信模块实现与其他机器人或控制中心的数据传输和通信。
这使得机器人可以实现协同工作,提高工作效率。
三、单片机在智能工业机器人中的优势1. 高度集成化:单片机集成了微处理器、存储器、输入输出接口等多个功能于一体,大大减小了智能工业机器人的体积,并提高了系统的可靠性。
2. 快速响应性:由于单片机的高速运算能力和实时性,可以快速处理和响应机器人的运动和感知需求,提高了机器人的响应速度和准确性。
3. 低功耗:单片机具有低功耗的特点,这在一些对电池供电的机器人应用中尤为重要,能够延长机器人的工作时间。
4. 开发灵活性:单片机的开发成本相对较低,且开发工具和平台丰富,开发人员可以根据需求进行定制和开发,提高了机器人的灵活性和可拓展性。
智能机器人语音控制系统的设计摘要语音识别技术是当今世界的研究热点之一,一直受到学术界和企业的普遍关注,语音识别技术的应用对于智能机器人的实用化会取到巨大的作用。
同时,通过智能机器人这一平台,也可以更好的研究语音技术的实用化问题,从而使之得到更广泛的运用。
本系统的设计的目的就是为了方便人机交互,论文首先介绍了智能机器人语音识别技术的发展历程,并分析了影响机器人语音识别的主要因素。
然后详细介绍了语音识别的原理以及在语音信号处理过程中采用的分析方法和技术。
接着介绍了芯片SPCE061A 单片机的特点,并以此芯片为主控芯片建立起了语音控制系统的硬件结构,并编写了相应的程序。
最后,通过对系统进行了调试和仿真得出结论:该机器人采用语音识别对机器人进行控制,可以完成向前走、倒退、左转、右转、停止、发射等功能。
关键字:SPCE061A单片机;机器人;语音识别;调试和仿真THE DESIGN OF SPEECH-CONTROLLEDINTELLIGENT ROBOT SYSTEMABSTRACTSpeech recognition technology is one of the focus of today's world, has been the general concern of academia and business.Speech recognition technology for intelligent robots will be practical to take a great role. Meanwhile, the intelligent robot platform can better study the practical problems speech technology, thus making it more widely used.The purpose of this design is to facilitate human-computer interaction. First the paper introduces the development process of the intelligent robot voice recognition technology, and analyzes the impact of the main factors to the robot speech recognition. Then it introduces the principle of speech recognition and speech signal processing methods and techniques used in analysis. And then it describes the characteristics of the chip microcomputer SPCE061A, and to establish a voice control system hardware structure of this system,compiled the corresponding program. Finally, the system was debugged and simulated.The conclusion is that the robot speech recognition to control the robot can be done forward, backward, turn left, turn right, stop, firing and other functions.Key word : SPCE061A MCU;robotics;peech recognition;debugging and simulation目录1 绪论 (1)1.1课题研究背景 (1)1.2智能机器人概述及现状 (2)1.2.1 智能机器人概述 (2)1.2.2 智能机器人发展方向 (3)1.3语音识别技术的概述 (5)1.4语音识别的发展历史 (5)1.4.1 国外研究历史及现状 (5)1.4.2 国内研究历史及现状 (6)1.5语音识别技术的前景和应用 (7)1.6影响智能机器人语音识别系统设计的主要因素 (8)1.7论文主要研究内容 (9)2 语音识别原理和设计采用方案 (10)2.1语音识别的分类 (10)2.2语音识别基本原理 (10)2.3语音信号预处理 (11)2.4特征量的提取 (12)2.4.1 线性预测分析 (13)2.4.2 倒谱分析 (15)2.5模式匹配及模型训练技术 (15)2.6本设计选用的方案 (16)2.6.1 系统采用的芯片 (16)2.6.2 系统采用的语音识别算法 (17)3 智能机器人语音控制系统硬件电路设计 (19)3.1设计总体方案 (19)3.2SPCE061A单片机的主要特点 (20)3.3电源模块 (21)3.4MIC输入模块 (22)3.5语音输出模块 (23)3.6超声波传感模块 (23)3.7通信模块 (24)3.8机器人动作模块 (25)4 智能机器人语音控制系统软件设计 (27)4.1设计总体方案 (27)4.2语音识别模块 (29)4.3语音训练模块 (30)4.4语音播放模块 (31)4.5机器人动作模块 (32)5 系统调试及仿真 (33)5.1系统调试 (33)5.1.1 硬件调试 (33)5.1.2 软件调试 (33)5.2系统仿真 (34)5.3结论 (35)参考文献 (36)致谢 (37)附录设计源程序 (38)附件:附件1 开题报告(文件综述)附件2 译文及原件影印件1 绪论1.1 课题研究背景随着现代科学技术和计算机技术的发展,人们在与计器的信息交流中,需要一种更加方便、自然的方式。
用单片机实现语音控制机器人制作人:潘磊pb02023035卢恒pb02006088题目:用凌阳单片机实现语音识别功能并传递给PIC单片机信号,由PIC单片机控制机器人实现动作关键字:PIC单片机,凌阳单片机,语音控制单片机在现今生活中占有越来越重要的地位,用语音控制单片机实现控制更具有广泛的应用价值。
用语音控制舞蹈机器人做一些动作是我们这次实现的功能,虽然这在语音控制方面仍处于起步阶段,但他体现了语音控制的原理和基本实现,也为更高级的运用打下了基础。
原理:1.语音识别原理语音识别电路基本结构如上图所示:语音识别分为特定发音人识别(Speaker Dependent)和非特定发音人识别(Speaker Independent)两种方式。
特定发音人识别是指语音样板由单个人训练,对训练人的语音命令识别准确率较高,而其他人的语音命令识别准确率较低或不识别。
非特定发音人识别:是指语音样板由不同年龄、不同性别、不同口音的人进行训练,可以识别一群人的命令。
语音样板的提取非常重要。
我们将标准模式的存储空间称之为“词库”,而把标准模式称之为“词条”或“样板”。
所谓建立词库,就是将待识别的命令进行频谱分析,提取特征参数作为识别的标准模式。
识别过程首先要滤除输入语音信号的噪音和进行预加重处理,提升高频分量,然后用线性预测系数等方法进行频谱分析,找出语音的特征参数作为未知模式,接着与预先存储的标准模式进行比较,当输入的未知模式与标准模式的特征相一致时,便被机器识别,产生识别结果输出。
如果输入的语音与标准模式的特征完全一致固然好,但是语音含有不确定因素,完全一致的条件往往不存在,事实上没有人能以绝对相同的语调把一个词说两遍,因此,预先制定好计算输入语音的特征模式与各特征模式的类似程度,或距离度的算法规则固化在ROM中,把该距离最小,即最类似的模式作为识别相应语音的手段。
当然,影响识别率的因素还有一些,如连续发音(如英语)与断续发音(如汉语)的不同(二者区别在于单词间隔有200ms 以上的空隙时间)。
本程序采用特定人识别方式,将训练的标准样板存于内部RAM中(掉电丢失),每次上电复位后都要进行训练,2.硬件电路硬件电路比较简单,MIC选用驻极体电容话筒,这种话筒具有灵敏度高、无方向性、重量轻、体积小、频率响应宽、保真度好等优点,驻极体话筒的偏压由SPCE061A的VMIC管脚提供。
其硬件电路如下图所示。
SPCE061A的A/D转换器有8个通道,其中有1个通道是MIC-IN输入,它专门用于对语音信号进行采样。
语音信号经MIC转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。
SPCE061A内部自动增益控制电路AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,可使进入A/D的信号保持在最佳电平,又可使削波减至最小,A/D转换器对输入的音频信号进行8kHz采样,并按照凌阳音频编码格式进行编码,每秒将占用16kBits的存储器空间。
2.机器人的控制。
我们控制的机器人是“小强”,他总共有三个电机需要控制。
行走由一个直流电机控制,手部有两个步进电机控制。
对每一个电机规定固定的端口,由PIC控制电机驱动电路H桥的使能端从而实现各种动作的控制。
在这里,PIC单片机时刻监视凌阳单片机的信号位,不同的电平组合进行不同的动作,实现语音控制。
程序设计1.语音识别程序。
程序包括三部分:训练样本、识别和语音提示。
由于语音样本是存在内部RAM中,掉电将丢失,所以在每次上电复位时都必须重新训练,训练过程主要是靠调用库函数 BSR_Train 来完成,为了防止误命令,每条语音命令训练2遍,只有2次命令相同时才成功,BSR_Train函数有8种可能的返回值:0------训练成功;-1------没有检测到命令;-2------需要再训练一次,每条命令训练2次,第一次训练成功则返回-2;-3------环境太吵;-4------存储器满;-5------两次命令不一样;-6------命令序号超出范围;-7------命令已存在;训练成功则训练下一条,否则继续训练。
语音识别程序包括识别程序和中断服务程序。
识别程序完成选取词库、初始化A/D 和定时器TimerA、识别运算及识别结果处理,整个流程图如图。
中断服务程序定时读取A/D转换结果,并存入缓冲区,A/D的输入为MIC通道的语音信号。
语音识别和放音分时复用TimerA FIQ 中断,由标志位判断是语音识别处理还是放音处理。
中断服务程序的流程图如图所示。
识别程序如下://================================================================================== ======// 工程名称: Guard_SD.spj// 功能描述: 语音识别DEMO程// 每次上电复位后请训练3条命令,第一条为触发命令// 后两条为控制命令,//// 涉及的库:CMacro.lib//// 组成文件: main.c// FIQ.asm/hardware.asm/InitIO.asm// hardware.inc/hardware.h//================================================================================== =========#include "bsrsd.h"#define NAME_ID 0x100#define COMMAND_ONE_ID 0x101#define COMMAND_TWO_ID 0x102#define RSP_INTRO 0 //0. I am your body guard.#define RSP_NAME 1 //1. Please give me your name.#define RSP_FIRE 2 //2. Say Fire.#define RSP_GUARD 3 //3. Say Guard.#define RSP_AGAIN 4 //4. Say again.#define RSP_NOVOICE 5 //5. No voice detected.#define RSP_NAMEDIFF 6 //6. Two given names are different. #define RSP_HERE 7 //10. I'm here#define RSP_STANDBY 8 //8. Iam standing by.#define RSP_GUNSHOT 9 //11. Gun sound.#define RSP_READY 10 //13. I'm ready!int gActivated = 0;//..................global variables.....................//1---触发命令识别成功//0---无触发命令//*************** 播放提示语音 ***********************////input:播放序号//output:NO//*****************************************************//void PlayRespond(int Result){BSR_StopRecognizer(); //关闭识别器SACM_A2000_Initial(1); //初始化播放器SACM_A2000_Play(Result, 3, 3); //播放提示语音while((SACM_A2000_Status()&0x0001) != 0){SACM_A2000_ServiceLoop();}SACM_A2000_Stop(); //停止播放BSR_InitRecognizer(BSR_MIC); //初始化识别器// BSR_EnableCPUIndicator();}//*************** 训练命令函数 ***********************////input:命令序号、提示语序号//output:0----训练成功 -1------训练失败//*****************************************************//int TrainWord(int WordID, int RespondID){int res;PlayRespond(RespondID);while(1){res = BSR_Train(WordID,BSR_TRAIN_TWICE);if(res == 0) //训练成功break;switch(res){case -1: //没有检测到命令PlayRespond(RSP_NOVOICE);return -1;case -2: //需要再训练一次PlayRespond(RSP_AGAIN);break;case -3: //环境太吵return -1;case -4: //存储器满return -1;case -5: //两次命令不一样PlayRespond(RSP_NAMEDIFF);return -1;case -6: //命令序号超出范围return -1;case -7: //命令已存在return -1;}}return 0;}//*************** 主程序 *********************************************** //************************************************//int main(){int res, timeCnt=0;InitIO();BSR_DeleteSDGroup(0);//初始化存储器,选用SPCE061A内部RAM存储语音样本 PlayRespond(RSP_INTRO);while(TrainWord(NAME_ID,1) != 0) ; //训练用户名while(TrainWord(COMMAND_ONE_ID,2) != 0) ; //训练第一条命令while(TrainWord(COMMAND_TWO_ID,3) != 0) ; //训练第二条命令BSR_InitRecognizer(BSR_MIC); //初始化识别器//BSR_EnableCPUIndicator();PlayRespond(RSP_STANDBY); //播放提示语?I'm standing by.while(1){res = BSR_GetResult(); //进行识别,获取识别结果if(res > 0) //识别成功{if(gActivated) //如果已经触发{timeCnt = 0;switch(res){case NAME_ID: //用户名PlayRespond(RSP_HERE);break;case COMMAND_ONE_ID: //第一条命令PlayRespond(RSP_GUNSHOT);gActivated = 0;break;case COMMAND_TWO_ID: //第二条命令PlayRespond(RSP_READY);gActivated = 0;}}else //没有触发{if(res == NAME_ID){PlayRespond(RSP_HERE);gActivated = 1;timeCnt = 0;}}}else if (gActivated){if (++timeCnt > 450) //如果已经触发,但没有命令识别出来{PlayRespond(RSP_NOVOICE);gActivated = 0;timeCnt = 0;}}}}中断服务程序如下://===================================================//文件名称:FIQ.asm//功能描述:中断放音//======================================================.PUBLIC _FIQ//................................................EXTERNAL _BSR_FIQ_Routine.EXTERNAL __gIsStopRecog //This variable = 0 if recognizer is busy,// = 1 if recognizer is stopped,// = 2 if recognizer is paused..PUBLIC _BREAK,_IRQ0, _IRQ1, _IRQ2, _IRQ3, _IRQ4, _IRQ5, _IRQ6, _IRQ7//...................................................INCLUDE A2000.inc;.INCLUDE hardware.inc.DEFINE P_WatchDog_Clear 0x7012.TEXT_FIQ:PUSH R1,R4 TO [SP] //寄存器入栈R1 = [P_INT_Ctrl] //读中断标志位R1 &= 0x2000JZ FIQ_ret //不是TimerA FIQ中断R1 = [__gIsStopRecog]JNZ TimerA_is_S480TimerA_is_Recognize: //TimerA FIQ为语音识别服务call _BSR_FIQ_Routine //语音识别服务函数JMP FIQ_retTimerA_is_S480: //TimerA FIQ为放音服务CALL F_FIQ_Service_SACM_S480; //放音服务函数FIQ_ret:R1 = 0xa800;[P_INT_Clear] = R1; //清中断标志POP R1,R4 FROM [SP]; //寄存器出栈reti;_BREAK:_IRQ0:_IRQ1:_IRQ2:_IRQ3:_IRQ4:_IRQ5:_IRQ6:_IRQ7:.END2.机器人控制程序。