将8kHz mulaw实时转换为16KHz PCM

问题描述 投票:4回答:1

[在我的POC中,我收到来自Twilio的8kHz mulaw流媒体对话,我想使用需要获得16KHz和PCM音频的Amazon Transcribe进行转录。

我发现了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();
}

Actaully Twilio给了我Base64(8KHz,mulaw)的播放负载,但我必须将其转换为16KHz,PCM。

谢谢!

java amazon-web-services twilio audio-streaming audio-converter
1个回答
0
投票

您需要一个G.711解码器和音频重采样器。

要遵循的步骤:

  1. 使用base64解码器解码收到的有效载荷。

  2. 使用此有效负载缓冲区,并使用G.711解码器进行解码(从mulaw到pcm)>]

  3. G.711解码器的输出需要提供给重采样器以进行上采样(8-> 16 KHz)]] >>

  4. 最后,所有缓冲区都已准备就绪,处于PCM 16KHz的状态。

© www.soinside.com 2019 - 2024. All rights reserved.