У меня есть аудиофайл 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 либо во внешнем интерфейсе, либо во внутреннем. Спасибо!