Java语音API空响应

时间:2014-11-29 20:27:42

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

我正在使用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“。但在这种情况下,我得到谷歌的回复。

有人可以告诉我如何解决这个问题吗?

1 个答案:

答案 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库的新手,所以它可能是更好更短的方式,但这对我有用!