我正在尝试使用来自App Engine的Google Speech-to-text api(不需要凭据密钥)。但是,在运行代码以获取响应时,我收到一个空错误。
const detectspeech = async (audioBytes) => {
try {
const client = new speech.SpeechClient();
const audio = {
content: audioBytes,
};
const config = {
enableAutomaticPunctuation: true,
encoding: "LINEAR16",
model: "default",
languageCode: 'en-US',
};
const request = {
audio: audio,
config: config,
};
console.log("1");
const [response] = await client.recognize(request);
console.log("2");
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
return { data: "Success"};
}catch(e)
{
return {error: e};
}
}
在日志中,我打印出了数字“ 1”,但没有打印出来“ 2”,因此我认为结果位于行await client.recognize(request);
中。但是,捕获到错误后,我得到了一个错误字段,例如{}
。
那当然对调试没有太大帮助。任何人都可以提供帮助。谢谢。
答案 0 :(得分:0)
使用
app.get('/', async(req, res) => {
res.send(await detectspeech())
答案 1 :(得分:0)
好吧,这很大程度上与我是nodejs的新手有关。应该有日志e.message
。
但是,错误的核心问题仍然存在,并且该错误是:无效的格式。
因此,对于任何希望通过Facebook Messenger使用Google语音转文本的人(我就是 在做):
Facebook Messenger会将所有内容转换为.mp4文件。 mp3-> mp4,wav-> mp4 ...一切。
Google语音转文本将不接受mp3,mp4声音格式。他们曾经使用AFAIK,就像在v1 RecognitionConfig中一样,支持MP3格式,但是他们的v1p1beta1不再支持。
如果您在他们的住所Speech-to-Text page中使用他们的工具发短信,您甚至会看到mp4可以使用,但这并不意味着API可以在mp4上使用。为什么要取消对最常见的音频文件类型的支持?我希望我知道。将来这可能会改变,但是可以知道,它只会增加更多的工作。
因此,至少要做到我成功完成的工作,就是使用文件转换API,例如Zamzar。
花一些时间来使用他们的文档进行设置,但是再次,我是nodejs的新手。基本上:
从Facebook Messenger获取有效载荷URL,以获取语音剪辑的URL。
将该URL传递到Zamzar进行文件转换。选择格式“ wav”
检查转换状态。
状态完成后,获取转换后的文件。
将文件编码为base64
将其传递给Google Speech-to-Text API,该API无需过多配置即可轻松识别“ wav”文件。
获取结果。