@loonylabs/tts-middleware 0.1.1

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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +201 -0
  3. package/dist/index.d.ts +22 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +39 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/middleware/services/tts/index.d.ts +30 -0
  8. package/dist/middleware/services/tts/index.d.ts.map +1 -0
  9. package/dist/middleware/services/tts/index.js +69 -0
  10. package/dist/middleware/services/tts/index.js.map +1 -0
  11. package/dist/middleware/services/tts/providers/azure-provider.d.ts +131 -0
  12. package/dist/middleware/services/tts/providers/azure-provider.d.ts.map +1 -0
  13. package/dist/middleware/services/tts/providers/azure-provider.js +375 -0
  14. package/dist/middleware/services/tts/providers/azure-provider.js.map +1 -0
  15. package/dist/middleware/services/tts/providers/base-tts-provider.d.ts +204 -0
  16. package/dist/middleware/services/tts/providers/base-tts-provider.d.ts.map +1 -0
  17. package/dist/middleware/services/tts/providers/base-tts-provider.js +267 -0
  18. package/dist/middleware/services/tts/providers/base-tts-provider.js.map +1 -0
  19. package/dist/middleware/services/tts/providers/edenai-provider.d.ts +112 -0
  20. package/dist/middleware/services/tts/providers/edenai-provider.d.ts.map +1 -0
  21. package/dist/middleware/services/tts/providers/edenai-provider.js +289 -0
  22. package/dist/middleware/services/tts/providers/edenai-provider.js.map +1 -0
  23. package/dist/middleware/services/tts/providers/index.d.ts +9 -0
  24. package/dist/middleware/services/tts/providers/index.d.ts.map +1 -0
  25. package/dist/middleware/services/tts/providers/index.js +29 -0
  26. package/dist/middleware/services/tts/providers/index.js.map +1 -0
  27. package/dist/middleware/services/tts/tts.service.d.ts +175 -0
  28. package/dist/middleware/services/tts/tts.service.d.ts.map +1 -0
  29. package/dist/middleware/services/tts/tts.service.js +287 -0
  30. package/dist/middleware/services/tts/tts.service.js.map +1 -0
  31. package/dist/middleware/services/tts/types/common.types.d.ts +303 -0
  32. package/dist/middleware/services/tts/types/common.types.d.ts.map +1 -0
  33. package/dist/middleware/services/tts/types/common.types.js +42 -0
  34. package/dist/middleware/services/tts/types/common.types.js.map +1 -0
  35. package/dist/middleware/services/tts/types/index.d.ts +22 -0
  36. package/dist/middleware/services/tts/types/index.d.ts.map +1 -0
  37. package/dist/middleware/services/tts/types/index.js +46 -0
  38. package/dist/middleware/services/tts/types/index.js.map +1 -0
  39. package/dist/middleware/services/tts/types/provider-options.types.d.ts +414 -0
  40. package/dist/middleware/services/tts/types/provider-options.types.d.ts.map +1 -0
  41. package/dist/middleware/services/tts/types/provider-options.types.js +71 -0
  42. package/dist/middleware/services/tts/types/provider-options.types.js.map +1 -0
  43. package/dist/middleware/services/tts/utils/character-counter.utils.d.ts +160 -0
  44. package/dist/middleware/services/tts/utils/character-counter.utils.d.ts.map +1 -0
  45. package/dist/middleware/services/tts/utils/character-counter.utils.js +205 -0
  46. package/dist/middleware/services/tts/utils/character-counter.utils.js.map +1 -0
  47. package/dist/middleware/services/tts/utils/index.d.ts +9 -0
  48. package/dist/middleware/services/tts/utils/index.d.ts.map +1 -0
  49. package/dist/middleware/services/tts/utils/index.js +25 -0
  50. package/dist/middleware/services/tts/utils/index.js.map +1 -0
  51. package/dist/middleware/services/tts/utils/logger.utils.d.ts +116 -0
  52. package/dist/middleware/services/tts/utils/logger.utils.d.ts.map +1 -0
  53. package/dist/middleware/services/tts/utils/logger.utils.js +186 -0
  54. package/dist/middleware/services/tts/utils/logger.utils.js.map +1 -0
  55. package/dist/middleware/shared/config/tts.config.d.ts +147 -0
  56. package/dist/middleware/shared/config/tts.config.d.ts.map +1 -0
  57. package/dist/middleware/shared/config/tts.config.js +162 -0
  58. package/dist/middleware/shared/config/tts.config.js.map +1 -0
  59. package/package.json +94 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edenai-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/edenai-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * TTS Providers
