Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用谷歌云语音转换文本时出现空错误_Javascript_Node.js_Google Cloud Platform_Google Cloud Speech - Fatal编程技术网

Javascript 使用谷歌云语音转换文本时出现空错误

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, };

我正在尝试从应用程序引擎(不需要凭据密钥)使用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”,因此我假设结果在
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)。展示什么?此外,这篇文章可能会帮助你更好地处理承诺:在你的答案中添加更多信息,解释为什么这可以解决问题。