W90P710的智能音乐播放器系统设计
时间:02-05
来源:互联网
点击:
引 言
随着多媒体的发展,音乐播放器作为消费类电子产品,其不断增长的消费要求促使生产厂家采用更先进的技术来提高自己产品的竞争力。近几年来语音识别技术迅速发展,专门用于语音识别的芯片层出不穷,如凌阳大学计划推出的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个按键,方便用户控制播放器,同时也保证在语音模式不能正确工作时可以按键控制机器。
3 软件设计
为了使程序开发更加容易、便于维护,同时能够提高系统的稳定性和可靠性,采用嵌入式操作系统μClinux。播放器工作时,既要响应键盘又要响应语音命令,而语音命令由凌阳单片机识别出通过串口传给主机,因而系统软件的设计是采用消息循环的事件驱动模式。对输入设备,即键盘和串口进行轮询后,若有输入,则按数据队列原理,遵循先来先响应的原则。
在引言中曾提及该播放器进入功能界面后,可选择音乐模式、录音模式、训练模式和文件管理任一菜单。鉴于篇幅,这里仅说明主从机通信方式和音乐模式。
3.1通信方式
在功能模式、音乐模式、训练模式这3个语音工作的模式下,系统采用主从式通信方式,并由RS232总线实现。主机采用查询工作方式,从机采用中断工作方式。通信总是从主机开始,主机每进入到这3个模式就通过串口给从机发一个相应的命令字,从机即打开录音设备并启动语音辨识器开始识别,并将识别结果再次通过串口返回给主机。除非主机呼叫从机,从机在其他情况下不能主动向总线发送信息。
3.2音乐模式
音乐播放是整个音乐播放器的核心部分,可以播放MP3歌曲,显示该歌曲的基本信息,并同时对键盘和串口进行轮询。若有输入,则按先来先响应的原则作出回应。
3.2.1 MP3音频解码
MP3是MPEG-1音频层III(layer III)的简称。MPEG音频(IOS/IEC11172-3)是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果好,在低码率条件下基本能达到CD的音质效果。MP3解码过程是将MP3编码数据进行霍夫曼解码,然后逆量化到实际的频域幅值,最后经过IMDCT变换和滤波器组完成频域到时域的变换,如图3所示。这里不详细介绍其解码细节,只列出几个重要的MP3解码接口函数。
MPEGDEC_STREAM*MPEGDEC_open(char*filename,MPEGDEC_CTRL*ctrl);
功能描述:打开MPEG音频文件。
参数:filename为待打开的音频文件,ctrl为控制数据解码信息的结构体。
返回值:打开成功,则返回包含数据流信息和解码信息的结构体指针;失败,则返回NULL。
void MPEGDEC_close(MPEGDEC_STREAM*mpds);
功能描述:关闭MPEG音频文件。
参数:mpds指向待关闭的音频文件。
无返回值。
unaigned 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],这里不再赘述。
随着多媒体的发展,音乐播放器作为消费类电子产品,其不断增长的消费要求促使生产厂家采用更先进的技术来提高自己产品的竞争力。近几年来语音识别技术迅速发展,专门用于语音识别的芯片层出不穷,如凌阳大学计划推出的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个按键,方便用户控制播放器,同时也保证在语音模式不能正确工作时可以按键控制机器。
3 软件设计
为了使程序开发更加容易、便于维护,同时能够提高系统的稳定性和可靠性,采用嵌入式操作系统μClinux。播放器工作时,既要响应键盘又要响应语音命令,而语音命令由凌阳单片机识别出通过串口传给主机,因而系统软件的设计是采用消息循环的事件驱动模式。对输入设备,即键盘和串口进行轮询后,若有输入,则按数据队列原理,遵循先来先响应的原则。
在引言中曾提及该播放器进入功能界面后,可选择音乐模式、录音模式、训练模式和文件管理任一菜单。鉴于篇幅,这里仅说明主从机通信方式和音乐模式。
3.1通信方式
在功能模式、音乐模式、训练模式这3个语音工作的模式下,系统采用主从式通信方式,并由RS232总线实现。主机采用查询工作方式,从机采用中断工作方式。通信总是从主机开始,主机每进入到这3个模式就通过串口给从机发一个相应的命令字,从机即打开录音设备并启动语音辨识器开始识别,并将识别结果再次通过串口返回给主机。除非主机呼叫从机,从机在其他情况下不能主动向总线发送信息。
3.2音乐模式
音乐播放是整个音乐播放器的核心部分,可以播放MP3歌曲,显示该歌曲的基本信息,并同时对键盘和串口进行轮询。若有输入,则按先来先响应的原则作出回应。
3.2.1 MP3音频解码
MP3是MPEG-1音频层III(layer III)的简称。MPEG音频(IOS/IEC11172-3)是目前普遍应用的音频压缩标准,其中层III的算法最为复杂,但压缩比最大,效果好,在低码率条件下基本能达到CD的音质效果。MP3解码过程是将MP3编码数据进行霍夫曼解码,然后逆量化到实际的频域幅值,最后经过IMDCT变换和滤波器组完成频域到时域的变换,如图3所示。这里不详细介绍其解码细节,只列出几个重要的MP3解码接口函数。
MPEGDEC_STREAM*MPEGDEC_open(char*filename,MPEGDEC_CTRL*ctrl);
功能描述:打开MPEG音频文件。
参数:filename为待打开的音频文件,ctrl为控制数据解码信息的结构体。
返回值:打开成功,则返回包含数据流信息和解码信息的结构体指针;失败,则返回NULL。
void MPEGDEC_close(MPEGDEC_STREAM*mpds);
功能描述:关闭MPEG音频文件。
参数:mpds指向待关闭的音频文件。
无返回值。
unaigned 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],这里不再赘述。
电子 单片机 嵌入式 ARM LCD 总线 电压 ADC 放大器 电路 解码器 电容 滤波器 相关文章:
- LCD TV整体电源解决方案-“GreenEngine?”技术(02-23)
- 在消费电子应用中考虑使用OTP存储器(04-13)
- 晶体元件在电子器件中不可缺(05-12)
- 用于移动电子设备的电路保护方案(11-08)
- 耳机设计:品质VS效率(01-07)
- SMARTCAR软件平台实现汽车电子系统软件的整体设计(03-30)