UNPKG

@memori.ai/memori-react

Version:

[![npm version](https://img.shields.io/github/package-json/v/memori-ai/memori-react)](https://www.npmjs.com/package/@memori.ai/memori-react) ![Tests](https://github.com/memori-ai/memori-react/workflows/CI/badge.svg?branch=main) ![TypeScript Support](https

192 lines 6.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createTTSConfiguration = exports.ensureValidVoice = exports.getDefaultModel = exports.getDefaultRegion = exports.getDefaultVoice = exports.isValidVoice = exports.getTTSVoice = exports.PROVIDER_CONFIG = exports.DEFAULT_OPENAI_VOICE = exports.OPENAI_VOICES = exports.DEFAULT_AZURE_VOICE = exports.AZURE_VOICES = void 0; exports.AZURE_VOICES = { IT: { MALE: 'it-IT-DiegoNeural', FEMALE: 'it-IT-ElsaNeural' }, DE: { MALE: 'de-DE-ConradNeural', FEMALE: 'de-DE-KatjaNeural' }, EN: { MALE: 'en-GB-RyanNeural', FEMALE: 'en-GB-SoniaNeural' }, ES: { MALE: 'es-ES-AlvaroNeural', FEMALE: 'es-ES-ElviraNeural' }, FR: { MALE: 'fr-FR-HenriNeural', FEMALE: 'fr-FR-DeniseNeural' }, PT: { MALE: 'pt-PT-DuarteNeural', FEMALE: 'pt-PT-RaquelNeural' }, UK: { MALE: 'uk-UA-OstapNeural', FEMALE: 'uk-UA-PolinaNeural' }, RU: { MALE: 'ru-RU-DmitryNeural', FEMALE: 'ru-RU-SvetlanaNeural' }, PL: { MALE: 'pl-PL-MarekNeural', FEMALE: 'pl-PL-AgnieszkaNeural' }, FI: { MALE: 'fi-FI-HarriNeural', FEMALE: 'fi-FI-SelmaNeural' }, EL: { MALE: 'el-GR-NestorasNeural', FEMALE: 'el-GR-AthinaNeural' }, AR: { MALE: 'ar-SA-HamedNeural', FEMALE: 'ar-SA-ZariyahNeural' }, ZH: { MALE: 'zh-CN-YunxiNeural', FEMALE: 'zh-CN-XiaoxiaoNeural' }, JA: { MALE: 'ja-JP-KeitaNeural', FEMALE: 'ja-JP-NanamiNeural' }, }; exports.DEFAULT_AZURE_VOICE = { MALE: 'en-US-GuyNeural', FEMALE: 'en-US-JennyNeural' }; exports.OPENAI_VOICES = { ALL: ['alloy', 'echo', 'fable', 'onyx', 'nova', 'shimmer'], CHARACTERISTICS: { 'alloy': { gender: 'NEUTRAL', tone: 'BALANCED' }, 'echo': { gender: 'MALE', tone: 'DEEP' }, 'fable': { gender: 'FEMALE', tone: 'EXPRESSIVE' }, 'onyx': { gender: 'MALE', tone: 'AUTHORITATIVE' }, 'nova': { gender: 'FEMALE', tone: 'FRIENDLY' }, 'shimmer': { gender: 'FEMALE', tone: 'BRIGHT' } }, RECOMMENDED: { DEFAULT: { MALE: 'onyx', FEMALE: 'nova', NEUTRAL: 'alloy' }, IT: { MALE: 'echo', FEMALE: 'nova' }, ES: { MALE: 'echo', FEMALE: 'shimmer' }, FR: { MALE: 'echo', FEMALE: 'fable' }, PT: { MALE: 'onyx', FEMALE: 'shimmer' }, DE: { MALE: 'onyx', FEMALE: 'fable' }, EN: { MALE: 'echo', FEMALE: 'nova' }, ZH: { MALE: 'echo', FEMALE: 'shimmer' }, JA: { MALE: 'echo', FEMALE: 'nova' }, RU: { MALE: 'onyx', FEMALE: 'fable' } } }; exports.DEFAULT_OPENAI_VOICE = 'alloy'; exports.PROVIDER_CONFIG = { azure: { defaultVoice: exports.DEFAULT_AZURE_VOICE.FEMALE, defaultRegion: 'westeurope', defaultModel: null, endpoint: (region) => `https://${region}.tts.speech.microsoft.com/cognitiveservices/v1`, outputFormat: 'audio-24khz-48kbitrate-mono-mp3' }, openai: { defaultVoice: exports.DEFAULT_OPENAI_VOICE, defaultModel: 'tts-1', voices: exports.OPENAI_VOICES.ALL, endpoint: 'https://api.openai.com/v1/audio/speech' } }; function getTTSVoice(lang, provider = 'azure', voiceType = 'FEMALE') { const voiceLang = (lang || 'EN').toUpperCase(); if (provider.toLowerCase() === 'openai') { const langMap = exports.OPENAI_VOICES.RECOMMENDED[voiceLang] || exports.OPENAI_VOICES.RECOMMENDED.DEFAULT; return langMap[voiceType] || exports.OPENAI_VOICES.RECOMMENDED.DEFAULT[voiceType] || exports.DEFAULT_OPENAI_VOICE; } else { const langVoices = exports.AZURE_VOICES[voiceLang] || exports.DEFAULT_AZURE_VOICE; return langVoices[voiceType] || langVoices.FEMALE || exports.DEFAULT_AZURE_VOICE.FEMALE; } } exports.getTTSVoice = getTTSVoice; function isValidVoice(voice, provider) { if (provider.toLowerCase() === 'openai') { return exports.OPENAI_VOICES.ALL.includes(voice); } return /^[a-z]{2}-[A-Z]{2}-[A-Za-z]+Neural$/.test(voice); } exports.isValidVoice = isValidVoice; function getDefaultVoice(provider, voiceType = 'FEMALE') { if (provider.toLowerCase() === 'openai') { return exports.OPENAI_VOICES.RECOMMENDED.DEFAULT[voiceType] || exports.DEFAULT_OPENAI_VOICE; } else { return exports.DEFAULT_AZURE_VOICE[voiceType] || exports.DEFAULT_AZURE_VOICE.FEMALE; } } exports.getDefaultVoice = getDefaultVoice; function getDefaultRegion(provider) { return exports.PROVIDER_CONFIG[provider].defaultRegion || null; } exports.getDefaultRegion = getDefaultRegion; function getDefaultModel(provider) { return exports.PROVIDER_CONFIG[provider].defaultModel || null; } exports.getDefaultModel = getDefaultModel; function ensureValidVoice(voice, provider, voiceType = 'FEMALE') { if (!voice || !isValidVoice(voice, provider)) { return getDefaultVoice(provider, voiceType); } return voice; } exports.ensureValidVoice = ensureValidVoice; function createTTSConfiguration(config) { const provider = config.provider || 'azure'; const voiceType = config.voiceType || 'FEMALE'; return { provider, voice: config.voice || getDefaultVoice(provider, voiceType), model: config.model || getDefaultModel(provider), region: config.region || getDefaultRegion(provider), tenant: config.tenant || 'www.aisuru.com', voiceType }; } exports.createTTSConfiguration = createTTSConfiguration; //# sourceMappingURL=ttsVoiceUtility.js.map