《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 业界动态 > 基于DSP的便携式音乐分析仪的设计与实现

基于DSP的便携式音乐分析仪的设计与实现

2009-04-14
作者:翟景瞳, 王 玲, 杜秀伟,

    摘  要: 设计了一款便携式音乐分析仪,对一段音乐信号进行音高和时值特征分析,将分析结果以MIDI格式符号记录下来,通过MIDI音频合成芯片回放音乐旋律的同时可将音符信息解析成五线谱并由LCD显示。介绍了部分主要硬件电路接口和核心算法的软件设计。 

    关键词: DSP; ARM; 音乐分析

 

    随着多媒体技术的发展和音频数据的膨胀,音乐分析在音乐数据库检索技术、乐器调音技术和自动记谱技术中有很重要的应用价值。目前有很多类似Cakewalk的应用软件都集成了音乐分析功能,通过检测音频的音高和音符长短,把音频信号转变为MIDI格式符号记录下来[1]。但这些应用软件都需要以PC机为载体,这给广大音乐爱好者和创作者带来了极大不便。本文利用DSP芯片TMS320VC5502的快速运算能力和低功耗特点,设计了以TMS320VC5502为核心运算处理模块,以对音高和音长的检测来实现对音乐信号的实时分析的便携式音乐分析仪。 

1 仪器工作原理 

    音乐信号与语音信号一样是短时相关的,可用语音信号识别的相关知识来解决音乐信号的识别。音高和音符时长是音乐信号主旋律的两大要素。本仪器系统设计就是由音频信号采集模块采集音乐信号,通过DSP对音乐信号的运算处理来检测音符的音高和时值长短,将音乐信号转变为MIDI格式的数据,存储到ARM的Flash中。ARM将音频信号通过MIDI芯片回放的同时可将MIDI格式数据转化为五线谱并驱动LCD显示。 

2 系统硬件设计 

    便携式音乐分析仪的系统硬件结构如图1所示,由音频信号采集、DSP音乐信号处理、CPU控制、显示与键盘接口等部分组成。核心处理器选用TMSC20VC5502,系统CPU选用ARM S3C44B0X,LCD选用适合便携式开发的SHARP公司的LQ043T3DX02,音频AD选用24位低功耗专用语音模数转换芯片CS53L21,MIDI芯片选用合成能力优异的YAMAHA724。 

 

 

2.1 音频信号采集部分 

    CS53L21是Cirrus Logic公司推出的24位低功耗专用语音模数转换芯片,可提供4kHz~96kHz范围的采样频率的设置,支持左/右声道音频独立控制,包括数字音量控制和混音、自动电平控制,具有用于DC测量的高通滤波能力。CS53L21基于多位△-∑架构,通过前端模拟集成提供双轨高质量信号转换,可进而简化设计并削减设计所需的昂贵器件。 

    CS53L21的接口电路如图2所示。作为本仪器的外部接口, MICI以单通道的方式与CS53L2芯片的AIN3B引脚相连接(由于CS53L21提供差分输入选择,还可考虑用AIN1B和AIN3A将MICI接成差分方式输入以进一步抑制噪声),由AIN2B提供偏置电压。偏置电压具有0.8×VA、0.7×VA、0.6×VA和0.5×VA四种电平模式,可通过设置MIC Control寄存器的MICBIAS_LVL[1:0]位来选择其中一种偏置。 

 

 

    CS53L21与TMS320VC550的接口电路分为控制端口和音频端口两部分。控制端口的连接是将CS53L21的串行控制端口SCL和SDA直接与TMS320VC5502的IIC模块的SCL和SDA相连。TMS320VC5502的内部时钟信号SYSCLK2作为IIC通信的时钟信号控制SDA上的数据传输。CS53L21的寄存器的初始化需要TMS320VC5502以IIC通信协议对其进行访问和操作来实现。音频端口的连接是将CS53L21的串行音频接口MCLK、SCLK、LRCK和SDOUT与TMS320VC5502的多通道缓冲串口0(MCBSP0)相连。MCLK与ELCKOUT2相连用于将TMS320VC5502的内部时钟信号SYSCLK3输入CS53L21的MCLK引脚作为其主时钟信号。SCLK与CLKR0、CLKX0连接用于向CS53L21提供串行音频接口的串行时钟,其中,CLKR0和CLKX0短接可使CS53L21主从方式均可使用。本系统设计是采取将CS53L21配置为从机的方式。LRCK与FSR0和FSX0相连用于向CS53L21提供必需的帧同步脉冲信号。SDOUT与DR0相连用于将采样数据以IIS格式从CS53L21向TMS320VC5502传输。 

2.2 CPU控制部分 

    CPU S3C44B0X与TMS320VC5502的接口设计电路如图3所示,TMS320VC5502通过主机接口HPI与S3C44B0X相连时,除了8位数据总线及控制信号线外,不需要附加其他的逻辑电路。S3C44B0X作为系统的CPU以寻址TMS320VC5502的RAM的方式来读取信号分析结果,并将结果通过MIDI合成芯片回放的同时解析成五线谱送LCD显示。本系统采用多路复用8位HPI模式,主机S3C44B0X必须读/写2个连续的8位数据整合为16位数据,通过地址线A0提供HBIL信号指示当前传输的是第一字节还是第二字节。控制信号HCNTL0 和HCNTL1用于指示访问哪一个HPI 内部寄存器,HCS 作为HPI 的基本输入使能信号,与HDS1、HDS2信号一起控制HPI的数据传输。 

 

 

