@loonylabs/tts-middleware 0.8.0 → 0.9.0

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.
Files changed (33) hide show
  1. package/README.md +33 -2
  2. package/dist/middleware/services/tts/index.d.ts +3 -3
  3. package/dist/middleware/services/tts/index.d.ts.map +1 -1
  4. package/dist/middleware/services/tts/index.js +3 -1
  5. package/dist/middleware/services/tts/index.js.map +1 -1
  6. package/dist/middleware/services/tts/providers/gemini-provider.d.ts +142 -0
  7. package/dist/middleware/services/tts/providers/gemini-provider.d.ts.map +1 -0
  8. package/dist/middleware/services/tts/providers/gemini-provider.js +358 -0
  9. package/dist/middleware/services/tts/providers/gemini-provider.js.map +1 -0
  10. package/dist/middleware/services/tts/providers/index.d.ts +1 -0
  11. package/dist/middleware/services/tts/providers/index.d.ts.map +1 -1
  12. package/dist/middleware/services/tts/providers/index.js +3 -1
  13. package/dist/middleware/services/tts/providers/index.js.map +1 -1
  14. package/dist/middleware/services/tts/tts.service.d.ts.map +1 -1
  15. package/dist/middleware/services/tts/tts.service.js +13 -0
  16. package/dist/middleware/services/tts/tts.service.js.map +1 -1
  17. package/dist/middleware/services/tts/types/common.types.d.ts +2 -1
  18. package/dist/middleware/services/tts/types/common.types.d.ts.map +1 -1
  19. package/dist/middleware/services/tts/types/common.types.js +1 -0
  20. package/dist/middleware/services/tts/types/common.types.js.map +1 -1
  21. package/dist/middleware/services/tts/types/index.d.ts +2 -2
  22. package/dist/middleware/services/tts/types/index.d.ts.map +1 -1
  23. package/dist/middleware/services/tts/types/index.js +2 -1
  24. package/dist/middleware/services/tts/types/index.js.map +1 -1
  25. package/dist/middleware/services/tts/types/provider-options.types.d.ts +38 -1
  26. package/dist/middleware/services/tts/types/provider-options.types.d.ts.map +1 -1
  27. package/dist/middleware/services/tts/types/provider-options.types.js +12 -0
  28. package/dist/middleware/services/tts/types/provider-options.types.js.map +1 -1
  29. package/dist/middleware/shared/config/tts.config.d.ts +17 -0
  30. package/dist/middleware/shared/config/tts.config.d.ts.map +1 -1
  31. package/dist/middleware/shared/config/tts.config.js +14 -0
  32. package/dist/middleware/shared/config/tts.config.js.map +1 -1
  33. package/package.json +3 -2
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # TTS Middleware
4
4
 
5
- *Provider-agnostic Text-to-Speech middleware with **GDPR compliance** support. Currently supports Azure Speech Services, EdenAI, Google Cloud TTS, Fish Audio, and Inworld AI. Features EU data residency via Azure and Google Cloud, pluggable logging, character-based billing, and comprehensive error handling.*
5
+ *Provider-agnostic Text-to-Speech middleware with **GDPR compliance** support. Currently supports Azure Speech Services, EdenAI, Google Cloud TTS, Fish Audio, Inworld AI, and Gemini TTS. Features EU data residency via Azure and Google Cloud, pluggable logging, character-based billing, and comprehensive error handling.*
6
6
 
7
7
  <!-- Horizontal Badge Navigation Bar -->
