From a65ec9bbf5bbc9d61241ac6239088aac9ab73b95 Mon Sep 17 00:00:00 2001 From: Dave Horton Date: Wed, 15 Jan 2025 18:23:10 -0500 Subject: [PATCH] speechmatics does not do endpointing for us so we need to flip on continuousAsr --- lib/tasks/gather.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/tasks/gather.js b/lib/tasks/gather.js index e89c9a74..2cea13c8 100644 --- a/lib/tasks/gather.js +++ b/lib/tasks/gather.js @@ -24,6 +24,7 @@ const makeTask = require('./make_task'); const assert = require('assert'); const SttTask = require('./stt-task'); const { SpeechCredentialError } = require('../utils/error'); +const SPEECHMATICS_DEFAULT_ASR_TIMEOUT = 1200; class TaskGather extends SttTask { constructor(logger, opts, parentTask) { @@ -162,6 +163,14 @@ class TaskGather extends SttTask { this.logger.debug({hints: this.data.recognizer.hints, hintsBoost: this.data.recognizer.hintsBoost}, 'Gather:exec - applying global sttHints'); } + + // specials case for speechmatics: they dont do endpointing so we need to enable continuous ASR + if (this.vendor === 'speechmatics' && !this.isContinuousAsr) { + this.asrTimeout = SPEECHMATICS_DEFAULT_ASR_TIMEOUT; + this.isContinuousAsr = true; + this.logger.debug(`Gather:exec - auto-enabling continuous ASR for speechmatics w/ timeout ${this.asrTimeout}`); + } + if (!this.isContinuousAsr && cs.isContinuousAsr) { this.isContinuousAsr = true; this.asrTimeout = cs.asrTimeout * 1000; @@ -832,7 +841,7 @@ class TaskGather extends SttTask { const t = evt.alternatives[0].transcript; if (t) { /* remove trailing punctuation */ - if (/[,;:\.!\?]$/.test(t)) { + if (this.vendor !== 'speechmatics' && /[,;:\.!\?]$/.test(t)) { this.logger.debug('TaskGather:_onTranscription - removing trailing punctuation'); evt.alternatives[0].transcript = t.slice(0, -1); }