【发布时间】:2012-06-10 06:57:52
【问题描述】:
我正在使用 android 平台,从以下参考问题中我了解到,使用返回原始数据的 AudioRecord 类我可以过滤音频范围取决于我的需要,但为此我需要算法,有人可以帮助我吗寻找算法来过滤范围 b/w 14,400 bph 和 16,200 bph。
我尝试了“JTransform”,但我不知道是否可以使用 JTransform 来实现?目前我正在使用“jfftpack”来显示效果很好但我无法使用它来实现音频过滤器。
帮助感谢提前感谢。 以下是我上面提到的代码,我正在使用“jfftpack”库来显示您可能会在代码中找到这个库引用,请不要混淆
private class RecordAudio extends AsyncTask<Void, double[], Void> {
@Override
protected Void doInBackground(Void... params) {
try {
final AudioRecord audioRecord = findAudioRecord();
if(audioRecord == null){
return null;
}
final short[] buffer = new short[blockSize];
final double[] toTransform = new double[blockSize];
audioRecord.startRecording();
while (started) {
final int bufferReadResult = audioRecord.read(buffer, 0, blockSize);
for (int i = 0; i < blockSize && i < bufferReadResult; i++) {
toTransform[i] = (double) buffer[i] / 32768.0; // signed 16 bit
}
transformer.ft(toTransform);
publishProgress(toTransform);
}
audioRecord.stop();
audioRecord.release();
} catch (Throwable t) {
Log.e("AudioRecord", "Recording Failed");
}
return null;
/**
* @param toTransform
*/
protected void onProgressUpdate(double[]... toTransform) {
canvas.drawColor(Color.BLACK);
for (int i = 0; i < toTransform[0].length; i++) {
int x = i;
int downy = (int) (100 - (toTransform[0][i] * 10));
int upy = 100;
canvas.drawLine(x, downy, x, upy, paint);
}
imageView.invalidate();
}
【问题讨论】:
标签: android audio filter android-audiorecord