Преобразование аудиофайла Webm во flac в Java Spring для Google Cloud Speech-To-Text API - PullRequest
1 голос
/ 10 июля 2019

У меня есть аудиофайл webm, и я хочу преобразовать его в flac / Linear16, который поддерживается облачным речевым API Google. Есть идеи, как мне это сделать?

В интерфейсе React я использую ReactMic для получения записанного звука.

<ReactMic
    className="w-10 h-1 aspect-ratio ml2"
    record={this.props.recording}
    onData={this.props.onData}
    onStop={this.props.onStop}
    strokeColor="#FFFFFF"
 />
 </div>
    <div className="ma3">
         <Button onClick={this.props.onStartRecord}>Start Recording</Button>
         <Button onClick={this.props.onStopRecord}>Stop Recording</Button>
    </div>

// Соответствующие функции

onStartRecord = e => {
    this.setState({ recording: true });
};

onStopRecord = e => {
    this.setState({ recording: false });
};

onStop = recordedBlob => {
    this.setState({ recordedAudio: recordedBlob });
};

Записанный звук затем отправляется как HTTP Post request

let fd = new FormData();
fd.append("audio", this.state.recordedAudio.blob);

fetch(this.props.url + "speeches/", {
  method: "post",
  body: fd
})
  .then(response => response.text())
  .then(data => {
    this.setState({ result: data });
  });

В бэкэнде Java Spring я получу аудио как MultipartFile

@RequestMapping(value = "/speeches", method = RequestMethod.POST,
        consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<String> speechToText(@RequestBody MultipartFile audio) {

   return itemService.speechToText(audio);
}

Проблема теперь в том, что файл имеет формат webm, который не поддерживается Google Cloud Speech-To-Text API. Есть ли способ конвертировать в формат flac / linear16 либо во внешнем интерфейсе, либо во внутреннем. Спасибо!

...