JAVA获取音频的波峰值_如何从java-fft中获取PCM数据的频率

本文介绍了一种使用JAVA获取音频波形峰值并利用FFT(快速傅里叶变换)计算频率的方法。通过读取音频数据,转换为双精度浮点数,然后应用FFT计算,最终找出音频的主要频率。
摘要由CSDN通过智能技术生成

由于某种原因,频率被取代

391 hz => 1162

440 hz => 2196

493 hz => 2454

我正在使用这个值

final int audioFrames= 1024;

final float sampleRate= 44100.0f;

final int bitsPerRecord= 16;

final int channels= 1;

final boolean bigEndian = true;

final boolean signed= true;

byteData= new byte[audioFrames * 2]; //two bytes per audio frame, 16 bits

dData= new double[audioFrames * 2]; // real & imaginary

这就是我准备数据并将其转换为双精度数的方法:

format = new AudioFormat(sampleRate, bitsPerRecord, channels, signed, bigEndian);

DataLine.Info info = new DataLine.Info(TargetDataLine.class, format);

microphone = (TargetDataLine) AudioSystem.getLine(info);

microphone.open(format);

microphone.start();

int numBytesRead = microphone.read(byteData, 0, byteData.length);

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值