Android 谷歌语音Api的转录本不像以前那样准确

Android 谷歌语音Api的转录本不像以前那样准确,android,google-cloud-speech,Android,Google Cloud Speech,我正在使用阿拉伯语的谷歌语音API,它很早以前就已经转换了语音,并且达到了公认的准确度。但转录的准确性突然变得一点也不准确 我不知道怎么了。在这个问题上有什么帮助吗 编辑: 我的代码用于生成发送到api的请求 我用的是flac音频 try { OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .

我正在使用阿拉伯语的谷歌语音API,它很早以前就已经转换了语音,并且达到了公认的准确度。但转录的准确性突然变得一点也不准确 我不知道怎么了。在这个问题上有什么帮助吗

编辑: 我的代码用于生成发送到api的请求 我用的是flac音频

try {
        OkHttpClient client = new OkHttpClient.Builder()
                .connectTimeout(60, TimeUnit.SECONDS)
                .writeTimeout(60, TimeUnit.SECONDS)
                .readTimeout(60, TimeUnit.SECONDS)
                .build();
        JSONObject body = new JSONObject();

        JSONObject configData = new JSONObject();
        //config for flac files
        configData.put("encoding", "FLAC");
        configData.put("language_code", "ar-EG");
        configData.put("sample_rate", 16000);
        configData.put("enableAutomaticPunctuation", true);

        JSONObject audioData = new JSONObject();
        audioData.put("content", encodeFileToBase64Binary(filePath));

        body.put("config", configData);
        body.put("audio", audioData);

        RequestBody requestBody = RequestBody.create(JSON, body.toString());
        Request request = new Request.Builder()
                .url("https://speech.googleapis.com/v1/speech:recognize?key=AIzaSyAhYB9C6a8axV7DMYbRluQ3QLa8nXCYL18")
                .post(requestBody)
                .build();

        publishProgress(40);
        Response response = client.newCall(request).execute();
        String result = response.body().string();
        publishProgress(80);
        Log.d("SpeechApiResult", result);
        return result;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

private String encodeFileToBase64Binary(String fileName) throws IOException {
    byte[] bytes = FileUtils.readFileToByteArray(new File(fileName));
    byte[] encoded = Base64.encodeBase64(bytes);
    return new String(encoded);
}

看看这个代码片段,我可以想到两个主要的因果类别,它们会在使用时影响转录质量

  • 代码:

    • 是否确定代码中的
      configData
      对象已正确用于填充?由于客户端库实现没有可见性,我无法确定它。确保你是

    • 我看到您目前正在使用
      enableautomaticpuntuation
      参数。如果您不是从这种语言转录,我建议不要使用它

  • 音频:

    • 您确定
      RecognitionConfig
      对象的参数准确地描述了样本的音频属性吗?确保通过正确的方式记录、处理和编程设置样本

    • 另一个陷阱是格式/编码混乱。确保你的样品符合要求。此外,将最初以有损格式记录的样本转换为无损格式后,将不会产生与最初以无损格式记录的样本相同的转录质量

    • 你们的样品都有相同的阿拉伯语吗?有。在这种准确性的作用下,转录结果会有很大的不同,如果录音中包含当地方言或俚语,转录结果也可能会受到影响。扬声器清晰度和环境噪音也是重要因素

  • 根据这些考虑,我建议您尝试不同的方法来记录和呈现样本,然后使用或中的API测试它们的转录,同时确保为每个不同的样本类型适当地设置了
    RecognitionConfig
    对象


    如果遵循这些建议并不能改善API的结果,请注意,语音到文本API与其他ML解决方案一样,可以使用预先训练好的预测模型。虽然这些模型在不断改进,但交付的结果仍然是近似的。如果您想帮助Google改进特定语言的API,您可以选择。

    请添加您使用的代码。您应该共享您的代码!我添加了我的代码“但是抄本的准确性突然变得一点也不准确”好吧,你在自己的应用程序中有什么改变吗?如果不是,问题就在谷歌的尽头。不,我没有,但是谷歌的尽头会有什么问题呢?