从22kHz的到8kHz的下采样PCM / WAV音频 [英] Downsampling pcm/wav audio from 22khz to 8khz
问题描述
我的Android应用程序需要PCM(22kHz)环绕转换为AMR,但是API <一个href=\"https://github.com/android/platform_frameworks_base/blob/master/media/java/android/media/AmrInputStream.java\"相对=nofollow> AmrInputStream 只支持 8kHz的PCM的
My android application needs to convert PCM(22khz) to AMR , but the API AmrInputStream only supports with pcm of 8khz.
我怎么能 downsample的在 PCM 22 kHz到8千?
推荐答案
采样率是AmrInputStream.java硬codeD。
The sample rate is hard coded in AmrInputStream.java.
// frame is 20 msec at 8.000 khz
private final static int SAMPLES_PER_FRAME = 8000 * 20 / 1000;
所以,你必须到PCM首先转换为AMR。
So you have to convert the PCM to AMR first.
InputStream inStream;
inStream = new FileInputStream(wavFilename);
AmrInputStream aStream = new AmrInputStream(inStream);
File file = new File(amrFilename);
file.createNewFile();
OutputStream out = new FileOutputStream(file);
//adding tag #!AMR\n
out.write(0x23);
out.write(0x21);
out.write(0x41);
out.write(0x4D);
out.write(0x52);
out.write(0x0A);
byte[] x = new byte[1024];
int len;
while ((len=aStream.read(x)) > 0) {
out.write(x,0,len);
}
out.close();
有关下采样,您可以尝试<一个href=\"http://mary.dfki.de/javadoc/4.0.0/marytts/util/data/audio/AudioConverterUtils.html#downSampling%28javax.sound.sampled.AudioInputStream,%20int%29\"相对=nofollow>玛丽API 。
For Downsampling, You can try the Mary API.
这篇关于从22kHz的到8kHz的下采样PCM / WAV音频的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!