Pin remaining unbounded deps, drop stale JS model-list fallback, add smoke test

pyannote.audio was still `>=3.1` — the same unbounded-constraint pattern
that silently broke qwen3 (transformers>=4.45.0 resolving to a version
without qwen3_asr support on a later rebuild). Confirmed it had already
drifted once this session (4.0.4 -> 4.0.7). Pinned to the exact version
the current diarization code (token=, .speaker_diarization) is verified
against.

asr.js's config-fetch failure path fabricated a hardcoded backend/model
list that could silently drift from the server's real one (this is
exactly how the wrong Qwen3-ASR-2B/8B model IDs stuck around). Replaced it
with a visible error instead of a second source of truth.

Added scripts/smoke_test.sh: hits every backend's /transcribe or
/synthesize directly with a synthetic clip. Every regression found this
session (wrong model IDs, pyannote API drift, cuDNN path conflict) would
have shown up here immediately instead of waiting for a user to hit it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
du5t
2026-07-23 23:29:30 +09:00
parent 9472387d1b
commit 89f8643426
4 changed files with 59 additions and 12 deletions

View File

@@ -7,16 +7,13 @@ async function loadConfig() {
const r = await fetch('/asr/config');
SERVER_CONFIG = await r.json();
} catch (e) {
SERVER_CONFIG = {
default_backend: 'faster-whisper',
default_model: 'large-v3',
default_language: 'ko',
backends: {
'faster-whisper': { models: ['tiny','base','small','medium','large-v3','large-v2','turbo'] },
'qwen3': { models: ['Qwen/Qwen3-ASR-0.6B-hf','Qwen/Qwen3-ASR-1.7B-hf'] },
'vibevoice': { models: ['microsoft/VibeVoice-ASR'] },
},
};
// No hardcoded fallback list here on purpose: the server's /asr/config is
// the single source of truth for backend/model names. A duplicated guess
// here would silently drift out of sync with it (this has already bitten
// us once — see qwen3 model IDs). Surface the failure instead.
SERVER_CONFIG = null;
const el = document.getElementById('file-status');
if (el) el.textContent = '설정을 불러오지 못했습니다. 페이지를 새로고침해주세요.';
}
initAsrUI();
}