n8n-nodes-elevenlabs-langfix
Version:
Complete implementation of ElevenLabs AI voice generation into n8n workflows.
101 lines • 3.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loadOptions = void 0;
async function loadResource(resource) {
try {
const results = await this.helpers.httpRequest({
url: 'https://api.elevenlabs.io/v1/voice-generation/generate-voice/parameters',
});
if (!results[resource] || !Array.isArray(results[resource])) {
throw new Error(`Invalid response format for ${resource}`);
}
return results[resource].map((entry) => ({
name: entry.name,
value: entry.code,
}));
}
catch (error) {
console.error(`Error loading ${resource}:`, error);
throw new Error(`Failed to load ${resource}: ${error.message}`);
}
}
async function loadVoices() {
try {
const voices = await this.helpers.httpRequestWithAuthentication.call(this, 'elevenLabsApi', {
method: 'GET',
url: '/voices',
});
return voices.voices.map((voice) => ({
name: voice.name,
value: voice.voice_id,
description: voice.labels.description || voice.category,
}));
}
catch (error) {
console.error('Error loading voices:', error);
throw new Error(`Failed to load voices: ${error.message}`);
}
}
async function loadModels() {
try {
const response = await this.helpers.httpRequestWithAuthentication.call(this, 'elevenLabsApi', {
method: 'GET',
url: '/models',
});
if (response && Array.isArray(response)) {
return response.map((model) => ({
name: model.name,
value: model.model_id,
description: model.description,
}));
}
console.warn('API response did not contain models array, using static list');
return getStaticModels();
}
catch (error) {
console.error('Error loading models:', error);
return getStaticModels();
}
}
function getStaticModels() {
return [
{
name: 'Turbo V2.5 (Fastest, 32 Languages)',
value: 'eleven_turbo_v2_5',
description: 'Best for real-time applications, supports 32 languages',
},
{
name: 'Multilingual V2 (Highest Quality)',
value: 'eleven_multilingual_v2',
description: 'Most lifelike, best for professional content',
},
{
name: 'Monolingual V1 (English Only)',
value: 'eleven_monolingual_v1',
description: 'Legacy model, English language only',
},
{
name: 'Flash V2.5 (Fast)',
value: 'eleven_flash_v2_5',
description: 'Fast model with good quality',
},
];
}
exports.loadOptions = {
async listVoiceGenders() {
return await loadResource.call(this, 'genders');
},
async listVoiceAges() {
return await loadResource.call(this, 'ages');
},
async listVoiceAccents() {
return await loadResource.call(this, 'accents');
},
async listModels() {
return await loadModels.call(this);
},
async listVoices() {
return await loadVoices.call(this);
},
};
//# sourceMappingURL=loadOptions.js.map