8
8
  [![npm version](https://img.shields.io/npm/v/@loonylabs/tts-middleware.svg?style=for-the-badge&logo=npm&logoColor=white)](https://www.npmjs.com/package/@loonylabs/tts-middleware)
@@ -43,6 +43,7 @@
43
43
  - **Google Cloud TTS**: Neural2, WaveNet, Studio voices with EU data residency
44
44
  - **Fish Audio**: S1 model with 13 languages & 64+ emotions (test/admin only)
45
45
  - **Inworld AI**: TTS 1.5 Max/Mini with 15 languages & voice cloning (test/admin only)
46
+ - **Gemini TTS**: Flash/Pro models with 30 voices, 90+ languages & style prompts (test/admin only)
46
47
  - **Ready for:** OpenAI, ElevenLabs, Deepgram (interfaces prepared)
47
48
  - **GDPR/DSGVO Compliance**: Built-in EU region support for Azure and Google Cloud
48
49
  - **SSML Abstraction**: Auto-generates provider-specific SSML from simple JSON options
@@ -137,6 +138,14 @@ const inworld = await ttsService.synthesize({
137
138
  voice: { id: 'Ashley' },
138
139
  providerOptions: { modelId: 'inworld-tts-1.5-max', temperature: 1.1 },
139
140
  });
141
+
142
+ // Gemini TTS via Vertex AI (test/admin only)
143
+ const gemini = await ttsService.synthesize({
144
+ text: 'Have a wonderful day!',
145
+ provider: TTSProvider.GEMINI,
146
+ voice: { id: 'Kore' },
147
+ providerOptions: { model: 'gemini-2.5-flash-preview-tts', stylePrompt: 'Say cheerfully:' },
148
+ });
140
149
  ```
141
150
 
142
151
  </details>
@@ -240,6 +249,10 @@ FISH_AUDIO_API_KEY=your-fish-audio-api-key
240
249
  # Inworld AI (test/admin only – no EU data residency)
241
250
  INWORLD_API_KEY=your-inworld-api-key
242
251
 
252
+ # Gemini TTS via Vertex AI (test/admin only – no EU data residency)
253
+ # Reuses GOOGLE_APPLICATION_CREDENTIALS and GOOGLE_CLOUD_PROJECT from above
254
+ GEMINI_REGION=us-central1
255
+
243
256
  # Logging
244
257
  TTS_DEBUG=false
245
258
  LOG_LEVEL=info
@@ -304,6 +317,19 @@ LOG_LEVEL=info
304
317
  | **Pricing** | $10/1M chars (Max), $5/1M chars (Mini) |
305
318
  | **EU Compliance** | No data residency guarantees |
306
319
 
320
+ ### Gemini TTS (Test/Admin Only)
321
+
322
+ | Feature | Details |
323
+ |---------|---------|
324
+ | **Models** | Flash (budget, fast) and Pro (premium, natural) |
325
+ | **Languages** | 90+ with auto-detection |
326
+ | **Voices** | 30 multilingual: Kore, Puck, Charon, Zephyr, Fenrir, Sulafat, etc. |
327
+ | **Style Control** | Natural language prompts: "Say cheerfully:", "Read in a spooky whisper:" |
328
+ | **Audio** | MP3 (via ffmpeg), WAV (fallback) |
329
+ | **Auth** | Vertex AI Service Account (reuses `GOOGLE_APPLICATION_CREDENTIALS`) |
330
+ | **Pricing** | $0.50-1.00/M input tokens + $10-20/M audio output tokens |
331
+ | **EU Compliance** | No data residency guarantees |
332
+
307
333
  ## GDPR / Compliance
308
334
 
309
335
  ### Provider Compliance Overview
@@ -315,6 +341,7 @@ LOG_LEVEL=info
315
341
  | **EdenAI** | Yes | Depends* | Depends* | Depends on underlying provider |
316
342
  | **Fish Audio** | No | No | No | Test/admin only |
317
343
  | **Inworld AI** | No | No | No | Test/admin only |
344
+ | **Gemini TTS** | No | No | No | Test/admin only |
318
345
 
319
346
  *EdenAI is an aggregator - compliance depends on the underlying provider.
320
347
 
@@ -503,12 +530,14 @@ graph TD
503
530
  Registry -->|Select| Eden[EdenAIProvider]
504
531
  Registry -->|Select| Fish[FishAudioProvider]
505
532
  Registry -->|Select| Inworld[InworldProvider]
533
+ Registry -->|Select| Gemini[GeminiProvider]
506
534
 
507
535
  Azure -->|SSML/SDK| AzureAPI[Azure Speech API]
508
536
  GCloud -->|gRPC/SDK| GoogleAPI[Google Cloud TTS API]
509
537
  Eden -->|REST| EdenAPI[EdenAI API]
510
538
  Fish -->|REST| FishAPI[Fish Audio API]
511
539
  Inworld -->|REST| InworldAPI[Inworld AI API]
540
+ Gemini -->|REST/OAuth2| GeminiAPI[Vertex AI Gemini API]
512
541
 
513
542
  GoogleAPI -->|EU Endpoint| EU[eu-texttospeech.googleapis.com]
514
543
  EdenAPI -.-> OpenAI[OpenAI TTS]
@@ -518,7 +547,7 @@ graph TD
518
547
  ## Testing
519
548
 
520
549
  ```bash
521
- # Run all tests (555 tests, >90% coverage)
550
+ # Run all tests (540+ tests, >90% coverage)
522
551
  npm test
523
552
 
524
553
  # Unit tests only
@@ -534,6 +563,8 @@ npm run test:coverage
534
563
  npx ts-node scripts/manual-test-edenai.ts
535
564
  npx ts-node scripts/manual-test-google-cloud-tts.ts
536
565
  npx ts-node scripts/manual-test-fish-audio.ts [en] [de]
566
+ npx ts-node scripts/manual-test-inworld.ts [en] [de] [mini]
567
+ npx ts-node scripts/manual-test-gemini.ts [en] [de] [pro] [style]
537
568
 
538
569
  # List available Google Cloud voices
539
570
  npx ts-node scripts/list-google-voices.ts de-DE
@@ -20,9 +20,9 @@
20
20
  */
21
21
  export { TTSService, ttsService } from './tts.service';
22
22
  export { TTSProvider, TTSErrorCode, AudioFormat, } from './types';
23
- export type { AudioOptions, VoiceConfig, TTSSynthesizeRequest, TTSResponse, TTSResponseMetadata, TTSBillingInfo, TTSVoice, TTSVoiceMetadata, AzureProviderOptions, OpenAIProviderOptions, ElevenLabsProviderOptions, GoogleCloudProviderOptions, GoogleCloudTTSProviderOptions, DeepgramProviderOptions, EdenAIProviderOptions, FishAudioProviderOptions, InworldProviderOptions, ProviderOptions, } from './types';
24
- export { isAzureOptions, isOpenAIOptions, isElevenLabsOptions, isGoogleCloudOptions, isGoogleCloudTTSOptions, isDeepgramOptions, isEdenAIOptions, isFishAudioOptions, isInworldOptions, } from './types';
25
- export { BaseTTSProvider, AzureProvider, EdenAIProvider, FishAudioProvider, GoogleCloudTTSProvider, InworldProvider, } from './providers';
23
+ export type { AudioOptions, VoiceConfig, TTSSynthesizeRequest, TTSResponse, TTSResponseMetadata, TTSBillingInfo, TTSVoice, TTSVoiceMetadata, AzureProviderOptions, OpenAIProviderOptions, ElevenLabsProviderOptions, GoogleCloudProviderOptions, GoogleCloudTTSProviderOptions, DeepgramProviderOptions, EdenAIProviderOptions, FishAudioProviderOptions, InworldProviderOptions, GeminiProviderOptions, ProviderOptions, } from './types';
24
+ export { isAzureOptions, isOpenAIOptions, isElevenLabsOptions, isGoogleCloudOptions, isGoogleCloudTTSOptions, isDeepgramOptions, isEdenAIOptions, isFishAudioOptions, isInworldOptions, isGeminiOptions, } from './types';
25
+ export { BaseTTSProvider, AzureProvider, EdenAIProvider, FishAudioProvider, GoogleCloudTTSProvider, InworldProvider, GeminiProvider, } from './providers';
26
26
  export type { GoogleCloudTTSRegion, GoogleCloudTTSConfig, } from './providers';
27
27
  export { TTSError, InvalidConfigError, InvalidVoiceError, QuotaExceededError, ProviderUnavailableError, SynthesisFailedError, NetworkError, } from './providers';
28
28
  export { countCharacters, countCharactersWithoutSSML, validateCharacterCount, countBillableCharacters, estimateAudioDuration, formatCharacterCount, } from './utils';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/tts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/tts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,GACb,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC"}
@@ -20,7 +20,7 @@
20
20
  * @module @loonylabs/tts-middleware
21
21
  */
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.DEFAULT_RETRY_CONFIG = exports.isRetryableError = exports.executeWithRetry = exports.silentLogger = exports.getLogLevel = exports.setLogLevel = exports.resetLogger = exports.getLogger = exports.setLogger = exports.formatCharacterCount = exports.estimateAudioDuration = exports.countBillableCharacters = exports.validateCharacterCount = exports.countCharactersWithoutSSML = exports.countCharacters = exports.NetworkError = exports.SynthesisFailedError = exports.ProviderUnavailableError = exports.QuotaExceededError = exports.InvalidVoiceError = exports.InvalidConfigError = exports.TTSError = exports.InworldProvider = exports.GoogleCloudTTSProvider = exports.FishAudioProvider = exports.EdenAIProvider = exports.AzureProvider = exports.BaseTTSProvider = exports.isInworldOptions = exports.isFishAudioOptions = exports.isEdenAIOptions = exports.isDeepgramOptions = exports.isGoogleCloudTTSOptions = exports.isGoogleCloudOptions = exports.isElevenLabsOptions = exports.isOpenAIOptions = exports.isAzureOptions = exports.TTSErrorCode = exports.TTSProvider = exports.ttsService = exports.TTSService = void 0;
23
+ exports.DEFAULT_RETRY_CONFIG = exports.isRetryableError = exports.executeWithRetry = exports.silentLogger = exports.getLogLevel = exports.setLogLevel = exports.resetLogger = exports.getLogger = exports.setLogger = exports.formatCharacterCount = exports.estimateAudioDuration = exports.countBillableCharacters = exports.validateCharacterCount = exports.countCharactersWithoutSSML = exports.countCharacters = exports.NetworkError = exports.SynthesisFailedError = exports.ProviderUnavailableError = exports.QuotaExceededError = exports.InvalidVoiceError = exports.InvalidConfigError = exports.TTSError = exports.GeminiProvider = exports.InworldProvider = exports.GoogleCloudTTSProvider = exports.FishAudioProvider = exports.EdenAIProvider = exports.AzureProvider = exports.BaseTTSProvider = exports.isGeminiOptions = exports.isInworldOptions = exports.isFishAudioOptions = exports.isEdenAIOptions = exports.isDeepgramOptions = exports.isGoogleCloudTTSOptions = exports.isGoogleCloudOptions = exports.isElevenLabsOptions = exports.isOpenAIOptions = exports.isAzureOptions = exports.TTSErrorCode = exports.TTSProvider = exports.ttsService = exports.TTSService = void 0;
24
24
  // ===== Main Service =====
25
25
  var tts_service_1 = require("./tts.service");
26
26
  Object.defineProperty(exports, "TTSService", { enumerable: true, get: function () { return tts_service_1.TTSService; } });
@@ -39,6 +39,7 @@ Object.defineProperty(exports, "isDeepgramOptions", { enumerable: true, get: fun
39
39
  Object.defineProperty(exports, "isEdenAIOptions", { enumerable: true, get: function () { return types_2.isEdenAIOptions; } });
40
40
  Object.defineProperty(exports, "isFishAudioOptions", { enumerable: true, get: function () { return types_2.isFishAudioOptions; } });
41
41
  Object.defineProperty(exports, "isInworldOptions", { enumerable: true, get: function () { return types_2.isInworldOptions; } });
42
+ Object.defineProperty(exports, "isGeminiOptions", { enumerable: true, get: function () { return types_2.isGeminiOptions; } });
42
43
  // ===== Providers =====
43
44
  var providers_1 = require("./providers");
44
45
  Object.defineProperty(exports, "BaseTTSProvider", { enumerable: true, get: function () { return providers_1.BaseTTSProvider; } });
@@ -47,6 +48,7 @@ Object.defineProperty(exports, "EdenAIProvider", { enumerable: true, get: functi
47
48
  Object.defineProperty(exports, "FishAudioProvider", { enumerable: true, get: function () { return providers_1.FishAudioProvider; } });
48
49
  Object.defineProperty(exports, "GoogleCloudTTSProvider", { enumerable: true, get: function () { return providers_1.GoogleCloudTTSProvider; } });
49
50
  Object.defineProperty(exports, "InworldProvider", { enumerable: true, get: function () { return providers_1.InworldProvider; } });
51
+ Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return providers_1.GeminiProvider; } });
50
52
  // ===== Errors =====
51
53
  var providers_2 = require("./providers");
52
54
  Object.defineProperty(exports, "TTSError", { enumerable: true, get: function () { return providers_2.TTSError; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/services/tts/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,2BAA2B;AAC3B,6CAAuD;AAA9C,yGAAA,UAAU,OAAA;AAAE,yGAAA,UAAU,OAAA;AAE/B,oBAAoB;AACpB,iCAIiB;AAHf,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AAyBd,iCAUiB;AATf,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,4GAAA,mBAAmB,OAAA;AACnB,6GAAA,oBAAoB,OAAA;AACpB,gHAAA,uBAAuB,OAAA;AACvB,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,2GAAA,kBAAkB,OAAA;AAClB,yGAAA,gBAAgB,OAAA;AAGlB,wBAAwB;AACxB,yCAOqB;AANnB,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,mHAAA,sBAAsB,OAAA;AACtB,4GAAA,eAAe,OAAA;AAQjB,qBAAqB;AACrB,yCAQqB;AAPnB,qGAAA,QAAQ,OAAA;AACR,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAClB,qHAAA,wBAAwB,OAAA;AACxB,iHAAA,oBAAoB,OAAA;AACpB,yGAAA,YAAY,OAAA;AAGd,wBAAwB;AACxB,iCAOiB;AANf,wGAAA,eAAe,OAAA;AACf,mHAAA,0BAA0B,OAAA;AAC1B,+GAAA,sBAAsB,OAAA;AACtB,gHAAA,uBAAuB,OAAA;AACvB,8GAAA,qBAAqB,OAAA;AACrB,6GAAA,oBAAoB,OAAA;AAGtB,qBAAqB;AACrB,iCAOiB;AANf,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AAKd,oBAAoB;AACpB,iCAIiB;AAHf,yGAAA,gBAAgB,OAAA;AAChB,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/middleware/services/tts/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,2BAA2B;AAC3B,6CAAuD;AAA9C,yGAAA,UAAU,OAAA;AAAE,yGAAA,UAAU,OAAA;AAE/B,oBAAoB;AACpB,iCAIiB;AAHf,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AA0Bd,iCAWiB;AAVf,uGAAA,cAAc,OAAA;AACd,wGAAA,eAAe,OAAA;AACf,4GAAA,mBAAmB,OAAA;AACnB,6GAAA,oBAAoB,OAAA;AACpB,gHAAA,uBAAuB,OAAA;AACvB,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,2GAAA,kBAAkB,OAAA;AAClB,yGAAA,gBAAgB,OAAA;AAChB,wGAAA,eAAe,OAAA;AAGjB,wBAAwB;AACxB,yCAQqB;AAPnB,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,2GAAA,cAAc,OAAA;AACd,8GAAA,iBAAiB,OAAA;AACjB,mHAAA,sBAAsB,OAAA;AACtB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AAQhB,qBAAqB;AACrB,yCAQqB;AAPnB,qGAAA,QAAQ,OAAA;AACR,+GAAA,kBAAkB,OAAA;AAClB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAClB,qHAAA,wBAAwB,OAAA;AACxB,iHAAA,oBAAoB,OAAA;AACpB,yGAAA,YAAY,OAAA;AAGd,wBAAwB;AACxB,iCAOiB;AANf,wGAAA,eAAe,OAAA;AACf,mHAAA,0BAA0B,OAAA;AAC1B,+GAAA,sBAAsB,OAAA;AACtB,gHAAA,uBAAuB,OAAA;AACvB,8GAAA,qBAAqB,OAAA;AACrB,6GAAA,oBAAoB,OAAA;AAGtB,qBAAqB;AACrB,iCAOiB;AANf,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,oGAAA,WAAW,OAAA;AACX,qGAAA,YAAY,OAAA;AAKd,oBAAoB;AACpB,iCAIiB;AAHf,yGAAA,gBAAgB,OAAA;AAChB,yGAAA,gBAAgB,OAAA;AAChB,6GAAA,oBAAoB,OAAA"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Gemini TTS Provider
3
+ *
4
+ * @description Provider for Google Gemini TTS via Vertex AI, using the generateContent
5
+ * endpoint with responseModalities: ['AUDIO']. Authenticates via Service Account
6
+ * (same as Google Cloud TTS — reuses GOOGLE_APPLICATION_CREDENTIALS).
7
+ *
8
+ * Supports 30 multilingual voices with auto-detect language and natural language
9
+ * style control. Output is raw PCM (24kHz, 16-bit, mono) which is converted to
10
+ * MP3 via ffmpeg or WAV as fallback.
11
+ *
12
+ * Test/Admin only -- no EU data residency guarantees.
13
+ *
14
+ * @see https://cloud.google.com/vertex-ai/generative-ai/docs/text-to-speech
15
+ */
16
+ import type { TTSSynthesizeRequest, TTSResponse } from '../types';
17
+ import { BaseTTSProvider } from './base-tts-provider';
18
+ /**
19
+ * Gemini TTS configuration (Vertex AI)
20
+ */
21
+ export interface GeminiConfig {
22
+ /**
23
+ * Path to Service Account JSON file
24
+ * @env GOOGLE_APPLICATION_CREDENTIALS
25
+ */
26
+ keyFilename?: string;
27
+ /**
28
+ * Google Cloud Project ID
29
+ * @env GOOGLE_CLOUD_PROJECT
30
+ */
31
+ projectId?: string;
32
+ /**
33
+ * Vertex AI region
34
+ * @env GEMINI_REGION
35
+ * @default 'us-central1'
36
+ */
37
+ region?: string;
38
+ }
39
+ /**
40
+ * Gemini TTS provider implementation
41
+ *
42
+ * @description Provides TTS synthesis using Google's Gemini generateContent API
43
+ * via Vertex AI. Authenticates with Service Account OAuth2 (same credentials as
44
+ * Google Cloud TTS). Gemini outputs raw PCM which is converted to MP3 (via ffmpeg)
45
+ * or WAV (pure Node.js fallback).
46
+ *
47
+ * Billing: Token-based ($0.50-1.00/M input + $10-20/M audio output tokens).
48
+ * For billing compatibility, reports character count like all other providers.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const provider = new GeminiProvider();
53
+ * const response = await provider.synthesize(
54
+ * "Hello World",
55
+ * "Kore",
56
+ * {
57
+ * text: "Hello World",
58
+ * voice: { id: "Kore" },
59
+ * audio: { format: "mp3" },
60
+ * providerOptions: {
61
+ * model: "gemini-2.5-flash-preview-tts",
62
+ * stylePrompt: "Say cheerfully:"
63
+ * }
64
+ * }
65
+ * );
66
+ * ```
67
+ */
68
+ export declare class GeminiProvider extends BaseTTSProvider {
69
+ private config;
70
+ private authClient;
71
+ /**
72
+ * Creates a new Gemini TTS provider
73
+ *
74
+ * @param config - Optional configuration (uses env vars if not provided)
75
+ * @throws {InvalidConfigError} If credentials are missing
76
+ */
77
+ constructor(config?: Partial<GeminiConfig>);
78
+ /**
79
+ * Validate Gemini configuration
80
+ *
81
+ * @private
82
+ * @throws {InvalidConfigError} If configuration is invalid
83
+ */
84
+ private validateGeminiConfig;
85
+ /**
86
+ * Get an authenticated access token via Service Account
87
+ *
88
+ * @private
89
+ * @returns OAuth2 access token
90
+ */
91
+ private getAccessToken;
92
+ /**
93
+ * Synthesize text to speech using Gemini TTS
94
+ *
95
+ * @param text - The input text to synthesize
96
+ * @param voiceId - The voice name (e.g. "Kore", "Puck", "Charon")
97
+ * @param request - The full synthesis request with options
98
+ * @returns Promise resolving to the synthesis response
99
+ */
100
+ synthesize(text: string, voiceId: string, request: TTSSynthesizeRequest): Promise<TTSResponse>;
101
+ /**
102
+ * Build Gemini generateContent request payload
103
+ *
104
+ * @private
105
+ */
106
+ private buildRequest;
107
+ /**
108
+ * Call Gemini generateContent API via Vertex AI
109
+ *
110
+ * @private
111
+ * @param requestBody - The request payload
112
+ * @param model - The Gemini model to use
113
+ * @returns Promise resolving to raw PCM audio buffer
114
+ */
115
+ private callAPI;
116
+ /**
117
+ * Convert raw PCM audio to the requested format
118
+ *
119
+ * @private
120
+ * @param pcmBuffer - Raw PCM buffer (24kHz, 16-bit, mono, little-endian)
121
+ * @param requestedFormat - The desired output format ('mp3', 'wav', etc.)
122
+ * @returns The converted audio buffer and actual format used
123
+ */
124
+ private convertPcmAudio;
125
+ /**
126
+ * Convert raw PCM to MP3 using ffmpeg via child_process
127
+ *
128
+ * @private
129
+ * @param pcmBuffer - Raw PCM buffer (24kHz, 16-bit, mono, little-endian)
130
+ * @returns Promise resolving to MP3 buffer
131
+ */
132
+ private pcmToMp3;
133
+ /**
134
+ * Convert raw PCM to WAV by prepending a 44-byte WAV header
135
+ *
136
+ * @private
137
+ * @param pcmBuffer - Raw PCM buffer (24kHz, 16-bit, mono, little-endian)
138
+ * @returns WAV buffer
139
+ */
140
+ private pcmToWav;
141
+ }
142
+ //# sourceMappingURL=gemini-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/gemini-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,EACL,eAAe,EAEhB,MAAM,qBAAqB,CAAC;AAG7B;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAA6E;IAE/F;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAkB1C;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;;OAKG;YACW,cAAc;IAqB5B;;;;;;;OAOG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC;IAsDvB;;;;OAIG;IACH,OAAO,CAAC,YAAY;IA6BpB;;;;;;;OAOG;YACW,OAAO;IA6CrB;;;;;;;OAOG;YACW,eAAe;IA0B7B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAkChB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;CAwBjB"}
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ /**
3
+ * Gemini TTS Provider
4
+ *
5
+ * @description Provider for Google Gemini TTS via Vertex AI, using the generateContent
6
+ * endpoint with responseModalities: ['AUDIO']. Authenticates via Service Account
7
+ * (same as Google Cloud TTS — reuses GOOGLE_APPLICATION_CREDENTIALS).
8
+ *
9
+ * Supports 30 multilingual voices with auto-detect language and natural language
10
+ * style control. Output is raw PCM (24kHz, 16-bit, mono) which is converted to
11
+ * MP3 via ffmpeg or WAV as fallback.
12
+ *
13
+ * Test/Admin only -- no EU data residency guarantees.
14
+ *
15
+ * @see https://cloud.google.com/vertex-ai/generative-ai/docs/text-to-speech
16
+ */
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ var desc = Object.getOwnPropertyDescriptor(m, k);
20
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
+ desc = { enumerable: true, get: function() { return m[k]; } };
22
+ }
23
+ Object.defineProperty(o, k2, desc);
24
+ }) : (function(o, m, k, k2) {
25
+ if (k2 === undefined) k2 = k;
26
+ o[k2] = m[k];
27
+ }));
28
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
30
+ }) : function(o, v) {
31
+ o["default"] = v;
32
+ });
33
+ var __importStar = (this && this.__importStar) || (function () {
34
+ var ownKeys = function(o) {
35
+ ownKeys = Object.getOwnPropertyNames || function (o) {
36
+ var ar = [];
37
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
+ return ar;
39
+ };
40
+ return ownKeys(o);
41
+ };
42
+ return function (mod) {
43
+ if (mod && mod.__esModule) return mod;
44
+ var result = {};
45
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
+ __setModuleDefault(result, mod);
47
+ return result;
48
+ };
49
+ })();
50
+ Object.defineProperty(exports, "__esModule", { value: true });
51
+ exports.GeminiProvider = void 0;
52
+ const child_process_1 = require("child_process");
53
+ const types_1 = require("../types");
54
+ const mp3_duration_utils_1 = require("../utils/mp3-duration.utils");
55
+ const base_tts_provider_1 = require("./base-tts-provider");
56
+ const DEFAULT_MODEL = 'gemini-2.5-flash-preview-tts';
57
+ const DEFAULT_SAMPLE_RATE = 24000;
58
+ const DEFAULT_REGION = 'us-central1';
59
+ /**
60
+ * Gemini TTS provider implementation
61
+ *
62
+ * @description Provides TTS synthesis using Google's Gemini generateContent API
63
+ * via Vertex AI. Authenticates with Service Account OAuth2 (same credentials as
64
+ * Google Cloud TTS). Gemini outputs raw PCM which is converted to MP3 (via ffmpeg)
65
+ * or WAV (pure Node.js fallback).
66
+ *
67
+ * Billing: Token-based ($0.50-1.00/M input + $10-20/M audio output tokens).
68
+ * For billing compatibility, reports character count like all other providers.
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const provider = new GeminiProvider();
73
+ * const response = await provider.synthesize(
74
+ * "Hello World",
75
+ * "Kore",
76
+ * {
77
+ * text: "Hello World",
78
+ * voice: { id: "Kore" },
79
+ * audio: { format: "mp3" },
80
+ * providerOptions: {
81
+ * model: "gemini-2.5-flash-preview-tts",
82
+ * stylePrompt: "Say cheerfully:"
83
+ * }
84
+ * }
85
+ * );
86
+ * ```
87
+ */
88
+ class GeminiProvider extends base_tts_provider_1.BaseTTSProvider {
89
+ /**
90
+ * Creates a new Gemini TTS provider
91
+ *
92
+ * @param config - Optional configuration (uses env vars if not provided)
93
+ * @throws {InvalidConfigError} If credentials are missing
94
+ */
95
+ constructor(config) {
96
+ super(types_1.TTSProvider.GEMINI);
97
+ this.authClient = null;
98
+ this.config = {
99
+ keyFilename: config?.keyFilename || process.env.GOOGLE_APPLICATION_CREDENTIALS,
100
+ projectId: config?.projectId || process.env.GOOGLE_CLOUD_PROJECT,
101
+ region: config?.region || process.env.GEMINI_REGION || DEFAULT_REGION,
102
+ };
103
+ this.validateGeminiConfig();
104
+ this.log('info', 'Gemini TTS provider initialized', {
105
+ hasCredentials: !!this.config.keyFilename,
106
+ projectId: this.config.projectId ? '***' : undefined,
107
+ region: this.config.region,
108
+ });
109
+ }
110
+ /**
111
+ * Validate Gemini configuration
112
+ *
113
+ * @private
114
+ * @throws {InvalidConfigError} If configuration is invalid
115
+ */
116
+ validateGeminiConfig() {
117
+ if (!this.config.keyFilename) {
118
+ throw new base_tts_provider_1.InvalidConfigError(this.providerName, 'Google Cloud credentials are required for Gemini TTS (GOOGLE_APPLICATION_CREDENTIALS)');
119
+ }
120
+ if (!this.config.projectId) {
121
+ throw new base_tts_provider_1.InvalidConfigError(this.providerName, 'Google Cloud Project ID is required for Gemini TTS (GOOGLE_CLOUD_PROJECT)');
122
+ }
123
+ }
124
+ /**
125
+ * Get an authenticated access token via Service Account
126
+ *
127
+ * @private
128
+ * @returns OAuth2 access token
129
+ */
130
+ async getAccessToken() {
131
+ if (!this.authClient) {
132
+ const { GoogleAuth } = await Promise.resolve().then(() => __importStar(require('google-auth-library')));
133
+ const auth = new GoogleAuth({
134
+ keyFilename: this.config.keyFilename,
135
+ scopes: ['https://www.googleapis.com/auth/cloud-platform'],
136
+ });
137
+ this.authClient = await auth.getClient();
138
+ }
139
+ const tokenResponse = await this.authClient.getAccessToken();
140
+ if (!tokenResponse.token) {
141
+ throw new base_tts_provider_1.InvalidConfigError(this.providerName, 'Failed to obtain access token from Service Account');
142
+ }
143
+ return tokenResponse.token;
144
+ }
145
+ /**
146
+ * Synthesize text to speech using Gemini TTS
147
+ *
148
+ * @param text - The input text to synthesize
149
+ * @param voiceId - The voice name (e.g. "Kore", "Puck", "Charon")
150
+ * @param request - The full synthesis request with options
151
+ * @returns Promise resolving to the synthesis response
152
+ */
153
+ async synthesize(text, voiceId, request) {
154
+ this.validateConfig(request);
155
+ const startTime = Date.now();
156
+ const options = (request.providerOptions || {});
157
+ const model = options.model || DEFAULT_MODEL;
158
+ const requestedFormat = request.audio?.format || 'mp3';
159
+ const requestBody = this.buildRequest(text, voiceId, options);
160
+ this.log('debug', 'Synthesizing with Gemini TTS', {
161
+ voiceId,
162
+ model,
163
+ textLength: text.length,
164
+ requestedFormat,
165
+ });
166
+ try {
167
+ const pcmBuffer = await this.callAPI(requestBody, model);
168
+ const { audioBuffer, audioFormat } = await this.convertPcmAudio(pcmBuffer, requestedFormat);
169
+ const duration = Date.now() - startTime;
170
+ this.log('info', 'Synthesis successful', {
171
+ voiceId,
172
+ characters: text.length,
173
+ duration,
174
+ audioSize: audioBuffer.length,
175
+ audioFormat,
176
+ });
177
+ return {
178
+ audio: audioBuffer,
179
+ metadata: {
180
+ provider: this.providerName,
181
+ voice: voiceId,
182
+ duration,
183
+ audioDuration: audioFormat === 'mp3' ? (0, mp3_duration_utils_1.getMp3Duration)(audioBuffer) : undefined,
184
+ audioFormat,
185
+ sampleRate: DEFAULT_SAMPLE_RATE,
186
+ },
187
+ billing: {
188
+ characters: this.countCharacters(text),
189
+ },
190
+ };
191
+ }
192
+ catch (error) {
193
+ this.log('error', 'Synthesis failed', {
194
+ voiceId,
195
+ error: error.message,
196
+ });
197
+ throw this.handleError(error, 'during Gemini TTS API call');
198
+ }
199
+ }
200
+ /**
201
+ * Build Gemini generateContent request payload
202
+ *
203
+ * @private
204
+ */
205
+ buildRequest(text, voiceId, options) {
206
+ const synthesisText = options.stylePrompt
207
+ ? `${options.stylePrompt} ${text}`
208
+ : text;
209
+ return {
210
+ contents: [
211
+ {
212
+ role: 'user',
213
+ parts: [{ text: synthesisText }],
214
+ },
215
+ ],
216
+ generationConfig: {
217
+ responseModalities: ['AUDIO'],
218
+ speechConfig: {
219
+ voiceConfig: {
220
+ prebuiltVoiceConfig: {
221
+ voiceName: voiceId,
222
+ },
223
+ },
224
+ },
225
+ },
226
+ };
227
+ }
228
+ /**
229
+ * Call Gemini generateContent API via Vertex AI
230
+ *
231
+ * @private
232
+ * @param requestBody - The request payload
233
+ * @param model - The Gemini model to use
234
+ * @returns Promise resolving to raw PCM audio buffer
235
+ */
236
+ async callAPI(requestBody, model) {
237
+ const accessToken = await this.getAccessToken();
238
+ const region = this.config.region || DEFAULT_REGION;
239
+ const projectId = this.config.projectId;
240
+ const url = `https://${region}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${region}/publishers/google/models/${model}:generateContent`;
241
+ const response = await fetch(url, {
242
+ method: 'POST',
243
+ headers: {
244
+ 'Authorization': `Bearer ${accessToken}`,
245
+ 'Content-Type': 'application/json',
246
+ },
247
+ body: JSON.stringify(requestBody),
248
+ });
249
+ if (!response.ok) {
250
+ const errorText = await response.text();
251
+ throw new Error(`Gemini API error (${response.status}): ${errorText}`);
252
+ }
253
+ const responseJson = await response.json();
254
+ const inlineData = responseJson.candidates?.[0]?.content?.parts?.[0]?.inlineData;
255
+ if (!inlineData?.data) {
256
+ throw new Error('Gemini API returned no audio data');
257
+ }
258
+ return Buffer.from(inlineData.data, 'base64');
259
+ }
260
+ /**
261
+ * Convert raw PCM audio to the requested format
262
+ *
263
+ * @private
264
+ * @param pcmBuffer - Raw PCM buffer (24kHz, 16-bit, mono, little-endian)
265
+ * @param requestedFormat - The desired output format ('mp3', 'wav', etc.)
266
+ * @returns The converted audio buffer and actual format used
267
+ */
268
+ async convertPcmAudio(pcmBuffer, requestedFormat) {
269
+ if (requestedFormat === 'wav') {
270
+ return {
271
+ audioBuffer: this.pcmToWav(pcmBuffer),
272
+ audioFormat: 'wav',
273
+ };
274
+ }
275
+ // For mp3 (and any other format), try ffmpeg first, fall back to WAV
276
+ try {
277
+ const mp3Buffer = await this.pcmToMp3(pcmBuffer);
278
+ return { audioBuffer: mp3Buffer, audioFormat: 'mp3' };
279
+ }
280
+ catch (error) {
281
+ this.log('warn', 'ffmpeg not available, falling back to WAV output', {
282
+ error: error.message,
283
+ });
284
+ return {
285
+ audioBuffer: this.pcmToWav(pcmBuffer),
286
+ audioFormat: 'wav',
287
+ };
288
+ }
289
+ }
290
+ /**
291
+ * Convert raw PCM to MP3 using ffmpeg via child_process
292
+ *
293
+ * @private
294
+ * @param pcmBuffer - Raw PCM buffer (24kHz, 16-bit, mono, little-endian)
295
+ * @returns Promise resolving to MP3 buffer
296
+ */
297
+ pcmToMp3(pcmBuffer) {
298
+ return new Promise((resolve, reject) => {
299
+ const ffmpeg = (0, child_process_1.spawn)('ffmpeg', [
300
+ '-f', 's16le',
301
+ '-ar', String(DEFAULT_SAMPLE_RATE),
302
+ '-ac', '1',
303
+ '-i', 'pipe:0',
304
+ '-codec:a', 'libmp3lame',
305
+ '-b:a', '128k',
306
+ '-f', 'mp3',
307
+ 'pipe:1',
308
+ ]);
309
+ const chunks = [];
310
+ ffmpeg.stdout.on('data', (chunk) => chunks.push(chunk));
311
+ ffmpeg.stderr.on('data', () => { });
312
+ ffmpeg.on('error', (err) => {
313
+ reject(new Error(`ffmpeg spawn failed: ${err.message}`));
314
+ });
315
+ ffmpeg.on('close', (code) => {
316
+ if (code === 0) {
317
+ resolve(Buffer.concat(chunks));
318
+ }
319
+ else {
320
+ reject(new Error(`ffmpeg exited with code ${code}`));
321
+ }
322
+ });
323
+ ffmpeg.stdin.write(pcmBuffer);
324
+ ffmpeg.stdin.end();
325
+ });
326
+ }
327
+ /**
328
+ * Convert raw PCM to WAV by prepending a 44-byte WAV header
329
+ *
330
+ * @private
331
+ * @param pcmBuffer - Raw PCM buffer (24kHz, 16-bit, mono, little-endian)
332
+ * @returns WAV buffer
333
+ */
334
+ pcmToWav(pcmBuffer) {
335
+ const channels = 1;
336
+ const bitsPerSample = 16;
337
+ const byteRate = DEFAULT_SAMPLE_RATE * channels * (bitsPerSample / 8);
338
+ const blockAlign = channels * (bitsPerSample / 8);
339
+ const dataLength = pcmBuffer.length;
340
+ const header = Buffer.alloc(44);
341
+ header.write('RIFF', 0);
342
+ header.writeUInt32LE(36 + dataLength, 4);
343
+ header.write('WAVE', 8);
344
+ header.write('fmt ', 12);
345
+ header.writeUInt32LE(16, 16); // PCM chunk size
346
+ header.writeUInt16LE(1, 20); // PCM format
347
+ header.writeUInt16LE(channels, 22);
348
+ header.writeUInt32LE(DEFAULT_SAMPLE_RATE, 24);
349
+ header.writeUInt32LE(byteRate, 28);
350
+ header.writeUInt16LE(blockAlign, 32);
351
+ header.writeUInt16LE(bitsPerSample, 34);
352
+ header.write('data', 36);
353
+ header.writeUInt32LE(dataLength, 40);
354
+ return Buffer.concat([header, pcmBuffer]);
355
+ }
356
+ }
357
+ exports.GeminiProvider = GeminiProvider;
358
+ //# sourceMappingURL=gemini-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/gemini-provider.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,5 @@ export { GoogleCloudTTSProvider } from './google-cloud-tts-provider';
10
10
  export type { GoogleCloudTTSRegion, GoogleCloudTTSConfig } from './google-cloud-tts-provider';
