引 言
随着多媒体的发展,音乐播放器作为消费类电子产品,其不断增长的消费要求促使生产厂家采用更先进的技术来提高自己产品的竞争力。近几年来语音识别技术迅速发展,专门用于语音识别的芯片层出不穷,如凌阳大学计划推出的SPCE061A单片机,性价比高,应用广泛。结合语音识别技术与当前盛行的嵌入式技术,设计一款不仅具有传统的按键控制功能且能控制语音的音乐播放器,具有一定的市场前景。
1 系统整体方案设计
音频解码方式分为硬件解码和软件解码,硬件解码根据在系统硬件的安排又有单芯片和双芯片形式之分。双芯片形式在于分离解码芯片与控制芯片,解码效果出色,但价格昂贵;单芯片形式为简化结构牺牲了音质,但性价比高。软件解码功能实现起来比较灵活,成本低,但对微控制器的运行速度和内存要求较高。两种解码方式皆有利弊。本文提出了一个比较折中的方案,即采用ARM7微处理器的单芯片形式和软件解码方式,使性能优化,同时符合市场需求。此外考虑到语音识别需实时响应,可采用语音识别专用芯片来完成,同时也保证了识别率。基于以上分析,主机采用华邦公司生产的W90P710套件,从机采用凌阳公司的 SPCE061A作为语音识别芯片。基于W90P710的智能音乐播放器框架如图1所示。播放器的运行流程是:用户打开机器首先进入功能界面,功能界面分音乐模式、录音模式、训练模式和文件管理。若打开机器时用户没有语音库,则只能用按键控制机器,同时LCD屏提示用户进入训练模式训练语音命令而获得自己的语音库;若训练成功则可以语音控制播放器进入各个模式。进入音乐模式,在播放音乐时,LCD屏显示歌曲的基本信息,如歌名、演唱者、专辑名等,同时可以按键和语音控制音乐的播放,如上一首、下一首、暂停、播放、退出等。在其他3种模式下,只能靠按键控制。
2 硬件设计
按照模块化设计原则,将整个智能音乐播放器分成主控模块、语音识别模块、音频模块、显示模块和键盘。
2.1 主、从机控制器
W90P710主机是系统控制和管理的核心,实现音乐播放,录音,音乐文件和录音文件的存储、删除、显示,以及与单片机的串口通信等功能。该处理器以ARM7TDMI为内核,具有以下特性:
①片内集成LCD控制器,方便实现显示功能;
②外部总线接口具有丰富的片选资源,可扩展NAND Flash等大容量存储设备;
③具有4个串口,可方便实现与凌阳单片机的串口通信及程序调试。
同时,W90P710主频能达到80 MHz,功耗低,有着十分优秀的性价比,特别适用于系统控制领域。
系统的语音识别芯片为SPCE061A,是凌阳科技公司推出的针对语音识别领域的16位单片机,具有体积小、功耗低、性能好且易于开发等特点。该芯片使用凌阳音频编码SACM_S240方式(2.4 kbps),能容纳210 s的语音数据;具备串行设备接口;7通道10位电压A/D转换器(ADC)和1个单通道的声音专用A/D转换器。声音A/D转换器输入通道,内置麦克风放大器和自动增益控制(AGC)电路。语音模式成功启动或处于训练模式下,单片机自行采集语音信号并进行识别,识别结果通过串行接口传给主机。
2.2 音频模块
音频模块在整个系统中起着举足轻重的作用,不但要实现录音功能,而且还需播放MP3音乐、提示音和录音文件。本系统的音频接口由AC97音频接口总线接口和ALC203音频编解码器组成。ALC203是Realtek公司推出的一款经济型音频编解码器,它通过AC97数字音频接口实现音频信号的数字化处理。图2是关于音频编解码的具体实现电路,ALC203的2、3脚接1个24.576 MHz的晶振;5、6、7、10脚和华邦W90P710的AC97数字音频接口AC97-DATO、AC97-BCLK、AC97-DATI、AC97- SYNC相连;MIC1和MIC2接麦克风两端;HP-OUT-L和HP-OUT-R脚分别通过一个有极电容接到耳机插口处;GPIO1和GPIO0可以硬件调节音量,但本设计采用软件进行音量调节。
2.3 其他模块设计
LCD显示屏选用的是AUO公司的A030DL01(320×240)工业级液晶屏。该液晶屏的彩色格式为RGB656格式,彩色色深可达到64K色,显示文件名和歌曲基本信,同时因屏幕空间较大,可添加彩色背景画面。汉字显示是通过添加字库软件实现的。键盘有4×1个按键,方便用户控制播放器,同时也保证在语音模式不能正确工作时可以按键控制机器。
MPEGDEC_STREAM*MPEGDEC_open(char*filename,MPEGDEC_CTRL*ctrl);
功能描述:打开MPEG音频文件。
参数:filename为待打开的音频文件,ctrl为控制数据解码信息的结构体。
返回值:打开成功,则返回包含数据流信息和解码信息的结构体指针;失败,则返回NULL。
void MPEGDEC_dose(MPEGDEC_STREAM*mpds);
功能描述:关闭MPEG音频文件。
参数:mpds指向待关闭的音频文件。
无返回值。
unsigned long MPEGDEC_decode_frame(MPEGDEC_STREAM*mpds,short*pcm[MPEGDEC_MAX_CHANNELS]);;
功能描述:为当前打开的音频文件的一帧解码。
输入:mpds指向打开的音频文件。
输出:pcm[]存放解码后的16位音频数据;pcm[0]中存放单声道或左声道或声道1的数据;pcm[1]中存放右声道或声道2的数据。
返回值:返回解码一帧的音频数据数目;返回MPEG-DEC_ERR_EOF,则说明当前帧是最后一帧;返回MPEG-DEC_ERR_BADFRAME,则说明该帧已损坏。
3.2.2 歌曲基本信息结构体
按照MP3的ID3 V1.0标准定义,MP3文件的最后128字节用来存放标签头、歌曲名、演唱者等信息。为了在LCD屏上显示当前播放歌曲的基本信息,给出了一个结构体来读取并存放这些信息。这个结构体定义如下:
3.2.3 播放主流程
当用户选中歌曲进入播放界面时,ARM7主机首先通过串口给单片机发一个命令字0x01,通知从机进入识别“播放器”这组命令的函数。从机接收到命令后,首先判断“播放器”这组命令是否已经训练。若训练,则返回0x04,同时播放器的语音模式启动成功;若未训练,则返回0x06,LCD屏显示提醒用户训练该库;若从机在规定时间内(因实时性要求,这里“规定时间”指200 ms)返回其他值或未返回值,则播放器的语音模式启动失败。若成功启动语音模式,音乐是分帧解码后播放,在帧一帧循环中,主机需查询键盘和串口,来实现“ 上一首”、“下一首”、“播放”、“暂停”、“退出”和调节音量的功能。若语音模式启动失败,则只需查询键盘。每次接收到“退出”命令时,主机在退出音乐模式前需通过串口发送0x05给单片机,通知单片机同步退出该模式;单片机接收到命令后,需返回0x04告知主机已退出。播放的主流程如图4所示。关于语音命令如何训练,可见参考文献[5],这里不再赘述。
4 实验结果
以W90P710开发套件+凌阳SPCE061A为硬件,采用嵌入式操作系统μClinux,在实验室安静和嘈杂的情况下(安静时室内噪声为50 dB,嘈杂时为60 dB),测试播放器语音模式的工作效率。在测试语音模式的工作效率前,先进行了按键测试,测试通过率为100%,且音乐播放流畅,响应满足实时性要求。
要使语音模式有效工作,首先需训练“播放器”的语音命令,即“播放”、“暂停”、“上一首”、“下一首”、“退出”这5个命令。训练时环境至关重要,必须处于实验室安静环境下。训练的5个命令并不一定是上述5个词,只要表达出相应意思即可,如“上一首”、“下一首”命令直接训练成“上”、“下”。笔者在实验室安静环境下训练后,分别在安静、嘈杂的环境下进行语音测试,结果分别为96.8%、77.8%。实验结果显示,在安静环境下,语音通过率很高;在嘈杂环境下,语音通过率稍微低些,但可以和按键同时使用。