java实时将8kHz mulaw转换为16KHz PCM
在我的POC中,我接收到Twilio在8kHz mulaw中传输的对话,我想使用Amazon transcribe进行转录,需要获得16KHz和PCM的音频
我找到了here如何转换文件,但在流媒体中无法转换。。。文件的代码为:
File sourceFile = new File("<Source_Path>.wav");
File targetFile = new File("<Destination_Path>.wav");
AudioInputStream sourceAudioInputStream = AudioSystem.getAudioInputStream(sourceFile);
AudioInputStream targetAudioInputStream=AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, sourceAudioInputStream);
System.out.println("Sample Rate1 "+targetAudioInputStream.getFormat().getFrameRate());
AudioFormat targetFormat = new AudioFormat(new AudioFormat.Encoding("PCM_SIGNED"), 16000, 16, 1, 2, 8000, false);
AudioInputStream targetAudioInputStream1 = AudioSystem.getAudioInputStream(targetFormat, targetAudioInputStream);
System.out.println("Sample Rate "+targetAudioInputStream1.getFormat().getFrameRate());
try {
AudioSystem.write(targetAudioInputStream1, AudioFileFormat.Type.WAVE, targetFile);
} catch (IOException e) {
e.printStackTrace();
}
实际上,Twilio在Base64中给了我一个播放负载(8KHz,mulaw),但我必须将其转换为16KHz,PCM
# 1 楼答案
你需要一个G.711解码器和音频重采样器
应遵循的步骤:
使用base64解码器对接收到的有效负载进行解码
使用此有效负载缓冲区,并使用G.711解码器(mulaw到pcm)进行解码。
G.711解码器的输出需要提供给重采样器进行上采样(8->;16 KHz)
最后,所有的缓冲器在PCM 16KHz中准备就绪