Fix Bare voice models and extension registration
Rolling release / release (push) Successful in 7m11s

This commit is contained in:
2026-09-11 16:29:34 -04:00
parent fee584673d
commit 049ed48787
5 changed files with 14 additions and 6 deletions
+5 -3
View File
@@ -99,16 +99,18 @@ function resolveModelConfigAssets(sdk, config) {
/** Load ASR/TTS models in the same SDK worker and under the same master lock.
* These are auxiliary model IDs; they do not create another QVAC runtime. */
export async function loadAuxiliaryModel(name, modelConfig = {}) {
export async function loadAuxiliaryModel(name, modelConfig = {}, modelType = undefined) {
if (!name) throw new Error('auxiliary QVAC model name is required');
const existing = auxiliaryModels.get(String(name));
if (existing) return existing;
const sdk = await qvacSdk();
if (typeof sdk.loadModel !== 'function') throw new Error('QVAC SDK does not expose loadModel()');
const modelId = await withQvacMaster(() => sdk.loadModel({
const loadOptions = {
modelSrc: resolveSdkAsset(sdk, name),
modelConfig: { ...resolveModelConfigAssets(sdk, modelConfig), device: 'gpu', gpu_layers: QVAC_MASTER.gpuLayers, 'mmproj-use-gpu': true },
}));
};
if (modelType) loadOptions.modelType = modelType;
const modelId = await withQvacMaster(() => sdk.loadModel(loadOptions));
auxiliaryModels.set(String(name), modelId);
return modelId;
}
+2 -2
View File
@@ -11,8 +11,8 @@ export class QvacVoiceAdapter extends EventEmitter {
assertSdkVersion();
await acquireQvac(); this.acquired = true;
try {
this.asrId = await loadAuxiliaryModel(this.asrModel, { vadModelSrc: 'VAD_SILERO_5_1_2', audio_format: 's16le', language: 'en', no_timestamps: true, vad_params: { threshold: 0.6, min_speech_duration_ms: 300, min_silence_duration_ms: 700, max_speech_duration_s: 15, speech_pad_ms: 200 } });
this.ttsId = await loadAuxiliaryModel(this.ttsModel, { ttsEngine: 'supertonic', language: 'en', voice: 'F1', ttsSpeed: 1.05, ttsNumInferenceSteps: 5 });
this.asrId = await loadAuxiliaryModel(this.asrModel, { vadModelSrc: 'VAD_SILERO_5_1_2', audio_format: 's16le', language: 'en', no_timestamps: true, vad_params: { threshold: 0.6, min_speech_duration_ms: 300, min_silence_duration_ms: 700, max_speech_duration_s: 15, speech_pad_ms: 200 } }, 'whisper');
this.ttsId = await loadAuxiliaryModel(this.ttsModel, { ttsEngine: 'supertonic', language: 'en', voice: 'F1', ttsSpeed: 1.05, ttsNumInferenceSteps: 5 }, 'tts');
} catch (error) { await this.stop(); throw error; }
}