谷歌语音API的转录不像以前那样准确



我正在使用阿拉伯语的谷歌语音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);
}

查看此代码片段,我可以想到在使用云语音转文本 API 时可能影响转录质量的两个主要因果类别。

  1. 法典:

    • 是否确定代码中的configData对象已正确用于填充客户端库的RecognitionConfig对象?由于客户端库实现没有可见性,因此我无法确定。按照本指南操作,请确保您正确导入和使用 Google Cloud 客户端库。

    • 我看到您正在使用enableAutomaticPunctuation参数,但是此功能目前仅适用于 us-EN 语言。如果您不是从这种语言转录,我建议不要使用它。

  2. 音频:

    • 您确定RecognitionConfig对象的参数准确描述了样本的音频属性吗?确保按照最佳实践以正确的方式记录、处理和编程设置示例。

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

    • 您的样本是否都使用相同的阿拉伯语?云语音转文本 API 支持 16 种不同的阿拉伯语。转录结果在这种准确性的功能上会有很大差异,如果录音包含当地方言或俚语表达,则可能会受到影响。扬声器清晰度和环境噪音也是重要因素。

根据这些注意事项,我建议您尝试不同的方法来记录和呈现示例,然后使用 REST 参考页或 API 资源管理器中的 API 测试其听录,同时确保为每个不同的示例类型充分设置RecognitionConfig对象。

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

最新更新