Google Speech Api的转录不像以前那样准确

时间:2018-12-19 09:42:44

标签: android google-cloud-speech

我使用的是阿拉伯语版的Google语音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);
}

1 个答案:

答案 0 :(得分:2)

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

  1. 代码:

  2. 音频:

    • 您确定RecognitionConfig对象的参数准确地描述了样本的音频属性吗?确保following best practices记录,处理并以编程方式正确设置了样本。

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

    • 您的样本都具有相同的阿拉伯语言吗?有16 different Arabic languages supported by the Cloud Speech-to-Text API。转录结果的准确性将在很大程度上有所不同,如果录音包含当地方言或语,也可能会受到影响。说话者的发音和环境噪声也是重要因素。

根据这些注意事项,我建议您尝试使用不同的方式来记录和渲染样本,然后使用REST reference pageAPI explorer中的API测试它们的转录,同时确保{{ 1}}对象已为每种不同的样本类型充分设置。

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