11
11
  export { FishAudioProvider } from './fish-audio-provider';
12
12
  export { InworldProvider } from './inworld-provider';
13
+ export { GeminiProvider } from './gemini-provider';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,eAAe,EACf,QAAQ,EACR,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC"}
@@ -5,7 +5,7 @@
5
5
  * Export all provider classes and error types
6
6
  */
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.InworldProvider = exports.FishAudioProvider = exports.GoogleCloudTTSProvider = exports.EdenAIProvider = exports.AzureProvider = exports.NetworkError = exports.SynthesisFailedError = exports.ProviderUnavailableError = exports.QuotaExceededError = exports.InvalidVoiceError = exports.InvalidConfigError = exports.TTSError = exports.BaseTTSProvider = void 0;
8
+ exports.GeminiProvider = exports.InworldProvider = exports.FishAudioProvider = exports.GoogleCloudTTSProvider = exports.EdenAIProvider = exports.AzureProvider = exports.NetworkError = exports.SynthesisFailedError = exports.ProviderUnavailableError = exports.QuotaExceededError = exports.InvalidVoiceError = exports.InvalidConfigError = exports.TTSError = exports.BaseTTSProvider = void 0;
9
9
  // Base provider and errors
10
10
  var base_tts_provider_1 = require("./base-tts-provider");
