Google 语音 API 的 Base64 解码失败
Base64 decoding failed for Google Speech API
我尝试使用 JSON 和下面的代码片段向 https://speech.googleapis.com/v1/speech:recognize 发送 POST 请求。不知何故 google 在我的请求中响应未能解码 Base 64。
{
"config":{
"encoding": "LINEAR16",
"sampleRateHertz": 16000,
"languageCode": "ja-JP",
"maxAlternatives": 5,
"profanityFilter": 错误
},
"audio":{
"content": "ZXCVBNM"
},
}
String pcmFilePath = "/storage/emulated/0/Download/voice8K16bitmono.pcm";
File rawFile = new File(pcmFilePath);
byte[] rawData = new byte[(int) rawFile.length()];
DataInputStream input = null;
try {
input = new DataInputStream(new FileInputStream(rawFile));
int readResult = input.read(rawData);
} catch (Exception ex) {
ex.printStackTrace();
}
if (input != null) {
input.close();
};
String base64 = Base64.encodeToString(rawData, Base64.DEFAULT);
String completePostBody = postBody.replace("ZXCVBNM" , base64);
"code": 400,
"message": "Invalid value at 'audio.content' (TYPE_BYTES), Base64 decoding failed for \"...
有人有什么建议吗?
我设法从 Google 语音 API 中得到了结果。
据记载,Base 64 编码不应有换行
Link: https://cloud.google.com/speech/docs/base64-encoding
从 Base64.DEFAULT
更改为 Base64.NO_WRAP
在我的案例中有效。
另外 pcm 文件应该是 LSB
我尝试使用 JSON 和下面的代码片段向 https://speech.googleapis.com/v1/speech:recognize 发送 POST 请求。不知何故 google 在我的请求中响应未能解码 Base 64。
{ "config":{ "encoding": "LINEAR16", "sampleRateHertz": 16000, "languageCode": "ja-JP", "maxAlternatives": 5, "profanityFilter": 错误 }, "audio":{ "content": "ZXCVBNM" }, }
String pcmFilePath = "/storage/emulated/0/Download/voice8K16bitmono.pcm";
File rawFile = new File(pcmFilePath);
byte[] rawData = new byte[(int) rawFile.length()];
DataInputStream input = null;
try {
input = new DataInputStream(new FileInputStream(rawFile));
int readResult = input.read(rawData);
} catch (Exception ex) {
ex.printStackTrace();
}
if (input != null) {
input.close();
};
String base64 = Base64.encodeToString(rawData, Base64.DEFAULT);
String completePostBody = postBody.replace("ZXCVBNM" , base64);
"code": 400, "message": "Invalid value at 'audio.content' (TYPE_BYTES), Base64 decoding failed for \"...
有人有什么建议吗?
我设法从 Google 语音 API 中得到了结果。
据记载,Base 64 编码不应有换行 Link: https://cloud.google.com/speech/docs/base64-encoding
从 Base64.DEFAULT
更改为 Base64.NO_WRAP
在我的案例中有效。
另外 pcm 文件应该是 LSB