首页 > 解决方案 > Google Speech Api 的转录不像以前那样准确

问题描述

我正在使用阿拉伯语的 Google 语音 API,它可以很好地转换语音,并且可以接受的准确性。但是转录的准确性突然变得完全不准确,我不知道出了什么问题。在这个问题上有什么帮助吗?

编辑:有我的代码来生成发送到我使用flac音频的api的请求

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);
}

标签: androidgoogle-cloud-speech

解决方案


查看此代码片段,我可以想到在使用Cloud Speech-to-Text API时会影响转录质量的两个主要因果类别。

  1. 代码:

  2. 声音的:

    • 您确定RecognitionConfig对象的参数准确地描述了您的样本的音频属性吗?遵循最佳实践,确保样本被记录、处理并以编程方式设置正确。

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

    • 您的样本是否都具有相同的阿拉伯语?Cloud Speech-to-Text API 支持 16种不同的阿拉伯语。转录结果在这种准确性的作用下会有很大差异,如果录音中包含方言或俚语,也可能会受到影响。扬声器清晰度和环境噪声也是重要因素。

根据这些考虑,我建议您尝试不同的方法来记录和呈现样本,然后使用REST 参考页面API 资源管理器中的 API 测试它们的转录,同时确保RecognitionConfig为每种不同的样本类型适当地设置了对象。

如果遵循这些建议不能改善 API 的结果,请注意 Speech-to-text API 与其他 ML 解决方案一样,适用于预训练的预测模型。虽然这些模型在不断改进,但提供的结果仍然是近似的。如果您想帮助 Google 改进特定语言的 API,您可以选择加入数据记录计划


推荐阅读