Javascript 使用谷歌云语音转换文本时出现空错误
我正在尝试从应用程序引擎(不需要凭据密钥)使用Google Speech to text api。但是,当运行代码以获得响应时,我收到一个空错误Javascript 使用谷歌云语音转换文本时出现空错误,javascript,node.js,google-cloud-platform,google-cloud-speech,Javascript,Node.js,Google Cloud Platform,Google Cloud Speech,我正在尝试从应用程序引擎(不需要凭据密钥)使用Google Speech to text api。但是,当运行代码以获得响应时,我收到一个空错误 const detectspeech = async (audioBytes) => { try { const client = new speech.SpeechClient(); const audio = { content: audioBytes, };
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”,因此我假设结果在wait client.recognize(request)行中代码>。但是,捕捉到错误后,我得到了一个空字段的错误,如{}
这当然对调试没有多大帮助。任何人都可以帮忙。谢谢。使用
app.get('/', async(req, res) => {
res.send(await detectspeech())
好吧,这很大程度上是因为我是nodejs的新手。应改为使用日志e.message
但是,错误的核心问题仍然存在,错误是:格式无效
因此,对于任何试图使用谷歌语音与Facebook Messenger(这就是我所说的
(我正在做):
- Facebook Messenger将所有内容转换为.mp4文件。mp3->mp4,wav->mp4。。。一切
- 谷歌语音转换文本将不接受mp3、mp4声音格式。他们习惯于使用AFAIK,因为在他们的版本中,有MP3格式的支持,但他们的v1p1beta1不再支持
- 如果你在他们家里使用他们的工具发短信,你甚至会看到mp4也可以工作,但这并不意味着API可以与mp4一起工作。为什么要删除对最常见音频文件类型的支持?我希望我知道。这在将来可能会改变,但要知道,这只会增加更多的工作
所以你需要做的,至少是我成功做到的,是使用一个文件转换API,比如
我花了一段时间来使用他们的文档进行设置,但话说回来,我对nodejs还是新手。基本上:
- 从Facebook Messenger获取语音剪辑url的有效负载url
- 将该url传递给Zamzar进行文件转换。选择格式“wav”
- 检查转换状态
- 状态完成后,获取转换后的文件
- 将文件编码为base64
- 将其传递给谷歌语音到文本API,该API可以轻松识别“wav”文件,而无需太多配置
- 得到结果
在捕获处理程序中添加console.log(e)。展示什么?此外,这篇文章可能会帮助你更好地处理承诺:在你的答案中添加更多信息,解释为什么这可以解决问题。