chat-flow-ardymalihi 3.0.0 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +9 -1
- package/dist/adapters/db/InMemorySessionRepository.js +0 -15
- package/dist/adapters/db/RedisSessionRepository.js +0 -41
- package/dist/adapters/intent/IntentMatcher.d.ts +0 -41
- package/dist/adapters/intent/IntentMatcher.d.ts.map +0 -1
- package/dist/adapters/intent/IntentMatcher.js +0 -167
- package/dist/adapters/intent/IntentMatcher.js.map +0 -1
- package/dist/adapters/intent/IntentService.d.ts +0 -26
- package/dist/adapters/intent/IntentService.d.ts.map +0 -1
- package/dist/adapters/intent/IntentService.js +0 -65
- package/dist/adapters/intent/IntentService.js.map +0 -1
- package/dist/adapters/intent/MockIntentAdapter.js +0 -29
- package/dist/adapters/intent/MockIntentService.d.ts +0 -7
- package/dist/adapters/intent/MockIntentService.d.ts.map +0 -1
- package/dist/adapters/intent/MockIntentService.js +0 -36
- package/dist/adapters/intent/MockIntentService.js.map +0 -1
- package/dist/adapters/llm/GeminiLLMAdapter.d.ts +0 -10
- package/dist/adapters/llm/GeminiLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/GeminiLLMAdapter.js +0 -102
- package/dist/adapters/llm/GeminiLLMAdapter.js.map +0 -1
- package/dist/adapters/llm/MockLLMAdapter.d.ts +0 -5
- package/dist/adapters/llm/MockLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/MockLLMAdapter.js +0 -31
- package/dist/adapters/llm/MockLLMAdapter.js.map +0 -1
- package/dist/adapters/llm/OllamaLLMAdapter.d.ts +0 -9
- package/dist/adapters/llm/OllamaLLMAdapter.d.ts.map +0 -1
- package/dist/adapters/llm/OllamaLLMAdapter.js +0 -74
- package/dist/adapters/llm/OllamaLLMAdapter.js.map +0 -1
- package/dist/adapters/logger/ConsoleLogger.d.ts +0 -12
- package/dist/adapters/logger/ConsoleLogger.d.ts.map +0 -1
- package/dist/adapters/logger/ConsoleLogger.js +0 -37
- package/dist/adapters/logger/ConsoleLogger.js.map +0 -1
- package/dist/adapters/memory/InMemorySessionRepository.js +0 -15
- package/dist/adapters/redis/RedisSessionRepository.js +0 -41
- package/dist/adapters/repository/InMemoryRepository.d.ts +0 -46
- package/dist/adapters/repository/InMemoryRepository.d.ts.map +0 -1
- package/dist/adapters/repository/InMemoryRepository.js +0 -235
- package/dist/adapters/repository/InMemoryRepository.js.map +0 -1
- package/dist/adapters/repository/IntentRepository.d.ts +0 -15
- package/dist/adapters/repository/IntentRepository.d.ts.map +0 -1
- package/dist/adapters/repository/IntentRepository.js +0 -28
- package/dist/adapters/repository/IntentRepository.js.map +0 -1
- package/dist/adapters/repository/RedisRepository.d.ts +0 -63
- package/dist/adapters/repository/RedisRepository.d.ts.map +0 -1
- package/dist/adapters/repository/RedisRepository.js +0 -586
- package/dist/adapters/repository/RedisRepository.js.map +0 -1
- package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts +0 -33
- package/dist/adapters/storage/RedisAudioStorageAdapter.d.ts.map +0 -1
- package/dist/adapters/storage/RedisAudioStorageAdapter.js +0 -121
- package/dist/adapters/storage/RedisAudioStorageAdapter.js.map +0 -1
- package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts +0 -14
- package/dist/adapters/storage/RedisBufferStorageAdapter.d.ts.map +0 -1
- package/dist/adapters/storage/RedisBufferStorageAdapter.js +0 -94
- package/dist/adapters/storage/RedisBufferStorageAdapter.js.map +0 -1
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts +0 -29
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.js +0 -75
- package/dist/adapters/voice/ElevenLabsVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts +0 -77
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js +0 -187
- package/dist/adapters/voice/GeminiMultimodalLiveAdapter.js.map +0 -1
- package/dist/adapters/voice/GeminiVoiceAdapter.d.ts +0 -36
- package/dist/adapters/voice/GeminiVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GeminiVoiceAdapter.js +0 -134
- package/dist/adapters/voice/GeminiVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/GoogleTTSAdapter.d.ts +0 -61
- package/dist/adapters/voice/GoogleTTSAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GoogleTTSAdapter.js +0 -165
- package/dist/adapters/voice/GoogleTTSAdapter.js.map +0 -1
- package/dist/adapters/voice/GoogleVoiceAdapter.d.ts +0 -33
- package/dist/adapters/voice/GoogleVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/GoogleVoiceAdapter.js +0 -155
- package/dist/adapters/voice/GoogleVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/HybridVoiceAdapter.d.ts +0 -54
- package/dist/adapters/voice/HybridVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/HybridVoiceAdapter.js +0 -102
- package/dist/adapters/voice/HybridVoiceAdapter.js.map +0 -1
- package/dist/adapters/voice/LanguageVoiceMapper.d.ts +0 -60
- package/dist/adapters/voice/LanguageVoiceMapper.d.ts.map +0 -1
- package/dist/adapters/voice/LanguageVoiceMapper.js +0 -130
- package/dist/adapters/voice/LanguageVoiceMapper.js.map +0 -1
- package/dist/adapters/voice/VertexVoiceAdapter.d.ts +0 -32
- package/dist/adapters/voice/VertexVoiceAdapter.d.ts.map +0 -1
- package/dist/adapters/voice/VertexVoiceAdapter.js +0 -179
- package/dist/adapters/voice/VertexVoiceAdapter.js.map +0 -1
- package/dist/adapters/webhook/WebhookService.d.ts +0 -47
- package/dist/adapters/webhook/WebhookService.d.ts.map +0 -1
- package/dist/adapters/webhook/WebhookService.js +0 -265
- package/dist/adapters/webhook/WebhookService.js.map +0 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.d.ts +0 -5
- package/dist/adapters/workflow/MockWorkflowAdapter.d.ts.map +0 -1
- package/dist/adapters/workflow/MockWorkflowAdapter.js +0 -173
- package/dist/adapters/workflow/MockWorkflowAdapter.js.map +0 -1
- package/dist/adapters/workflow/WorkflowAdapter.d.ts +0 -55
- package/dist/adapters/workflow/WorkflowAdapter.d.ts.map +0 -1
- package/dist/adapters/workflow/WorkflowAdapter.js +0 -242
- package/dist/adapters/workflow/WorkflowAdapter.js.map +0 -1
- package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts +0 -10
- package/dist/adapters/workflow/actions/getSupportHoursAction.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/getSupportHoursAction.js +0 -33
- package/dist/adapters/workflow/actions/getSupportHoursAction.js.map +0 -1
- package/dist/adapters/workflow/actions/index.d.ts +0 -6
- package/dist/adapters/workflow/actions/index.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/index.js +0 -22
- package/dist/adapters/workflow/actions/index.js.map +0 -1
- package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts +0 -11
- package/dist/adapters/workflow/actions/pushOutputResultAction.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/pushOutputResultAction.js +0 -31
- package/dist/adapters/workflow/actions/pushOutputResultAction.js.map +0 -1
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts +0 -12
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.d.ts.map +0 -1
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.js +0 -32
- package/dist/adapters/workflow/actions/setWorkflowMessageAction.js.map +0 -1
- package/dist/adapters/workflow/engine/constants.d.ts +0 -3
- package/dist/adapters/workflow/engine/constants.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/constants.js +0 -6
- package/dist/adapters/workflow/engine/constants.js.map +0 -1
- package/dist/adapters/workflow/engine/engine.d.ts +0 -32
- package/dist/adapters/workflow/engine/engine.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/engine.js +0 -623
- package/dist/adapters/workflow/engine/engine.js.map +0 -1
- package/dist/adapters/workflow/engine/event-registry.d.ts +0 -12
- package/dist/adapters/workflow/engine/event-registry.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/event-registry.js +0 -33
- package/dist/adapters/workflow/engine/event-registry.js.map +0 -1
- package/dist/adapters/workflow/engine/interpolator.d.ts +0 -11
- package/dist/adapters/workflow/engine/interpolator.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/interpolator.js +0 -93
- package/dist/adapters/workflow/engine/interpolator.js.map +0 -1
- package/dist/adapters/workflow/engine/registry.d.ts +0 -12
- package/dist/adapters/workflow/engine/registry.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/registry.js +0 -39
- package/dist/adapters/workflow/engine/registry.js.map +0 -1
- package/dist/adapters/workflow/engine/template-registry.d.ts +0 -60
- package/dist/adapters/workflow/engine/template-registry.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/template-registry.js +0 -92
- package/dist/adapters/workflow/engine/template-registry.js.map +0 -1
- package/dist/adapters/workflow/engine/types.d.ts +0 -182
- package/dist/adapters/workflow/engine/types.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/types.js +0 -3
- package/dist/adapters/workflow/engine/types.js.map +0 -1
- package/dist/adapters/workflow/engine/utils/format-utils.d.ts +0 -43
- package/dist/adapters/workflow/engine/utils/format-utils.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/utils/format-utils.js +0 -137
- package/dist/adapters/workflow/engine/utils/format-utils.js.map +0 -1
- package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts +0 -7
- package/dist/adapters/workflow/engine/utils/layout-calculator.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/utils/layout-calculator.js +0 -87
- package/dist/adapters/workflow/engine/utils/layout-calculator.js.map +0 -1
- package/dist/adapters/workflow/engine/utils/slugify.d.ts +0 -2
- package/dist/adapters/workflow/engine/utils/slugify.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/utils/slugify.js +0 -41
- package/dist/adapters/workflow/engine/utils/slugify.js.map +0 -1
- package/dist/adapters/workflow/engine/validator.d.ts +0 -9
- package/dist/adapters/workflow/engine/validator.d.ts.map +0 -1
- package/dist/adapters/workflow/engine/validator.js +0 -425
- package/dist/adapters/workflow/engine/validator.js.map +0 -1
- package/dist/application/ConversationSession.d.ts +0 -23
- package/dist/application/ConversationSession.d.ts.map +0 -1
- package/dist/application/ConversationSession.js +0 -83
- package/dist/application/ConversationSession.js.map +0 -1
- package/dist/application/Message.d.ts +0 -11
- package/dist/application/Message.d.ts.map +0 -1
- package/dist/application/Message.js +0 -30
- package/dist/application/Message.js.map +0 -1
- package/dist/application/Orchestrator.d.ts +0 -18
- package/dist/application/Orchestrator.d.ts.map +0 -1
- package/dist/application/Orchestrator.js +0 -80
- package/dist/application/Orchestrator.js.map +0 -1
- package/dist/application/SessionState.js +0 -2
- package/dist/application/usecases/CreateSession.js +0 -20
- package/dist/application/usecases/HandleUserMessage.js +0 -69
- package/dist/config/ChatFlowConfig.d.ts +0 -66
- package/dist/config/ChatFlowConfig.d.ts.map +0 -1
- package/dist/config/ChatFlowConfig.js +0 -54
- package/dist/config/ChatFlowConfig.js.map +0 -1
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -7
- package/dist/config/index.js.map +0 -1
- package/dist/core/entities/ConversationSession.d.ts +0 -58
- package/dist/core/entities/ConversationSession.d.ts.map +0 -1
- package/dist/core/entities/ConversationSession.js +0 -160
- package/dist/core/entities/ConversationSession.js.map +0 -1
- package/dist/core/entities/Message.d.ts +0 -14
- package/dist/core/entities/Message.d.ts.map +0 -1
- package/dist/core/entities/Message.js +0 -32
- package/dist/core/entities/Message.js.map +0 -1
- package/dist/core/errors/ChatFlowError.d.ts +0 -71
- package/dist/core/errors/ChatFlowError.d.ts.map +0 -1
- package/dist/core/errors/ChatFlowError.js +0 -108
- package/dist/core/errors/ChatFlowError.js.map +0 -1
- package/dist/core/errors/index.d.ts +0 -2
- package/dist/core/errors/index.d.ts.map +0 -1
- package/dist/core/errors/index.js +0 -15
- package/dist/core/errors/index.js.map +0 -1
- package/dist/core/utils/AudioStreamBuffer.d.ts +0 -33
- package/dist/core/utils/AudioStreamBuffer.d.ts.map +0 -1
- package/dist/core/utils/AudioStreamBuffer.js +0 -55
- package/dist/core/utils/AudioStreamBuffer.js.map +0 -1
- package/dist/core/utils/AudioUtils.d.ts +0 -41
- package/dist/core/utils/AudioUtils.d.ts.map +0 -1
- package/dist/core/utils/AudioUtils.js +0 -188
- package/dist/core/utils/AudioUtils.js.map +0 -1
- package/dist/core/utils/LanguageDetector.d.ts +0 -52
- package/dist/core/utils/LanguageDetector.d.ts.map +0 -1
- package/dist/core/utils/LanguageDetector.js +0 -173
- package/dist/core/utils/LanguageDetector.js.map +0 -1
- package/dist/core/utils/WavUtils.d.ts +0 -14
- package/dist/core/utils/WavUtils.d.ts.map +0 -1
- package/dist/core/utils/WavUtils.js +0 -37
- package/dist/core/utils/WavUtils.js.map +0 -1
- package/dist/db/InMemoryRepository.d.ts +0 -15
- package/dist/db/InMemoryRepository.d.ts.map +0 -1
- package/dist/db/InMemoryRepository.js +0 -41
- package/dist/db/InMemoryRepository.js.map +0 -1
- package/dist/db/RedisRepository.d.ts +0 -16
- package/dist/db/RedisRepository.d.ts.map +0 -1
- package/dist/db/RedisRepository.js +0 -87
- package/dist/db/RedisRepository.js.map +0 -1
- package/dist/demo/cli-demo.d.ts +0 -2
- package/dist/demo/cli-demo.d.ts.map +0 -1
- package/dist/demo/cli-demo.js +0 -146
- package/dist/demo/cli-demo.js.map +0 -1
- package/dist/demo/console-chat.d.ts +0 -2
- package/dist/demo/console-chat.d.ts.map +0 -1
- package/dist/demo/console-chat.js +0 -148
- package/dist/demo/console-chat.js.map +0 -1
- package/dist/demo/interactive-voice-chat.d.ts +0 -2
- package/dist/demo/interactive-voice-chat.d.ts.map +0 -1
- package/dist/demo/interactive-voice-chat.js +0 -180
- package/dist/demo/interactive-voice-chat.js.map +0 -1
- package/dist/demo/voice-demo.d.ts +0 -2
- package/dist/demo/voice-demo.d.ts.map +0 -1
- package/dist/demo/voice-demo.js +0 -188
- package/dist/demo/voice-demo.js.map +0 -1
- package/dist/domain/conversation/ConversationSession.js +0 -82
- package/dist/domain/conversation/Message.js +0 -33
- package/dist/domain/conversation/SessionState.js +0 -10
- package/dist/index.d.ts +0 -26
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -76
- package/dist/index.js.map +0 -1
- package/dist/intent/IntentService.d.ts +0 -17
- package/dist/intent/IntentService.d.ts.map +0 -1
- package/dist/intent/IntentService.js +0 -57
- package/dist/intent/IntentService.js.map +0 -1
- package/dist/intent/MockIntentService.d.ts +0 -7
- package/dist/intent/MockIntentService.d.ts.map +0 -1
- package/dist/intent/MockIntentService.js +0 -36
- package/dist/intent/MockIntentService.js.map +0 -1
- package/dist/interfaces.d.ts +0 -653
- package/dist/interfaces.d.ts.map +0 -1
- package/dist/interfaces.js +0 -36
- package/dist/interfaces.js.map +0 -1
- package/dist/llm/GeminiLLMAdapter.d.ts +0 -10
- package/dist/llm/GeminiLLMAdapter.d.ts.map +0 -1
- package/dist/llm/GeminiLLMAdapter.js +0 -102
- package/dist/llm/GeminiLLMAdapter.js.map +0 -1
- package/dist/llm/MockLLMAdapter.d.ts +0 -5
- package/dist/llm/MockLLMAdapter.d.ts.map +0 -1
- package/dist/llm/MockLLMAdapter.js +0 -31
- package/dist/llm/MockLLMAdapter.js.map +0 -1
- package/dist/orchestrator/Orchestrator.d.ts +0 -62
- package/dist/orchestrator/Orchestrator.d.ts.map +0 -1
- package/dist/orchestrator/Orchestrator.js +0 -697
- package/dist/orchestrator/Orchestrator.js.map +0 -1
- package/dist/ports/IIntentRepository.d.ts +0 -27
- package/dist/ports/IIntentRepository.d.ts.map +0 -1
- package/dist/ports/IIntentRepository.js +0 -3
- package/dist/ports/IIntentRepository.js.map +0 -1
- package/dist/ports/IntentPort.js +0 -2
- package/dist/ports/LLMPort.js +0 -2
- package/dist/ports/SessionRepository.js +0 -2
- package/dist/ports/WorkflowPort.js +0 -2
- package/dist/scripts/debug-redis.d.ts +0 -2
- package/dist/scripts/debug-redis.d.ts.map +0 -1
- package/dist/scripts/debug-redis.js +0 -55
- package/dist/scripts/debug-redis.js.map +0 -1
- package/dist/scripts/seed-collaborative-intents.d.ts +0 -2
- package/dist/scripts/seed-collaborative-intents.d.ts.map +0 -1
- package/dist/scripts/seed-collaborative-intents.js +0 -90
- package/dist/scripts/seed-collaborative-intents.js.map +0 -1
- package/dist/scripts/test-isolated-config.d.ts +0 -2
- package/dist/scripts/test-isolated-config.d.ts.map +0 -1
- package/dist/scripts/test-isolated-config.js +0 -80
- package/dist/scripts/test-isolated-config.js.map +0 -1
- package/dist/scripts/verify_memory_intents.d.ts +0 -2
- package/dist/scripts/verify_memory_intents.d.ts.map +0 -1
- package/dist/scripts/verify_memory_intents.js +0 -45
- package/dist/scripts/verify_memory_intents.js.map +0 -1
- package/dist/scripts/verify_redis_intents.d.ts +0 -2
- package/dist/scripts/verify_redis_intents.d.ts.map +0 -1
- package/dist/scripts/verify_redis_intents.js +0 -52
- package/dist/scripts/verify_redis_intents.js.map +0 -1
- package/dist/server/ChatFlowWebSocketServer.d.ts +0 -46
- package/dist/server/ChatFlowWebSocketServer.d.ts.map +0 -1
- package/dist/server/ChatFlowWebSocketServer.js +0 -344
- package/dist/server/ChatFlowWebSocketServer.js.map +0 -1
- package/dist/server/realtime-voice-server.d.ts +0 -2
- package/dist/server/realtime-voice-server.d.ts.map +0 -1
- package/dist/server/realtime-voice-server.js +0 -627
- package/dist/server/realtime-voice-server.js.map +0 -1
- package/dist/src/api/routes/tenants.d.ts +0 -3
- package/dist/src/api/routes/tenants.d.ts.map +0 -1
- package/dist/src/api/routes/tenants.js +0 -109
- package/dist/src/api/routes/tenants.js.map +0 -1
- package/dist/utils/crypto.d.ts +0 -7
- package/dist/utils/crypto.d.ts.map +0 -1
- package/dist/utils/crypto.js +0 -35
- package/dist/utils/crypto.js.map +0 -1
- package/dist/utils/encryption-helpers.d.ts +0 -14
- package/dist/utils/encryption-helpers.d.ts.map +0 -1
- package/dist/utils/encryption-helpers.js +0 -49
- package/dist/utils/encryption-helpers.js.map +0 -1
- package/dist/verify_memory_intents.js +0 -44
- package/dist/verify_redis_intents.js +0 -49
- package/dist/workflow/MockWorkflowAdapter.d.ts +0 -5
- package/dist/workflow/MockWorkflowAdapter.d.ts.map +0 -1
- package/dist/workflow/MockWorkflowAdapter.js +0 -162
- package/dist/workflow/MockWorkflowAdapter.js.map +0 -1
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GoogleVoiceAdapter = void 0;
|
|
4
|
-
const text_to_speech_1 = require("@google-cloud/text-to-speech");
|
|
5
|
-
/**
|
|
6
|
-
* Google Voice Adapter
|
|
7
|
-
* Uses Google services exclusively:
|
|
8
|
-
* - Gemini API for STT (Speech-to-Text)
|
|
9
|
-
* - Google Cloud Text-to-Speech API for TTS
|
|
10
|
-
*
|
|
11
|
-
* Outputs standard LINEAR16 PCM audio for perfect concatenation
|
|
12
|
-
*/
|
|
13
|
-
class GoogleVoiceAdapter {
|
|
14
|
-
constructor(apiKey, voiceConfig) {
|
|
15
|
-
this.apiKey = apiKey;
|
|
16
|
-
this.voiceConfig = voiceConfig;
|
|
17
|
-
this.ttsClient = new text_to_speech_1.TextToSpeechClient();
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Convert speech (audio) to text using Gemini's audio input capability
|
|
21
|
-
*/
|
|
22
|
-
async speechToText(audioBase64, config) {
|
|
23
|
-
const sttConfig = config || this.voiceConfig?.stt;
|
|
24
|
-
const language = sttConfig?.language || 'en-US';
|
|
25
|
-
try {
|
|
26
|
-
const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite:generateContent?key=${this.apiKey}`, {
|
|
27
|
-
method: 'POST',
|
|
28
|
-
headers: { 'Content-Type': 'application/json' },
|
|
29
|
-
body: JSON.stringify({
|
|
30
|
-
contents: [{
|
|
31
|
-
role: 'user',
|
|
32
|
-
parts: [
|
|
33
|
-
{ text: "Transcribe the following audio exactly. Do not respond to the audio, just output the transcription." },
|
|
34
|
-
{
|
|
35
|
-
inlineData: {
|
|
36
|
-
mimeType: 'audio/wav',
|
|
37
|
-
data: audioBase64
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
}],
|
|
42
|
-
generationConfig: {
|
|
43
|
-
temperature: 0.1,
|
|
44
|
-
}
|
|
45
|
-
})
|
|
46
|
-
});
|
|
47
|
-
if (!response.ok) {
|
|
48
|
-
const errorText = await response.text();
|
|
49
|
-
throw new Error(`Gemini STT API Error: ${response.status} - ${errorText}`);
|
|
50
|
-
}
|
|
51
|
-
const json = await response.json();
|
|
52
|
-
const transcript = json.candidates?.[0]?.content?.parts?.[0]?.text || '';
|
|
53
|
-
if (!transcript) {
|
|
54
|
-
throw new Error('No transcript returned from Gemini STT');
|
|
55
|
-
}
|
|
56
|
-
return transcript;
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
console.error('Speech-to-Text Error:', error);
|
|
60
|
-
throw new Error(`STT failed: ${error.message}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Convert text to speech using Google Cloud Text-to-Speech API
|
|
65
|
-
* Supports both API key and service account authentication
|
|
66
|
-
*/
|
|
67
|
-
async textToSpeech(text, config) {
|
|
68
|
-
const ttsConfig = config || this.voiceConfig?.tts;
|
|
69
|
-
const languageCode = ttsConfig?.language || 'en-US';
|
|
70
|
-
const voiceName = ttsConfig?.voice || 'en-US-Chirp3-HD-Leda'; // Default female voice
|
|
71
|
-
try {
|
|
72
|
-
// Try API key authentication first (simpler)
|
|
73
|
-
const googleCloudApiKey = process.env.GOOGLE_CLOUD_API_KEY || process.env.GOOGLE_AI_API_KEY;
|
|
74
|
-
if (googleCloudApiKey) {
|
|
75
|
-
// Use REST API with API key
|
|
76
|
-
const response = await fetch(`https://texttospeech.googleapis.com/v1/text:synthesize?key=${googleCloudApiKey}`, {
|
|
77
|
-
method: 'POST',
|
|
78
|
-
headers: { 'Content-Type': 'application/json' },
|
|
79
|
-
body: JSON.stringify({
|
|
80
|
-
input: { text },
|
|
81
|
-
voice: {
|
|
82
|
-
languageCode: languageCode,
|
|
83
|
-
name: voiceName
|
|
84
|
-
},
|
|
85
|
-
audioConfig: {
|
|
86
|
-
audioEncoding: 'LINEAR16',
|
|
87
|
-
sampleRateHertz: 16000,
|
|
88
|
-
pitch: 0,
|
|
89
|
-
speakingRate: 1.2
|
|
90
|
-
}
|
|
91
|
-
})
|
|
92
|
-
});
|
|
93
|
-
if (!response.ok) {
|
|
94
|
-
const errorText = await response.text();
|
|
95
|
-
throw new Error(`Google TTS API Error: ${response.status} - ${errorText}`);
|
|
96
|
-
}
|
|
97
|
-
const json = await response.json();
|
|
98
|
-
const audioContent = json.audioContent;
|
|
99
|
-
if (!audioContent) {
|
|
100
|
-
throw new Error('No audio content received from Google TTS');
|
|
101
|
-
}
|
|
102
|
-
// audioContent is base64-encoded
|
|
103
|
-
return new Uint8Array(Buffer.from(audioContent, 'base64'));
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
// Fall back to service account authentication
|
|
107
|
-
const [response] = await this.ttsClient.synthesizeSpeech({
|
|
108
|
-
input: { text },
|
|
109
|
-
voice: {
|
|
110
|
-
languageCode: languageCode,
|
|
111
|
-
name: voiceName
|
|
112
|
-
},
|
|
113
|
-
audioConfig: {
|
|
114
|
-
audioEncoding: 'LINEAR16',
|
|
115
|
-
sampleRateHertz: 16000,
|
|
116
|
-
pitch: 0,
|
|
117
|
-
speakingRate: 1.2
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
if (!response.audioContent) {
|
|
121
|
-
throw new Error('No audio content received from Google TTS');
|
|
122
|
-
}
|
|
123
|
-
return new Uint8Array(response.audioContent);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
console.error('Text-to-Speech Error:', error);
|
|
128
|
-
throw new Error(`TTS failed: ${error.message}`);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Declare the audio format produced by Google TTS
|
|
133
|
-
*/
|
|
134
|
-
getTTSOutputFormat() {
|
|
135
|
-
return {
|
|
136
|
-
format: 'wav',
|
|
137
|
-
sampleRate: 16000,
|
|
138
|
-
channels: 1,
|
|
139
|
-
bitDepth: 16
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Declare the expected audio format for Gemini STT
|
|
144
|
-
*/
|
|
145
|
-
getSTTInputFormat() {
|
|
146
|
-
return {
|
|
147
|
-
format: 'wav',
|
|
148
|
-
sampleRate: 16000,
|
|
149
|
-
channels: 1,
|
|
150
|
-
bitDepth: 16
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
exports.GoogleVoiceAdapter = GoogleVoiceAdapter;
|
|
155
|
-
//# sourceMappingURL=GoogleVoiceAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GoogleVoiceAdapter.js","sourceRoot":"","sources":["../../../src/adapters/voice/GoogleVoiceAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { IVoiceAdapter, VoiceConfig, AudioFormatMetadata } from '../../interfaces';
|
|
2
|
-
/**
|
|
3
|
-
* Hybrid Voice Adapter
|
|
4
|
-
* Combines multiple voice providers:
|
|
5
|
-
* - STT: Gemini (free with Gemini API key, supports 125+ languages with auto-detection)
|
|
6
|
-
* - TTS: ElevenLabs (supports 70+ languages with multilingual voice cloning)
|
|
7
|
-
*
|
|
8
|
-
* Features:
|
|
9
|
-
* - Automatic language detection
|
|
10
|
-
* - Dynamic voice switching based on detected language
|
|
11
|
-
* - Language-to-voice mapping
|
|
12
|
-
*/
|
|
13
|
-
export declare class HybridVoiceAdapter implements IVoiceAdapter {
|
|
14
|
-
private sttAdapter;
|
|
15
|
-
private ttsAdapter;
|
|
16
|
-
private voiceMapper;
|
|
17
|
-
private currentLanguage;
|
|
18
|
-
private voiceConfig?;
|
|
19
|
-
constructor(geminiApiKey: string, elevenLabsApiKey: string, voiceConfig?: VoiceConfig);
|
|
20
|
-
/**
|
|
21
|
-
* Speech-to-text using Gemini with auto language detection
|
|
22
|
-
*/
|
|
23
|
-
speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
|
|
24
|
-
/**
|
|
25
|
-
* Text-to-speech using ElevenLabs with dynamic voice selection
|
|
26
|
-
*/
|
|
27
|
-
textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
|
|
28
|
-
/**
|
|
29
|
-
* Declare the audio format produced by the TTS adapter (ElevenLabs)
|
|
30
|
-
*/
|
|
31
|
-
getTTSOutputFormat(): AudioFormatMetadata;
|
|
32
|
-
/**
|
|
33
|
-
* Declare the expected audio format for the STT adapter (Gemini)
|
|
34
|
-
*/
|
|
35
|
-
getSTTInputFormat(): AudioFormatMetadata;
|
|
36
|
-
/**
|
|
37
|
-
* Set current language for TTS voice selection
|
|
38
|
-
* @param languageCode ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
|
|
39
|
-
*/
|
|
40
|
-
setLanguage(languageCode: string): void;
|
|
41
|
-
/**
|
|
42
|
-
* Get current language
|
|
43
|
-
*/
|
|
44
|
-
getCurrentLanguage(): string;
|
|
45
|
-
/**
|
|
46
|
-
* Get supported languages
|
|
47
|
-
*/
|
|
48
|
-
getSupportedLanguages(): string[];
|
|
49
|
-
/**
|
|
50
|
-
* Add custom voice mapping for a language
|
|
51
|
-
*/
|
|
52
|
-
addVoiceMapping(languageCode: string, voiceId: string, name: string): void;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=HybridVoiceAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HybridVoiceAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/HybridVoiceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAKnF;;;;;;;;;;GAUG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACpD,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,WAAW,CAAC,CAAc;gBAG9B,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,WAAW;IAwB7B;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIrF;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAgBlF;;OAEG;IACH,kBAAkB,IAAI,mBAAmB;IAIzC;;OAEG;IACH,iBAAiB,IAAI,mBAAmB;IAIxC;;;OAGG;IACH,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAQvC;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAIjC;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;CAG7E"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HybridVoiceAdapter = void 0;
|
|
4
|
-
const GeminiVoiceAdapter_1 = require("./GeminiVoiceAdapter");
|
|
5
|
-
const ElevenLabsVoiceAdapter_1 = require("./ElevenLabsVoiceAdapter");
|
|
6
|
-
const LanguageVoiceMapper_1 = require("./LanguageVoiceMapper");
|
|
7
|
-
/**
|
|
8
|
-
* Hybrid Voice Adapter
|
|
9
|
-
* Combines multiple voice providers:
|
|
10
|
-
* - STT: Gemini (free with Gemini API key, supports 125+ languages with auto-detection)
|
|
11
|
-
* - TTS: ElevenLabs (supports 70+ languages with multilingual voice cloning)
|
|
12
|
-
*
|
|
13
|
-
* Features:
|
|
14
|
-
* - Automatic language detection
|
|
15
|
-
* - Dynamic voice switching based on detected language
|
|
16
|
-
* - Language-to-voice mapping
|
|
17
|
-
*/
|
|
18
|
-
class HybridVoiceAdapter {
|
|
19
|
-
constructor(geminiApiKey, elevenLabsApiKey, voiceConfig) {
|
|
20
|
-
this.currentLanguage = 'en';
|
|
21
|
-
this.voiceConfig = voiceConfig;
|
|
22
|
-
// Use Gemini for STT
|
|
23
|
-
this.sttAdapter = new GeminiVoiceAdapter_1.GeminiVoiceAdapter(geminiApiKey, voiceConfig);
|
|
24
|
-
// Use ElevenLabs for TTS
|
|
25
|
-
this.ttsAdapter = new ElevenLabsVoiceAdapter_1.ElevenLabsVoiceAdapter(elevenLabsApiKey, voiceConfig);
|
|
26
|
-
// Initialize voice mapper with custom mappings from config
|
|
27
|
-
const customVoiceMappings = voiceConfig?.tts?.multiLingualVoices;
|
|
28
|
-
let transformedMappings;
|
|
29
|
-
if (customVoiceMappings) {
|
|
30
|
-
transformedMappings = {};
|
|
31
|
-
for (const [lang, voiceId] of Object.entries(customVoiceMappings)) {
|
|
32
|
-
transformedMappings[lang] = { voiceId, name: `Custom ${lang.toUpperCase()} Voice` };
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
this.voiceMapper = new LanguageVoiceMapper_1.LanguageVoiceMapper(transformedMappings);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Speech-to-text using Gemini with auto language detection
|
|
39
|
-
*/
|
|
40
|
-
async speechToText(audioBase64, config) {
|
|
41
|
-
return await this.sttAdapter.speechToText(audioBase64, config);
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Text-to-speech using ElevenLabs with dynamic voice selection
|
|
45
|
-
*/
|
|
46
|
-
async textToSpeech(text, config) {
|
|
47
|
-
// Use language-specific voice if available
|
|
48
|
-
const voiceId = this.voiceMapper.getVoiceForLanguage(this.currentLanguage);
|
|
49
|
-
// Build language-specific config
|
|
50
|
-
const languageConfig = {
|
|
51
|
-
provider: (config?.provider || this.voiceConfig?.tts?.provider || 'elevenlabs'),
|
|
52
|
-
voice: voiceId,
|
|
53
|
-
language: this.currentLanguage,
|
|
54
|
-
speakingRate: config?.speakingRate || this.voiceConfig?.tts?.speakingRate,
|
|
55
|
-
pitch: config?.pitch || this.voiceConfig?.tts?.pitch
|
|
56
|
-
};
|
|
57
|
-
return await this.ttsAdapter.textToSpeech(text, languageConfig);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Declare the audio format produced by the TTS adapter (ElevenLabs)
|
|
61
|
-
*/
|
|
62
|
-
getTTSOutputFormat() {
|
|
63
|
-
return this.ttsAdapter.getTTSOutputFormat();
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Declare the expected audio format for the STT adapter (Gemini)
|
|
67
|
-
*/
|
|
68
|
-
getSTTInputFormat() {
|
|
69
|
-
return this.sttAdapter.getSTTInputFormat();
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Set current language for TTS voice selection
|
|
73
|
-
* @param languageCode ISO 639-1 language code (e.g., 'en', 'ar', 'fa')
|
|
74
|
-
*/
|
|
75
|
-
setLanguage(languageCode) {
|
|
76
|
-
if (this.currentLanguage !== languageCode) {
|
|
77
|
-
const voiceMapping = this.voiceMapper.getVoiceMapping(languageCode);
|
|
78
|
-
console.log(`[HybridVoiceAdapter] Language switched to '${languageCode}' using voice: ${voiceMapping.name} (${voiceMapping.voiceId})`);
|
|
79
|
-
}
|
|
80
|
-
this.currentLanguage = languageCode;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get current language
|
|
84
|
-
*/
|
|
85
|
-
getCurrentLanguage() {
|
|
86
|
-
return this.currentLanguage;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Get supported languages
|
|
90
|
-
*/
|
|
91
|
-
getSupportedLanguages() {
|
|
92
|
-
return this.voiceMapper.getSupportedLanguages();
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Add custom voice mapping for a language
|
|
96
|
-
*/
|
|
97
|
-
addVoiceMapping(languageCode, voiceId, name) {
|
|
98
|
-
this.voiceMapper.setVoiceMapping(languageCode, { voiceId, name });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
exports.HybridVoiceAdapter = HybridVoiceAdapter;
|
|
102
|
-
//# sourceMappingURL=HybridVoiceAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HybridVoiceAdapter.js","sourceRoot":"","sources":["../../../src/adapters/voice/HybridVoiceAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Language to Voice ID Mapping
|
|
3
|
-
*
|
|
4
|
-
* Maps ISO 639-1 language codes to ElevenLabs voice IDs.
|
|
5
|
-
* Provides default voices for common languages and supports custom mappings.
|
|
6
|
-
*
|
|
7
|
-
* VOICE PREFERENCE POLICY:
|
|
8
|
-
* - Female voices are preferred by default for better user experience
|
|
9
|
-
* - Only use male voices when female voices are not available for a language
|
|
10
|
-
* - Default voice: Rachel (female, multilingual, supports 29 languages)
|
|
11
|
-
*/
|
|
12
|
-
export interface VoiceMapping {
|
|
13
|
-
voiceId: string;
|
|
14
|
-
name: string;
|
|
15
|
-
description?: string;
|
|
16
|
-
gender?: 'female' | 'male' | 'neutral';
|
|
17
|
-
}
|
|
18
|
-
export declare class LanguageVoiceMapper {
|
|
19
|
-
private static readonly DEFAULT_VOICES;
|
|
20
|
-
/**
|
|
21
|
-
* VOICE PREFERENCE POLICY:
|
|
22
|
-
* All default voices use Rachel (21m00Tcm4TlvDq8ikWAM) - a female multilingual voice.
|
|
23
|
-
*
|
|
24
|
-
* To add language-specific female voices:
|
|
25
|
-
* 1. Use customMappings in constructor, OR
|
|
26
|
-
* 2. Configure via ConversationConfig.languageVoiceMapping
|
|
27
|
-
*
|
|
28
|
-
* Example female ElevenLabs voices (update with actual voice IDs):
|
|
29
|
-
* - Rachel: 21m00Tcm4TlvDq8ikWAM (multilingual, female)
|
|
30
|
-
* - Bella: EXAVITQu4vr4xnSDxMaL (English, female)
|
|
31
|
-
* - Elli: MF3mGyEYCl7XYWbV9V6O (English, female)
|
|
32
|
-
*
|
|
33
|
-
* Always prefer female voices unless specifically unavailable for a language.
|
|
34
|
-
*/
|
|
35
|
-
private customMappings;
|
|
36
|
-
constructor(customMappings?: Record<string, VoiceMapping>);
|
|
37
|
-
/**
|
|
38
|
-
* Get voice ID for a language
|
|
39
|
-
* @param languageCode ISO 639-1 language code
|
|
40
|
-
* @returns Voice ID for the language
|
|
41
|
-
*/
|
|
42
|
-
getVoiceForLanguage(languageCode: string): string;
|
|
43
|
-
/**
|
|
44
|
-
* Get voice mapping details
|
|
45
|
-
*/
|
|
46
|
-
getVoiceMapping(languageCode: string): VoiceMapping;
|
|
47
|
-
/**
|
|
48
|
-
* Add or update custom voice mapping
|
|
49
|
-
*/
|
|
50
|
-
setVoiceMapping(languageCode: string, voiceMapping: VoiceMapping): void;
|
|
51
|
-
/**
|
|
52
|
-
* Get all supported languages
|
|
53
|
-
*/
|
|
54
|
-
getSupportedLanguages(): string[];
|
|
55
|
-
/**
|
|
56
|
-
* Check if a language is supported
|
|
57
|
-
*/
|
|
58
|
-
isLanguageSupported(languageCode: string): boolean;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=LanguageVoiceMapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageVoiceMapper.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/LanguageVoiceMapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;CAC1C;AAED,qBAAa,mBAAmB;IAG5B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAwDpC;IAEF;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,cAAc,CAA+B;gBAEzC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAIzD;;;;OAIG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAkBjD;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY;IAOnD;;OAEG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI;IAIvE;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAOjC;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;CAIrD"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Language to Voice ID Mapping
|
|
4
|
-
*
|
|
5
|
-
* Maps ISO 639-1 language codes to ElevenLabs voice IDs.
|
|
6
|
-
* Provides default voices for common languages and supports custom mappings.
|
|
7
|
-
*
|
|
8
|
-
* VOICE PREFERENCE POLICY:
|
|
9
|
-
* - Female voices are preferred by default for better user experience
|
|
10
|
-
* - Only use male voices when female voices are not available for a language
|
|
11
|
-
* - Default voice: Rachel (female, multilingual, supports 29 languages)
|
|
12
|
-
*/
|
|
13
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
-
exports.LanguageVoiceMapper = void 0;
|
|
15
|
-
class LanguageVoiceMapper {
|
|
16
|
-
constructor(customMappings) {
|
|
17
|
-
this.customMappings = customMappings || {};
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Get voice ID for a language
|
|
21
|
-
* @param languageCode ISO 639-1 language code
|
|
22
|
-
* @returns Voice ID for the language
|
|
23
|
-
*/
|
|
24
|
-
getVoiceForLanguage(languageCode) {
|
|
25
|
-
const code = languageCode.toLowerCase();
|
|
26
|
-
// Check custom mappings first
|
|
27
|
-
if (this.customMappings[code]) {
|
|
28
|
-
return this.customMappings[code].voiceId;
|
|
29
|
-
}
|
|
30
|
-
// Check default mappings
|
|
31
|
-
if (LanguageVoiceMapper.DEFAULT_VOICES[code]) {
|
|
32
|
-
return LanguageVoiceMapper.DEFAULT_VOICES[code].voiceId;
|
|
33
|
-
}
|
|
34
|
-
// Fallback to default English voice
|
|
35
|
-
console.warn(`[LanguageVoiceMapper] No voice mapping found for language '${code}'. Using default English voice.`);
|
|
36
|
-
return LanguageVoiceMapper.DEFAULT_VOICES['en'].voiceId;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Get voice mapping details
|
|
40
|
-
*/
|
|
41
|
-
getVoiceMapping(languageCode) {
|
|
42
|
-
const code = languageCode.toLowerCase();
|
|
43
|
-
return this.customMappings[code] ||
|
|
44
|
-
LanguageVoiceMapper.DEFAULT_VOICES[code] ||
|
|
45
|
-
LanguageVoiceMapper.DEFAULT_VOICES['en'];
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Add or update custom voice mapping
|
|
49
|
-
*/
|
|
50
|
-
setVoiceMapping(languageCode, voiceMapping) {
|
|
51
|
-
this.customMappings[languageCode.toLowerCase()] = voiceMapping;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Get all supported languages
|
|
55
|
-
*/
|
|
56
|
-
getSupportedLanguages() {
|
|
57
|
-
return [
|
|
58
|
-
...Object.keys(LanguageVoiceMapper.DEFAULT_VOICES),
|
|
59
|
-
...Object.keys(this.customMappings)
|
|
60
|
-
];
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check if a language is supported
|
|
64
|
-
*/
|
|
65
|
-
isLanguageSupported(languageCode) {
|
|
66
|
-
const code = languageCode.toLowerCase();
|
|
67
|
-
return !!(LanguageVoiceMapper.DEFAULT_VOICES[code] || this.customMappings[code]);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.LanguageVoiceMapper = LanguageVoiceMapper;
|
|
71
|
-
// Default voice mappings for common languages
|
|
72
|
-
// These are example ElevenLabs voice IDs - replace with actual production voices
|
|
73
|
-
LanguageVoiceMapper.DEFAULT_VOICES = {
|
|
74
|
-
'en': {
|
|
75
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM', // Rachel (default English voice)
|
|
76
|
-
name: 'Rachel',
|
|
77
|
-
description: 'Clear American English'
|
|
78
|
-
},
|
|
79
|
-
'ar': {
|
|
80
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM', // Same voice - ElevenLabs supports multilingual
|
|
81
|
-
name: 'Rachel (Arabic)',
|
|
82
|
-
description: 'Multilingual voice for Arabic'
|
|
83
|
-
},
|
|
84
|
-
'fa': {
|
|
85
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM', // Same voice - supports Persian
|
|
86
|
-
name: 'Rachel (Persian)',
|
|
87
|
-
description: 'Multilingual voice for Persian'
|
|
88
|
-
},
|
|
89
|
-
'es': {
|
|
90
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
91
|
-
name: 'Rachel (Spanish)',
|
|
92
|
-
description: 'Multilingual voice for Spanish'
|
|
93
|
-
},
|
|
94
|
-
'fr': {
|
|
95
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
96
|
-
name: 'Rachel (French)',
|
|
97
|
-
description: 'Multilingual voice for French'
|
|
98
|
-
},
|
|
99
|
-
'de': {
|
|
100
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
101
|
-
name: 'Rachel (German)',
|
|
102
|
-
description: 'Multilingual voice for German'
|
|
103
|
-
},
|
|
104
|
-
'it': {
|
|
105
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
106
|
-
name: 'Rachel (Italian)',
|
|
107
|
-
description: 'Multilingual voice for Italian'
|
|
108
|
-
},
|
|
109
|
-
'pt': {
|
|
110
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
111
|
-
name: 'Rachel (Portuguese)',
|
|
112
|
-
description: 'Multilingual voice for Portuguese'
|
|
113
|
-
},
|
|
114
|
-
'zh': {
|
|
115
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
116
|
-
name: 'Rachel (Chinese)',
|
|
117
|
-
description: 'Multilingual voice for Chinese'
|
|
118
|
-
},
|
|
119
|
-
'ja': {
|
|
120
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
121
|
-
name: 'Rachel (Japanese)',
|
|
122
|
-
description: 'Multilingual voice for Japanese'
|
|
123
|
-
},
|
|
124
|
-
'ko': {
|
|
125
|
-
voiceId: '21m00Tcm4TlvDq8ikWAM',
|
|
126
|
-
name: 'Rachel (Korean)',
|
|
127
|
-
description: 'Multilingual voice for Korean'
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
//# sourceMappingURL=LanguageVoiceMapper.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"LanguageVoiceMapper.js","sourceRoot":"","sources":["../../../src/adapters/voice/LanguageVoiceMapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { IVoiceAdapter, VoiceConfig, AudioFormatMetadata } from '../../interfaces';
|
|
2
|
-
/**
|
|
3
|
-
* Vertex Voice Adapter - Gemini 2.0 / 2.5
|
|
4
|
-
* Uses the Generative Language API (Multimodal) for both STT and TTS.
|
|
5
|
-
*/
|
|
6
|
-
export declare class VertexVoiceAdapter implements IVoiceAdapter {
|
|
7
|
-
private apiKey;
|
|
8
|
-
private voiceConfig?;
|
|
9
|
-
private sttModelId;
|
|
10
|
-
private ttsModelId;
|
|
11
|
-
constructor(apiKey: string, voiceConfig?: VoiceConfig);
|
|
12
|
-
/**
|
|
13
|
-
* Speech-to-Text via Gemini 2.0
|
|
14
|
-
* Uses multimodal input to transcribe audio.
|
|
15
|
-
*/
|
|
16
|
-
speechToText(audioBase64: string, config?: VoiceConfig['stt']): Promise<string>;
|
|
17
|
-
/**
|
|
18
|
-
* Text-to-Speech via Gemini 2.5
|
|
19
|
-
* Requests "AUDIO" modality in the response.
|
|
20
|
-
*/
|
|
21
|
-
textToSpeech(text: string, config?: VoiceConfig['tts']): Promise<Uint8Array>;
|
|
22
|
-
private base64ToUint8Array;
|
|
23
|
-
/**
|
|
24
|
-
* Wrap raw PCM data in a WAV container.
|
|
25
|
-
* Gemini output: 24kHz, 1 channel, 16-bit
|
|
26
|
-
*/
|
|
27
|
-
private wrapInWav;
|
|
28
|
-
private writeString;
|
|
29
|
-
getTTSOutputFormat(): AudioFormatMetadata;
|
|
30
|
-
getSTTInputFormat(): AudioFormatMetadata;
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=VertexVoiceAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VertexVoiceAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/voice/VertexVoiceAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAC,CAAc;IAGlC,OAAO,CAAC,UAAU,CAA2B;IAE7C,OAAO,CAAC,UAAU,CAAkC;gBAExC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW;IAKrD;;;OAGG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAoDrF;;;OAGG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAkDlF,OAAO,CAAC,kBAAkB;IAc1B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAuCjB,OAAO,CAAC,WAAW;IAMnB,kBAAkB,IAAI,mBAAmB;IAIzC,iBAAiB,IAAI,mBAAmB;CAG3C"}
|