Android 实时采集声音的频率和大小

Android实时采集声音的频率和大小

笔者本不是专业人士,通过查了几篇资料和请教软件部门的同学搭的demo ,如有不正确之处,请及时指出

1.原理
  1. 声音大小省略,网上可以很好搜到
  2. 使用AudioRecord类采集声音信息,通过傅里叶转换,获取声音的频率
2.AudioRecord类说明
/**
 *@param audioSource  采集声音源  MediaRecorder.AudioSource.MIC 为采集麦克风
 *@param sampleRateInHz  采集声音的频率,因设备而定,44100Hz 支持所有的设备,部分设     备上也支持 22050 16000 11025
 *@param channelConfig 采集声音的声道 AudioFormat.CHANNEL_CONFIGURATION_MONO为单声道
 *@param audioFormat  返回信息的格式 这里是 AudioFormat.ENCODING_PCM_16BIT
 *@param bufferSizeInBytes  缓存区大小 有要求的 ,可以用 AudioRecord.getMinBufferSize 获取
 */
public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat,int bufferSizeInBytes)

/**
 *@param sampleRateInHz  采集声音的频率
 *@param channelConfig 采集声音的声道 
 *@param audioFormat  返回信息的格式
 *
 */
static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) 
3.傅里叶变换简单说明
  1. 快速傅里叶变换输入的一组数组,输出等长的一组数组
  2. 数组由时域变换成了频域,数组的中最大的值代表能量最大,下坐标乘以频幅就等于该点频率,通常以能量最大的频率代表声音的频率.
  3. 频幅指一个单位所代表的频率大小,例如下坐标为2 ,该点的频率=2*频幅.频幅=采样频率/采样点
  4. 采样点指采集信息的长度,可自己定,但最好为2的n次幂,不然结果会为零.
项目地址

https://github.com/xuanxuandaoren/SoundAnalysis/tree/master

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值