使用Google Cloud语音转文字时出现空错误

时间:2019-06-06 19:55:15

标签: javascript node.js google-cloud-platform google-cloud-speech

我正在尝试使用来自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);中。但是,捕获到错误后,我得到了一个错误字段,例如{}

那当然对调试没有太大帮助。任何人都可以提供帮助。谢谢。

2 个答案:

答案 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”文件。

  • 获取结果。