Преобразование Mulaw 8 кГц в PCM 16 кГц в реальном времени

В моем POC я получаю потоковую передачу разговора от Twilio в формате Mulaw 8 кГц, и я хочу его расшифровать с помощью Amazon Transcribe, которому необходимо получить звук с частотой 16 кГц и PCM.

Я нашел здесь как преобразовать файл, но не удалось этого сделать при потоковой передаче ... Код файла:

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 дает мне playload в Base64 (8KHz, mulaw), но мне нужно преобразовать его в 16KHz, PCM.


person AsfK    schedule 16.01.2020    source источник


Ответы (1)


Вам понадобится декодер G.711 и преобразователь аудио.

Действия, которые необходимо выполнить:

  1. используйте декодер base64 для декодирования полученной полезной нагрузки.

  2. использовать этот буфер полезной нагрузки и декодировать с помощью декодера G.711 (mulaw в pcm)

  3. выходной сигнал декодера G.711 необходимо передать ресэмплеру для повышения частоты дискретизации (8-> 16 кГц)

Наконец все буферы готовы в PCM 16KHz.

person mail2subhajit    schedule 16.01.2020
comment
Надеюсь, вы сможете разобраться в соответствующих java-библиотеках. - person mail2subhajit; 16.01.2020
comment
Спасибо! Скоро проверю - person AsfK; 16.01.2020
comment
@ mail2subhajit Я использую nodejs github.com/rochars/alawmulaw, чтобы получить PCM 16. Однако исходящий трафик, который я получаю, - это int16array. Вы знаете, как мне передать его в Amazon Transcribe дальше? - person sushil; 20.04.2020
comment
@Sunil, дайте мне знать, какой интерфейс (API) Amazon Transcribe вы используете? - person mail2subhajit; 08.05.2020