河南理工大学毕业设计(论文)说明书
凌阳语音的播放、录制、合成和辨识
要完成语音的播放、录制、合成及辨识等工作,单片机需要强大的信息处理能力而凌阳16位SPCE061A单片机则是为此而开发的,其具有DSP功能,可处理大量信息,CPU最高时钟频率可达到49MHz,具备运算速度高的优点。凌阳压缩算法中SACM_A2000、SACM_S480、SACM_S240主要是用来放音,可用于语音提示,而DVR则用来录音。
常用的应用程序接口API的功能及应用
语音和音乐与我们的生活有着相当密切的关系,而单片机对语音的控制如录放音、合成机辨识也广泛应用在现实生活中。语音处理大致可以分为A/D、编码处理、存储、解码处理以及D/A等。然而,通过麦克风输入所生成的WAVE文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然很不可能实现的,而凌阳的SPCE061A所采用的解决办法即SACM_LIB,该库将A/D、编码、解码、存储及D/A做成相应的模块,对于每个模块都有其应用程序接口API,要实现某功能,用户只需了解每个模块所要实现的功能及其参数的内容,然后调用该API函数即可。
语音识别API介绍:
BSR _Init Recognizer(int Audio Source);初始化识别器 BSR _Train(int Word ID, int Train Mode);语音训练 BSR _Delete SD Group(int SD Group No);清除内存 BSR _Pause Recognizer();暂停识别,但不释放中断等资源 BSR _Resume Recognizer();恢复被暂停的识别
BSR _Get Recognizer Score();获得识别结果的可信度,返回值从-4096到4096,数值越大表示输入语音与特征模型的匹配度越高
BSR _Enable CPU Indicator();开启CPU状态监测功能。开启该功能后,IOA0和IOA1将发出每16ms电平变化一次的方波
BSR _Disable CPU Indicator();关闭CPU状态监测功能
BSR _Export SD Word(int Command ID);使用函数库时,会自动创建一个100 Word的数组BSR _SD Model[100],可以把某条训练命令的特征模型数据导出到这个数组中
BSR _Import SD Word(int Command ID);可以把BSR _SD Model数组中的数据导入为某条语音命令的特征模型
unsigned int BSR _SD Model[];配合BSR _Export SD Word(int Command
河南理工大学毕业设计(论文)说明书
ID)与BSR _Import SD Word(int Command ID)函数使用,此数组的作用相当于一个暂时的存储区
SACM_480采用混合编码方式,压缩比比较大,存储容量大,音质介于A2000和S240之间,适用于语音播放,如电子词典词库等,所以本文采用了该算法,以下就SACM_480算法具体介绍其API函数的格式、功能、参数、返回值、备注。
其相关API函数如下所示:
1) API格式: C:int SACM_S480_Initial(int Init _Index)
ASM:R1=[ Init _ Index] Call F_ SACM_ S480_Initial
功能说明:SACM_480语音播放之前的初始化。
参数: Init _ Index=0:手动方式 Init _ Index=1:自动方式。 返回值: 0:语音模块初始化失败。
1:语音模块初始化成功。
备注: 该函数用于对定时器、中断和DAC等的初始化。 2) API格式: C:void SACM_S480_ServiceLoop(void)
ASM:Call F_ SACM_S480_ServiceLoop
功能说明:从资源中获取SACM_S480语音资料,并将其填入解码队列中。 参数: 无 返回值: 无
备注: 播放语音文件中数据,当出现FF FF FFH数据时便停止播放。 3) API格式: C: int SACM_S480_Play(int Speech _Index, int Channel, int Ramp _Set)
ASM:R1=[ Speech _Index] R2=[ Channel] R3=[ Ramp _Set] Call SACM_S480_Play
功能说明: 播放资源中SACM_480语音。 参数: Speech _Index:语音索引号。
Channel:
1. 通过DAC1通道播放。 2. 通过DAC2通道播放。
3. 通过DAC1和DAC2双通道播放。
河南理工大学毕业设计(论文)说明书
Ramp _Set:
0. 禁止音量增/减调节。 1. 仅允许音量增调节。 2. 仅允许音量减调节。 3. 允许音量增/减调节。
返回值: 无
备注: ⑴ SACM_S480的数据率有4.8Kbps\\7.2Kbps两种,可在同一模
块的几种算法中自动选择一种。
⑵ Speech _Index是定义在resource.inc文件中资源表的偏
移地址。
⑶ 中断服务子程序中F_FIQ_Service_SACM_S480必须放在
TMA_FIQ中断向量上。
4) API格式: ASM:Call F_FIQ_Service_SACM_S480
功能说明:用作SACM_S480语音背景程序的中断服务子程序。通过前台
子程序(自动方式的SACM_S480_ServiceLoop及手动方式SACM_S480_Decode)进行语音信息编码,然后将其送入DAC通道播放。
参数: 无 返回值:无
备注:SACM_S480语音背景子程序只有汇编指令形式,且应该将此子程
序安置
在TMA_FIQ中断源上。
河南理工大学毕业设计(论文)说明书
4 系统硬件设计
4.1总体设计框图
系统设计大体包括以下部分:
电源模块 SPCE061A液晶显示模块 下载区 音频区 (语音接收和语音识别) 单片机最小系统 扬声器 图4-1设计总体结构框图
电源区:为整个系统提供电源,通常采用系统配套的电池盒进行供电,只要放入 3 节 5 号电池 就可以满足供电需求了。
下载区:程序就是通过这边的接口下载到 SPCE061A 单片机的,当然,在进行在线调试时也能 上传一些硬件信息到开发环境中。
音频区:这里的麦克风是用来进行语音输入的,还有语音识别模块配合进行语音信号处理。 SPCE061A最小系统:
SPCE061A最小系统中,包括SPCE061A芯片及其外围的基本模块,其中外围的基本模块有:晶振输入模块(OSC)、锁相环外围电路(PLL)、复位电路(RESET)、指示灯(LED)等。
4.2主控器件的选择
4.2.1 凌阳61单片机
61单片机
61板除了具备单片机最小系统电路外,还包括有电源电路、音频电路(含MIC输入部分和DAC音频输出部分)、复位电路等,采用电池供电,方便随身携带。61板上有调试器接口(Probe接口)以及下载线(EZ_Probe)
河南理工大学毕业设计(论文)说明书
接口,分别可接凌阳科技的在线调试器、简易下载线,配合unSP IDE,可方便地在板上实现程序的下载、在线仿真调试。
SPCE061A单片机是台湾凌阳公司研制的一个16位结构的微控制器,将MCU、A/D、D/A、RAM、ROM集成在一块芯片上,具有很高的集成度。同时具有较高运算速度的16×16位的乘法语音和内积运算指令,CPU 最高可达时钟49MHz,因此在复杂的数字信号处理方面既非常便利又比专用的DSP芯片便宜得多。系统支持10个中断向量及14中断源,具有较强的中断处理能力,适合实时语音处理。并具有双通道10位ADC方式的音频输出功能,配置带自动增益控制功能(AGC)的麦克风输入方式,为语音处理带来了极大的便利。SPCE061A既具有体积小、集成度高、可靠性好的特点,又具有较强的中断处理能力、高性能的价格比和功能强、效率高的指令系统及低功耗、低电压的特点,所以非常适合用于嵌入式语音识别系统。
凌阳16位单片机所拥的一套指令系统和集成开发环境具有易学易用、效率高等特点。在集成开发环境中,支持标准C语言编程,并可以实现C语言与凌阳汇编语言的相互调用,语音的录放只需调用相应的库函数就可实现。SPCE061A片内还集成了一个ICE(在线仿真电路)接口,使得对芯片的编程和仿真变得非常方便,而且ICE接口不占用芯片上的硬件资源,结合凌阳科技提供的集成开发环境(unSP IDE)可以对芯片进行仿真;而程序的下载(烧写)也是通过该接口进行下载。 SPCE061A功能简介: (1)16位微处理器
(2)工作电压(CPU)VDD为3.0~3.6V,(I/O)VDDH为3.0~5.6V (3)CPU时钟:0.32~49.152MHZ (4)内置2K字SRAM (5)内置32K字FLASH (6)可编程音频处理 (7)晶体振荡器
(8)系统处于备用状态下(时钟处于停止状态),耗电仅为2uA/3.6V (9)2个16位可编程定时器/计数器(可自动预置初始计数值) (10)2个10位DAC(数/位转换)输出通道 (11)32位通用可编程输入/输出通道
(12)14个中断源可来自定时器A/B、时基、2个外部时钟源输入和键唤醒 (13)具备键唤醒的功能