如何从原始pcm数据计算量值?

时间:2013-12-03 18:55:21

标签: android pcm waveform

我的Android应用程序会定期从扬声器中捕获原始pcm音频数据。数据包大小为128字节。

当没有音频时,数据包中的所有字节都包含-128的值。当有音频时,一个字节的最大值是+127。

这是我的伪代码,用于计算幅度(介于0.0和1.0之间)。

 long sum = 0;
 for(int i=0;i<wave.length;i++) {
    sum += ((int) wave[i] + 128);
 }

 float amp = ((float) sum)/((float) 256 * wave.length);

使用这种算法,无论我是轻声还是大声地说,振幅都不会发生太大变化。让我觉得这个算法不对。

我想知道我对振幅计算的理解是否正确。如果有人能给我一个更好的算法,我将不胜感激。

对于Android人员,我通过Visualizer.OnDataCaptureListener接口及其onWaveFormData方法接收数据。

提前感谢您的帮助。

0 个答案:

没有答案