我試圖使用JSON和下面的代碼片段發送POST請求到https://speech.googleapis.com/v1/speech:recognize。不知何故,谷歌迴應說,在我的請求中無法解碼Base 64。Google語音API的Base64解碼失敗
{ 「配置」:{ 「編碼」: 「LINEAR16」, 「sampleRateHertz」:16000, 「語言代碼」: 「JA-JP」, 「maxAlternatives」:5, 「profanityFilter」:假 }, 「音頻」:{ 「內容」: 「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);
「代碼」:400, 「消息」:「在 'audio.content' 的值無效(TYPE_BYTE S),Base64解碼失敗,因爲「...
有沒有人有任何建議?
本質上,它在消息中所說的。 'ZXCVBNM'無效(不完整)base64編碼(部分解碼爲'epò',但不完整)。 Base-64將源(二進制)數據的每三個字符編碼爲4個編碼數據字符。您只有七個字符,因此不完整(並且對於任何類型的音頻表示也是可疑的短)。 – TripeHound
我後來意識到,你正在用你的文件內容替換'ZXCVBNM'(我不知道Android足以知道你的代碼是否正確讀取文件)。然而,問題仍然是谷歌收到的是不是有效的base-64。嘗試記錄你實際發送的有效載荷中是否有意義。 (或者,可以想象,Googole並不期待base64(鏈接給我404)。 – TripeHound
對於遲到的回覆,我發送POST請求後跟隨此文檔:https://cloud.google.com/speech/reference/rest/v1/speech/recognition。可能是你想要訪問的鏈接不是用於瀏覽器的,下面是我實際發送的有效負載的日誌記錄:http://www.mediafire.com/file/9qzxyzexlxc7jr1/ – ZodiacLeo123