11
11
  Object.defineProperty(exports, "BaseTTSProvider", { enumerable: true, get: function () { return base_tts_provider_1.BaseTTSProvider; } });
@@ -27,6 +27,8 @@ var fish_audio_provider_1 = require("./fish-audio-provider");
27
27
  Object.defineProperty(exports, "FishAudioProvider", { enumerable: true, get: function () { return fish_audio_provider_1.FishAudioProvider; } });
28
28
  var inworld_provider_1 = require("./inworld-provider");
29
29
  Object.defineProperty(exports, "InworldProvider", { enumerable: true, get: function () { return inworld_provider_1.InworldProvider; } });
30
+ var gemini_provider_1 = require("./gemini-provider");
31
+ Object.defineProperty(exports, "GeminiProvider", { enumerable: true, get: function () { return gemini_provider_1.GeminiProvider; } });
30
32
  // Future provider implementations will be exported here:
31
33
  // export { OpenAIProvider } from './openai-provider';
32
34
  // export { ElevenLabsProvider } from './elevenlabs-provider';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,2BAA2B;AAC3B,yDAS6B;AAR3B,oHAAA,eAAe,OAAA;AACf,6GAAA,QAAQ,OAAA;AACR,uHAAA,kBAAkB,OAAA;AAClB,sHAAA,iBAAiB,OAAA;AACjB,uHAAA,kBAAkB,OAAA;AAClB,6HAAA,wBAAwB,OAAA;AACxB,yHAAA,oBAAoB,OAAA;AACpB,iHAAA,YAAY,OAAA;AAGd,2BAA2B;AAC3B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAE/B,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAExB,yDAAyD;AACzD,sDAAsD;AACtD,8DAA8D;AAC9D,0DAA0D"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,2BAA2B;AAC3B,yDAS6B;AAR3B,oHAAA,eAAe,OAAA;AACf,6GAAA,QAAQ,OAAA;AACR,uHAAA,kBAAkB,OAAA;AAClB,sHAAA,iBAAiB,OAAA;AACjB,uHAAA,kBAAkB,OAAA;AAClB,6HAAA,wBAAwB,OAAA;AACxB,yHAAA,oBAAoB,OAAA;AACpB,iHAAA,YAAY,OAAA;AAGd,2BAA2B;AAC3B,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AACvB,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAE/B,6DAA0D;AAAjD,wHAAA,iBAAiB,OAAA;AAC1B,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AACxB,qDAAmD;AAA1C,iHAAA,cAAc,OAAA;AAEvB,yDAAyD;AACzD,sDAAsD;AACtD,8DAA8D;AAC9D,0DAA0D"}
