@loonylabs/tts-middleware 0.12.0 → 0.12.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.
- package/README.md +46 -0
- package/dist/middleware/services/tts/providers/base-tts-provider.d.ts +44 -0
- package/dist/middleware/services/tts/providers/base-tts-provider.d.ts.map +1 -1
- package/dist/middleware/services/tts/providers/base-tts-provider.js +49 -0
- package/dist/middleware/services/tts/providers/base-tts-provider.js.map +1 -1
- package/dist/middleware/services/tts/providers/vertex-ai-tts-provider.d.ts +13 -0
- package/dist/middleware/services/tts/providers/vertex-ai-tts-provider.d.ts.map +1 -1
- package/dist/middleware/services/tts/providers/vertex-ai-tts-provider.js +186 -17
- package/dist/middleware/services/tts/providers/vertex-ai-tts-provider.js.map +1 -1
- package/dist/middleware/services/tts/utils/index.d.ts +2 -0
- package/dist/middleware/services/tts/utils/index.d.ts.map +1 -1
- package/dist/middleware/services/tts/utils/index.js +5 -1
- package/dist/middleware/services/tts/utils/index.js.map +1 -1
- package/dist/middleware/services/tts/utils/request-logger.utils.d.ts +96 -0
- package/dist/middleware/services/tts/utils/request-logger.utils.d.ts.map +1 -0
- package/dist/middleware/services/tts/utils/request-logger.utils.js +194 -0
- package/dist/middleware/services/tts/utils/request-logger.utils.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -432,6 +432,11 @@ the correct request shape (`prebuiltVoiceConfig` vs `multiSpeakerVoiceConfig`).
|
|
|
432
432
|
Segments with >2 distinct speakers throw `InvalidConfigError` with guidance
|
|
433
433
|
to split the segment.
|
|
434
434
|
|
|
435
|
+
**Debugging dialog requests:** Set `DEBUG_TTS_REQUESTS=true` to have one
|
|
436
|
+
Markdown file written per segment under `logs/tts/requests/`, capturing the
|
|
437
|
+
exact request body, selected shape, speaker→voice mapping, HTTP status, and
|
|
438
|
+
timing. See [Request Debug Logging](#advanced-features) below.
|
|
439
|
+
|
|
435
440
|
## GDPR / Compliance
|
|
436
441
|
|
|
437
442
|
### Provider Compliance Overview
|
|
@@ -529,6 +534,47 @@ setLogLevel('warn');
|
|
|
529
534
|
|
|
530
535
|
</details>
|
|
531
536
|
|
|
537
|
+
<details>
|
|
538
|
+
<summary><strong>Request Debug Logging</strong></summary>
|
|
539
|
+
|
|
540
|
+
For debugging, you can have the middleware write one Markdown file per upstream
|
|
541
|
+
TTS API call (e.g. per Google Vertex AI `generateContent` invocation). This is
|
|
542
|
+
especially useful for the dialog mode: each segment is one Google request, and
|
|
543
|
+
the log shows the exact request body that was sent — so you can verify the
|
|
544
|
+
auto-selected `prebuiltVoiceConfig` vs `multiSpeakerVoiceConfig` shape,
|
|
545
|
+
speaker→voice mapping, style prompt, and temperature.
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
# Enable per-request debug logs
|
|
549
|
+
export DEBUG_TTS_REQUESTS=true
|
|
550
|
+
|
|
551
|
+
# Optional: override log directory (default: <cwd>/logs/tts/requests)
|
|
552
|
+
export TTS_REQUEST_LOG_DIR=/tmp/my-tts-logs
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
Each call produces a file named like:
|
|
556
|
+
|
|
557
|
+
```
|
|
558
|
+
2026-04-17T14-30-00-000Z_vertex-ai_dialog-segment_seg0_multi-speaker.md
|
|
559
|
+
```
|
|
560
|
+
|
|
561
|
+
Contents include: timestamp, model, region, endpoint URL, HTTP status, duration,
|
|
562
|
+
dialog context (segment index, request shape, speaker→voice mapping), the full
|
|
563
|
+
request body (no truncation), response metadata (mime type, audio byte count,
|
|
564
|
+
candidate count), and any error body.
|
|
565
|
+
|
|
566
|
+
**What is *not* logged:** the audio bytes themselves — only metadata — so logs
|
|
567
|
+
stay small and safe to inspect.
|
|
568
|
+
|
|
569
|
+
When the env var is unset (or not truthy), logging is a complete no-op with no
|
|
570
|
+
runtime cost.
|
|
571
|
+
|
|
572
|
+
The logging hook lives on `BaseTTSProvider.logRequest()`, so any provider can
|
|
573
|
+
opt in. Currently wired up for `VertexAITTSProvider` (`synthesize()` and
|
|
574
|
+
`synthesizeDialog()`); other providers log on demand when they add the hook.
|
|
575
|
+
|
|
576
|
+
</details>
|
|
577
|
+
|
|
532
578
|
<details>
|
|
533
579
|
<summary><strong>Retry with Exponential Backoff</strong></summary>
|
|
534
580
|
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @abstract
|
|
8
8
|
*/
|
|
9
9
|
import type { TTSProvider, TTSSynthesizeRequest, TTSResponse, TTSErrorCode } from '../types';
|
|
10
|
+
import { type TTSRequestLogEntry } from '../utils/request-logger.utils';
|
|
10
11
|
/**
|
|
11
12
|
* Base error class for all TTS errors
|
|
12
13
|
*/
|
|
@@ -213,5 +214,48 @@ export declare abstract class BaseTTSProvider {
|
|
|
213
214
|
* ```
|
|
214
215
|
*/
|
|
215
216
|
protected log(level: 'info' | 'warn' | 'error' | 'debug', message: string, meta?: Record<string, unknown>): void;
|
|
217
|
+
/**
|
|
218
|
+
* Check if per-request debug logging is enabled.
|
|
219
|
+
*
|
|
220
|
+
* @protected
|
|
221
|
+
* @returns true when `DEBUG_TTS_REQUESTS` is truthy in the environment.
|
|
222
|
+
*
|
|
223
|
+
* @description Providers can gate expensive body capture/cloning behind this
|
|
224
|
+
* flag to avoid overhead when logging is disabled.
|
|
225
|
+
*/
|
|
226
|
+
protected isRequestLoggingEnabled(): boolean;
|
|
227
|
+
/**
|
|
228
|
+
* Write a debug Markdown log file for a single upstream API call.
|
|
229
|
+
*
|
|
230
|
+
* @protected
|
|
231
|
+
* @param entry - Log entry data. The provider name is injected automatically
|
|
232
|
+
* if omitted. No-op when `DEBUG_TTS_REQUESTS` is disabled.
|
|
233
|
+
*
|
|
234
|
+
* @description Provider-agnostic request logger. Each call produces exactly
|
|
235
|
+
* one `.md` file under `<cwd>/logs/tts/requests/` (override via
|
|
236
|
+
* `TTS_REQUEST_LOG_DIR`). Use this to capture exactly what was sent to and
|
|
237
|
+
* received from an upstream TTS API (Vertex AI, Azure, etc.).
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```typescript
|
|
241
|
+
* this.logRequest({
|
|
242
|
+
* kind: 'dialog-segment',
|
|
243
|
+
* timestamp: new Date().toISOString(),
|
|
244
|
+
* model,
|
|
245
|
+
* region,
|
|
246
|
+
* endpointUrl: url,
|
|
247
|
+
* segmentIndex: i,
|
|
248
|
+
* speakers: usedSpeakers,
|
|
249
|
+
* requestShape: 'multi-speaker',
|
|
250
|
+
* requestBody,
|
|
251
|
+
* httpStatus: response.status,
|
|
252
|
+
* durationMs: Date.now() - startedAt,
|
|
253
|
+
* responseBody: { audioBytes: buf.length, mimeType: 'audio/pcm' },
|
|
254
|
+
* });
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
protected logRequest(entry: Omit<TTSRequestLogEntry, 'provider'> & {
|
|
258
|
+
provider?: string;
|
|
259
|
+
}): void;
|
|
216
260
|
}
|
|
217
261
|
//# sourceMappingURL=base-tts-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tts-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/base-tts-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,YAAY,EACb,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"base-tts-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/base-tts-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.BaseTTSProvider = exports.PayloadTooLargeError = exports.NetworkError = exports.SynthesisFailedError = exports.ProviderUnavailableError = exports.QuotaExceededError = exports.InvalidVoiceError = exports.InvalidConfigError = exports.TTSError = void 0;
|
|
12
12
|
const logger_utils_1 = require("../utils/logger.utils");
|
|
13
|
+
const request_logger_utils_1 = require("../utils/request-logger.utils");
|
|
13
14
|
/**
|
|
14
15
|
* Base error class for all TTS errors
|
|
15
16
|
*/
|
|
@@ -279,6 +280,54 @@ class BaseTTSProvider {
|
|
|
279
280
|
log(level, message, meta) {
|
|
280
281
|
(0, logger_utils_1.log)(this.providerName, level, message, meta);
|
|
281
282
|
}
|
|
283
|
+
/**
|
|
284
|
+
* Check if per-request debug logging is enabled.
|
|
285
|
+
*
|
|
286
|
+
* @protected
|
|
287
|
+
* @returns true when `DEBUG_TTS_REQUESTS` is truthy in the environment.
|
|
288
|
+
*
|
|
289
|
+
* @description Providers can gate expensive body capture/cloning behind this
|
|
290
|
+
* flag to avoid overhead when logging is disabled.
|
|
291
|
+
*/
|
|
292
|
+
isRequestLoggingEnabled() {
|
|
293
|
+
return (0, request_logger_utils_1.isRequestLoggingEnabled)();
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Write a debug Markdown log file for a single upstream API call.
|
|
297
|
+
*
|
|
298
|
+
* @protected
|
|
299
|
+
* @param entry - Log entry data. The provider name is injected automatically
|
|
300
|
+
* if omitted. No-op when `DEBUG_TTS_REQUESTS` is disabled.
|
|
301
|
+
*
|
|
302
|
+
* @description Provider-agnostic request logger. Each call produces exactly
|
|
303
|
+
* one `.md` file under `<cwd>/logs/tts/requests/` (override via
|
|
304
|
+
* `TTS_REQUEST_LOG_DIR`). Use this to capture exactly what was sent to and
|
|
305
|
+
* received from an upstream TTS API (Vertex AI, Azure, etc.).
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```typescript
|
|
309
|
+
* this.logRequest({
|
|
310
|
+
* kind: 'dialog-segment',
|
|
311
|
+
* timestamp: new Date().toISOString(),
|
|
312
|
+
* model,
|
|
313
|
+
* region,
|
|
314
|
+
* endpointUrl: url,
|
|
315
|
+
* segmentIndex: i,
|
|
316
|
+
* speakers: usedSpeakers,
|
|
317
|
+
* requestShape: 'multi-speaker',
|
|
318
|
+
* requestBody,
|
|
319
|
+
* httpStatus: response.status,
|
|
320
|
+
* durationMs: Date.now() - startedAt,
|
|
321
|
+
* responseBody: { audioBytes: buf.length, mimeType: 'audio/pcm' },
|
|
322
|
+
* });
|
|
323
|
+
* ```
|
|
324
|
+
*/
|
|
325
|
+
logRequest(entry) {
|
|
326
|
+
(0, request_logger_utils_1.writeRequestLog)({
|
|
327
|
+
...entry,
|
|
328
|
+
provider: entry.provider ?? this.providerName,
|
|
329
|
+
});
|
|
330
|
+
}
|
|
282
331
|
}
|
|
283
332
|
exports.BaseTTSProvider = BaseTTSProvider;
|
|
284
333
|
//# sourceMappingURL=base-tts-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tts-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/base-tts-provider.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAQH,wDAAuD;
|
|
1
|
+
{"version":3,"file":"base-tts-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/base-tts-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,6 +179,16 @@ export declare class VertexAITTSProvider extends BaseTTSProvider {
|
|
|
179
179
|
* - >2 speakers → InvalidConfigError (split the segment so each sub-segment has ≤2 speakers)
|
|
180
180
|
*/
|
|
181
181
|
private buildDialogRequest;
|
|
182
|
+
/**
|
|
183
|
+
* Build a debug log context for one dialog segment.
|
|
184
|
+
*
|
|
185
|
+
* @private
|
|
186
|
+
* @description Inspects the already-built request body so the logged shape
|
|
187
|
+
* and speaker mapping exactly match what will be sent upstream. Reading the
|
|
188
|
+
* body (instead of re-deriving from `segment.turns`) ensures the log stays
|
|
189
|
+
* truthful if `buildDialogRequest()` evolves.
|
|
190
|
+
*/
|
|
191
|
+
private buildDialogLogContext;
|
|
182
192
|
/**
|
|
183
193
|
* Validate payload byte limits before sending to Vertex AI
|
|
184
194
|
*
|
|
@@ -203,6 +213,9 @@ export declare class VertexAITTSProvider extends BaseTTSProvider {
|
|
|
203
213
|
* @param requestBody - The request payload
|
|
204
214
|
* @param model - The model to use
|
|
205
215
|
* @param region - The Vertex AI region to use
|
|
216
|
+
* @param logContext - Optional debug context. When provided (and
|
|
217
|
+
* `DEBUG_TTS_REQUESTS` is enabled), this call writes a Markdown log file
|
|
218
|
+
* with the full request body, response metadata, timing, and any error.
|
|
206
219
|
* @returns Promise resolving to raw PCM audio buffer
|
|
207
220
|
*/
|
|
208
221
|
private callAPI;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertex-ai-tts-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/vertex-ai-tts-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,EACL,eAAe,EAGhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAEV,oBAAoB,EAGpB,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"vertex-ai-tts-provider.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/vertex-ai-tts-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGlE,OAAO,EACL,eAAe,EAGhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAEV,oBAAoB,EAGpB,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAgCzC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;;;;;;OAaG;IACH,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAkBD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAA6E;IAC/F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAsB/C;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;OAKG;YACW,cAAc;IAqB5B;;;;;;;OAOG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,WAAW,CAAC;IAuEvB;;;;;;;;;;;;;;;;;OAiBG;IACG,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC;IAwF9E;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAgE7B;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAqCpB;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB;IA0E1B;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IAmD7B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAyCjC;;;;;;;;OAQG;YACW,yBAAyB;IAuDvC;;;;;;;;;;;OAWG;YACW,OAAO;IA+IrB;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAexB;;;;;;;OAOG;YACW,eAAe;IA0B7B;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;IAkChB;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ;CAwBjB"}
|
|
@@ -56,6 +56,20 @@ const types_1 = require("../types");
|
|
|
56
56
|
const mp3_duration_utils_1 = require("../utils/mp3-duration.utils");
|
|
57
57
|
const base_tts_provider_1 = require("./base-tts-provider");
|
|
58
58
|
const retry_utils_1 = require("../utils/retry.utils");
|
|
59
|
+
/**
|
|
60
|
+
* Try to extract a JSON-parseable object from an HTTP response error body.
|
|
61
|
+
* Falls back to returning the raw text.
|
|
62
|
+
*/
|
|
63
|
+
function parseErrorBody(raw) {
|
|
64
|
+
if (!raw)
|
|
65
|
+
return raw;
|
|
66
|
+
try {
|
|
67
|
+
return JSON.parse(raw);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return raw;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
59
73
|
const DEFAULT_MODEL = 'gemini-2.5-flash-preview-tts';
|
|
60
74
|
const DEFAULT_DIALOG_MODEL = 'gemini-3.1-flash-tts-preview';
|
|
61
75
|
const DEFAULT_SAMPLE_RATE = 24000;
|
|
@@ -179,8 +193,17 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
179
193
|
textLength: text.length,
|
|
180
194
|
requestedFormat,
|
|
181
195
|
});
|
|
196
|
+
const logContext = {
|
|
197
|
+
kind: 'single-synthesize',
|
|
198
|
+
requestShape: 'single-voice',
|
|
199
|
+
speakers: [{ speaker: 'default', voice: voiceId }],
|
|
200
|
+
extras: {
|
|
201
|
+
textLength: text.length,
|
|
202
|
+
requestedFormat,
|
|
203
|
+
},
|
|
204
|
+
};
|
|
182
205
|
try {
|
|
183
|
-
const { pcmBuffer, region: usedRegion } = await this.callAPIWithRegionRotation(requestBody, model, options.region);
|
|
206
|
+
const { pcmBuffer, region: usedRegion } = await this.callAPIWithRegionRotation(requestBody, model, options.region, logContext);
|
|
184
207
|
const { audioBuffer, audioFormat } = await this.convertPcmAudio(pcmBuffer, requestedFormat);
|
|
185
208
|
const duration = Date.now() - startTime;
|
|
186
209
|
this.log('info', 'Synthesis successful', {
|
|
@@ -250,8 +273,12 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
250
273
|
for (let i = 0; i < request.segments.length; i++) {
|
|
251
274
|
const segment = request.segments[i];
|
|
252
275
|
const requestBody = this.buildDialogRequest(segment, request.speakers, options, i);
|
|
276
|
+
// Derive log context from the actually-built request body so what we log
|
|
277
|
+
// is exactly what callAPI() will send. Shape is inferred from the
|
|
278
|
+
// speechConfig variant chosen by buildDialogRequest().
|
|
279
|
+
const logContext = this.buildDialogLogContext(requestBody, segment, request.speakers, i);
|
|
253
280
|
try {
|
|
254
|
-
const { pcmBuffer, region } = await this.callAPIWithRegionRotation(requestBody, model, options.region);
|
|
281
|
+
const { pcmBuffer, region } = await this.callAPIWithRegionRotation(requestBody, model, options.region, logContext);
|
|
255
282
|
pcmChunks.push(pcmBuffer);
|
|
256
283
|
segmentBillings.push({
|
|
257
284
|
characters: this.countSegmentCharacters(segment),
|
|
@@ -442,6 +469,50 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
442
469
|
generationConfig,
|
|
443
470
|
};
|
|
444
471
|
}
|
|
472
|
+
/**
|
|
473
|
+
* Build a debug log context for one dialog segment.
|
|
474
|
+
*
|
|
475
|
+
* @private
|
|
476
|
+
* @description Inspects the already-built request body so the logged shape
|
|
477
|
+
* and speaker mapping exactly match what will be sent upstream. Reading the
|
|
478
|
+
* body (instead of re-deriving from `segment.turns`) ensures the log stays
|
|
479
|
+
* truthful if `buildDialogRequest()` evolves.
|
|
480
|
+
*/
|
|
481
|
+
buildDialogLogContext(requestBody, segment, speakers, segmentIndex) {
|
|
482
|
+
const speechConfig = requestBody.generationConfig?.speechConfig;
|
|
483
|
+
let requestShape = 'single-voice';
|
|
484
|
+
let loggedSpeakers = [];
|
|
485
|
+
const multi = speechConfig?.multiSpeakerVoiceConfig;
|
|
486
|
+
if (multi?.speakerVoiceConfigs && multi.speakerVoiceConfigs.length > 0) {
|
|
487
|
+
requestShape = 'multi-speaker';
|
|
488
|
+
loggedSpeakers = multi.speakerVoiceConfigs.map((c) => ({
|
|
489
|
+
speaker: c.speaker,
|
|
490
|
+
voice: c.voiceConfig?.prebuiltVoiceConfig?.voiceName ?? '(unknown)',
|
|
491
|
+
}));
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
const single = speechConfig?.voiceConfig;
|
|
495
|
+
const voiceName = single?.prebuiltVoiceConfig?.voiceName;
|
|
496
|
+
// Find the alias that maps to this voice (for readability in the log)
|
|
497
|
+
const usedAliases = new Set(segment.turns.map((t) => t.speaker));
|
|
498
|
+
const usedSpeaker = speakers.find((s) => usedAliases.has(s.speaker) && s.voice === voiceName);
|
|
499
|
+
loggedSpeakers = voiceName
|
|
500
|
+
? [{ speaker: usedSpeaker?.speaker ?? '(unknown)', voice: voiceName }]
|
|
501
|
+
: [];
|
|
502
|
+
}
|
|
503
|
+
return {
|
|
504
|
+
kind: 'dialog-segment',
|
|
505
|
+
segmentIndex,
|
|
506
|
+
requestShape,
|
|
507
|
+
speakers: loggedSpeakers,
|
|
508
|
+
extras: {
|
|
509
|
+
turnCount: segment.turns.length,
|
|
510
|
+
hasStylePrompt: !!segment.stylePrompt,
|
|
511
|
+
stylePromptBytes: segment.stylePrompt ? Buffer.byteLength(segment.stylePrompt, 'utf8') : 0,
|
|
512
|
+
temperature: requestBody.generationConfig?.temperature,
|
|
513
|
+
},
|
|
514
|
+
};
|
|
515
|
+
}
|
|
445
516
|
/**
|
|
446
517
|
* Validate payload byte limits before sending to Vertex AI
|
|
447
518
|
*
|
|
@@ -472,17 +543,17 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
472
543
|
* @param regionOverride - Optional per-request region override (skips rotation)
|
|
473
544
|
* @returns The PCM audio buffer and the region that processed the request
|
|
474
545
|
*/
|
|
475
|
-
async callAPIWithRegionRotation(requestBody, model, regionOverride) {
|
|
546
|
+
async callAPIWithRegionRotation(requestBody, model, regionOverride, logContext) {
|
|
476
547
|
// Per-request override: skip rotation entirely
|
|
477
548
|
if (regionOverride) {
|
|
478
|
-
const pcmBuffer = await this.callAPI(requestBody, model, regionOverride);
|
|
549
|
+
const pcmBuffer = await this.callAPI(requestBody, model, regionOverride, logContext);
|
|
479
550
|
return { pcmBuffer, region: regionOverride };
|
|
480
551
|
}
|
|
481
552
|
const rotationConfig = this.config.regionRotation;
|
|
482
553
|
// No rotation configured: use static region from constructor config
|
|
483
554
|
if (!rotationConfig) {
|
|
484
555
|
const region = this.config.region || DEFAULT_REGION;
|
|
485
|
-
const pcmBuffer = await this.callAPI(requestBody, model, region);
|
|
556
|
+
const pcmBuffer = await this.callAPI(requestBody, model, region, logContext);
|
|
486
557
|
return { pcmBuffer, region };
|
|
487
558
|
}
|
|
488
559
|
// Region rotation: try each region in order, rotate on quota errors only
|
|
@@ -490,7 +561,7 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
490
561
|
let lastQuotaError = null;
|
|
491
562
|
for (const region of regionsToTry) {
|
|
492
563
|
try {
|
|
493
|
-
const pcmBuffer = await this.callAPI(requestBody, model, region);
|
|
564
|
+
const pcmBuffer = await this.callAPI(requestBody, model, region, logContext);
|
|
494
565
|
return { pcmBuffer, region };
|
|
495
566
|
}
|
|
496
567
|
catch (error) {
|
|
@@ -507,7 +578,7 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
507
578
|
// Bonus attempt: try fallback one more time (alwaysTryFallback default: true)
|
|
508
579
|
if (rotationConfig.alwaysTryFallback !== false) {
|
|
509
580
|
try {
|
|
510
|
-
const pcmBuffer = await this.callAPI(requestBody, model, rotationConfig.fallback);
|
|
581
|
+
const pcmBuffer = await this.callAPI(requestBody, model, rotationConfig.fallback, logContext);
|
|
511
582
|
return { pcmBuffer, region: rotationConfig.fallback };
|
|
512
583
|
}
|
|
513
584
|
catch (error) {
|
|
@@ -525,30 +596,128 @@ class VertexAITTSProvider extends base_tts_provider_1.BaseTTSProvider {
|
|
|
525
596
|
* @param requestBody - The request payload
|
|
526
597
|
* @param model - The model to use
|
|
527
598
|
* @param region - The Vertex AI region to use
|
|
599
|
+
* @param logContext - Optional debug context. When provided (and
|
|
600
|
+
* `DEBUG_TTS_REQUESTS` is enabled), this call writes a Markdown log file
|
|
601
|
+
* with the full request body, response metadata, timing, and any error.
|
|
528
602
|
* @returns Promise resolving to raw PCM audio buffer
|
|
529
603
|
*/
|
|
530
|
-
async callAPI(requestBody, model, region) {
|
|
604
|
+
async callAPI(requestBody, model, region, logContext) {
|
|
531
605
|
const accessToken = await this.getAccessToken();
|
|
532
606
|
const projectId = this.config.projectId;
|
|
533
607
|
const url = `https://${region}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${region}/publishers/google/models/${model}:generateContent`;
|
|
534
|
-
const
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
608
|
+
const logEnabled = !!logContext && this.isRequestLoggingEnabled();
|
|
609
|
+
const timestamp = new Date().toISOString();
|
|
610
|
+
const startedAt = Date.now();
|
|
611
|
+
let response;
|
|
612
|
+
try {
|
|
613
|
+
response = await fetch(url, {
|
|
614
|
+
method: 'POST',
|
|
615
|
+
headers: {
|
|
616
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
617
|
+
'Content-Type': 'application/json',
|
|
618
|
+
},
|
|
619
|
+
body: JSON.stringify(requestBody),
|
|
620
|
+
});
|
|
621
|
+
}
|
|
622
|
+
catch (err) {
|
|
623
|
+
// Network-level failure (no response received)
|
|
624
|
+
if (logEnabled) {
|
|
625
|
+
this.logRequest({
|
|
626
|
+
kind: logContext.kind,
|
|
627
|
+
timestamp,
|
|
628
|
+
model,
|
|
629
|
+
region,
|
|
630
|
+
endpointUrl: url,
|
|
631
|
+
httpMethod: 'POST',
|
|
632
|
+
segmentIndex: logContext.segmentIndex,
|
|
633
|
+
speakers: logContext.speakers,
|
|
634
|
+
requestShape: logContext.requestShape,
|
|
635
|
+
requestBody,
|
|
636
|
+
durationMs: Date.now() - startedAt,
|
|
637
|
+
error: {
|
|
638
|
+
name: err.name,
|
|
639
|
+
message: err.message,
|
|
640
|
+
stack: err.stack,
|
|
641
|
+
},
|
|
642
|
+
extras: logContext.extras,
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
throw err;
|
|
646
|
+
}
|
|
542
647
|
if (!response.ok) {
|
|
543
648
|
const errorText = await response.text();
|
|
649
|
+
if (logEnabled) {
|
|
650
|
+
this.logRequest({
|
|
651
|
+
kind: logContext.kind,
|
|
652
|
+
timestamp,
|
|
653
|
+
model,
|
|
654
|
+
region,
|
|
655
|
+
endpointUrl: url,
|
|
656
|
+
httpMethod: 'POST',
|
|
657
|
+
segmentIndex: logContext.segmentIndex,
|
|
658
|
+
speakers: logContext.speakers,
|
|
659
|
+
requestShape: logContext.requestShape,
|
|
660
|
+
requestBody,
|
|
661
|
+
httpStatus: response.status,
|
|
662
|
+
responseBody: parseErrorBody(errorText),
|
|
663
|
+
durationMs: Date.now() - startedAt,
|
|
664
|
+
error: {
|
|
665
|
+
message: `Vertex AI API error (${response.status})`,
|
|
666
|
+
},
|
|
667
|
+
extras: logContext.extras,
|
|
668
|
+
});
|
|
669
|
+
}
|
|
544
670
|
throw new Error(`Vertex AI API error (${response.status}): ${errorText}`);
|
|
545
671
|
}
|
|
546
672
|
const responseJson = await response.json();
|
|
547
673
|
const inlineData = responseJson.candidates?.[0]?.content?.parts?.[0]?.inlineData;
|
|
548
674
|
if (!inlineData?.data) {
|
|
675
|
+
if (logEnabled) {
|
|
676
|
+
this.logRequest({
|
|
677
|
+
kind: logContext.kind,
|
|
678
|
+
timestamp,
|
|
679
|
+
model,
|
|
680
|
+
region,
|
|
681
|
+
endpointUrl: url,
|
|
682
|
+
httpMethod: 'POST',
|
|
683
|
+
segmentIndex: logContext.segmentIndex,
|
|
684
|
+
speakers: logContext.speakers,
|
|
685
|
+
requestShape: logContext.requestShape,
|
|
686
|
+
requestBody,
|
|
687
|
+
httpStatus: response.status,
|
|
688
|
+
responseBody: responseJson,
|
|
689
|
+
durationMs: Date.now() - startedAt,
|
|
690
|
+
error: { message: 'Vertex AI API returned no audio data' },
|
|
691
|
+
extras: logContext.extras,
|
|
692
|
+
});
|
|
693
|
+
}
|
|
549
694
|
throw new Error('Vertex AI API returned no audio data');
|
|
550
695
|
}
|
|
551
|
-
|
|
696
|
+
const pcmBuffer = Buffer.from(inlineData.data, 'base64');
|
|
697
|
+
if (logEnabled) {
|
|
698
|
+
this.logRequest({
|
|
699
|
+
kind: logContext.kind,
|
|
700
|
+
timestamp,
|
|
701
|
+
model,
|
|
702
|
+
region,
|
|
703
|
+
endpointUrl: url,
|
|
704
|
+
httpMethod: 'POST',
|
|
705
|
+
segmentIndex: logContext.segmentIndex,
|
|
706
|
+
speakers: logContext.speakers,
|
|
707
|
+
requestShape: logContext.requestShape,
|
|
708
|
+
requestBody,
|
|
709
|
+
httpStatus: response.status,
|
|
710
|
+
responseBody: {
|
|
711
|
+
mimeType: inlineData.mimeType,
|
|
712
|
+
audioBytes: pcmBuffer.length,
|
|
713
|
+
audioBase64Length: inlineData.data.length,
|
|
714
|
+
candidateCount: responseJson.candidates?.length ?? 0,
|
|
715
|
+
},
|
|
716
|
+
durationMs: Date.now() - startedAt,
|
|
717
|
+
extras: logContext.extras,
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
return pcmBuffer;
|
|
552
721
|
}
|
|
553
722
|
/**
|
|
554
723
|
* Resolve ffmpeg binary path with fallback chain:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertex-ai-tts-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/vertex-ai-tts-provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vertex-ai-tts-provider.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/providers/vertex-ai-tts-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,4 +9,6 @@ export { setLogger, getLogger, resetLogger, setLogLevel, getLogLevel, silentLogg
|
|
|
9
9
|
export type { TTSLogger, LogLevel } from './logger.utils';
|
|
10
10
|
export { executeWithRetry, isRetryableError, calculateDelay, DEFAULT_RETRY_CONFIG, } from './retry.utils';
|
|
11
11
|
export type { RetryConfig, RetryLogger } from './retry.utils';
|
|
12
|
+
export { writeRequestLog, isRequestLoggingEnabled, } from './request-logger.utils';
|
|
13
|
+
export type { TTSRequestLogEntry, TTSRequestLogKind, } from './request-logger.utils';
|
|
12
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,GAAG,GACJ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,YAAY,EACZ,GAAG,GACJ,MAAM,gBAAgB,CAAC;AAExB,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1D,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG9D,OAAO,EACL,eAAe,EACf,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Export all utility functions for TTS operations
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.DEFAULT_RETRY_CONFIG = exports.calculateDelay = exports.isRetryableError = exports.executeWithRetry = exports.log = exports.silentLogger = exports.getLogLevel = exports.setLogLevel = exports.resetLogger = exports.getLogger = exports.setLogger = exports.getMp3Duration = exports.formatCharacterCount = exports.estimateAudioDuration = exports.countBillableCharacters = exports.validateCharacterCount = exports.countCharactersWithoutSSML = exports.countCharacters = void 0;
|
|
8
|
+
exports.isRequestLoggingEnabled = exports.writeRequestLog = exports.DEFAULT_RETRY_CONFIG = exports.calculateDelay = exports.isRetryableError = exports.executeWithRetry = exports.log = exports.silentLogger = exports.getLogLevel = exports.setLogLevel = exports.resetLogger = exports.getLogger = exports.setLogger = exports.getMp3Duration = exports.formatCharacterCount = exports.estimateAudioDuration = exports.countBillableCharacters = exports.validateCharacterCount = exports.countCharactersWithoutSSML = exports.countCharacters = void 0;
|
|
9
9
|
var character_counter_utils_1 = require("./character-counter.utils");
|
|
10
10
|
Object.defineProperty(exports, "countCharacters", { enumerable: true, get: function () { return character_counter_utils_1.countCharacters; } });
|
|
11
11
|
Object.defineProperty(exports, "countCharactersWithoutSSML", { enumerable: true, get: function () { return character_counter_utils_1.countCharactersWithoutSSML; } });
|
|
@@ -30,4 +30,8 @@ Object.defineProperty(exports, "executeWithRetry", { enumerable: true, get: func
|
|
|
30
30
|
Object.defineProperty(exports, "isRetryableError", { enumerable: true, get: function () { return retry_utils_1.isRetryableError; } });
|
|
31
31
|
Object.defineProperty(exports, "calculateDelay", { enumerable: true, get: function () { return retry_utils_1.calculateDelay; } });
|
|
32
32
|
Object.defineProperty(exports, "DEFAULT_RETRY_CONFIG", { enumerable: true, get: function () { return retry_utils_1.DEFAULT_RETRY_CONFIG; } });
|
|
33
|
+
// Request logger (per-call Markdown debug logs, gated by DEBUG_TTS_REQUESTS)
|
|
34
|
+
var request_logger_utils_1 = require("./request-logger.utils");
|
|
35
|
+
Object.defineProperty(exports, "writeRequestLog", { enumerable: true, get: function () { return request_logger_utils_1.writeRequestLog; } });
|
|
36
|
+
Object.defineProperty(exports, "isRequestLoggingEnabled", { enumerable: true, get: function () { return request_logger_utils_1.isRequestLoggingEnabled; } });
|
|
33
37
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/utils/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qEAOmC;AANjC,0HAAA,eAAe,OAAA;AACf,qIAAA,0BAA0B,OAAA;AAC1B,iIAAA,sBAAsB,OAAA;AACtB,kIAAA,uBAAuB,OAAA;AACvB,gIAAA,qBAAqB,OAAA;AACrB,+HAAA,oBAAoB,OAAA;AAGtB,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,mBAAmB;AACnB,+CAQwB;AAPtB,yGAAA,SAAS,OAAA;AACT,yGAAA,SAAS,OAAA;AACT,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,4GAAA,YAAY,OAAA;AACZ,mGAAA,GAAG,OAAA;AAKL,kBAAkB;AAClB,6CAKuB;AAJrB,+GAAA,gBAAgB,OAAA;AAChB,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA;AACd,mHAAA,oBAAoB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/utils/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qEAOmC;AANjC,0HAAA,eAAe,OAAA;AACf,qIAAA,0BAA0B,OAAA;AAC1B,iIAAA,sBAAsB,OAAA;AACtB,kIAAA,uBAAuB,OAAA;AACvB,gIAAA,qBAAqB,OAAA;AACrB,+HAAA,oBAAoB,OAAA;AAGtB,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,mBAAmB;AACnB,+CAQwB;AAPtB,yGAAA,SAAS,OAAA;AACT,yGAAA,SAAS,OAAA;AACT,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,2GAAA,WAAW,OAAA;AACX,4GAAA,YAAY,OAAA;AACZ,mGAAA,GAAG,OAAA;AAKL,kBAAkB;AAClB,6CAKuB;AAJrB,+GAAA,gBAAgB,OAAA;AAChB,+GAAA,gBAAgB,OAAA;AAChB,6GAAA,cAAc,OAAA;AACd,mHAAA,oBAAoB,OAAA;AAKtB,6EAA6E;AAC7E,+DAGgC;AAF9B,uHAAA,eAAe,OAAA;AACf,+HAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TTS Request Logger
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic request/response logger that writes one Markdown file per
|
|
5
|
+
* upstream API call (e.g. per Google Vertex AI generateContent invocation).
|
|
6
|
+
*
|
|
7
|
+
* Activated via the `DEBUG_TTS_REQUESTS` environment variable. When disabled,
|
|
8
|
+
* `writeRequestLog()` is a no-op so instrumentation adds zero cost.
|
|
9
|
+
*
|
|
10
|
+
* Files are written to `<cwd>/logs/tts/requests/` (override via
|
|
11
|
+
* `TTS_REQUEST_LOG_DIR`). Filename pattern:
|
|
12
|
+
* `{ISO_TIMESTAMP}_{provider}_{kind}[_{suffix}].md`
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Kind of upstream call being logged.
|
|
16
|
+
*
|
|
17
|
+
* - `dialog-segment` — one segment of a multi-speaker dialog synthesis
|
|
18
|
+
* - `single-synthesize` — a single-speaker synthesis
|
|
19
|
+
* - `other` — anything else a provider wants to log
|
|
20
|
+
*/
|
|
21
|
+
export type TTSRequestLogKind = 'dialog-segment' | 'single-synthesize' | 'other';
|
|
22
|
+
/**
|
|
23
|
+
* Context describing a single upstream TTS API call.
|
|
24
|
+
*
|
|
25
|
+
* Providers populate this before the network call (request side) and, after the
|
|
26
|
+
* call completes, fill in the response-side fields. The logger then serialises
|
|
27
|
+
* the whole entry to a Markdown file.
|
|
28
|
+
*/
|
|
29
|
+
export interface TTSRequestLogEntry {
|
|
30
|
+
/** Provider identifier, e.g. `vertex-ai` */
|
|
31
|
+
provider: string;
|
|
32
|
+
/** What kind of call this is */
|
|
33
|
+
kind: TTSRequestLogKind;
|
|
34
|
+
/** ISO 8601 timestamp when the request was issued */
|
|
35
|
+
timestamp: string;
|
|
36
|
+
/** Model / deployment / variant being called, when known */
|
|
37
|
+
model?: string;
|
|
38
|
+
/** Region / datacenter, when known */
|
|
39
|
+
region?: string;
|
|
40
|
+
/** Full endpoint URL the request was sent to */
|
|
41
|
+
endpointUrl?: string;
|
|
42
|
+
/** HTTP method (default implied: POST) */
|
|
43
|
+
httpMethod?: string;
|
|
44
|
+
/** Dialog segment index (only for `dialog-segment`) */
|
|
45
|
+
segmentIndex?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Speaker → voice mapping actually used for this specific call (after filtering
|
|
48
|
+
* to speakers that appear in the segment's turns).
|
|
49
|
+
*/
|
|
50
|
+
speakers?: Array<{
|
|
51
|
+
speaker: string;
|
|
52
|
+
voice: string;
|
|
53
|
+
}>;
|
|
54
|
+
/**
|
|
55
|
+
* Shape of the request body (provider-specific). For Vertex AI dialog:
|
|
56
|
+
* `single-voice` or `multi-speaker`.
|
|
57
|
+
*/
|
|
58
|
+
requestShape?: string;
|
|
59
|
+
/** The final request body that was serialised and sent upstream */
|
|
60
|
+
requestBody: unknown;
|
|
61
|
+
/** HTTP status code (populated after the call) */
|
|
62
|
+
httpStatus?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Response body. On success store lightweight metadata (audio size, mime type,
|
|
65
|
+
* durations). On error store the full error payload for debugging.
|
|
66
|
+
*/
|
|
67
|
+
responseBody?: unknown;
|
|
68
|
+
/** Total duration of the upstream call in milliseconds */
|
|
69
|
+
durationMs?: number;
|
|
70
|
+
/** Set when the call failed */
|
|
71
|
+
error?: {
|
|
72
|
+
message: string;
|
|
73
|
+
stack?: string;
|
|
74
|
+
name?: string;
|
|
75
|
+
};
|
|
76
|
+
/** Free-form extra fields the caller wants to record */
|
|
77
|
+
extras?: Record<string, unknown>;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check whether request logging is enabled via the `DEBUG_TTS_REQUESTS` env var.
|
|
81
|
+
*
|
|
82
|
+
* Truthy values: `1`, `true`, `yes`, `on` (case-insensitive). Anything else is
|
|
83
|
+
* treated as disabled.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isRequestLoggingEnabled(): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Write a request log entry as Markdown.
|
|
88
|
+
*
|
|
89
|
+
* No-op when `DEBUG_TTS_REQUESTS` is not enabled. Never throws — logging failures
|
|
90
|
+
* must not break TTS synthesis. Errors are reported on stderr for visibility.
|
|
91
|
+
*
|
|
92
|
+
* @returns The absolute file path of the written log, or `null` when disabled
|
|
93
|
+
* or the write failed.
|
|
94
|
+
*/
|
|
95
|
+
export declare function writeRequestLog(entry: TTSRequestLogEntry): string | null;
|
|
96
|
+
//# sourceMappingURL=request-logger.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-logger.utils.d.ts","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/utils/request-logger.utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,OAAO,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,iBAAiB,CAAC;IACxB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAElB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mEAAmE;IACnE,WAAW,EAAE,OAAO,CAAC;IAErB,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,0DAA0D;IAC1D,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,+BAA+B;IAC/B,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IAEF,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAKjD;AAuJD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAgBxE"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TTS Request Logger
|
|
4
|
+
*
|
|
5
|
+
* Provider-agnostic request/response logger that writes one Markdown file per
|
|
6
|
+
* upstream API call (e.g. per Google Vertex AI generateContent invocation).
|
|
7
|
+
*
|
|
8
|
+
* Activated via the `DEBUG_TTS_REQUESTS` environment variable. When disabled,
|
|
9
|
+
* `writeRequestLog()` is a no-op so instrumentation adds zero cost.
|
|
10
|
+
*
|
|
11
|
+
* Files are written to `<cwd>/logs/tts/requests/` (override via
|
|
12
|
+
* `TTS_REQUEST_LOG_DIR`). Filename pattern:
|
|
13
|
+
* `{ISO_TIMESTAMP}_{provider}_{kind}[_{suffix}].md`
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.isRequestLoggingEnabled = isRequestLoggingEnabled;
|
|
17
|
+
exports.writeRequestLog = writeRequestLog;
|
|
18
|
+
const fs_1 = require("fs");
|
|
19
|
+
const path_1 = require("path");
|
|
20
|
+
/**
|
|
21
|
+
* Check whether request logging is enabled via the `DEBUG_TTS_REQUESTS` env var.
|
|
22
|
+
*
|
|
23
|
+
* Truthy values: `1`, `true`, `yes`, `on` (case-insensitive). Anything else is
|
|
24
|
+
* treated as disabled.
|
|
25
|
+
*/
|
|
26
|
+
function isRequestLoggingEnabled() {
|
|
27
|
+
const raw = process.env.DEBUG_TTS_REQUESTS;
|
|
28
|
+
if (!raw)
|
|
29
|
+
return false;
|
|
30
|
+
const v = raw.trim().toLowerCase();
|
|
31
|
+
return v === '1' || v === 'true' || v === 'yes' || v === 'on';
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the directory where log files are written.
|
|
35
|
+
*
|
|
36
|
+
* Override via `TTS_REQUEST_LOG_DIR`. Defaults to `<cwd>/logs/tts/requests`.
|
|
37
|
+
*/
|
|
38
|
+
function resolveLogDir() {
|
|
39
|
+
const override = process.env.TTS_REQUEST_LOG_DIR;
|
|
40
|
+
if (override && override.trim().length > 0) {
|
|
41
|
+
return (0, path_1.resolve)(override.trim());
|
|
42
|
+
}
|
|
43
|
+
return (0, path_1.resolve)(process.cwd(), 'logs', 'tts', 'requests');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Make a string safe to embed in a filename across Windows/macOS/Linux.
|
|
47
|
+
* Replaces reserved characters with `-` and collapses repeats.
|
|
48
|
+
*/
|
|
49
|
+
function sanitiseForFilename(value) {
|
|
50
|
+
return value
|
|
51
|
+
// eslint-disable-next-line no-control-regex
|
|
52
|
+
.replace(/[<>:"/\\|?*\x00-\x1F]/g, '-')
|
|
53
|
+
.replace(/-+/g, '-')
|
|
54
|
+
.replace(/^-+|-+$/g, '')
|
|
55
|
+
.slice(0, 80);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build the filename for a log entry.
|
|
59
|
+
*
|
|
60
|
+
* Pattern: `{ISO}_{provider}_{kind}[_{suffix}].md` where `ISO` has colons and
|
|
61
|
+
* dots replaced so it works on Windows.
|
|
62
|
+
*/
|
|
63
|
+
function buildFilename(entry) {
|
|
64
|
+
const isoSafe = entry.timestamp.replace(/[:.]/g, '-');
|
|
65
|
+
const parts = [isoSafe, sanitiseForFilename(entry.provider), sanitiseForFilename(entry.kind)];
|
|
66
|
+
if (entry.kind === 'dialog-segment' && typeof entry.segmentIndex === 'number') {
|
|
67
|
+
parts.push(`seg${entry.segmentIndex}`);
|
|
68
|
+
}
|
|
69
|
+
if (entry.requestShape) {
|
|
70
|
+
parts.push(sanitiseForFilename(entry.requestShape));
|
|
71
|
+
}
|
|
72
|
+
return `${parts.join('_')}.md`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Serialise unknown data to a fenced JSON code block.
|
|
76
|
+
*
|
|
77
|
+
* Handles circular references and BigInts without throwing; text content is
|
|
78
|
+
* written verbatim (no truncation) so the full upstream payload is preserved.
|
|
79
|
+
*/
|
|
80
|
+
function toJsonBlock(label, data) {
|
|
81
|
+
let json;
|
|
82
|
+
try {
|
|
83
|
+
json = JSON.stringify(data, (_key, value) => (typeof value === 'bigint' ? value.toString() : value), 2);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
json = `/* Failed to stringify ${label}: ${err.message} */`;
|
|
87
|
+
}
|
|
88
|
+
return ['```json', json, '```'].join('\n');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Render a log entry to Markdown. The output includes every field that is
|
|
92
|
+
* populated; no truncation is performed.
|
|
93
|
+
*/
|
|
94
|
+
function renderMarkdown(entry) {
|
|
95
|
+
const lines = [];
|
|
96
|
+
lines.push(`# TTS Request Log — ${entry.provider} / ${entry.kind}`);
|
|
97
|
+
lines.push('');
|
|
98
|
+
lines.push('## Meta');
|
|
99
|
+
lines.push(`- **Timestamp**: ${entry.timestamp}`);
|
|
100
|
+
lines.push(`- **Provider**: ${entry.provider}`);
|
|
101
|
+
lines.push(`- **Kind**: ${entry.kind}`);
|
|
102
|
+
if (entry.model)
|
|
103
|
+
lines.push(`- **Model**: ${entry.model}`);
|
|
104
|
+
if (entry.region)
|
|
105
|
+
lines.push(`- **Region**: ${entry.region}`);
|
|
106
|
+
if (entry.endpointUrl)
|
|
107
|
+
lines.push(`- **Endpoint**: ${entry.endpointUrl}`);
|
|
108
|
+
if (entry.httpMethod)
|
|
109
|
+
lines.push(`- **HTTP Method**: ${entry.httpMethod}`);
|
|
110
|
+
if (typeof entry.durationMs === 'number') {
|
|
111
|
+
lines.push(`- **Duration**: ${entry.durationMs} ms`);
|
|
112
|
+
}
|
|
113
|
+
if (typeof entry.httpStatus === 'number') {
|
|
114
|
+
lines.push(`- **HTTP Status**: ${entry.httpStatus}`);
|
|
115
|
+
}
|
|
116
|
+
lines.push('');
|
|
117
|
+
if (typeof entry.segmentIndex === 'number' ||
|
|
118
|
+
entry.requestShape ||
|
|
119
|
+
(entry.speakers && entry.speakers.length > 0)) {
|
|
120
|
+
lines.push('## Dialog Context');
|
|
121
|
+
if (typeof entry.segmentIndex === 'number') {
|
|
122
|
+
lines.push(`- **Segment Index**: ${entry.segmentIndex}`);
|
|
123
|
+
}
|
|
124
|
+
if (entry.requestShape) {
|
|
125
|
+
lines.push(`- **Request Shape**: ${entry.requestShape}`);
|
|
126
|
+
}
|
|
127
|
+
if (entry.speakers && entry.speakers.length > 0) {
|
|
128
|
+
lines.push(`- **Speaker Count**: ${entry.speakers.length}`);
|
|
129
|
+
lines.push('- **Speaker → Voice**:');
|
|
130
|
+
for (const s of entry.speakers) {
|
|
131
|
+
lines.push(` - \`${s.speaker}\` → \`${s.voice}\``);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
lines.push('');
|
|
135
|
+
}
|
|
136
|
+
lines.push('## Request Body');
|
|
137
|
+
lines.push(toJsonBlock('requestBody', entry.requestBody));
|
|
138
|
+
lines.push('');
|
|
139
|
+
if (entry.responseBody !== undefined) {
|
|
140
|
+
lines.push('## Response');
|
|
141
|
+
lines.push(toJsonBlock('responseBody', entry.responseBody));
|
|
142
|
+
lines.push('');
|
|
143
|
+
}
|
|
144
|
+
if (entry.error) {
|
|
145
|
+
lines.push('## Error');
|
|
146
|
+
if (entry.error.name)
|
|
147
|
+
lines.push(`- **Name**: ${entry.error.name}`);
|
|
148
|
+
lines.push(`- **Message**: ${entry.error.message}`);
|
|
149
|
+
if (entry.error.stack) {
|
|
150
|
+
lines.push('');
|
|
151
|
+
lines.push('```');
|
|
152
|
+
lines.push(entry.error.stack);
|
|
153
|
+
lines.push('```');
|
|
154
|
+
}
|
|
155
|
+
lines.push('');
|
|
156
|
+
}
|
|
157
|
+
if (entry.extras && Object.keys(entry.extras).length > 0) {
|
|
158
|
+
lines.push('## Extras');
|
|
159
|
+
lines.push(toJsonBlock('extras', entry.extras));
|
|
160
|
+
lines.push('');
|
|
161
|
+
}
|
|
162
|
+
lines.push('---');
|
|
163
|
+
lines.push(`*Generated on ${new Date().toISOString()}*`);
|
|
164
|
+
lines.push('');
|
|
165
|
+
return lines.join('\n');
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Write a request log entry as Markdown.
|
|
169
|
+
*
|
|
170
|
+
* No-op when `DEBUG_TTS_REQUESTS` is not enabled. Never throws — logging failures
|
|
171
|
+
* must not break TTS synthesis. Errors are reported on stderr for visibility.
|
|
172
|
+
*
|
|
173
|
+
* @returns The absolute file path of the written log, or `null` when disabled
|
|
174
|
+
* or the write failed.
|
|
175
|
+
*/
|
|
176
|
+
function writeRequestLog(entry) {
|
|
177
|
+
if (!isRequestLoggingEnabled())
|
|
178
|
+
return null;
|
|
179
|
+
try {
|
|
180
|
+
const dir = resolveLogDir();
|
|
181
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
182
|
+
const filename = buildFilename(entry);
|
|
183
|
+
const fullPath = (0, path_1.join)(dir, filename);
|
|
184
|
+
(0, fs_1.writeFileSync)(fullPath, renderMarkdown(entry), 'utf8');
|
|
185
|
+
return fullPath;
|
|
186
|
+
}
|
|
187
|
+
catch (err) {
|
|
188
|
+
// Never let logging break the main flow.
|
|
189
|
+
// eslint-disable-next-line no-console
|
|
190
|
+
console.error('[tts-request-logger] Failed to write log:', err.message);
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=request-logger.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-logger.utils.js","sourceRoot":"","sources":["../../../../../src/middleware/services/tts/utils/request-logger.utils.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAkFH,0DAKC;AAgKD,0CAgBC;AArQD,2BAA8C;AAC9C,+BAAqC;AAyErC;;;;;GAKG;AACH,SAAgB,uBAAuB;IACrC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACjD,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAA,cAAO,EAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,IAAA,cAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK;QACV,4CAA4C;SAC3C,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC;SACtC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,KAAyB;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9F,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9E,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAa,EAAE,IAAa;IAC/C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,SAAS,CACnB,IAAI,EACJ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACvE,CAAC,CACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,0BAA0B,KAAK,KAAM,GAAa,CAAC,OAAO,KAAK,CAAC;IACzE,CAAC;IACD,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,KAAyB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9D,IAAI,KAAK,CAAC,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC3E,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IACE,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ;QACtC,KAAK,CAAC,YAAY;QAClB,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAC7C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChC,IAAI,OAAO,KAAK,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,KAAyB;IACvD,IAAI,CAAC,uBAAuB,EAAE;QAAE,OAAO,IAAI,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;QAC5B,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAA,kBAAa,EAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;QACvD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,yCAAyC;QACzC,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loonylabs/tts-middleware",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "Provider-agnostic Text-to-Speech middleware for Azure, OpenAI, ElevenLabs, Google Cloud, Deepgram, Fish Audio, Inworld AI, and Vertex AI TTS",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|