diff --git a/src/routes/adminConfig.js b/src/routes/adminConfig.js index b6f76a4..95d6757 100644 --- a/src/routes/adminConfig.js +++ b/src/routes/adminConfig.js @@ -684,7 +684,7 @@ router.get('/config/stt/discover', async function(req, res) { if (sResp.data && sResp.data.data) { sResp.data.data.forEach(function(m) { var mid = (m.id || '').toLowerCase(); - if (mid.indexOf('whisper') !== -1 || mid.indexOf('gemini') !== -1 || mid.indexOf('audio') !== -1 || mid.indexOf('transcri') !== -1 || mid.indexOf('scribe') !== -1 || mid.indexOf('nova') !== -1 || mid.indexOf('deepgram') !== -1 || mid.indexOf('eleven') !== -1 || mid.indexOf('chirp') !== -1) { + if (mid.indexOf('whisper') !== -1 || mid.indexOf('parakeet') !== -1 || mid.indexOf('gemini') !== -1 || mid.indexOf('audio') !== -1 || mid.indexOf('transcri') !== -1 || mid.indexOf('scribe') !== -1 || mid.indexOf('nova') !== -1 || mid.indexOf('deepgram') !== -1 || mid.indexOf('eleven') !== -1 || mid.indexOf('chirp') !== -1) { discovered.push({ id: m.id, name: m.id, source: 'gateway-api' }); } }); @@ -743,7 +743,7 @@ router.post('/config/stt/test', async function(req, res) { var sttModel = adminSttModel || process.env.LITELLM_STT_MODEL || 'gemini-2.0-flash'; // base URL handled by gatewayUrl() helper - var isTranscriptionModel = /whisper|deepgram|nova|groq|scribe|elevenlabs|transcri/i.test(sttModel); + var isTranscriptionModel = /whisper|parakeet|deepgram|nova|groq|scribe|elevenlabs|transcri/i.test(sttModel); if (isTranscriptionModel) { var ext = mime.split('/')[1] || 'webm'; diff --git a/src/routes/userPreferences.js b/src/routes/userPreferences.js index 1556d9f..0d8dd39 100644 --- a/src/routes/userPreferences.js +++ b/src/routes/userPreferences.js @@ -73,12 +73,14 @@ router.get('/preferences/options', async function(req, res) { ]; } else if (provider === 'litellm') { sttModels = [ + { value: 'local-whisper-large-v3-turbo', label: 'Local Whisper Large v3 Turbo' }, + { value: 'local-whisper-large-v3', label: 'Local Whisper Large v3' }, + { value: 'local-parakeet-v3', label: 'Local Parakeet v3' }, + { value: 'local-whisper-1', label: 'Local Whisper-1 Alias' }, { value: 'gemini-2.0-flash-exp', label: 'Gemini 2.0 Flash Exp' }, { value: 'gemini-2.0-flash', label: 'Gemini 2.0 Flash' }, { value: 'gemini-1.5-flash', label: 'Gemini 1.5 Flash' }, - { value: 'gemini-1.5-pro', label: 'Gemini 1.5 Pro' }, - { value: 'whisper-1', label: 'OpenAI Whisper-1' }, - { value: 'whisper-large-v3', label: 'Whisper Large v3' } + { value: 'gemini-1.5-pro', label: 'Gemini 1.5 Pro' } ]; } else if (provider === 'openai') { sttModels = [ diff --git a/src/utils/sttProvider.js b/src/utils/sttProvider.js index e3aed8f..803a084 100644 --- a/src/utils/sttProvider.js +++ b/src/utils/sttProvider.js @@ -1,7 +1,7 @@ const GOOGLE_STT_MODELS = ['gemini-2.0-flash', 'gemini-2.5-flash', 'gemini-2.0-flash-lite']; const AWS_STT_MODES = ['standard', 'medical']; const OPENAI_STT_MODELS = ['whisper-1']; -const LITELLM_STT_MODELS = ['whisper-1', 'gemini-2.0-flash', 'gemini-2.5-flash']; +const LITELLM_STT_MODELS = ['local-whisper-large-v3-turbo', 'local-whisper-large-v3', 'local-parakeet-v3', 'local-whisper-1', 'gemini-2.0-flash', 'gemini-2.5-flash']; const LOCAL_WHISPER_MODELS = ['tiny', 'base', 'small', 'medium', 'large']; function getSTTDependencies() { diff --git a/test/stt-provider.test.js b/test/stt-provider.test.js index 7bfd279..2319f68 100644 --- a/test/stt-provider.test.js +++ b/test/stt-provider.test.js @@ -42,7 +42,7 @@ test('STT model lists preserve admin defaults', () => { google: ['gemini-2.0-flash', 'gemini-2.5-flash', 'gemini-2.0-flash-lite'], aws: ['standard', 'medical'], openai: ['whisper-1'], - litellm: ['whisper-1', 'gemini-2.0-flash', 'gemini-2.5-flash'], + litellm: ['local-whisper-large-v3-turbo', 'local-whisper-large-v3', 'local-parakeet-v3', 'local-whisper-1', 'gemini-2.0-flash', 'gemini-2.5-flash'], local: ['tiny', 'base', 'small', 'medium', 'large'] }); });