@@ -1 +1 @@
1
- {"version":3,"file":"tts.service.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/tts/tts.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAYrE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,OAAO,CAAC,SAAS,CAAoC;IAErD;;OAEG;IACH,OAAO,CAAC,eAAe,CAAc;IAErC;;;;;OAKG;;IAiBH;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAsE3B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAoBrB;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAqDrE;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,eAAe;IAa1D;;;;;;;;;;OAUG;IACI,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAgBtD;;;;;;;;;;OAUG;IACI,kBAAkB,IAAI,WAAW;IAIxC;;;;;;;;;;OAUG;IACI,qBAAqB,IAAI,WAAW,EAAE;IAI7C;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO;IAI1D;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG;CAcZ;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
1
+ {"version":3,"file":"tts.service.d.ts","sourceRoot":"","sources":["../../../../src/middleware/services/tts/tts.service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAarE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACH,OAAO,CAAC,SAAS,CAAoC;IAErD;;OAEG;IACH,OAAO,CAAC,eAAe,CAAc;IAErC;;;;;OAKG;;IAiBH;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAkF3B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAqBrB;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAqDrE;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,eAAe;IAa1D;;;;;;;;;;OAUG;IACI,kBAAkB,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAgBtD;;;;;;;;;;OAUG;IACI,kBAAkB,IAAI,WAAW;IAIxC;;;;;;;;;;OAUG;IACI,qBAAqB,IAAI,WAAW,EAAE;IAI7C;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO;IAI1D;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG;CAcZ;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -15,6 +15,7 @@ const edenai_provider_1 = require("./providers/edenai-provider");
15
15
  const google_cloud_tts_provider_1 = require("./providers/google-cloud-tts-provider");
16
16
  const fish_audio_provider_1 = require("./providers/fish-audio-provider");
17
17
  const inworld_provider_1 = require("./providers/inworld-provider");
18
+ const gemini_provider_1 = require("./providers/gemini-provider");
18
19
  const retry_utils_1 = require("./utils/retry.utils");
19
20
  /**
20
21
  * TTS Service - Main orchestrator for TTS operations
@@ -120,6 +121,17 @@ class TTSService {
120
121
  error: error.message,
121
122
  });
122
123
  }
124
+ try {
125
+ // Initialize Gemini TTS provider (test/admin only)
126
+ const geminiProvider = new gemini_provider_1.GeminiProvider();
127
+ this.providers.set(types_1.TTSProvider.GEMINI, geminiProvider);
128
+ this.log('debug', 'Gemini TTS provider initialized');
129
+ }
130
+ catch (error) {
131
+ this.log('warn', 'Failed to initialize Gemini TTS provider', {
132
+ error: error.message,
133
+ });
134
+ }
123
135
  // Future providers will be initialized here:
124
136
  // try {
125
137
  // const openaiProvider = new OpenAIProvider();
@@ -149,6 +161,7 @@ class TTSService {
149
161
  deepgram: types_1.TTSProvider.DEEPGRAM,
150
162
  fish_audio: types_1.TTSProvider.FISH_AUDIO,
151
163
  inworld: types_1.TTSProvider.INWORLD,
164
+ gemini: types_1.TTSProvider.GEMINI,
152
165
  };
153
166
  return providerMap[normalized];
154
167
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tts.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/tts/tts.service.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,mCAAsC;AAEtC,+DAA2D;AAC3D,iEAA6D;AAC7D,qFAA+E;AAC/E,yEAAoE;AACpE,mEAA+D;AAC/D,qDAG6B;AAG7B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAa,UAAU;IAWrB;;;;;OAKG;IACH;QACE,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;QAE3B,iEAAiE;QACjE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,EAAE,CAAC;QAC3E,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,mBAAW,CAAC,KAAK,CAAC;QAEnF,kCAAkC;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE;YAC1C,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE;SACjD,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACK,mBAAmB;QACzB,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;YAC1C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAErD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,qCAAqC,EAAE;gBACtD,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,cAAc,GAAG,IAAI,gCAAc,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,6BAA6B,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,sCAAsC,EAAE;gBACvD,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,cAAc,GAAG,IAAI,kDAAsB,EAAE,CAAC;YACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAEvD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,gDAAgD,EAAE;gBACjE,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,iBAAiB,GAAG,IAAI,uCAAiB,EAAE,CAAC;YAClD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;YAE9D,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,0CAA0C,EAAE;gBAC3D,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,mDAAmD;YACnD,MAAM,eAAe,GAAG,IAAI,kCAAe,EAAE,CAAC;YAC9C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,mBAAW,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;YAEzD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,0CAA0C,EAAE;gBAC3D,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;QACL,CAAC;QAED,6CAA6C;QAC7C,QAAQ;QACR,iDAAiD;QACjD,4DAA4D;QAC5D,oBAAoB;QACpB,yEAAyE;QACzE,IAAI;IACN,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,QAAiB;QACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAgC;YAC/C,KAAK,EAAE,mBAAW,CAAC,KAAK;YACxB,MAAM,EAAE,mBAAW,CAAC,MAAM;YAC1B,MAAM,EAAE,mBAAW,CAAC,MAAM;YAC1B,UAAU,EAAE,mBAAW,CAAC,UAAU;YAClC,MAAM,EAAE,mBAAW,CAAC,MAAM;YAC1B,QAAQ,EAAE,mBAAW,CAAC,QAAQ;YAC9B,UAAU,EAAE,mBAAW,CAAC,UAAU;YAClC,OAAO,EAAE,mBAAW,CAAC,OAAO;SAC7B,CAAC;QAEF,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,UAAU,CAAC,OAA6B;QAC5C,kCAAkC;QAClC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QAE9D,wBAAwB;QACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEhD,wBAAwB;QACxB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE;YACtC,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;SAChC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,YAAY,GAAG,KAAK,IAAI,EAAE;YAC9B,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,UAAU,CACxC,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,KAAK,CAAC,EAAE,EAChB,OAAO,CACR,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW;gBAC1B,CAAC,CAAC,MAAM,IAAA,8BAAgB,EACpB,YAAY,EACZ,WAAW,EACX,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CACvB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAChE;gBACH,CAAC,CAAC,MAAM,YAAY,EAAE,CAAC;YAEzB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,EAAE;gBACtC,QAAQ,EAAE,YAAY;gBACtB,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,UAAU;gBACvC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM;aACjC,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE;gBACpC,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAG,KAAe,CAAC,OAAO;aAChC,CAAC,CAAC;YAEH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,QAAqB;QACtC,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,aAAa,QAAQ,4CAA4C,kBAAkB,EAAE,CACtF,CAAC;QACJ,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;OAUG;IACI,kBAAkB,CAAC,QAAqB;QAC7C,gCAAgC;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,MAAM,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,sDAAsD,kBAAkB,EAAE,CACnH,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,0BAA0B,EAAE;YAC3C,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;OAUG;IACI,kBAAkB;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;OAUG;IACI,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,mBAAmB,CAAC,QAAqB;QAC9C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;;;;;OAMG;IACK,kBAAkB,CACxB,KAA6B;QAE7B,yBAAyB;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,kCAAoB,CAAC;QAC9B,CAAC;QACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,uBAAuB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACK,GAAG,CACT,KAA0C,EAC1C,OAAe,EACf,IAA8B;QAE9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,SAAS,mBAAmB,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;QAEtE,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;CACF;AA7VD,gCA6VC;AAED;;;;;;;;;;;;;;GAcG;AACU,QAAA,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"tts.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/tts/tts.service.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,8 @@ export declare enum TTSProvider {
23
23
  GOOGLE = "google",
24
24
  DEEPGRAM = "deepgram",
25
25
  FISH_AUDIO = "fish_audio",
26
- INWORLD = "inworld"
26
+ INWORLD = "inworld",
27
+ GEMINI = "gemini"
27
28
  }
28
29
  /**
29
30
  * Audio format options supported across providers
@@ -1 +1 @@
1
- {"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/common.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/common.types.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,7 @@ var TTSProvider;
27
27
  TTSProvider["DEEPGRAM"] = "deepgram";
28
28
  TTSProvider["FISH_AUDIO"] = "fish_audio";
29
29
  TTSProvider["INWORLD"] = "inworld";
30
+ TTSProvider["GEMINI"] = "gemini";
30
31
  })(TTSProvider || (exports.TTSProvider = TTSProvider = {}));
31
32
  /**
32
33
  * Error codes for TTS operations
@@ -1 +1 @@
1
- {"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/common.types.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,IAAY,WASX;AATD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,wCAAyB,CAAA;IACzB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,wCAAyB,CAAA;IACzB,kCAAmB,CAAA;AACrB,CAAC,EATW,WAAW,2BAAX,WAAW,QAStB;AAuVD;;GAEG;AACH,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;IACjC,6DAA6C,CAAA;IAC7C,qDAAqC,CAAA;IACrC,+CAA+B,CAAA;IAC/B,+CAA+B,CAAA;AACjC,CAAC,EARW,YAAY,4BAAZ,YAAY,QAQvB"}
1
+ {"version":3,"file":"common.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/common.types.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AAEH;;;;;;;;;GASG;AACH,IAAY,WAUX;AAVD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;IACjB,wCAAyB,CAAA;IACzB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,wCAAyB,CAAA;IACzB,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;AACnB,CAAC,EAVW,WAAW,2BAAX,WAAW,QAUtB;AAuVD;;GAEG;AACH,IAAY,YAQX;AARD,WAAY,YAAY;IACtB,iDAAiC,CAAA;IACjC,+CAA+B,CAAA;IAC/B,iDAAiC,CAAA;IACjC,6DAA6C,CAAA;IAC7C,qDAAqC,CAAA;IACrC,+CAA+B,CAAA;IAC/B,+CAA+B,CAAA;AACjC,CAAC,EARW,YAAY,4BAAZ,YAAY,QAQvB"}
@@ -8,9 +8,9 @@
8
8
  export { TTSProvider, TTSErrorCode, AudioFormat, } from './common.types';
9
9
  export type { AudioOptions, VoiceConfig, TTSSynthesizeRequest, TTSResponse, TTSResponseMetadata, TTSBillingInfo, TTSVoice, TTSVoiceMetadata, } from './common.types';
10
10
  export type { AzureProviderOptions, OpenAIProviderOptions, ElevenLabsProviderOptions, GoogleCloudTTSProviderOptions, GoogleCloudProviderOptions, // deprecated alias
11
- GoogleCloudTTSRegion, DeepgramProviderOptions, EdenAIProviderOptions, FishAudioProviderOptions, InworldProviderOptions, ProviderOptions, } from './provider-options.types';
11
+ GoogleCloudTTSRegion, DeepgramProviderOptions, EdenAIProviderOptions, FishAudioProviderOptions, InworldProviderOptions, GeminiProviderOptions, ProviderOptions, } from './provider-options.types';
12
12
  export { isAzureOptions, isOpenAIOptions, isElevenLabsOptions, isGoogleCloudTTSOptions, isGoogleCloudOptions, // deprecated alias
13
- isDeepgramOptions, isEdenAIOptions, isFishAudioOptions, isInworldOptions, } from './provider-options.types';
13
+ isDeepgramOptions, isEdenAIOptions, isFishAudioOptions, isInworldOptions, isGeminiOptions, } from './provider-options.types';
14
14
  /**
15
15
  * Re-export all types for convenience
16
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,EAAE,mBAAmB;AAC/C,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EAAE,mBAAmB;AACzC,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACR,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,6BAA6B,EAC7B,0BAA0B,EAAE,mBAAmB;AAC/C,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EAAE,mBAAmB;AACzC,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC"}
@@ -21,7 +21,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
21
21
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
22
22
  };
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
- exports.isInworldOptions = exports.isFishAudioOptions = exports.isEdenAIOptions = exports.isDeepgramOptions = exports.isGoogleCloudOptions = exports.isGoogleCloudTTSOptions = exports.isElevenLabsOptions = exports.isOpenAIOptions = exports.isAzureOptions = exports.TTSErrorCode = exports.TTSProvider = void 0;
24
+ exports.isGeminiOptions = exports.isInworldOptions = exports.isFishAudioOptions = exports.isEdenAIOptions = exports.isDeepgramOptions = exports.isGoogleCloudOptions = exports.isGoogleCloudTTSOptions = exports.isElevenLabsOptions = exports.isOpenAIOptions = exports.isAzureOptions = exports.TTSErrorCode = exports.TTSProvider = void 0;
25
25
  // ===== Common Types (Universal) =====
26
26
  var common_types_1 = require("./common.types");
27
27
  Object.defineProperty(exports, "TTSProvider", { enumerable: true, get: function () { return common_types_1.TTSProvider; } });
@@ -36,6 +36,7 @@ Object.defineProperty(exports, "isDeepgramOptions", { enumerable: true, get: fun
36
36
  Object.defineProperty(exports, "isEdenAIOptions", { enumerable: true, get: function () { return provider_options_types_1.isEdenAIOptions; } });
37
37
  Object.defineProperty(exports, "isFishAudioOptions", { enumerable: true, get: function () { return provider_options_types_1.isFishAudioOptions; } });
38
38
  Object.defineProperty(exports, "isInworldOptions", { enumerable: true, get: function () { return provider_options_types_1.isInworldOptions; } });
39
+ Object.defineProperty(exports, "isGeminiOptions", { enumerable: true, get: function () { return provider_options_types_1.isGeminiOptions; } });
39
40
  /**
40
41
  * Re-export all types for convenience
41
42
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,uCAAuC;AACvC,+CAIwB;AAHtB,2GAAA,WAAW,OAAA;AACX,4GAAA,YAAY,OAAA;AA8Bd,mEAUkC;AAThC,wHAAA,cAAc,OAAA;AACd,yHAAA,eAAe,OAAA;AACf,6HAAA,mBAAmB,OAAA;AACnB,iIAAA,uBAAuB,OAAA;AACvB,8HAAA,oBAAoB,OAAA;AACpB,2HAAA,iBAAiB,OAAA;AACjB,yHAAA,eAAe,OAAA;AACf,4HAAA,kBAAkB,OAAA;AAClB,0HAAA,gBAAgB,OAAA;AAGlB;;;;;;;GAOG;AACH,iDAA+B;AAC/B,2DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/index.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;AAEH,uCAAuC;AACvC,+CAIwB;AAHtB,2GAAA,WAAW,OAAA;AACX,4GAAA,YAAY,OAAA;AA+Bd,mEAWkC;AAVhC,wHAAA,cAAc,OAAA;AACd,yHAAA,eAAe,OAAA;AACf,6HAAA,mBAAmB,OAAA;AACnB,iIAAA,uBAAuB,OAAA;AACvB,8HAAA,oBAAoB,OAAA;AACpB,2HAAA,iBAAiB,OAAA;AACjB,yHAAA,eAAe,OAAA;AACf,4HAAA,kBAAkB,OAAA;AAClB,0HAAA,gBAAgB,OAAA;AAChB,yHAAA,eAAe,OAAA;AAGjB;;;;;;;GAOG;AACH,iDAA+B;AAC/B,2DAAyC"}
@@ -509,12 +509,45 @@ export interface InworldProviderOptions {
509
509
  */
510
510
  applyTextNormalization?: 'APPLY_TEXT_NORMALIZATION_UNSPECIFIED' | 'ON' | 'OFF';
511
511
  }
512
+ /**
513
+ * Gemini TTS provider options
514
+ *
515
+ * @provider Gemini TTS API (Google AI)
516
+ * @description Gemini 2.5 TTS models using the generateContent endpoint with audio output.
517
+ * Supports 30 voices with 90+ languages (auto-detect). Style control via natural language prompts.
518
+ * Test/Admin only – no EU data residency guarantees.
519
+ *
520
+ * @see https://ai.google.dev/gemini-api/docs/text-to-speech
521
+ */
522
+ export interface GeminiProviderOptions {
523
+ /**
524
+ * TTS model to use
525
+ *
526
+ * @options
527
+ * - 'gemini-2.5-flash-preview-tts': Budget, fast ($0.50/M input + $10/M audio output tokens)
528
+ * - 'gemini-2.5-pro-preview-tts': Premium, natural ($1.00/M input + $20/M audio output tokens)
529
+ *
530
+ * @default 'gemini-2.5-flash-preview-tts'
531
+ */
532
+ model?: 'gemini-2.5-flash-preview-tts' | 'gemini-2.5-pro-preview-tts';
533
+ /**
534
+ * Natural language style instruction prepended to the text
535
+ *
536
+ * @description Controls voice style/emotion via prompt engineering.
537
+ * The instruction is prepended to the synthesis text, e.g. "Say cheerfully: {text}".
538
+ *
539
+ * @example 'Say in a spooky whisper:'
540
+ * @example 'Read this cheerfully:'
541
+ * @example 'Speak in a calm, professional tone:'
542
+ */
543
+ stylePrompt?: string;
544
+ }
512
545
  /**
513
546
  * Union type of all provider options
514
547
  *
515
548
  * @description Use this type when you need to accept any provider options
516
549
  */
517
- export type ProviderOptions = AzureProviderOptions | OpenAIProviderOptions | ElevenLabsProviderOptions | GoogleCloudTTSProviderOptions | DeepgramProviderOptions | EdenAIProviderOptions | FishAudioProviderOptions | InworldProviderOptions;
550
+ export type ProviderOptions = AzureProviderOptions | OpenAIProviderOptions | ElevenLabsProviderOptions | GoogleCloudTTSProviderOptions | DeepgramProviderOptions | EdenAIProviderOptions | FishAudioProviderOptions | InworldProviderOptions | GeminiProviderOptions;
518
551
  /**
519
552
  * Type guard to check if options are for Azure
520
553
  */
@@ -551,4 +584,8 @@ export declare function isFishAudioOptions(options: unknown): options is FishAud
551
584
  * Type guard to check if options are for Inworld AI
552
585
  */
553
586
  export declare function isInworldOptions(options: unknown): options is InworldProviderOptions;
587
+ /**
588
+ * Type guard to check if options are for Gemini TTS
589
+ */
590
+ export declare function isGeminiOptions(options: unknown): options is GeminiProviderOptions;
554
591
  //# sourceMappingURL=provider-options.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-options.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/provider-options.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-options.types.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/provider-options.types.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ exports.isDeepgramOptions = isDeepgramOptions;
18
18
  exports.isEdenAIOptions = isEdenAIOptions;
19
19
  exports.isFishAudioOptions = isFishAudioOptions;
20
20
  exports.isInworldOptions = isInworldOptions;
21
+ exports.isGeminiOptions = isGeminiOptions;
21
22
  /**
22
23
  * Type guard to check if options are for Azure
23
24
  */
@@ -95,4 +96,15 @@ function isInworldOptions(options) {
95
96
  'timestampType' in options ||
96
97
  'applyTextNormalization' in options));
97
98
  }
