将 8kHz mulaw 实时转换为 16KHz PCM
Convert 8kHz mulaw to 16KHz PCM in real time
在我的 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。
您需要 G.711 解码器和音频重采样器。
要遵循的步骤:
使用base64解码器解码收到的Payload。
使用此有效载荷缓冲区并使用 G.711 解码器解码(mulaw 到 pcm)
需要将 G.711 解码器的输出提供给重采样器进行上采样(8->16 KHz)
最后,PCM 16KHz 的所有缓冲区都已准备就绪。
在我的 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。
您需要 G.711 解码器和音频重采样器。
要遵循的步骤:
使用base64解码器解码收到的Payload。
使用此有效载荷缓冲区并使用 G.711 解码器解码(mulaw 到 pcm)
需要将 G.711 解码器的输出提供给重采样器进行上采样(8->16 KHz)
最后,PCM 16KHz 的所有缓冲区都已准备就绪。