我正在使用java语音识别API - Jarvis位于https://github.com/lkuza2/java-speech-api
但是,当我运行我的应用程序时,出现错误:服务器返回HTTP响应代码:400为URL:https://www.google.com/speech-api/v1/recognize?xjerr=1&client=chromium&lang=en-US&maxresults=1(这是此API用于从Google获取响应的URL)
我还创建了一个API密钥,如前面的帖子所述并尝试使用url(这是版本2 API):www.google.com/speech-api/v2/recognize?output=json&lang=en -US& key = MYKey“。但在这种情况下,我得到谷歌的回复。
有人可以告诉我如何解决这个问题吗?
答案 0 :(得分:1)
我从Recognizer类改变了一些东西:
我将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行
private String rawRequest(File inputFile, int maxResults, int sampleRate) throws IOException
第一行(读取和发送的那一行)为空(我不知道为什么),第二行有识别出的语音响应。为此你必须阅读第二行(不知道是否有更好的方法):
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库的新手,所以它可能是更好更短的方式,但这对我有用!