基于Android的声音频谱分析器研究与设计①

2018-02-05 07:56任衍敏王大东
关键词:鸟叫声测试者被试者

任衍敏, 侯 锟, 王大东

(吉林师范大学 计算机学院 ,吉林 四平 136000)

0 引 言

Android是一种基于Linux的开放源代码的操作系统,为软件开发人员提供了丰富的API和足够的开发权限,可以开发出功能强大创意十足的手机应用程序[1]。现今Android平台为广大用户提供了各种丰富多彩的应用服务。有关实验研究以及市面上可见得更多的是将已经采集好的音频文件,输入到利用A/D转换器,DSP芯片和各类显示器等组装得大型音频分析仪中进行分析检测[2~4]。这类分析仪的不足之处是大而沉重,携带不便,不能满足现代人们随时随地,方便快捷的学习与生活方式。

介绍一种基于Android平台进行音频采集与分析的方法。采用AudioRecord和AudioTrack类实现音频采集与输出[5],通过接口提供给上层调用,通过快速傅立叶变换算法对音频数据进行频谱分析,利用随机流文件包的指针位置设置方法获取位置信息,实现频率在屏幕上的实时显示。

1 FFT算法理论

FFT是一种的高效算法,即快速傅里叶变换。其基本思想基于两点,一是根据中系数的周期性和对称性提高运算速度,二是把长度为点的大点数的运算分解为若干个小点数的来运算。根据蝶式运算不同可分为基-2,基-4和和任意基数的算法,其中基-2FFT算法更为灵活,应用较多。按照抽取方式又可分为按时间和按频率两类方法,两者只是复数加减法和旋转因子乘法的次序不同,运算量一样。采用基-2和按时间抽取FFT算法:

(1)

(1) 将序列x(n)按序号n的奇,偶分为两个N/2点子序列:

(2) 将N点DFT分为两组来运算:

根据

最后得

(3) 将X1(k)和X2(k)继续分解,可将N/2点的子序列再按奇、偶分解,一直到最后分解成两两点的DFT为止

2 整体架构

Android音频系统框架由应用层,Framework层,库层以及HAL层构成。主要体现在Framework层,该层可以简单地理解为一些API的集合,通过调用该层中的AudioRecord和AudioTrack类分别完成对音频数据的捕获和输出,同时利用FFT算法进行音频分析然后显示在屏幕上。框图如图1所示[6]。

图1 系统框图

先通过录音,即对音频信号的采集,Android系统功能自动将其从模拟信号转换为数字信号,存放在数据缓冲区中,写入到文件,以便实时播放和回放;然后微处理器对收到的离散数字信号进行快速傅立叶变换,同时将输出的数据存入另外一个缓冲区中,系统读出数据并对其进行绘图显示。

3 音频捕获与播放

在Andriod SDK中提供了两个用于音频捕获的类,这两个类分别是MediaRecorder类和AudioRecord类。MediaRecorder捕获的音频信号是压缩编码后的音频数据,所以在后续读取数据时,需要解压缩,而用AudioRecord捕获的音频信号可以直接获得无压缩的脉冲编码调制PCM数据[7~8],因为它允许访问原始音频流,所以较前者更为灵活[9]。基于此,采用AudioRecord来捕获音频源,利用AudioTrack播放音频。

AudioRecord类构造函数包含五个参数,分别为:音频源,采样频率,声道,音频格式和缓冲区大小。为了适应不同Android设备的采样频率,设定了44100HZ, 22050HZ, 11025HZ, 8000HZ四个值。由于采样频率越高,采样数据越接近原始音频数据,由高向低选取设备硬件支持的最高采样频率。缓冲区大小调用getMinBufferSize静态方法。其余三个参数中,音频源设置为MediaRecorder.AudioSource.MIC,声道设置为AudioFormat.CHANNEL_IN_MONO(单声道),音频格式设置为PCM16bit。现在,大部分安卓手机硬件支持16位采样,16位意味着对声音信号以216=64k个精度单位进行表示,所表示的音频比PCM8bit更接近真实[10]。音频捕获流程图如图2所示。

图2 音频捕获流程图

图3 A1被试者三个“起来”的部分实时音频分析图

图4 “黄鹂”、“夜莺”、“麻雀”叫声频谱分析图

4 实验与结果分析

4.1 实例一,歌声测试

