UNPKG

@ai-stack/payloadcms

Version:

<p align="center"> <img alt="Payload AI Plugin" src="assets/payload-ai-intro.gif" width="100%" /> </p>

114 lines (113 loc) 3.11 kB
import { generateFileNameByPrompt } from '../../utils/generateFileNameByPrompt.js'; import { generateVoice } from './generateVoice.js'; const fields = [ { name: 'voice_id', type: 'text', label: 'Voice ID', required: true }, { type: 'collapsible', admin: { initCollapsed: false }, fields: [ { name: 'stability', type: 'number', defaultValue: 0.5, label: 'Stability', max: 1, min: 0, required: true }, { name: 'similarity_boost', type: 'number', defaultValue: 0.5, label: 'Similarity Boost', max: 1, min: 0, required: true }, { name: 'style', type: 'number', defaultValue: 0.5, label: 'Style', max: 1, min: 0 }, { name: 'use_speaker_boost', type: 'checkbox', label: 'Use Speaker Boost' } ], label: 'Voice Settings' }, { name: 'seed', type: 'number', label: 'Seed' }, { type: 'row', fields: [ { name: 'previous_text', type: 'textarea', label: 'Previous Text' }, { name: 'next_text', type: 'textarea', label: 'Next Text' } ] } ]; const MODEL_KEY = '11Labs'; export const ElevenLabsConfig = { models: [ { id: `${MODEL_KEY}-m-v2`, name: 'ElevenLabs Multilingual v2', fields: [ 'upload' ], handler: async (text, options)=>{ const voiceData = await generateVoice(text, options); if (!voiceData || !voiceData.buffer) { throw new Error('Voice data missing'); } return { data: { alt: 'voice over' }, file: { name: `voice_${generateFileNameByPrompt(text)}.mp3`, data: voiceData.buffer, mimetype: 'audio/mp3', size: voiceData.buffer.byteLength } }; }, output: 'audio', settings: { name: `${MODEL_KEY}-settings`, type: 'group', admin: { condition: (data)=>{ return data['model-id'] === `${MODEL_KEY}-m-v2`; } }, fields, label: 'ElevenLabs Multilingual v2 Settings' } } ], provider: 'ElevenLabs' }; //# sourceMappingURL=index.js.map