mirror of
https://github.com/jambonz/jambonz-feature-server.git
synced 2025-12-20 08:40:38 +00:00
wip
This commit is contained in:
@@ -1161,7 +1161,7 @@ class TaskGather extends SttTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async _startFallback(cs, ep, evt) {
|
async _startFallback(cs, ep, evt) {
|
||||||
if (this.canFallback) {
|
if (this.canFallback()) {
|
||||||
this._stopTranscribing(ep);
|
this._stopTranscribing(ep);
|
||||||
try {
|
try {
|
||||||
this.logger.debug('gather:_startFallback');
|
this.logger.debug('gather:_startFallback');
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ class SttTask extends Task {
|
|||||||
try {
|
try {
|
||||||
this.sttCredentials = await this._initSpeechCredentials(this.cs, this.vendor, this.label);
|
this.sttCredentials = await this._initSpeechCredentials(this.cs, this.vendor, this.label);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
if (this.canFallback) {
|
if (this.canFallback()) {
|
||||||
this.notifyError(
|
this.notifyError(
|
||||||
{
|
{
|
||||||
msg: 'ASR error', details:`Invalid vendor ${this.vendor}, Error: ${error}`,
|
msg: 'ASR error', details:`Invalid vendor ${this.vendor}, Error: ${error}`,
|
||||||
@@ -340,11 +340,12 @@ class SttTask extends Task {
|
|||||||
return credentials;
|
return credentials;
|
||||||
}
|
}
|
||||||
|
|
||||||
get canFallback() {
|
canFallback() {
|
||||||
return this.fallbackVendor && this.isHandledByPrimaryProvider && !this.cs.hasFallbackAsr;
|
return this.fallbackVendor && this.isHandledByPrimaryProvider && !this.cs.hasFallbackAsr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// gather does not need to provide ep, but transcribe does as it might has 2 legs
|
// ep is optional for gather or any verb that have single ep,
|
||||||
|
// but transcribe does need as it might has 2 eps
|
||||||
async _initFallback(ep) {
|
async _initFallback(ep) {
|
||||||
assert(this.fallbackVendor, 'fallback failed without fallbackVendor configuration');
|
assert(this.fallbackVendor, 'fallback failed without fallbackVendor configuration');
|
||||||
this.logger.info(`Failed to use primary STT provider, fallback to ${this.fallbackVendor}`);
|
this.logger.info(`Failed to use primary STT provider, fallback to ${this.fallbackVendor}`);
|
||||||
|
|||||||
@@ -70,6 +70,9 @@ class TaskTranscribe extends SttTask {
|
|||||||
this._bufferedTranscripts = [ [], [] ]; // for channel 1 and 2
|
this._bufferedTranscripts = [ [], [] ]; // for channel 1 and 2
|
||||||
this.bugname_prefix = 'transcribe_';
|
this.bugname_prefix = 'transcribe_';
|
||||||
this.paused = false;
|
this.paused = false;
|
||||||
|
// fallback flags
|
||||||
|
this.isHandledByPrimaryProviderForEp1 = true;
|
||||||
|
this.isHandledByPrimaryProviderForEp2 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
get name() { return TaskName.Transcribe; }
|
get name() { return TaskName.Transcribe; }
|
||||||
@@ -776,7 +779,7 @@ class TaskTranscribe extends SttTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async _startFallback(cs, _ep, evt) {
|
async _startFallback(cs, _ep, evt) {
|
||||||
if (this.canFallback) {
|
if (this.canFallback(_ep)) {
|
||||||
_ep.stopTranscription({
|
_ep.stopTranscription({
|
||||||
vendor: this.vendor,
|
vendor: this.vendor,
|
||||||
bugname: this.bugname,
|
bugname: this.bugname,
|
||||||
@@ -895,6 +898,25 @@ class TaskTranscribe extends SttTask {
|
|||||||
if (this._asrTimer) clearTimeout(this._asrTimer);
|
if (this._asrTimer) clearTimeout(this._asrTimer);
|
||||||
this._asrTimer = null;
|
this._asrTimer = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We need to keep track the fallback is happened for each endpoint
|
||||||
|
// override the canFallback and _initFallback methods to make sure that
|
||||||
|
// we only fallback once per endpoint
|
||||||
|
canFallback(ep) {
|
||||||
|
const isHandledByPrimaryProvider = ep === this.ep ?
|
||||||
|
this.isHandledByPrimaryProviderForEp1 : ep === this.ep2 ?
|
||||||
|
this.isHandledByPrimaryProviderForEp2 : false;
|
||||||
|
return this.fallbackVendor && isHandledByPrimaryProvider && !this.cs.hasFallbackAsr;
|
||||||
|
}
|
||||||
|
|
||||||
|
_initFallback(ep) {
|
||||||
|
if (ep === this.ep) {
|
||||||
|
this.isHandledByPrimaryProviderForEp1 = false;
|
||||||
|
} else if (ep === this.ep2) {
|
||||||
|
this.isHandledByPrimaryProviderForEp2 = false;
|
||||||
|
}
|
||||||
|
return super._initFallback(ep);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = TaskTranscribe;
|
module.exports = TaskTranscribe;
|
||||||
|
|||||||
Reference in New Issue
Block a user