基于单片机的语音识别系统_毕业设计(编辑修改稿)内容摘要:

ICEO 越大。 一般说来,中、小功率硅管、锗材料低频管,其阻值应分别在几百千欧、几十千欧及十几千欧以上,如果阻值很小或测试时万用表指针来回晃动,则表明 ICEO 很大,管子的性能不稳定。 (c) 测量放大能力 (β )。 目前有些型号的万用表具有测量三极管hFE 的刻度线及其测试插座,可以很 方便地测量三极管的放大倍数。 开关拨到 ADJ 位置,把红、黑表笔短接,调整调零旋钮,使万用表指针指示为零,然后将量程开关拨到 hFE 位置,并使两短接的表笔分开,把被测三极管插入测试插座,即可从 hFE 刻度线上读出管子的放大倍数。 另外:有此型号的中、小功率三极管,生产厂家直接在其管壳顶部标示出不同色点来表明管子的放大倍数β值,其颜色和β值的对应关系如表所示,但要注意,各厂家所用色标并不一定完全相同。 ② 检测判别电极 (a) 判定基极。 用万用表 R 100 或 R 1k 挡测量三极管三个电极中每两个极之间的正、反向电阻值。 当用第一根表笔接某一电极 ,而第二表笔先后接触另外两个电极均测得低阻值时,则第一根表笔所接的那个电极即为基极 b。 这时,要注意万用表表笔的极性,如果红表笔接的是基极 b。 黑表笔分别接在其他两极时,测得的阻值都较小,则可判定被测三极管为 PNP 型管;如果黑表笔接的是基极 b,红表笔分别接触其他两极时,测得的阻值较小,则被测三极管为 NPN 型管。 基于单片机的语音识别系统 13 (b) 判定集电极 c 和发射极 e。 (以 PNP 为例 )将万用表置于 R100 或 R 1k 挡,红表笔基极 b,用黑表笔分别接触另外两个管脚时,所测得的两个电阻值会是一个大一些,一个小一些。 在阻值小的一次测量中,黑表 笔所接管脚为集电极;在阻值较大的一次测量中,黑表笔所接管脚为发射极。 ③ 判别高频管与低频管 高频管的截止频率大于 3MHz,而低频管的截止频率则小于 3MHz,一般情况下,二者是不能互换的。 ④ 在路电压检测判断法 在实际应用中、小功率三极管多直接焊接在印刷电路板上,由于元件的安装密度大,拆卸比较麻烦,所以在检测时常常通过用万用表直流电压挡,去测量被测三极管各引脚的电压值,来推断其工作是否正常,进而判断其好坏。 电路方框图及说明 系统原理框图如图 1 所示。 主控元件采用凌阳 SPCE061A 单片机,属于凌阳 u’ 16 位结构的微控制器。 在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A 里只内嵌 32K 字的闪存( FLASH),但用在此系统上已经绰绰有余。 较高的处理速度使 u’ 、快速地处理复杂的数字信号。 因此以 u’ SPCE061A 微控制器也适用在数字语音识别应用领域。 SPCE061A 在 ~ 工作电压范围内的工作速度范围为 ~ ,较高的工作速度使其应用领域更加拓宽。 2K 字 SRAM 和 32K 字 FLASH 仅占一页存储空间, 32 位可编程的多功能 I/O 端口;两个 16 位定时器 /计数器; 32768Hz 实时时钟;低电压复位 /监测功能; 8 通道 10 位模 数转换输入功能并具有内置自动增益控制功能的麦克风输入方式;双通道 10 位 DAC 方式的音频输出功能,这就为本系统的特定人辨识和语音播报打下了基础。 各部分电路设计 基于单片机的语音识别系统 14 电机的选择 市场上的电机种类很多,有各自的优缺点。 电机类别如 表 2: 电动机 交直流两用电动机 步进电动机 交流电机 交流伺服电动机 同步电 机 异步电机 直流电机 电磁式直流电动机 他励 并励 串励 复励 永磁直流电动机 直流伺服电动机 直流力矩电动机 无刷直流电动机 开关磁阻电动机 小车控制分为:前进、倒退、左转、右转和停止。 如果考虑用单向电机来控制,将不能使电机进行反方向转动,也就不能实现自动左转、右转。 再考虑到经济,实惠,决定用直流伺服电动机。 继电器驱动电路的设计 由于单片机 I/O 口提供的电流太小,不能直接驱动继电器工作。 在这里采用 8050NPN 管来提供一个开关电 压,实现 I/O 口对继电器的驱动;用 IN4007 去掉继电器断开时线圈产生的反向电流,保护8050NPN 管不被损坏。 继电器驱动电路如下图所示。 基于单片机的语音识别系统 15 继电器驱动电路 行驶状态控制电路设计 如图 13 所示为行使状态控制电路,整个小车的行驶状态由两个电机 MOTOR A 和 MOTOR B 来控制 ; MOTOR A 控制小车的左边两个轮子,MOTOR B控制小车右边两个轮子。 具体控制如表 4所示 行驶状态控制电路 表 4 行驶状态控制表 8050NPN R1 1K VCC_BAR DIODE D1 J1 RELAY 1N0 基于单片机的语音识别系统 16 行驶状态 IOB08 IOB09 IOB10 IOB11 地址 继电器状态 前进 1 0 1 0 0x00A0 RE1, RE3 闭合 倒退 0 1 0 1 0x0050 RE2, RE4 闭合 左转 0 1 1 0 0x0060 RE2, RE3 闭合 右转 1 0 0 1 0x0090 RE1, RE4 闭合 注:图中的两个电机完全相同,这样能更好地保持小车的稳定性,在前进上两个电机能在加减速度上完全达到同步,不会走 S 路线,如果考虑用一个电机控制转向,而另外一个控制速度和返回的话,由于控制转向 的电机电路未接入分压电阻,当速度不处于最快速度时,小车前进不能走直线,而是向一边偏,导致路线不对。 麦克录音输入及 AGC电路 麦克风电路如图 16 所示。 凌阳的 SPCE061A 是 16 位单片机,具有 DSP 功能,有很强的信息处理能力,最高时钟可达到 49M,具备运算速度高的优势等等,这为语音的播放、录放、合成及辨识提供了条件。 本系统接入 MIC 电路如下图所 示, MIC 为录制语音辨识命令服务。 麦克录音输入及 AGC电路 下图是 MIC 录放流程图。 基于单片机的语音识别系统 17 MIC 录放流 程图 下图是简化的语音识别原理图,其中实线部分成为训练模块,虚线部分为识别模 块。 辨认特 定的使用者 即特定语者 (Speaker Dependent, SD)模式,使用者可针对特定语者辨认词汇 (可由使用者自行定义,如人名声控拨号 ),即在启动小车前,系统将会提示输入语音命令作简单快速的训练纪录,在这里输入“启动”“停止”“返回”和“模式切换”四个语音命令,通过使用者的声音特性来加以辨认。 随着技术的成熟,进入语音适应阶段 SA(speaker adaptation),使用者 只要对于语音辨识核心,经过一段时间的口音训练后, 即可拥有不错的辨识率。 开始 ADC 音频初始化 定时器初始化为 8K 空操作 中断入口 取 AD 数据 送 DA通道 清中断 退出中断 基于单片机的语音识别系统 18 语音识别原理图 语音播报电路 音频部分的原理图如下所示,在下图 中可以看到两个跳线,其作用在于可以测量 DAC 的输出波形;另外拔掉跳线,可以断开 DAC 到喇叭放大的通路,使得 DAC 通道处于开路状态。 这样便于用 DAC 做其他用途,用户可以用过这个跳线来加入自己的外围电路。 音频原理及放大电路图 声学模式训练 复杂声学、言语条件下的语音输入 语音匹配 语音模式训练 语音模型 识 别 结果、理解结果 语音处理 语言模型 基于单片机的语音识别系统 19 凌阳音频压缩算法根据不同的压缩比分为以下几种: SACMA2020:压缩比为 8:1, 8:, 8: SACMS480: 压缩比为 80:3, 80: SACMS240: 压缩比为 80: 按音质排序: A2020S480S240 用凌阳 Compress Tool 事先把所需要的语音信号录制好,本系统共包括十多个语音资源,整个语音信号经凌阳 SACM_S480 压缩算法压缩只占有 存储空间, SPCE061A 单片机具有 32k 闪存,使用内部flash 即可满足要求。 凌阳 SPCE061A 单片机自带双通道 DAC 音频输出, DAC DAC2 转换输出的模拟量电流信号分别通过 AUD1 和 AUD2管脚输出, DAC 输出为电流型 输出,所以 DAC 输出经过 SPY0030 音频放大,以驱动喇叭放音,放大电路如图 19(只列出了 DAC1,DAC2 类似 ),这为单片机的音频设计提供了极大方便。 在它们后面接一个简单的音频放大电路和喇叭即可实现语音播报功能,音频的具体功能主要通过程序来实现。 3 软件设计 软件设计部分是小车控制的的核心,通过软件编程来控制小车的行驶状态。 软件流程图及设计思路说明 基于单片机的语音识别系统 20 软件流程图 程序设计 主程序见附录( 1) 模块设计 中断流程图部分 SPCE061 单片机有两个外 部中断,分别为 EXT1 和 EXT2,两个外部输入脚分别为 B 口的 IOB2 和 IOB3 的复用脚。 EXT1( IOB2)和 EXT2( IOB3)两条外部中断请求输入线,用于输入两个外部中断源的中断请求信号,并允许外部中断以负跳沿触发方式来输入中断请求信号。 开始 语音切换命令 语音命令训练 语音启动训练 扫描IOB4 、IOB5 和IOB6 等待语音命令 进行拐弯和返回处理 基于单片机的语音识别系统 21 EXT1( IOB2)为黑线检测,确定小车位置, EXT2( IOB3)为轮子转数检测用于计算路程。 IRQ4 用做整个行程的时间计数。 中断服务流程图 开 IRQ3 和IRQ4 寄存器组出栈 清中断标志位 清中断标志位 寄存器压栈保护 中断返回 是 IRQ3中断吗 IRQ3_EXT1 中断吗 清中断标志位 IRQ3_EXT2 中断吗 车轮转速 基于单片机的语音识别系统 22 语音识别部分 在这里我们用的是 SPCE061 的特定语者辨识 SD( Speaker Dependent), SD 即语音样板由单个人训练,也只能识别训练某人的语音命令,而他人的命令识别率较低或几乎不能识别。 (1) 语音的准备: 可利用计算机进行录音,选择录音效果一般的 MIC 比较好,因为小车跑动时要受环境的影响,效果一般的 MIC 录制的音更加接近凌阳单片机上的 MIC 所录制的。 录制语音可为:“ yeah”,“烦不烦”,“前进”,“倒退”,“拐就拐”。 分别保存名称为: 、 、 . 语音录制时,注意录制属性设置,最好选择为 8Khz, 16 位,单声道。 语音录制好后,保存格式为“ .wav”,利用凌阳单片机光盘内目录“ \TOOLS\s480\”下的工具进行语音压缩后放在程序目录“ \voice”下边,然后修改配置文件“ Makefile”中的 OBJFILES 的值以及对应的语音文件的目录地址值和“ clean”的值 ,并且配置值顺序必须对应于语音训练的过程。 该程序 模块包括三部分:训练样本、识别、语音提示。 具体程序见主程序。 见下图 整体框图。 语音辨识整体框图 在程序中我们通过五条语 句的训练演示特定人连续音识别,其中第一条语句为触发名称。 另外四条为命令,训练完毕开始辨识当识别出触发名称后,开始发布命令,则会听到自己设置的应答,具体流程初始化BSR_DeleteSDGroup(0) 启动实时监控BSR_EnableCPUIndicator() 调用训练模块TrainWord(intWordID, intRespondID) 初 始 化识别器BSR_InitRecognizer(BSR_MIC) 辨 识处 理BSR_GetResult() 基于单片机的语音识别系统 23 图如图 22。 (2) 关于语音识别库函数的算法分析: 众所周知,嵌入式语音识别最大难点在于如何在硬件资源相对有限(相对与 PC 机而言)的情况下,实现大量数据处理的语音识别算法。 特别的, SPCE061A 自带 2K 字的 RAM,这样小容量的 RAM 空间是如何存储数据量较大的语音命令,是值得探讨的问题。 时域分析中,语音信号作为缓慢时变的信号,在一小段时间里,例如 10ms~ 20ms,语音信号的特性基本不变,这些短段具有固定特性,短段间经常有一定的重叠,组合成一段语音,我们把语音信号。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。