我使用的是java的语音识别API -贾维斯位于https://github.com/lkuza2/java-speech-api
然而,当我跑我的应用程序,我得到一个错误:服务器返回的HTTP响应代码:400网址: https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US&maxresults= 1 (这是这个API使用摆脱谷歌响应的URL)
我还创建了一个API密钥,如较早的帖子中提到,并试图使用url(这是第2版API):www.google.com/speech-api/v2/recognize?output=json&lang=en-US&key=MYKey”但在这种情况下,我从谷歌null响应。
可有人请告诉我如何解决这个问题?
我改变从识别器类的一些事情:
我改变GOOGLE_RECOGNIZER_URL常数:
private static final String GOOGLE_RECOGNIZER_URL = "https://www.google.com/speech-api/v2/recognize?output=json&lang=en-us&key=YOUR_KEY";
然后因为响应数据有2条线I改变了这种方法
private String rawRequest(File inputFile, int maxResults, int sampleRate) throws IOException
第一行(即读取和发送的)为空(我don¡t知道为什么),第二行已认识讲话的回应。 为此,你必须阅读的第二行(不知道是否有更好的方式):
String response = br.readLine();
response = br.readLine();
br.close();
return response;
然后我改变这个方法,我认为它用的是V1 URL响应或东西,因为这种方法会在JSON响应话语再没有话语关键。
private void parseResponse(String rawResponse, GoogleResponse googleResponse)
if (rawResponse == null)
return;
JSONObject jsonObject = new JSONObject(rawResponse);
JSONArray jsonArray= (JSONArray) jsonObject.get("result");
JSONArray jsonArrayResult = (JSONArray) jsonArray.getJSONObject(0).get("alternative");
googleResponse.setResponse(jsonArrayResult.getJSONObject(0).get("transcript").toString());
googleResponse.setConfidence(jsonArrayResult.getJSONObject(0).get("confidence").toString());
我是新使用JSON库,所以它可能是一个更好的和更短的方式,但这个工作对我来说!