问题描述
我正在尝试优化 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 基于默认配置。
总而言之,我认为您的请求参数具有正确的值,但置信度值可能不适合请求参数。