pediatric-ai-scribe-v3/src/utils/ttsProvider.js

70 lines
2 KiB
JavaScript

const { getLiteLLMHeaders } = require('./litellm');
function parseList(value) {
return String(value || '')
.split(',')
.map(function(item) { return item.trim(); })
.filter(Boolean);
}
function getTTSProvider() {
var env = process.env.TTS_PROVIDER;
if (env === 'litellm') return 'litellm';
if (process.env.LITELLM_API_BASE) return 'litellm';
return 'none';
}
function getTTSEnvProvider() {
return process.env.TTS_PROVIDER || 'auto';
}
function getTTSVoiceLists() {
return {
litellm: parseList(process.env.LITELLM_TTS_VOICES)
};
}
function isLiteLLMTTSModel(model) {
var mode = model && model.model_info && model.model_info.mode ? String(model.model_info.mode) : '';
return mode === 'audio_speech';
}
function getLiteLLMTTSModels(models) {
return (models || [])
.filter(isLiteLLMTTSModel)
.map(function(model) { return model && (model.id || model.model_name) ? (model.id || model.model_name) : String(model || ''); });
}
function pushUniqueTTSItem(items, item) {
if (!item || !item.id) return;
if (items.some(function(existing) { return existing.id === item.id && existing.kind === item.kind; })) return;
items.push(item);
}
function getLiteLLMTTSDiscoveryItems(models, opts) {
opts = opts || {};
var items = [];
getLiteLLMTTSModels(models).forEach(function(id) {
pushUniqueTTSItem(items, { id: id, name: id, source: 'gateway-api', kind: 'model' });
});
if (opts.currentModel) {
pushUniqueTTSItem(items, { id: opts.currentModel, name: opts.currentModel, source: 'configured-model', kind: 'model' });
}
if (opts.currentVoice) {
pushUniqueTTSItem(items, { id: opts.currentVoice, name: opts.currentVoice, source: 'configured-voice', kind: 'voice' });
}
getTTSVoiceLists().litellm.forEach(function(voice) {
pushUniqueTTSItem(items, { id: voice, name: voice, source: 'configured-voice-list', kind: 'voice' });
});
return items;
}
module.exports = {
getTTSEnvProvider,
getLiteLLMTTSDiscoveryItems,
getLiteLLMHeaders,
getLiteLLMTTSModels,
getTTSProvider,
getTTSVoiceLists,
isLiteLLMTTSModel
};