邹 逸,王宏伟(北京信息科技大学 理学院,北京 100192)
基于DSP的高性能校音器设计与研制
邹逸,王宏伟
(北京信息科技大学理学院,北京100192)
校音器用于识别管弦乐器声音的基音频率和音高。该校音器使用型号为TMS320VC5509A的DSP芯片作数字信号处理,运行8192点快速傅里叶变换算法,实现声音信号频谱分析;利用语音编解码芯片TLV320AIC23将从麦克风获取的模拟信号转化为数字信号,采样率为8kHz;该检测仪利用LCD输出频率和音高信息;印刷电路板成品采用4层电路板模式。该检测仪可以有效检测管弦乐器的音域范围为32Hz~4kHz,频谱分辨率达到0.98Hz。
快速傅里叶变换;TMS320VC5509A;TLV320AIC23;声音基频检测;校音器
校音器以声音基频检测技术为核心,用于检测乐器的音高是否标准。市场上流行的校音器精确度较低,音域的适应范围较小,实际的低音检测效果较差,而高品质校音器价格又过于昂贵。本文研发的作品力图挖掘数字信号处理器(Digital Signal Processor,DSP)和整体电路的性能,实现更精细的频谱分辨率,追求高精度与高可靠性;同时,更贴近管弦乐手用户的实际需求,提高校音专业性,完成高品质校音器,可广泛适用于管弦乐器的校音工作。
该校音器用DSP为主芯片,以快速傅里叶变换(Fast Fourier Transformation,FFT)为核心算法,用于识别管弦乐器声音基音频率和音高,并判定乐器的音高是否标准。检测仪整个系统主要由传声器(麦克风,Mic)接口、模数转换器、数字信号处理器(DSP)、显示驱动和液晶显示屏(LCD)等模块组成,系统结构如图1所示。
图1 硬件结构图
麦克风和模数转换器用于采集声音并转换成数字信号,DSP对数字信号进行快速傅里叶变换,得到振幅频谱数据、分析振幅频谱数据提取基音频率,并转化为音高。显示驱动通过复杂可编程逻辑芯片(CPLD)完成,并驱动LCD模块显示基音识别结果。
2.1麦克风选择和模数转换器
为了提高音频识别效果,本文采用噪声低、拾音效果好的外接有源电容麦克风。麦克风频率响应为30Hz~20kHz,电源为48V幻象电源。
模数转换器以音频编解码器(CODEC)芯片TLV320AIC23作为核心。该芯片有Line和Mic两种输入接口。如果录音设备功耗低,例如驻极体话筒,芯片上第17号管脚MICBIAS可为话筒提供偏置电压,大小为3/4AVDD[1],用Mic接口接收信号。但这种话筒拾音性能差。为了降低输入噪声,提高拾音效果,本设计采用Line接口接收电容麦克风发送的音频模拟信号。Line连接方式原理图如图2所示。
图2 ADC模块原理图
图2中,TLV320AIC23B芯片上标号为D_90的第24号引脚与DSP TMS320VC5509APGE上第90号引脚相连,其他标号以此类推。闲置的引脚要悬空,不能接地。16号引脚用于降噪,由并联的去耦电容C19、C20完成。在每一个VDD引脚上并联这些去耦电容可以进一步降低电源噪声干扰。
2.2数字信号处理器
该校音器采用型号为TMS320VC5509APGE的16位定点DSP负责数字信号处理。该DSP芯片时钟频率可达200MHz,有128K×16bit片内RAM。
由于DSP内部存储器容量有限,因此需要使用bootloader将程序烧写到外部EEPROM中。通过合理配置GPIO的电平,上电时DSP会自动将EEPROM中的程序载入片内运行,这样就可以使DSP脱离仿真器和电脑而独立运行。
DSP最小系统电路与单片机相似,使用参考文献[2]所示电路。注意DSP内核需要1.8V电源,外围数字芯片及数字高电平需要3.3V电源,二者共用一个数字电路接地端。模拟电路也需要3.3V供电电源和模拟电路接地端。虽然电压相同,但是数字和模拟电路要分开,数字地与模拟地之间用磁珠连接,以免干扰。
2.3显示驱动和液晶显示屏
显示驱动采用型号为EPM240T100C5的CPLD芯片,图形点阵液晶屏模块为128×64像素。DSP使用EMIF接口与CPLD相互沟通,CPLD芯片电路基本按器件手册布局,此处不再赘述。
2.4印刷线路板设计
校音器印刷电路板(PCB)采用4层布线,双面布件方式,核心器件布于顶层,部分器件布于底层,中间两层分别是地线层和电源层。PCB厂商要求PCB线宽线距8mil以上,过孔内径12mil以上,外径24mil以上。成品如图3所示。图2中C5和C6电容优先布局,尽可能靠近引脚。C3和C4电容所在的两组信号线是电路中所有的模拟信号线路,优先布线。
3.1采样频率与FFT点数的选择
本系统使用8kHz采样率和8 192点FFT。
科学音调记号法规定拉丁字母为音调,数字为八度区。钢琴音域由科学音调记号法表示为A0至C8,一般乐器常用音域是C1至B7,对应的频率范围是32.70Hz~3 951Hz。交响乐队中,除了打击乐器,音高能超过钢琴的乐器不多,人类的歌喉很难逾越3kHz。基于以上原因,该校音器测量范围设定在32.70Hz~4kHz。根据抽样定理,本系统的抽样频率选择8kHz。
C1和C#1的频率分别为32.70Hz和34.65Hz,二者的几何平均为33.66Hz,频谱分辨率最低要求为:
34.65Hz-33.66Hz=0.99Hz
计算FFT采样点数如下:
采样点数=采样率÷频谱分辨率=8 000÷0.99=8 081
如果采样点数为8 192,则频谱分辨率为:
8 000÷8 192=0.98Hz
一个八度分成12个半音音程,12平均律规定八度的音程(二倍频程)按频率等比例地分成12等份,两个相邻半音的频率大约为1.059 46倍[3],音高越高则频率相差越大。
因此,8 192点可以满足最低音高为C1、最高音高为B7的识别要求。
3.2DSP算法实现
DSP代码分为5大部分,分别是声明定义、ADC、FFT计算、提取基音和LCD显示。主函数算法流程图如图4所示。
图4 DSP算法流程图
3.2.1为变量分配存储空间
用于FFT运算的实型数组长度较大,需要占用很多空间。可以使用#pragma DATA_SECTION自定义段功能为变量分配存储空间。
首先,在源文件的开头,将数组sin_t安排在一个名为.databuf1的段中:
#pragma DATA_SECTION(sin_t,".databuf1")
float sin_t[8192];
之后,配置CMD文件。在MEMORY中定义区间SARAM3是一个起始地址为001c000h,大小为0005000h的储存空间:
SARAM3:origin=0016000h,length=0005000h
在SECTIONS中,将段.databuf1安排在区间SARAM3中:
.databuf1>SARAM3fill=0
按如上方式分配,数组sin_t中所有的数据都保存在以0016000h为起始地址、长度为5000h的存储区里面[4]。按此规则,可以为所有变量和程序安排指定的存储空间。
3.2.2FFT算法实现
FFT算法根据时间抽取基-2FFT编程思想[5]。为了声音基频检测仪能够适应多种点数的FFT算法,本设计没有采用预设数据的方式,而是采用计算的方式对设置为全局变量的旋转因子进行初始化。初始化、倒位序和FFT运算的部分代码如下:
代码中用到的整型变量ORDER是FFT级数,如8 192点FFT是2的13次幂,ORDER就是13。以上算法理论上可以计算任意点数FFT,但是,受限于DSP5509芯片的存储空间和运算速度,FFT点数建议不超过8 192。
3.2.3基音频率分析
将经DSP运算得到的振幅频谱数据存于一个长度为8 192的16bit无符号整形数组中。通过以下3步计算得到基因频率:
(1)消除白噪声:观察零输入状态下白噪声幅度可达到的最大值,以此定义最大值参数A,修改振幅频谱数据数组中的数据,保留数值大于参数A的视为有效信号,删除小于等于A的白噪声;
(2)从第一位开始寻找振幅频谱数据中第一个有效峰值所在位置;
(3)利用如下公式计算基音频率:
其中,F为基音频率,P为有效峰值所在位置,fs为抽样频率,N为傅里叶变换点数。
利用TI公司的集成开发环境(Code Composer Studio,CCS)可以实时监控DSP的计算结果,其图像显示窗口可以为装有振幅频谱数据的数组作图。电子琴模拟小提琴声音演奏C5,CCS的图像显示窗口展示出幅度谱的前4 096点如图5所示。
图5 小提琴C5音的振幅频谱图
图5中数据没有单位,横坐标代表数组的位置,纵坐标代表数组每一位对应的值,以十进制表示。
现实中的声音都是复合音。在声音的各个频率分量中,基音的频率是最低的,它决定声音的音高[6]。如图5中出现的第一个峰值为基音频率对应的位置,其横坐标为536。后3个峰值皆为泛音信号。根据式(1)计算基音频率为:
536×8 000÷8 192=532(Hz)
3.2.4确定音高
音乐界已经明确规定了音高的基音频率。每个相邻半音之间的基音频率约是1.059 46倍。第5个八度的C,即C5附近部分音高频率举例如表1所示。
表1 音高与频率转换表
由于实际测试中获取的频率不可能与约定音高频率完全吻合,因此,采用判定频率区间的方式。频率区间的边界采用两个相邻音高频率的几何平均值。例如C5的频率区间为508Hz~539Hz。
通过频率区间确定音高后,再判断其与标准音高之间的误差。自定义误差值小于1/64倍,则认为准确,标注“YES”;如果检测频率误差超出范围,则用“-”表示音高偏低,用“+”表示音高偏高。
用电子琴模拟提琴声音演奏C5,校音器检测结果如图6所示,图片在原图上进行了灰度和反色处理。图中显示“OK”表示基音频率标准。CCS显示幅度谱见图5。
C5的约定值是523.25Hz,测量结果与理论结果相符。低音C2测量结果如图7所示,系统对低音的检测结果良好。
图6 C5测量结果
图7 C2测量结果
经过实际应用,该声音基频检测仪效检测的音域范围为32Hz~4kHz,对应管乐和弦乐的音高范围为C1至B7。
该校音器可以用于大多数管乐器和弦乐器的校音工作,测试效果良好,可以从容面对诸如低音单簧管和大提琴的校音工作。得益于精细的频谱分辨率,校音器可精准分辨每个半音。电路板经过三次升级优化,成品整体电路性能较好。
[1]丁祥,余小清,万旺根.音频编解码器TLV320AIC23及其与DSP接口设计[J].单片机与嵌入式系统应用,2002(1):265-268.
[2]汪春梅,孙洪波.TMS320C55xDSP原理及应用(第3版)[M].北京:电子工业出版社,2011.
[3]胡泽.音乐声学[M].北京:中国广播电视出版社,2003.
[4]陈泰红,任胜杰,魏宇.手把手教你学DSP-基于TMS320C55x[M].北京:北京航空航天大学出版社,2011.
[5]焦瑞莉.数字信号处理[M].北京:机械工业出版社,2011.
[6]胡泽.音乐声学[M].北京:中国广播电视出版社,2003.
The design of high performance tuner based on DSP
Zou Yi,Wang Hongwei
(School of Science,Beijing Information Science and Technology University,Beijing 100192,China)
Tuner is used for identifying fundamental frequency and pitch of orchestral instrument.A TMS320VC5509A DSP chip is used in the tuner for digital signal processing,doing 8192 point FFT algorithm to achieve the sound signal spectrum analysis.A speech codec TLV320AIC23 is used to convert the analog signal from the microphone into digital format,and the sampling rate is 8 kHz.The device has a LCD screen to display frequency and pitch information.The product PCB is 4 layer layout.The device can catch the range of orchestral frequencies from 32 Hz to 4 kHz,and the resolution of spectrum is 0.98 Hz.
fast Fourier transformation;TMS320VC5509A;TLV320AIC23;sound fundamental frequency examination;tuner
TN709
A
1674-7720(2015)16-0030-04.
邹逸,王宏伟.基于DSP的高性能校音器设计与研制[J].微型机与应用,2015,34(16):30-33.
2015-05-25)
邹逸(1993-),男,本科,主要研究方向:电子电路和声音信号处理。
王宏伟(1967-),男,博士,副教授,主要研究方向:无线传感器网络。