Google语音文本API在本地提供的结果与在线演示不同

时间:2019-06-25 10:09:45

标签: node.js google-cloud-speech

6秒mp3音频文件(download) 首先直接在https://cloud.google.com/speech-to-text/上进行了测试,其响应符合预期。

“你好兄弟,我最近好吗,希望妈妈一切都好”

然后我创建了Firebase Function(请参见下面的代码):

const speech = require('@google-cloud/speech').v1p1beta1
exports.speechToText = functions.https.onRequest(async (req, res) => {
  try {
    // Creates a client
    const client = new speech.SpeechClient()
    const gcsUri = `gs://xxxxx.appspot.com/speech.mp3`

    const config = {
      encoding: 'MP3',
      languageCode: 'en-US',
      enableAutomaticPunctuation: false,
      enableWordTimeOffsets: false,
    }
    const audio = {
      uri: gcsUri,
    }

    const request = {
      config: config,
      audio: audio,
    }

    // Detects speech in the audio file
    const [response] = await client.recognize(request)
    const transcription = response.results
      .map(result => result.alternatives[0].transcript)
      .join('\n')
    console.log(`Transcription: ${transcription}`)
    res.send({ response })
  } catch (error) {
    console.log('error:', error)
    res.status(400).send({
      error,
    })
  }
})

然后我得到以下错误响应:

“你好兄弟,你好吗,希望一切都很好”

更新: 在本地运行时,会收到相同的INCORRECT响应。因此,云功能不是问题。

更新#2: 在配置中设置model:'video'model:'phone_call' 解决了这个问题。即

    const config = {
      encoding: 'MP3',
      languageCode: 'en-US',
      enableAutomaticPunctuation: false,
      enableWordTimeOffsets: false,
      model: 'phone_call',
    }

1 个答案:

答案 0 :(得分:0)

model:'video'中设置model:'phone_call'config解决了该问题。即

const config = {
 encoding: 'MP3',
 languageCode: 'en-US',
 enableAutomaticPunctuation: false,
 enableWordTimeOffsets: false,
 model: 'phone_call', 
}

我认为default模型不适用于某些类型的音频。