99
+ /**
100
+ * Type guard to check if options are for Gemini TTS
101
+ */
102
+ function isGeminiOptions(options) {
103
+ return (typeof options === 'object' &&
104
+ options !== null &&
105
+ ('stylePrompt' in options ||
106
+ ('model' in options &&
107
+ typeof options.model === 'string' &&
108
+ options.model.startsWith('gemini-'))));
109
+ }
98
110
  //# sourceMappingURL=provider-options.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider-options.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/provider-options.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAomBH,wCAQC;AAKD,0CASC;AAKD,kDAQC;AAKD,0DAQC;AAUD,8CAQC;AAKD,0CAWC;AAKD,gDAWC;AAKD,4CAUC;AApHD;;GAEG;AACH,SAAgB,cAAc,CAC5B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,OAAO,IAAI,OAAO;QAClB,OAAQ,OAA8B,CAAC,KAAK,KAAK,QAAQ,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,WAAW,IAAI,OAAO,IAAI,kBAAkB,IAAI,OAAO,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,kBAAkB,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACU,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,UAAU,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,oBAAoB,IAAI,OAAO;YAC9B,aAAa,IAAI,OAAO;YACxB,QAAQ,IAAI,OAAO;YACnB,UAAU,IAAI,OAAO,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,aAAa,IAAI,OAAO;YACvB,MAAM,IAAI,OAAO;YACjB,mBAAmB,IAAI,OAAO;YAC9B,aAAa,IAAI,OAAO,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,SAAS,IAAI,OAAO;YACnB,eAAe,IAAI,OAAO;YAC1B,wBAAwB,IAAI,OAAO,CAAC,CACvC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"provider-options.types.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/types/provider-options.types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAwoBH,wCAQC;AAKD,0CASC;AAKD,kDAQC;AAKD,0DAQC;AAUD,8CAQC;AAKD,0CAWC;AAKD,gDAWC;AAKD,4CAUC;AAKD,0CAWC;AApID;;GAEG;AACH,SAAgB,cAAc,CAC5B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,SAAS,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,OAAO,IAAI,OAAO;QAClB,OAAQ,OAA8B,CAAC,KAAK,KAAK,QAAQ,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CACjC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,WAAW,IAAI,OAAO,IAAI,kBAAkB,IAAI,OAAO,CAAC,CAC1D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,uBAAuB,CACrC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,kBAAkB,IAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,CAAC,CACvD,CAAC;AACJ,CAAC;AAED;;GAEG;AACU,QAAA,oBAAoB,GAAG,uBAAuB,CAAC;AAE5D;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,UAAU,IAAI,OAAO,IAAI,WAAW,IAAI,OAAO,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,oBAAoB,IAAI,OAAO;YAC9B,aAAa,IAAI,OAAO;YACxB,QAAQ,IAAI,OAAO;YACnB,UAAU,IAAI,OAAO,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAChC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,aAAa,IAAI,OAAO;YACvB,MAAM,IAAI,OAAO;YACjB,mBAAmB,IAAI,OAAO;YAC9B,aAAa,IAAI,OAAO,CAAC,CAC5B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,SAAS,IAAI,OAAO;YACnB,eAAe,IAAI,OAAO;YAC1B,wBAAwB,IAAI,OAAO,CAAC,CACvC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAC7B,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,aAAa,IAAI,OAAO;YACvB,CAAC,OAAO,IAAI,OAAO;gBACjB,OAAQ,OAA8B,CAAC,KAAK,KAAK,QAAQ;gBACxD,OAA6B,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CACjE,CAAC;AACJ,CAAC"}
