录制的音频/ webm作为Google语音到文本API的输入

时间:2019-07-10 01:18:06

标签: java speech-to-text google-speech-api

我目前正在使用React作为我的前端,并使用Java Spring Boot作为我的服务器。我正在使用React-Mic录制音频,将音频传递到FormData,并将带有该FormData作为主体的HTTP发布请求发送到Java服务器。但是,由于录制的音频在webm中,因此Google Speech-To-Text API没有适当的编码。知道如何将音频转换为flac或Google Speech-To-Text API支持的任何其他格式类型吗?

1 个答案:

答案 0 :(得分:1)

可能可以使用JAVE2从webm转换为mp3(或其他)。

https://github.com/a-schild/jave2

自述文件中的示例应为您指明正确的方向:

try {                                                         
 File source = new File("file path"); // Path to your webm                   
 File target = new File("file path");  // Output path   

 //Audio Attributes                                       
 AudioAttributes audio = new AudioAttributes();              
 audio.setCodec("libmp3lame"); // Change this to flac if you prefer flac                               
 audio.setBitRate(128000);                                   
 audio.setChannels(2);                                       
 audio.setSamplingRate(44100);                               

 //Encoding attributes                                       
 EncodingAttributes attrs = new EncodingAttributes();        
 attrs.setFormat("mp3"); // Change to flac if you prefer flac                                     
 attrs.setAudioAttributes(audio);                            

 //Encode                                                    
 Encoder encoder = new Encoder();                            
 encoder.encode(new MultimediaObject(source), target, attrs); 
 // The target file should now be present at the path specified above


} catch (Exception ex) {                                      
 ex.printStackTrace();                                        
}                     

转换后,您将拥有一个文件对象,可以将其转换为byte []以发送语音到文本api,如以下示例所示:

https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/speech/cloud-client/src/main/java/com/example/speech/QuickstartSample.java