@loonylabs/tts-middleware 0.1.1 → 0.3.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.
package/README.md CHANGED
@@ -1,201 +1,241 @@
1
- # @loonylabs/tts-middleware
2
-
3
- [![npm version](https://img.shields.io/npm/v/@loonylabs/tts-middleware.svg)](https://www.npmjs.com/package/@loonylabs/tts-middleware)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![Build Status](https://img.shields.io/badge/build-passing-brightgreen)]()
6
- [![Coverage](https://img.shields.io/badge/coverage-94%25-brightgreen)]()
7
-
8
- **Provider-agnostic Text-to-Speech (TTS) middleware infrastructure.**
9
-
10
- Build voice-enabled applications that switch seamlessly between Azure, EdenAI, OpenAI, ElevenLabs, and more without changing your application logic. Includes standardized error handling, accurate character counting for billing, and uniform audio output.
11
-
12
- ---
13
-
14
- ## ✨ Key Features
15
-
16
- - **🔌 Provider Agnostic:** Unified API for all TTS providers. Switch providers by changing one config parameter.
17
- - **☁️ Multi-Provider Support:**
18
- - **Azure Speech Services:** Full support for Neural voices, emotions, and speaking styles.
19
- - **EdenAI:** Access to 6+ providers (Google, OpenAI, Amazon, IBM, etc.) via a single aggregator API.
20
- - **Ready for:** OpenAI, ElevenLabs, Google, Deepgram (interfaces prepared).
21
- - **📝 SSML Abstraction:** Auto-generates provider-specific SSML markup (e.g., for Azure prosody/styles) from simple JSON options.
22
- - **💰 Character Counting:** Precise character counting logic for billing estimation.
23
- - **🛡️ Robust Error Handling:** Standardized error types (`InvalidConfigError`, `QuotaExceededError`, `NetworkError`) across all providers.
24
- - **📐 TypeScript First:** Fully typed request/response objects and provider options.
25
- - **🇪🇺 GDPR/DSGVO Ready:** Configurable region support (e.g., Azure Germany/Europe regions).
26
-
27
- ---
28
-
29
- ## 📦 Installation
30
-
31
- ```bash
32
- npm install @loonylabs/tts-middleware
33
- ```
34
-
35
- ## 🚀 Quick Start
36
-
37
- ### 1. Configure Environment
38
-
39
- Create a `.env` file in your project root:
40
-
41
- ```env
42
- # Default Provider
43
- TTS_DEFAULT_PROVIDER=azure
44
-
45
- # Azure Speech Services
46
- AZURE_SPEECH_KEY=your_azure_key
47
- AZURE_SPEECH_REGION=germanywestcentral
48
-
49
- # EdenAI (Optional)
50
- EDENAI_API_KEY=your_edenai_key
51
- ```
52
-
53
- ### 2. Basic Usage
54
-
55
- ```typescript
56
- import { ttsService, TTSProvider } from '@loonylabs/tts-middleware';
57
- import fs from 'fs';
58
-
59
- async function generateSpeech() {
60
- try {
61
- // Synthesize speech
62
- const response = await ttsService.synthesize({
63
- text: "Hello! This is a test of the LoonyLabs TTS middleware.",
64
- voice: { id: "en-US-JennyNeural" }, // Provider-specific voice ID
65
- audio: {
66
- format: "mp3",
67
- speed: 1.0
68
- }
69
- });
70
-
71
- // Save to file
72
- fs.writeFileSync('output.mp3', response.audio);
73
-
74
- console.log(`Generated audio: ${response.metadata.duration}ms`);
75
- console.log(`Billed characters: ${response.billing.characters}`);
76
-
77
- } catch (error) {
78
- console.error("Synthesis failed:", error);
79
- }
80
- }
81
-
82
- generateSpeech();
83
- ```
84
-
85
- ---
86
-
87
- ## 🛠️ Advanced Usage
88
-
89
- ### Using Provider-Specific Features (e.g., Azure Emotions)
90
-
91
- ```typescript
92
- const response = await ttsService.synthesize({
93
- text: "I am so excited to tell you this!",
94
- provider: TTSProvider.AZURE,
95
- voice: { id: "en-US-JennyNeural" },
96
- providerOptions: {
97
- emotion: "cheerful", // Azure-specific
98
- style: "chat", // Azure-specific
99
- styleDegree: 1.5
100
- }
101
- });
102
- ```
103
-
104
- ### Switching Providers Dynamically
105
-
106
- ```typescript
107
- // Use EdenAI to access Google's TTS engine
108
- const response = await ttsService.synthesize({
109
- text: "Hello from Google via EdenAI",
110
- provider: TTSProvider.EDENAI,
111
- voice: { id: "en-US" },
112
- providerOptions: {
113
- provider: "google" // Select underlying provider
114
- }
115
- });
116
- ```
117
-
118
- ---
119
-
120
- ## 🏗️ Architecture
121
-
122
- The middleware uses a singleton orchestrator pattern to manage provider instances.
123
-
124
- ```mermaid
125
- graph TD
126
- App[Your Application] -->|synthesize()| Service[TTSService]
127
- Service -->|getProvider()| Registry{Provider Registry}
128
-
129
- Registry -->|Select| Azure[AzureProvider]
130
- Registry -->|Select| Eden[EdenAIProvider]
131
-
132
- Azure -->|SSML/SDK| AzureAPI[Azure Speech API]
133
- Eden -->|REST| EdenAPI[EdenAI API]
134
-
135
- EdenAPI -.-> Google[Google TTS]
136
- EdenAPI -.-> OpenAI[OpenAI TTS]
137
- EdenAPI -.-> Amazon[Amazon Polly]
138
- ```
139
-
140
- ---
141
-
142
- ## 🧩 Supported Providers
143
-
144
- | Provider | Status | Key Features |
145
- |----------|--------|--------------|
146
- | **Azure** | ✅ Stable | Neural Voices, Emotions, Styles, SSML, Visemes (planned) |
147
- | **EdenAI** | Stable | Aggregator for Google, OpenAI, Amazon, IBM, Microsoft |
148
- | **OpenAI** | 🔮 Planned | HD Audio, Simple API |
149
- | **ElevenLabs** | 🔮 Planned | Voice Cloning, High Expressivity |
150
- | **Google** | 🔮 Planned | WaveNet Voices, Pitch/Volume control |
151
-
152
- ---
153
-
154
- ## 🔧 Logging Configuration
155
-
156
- The middleware includes a pluggable logger interface. By default, it uses `console`, but you can replace it with any logger (Winston, Pino, etc.).
157
-
158
- ```typescript
159
- import { setLogger, silentLogger, setLogLevel } from '@loonylabs/tts-middleware';
160
-
161
- // Disable all logging (useful for tests)
162
- setLogger(silentLogger);
163
-
164
- // Set minimum log level (debug, info, warn, error)
165
- setLogLevel('warn'); // Only show warnings and errors
166
-
167
- // Use custom logger (e.g., Winston)
168
- setLogger({
169
- info: (msg, meta) => winston.info(msg, meta),
170
- warn: (msg, meta) => winston.warn(msg, meta),
171
- error: (msg, meta) => winston.error(msg, meta),
172
- debug: (msg, meta) => winston.debug(msg, meta),
173
- });
174
- ```
175
-
176
- ---
177
-
178
- ## 🧪 Testing
179
-
180
- The project maintains high code coverage (>94%) using Jest.
181
-
182
- ```bash
183
- # Run unit & integration tests
184
- npm test
185
-
186
- # Run manual verification script (requires .env)
187
- npx ts-node scripts/manual-test-edenai.ts
188
- ```
189
-
190
- ## 🤝 Contributing
191
-
192
- See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
193
-
194
- Contributions are welcome! Please ensure:
195
- 1. **Tests:** Add tests for new features.
196
- 2. **Linting:** Run `npm run lint` before committing.
197
- 3. **Conventions:** Follow the existing project structure.
198
-
199
- ## 📄 License
200
-
1
+ # @loonylabs/tts-middleware
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@loonylabs/tts-middleware.svg)](https://www.npmjs.com/package/@loonylabs/tts-middleware)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+ [![Build Status](https://img.shields.io/badge/build-passing-brightgreen)]()
6
+ [![Coverage](https://img.shields.io/badge/coverage-94%25-brightgreen)]()
7
+
8
+ **Provider-agnostic Text-to-Speech (TTS) middleware infrastructure.**
9
+
10
+ Build voice-enabled applications that switch seamlessly between Azure, EdenAI, OpenAI, ElevenLabs, and more without changing your application logic. Includes standardized error handling, accurate character counting for billing, and uniform audio output.
11
+
12
+ ---
13
+
14
+ ## ✨ Key Features
15
+
16
+ - **🔌 Provider Agnostic:** Unified API for all TTS providers. Switch providers by changing one config parameter.
17
+ - **☁️ Multi-Provider Support:**
18
+ - **Azure Speech Services:** Full support for Neural voices, emotions, and speaking styles.
19
+ - **EdenAI:** Access to 6+ providers (Google, OpenAI, Amazon, IBM, etc.) via a single aggregator API.
20
+ - **Ready for:** OpenAI, ElevenLabs, Google, Deepgram (interfaces prepared).
21
+ - **📝 SSML Abstraction:** Auto-generates provider-specific SSML markup (e.g., for Azure prosody/styles) from simple JSON options.
22
+ - **💰 Character Counting:** Precise character counting logic for billing estimation.
23
+ - **🛡️ Robust Error Handling:** Standardized error types (`InvalidConfigError`, `QuotaExceededError`, `NetworkError`) across all providers.
24
+ - **📐 TypeScript First:** Fully typed request/response objects and provider options.
25
+ - **🇪🇺 GDPR/DSGVO Ready:** Configurable region support (e.g., Azure Germany/Europe regions).
26
+
27
+ ---
28
+
29
+ ## 📦 Installation
30
+
31
+ ```bash
32
+ npm install @loonylabs/tts-middleware
33
+ ```
34
+
35
+ ## 🚀 Quick Start
36
+
37
+ ### 1. Configure Environment
38
+
39
+ Create a `.env` file in your project root:
40
+
41
+ ```env
42
+ # Default Provider
43
+ TTS_DEFAULT_PROVIDER=azure
44
+
45
+ # Azure Speech Services
46
+ AZURE_SPEECH_KEY=your_azure_key
47
+ AZURE_SPEECH_REGION=germanywestcentral
48
+
49
+ # EdenAI (Optional)
50
+ EDENAI_API_KEY=your_edenai_key
51
+ ```
52
+
53
+ ### 2. Basic Usage
54
+
55
+ ```typescript
56
+ import { ttsService, TTSProvider } from '@loonylabs/tts-middleware';
57
+ import fs from 'fs';
58
+
59
+ async function generateSpeech() {
60
+ try {
61
+ // Synthesize speech
62
+ const response = await ttsService.synthesize({
63
+ text: "Hello! This is a test of the LoonyLabs TTS middleware.",
64
+ voice: { id: "en-US-JennyNeural" }, // Provider-specific voice ID
65
+ audio: {
66
+ format: "mp3",
67
+ speed: 1.0
68
+ }
69
+ });
70
+
71
+ // Save to file
72
+ fs.writeFileSync('output.mp3', response.audio);
73
+
74
+ console.log(`Generated audio: ${response.metadata.duration}ms`);
75
+ console.log(`Billed characters: ${response.billing.characters}`);
76
+
77
+ } catch (error) {
78
+ console.error("Synthesis failed:", error);
79
+ }
80
+ }
81
+
82
+ generateSpeech();
83
+ ```
84
+
85
+ ---
86
+
87
+ ## 🛠️ Advanced Usage
88
+
89
+ ### Using Provider-Specific Features (e.g., Azure Emotions)
90
+
91
+ ```typescript
92
+ const response = await ttsService.synthesize({
93
+ text: "I am so excited to tell you this!",
94
+ provider: TTSProvider.AZURE,
95
+ voice: { id: "en-US-JennyNeural" },
96
+ providerOptions: {
97
+ emotion: "cheerful", // Azure-specific
98
+ style: "chat", // Azure-specific
99
+ styleDegree: 1.5
100
+ }
101
+ });
102
+ ```
103
+
104
+ ### Switching Providers Dynamically
105
+
106
+ ```typescript
107
+ // Use EdenAI to access Google's TTS engine
108
+ const response = await ttsService.synthesize({
109
+ text: "Hello from Google via EdenAI",
110
+ provider: TTSProvider.EDENAI,
111
+ voice: { id: "en-US" },
112
+ providerOptions: {
113
+ provider: "google" // Select underlying provider
114
+ }
115
+ });
116
+ ```
117
+
118
+ ### Using OpenAI Voices via EdenAI
119
+
120
+ Access OpenAI's TTS voices (alloy, echo, fable, onyx, nova, shimmer) through EdenAI with specific voice selection:
121
+
122
+ ```typescript
123
+ // German with OpenAI "nova" voice (female)
124
+ const response = await ttsService.synthesize({
125
+ text: "Hallo Welt! Das ist ein Test.",
126
+ provider: TTSProvider.EDENAI,
127
+ voice: { id: "de" }, // Language code
128
+ providerOptions: {
129
+ provider: "openai",
130
+ settings: { openai: "de_nova" } // Voice: {lang}_{voice}
131
+ }
132
+ });
133
+
134
+ // English with OpenAI "onyx" voice (male, deep)
135
+ const response = await ttsService.synthesize({
136
+ text: "Hello World! This is a test.",
137
+ provider: TTSProvider.EDENAI,
138
+ voice: { id: "en" },
139
+ providerOptions: {
140
+ provider: "openai",
141
+ settings: { openai: "en_onyx" }
142
+ }
143
+ });
144
+ ```
145
+
146
+ **Available OpenAI Voices:**
147
+ | Voice | Character |
148
+ |-------|-----------|
149
+ | `alloy` | Neutral |
150
+ | `echo` | Male |
151
+ | `fable` | Expressive |
152
+ | `onyx` | Male, deep |
153
+ | `nova` | Female |
154
+ | `shimmer` | Female, warm |
155
+
156
+ Format: `{language}_{voice}` (e.g., `de_nova`, `en_alloy`, `fr_shimmer`)
157
+
158
+ ---
159
+
160
+ ## 🏗️ Architecture
161
+
162
+ The middleware uses a singleton orchestrator pattern to manage provider instances.
163
+
164
+ ```mermaid
165
+ graph TD
166
+ App[Your Application] -->|synthesize()| Service[TTSService]
167
+ Service -->|getProvider()| Registry{Provider Registry}
168
+
169
+ Registry -->|Select| Azure[AzureProvider]
170
+ Registry -->|Select| Eden[EdenAIProvider]
171
+
172
+ Azure -->|SSML/SDK| AzureAPI[Azure Speech API]
173
+ Eden -->|REST| EdenAPI[EdenAI API]
174
+
175
+ EdenAPI -.-> Google[Google TTS]
176
+ EdenAPI -.-> OpenAI[OpenAI TTS]
177
+ EdenAPI -.-> Amazon[Amazon Polly]
178
+ ```
179
+
180
+ ---
181
+
182
+ ## 🧩 Supported Providers
183
+
184
+ | Provider | Status | Key Features |
185
+ |----------|--------|--------------|
186
+ | **Azure** | Stable | Neural Voices, Emotions, Styles, SSML, Visemes (planned) |
187
+ | **EdenAI** | ✅ Stable | Aggregator for Google, OpenAI, Amazon, IBM, Microsoft |
188
+ | **OpenAI** | 🔮 Planned | HD Audio, Simple API |
189
+ | **ElevenLabs** | 🔮 Planned | Voice Cloning, High Expressivity |
190
+ | **Google** | 🔮 Planned | WaveNet Voices, Pitch/Volume control |
191
+
192
+ ---
193
+
194
+ ## 🔧 Logging Configuration
195
+
196
+ The middleware includes a pluggable logger interface. By default, it uses `console`, but you can replace it with any logger (Winston, Pino, etc.).
197
+
198
+ ```typescript
199
+ import { setLogger, silentLogger, setLogLevel } from '@loonylabs/tts-middleware';
200
+
201
+ // Disable all logging (useful for tests)
202
+ setLogger(silentLogger);
203
+
204
+ // Set minimum log level (debug, info, warn, error)
205
+ setLogLevel('warn'); // Only show warnings and errors
206
+
207
+ // Use custom logger (e.g., Winston)
208
+ setLogger({
209
+ info: (msg, meta) => winston.info(msg, meta),
210
+ warn: (msg, meta) => winston.warn(msg, meta),
211
+ error: (msg, meta) => winston.error(msg, meta),
212
+ debug: (msg, meta) => winston.debug(msg, meta),
213
+ });
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 🧪 Testing
219
+
220
+ The project maintains high code coverage (>94%) using Jest.
221
+
222
+ ```bash
223
+ # Run unit & integration tests
224
+ npm test
225
+
226
+ # Run manual verification script (requires .env)
227
+ npx ts-node scripts/manual-test-edenai.ts
228
+ ```
229
+
230
+ ## 🤝 Contributing
231
+
232
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines.
233
+
234
+ Contributions are welcome! Please ensure:
235
+ 1. **Tests:** Add tests for new features.
236
+ 2. **Linting:** Run `npm run lint` before committing.
237
+ 3. **Conventions:** Follow the existing project structure.
238
+
239
+ ## 📄 License
240
+
201
241
  [MIT](LICENSE) © 2026 LoonyLabs Team
@@ -70,10 +70,19 @@ export declare class EdenAIProvider extends BaseTTSProvider {
70
70
  *
71
71
  * @private
72
72
  * @param text - The input text
73
- * @param voiceId - The voice identifier
73
+ * @param voiceId - The voice identifier (language code like 'en', 'de', 'en-US')
74
74
  * @param request - The synthesis request
75
75
  * @param options - EdenAI-specific options
76
76
  * @returns Request payload for EdenAI API
77
+ *
78
+ * @see https://docs.edenai.co/reference/audio_text_to_speech_create
79
+ *
80
+ * EdenAI API expects:
81
+ * - text: The content to convert
82
+ * - language: Language code (e.g., 'en', 'de', 'en-US')
83
+ * - providers: Provider name at TOP LEVEL (e.g., 'openai', 'google')
84
+ * - settings: Optional model-specific config (e.g., { "model": "Neural" })
85
+ * - option: Optional specific voice name (provider-dependent)
77
86
  */
78
87
  private buildEdenAIRequest;
79
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"edenai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/edenai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,EACL,eAAe,EAEhB,MAAM,qBAAqB,CAAC;AAG7B;;GAEG;AACH,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAqB1C;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;;OASG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA2DvB;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IAgE1B;;;;;;;OAOG;YACW,aAAa;IAmC3B;;;;;;OAMG;YACW,wBAAwB;IA2CtC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;CAWxB"}
1
+ {"version":3,"file":"edenai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/edenai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAElE,OAAO,EACL,eAAe,EAEhB,MAAM,qBAAqB,CAAC;AAG7B;;GAEG;AACH,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,eAAe;IACjD,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC;IAqB1C;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAS5B;;;;;;;;;OASG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC;IA2DvB;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,kBAAkB;IA+C1B;;;;;;;OAOG;YACW,aAAa;IAmC3B;;;;;;OAMG;YACW,wBAAwB;IA2CtC;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,eAAe;CAWxB"}
@@ -131,51 +131,51 @@ class EdenAIProvider extends base_tts_provider_1.BaseTTSProvider {
131
131
  *
132
132
  * @private
133
133
  * @param text - The input text
134
- * @param voiceId - The voice identifier
134
+ * @param voiceId - The voice identifier (language code like 'en', 'de', 'en-US')
135
135
  * @param request - The synthesis request
136
136
  * @param options - EdenAI-specific options
137
137
  * @returns Request payload for EdenAI API
138
+ *
139
+ * @see https://docs.edenai.co/reference/audio_text_to_speech_create
140
+ *
141
+ * EdenAI API expects:
142
+ * - text: The content to convert
143
+ * - language: Language code (e.g., 'en', 'de', 'en-US')
144
+ * - providers: Provider name at TOP LEVEL (e.g., 'openai', 'google')
145
+ * - settings: Optional model-specific config (e.g., { "model": "Neural" })
146
+ * - option: Optional specific voice name (provider-dependent)
138
147
  */
139
- buildEdenAIRequest(text, voiceId, request, options) {
148
+ buildEdenAIRequest(text, voiceId, _request, options) {
140
149
  // Extract language from voice ID (e.g., 'en-US-JennyNeural' -> 'en-US', 'en-US' -> 'en-US')
141
150
  const language = this.extractLanguage(voiceId);
142
- // Base request
151
+ // Base request - minimal required fields
152
+ // See: https://docs.edenai.co/reference/audio_text_to_speech_create
143
153
  const edenaiRequest = {
144
154
  text,
145
155
  language,
146
- option: voiceId, // Use voiceId as option for voice selection
147
- providers: options.provider || 'google', // Top-level providers field
156
+ providers: options.provider || 'google', // Provider at top level
148
157
  };
149
- // Build settings object for provider-specific options
150
- const settings = {};
151
- // Speaking rate (maps to speed)
152
- const speakingRate = options.speaking_rate ?? request.audio?.speed;
153
- if (speakingRate !== undefined) {
154
- settings.speaking_rate = speakingRate;
155
- }
156
- // Speaking pitch
157
- if (options.speaking_pitch !== undefined) {
158
- settings.speaking_pitch = options.speaking_pitch;
159
- }
160
- // Speaking volume
161
- if (options.speaking_volume !== undefined) {
162
- settings.speaking_volume = options.speaking_volume;
163
- }
164
- // Audio format
165
- if (options.audio_format !== undefined) {
166
- settings.audio_format = options.audio_format;
158
+ // Handle 'option' field - EdenAI uses this for voice selection
159
+ // Valid values: 'FEMALE', 'MALE', or provider-specific voice names (NOT Azure-style IDs)
160
+ // Note: Azure-style voice IDs like 'en-US-JennyNeural' are NOT valid for EdenAI
161
+ if (options.option) {
162
+ // Use explicitly provided option (e.g., 'FEMALE', 'MALE')
163
+ edenaiRequest.option = options.option;
167
164
  }
168
- // Sampling rate
169
- if (options.sampling_rate !== undefined) {
170
- settings.sampling_rate = options.sampling_rate;
165
+ else {
166
+ // Default to FEMALE - EdenAI requires this field
167
+ edenaiRequest.option = 'FEMALE';
171
168
  }
172
- // Add providers to settings if provider is explicitly specified
173
- if (options.provider) {
174
- settings.providers = options.provider;
169
+ // Build settings object for provider-specific model/voice selection
170
+ // Format: { "provider_name": "model_or_voice_id" }
171
+ // Example: { "openai": "de_nova" } or { "google": "Neural" }
172
+ if (options.settings) {
173
+ edenaiRequest.settings = options.settings;
175
174
  }
176
- // Add settings to request if any settings were specified
177
- if (Object.keys(settings).length > 0) {
178
- edenaiRequest.settings = settings;
175
+ else if (options.model) {
176
+ // Legacy: if model is specified without settings, build settings object
177
+ const providerName = (options.provider || 'google').split('/')[0];
178
+ edenaiRequest.settings = { [providerName]: options.model };
179
179
  }
180
180
  // Fallback providers (top-level)
181
181
  if (options.fallback_providers && options.fallback_providers.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"edenai-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/edenai-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"edenai-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/edenai-provider.ts"],"names":[],"mappings":"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"}
@@ -315,6 +315,34 @@ export interface EdenAIProviderOptions {
315
315
  * @default Auto-selected by EdenAI based on language/voice
316
316
  */
317
317
  provider?: 'amazon' | 'google' | 'ibm' | 'microsoft' | 'openai' | 'elevenlabs';
318
+ /**
319
+ * Model/quality tier to use (legacy)
320
+ *
321
+ * @description Provider-specific model selection (e.g., 'Neural', 'Standard', 'Wavenet')
322
+ * @deprecated Use `settings` instead for provider-specific voice/model selection
323
+ *
324
+ * @example 'Neural'
325
+ */
326
+ model?: string;
327
+ /**
328
+ * Provider-specific settings for model/voice selection
329
+ *
330
+ * @description Object mapping provider names to their model/voice IDs.
331
+ * This is the correct way to specify OpenAI voices via EdenAI.
332
+ *
333
+ * @example { "openai": "de_nova" }
334
+ * @example { "google": "Neural" }
335
+ */
336
+ settings?: Record<string, string>;
337
+ /**
338
+ * Voice option/gender
339
+ *
340
+ * @description Voice selection for EdenAI. Common values: 'FEMALE', 'MALE', or provider-specific voice IDs.
341
+ * If not specified and voice.id is just a language code, defaults to 'FEMALE'.
342
+ *
343
+ * @example 'FEMALE'
344
+ */
345
+ option?: string;
318
346
  /**
319
347
  * Speaking rate multiplier
320
348
  *
@@ -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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"}
@@ -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;;AA0cH,wCAQC;AAKD,0CASC;AAKD,kDAQC;AAKD,oDAQC;AAKD,8CAQC;AAKD,0CAYC;AAjFD;;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,oBAAoB,CAClC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,kBAAkB,IAAI,OAAO,IAAI,gBAAgB,IAAI,OAAO,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED;;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,eAAe,IAAI,OAAO;YACzB,gBAAgB,IAAI,OAAO;YAC3B,iBAAiB,IAAI,OAAO;YAC5B,oBAAoB,IAAI,OAAO;YAC/B,aAAa,IAAI,OAAO,CAAC,CAC5B,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;;AAyeH,wCAQC;AAKD,0CASC;AAKD,kDAQC;AAKD,oDAQC;AAKD,8CAQC;AAKD,0CAYC;AAjFD;;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,oBAAoB,CAClC,OAAgB;IAEhB,OAAO,CACL,OAAO,OAAO,KAAK,QAAQ;QAC3B,OAAO,KAAK,IAAI;QAChB,CAAC,kBAAkB,IAAI,OAAO,IAAI,gBAAgB,IAAI,OAAO,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED;;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,eAAe,IAAI,OAAO;YACzB,gBAAgB,IAAI,OAAO;YAC3B,iBAAiB,IAAI,OAAO;YAC5B,oBAAoB,IAAI,OAAO;YAC/B,aAAa,IAAI,OAAO,CAAC,CAC5B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,94 +1,102 @@
1
- {
2
- "name": "@loonylabs/tts-middleware",
3
- "version": "0.1.1",
4
- "description": "Provider-agnostic Text-to-Speech middleware for Azure, OpenAI, ElevenLabs, Google Cloud, and Deepgram",
5
- "main": "dist/index.js",
6
- "types": "dist/index.d.ts",
7
- "files": [
8
- "dist",
9
- "LICENSE",
10
- "README.md"
11
- ],
12
- "scripts": {
13
- "build": "tsc",
14
- "test": "jest",
15
- "test:watch": "jest --watch",
16
- "test:coverage": "jest --coverage",
17
- "test:ci": "jest --ci --coverage --maxWorkers=2",
18
- "lint": "eslint src --ext .ts",
19
- "format": "prettier --write \"src/**/*.ts\"",
20
- "clean": "rm -rf dist coverage",
21
- "prepare": "npm run build",
22
- "prepublishOnly": "npm run test:ci && npm run lint"
23
- },
24
- "keywords": [
25
- "tts",
26
- "text-to-speech",
27
- "azure",
28
- "openai",
29
- "elevenlabs",
30
- "google-cloud",
31
- "deepgram",
32
- "middleware",
33
- "provider-agnostic",
34
- "speech-synthesis",
35
- "voice-generation",
36
- "ai-speech"
37
- ],
38
- "author": "LoonyLabs Team",
39
- "license": "MIT",
40
- "repository": {
41
- "type": "git",
42
- "url": "git+https://github.com/loonylabs-dev/tts-middleware.git"
43
- },
44
- "bugs": {
45
- "url": "https://github.com/loonylabs-dev/tts-middleware/issues"
46
- },
47
- "homepage": "https://github.com/loonylabs-dev/tts-middleware#readme",
48
- "dependencies": {
49
- "microsoft-cognitiveservices-speech-sdk": "^1.38.0"
50
- },
51
- "devDependencies": {
52
- "@types/jest": "^29.5.8",
53
- "@types/node": "^20.10.0",
54
- "@typescript-eslint/eslint-plugin": "^6.13.0",
55
- "@typescript-eslint/parser": "^6.13.0",
56
- "eslint": "^8.54.0",
57
- "jest": "^29.7.0",
58
- "prettier": "^3.1.0",
59
- "ts-jest": "^29.1.1",
60
- "typescript": "^5.3.2"
61
- },
62
- "engines": {
63
- "node": ">=18.0.0"
64
- },
65
- "jest": {
66
- "preset": "ts-jest",
67
- "testEnvironment": "node",
68
- "roots": [
69
- "<rootDir>/src"
70
- ],
71
- "testMatch": [
72
- "**/__tests__/**/*.test.ts"
73
- ],
74
- "collectCoverageFrom": [
75
- "src/**/*.ts",
76
- "!src/**/*.d.ts",
77
- "!src/**/index.ts"
78
- ],
79
- "coverageDirectory": "coverage",
80
- "coverageReporters": [
81
- "text",
82
- "html",
83
- "lcov"
84
- ],
85
- "coverageThreshold": {
86
- "global": {
87
- "branches": 85,
88
- "functions": 90,
89
- "lines": 90,
90
- "statements": 90
91
- }
92
- }
93
- }
94
- }
1
+ {
2
+ "name": "@loonylabs/tts-middleware",
3
+ "version": "0.3.0",
4
+ "description": "Provider-agnostic Text-to-Speech middleware for Azure, OpenAI, ElevenLabs, Google Cloud, and Deepgram",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "LICENSE",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "build": "tsc",
14
+ "test": "jest",
15
+ "test:unit": "jest --testPathPattern=tests/unit",
16
+ "test:integration": "jest --testPathPattern=tests/integration",
17
+ "test:e2e": "jest --testPathPattern=tests/e2e --testPathIgnorePatterns=[]",
18
+ "test:watch": "jest --watch",
19
+ "test:coverage": "jest --coverage",
20
+ "test:ci": "jest --ci --coverage --maxWorkers=2",
21
+ "lint": "eslint src --ext .ts",
22
+ "format": "prettier --write \"src/**/*.ts\"",
23
+ "clean": "rm -rf dist coverage",
24
+ "prepare": "npm run build",
25
+ "prepublishOnly": "npm run test:ci && npm run lint"
26
+ },
27
+ "keywords": [
28
+ "tts",
29
+ "text-to-speech",
30
+ "azure",
31
+ "openai",
32
+ "elevenlabs",
33
+ "google-cloud",
34
+ "deepgram",
35
+ "middleware",
36
+ "provider-agnostic",
37
+ "speech-synthesis",
38
+ "voice-generation",
39
+ "ai-speech"
40
+ ],
41
+ "author": "LoonyLabs Team",
42
+ "license": "MIT",
43
+ "repository": {
44
+ "type": "git",
45
+ "url": "git+https://github.com/loonylabs-dev/tts-middleware.git"
46
+ },
47
+ "bugs": {
48
+ "url": "https://github.com/loonylabs-dev/tts-middleware/issues"
49
+ },
50
+ "homepage": "https://github.com/loonylabs-dev/tts-middleware#readme",
51
+ "dependencies": {
52
+ "microsoft-cognitiveservices-speech-sdk": "^1.38.0"
53
+ },
54
+ "devDependencies": {
55
+ "@types/jest": "^29.5.8",
56
+ "@types/node": "^20.10.0",
57
+ "@typescript-eslint/eslint-plugin": "^6.13.0",
58
+ "@typescript-eslint/parser": "^6.13.0",
59
+ "eslint": "^8.54.0",
60
+ "jest": "^29.7.0",
61
+ "prettier": "^3.1.0",
62
+ "ts-jest": "^29.1.1",
63
+ "typescript": "^5.3.2"
64
+ },
65
+ "engines": {
66
+ "node": ">=18.0.0"
67
+ },
68
+ "jest": {
69
+ "preset": "ts-jest",
70
+ "testEnvironment": "node",
71
+ "roots": [
72
+ "<rootDir>/tests",
73
+ "<rootDir>/src"
74
+ ],
75
+ "testMatch": [
76
+ "<rootDir>/tests/**/*.test.ts"
77
+ ],
78
+ "testPathIgnorePatterns": [
79
+ "/node_modules/",
80
+ "<rootDir>/tests/e2e/"
81
+ ],
82
+ "collectCoverageFrom": [
83
+ "src/**/*.ts",
84
+ "!src/**/*.d.ts",
85
+ "!src/**/index.ts"
86
+ ],
87
+ "coverageDirectory": "coverage",
88
+ "coverageReporters": [
89
+ "text",
90
+ "html",
91
+ "lcov"
92
+ ],
93
+ "coverageThreshold": {
94
+ "global": {
95
+ "branches": 85,
96
+ "functions": 90,
97
+ "lines": 90,
98
+ "statements": 90
99
+ }
100
+ }
101
+ }
102
+ }