3 软件设计及核心算法分析 

    系统软件设计主要有ARM上电引导及初始化、DSP通过主机接口HPI自举引导及系统初始化(包括系统时钟CLK初始化、I2C模块初始化、MCBSP0初始化)[2]和系统功能执行。 

    DSP音乐信号处理的软件流程如图4 所示。DSP自举引导、初始化系统后开启定时器0和AD,然后开始接收采样数据。当检测到音符起止位置后,对音符进行音长时值记录和音高识别,DSP将识别结果存储到主机ARM可访问的RAM区域,由ARM通过HPI口读取并保存结果,直到音乐信号结束。 

 

 

    音高分析过程中的FFT变换是耗费存储空间和运算时间的主要部分。TMS320VC5502拥有32K×16位的片上RAM,将DSP从AD接收采样数据的程序设计成循环队列的方式,可节省很大一部分存储空间,除去4 096点FFT所需的8KB空间外足够供程序段和数据段分配使用,不需外扩存储器。程序整体设计采取C语言与汇编语言混合编程,对于FFT部分采用汇编代码实现,可进一步减少运算时间以满足实时性要求。 

3.1 音符音高分析算法设计 

    音乐的音高(音调)是指声音的高低,可通过计算信号基频得出。首先从信号幅度包络上检测到音符的起止位置,然后由如图5所示的音高检测算法流程起止位置映射音符的原始数据。若原始数据大于4 096个点,就取前4 096个点作为音符有效数据,若不够4 096个点,就补零到4 096个,然后对4 096点数据做FFT变换,采取置信度[3]的方法即可找到音符音高。 

 

 

3.2 音符时值分析算法设计 

    音乐信号的特征是时域波形在节奏点上幅度大、能量相对集中。因此系统设计采取在12kHz的采样频率下将接收的语音数据以128个点(大概10ms)分为一帧,帧间重叠64点(约5ms)数据,通过求短时能量得到理想的波形包络,在此基础上设立门限来找出音符起止位置[4]。计算音符时长的算法流程如下: 

    (1)设立初始门限值。假定音乐信号开始的前N帧信号为纯背景噪声,计算前10帧的短时能量的平均值的1.2倍作为初始门限。 

    (2)判定音符的起止位置,并记录起止时刻。若当前帧的短时能量超过了前面计算出的门限值,且此后连续5帧都超过了该门限值即认为找到了音符起始位置。同样,在找到音符的起始位置后,如果有信号能量值回落到门限以下,且此后连续5帧都低于该门限值即认为找到了音符结束位置。 

    (3)计算音符时长。根据上一步得到的音符的起始、结束时刻,由T=T2-T1得到该音符时长。 

    (4)门限更新。由式Hi=βHi-1+(1-β)E进行门限的更新。式中β取0.9,Hi-1为前一音符的门限值,E为当前N帧信号短时能量值的几何平均值的1.2倍。  

    (5)回到第(2)步,直到整个音乐信号分析结束。 

4 系统测试 

    (1)音频合成器产生的频率为440Hz的钢琴“标准音”,经本仪器采集、做4 096点FFT变换后得到的频谱如图6 所示。可以看出其频谱为理想频谱,最大峰值即为基音。对应序号K=150,根据基频计算公式得:f0=fs/N×K=12 000/4 096×150=439.5Hz,可见测试结果很准确。 

 

 

    图7所示为一段2/4拍、1拍2音的节奏音乐信号经本仪器采集、处理得到的理想包络,在此基础上由前面提到的时值分析算法可准确找到音符的起止位置。 

 

 

    (2) 利用本仪器对一段含有60个音符的音乐信号进行分析,检测到的音符个数为57个。根据十二平均率,连续的两个半音之间的频率比为1.059 46,即频率偏差率为5.946%,而本仪器音高识别的平均误差绝对值远小于5.946%,检测出的音符都可以正确对应到其标准频率。因此,对检测出的57个音符的识别率是百分之百,仪器的识别率为57/60=95%,乐曲本身演奏速度为1分钟完成120个四分音符,即每个四分音符的时值为60/120=0.5s=500ms。本仪器对于57个音符的时长分析的平均绝对值误差为13.5ms,最大绝对值误差为25.6ms。测试表明了本仪器高效、可靠。 

    便携式音乐分析仪采用具有超强快速运算能力的DSP作为核心运算模块和24位音频模数转换芯片作为音频采集模块,实现对音乐信号的高速采集和实时分析。由于采用了4 096点FFT算法,可实现对大部分音符音调的精确识别。如果待测音符为低音,则需要采取抽取的方法来降低采样频率,从而改善频域分辨率以达到精确识别的目的。经实践测试表明,该仪器对于有规律的节奏音乐可实现完美检测。系统设计合理,性能稳定,可靠性高,具有良好实用和推广价值。 

参考文献 

[1] 杨士颖.计算机音乐制作与数字音频[M].上海:上海大学出版社,2001. 

[2] 胡庆钟,李小刚,吴钰淳.TMS320C55X DSP原理、应用与设计[M].北京:机械工业出版社,2005. 

[3] 顾亦然,秦军,王锁平.几种音乐识别算法的比较[J].南京邮电学报,1998,18(2). 

[4] 果永振,何遵文,毕志明.基于DSP实现语音端点检测.[J].电声技术,2002(12).

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。