Skip to content

Commit

Permalink
Revert "Fix/dual legs transcribe race condition (#593)" (#600)
Browse files Browse the repository at this point in the history
This reverts commit 9d70ed9.
  • Loading branch information
davehorton authored Jan 9, 2024
1 parent a2ba80a commit 6f6d7a0
Showing 1 changed file with 18 additions and 20 deletions.
38 changes: 18 additions & 20 deletions lib/tasks/transcribe.js
Original file line number Diff line number Diff line change
Expand Up @@ -89,13 +89,13 @@ class TaskTranscribe extends SttTask {
stopTranscription = true;
this.ep.stopTranscription({
vendor: this.vendor,
bugname: this.ep.transcribe_bugname
bugname: this.bugname
})
.catch((err) => this.logger.info(err, 'Error TaskTranscribe:kill'));
}
if (this.separateRecognitionPerChannel && this.ep2 && this.ep2.connected) {
stopTranscription = true;
this.ep2.stopTranscription({vendor: this.vendor, bugname: this.ep2.transcribe_bugname})
this.ep2.stopTranscription({vendor: this.vendor})
.catch((err) => this.logger.info(err, 'Error TaskTranscribe:kill'));
}

Expand Down Expand Up @@ -132,7 +132,6 @@ class TaskTranscribe extends SttTask {
async _setSpeechHandlers(cs, ep, channel) {
if (this[`_speechHandlersSet_${channel}`]) return;
this[`_speechHandlersSet_${channel}`] = true;
let bugname;

/* some special deepgram logic */
if (this.vendor === 'deepgram') {
Expand All @@ -142,7 +141,7 @@ class TaskTranscribe extends SttTask {
const opts = this.setChannelVarsForStt(this, this.sttCredentials, this.data.recognizer);
switch (this.vendor) {
case 'google':
bugname = `${this.bugname_prefix}google_transcribe`;
this.bugname = `${this.bugname_prefix}google_transcribe`;
this.addCustomEventListener(ep, GoogleTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep, GoogleTranscriptionEvents.NoAudioDetected,
Expand All @@ -153,7 +152,7 @@ class TaskTranscribe extends SttTask {

case 'aws':
case 'polly':
bugname = `${this.bugname_prefix}aws_transcribe`;
this.bugname = `${this.bugname_prefix}aws_transcribe`;
this.addCustomEventListener(ep, AwsTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep, AwsTranscriptionEvents.NoAudioDetected,
Expand All @@ -162,19 +161,19 @@ class TaskTranscribe extends SttTask {
this._onMaxDurationExceeded.bind(this, cs, ep, channel));
break;
case 'microsoft':
bugname = `${this.bugname_prefix}azure_transcribe`;
this.bugname = `${this.bugname_prefix}azure_transcribe`;
this.addCustomEventListener(ep, AzureTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep, AzureTranscriptionEvents.NoSpeechDetected,
this._onNoAudio.bind(this, cs, ep, channel));
break;
case 'nuance':
bugname = `${this.bugname_prefix}nuance_transcribe`;
this.bugname = `${this.bugname_prefix}nuance_transcribe`;
this.addCustomEventListener(ep, NuanceTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
break;
case 'deepgram':
bugname = `${this.bugname_prefix}deepgram_transcribe`;
this.bugname = `${this.bugname_prefix}deepgram_transcribe`;
this.addCustomEventListener(ep, DeepgramTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep, DeepgramTranscriptionEvents.Connect,
Expand All @@ -187,12 +186,12 @@ class TaskTranscribe extends SttTask {

break;
case 'soniox':
bugname = `${this.bugname_prefix}soniox_transcribe`;
this.bugname = `${this.bugname_prefix}soniox_transcribe`;
this.addCustomEventListener(ep, SonioxTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
break;
case 'cobalt':
bugname = `${this.bugname_prefix}cobalt_transcribe`;
this.bugname = `${this.bugname_prefix}cobalt_transcribe`;
this.addCustomEventListener(ep, CobaltTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));

Expand Down Expand Up @@ -222,7 +221,7 @@ class TaskTranscribe extends SttTask {
break;

case 'ibm':
bugname = `${this.bugname_prefix}ibm_transcribe`;
this.bugname = `${this.bugname_prefix}ibm_transcribe`;
this.addCustomEventListener(ep, IbmTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep, IbmTranscriptionEvents.Connect,
Expand All @@ -232,13 +231,13 @@ class TaskTranscribe extends SttTask {
break;

case 'nvidia':
bugname = `${this.bugname_prefix}nvidia_transcribe`;
this.bugname = `${this.bugname_prefix}nvidia_transcribe`;
this.addCustomEventListener(ep, NvidiaTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
break;

case 'assemblyai':
bugname = `${this.bugname_prefix}assemblyai_transcribe`;
this.bugname = `${this.bugname_prefix}assemblyai_transcribe`;
this.addCustomEventListener(ep, AssemblyAiTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep,
Expand All @@ -250,7 +249,7 @@ class TaskTranscribe extends SttTask {

default:
if (this.vendor.startsWith('custom:')) {
bugname = `${this.bugname_prefix}${this.vendor}_transcribe`;
this.bugname = `${this.bugname_prefix}${this.vendor}_transcribe`;
this.addCustomEventListener(ep, JambonzTranscriptionEvents.Transcription,
this._onTranscription.bind(this, cs, ep, channel));
this.addCustomEventListener(ep, JambonzTranscriptionEvents.Connect, this._onVendorConnect.bind(this, cs, ep));
Expand All @@ -264,8 +263,7 @@ class TaskTranscribe extends SttTask {
throw new Error(`Invalid vendor ${this.vendor}`);
}
}
// save dedicated bugname for each endpoint
ep.transcribe_bugname = `${bugname}_${Date.now()}`;

/* common handler for all stt engine errors */
this.addCustomEventListener(ep, JambonzTranscriptionEvents.Error, this._onJambonzError.bind(this, cs, ep));
await ep.set(opts)
Expand All @@ -283,21 +281,21 @@ class TaskTranscribe extends SttTask {

async _transcribe(ep) {
this.logger.debug(
`TaskTranscribe:_transcribe - starting transcription vendor ${this.vendor} bugname ${ep.transcribe_bugname}`);
`TaskTranscribe:_transcribe - starting transcription vendor ${this.vendor} bugname ${this.bugname}`);
await ep.startTranscription({
vendor: this.vendor,
interim: this.interim ? true : false,
locale: this.language,
channels: /*this.separateRecognitionPerChannel ? 2 : */ 1,
bugname: ep.transcribe_bugname,
bugname: this.bugname,
hostport: this.hostport
});
}

async _onTranscription(cs, ep, channel, evt, fsEvent) {
// make sure this is not a transcript from answering machine detection
const bugname = fsEvent.getHeader('media-bugname');
if (bugname && ep.transcribe_bugname !== bugname) return;
if (bugname && this.bugname !== bugname) return;

if (this.vendor === 'ibm' && evt?.state === 'listening') return;

Expand Down Expand Up @@ -445,7 +443,7 @@ class TaskTranscribe extends SttTask {
if (this.isHandledByPrimaryProvider && this.fallbackVendor) {
_ep.stopTranscription({
vendor: this.vendor,
bugname: _ep.transcribe_bugname
bugname: this.bugname
})
.catch((err) => this.logger.error({err}, `Error stopping transcription for primary vendor ${this.vendor}`));
const {updateSpeechCredentialLastUsed} = require('../utils/db-utils')(this.logger, cs.srf);
Expand Down

0 comments on commit 6f6d7a0

Please sign in to comment.