我正在使用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"。但在这种情况下,我从谷歌得到一个空响应。
任何人都可以告诉我如何解决这个问题吗?
我从识别器类中更改了一些内容:
我将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 库的新手,所以它可能是一种更好、更短的方法,但这对我有用!