实验分为两组,第一组一位测试者,音乐专业学生;第二组5位测试者,非专业学生。为了方便后续描述,将第一组的测试者记为A1,第二组测试者记为B1-B5。首先分别让他们训练国歌中的“起来,起来,起来”,然后进行单个采集;之后让大家选出最好的两位;最后进行频谱分析。选取这段因为这节是上行声调,情感也是越来越强烈,能够更加明显地显示分析结果。下图是A1测试者三个“起来”的部分实时音频分析图,上面是时域图,下面是频谱图。

从图中可以清晰地看到,三个“起来”时域上响度逐渐增强,密度逐渐增大。同样,频谱图中频率逐渐递增,密度逐渐增大。

下表1中Fmin表示最小基频,Fmax表示最大基频。

表1 “起来,起来,起来”A1,B1-B5被试的数据

由大家选出得表现最好的两位是A1和B3。

由上表4-1中的数据可以看到,A1被试与B1-B5被试者有明显的不同。A1被试的Fmin值明显小于B1-B5被试者的Fmin值,说明A1被试者演唱技巧要好于B1-B5被试者。同时,A1被试的Fmax值明显高于B1-B5被试者的,说明A1被试者在演唱中可以通过更好的情感表现力使声音位置达到最高的HZ值。此外,从数据上看,B3的演唱效果也是比较好的。其他几位被试最大值(最高音)HZ值上不去,最小值(最低音)HZ值下不来[11]。

4.2 实例二,鸟声测试

实验中采集“黄鹂鸟”、“夜莺”、“麻雀”三种鸟叫声进行分析。由于条件限制以及外界噪声干扰大且复杂的因素,三种鸟叫声的声源取自于网络上的原声音频。分析图如图4所示。

表2 “黄鹂”、“夜莺”、“麻雀”叫声频率数据

由实验一和实验二中的频谱分析图以及数据表中可以明显地看出,这三类鸟叫声的频率明显高于人发声的频率。也验证了鸟叫声更加清脆,明亮,悦耳的听觉美感。

5 结 语

基于Android操作系统平台,设计了一个针对音频采集与频谱分析的终端APP。利用Android提供的AudioRecord和AudioTrack类实现音频采集和播放;然后采用基-2FFT按时间抽取的算法实现了对音频数据的时频变换;其中用随机流文件包的指针位置设置方法获取位置信息,实现频率定点显示的功能。

[1] 许婧. 基于Android音频比对系统的设计与实现[D]. 武汉:华中科技大学, 2013.

[2] 张家田,封川川,严正国.基于DSP的音频信号分析仪设计[J].西安石油大学学报(自然科学版),2009,24(1):85-87.

[3] 张明,樊昌元,张东明,等.声音信号频谱检测仪设计[J].北京联合大学学报,2015,29(4):13-18.

[4] 陈坚,盛庆华,毛礼建,等.基于STM32的音频信号分析仪的设计与实现[J].工业仪表与自动化装置,2016,(3):79-21.

[5] Jens Saalmuller,Matthias Kuba,Andreas Oeder.A User-Friendly Android-Based Tool for 868 MHZ RF Traffic-and Spectrum-Analysis[C].Germany:embedded world2015,2015.

[6] SHETE P,KURUDE A,BHOLE M,et al.Android Based Spectrum Analyzer[J].Irenational Journal of Scientific &Technology Research,2013,2(10):303-305.

[7] 陆玲霞,彭勇刚,贺东星. 基于安卓频谱分析仪的探究性实验设计[J]. 实验科学与技术,2016,14(4):44-47.

[8] 苏维嘉,杨静,唐宇.Android手机麦克风的数据采集与显示[J].嵌入式技术,2012,38(7):30-32.

[9] Shawn Van Every . Android多媒体开发高级编程[M]. 巢文涵,译. 北京:清华大学出版社,2012.

[10] Shawn Van Every.Pro Android Media:Developing Graphics,Music,Video and Rich Media Apps for Smartphones and Tablets[M].Berkeley:Apress,2010.

[11] 豆钰.歌曲演唱中情感表现力的嗓音分析[D].北京:中国音乐学院,2016.

猜你喜欢
鸟叫声测试者被试者
声压级大小对鸟叫声和流水声恢复性效应的影响
我多想把那束光藏匿起来
德西效应
德西效应
搜救犬幼犬挑选测试
指纹收集器
儿童花生过敏治疗取得突破
小议语法测试
为什么我们会忍不住发朋友圈?