android - 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);
}
解决方案
查看此代码片段,我可以想到在使用Cloud Speech-to-Text API时会影响转录质量的两个主要因果类别。
代码:
您确定
configData
代码中的对象已正确用于填充客户端库的RecognitionConfig
对象吗?由于客户端库实现没有可见性,我无法确定。确保按照本指南正确导入和使用 Google Cloud 客户端库。我看到您正在使用该
enableAutomaticPunctuation
参数,但是该功能目前仅适用于 us-EN 语言。如果您不是从这种语言转录,我建议不要使用它。
声音的:
根据这些考虑,我建议您尝试不同的方法来记录和呈现样本,然后使用REST 参考页面或API 资源管理器中的 API 测试它们的转录,同时确保RecognitionConfig
为每种不同的样本类型适当地设置了对象。
如果遵循这些建议不能改善 API 的结果,请注意 Speech-to-text API 与其他 ML 解决方案一样,适用于预训练的预测模型。虽然这些模型在不断改进,但提供的结果仍然是近似的。如果您想帮助 Google 改进特定语言的 API,您可以选择加入数据记录计划。
推荐阅读
- git - 脚本获取 Git 中特定符号引用的提交消息的第一行的正确方法是什么?
- python-3.x - locale.setlocale() 方法的“locale”选项的完整选项列表
- ios - Swift 5 - 如何使用 PDFKit 在 PDF 中创建表格
- java - Junit 测试 - 队列(不识别所有实例)
- bit-manipulation - 为什么 n & (n - 1) 总是从 n 中清除 1 位?
- r - 在 R 中选择一列
- r - 使用 Lubridate 解析日期时出错。所有格式都无法解析。未找到格式
- java - 使用 Native lib 在 Java 中将 TXT 转换为 PDF
- regex - 不匹配的方括号 Perl 正则表达式
- mongodb - MongoDB 从聚合管道返回平面数组