Java的语音API空响应(Java speech API null response)

2019-10-21 08:01发布

我使用的是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响应。

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

Answer 1:

我改变从识别器类的一些事情:

我改变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库,所以它可能是一个更好的和更短的方式,但这个工作对我来说!



文章来源: Java speech API null response