我想使用Google Speech API的异步转录服务。我已将我的音频文件上传到Google存储桶上,并尝试将其与以下代码一起使用(我已从命令中删除了我的密钥和文件名,其他所有内容都已复制)。
curl -H "Content-Type: application/json"
--data '{"audio":{"uri":"https://storage.cloud.google.com/<mybucketname>/<filename>"},
"config":{"encoding":"FLAC","sample_rate_hertz":"16000","language_code":"en_US"}}'
https://speech.googleapis.com/v1/speech:longrunningrecognize?key=<mykey>
我收到400 INVALID_ARGUMENT错误告诉我&#34;请求包含无效参数&#34;。我的卷曲请求中我做错了什么?
答案 0 :(得分:1)
显然问题出在我的URI中。 Google有一种特殊的方式来引用Google存储桶中的项目,并以“gs:”作为前缀。
curl -H "Content-Type: application/json"
--data '{"audio":{"uri":"gs://<mybucketname>/<filename>"},
"config":{"encoding":"FLAC","sample_rate_hertz":"16000","language_code":"en_US"}}'
https://speech.googleapis.com/v1/speech:longrunningrecognize?key=<mykey>
请注意,在我切换到这种方法后,我收到了一个我无法克服的权限错误,但我认为这与我再次提出curl请求的方式无关。
答案 1 :(得分:0)
&lt; filename&gt;之后是否应该有双引号? ?
答案 2 :(得分:0)
检查sample_rate_Hertz。您可能会发现这是SYNCHRONOUS请求的格式。
ASYNCHRONOUS是sampleRateHertz。
我刚刚开始工作,所以如果你需要我的记忆仍然新鲜的话还原!
答案 3 :(得分:0)
我正在使用Node JS客户端和google存储器来存储文件。
// The audio file's encoding, sample rate in Hertz, and BCP-47 language code
const audio = {
uri: 'gs://sst_bbc/',
};
const config = {
enableWordTimeOffsets: true,
encoding: 'FLAC',
// sampleRateHertz: 16000,
languageCode: 'en-US',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [operation] = await client.longRunningRecognize(request);
const [response] = await operation.promise();
fs.writeFileSync('ted_talk.json', JSON.stringify(response), 'utf8');
我没有引用确切的对象而犯了一个错误。控制台中的错误非常模糊。我设置了正确的路径后,它开始正常工作。
const audio = {
uri: 'gs://sst_bbc/ted_talk.flac',
};
如果文件位置正确,请再次检查编码类型。I