【问题标题】:Convert 8kHz mulaw to 16KHz PCM in real time将 8kHz mulaw 实时转换为 16KHz PCM
【发布时间】:2020-05-03 03:53:30
【问题描述】:

在我的 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();
}

实际上,Twilio 为我提供了 Base64(8KHz,mulaw)的播放负载,但我必须将其转换为 16KHz,PCM。

【问题讨论】:

    标签: java amazon-web-services twilio audio-streaming audio-converter


    【解决方案1】:

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

    要遵循的步骤:

    1. 使用 base64 解码器对收到的 Payload 进行解码。

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

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

    最后所有的缓冲区都准备好了 PCM 16KHz。

    【讨论】:

    • 我希望您能够找出各自的 java 库。
    • 谢谢!将尽快检查
    • @mail2subhajit 我正在使用 nodejs github.com/rochars/alawmulaw 来获取 PCM 16 。但是,我得到的出站是 int16array。您知道如何进一步将其传递给 Amazon Transcribe 吗?
    • @Sunil,让我知道您使用的 Amazon Transcribe 接口 (API) 是什么。?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 2014-08-18
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多