내 안드로이드 애플리케이션은 PCM (22khz)을 AMR로 변환해야하지만 AmrInputStream은 pcm8khz으로만 지원됩니다.22khz에서 8khz로 pcm/wav 오디오 다운 샘플링
어떻게하면 을 다운 샘플pcm에서 22khz ~ 8khz까지 줄일 수 있습니까?
내 안드로이드 애플리케이션은 PCM (22khz)을 AMR로 변환해야하지만 AmrInputStream은 pcm8khz으로만 지원됩니다.22khz에서 8khz로 pcm/wav 오디오 다운 샘플링
어떻게하면 을 다운 샘플pcm에서 22khz ~ 8khz까지 줄일 수 있습니까?
샘플 속도는 AmrInputStream.java에 하드 코딩되어 있습니다.
// frame is 20 msec at 8.000 khz
private final static int SAMPLES_PER_FRAME = 8000 * 20/1000;
그래서 PCM을 먼저 AMR로 변환해야합니다.
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();
다운 샘플링의 경우 the Mary API을 시도 할 수 있습니다.
나는 자바 다운 샘플링 lib 디렉토리를 찾을 수 : https://github.com/hutm/JSSRC 는 C 버전은 JNI
이미이 작업을 수행 한
, 내가 뭘 원하는 AMR로 변환하기 전에 PCM을 다운 샘플링 인에 의해 사용될 수도있다. –
오디오 파일을 다운 샘플링하기위한 [mary api] (http://elckerlyc.ewi.utwente.nl/browser/Elckerlyc/Shared/repository/MARYTTS/java/marytts/util/data/audio/AudioConverterUtils.java)를 찾으십시오. – StarPinkER
이 api는 android에서 실행되지 않습니다. : –