@@ -118,6 +118,19 @@ export interface InworldConfig {
118
118
  */
119
119
  API_KEY: string;
120
120
  }
121
+ /**
122
+ * Gemini TTS Configuration (via Vertex AI)
123
+ * Reuses Google Cloud credentials (GOOGLE_APPLICATION_CREDENTIALS).
124
+ * Test/Admin only – no EU data residency guarantees.
125
+ */
126
+ export interface GeminiConfig {
127
+ /**
128
+ * Vertex AI region for Gemini TTS
129
+ * @env GEMINI_REGION
130
+ * @default 'us-central1'
131
+ */
132
+ REGION: string;
133
+ }
121
134
  /**
122
135
  * TTS Middleware Configuration Object
123
136
  */
@@ -148,6 +161,10 @@ export interface TTSConfig {
148
161
  * Inworld AI configuration (test/admin only)
149
162
  */
150
163
  INWORLD: InworldConfig;
164
+ /**
165
+ * Gemini TTS configuration (test/admin only)
166
+ */
167
+ GEMINI: GeminiConfig;
151
168
  /**
152
169
  * Enable debug logging
153
170
  * @env TTS_DEBUG
@@ -1 +1 @@
1
- {"version":3,"file":"tts.config.d.ts","sourceRoot":"","sources":["../../../../src/middleware/shared/config/tts.config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,IAAI,GACJ,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,GACb,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,EAAE,oBAAoB,CAAC;IAE7B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,oBAAoB,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,eAAe,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,oBAAoB,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAsExC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoGzD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,EAAE,SAA0B,CAAC"}
1
+ {"version":3,"file":"tts.config.d.ts","sourceRoot":"","sources":["../../../../src/middleware/shared/config/tts.config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,GAAG,EAAE,MAAM,CAAC;IAEZ;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;IAEzB;;;;OAIG;IACH,yBAAyB,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAC5B,IAAI,GACJ,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GACd,cAAc,GACd,aAAa,GACb,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;;;OAKG;IACH,MAAM,EAAE,oBAAoB,CAAC;IAE7B;;;;;OAKG;IACH,gBAAgB,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;;;OAIG;IACH,gBAAgB,EAAE,WAAW,CAAC;IAE9B;;OAEG;IACH,KAAK,EAAE,WAAW,CAAC;IAEnB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,oBAAoB,CAAC;IAE7B;;OAEG;IACH,UAAU,EAAE,eAAe,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,YAAY,CAAC;IAErB;;;;OAIG;IACH,KAAK,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,oBAAoB,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7C;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,IAAI,SAAS,CA0ExC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmHzD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,EAAE,SAA0B,CAAC"}
@@ -35,6 +35,7 @@ function getTTSConfig() {
35
35
  const googleCredentialsPath = process.env.GOOGLE_APPLICATION_CREDENTIALS || '';
36
36
  const fishAudioApiKey = process.env.FISH_AUDIO_API_KEY || '';
37
37
  const inworldApiKey = process.env.INWORLD_API_KEY || '';
38
+ const geminiRegion = process.env.GEMINI_REGION || 'us-central1';
38
39
  const defaultProvider = process.env.TTS_DEFAULT_PROVIDER || types_1.TTSProvider.AZURE;
39
40
  const debug = process.env.TTS_DEBUG === 'true';
40
41
  // Determine DSGVO compliance based on Azure region
@@ -83,6 +84,9 @@ function getTTSConfig() {
83
84
  INWORLD: {
84
85
  API_KEY: inworldApiKey,
85
86
  },
87
+ GEMINI: {
88
+ REGION: geminiRegion,
89
+ },
86
90
  DEBUG: debug,
87
91
  MAX_TEXT_LENGTH: 3000,
88
92
  DEFAULT_AUDIO_FORMAT: 'mp3',
@@ -164,6 +168,16 @@ function validateTTSConfig(config) {
164
168
  errors.push('INWORLD_API_KEY is required when using Inworld AI provider (set in environment variable)');
165
169
  }
166
170
  }
171
+ // Validate Gemini TTS configuration (if used as default provider)
172
+ // Gemini reuses Google Cloud credentials (GOOGLE_APPLICATION_CREDENTIALS + GOOGLE_CLOUD_PROJECT)
173
+ if (config.DEFAULT_PROVIDER === types_1.TTSProvider.GEMINI) {
174
+ if (!config.GOOGLE.CREDENTIALS_PATH) {
175
+ errors.push('GOOGLE_APPLICATION_CREDENTIALS is required when using Gemini TTS provider (set in environment variable)');
176
+ }
177
+ if (!config.GOOGLE.PROJECT_ID) {
178
+ errors.push('GOOGLE_CLOUD_PROJECT is required when using Gemini TTS provider (set in environment variable)');
179
+ }
180
+ }
167
181
  // Validate numeric values
168
182
  if (config.MAX_TEXT_LENGTH <= 0) {
169
183
  errors.push('MAX_TEXT_LENGTH must be greater than 0');
@@ -1 +1 @@
1
- {"version":3,"file":"tts.config.js","sourceRoot":"","sources":["../../../../src/middleware/shared/config/tts.config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tts.config.js","sourceRoot":"","sources":["../../../../src/middleware/shared/config/tts.config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@loonylabs/tts-middleware",
3
- "version": "0.8.0",
4
- "description": "Provider-agnostic Text-to-Speech middleware for Azure, OpenAI, ElevenLabs, Google Cloud, Deepgram, Fish Audio, and Inworld AI",
3
+ "version": "0.9.0",
4
+ "description": "Provider-agnostic Text-to-Speech middleware for Azure, OpenAI, ElevenLabs, Google Cloud, Deepgram, Fish Audio, Inworld AI, and Gemini TTS",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "files": [
@@ -33,6 +33,7 @@
33
33
  "google-cloud",
34
34
  "deepgram",
35
35
  "fish-audio",
36
+ "gemini",
36
37
  "middleware",
37
38
  "provider-agnostic",
38
39
  "speech-synthesis",