3
+ *
4
+ * Export all provider classes and error types
5
+ */
6
+ export { BaseTTSProvider, TTSError, InvalidConfigError, InvalidVoiceError, QuotaExceededError, ProviderUnavailableError, SynthesisFailedError, NetworkError, } from './base-tts-provider';
7
+ export { AzureProvider } from './azure-provider';
8
+ export { EdenAIProvider } from './edenai-provider';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * TTS Providers
4
+ *
5
+ * Export all provider classes and error types
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.EdenAIProvider = exports.AzureProvider = exports.NetworkError = exports.SynthesisFailedError = exports.ProviderUnavailableError = exports.QuotaExceededError = exports.InvalidVoiceError = exports.InvalidConfigError = exports.TTSError = exports.BaseTTSProvider = void 0;
9
+ // Base provider and errors
10
+ var base_tts_provider_1 = require("./base-tts-provider");
11
+ Object.defineProperty(exports, "BaseTTSProvider", { enumerable: true, get: function () { return base_tts_provider_1.BaseTTSProvider; } });
12
+ Object.defineProperty(exports, "TTSError", { enumerable: true, get: function () { return base_tts_provider_1.TTSError; } });
13
+ Object.defineProperty(exports, "InvalidConfigError", { enumerable: true, get: function () { return base_tts_provider_1.InvalidConfigError; } });
14
+ Object.defineProperty(exports, "InvalidVoiceError", { enumerable: true, get: function () { return base_tts_provider_1.InvalidVoiceError; } });
15
+ Object.defineProperty(exports, "QuotaExceededError", { enumerable: true, get: function () { return base_tts_provider_1.QuotaExceededError; } });
16
+ Object.defineProperty(exports, "ProviderUnavailableError", { enumerable: true, get: function () { return base_tts_provider_1.ProviderUnavailableError; } });
17
+ Object.defineProperty(exports, "SynthesisFailedError", { enumerable: true, get: function () { return base_tts_provider_1.SynthesisFailedError; } });
18
+ Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return base_tts_provider_1.NetworkError; } });
19
+ // Provider implementations
20
+ var azure_provider_1 = require("./azure-provider");
21
+ Object.defineProperty(exports, "AzureProvider", { enumerable: true, get: function () { return azure_provider_1.AzureProvider; } });
22
+ var edenai_provider_1 = require("./edenai-provider");
23
+ Object.defineProperty(exports, "EdenAIProvider", { enumerable: true, get: function () { return edenai_provider_1.EdenAIProvider; } });
24
+ // Future provider implementations will be exported here:
25
+ // export { OpenAIProvider } from './openai-provider';
26
+ // export { ElevenLabsProvider } from './elevenlabs-provider';
27
+ // export { GoogleProvider } from './google-provider';
28
+ // export { DeepgramProvider } from './deepgram-provider';
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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;AAEvB,yDAAyD;AACzD,sDAAsD;AACtD,8DAA8D;AAC9D,sDAAsD;AACtD,0DAA0D"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * TTS Service Orchestrator
3
+ *
4
+ * @description Main service class that orchestrates TTS provider access.
5
+ * This is the primary API that consuming applications use.
6
+ *
7
+ * Analogous to LLMService in the LLM middleware.
8
+ */
9
+ import type { TTSSynthesizeRequest, TTSResponse } from './types';
10
+ import { TTSProvider } from './types';
11
+ import type { BaseTTSProvider } from './providers/base-tts-provider';
12
+ /**
13
+ * TTS Service - Main orchestrator for TTS operations
14
+ *
15
+ * @description Singleton service that manages TTS providers and provides
16
+ * a unified API for text-to-speech synthesis across multiple providers.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { ttsService, TTSProvider } from '@loonylabs/tts-middleware';
21
+ *
22
+ * // Using default provider
23
+ * const response = await ttsService.synthesize({
24
+ * text: "Hello World",
25
+ * voice: { id: "en-US-JennyNeural" }
26
+ * });
27
+ *
28
+ * // Using specific provider
29
+ * const response = await ttsService.synthesize({
30
+ * text: "Guten Tag",
31
+ * provider: TTSProvider.AZURE,
32
+ * voice: { id: "de-DE-KatjaNeural" }
33
+ * });
34
+ * ```
35
+ */
36
+ export declare class TTSService {
37
+ /**
38
+ * Provider registry - maps provider enum to provider instance
39
+ */
40
+ private providers;
41
+ /**
42
+ * Default provider to use when none is specified
43
+ */
44
+ private defaultProvider;
45
+ /**
46
+ * Creates a new TTS Service instance
47
+ *
48
+ * @description Initializes the service with all available providers.
49
+ * Providers are lazily initialized - they're only created when first accessed.
50
+ */
51
+ constructor();
52
+ /**
53
+ * Initialize available providers
54
+ *
55
+ * @private
56
+ */
57
+ private initializeProviders;
58
+ /**
59
+ * Parse provider string to TTSProvider enum
60
+ *
61
+ * @private
62
+ * @param provider - Provider string (case-insensitive)
63
+ * @returns TTSProvider enum value or undefined
64
+ */
65
+ private parseProvider;
66
+ /**
67
+ * Synthesize text to speech
68
+ *
69
+ * @param request - The synthesis request
70
+ * @returns Promise resolving to synthesis response with audio buffer
71
+ * @throws {Error} If provider is not available or synthesis fails
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * const response = await ttsService.synthesize({
76
+ * text: "Hello World",
77
+ * voice: { id: "en-US-JennyNeural" },
78
+ * audio: { speed: 1.0, format: "mp3" }
79
+ * });
80
+ *
81
+ * fs.writeFileSync('output.mp3', response.audio);
82
+ * console.log(`Cost: ${response.billing.characters} characters`);
83
+ * ```
84
+ */
85
+ synthesize(request: TTSSynthesizeRequest): Promise<TTSResponse>;
86
+ /**
87
+ * Get a provider instance
88
+ *
89
+ * @param provider - The provider enum
90
+ * @returns The provider instance
91
+ * @throws {Error} If provider is not registered
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const azureProvider = ttsService.getProvider(TTSProvider.AZURE);
96
+ * ```
97
+ */
98
+ getProvider(provider: TTSProvider): BaseTTSProvider;
99
+ /**
100
+ * Set the default provider
101
+ *
102
+ * @param provider - The provider to set as default
103
+ * @throws {Error} If provider is not registered
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * ttsService.setDefaultProvider(TTSProvider.AZURE);
108
+ * ```
109
+ */
110
+ setDefaultProvider(provider: TTSProvider): void;
111
+ /**
112
+ * Get the current default provider
113
+ *
114
+ * @returns The default provider enum
115
+ *
116
+ * @example
117
+ * ```typescript
118
+ * const defaultProvider = ttsService.getDefaultProvider();
119
+ * console.log(`Using ${defaultProvider} by default`);
120
+ * ```
121
+ */
122
+ getDefaultProvider(): TTSProvider;
123
+ /**
124
+ * Get list of available providers
125
+ *
126
+ * @returns Array of available provider enums
127
+ *
128
+ * @example
129
+ * ```typescript
130
+ * const providers = ttsService.getAvailableProviders();
131
+ * console.log(`Available: ${providers.join(', ')}`);
132
+ * ```
133
+ */
134
+ getAvailableProviders(): TTSProvider[];
135
+ /**
136
+ * Check if a provider is available
137
+ *
138
+ * @param provider - The provider to check
139
+ * @returns True if provider is available
140
+ *
141
+ * @example
142
+ * ```typescript
143
+ * if (ttsService.isProviderAvailable(TTSProvider.AZURE)) {
144
+ * // Use Azure
145
+ * }
146
+ * ```
147
+ */
148
+ isProviderAvailable(provider: TTSProvider): boolean;
149
+ /**
150
+ * Log a message
151
+ *
152
+ * @private
153
+ * @param level - Log level
154
+ * @param message - Log message
155
+ * @param meta - Optional metadata
156
+ */
157
+ private log;
158
+ }
159
+ /**
160
+ * Singleton instance of TTS Service
161
+ *
162
+ * @description This is the main export that consuming applications should use.
163
+ *
164
+ * @example
165
+ * ```typescript
166
+ * import { ttsService } from '@loonylabs/tts-middleware';
167
+ *
168
+ * const response = await ttsService.synthesize({
169
+ * text: "Hello World",
170
+ * voice: { id: "en-US-JennyNeural" }
171
+ * });
172
+ * ```
173
+ */
174
+ export declare const ttsService: TTSService;
175
+ //# sourceMappingURL=tts.service.d.ts.map
@@ -0,0 +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;AAIrE;;;;;;;;;;;;;;;;;;;;;;;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;IAkC3B;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAkBrB;;;;;;;;;;;;;;;;;;OAkBG;IACG,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwCrE;;;;;;;;;;;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;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG;CAcZ;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
@@ -0,0 +1,287 @@
1
+ "use strict";
2
+ /**
3
+ * TTS Service Orchestrator
4
+ *
5
+ * @description Main service class that orchestrates TTS provider access.
6
+ * This is the primary API that consuming applications use.
7
+ *
8
+ * Analogous to LLMService in the LLM middleware.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ttsService = exports.TTSService = void 0;
12
+ const types_1 = require("./types");
13
+ const azure_provider_1 = require("./providers/azure-provider");
14
+ const edenai_provider_1 = require("./providers/edenai-provider");
15
+ /**
16
+ * TTS Service - Main orchestrator for TTS operations
17
+ *
18
+ * @description Singleton service that manages TTS providers and provides
19
+ * a unified API for text-to-speech synthesis across multiple providers.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * import { ttsService, TTSProvider } from '@loonylabs/tts-middleware';
24
+ *
25
+ * // Using default provider
26
+ * const response = await ttsService.synthesize({
27
+ * text: "Hello World",
28
+ * voice: { id: "en-US-JennyNeural" }
29
+ * });
30
+ *
31
+ * // Using specific provider
32
+ * const response = await ttsService.synthesize({
33
+ * text: "Guten Tag",
34
+ * provider: TTSProvider.AZURE,
35
+ * voice: { id: "de-DE-KatjaNeural" }
36
+ * });
37
+ * ```
38
+ */
39
+ class TTSService {
40
+ /**
41
+ * Creates a new TTS Service instance
42
+ *
43
+ * @description Initializes the service with all available providers.
44
+ * Providers are lazily initialized - they're only created when first accessed.
45
+ */
46
+ constructor() {
47
+ this.providers = new Map();
48
+ // Set default provider from environment or use Azure as fallback
49
+ const envDefaultProvider = process.env.TTS_DEFAULT_PROVIDER?.toLowerCase();
50
+ this.defaultProvider = this.parseProvider(envDefaultProvider) || types_1.TTSProvider.AZURE;
51
+ // Initialize MVP provider (Azure)
52
+ this.initializeProviders();
53
+ this.log('info', 'TTS Service initialized', {
54
+ defaultProvider: this.defaultProvider,
55
+ availableProviders: this.getAvailableProviders(),
56
+ });
57
+ }
58
+ /**
59
+ * Initialize available providers
60
+ *
61
+ * @private
62
+ */
63
+ initializeProviders() {
64
+ try {
65
+ // Initialize Azure provider (MVP)
66
+ const azureProvider = new azure_provider_1.AzureProvider();
67
+ this.providers.set(types_1.TTSProvider.AZURE, azureProvider);
68
+ this.log('debug', 'Azure provider initialized');
69
+ }
70
+ catch (error) {
71
+ this.log('warn', 'Failed to initialize Azure provider', {
72
+ error: error.message,
73
+ });
74
+ }
75
+ try {
76
+ // Initialize EdenAI provider
77
+ const edenaiProvider = new edenai_provider_1.EdenAIProvider();
78
+ this.providers.set(types_1.TTSProvider.EDENAI, edenaiProvider);
79
+ this.log('debug', 'EdenAI provider initialized');
80
+ }
81
+ catch (error) {
82
+ this.log('warn', 'Failed to initialize EdenAI provider', {
83
+ error: error.message,
84
+ });
85
+ }
86
+ // Future providers will be initialized here:
87
+ // try {
88
+ // const openaiProvider = new OpenAIProvider();
89
+ // this.providers.set(TTSProvider.OPENAI, openaiProvider);
90
+ // } catch (error) {
91
+ // this.log('warn', 'Failed to initialize OpenAI provider', { error });
92
+ // }
93
+ }
94
+ /**
95
+ * Parse provider string to TTSProvider enum
96
+ *
97
+ * @private
98
+ * @param provider - Provider string (case-insensitive)
99
+ * @returns TTSProvider enum value or undefined
100
+ */
101
+ parseProvider(provider) {
102
+ if (!provider) {
103
+ return undefined;
104
+ }
105
+ const normalized = provider.toLowerCase();
106
+ const providerMap = {
107
+ azure: types_1.TTSProvider.AZURE,
108
+ edenai: types_1.TTSProvider.EDENAI,
109
+ openai: types_1.TTSProvider.OPENAI,
110
+ elevenlabs: types_1.TTSProvider.ELEVENLABS,
111
+ google: types_1.TTSProvider.GOOGLE,
112
+ deepgram: types_1.TTSProvider.DEEPGRAM,
113
+ };
114
+ return providerMap[normalized];
115
+ }
116
+ /**
117
+ * Synthesize text to speech
118
+ *
119
+ * @param request - The synthesis request
120
+ * @returns Promise resolving to synthesis response with audio buffer
121
+ * @throws {Error} If provider is not available or synthesis fails
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * const response = await ttsService.synthesize({
126
+ * text: "Hello World",
127
+ * voice: { id: "en-US-JennyNeural" },
128
+ * audio: { speed: 1.0, format: "mp3" }
129
+ * });
130
+ *
131
+ * fs.writeFileSync('output.mp3', response.audio);
132
+ * console.log(`Cost: ${response.billing.characters} characters`);
133
+ * ```
134
+ */
135
+ async synthesize(request) {
136
+ // Determine which provider to use
137
+ const providerEnum = request.provider || this.defaultProvider;
138
+ // Get provider instance
139
+ const provider = this.getProvider(providerEnum);
140
+ // Log synthesis request
141
+ this.log('info', 'Synthesizing speech', {
142
+ provider: providerEnum,
143
+ voiceId: request.voice.id,
144
+ textLength: request.text.length,
145
+ });
146
+ try {
147
+ // Delegate to provider
148
+ const response = await provider.synthesize(request.text, request.voice.id, request);
149
+ this.log('info', 'Synthesis completed', {
150
+ provider: providerEnum,
151
+ characters: response.billing.characters,
152
+ audioSize: response.audio.length,
153
+ });
154
+ return response;
155
+ }
156
+ catch (error) {
157
+ this.log('error', 'Synthesis failed', {
158
+ provider: providerEnum,
159
+ error: error.message,
160
+ });
161
+ // Re-throw with provider context
162
+ throw error;
163
+ }
164
+ }
165
+ /**
166
+ * Get a provider instance
167
+ *
168
+ * @param provider - The provider enum
169
+ * @returns The provider instance
170
+ * @throws {Error} If provider is not registered
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * const azureProvider = ttsService.getProvider(TTSProvider.AZURE);
175
+ * ```
176
+ */
177
+ getProvider(provider) {
178
+ const providerInstance = this.providers.get(provider);
179
+ if (!providerInstance) {
180
+ const availableProviders = this.getAvailableProviders().join(', ');
181
+ throw new Error(`Provider '${provider}' is not available. Available providers: ${availableProviders}`);
182
+ }
183
+ return providerInstance;
184
+ }
185
+ /**
186
+ * Set the default provider
187
+ *
188
+ * @param provider - The provider to set as default
189
+ * @throws {Error} If provider is not registered
190
+ *
191
+ * @example
192
+ * ```typescript
193
+ * ttsService.setDefaultProvider(TTSProvider.AZURE);
194
+ * ```
195
+ */
196
+ setDefaultProvider(provider) {
197
+ // Validate that provider exists
198
+ if (!this.providers.has(provider)) {
199
+ const availableProviders = this.getAvailableProviders().join(', ');
200
+ throw new Error(`Cannot set default provider '${provider}': provider is not available. Available providers: ${availableProviders}`);
201
+ }
202
+ this.defaultProvider = provider;
203
+ this.log('info', 'Default provider changed', {
204
+ newDefault: provider,
205
+ });
206
+ }
207
+ /**
208
+ * Get the current default provider
209
+ *
210
+ * @returns The default provider enum
211
+ *
212
+ * @example
213
+ * ```typescript
214
+ * const defaultProvider = ttsService.getDefaultProvider();
215
+ * console.log(`Using ${defaultProvider} by default`);
216
+ * ```
217
+ */
218
+ getDefaultProvider() {
219
+ return this.defaultProvider;
220
+ }
221
+ /**
222
+ * Get list of available providers
223
+ *
224
+ * @returns Array of available provider enums
225
+ *
226
+ * @example
227
+ * ```typescript
228
+ * const providers = ttsService.getAvailableProviders();
229
+ * console.log(`Available: ${providers.join(', ')}`);
230
+ * ```
231
+ */
232
+ getAvailableProviders() {
233
+ return Array.from(this.providers.keys());
234
+ }
235
+ /**
236
+ * Check if a provider is available
237
+ *
238
+ * @param provider - The provider to check
239
+ * @returns True if provider is available
240
+ *
241
+ * @example
242
+ * ```typescript
243
+ * if (ttsService.isProviderAvailable(TTSProvider.AZURE)) {
244
+ * // Use Azure
245
+ * }
246
+ * ```
247
+ */
248
+ isProviderAvailable(provider) {
249
+ return this.providers.has(provider);
250
+ }
251
+ /**
252
+ * Log a message
253
+ *
254
+ * @private
255
+ * @param level - Log level
256
+ * @param message - Log message
257
+ * @param meta - Optional metadata
258
+ */
259
+ log(level, message, meta) {
260
+ const timestamp = new Date().toISOString();
261
+ const prefix = `[${timestamp}] [TTSService] [${level.toUpperCase()}]`;
262
+ if (meta) {
263
+ console[level](prefix, message, meta);
264
+ }
265
+ else {
266
+ console[level](prefix, message);
267
+ }
268
+ }
269
+ }
270
+ exports.TTSService = TTSService;
271
+ /**
272
+ * Singleton instance of TTS Service
273
+ *
274
+ * @description This is the main export that consuming applications should use.
275
+ *
276
+ * @example
277
+ * ```typescript
278
+ * import { ttsService } from '@loonylabs/tts-middleware';
279
+ *
280
+ * const response = await ttsService.synthesize({
281
+ * text: "Hello World",
282
+ * voice: { id: "en-US-JennyNeural" }
283
+ * });
284
+ * ```
285
+ */
286
+ exports.ttsService = new TTSService();
287
+ //# sourceMappingURL=tts.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tts.service.js","sourceRoot":"","sources":["../../../../src/middleware/services/tts/tts.service.ts"],"names":[],"mappings":"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"}