Google Speech to Text 最佳值

问题描述

我正在尝试优化 Node.js 应用程序中的 Speech to Text 调用值。我正在尝试确定它们目前是否是最佳实践。

我了解 Speech to Text 推荐使用 16,000Hz 采样率的 LINEAR16 编码,但这对于以 8000hz 发送的 VOIP 是不可能的,目前 Twilio 仅提供 MULAW 编码。

我想知道用于“model”、“use_enhanced”和“confidence”的值是否合适?

if (this.newStreamrequired()) {
  if (this.stream) {
    this.stream.destroy();
  }

  var request = {
    config: {
      encoding: "MULAW",sampleRateHertz: 8000,languageCode: "en-US",model: 'phone_call',use_enhanced: true,confidence: 1.0
    },single_utterance: false,interimResults: false,is_final: true
    
  };

  this.streamCreatedAt = new Date();
  this.stream = speech
    .streamingRecognize(request)
    .on("error",console.error)
    .on("data",(data) => {
      const result = data.results[0];
       if (result === undefined || result.alternatives[0] === undefined) {
         return;
       } 
      this.emit('transcription',result.alternatives[0].transcript);
    });
}

解决方法

一般来说,很难评估您的选择是否确实是最好的。您可以采取的最佳方法是研究替代方案,运行几次测试并坚持使用可产生最佳结果的参数。

无论如何,让我们检查一下您的具体情况:

  • 型号:8000Hz 的最佳型号是 here 中所述的 phone_call。其他替代方案更适合 16000Hz 音频。
  • Use_enhanced:唯一的选项是真/假。使用这两种方法运行测试应该很容易。从理论上讲,使用增强模型应该会产生更好的结果,尤其是对于 phone call 模型 (see)。
  • 置信度:此字段通常是 ​​response 中的一个值,我认为它不能包含在默认的 request 配置中。请注意,streaming config 基于默认配置。

总而言之,我认为您的请求参数具有正确的值,但置信度值可能不适合请求参数。