@speech-sdk/core 0.21.0 → 0.22.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 +17 -9
- package/dist/derive-timestamps.d.ts.map +1 -1
- package/dist/derive-timestamps.js +2 -2
- package/dist/derive-timestamps.js.map +1 -1
- package/dist/errors.d.ts +28 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +107 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/provider-utils.d.ts +8 -2
- package/dist/provider-utils.d.ts.map +1 -1
- package/dist/provider-utils.js +69 -19
- package/dist/provider-utils.js.map +1 -1
- package/dist/providers/cartesia/index.d.ts.map +1 -1
- package/dist/providers/cartesia/index.js +16 -4
- package/dist/providers/cartesia/index.js.map +1 -1
- package/dist/providers/deepgram/index.d.ts.map +1 -1
- package/dist/providers/deepgram/index.js +10 -2
- package/dist/providers/deepgram/index.js.map +1 -1
- package/dist/providers/elevenlabs/index.d.ts.map +1 -1
- package/dist/providers/elevenlabs/index.js +18 -6
- package/dist/providers/elevenlabs/index.js.map +1 -1
- package/dist/providers/fal/index.d.ts.map +1 -1
- package/dist/providers/fal/index.js +12 -9
- package/dist/providers/fal/index.js.map +1 -1
- package/dist/providers/fish-audio/index.d.ts.map +1 -1
- package/dist/providers/fish-audio/index.js +17 -5
- package/dist/providers/fish-audio/index.js.map +1 -1
- package/dist/providers/gateway/index.d.ts.map +1 -1
- package/dist/providers/gateway/index.js +43 -13
- package/dist/providers/gateway/index.js.map +1 -1
- package/dist/providers/google/index.d.ts.map +1 -1
- package/dist/providers/google/index.js +15 -3
- package/dist/providers/google/index.js.map +1 -1
- package/dist/providers/gradium/index.d.ts.map +1 -1
- package/dist/providers/gradium/index.js +6 -2
- package/dist/providers/gradium/index.js.map +1 -1
- package/dist/providers/hume/index.d.ts.map +1 -1
- package/dist/providers/hume/index.js +22 -6
- package/dist/providers/hume/index.js.map +1 -1
- package/dist/providers/inworld/index.d.ts.map +1 -1
- package/dist/providers/inworld/index.js +13 -5
- package/dist/providers/inworld/index.js.map +1 -1
- package/dist/providers/minimax/index.d.ts.map +1 -1
- package/dist/providers/minimax/index.js +8 -4
- package/dist/providers/minimax/index.js.map +1 -1
- package/dist/providers/mistral/index.d.ts.map +1 -1
- package/dist/providers/mistral/index.js +11 -3
- package/dist/providers/mistral/index.js.map +1 -1
- package/dist/providers/murf/index.d.ts.map +1 -1
- package/dist/providers/murf/index.js +10 -2
- package/dist/providers/murf/index.js.map +1 -1
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +15 -3
- package/dist/providers/openai/index.js.map +1 -1
- package/dist/providers/resemble/index.d.ts.map +1 -1
- package/dist/providers/resemble/index.js +12 -4
- package/dist/providers/resemble/index.js.map +1 -1
- package/dist/providers/smallest-ai/index.d.ts.map +1 -1
- package/dist/providers/smallest-ai/index.js +6 -2
- package/dist/providers/smallest-ai/index.js.map +1 -1
- package/dist/providers/speechify/index.d.ts.map +1 -1
- package/dist/providers/speechify/index.js +5 -1
- package/dist/providers/speechify/index.js.map +1 -1
- package/dist/providers/xai/index.d.ts.map +1 -1
- package/dist/providers/xai/index.js +11 -3
- package/dist/providers/xai/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -407,6 +407,7 @@ import {
|
|
|
407
407
|
generateConversation,
|
|
408
408
|
timestampsToCaptions,
|
|
409
409
|
ApiError,
|
|
410
|
+
SpeechSdkProviderError,
|
|
410
411
|
} from '@speech-sdk/core';
|
|
411
412
|
```
|
|
412
413
|
|
|
@@ -469,25 +470,32 @@ interface ConversationWordTimestamp extends WordTimestamp {
|
|
|
469
470
|
## Error handling
|
|
470
471
|
|
|
471
472
|
```ts
|
|
472
|
-
import { generateSpeech,
|
|
473
|
+
import { generateSpeech, SpeechSdkProviderError } from '@speech-sdk/core';
|
|
473
474
|
|
|
474
475
|
try {
|
|
475
476
|
await generateSpeech({ /* ... */ });
|
|
476
477
|
} catch (error) {
|
|
477
|
-
if (error instanceof
|
|
478
|
-
error.
|
|
479
|
-
error.
|
|
480
|
-
error.
|
|
481
|
-
error.
|
|
478
|
+
if (error instanceof SpeechSdkProviderError) {
|
|
479
|
+
error.status; // 401, 429, 500, ...
|
|
480
|
+
error.provider; // google
|
|
481
|
+
error.model; // gemini-3.1-flash-tts-preview
|
|
482
|
+
error.code; // INVALID_ARGUMENT (optional)
|
|
483
|
+
error.details; // complete parsed provider response body
|
|
484
|
+
error.rawResponse; // complete response text
|
|
485
|
+
error.requestId; // provider request ID (optional)
|
|
486
|
+
error.retryable;
|
|
487
|
+
error.stage; // synthesis | alignment (optional)
|
|
488
|
+
JSON.stringify(error);
|
|
482
489
|
}
|
|
483
490
|
}
|
|
484
491
|
```
|
|
485
492
|
|
|
486
|
-
`
|
|
493
|
+
`SpeechSdkProviderError` extends `ApiError`, so existing `instanceof ApiError`, `statusCode`, and `responseBody` handling remains compatible. `code` is populated from provider error codes (including Google `error.status`) or the RFC 7807 `code` extension. Match on `code` over `message` text — codes are a stable contract, messages aren't.
|
|
487
494
|
|
|
488
495
|
| Error | When |
|
|
489
496
|
|---|---|
|
|
490
|
-
| `
|
|
497
|
+
| `SpeechSdkProviderError` | Provider returned non-2xx; includes the parsed and raw provider response |
|
|
498
|
+
| `ApiError` | Backward-compatible base class for API failures |
|
|
491
499
|
| `MissingApiKeyError` | No `apiKey` passed and the provider's env var is unset |
|
|
492
500
|
| `NoSpeechGeneratedError` | Empty input (after tag stripping) or empty provider response |
|
|
493
501
|
| `StreamingNotSupportedError` | `streamSpeech()` on a non-streaming model |
|
|
@@ -496,7 +504,7 @@ try {
|
|
|
496
504
|
| `ConversationInputError` / `DialogueConstraintError` / `StitchUnsupportedError` | `generateConversation` validation / native caps / stitch incompatibility |
|
|
497
505
|
| `SpeechSDKError` | Base class |
|
|
498
506
|
|
|
499
|
-
Retries 5xx (except 501), 429, and network errors with jittered exponential backoff ([p-retry](https://github.com/sindresorhus/p-retry)); other 4xx and 501 are terminal. When a retriable error carries a `Retry-After` header, the SDK sleeps that long before the next attempt — capped at 60s to avoid pathological waits. The parsed value is surfaced as `
|
|
507
|
+
Retries 5xx (except 501), 429, and network errors with jittered exponential backoff ([p-retry](https://github.com/sindresorhus/p-retry)); other 4xx and 501 are terminal. `SpeechSdkProviderError.retryable` exposes that HTTP classification. When a retriable error carries a `Retry-After` header, the SDK sleeps that long before the next attempt — capped at 60s to avoid pathological waits. The parsed value is surfaced as `retryAfterMs` whenever the header is present, even on terminal errors that aren't retried. Default 2 retries; override via `maxRetries`.
|
|
500
508
|
|
|
501
509
|
## Development
|
|
502
510
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-timestamps.d.ts","sourceRoot":"","sources":["../src/derive-timestamps.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"derive-timestamps.d.ts","sourceRoot":"","sources":["../src/derive-timestamps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAsBpC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MissingApiKeyError, TimestampKeyMissingError } from "./errors.js";
|
|
1
|
+
import { MissingApiKeyError, TimestampKeyMissingError, withProviderErrorStage, } from "./errors.js";
|
|
2
2
|
export async function deriveTimestampsViaSTT(args) {
|
|
3
3
|
const sttModel = args.timestampFallback;
|
|
4
4
|
try {
|
|
@@ -19,7 +19,7 @@ export async function deriveTimestampsViaSTT(args) {
|
|
|
19
19
|
envVar: err.envVar,
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
throw err;
|
|
22
|
+
throw withProviderErrorStage(err, "alignment");
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=derive-timestamps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"derive-timestamps.js","sourceRoot":"","sources":["../src/derive-timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"derive-timestamps.js","sourceRoot":"","sources":["../src/derive-timestamps.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAIrB,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAO5C;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;YACxD,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YACnD,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;YACtC,MAAM,IAAI,wBAAwB,CAAC;gBACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,OAAO,EAAE;gBAC1D,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,sBAAsB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IACjD,CAAC;AACH,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -18,6 +18,33 @@ export declare class ApiError extends SpeechSDKError {
|
|
|
18
18
|
retryAfterMs?: number;
|
|
19
19
|
});
|
|
20
20
|
}
|
|
21
|
+
export type ProviderErrorStage = "alignment" | "synthesis";
|
|
22
|
+
export interface SpeechSdkProviderErrorOptions {
|
|
23
|
+
readonly cause?: unknown;
|
|
24
|
+
readonly code?: string;
|
|
25
|
+
readonly details?: unknown;
|
|
26
|
+
readonly model?: string;
|
|
27
|
+
readonly provider: string;
|
|
28
|
+
readonly rawResponse?: string;
|
|
29
|
+
readonly requestId?: string;
|
|
30
|
+
readonly retryAfterMs?: number;
|
|
31
|
+
readonly retryable: boolean;
|
|
32
|
+
readonly stage?: ProviderErrorStage;
|
|
33
|
+
readonly status: number;
|
|
34
|
+
readonly turnIndex?: number;
|
|
35
|
+
}
|
|
36
|
+
export declare class SpeechSdkProviderError extends ApiError {
|
|
37
|
+
readonly status: number;
|
|
38
|
+
readonly provider: string;
|
|
39
|
+
readonly model?: string;
|
|
40
|
+
readonly details?: unknown;
|
|
41
|
+
readonly rawResponse?: string;
|
|
42
|
+
readonly requestId?: string;
|
|
43
|
+
readonly retryable: boolean;
|
|
44
|
+
readonly stage?: ProviderErrorStage;
|
|
45
|
+
constructor(message: string, options: SpeechSdkProviderErrorOptions);
|
|
46
|
+
toJSON(): Record<string, unknown>;
|
|
47
|
+
}
|
|
21
48
|
export declare class NoSpeechGeneratedError extends SpeechSDKError {
|
|
22
49
|
readonly turnIndex?: number;
|
|
23
50
|
constructor(message?: string, options?: {
|
|
@@ -25,6 +52,7 @@ export declare class NoSpeechGeneratedError extends SpeechSDKError {
|
|
|
25
52
|
});
|
|
26
53
|
}
|
|
27
54
|
export declare function withTurnIndex(err: unknown, turnIndex: number): unknown;
|
|
55
|
+
export declare function withProviderErrorStage(err: unknown, stage: ProviderErrorStage): unknown;
|
|
28
56
|
export declare class StreamingNotSupportedError extends SpeechSDKError {
|
|
29
57
|
constructor(model: string);
|
|
30
58
|
}
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,qBAAa,QAAS,SAAQ,cAAc;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAUJ;AAED,qBAAa,sBAAuB,SAAQ,cAAc;IAExD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAK/D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -7,7 +7,7 @@ export class SpeechSDKError extends Error {
|
|
|
7
7
|
export class ApiError extends SpeechSDKError {
|
|
8
8
|
statusCode;
|
|
9
9
|
responseBody;
|
|
10
|
-
// RFC 7807 `code` extension
|
|
10
|
+
// Provider canonical code or RFC 7807 `code` extension.
|
|
11
11
|
code;
|
|
12
12
|
// Set by generateConversation's stitch path; undefined for single-turn calls and single-API-call paths (gateway, native dialogue).
|
|
13
13
|
turnIndex;
|
|
@@ -22,6 +22,88 @@ export class ApiError extends SpeechSDKError {
|
|
|
22
22
|
this.retryAfterMs = options.retryAfterMs;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
+
function jsonSafeDetails(value) {
|
|
26
|
+
const ancestors = [];
|
|
27
|
+
try {
|
|
28
|
+
const serialized = JSON.stringify(value, function replaceNonJsonValues(_key, nestedValue) {
|
|
29
|
+
if (typeof nestedValue === "bigint") {
|
|
30
|
+
return `${nestedValue}n`;
|
|
31
|
+
}
|
|
32
|
+
if (typeof nestedValue !== "object" || nestedValue === null) {
|
|
33
|
+
return nestedValue;
|
|
34
|
+
}
|
|
35
|
+
while (ancestors.length > 0 && ancestors.at(-1) !== this) {
|
|
36
|
+
ancestors.pop();
|
|
37
|
+
}
|
|
38
|
+
if (ancestors.includes(nestedValue)) {
|
|
39
|
+
return "[Circular]";
|
|
40
|
+
}
|
|
41
|
+
ancestors.push(nestedValue);
|
|
42
|
+
return nestedValue;
|
|
43
|
+
});
|
|
44
|
+
return serialized === undefined
|
|
45
|
+
? `[Unserializable ${typeof value}]`
|
|
46
|
+
: JSON.parse(serialized);
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return "[Unserializable details]";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export class SpeechSdkProviderError extends ApiError {
|
|
53
|
+
status;
|
|
54
|
+
provider;
|
|
55
|
+
model;
|
|
56
|
+
details;
|
|
57
|
+
rawResponse;
|
|
58
|
+
requestId;
|
|
59
|
+
retryable;
|
|
60
|
+
stage;
|
|
61
|
+
constructor(message, options) {
|
|
62
|
+
super(message, {
|
|
63
|
+
statusCode: options.status,
|
|
64
|
+
responseBody: options.rawResponse,
|
|
65
|
+
cause: options.cause,
|
|
66
|
+
code: options.code,
|
|
67
|
+
turnIndex: options.turnIndex,
|
|
68
|
+
retryAfterMs: options.retryAfterMs,
|
|
69
|
+
});
|
|
70
|
+
this.name = "SpeechSdkProviderError";
|
|
71
|
+
this.status = options.status;
|
|
72
|
+
this.provider = options.provider;
|
|
73
|
+
this.model = options.model;
|
|
74
|
+
this.details = options.details;
|
|
75
|
+
this.rawResponse = options.rawResponse;
|
|
76
|
+
this.requestId = options.requestId;
|
|
77
|
+
this.retryable = options.retryable;
|
|
78
|
+
this.stage = options.stage;
|
|
79
|
+
}
|
|
80
|
+
toJSON() {
|
|
81
|
+
return {
|
|
82
|
+
name: this.name,
|
|
83
|
+
message: this.message,
|
|
84
|
+
status: this.status,
|
|
85
|
+
statusCode: this.statusCode,
|
|
86
|
+
provider: this.provider,
|
|
87
|
+
...(this.model !== undefined && { model: this.model }),
|
|
88
|
+
...(this.code !== undefined && { code: this.code }),
|
|
89
|
+
...(this.details !== undefined && {
|
|
90
|
+
details: jsonSafeDetails(this.details),
|
|
91
|
+
}),
|
|
92
|
+
...(this.rawResponse !== undefined && {
|
|
93
|
+
rawResponse: this.rawResponse,
|
|
94
|
+
responseBody: this.responseBody,
|
|
95
|
+
}),
|
|
96
|
+
...(this.requestId !== undefined && { requestId: this.requestId }),
|
|
97
|
+
retryable: this.retryable,
|
|
98
|
+
...(this.stage !== undefined && { stage: this.stage }),
|
|
99
|
+
...(this.turnIndex !== undefined && { turnIndex: this.turnIndex }),
|
|
100
|
+
...(this.retryAfterMs !== undefined && {
|
|
101
|
+
retryAfterMs: this.retryAfterMs,
|
|
102
|
+
}),
|
|
103
|
+
...(this.stack !== undefined && { stack: this.stack }),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
25
107
|
export class NoSpeechGeneratedError extends SpeechSDKError {
|
|
26
108
|
// Set by generateConversation's stitch path; undefined for single-turn calls.
|
|
27
109
|
turnIndex;
|
|
@@ -32,6 +114,9 @@ export class NoSpeechGeneratedError extends SpeechSDKError {
|
|
|
32
114
|
}
|
|
33
115
|
}
|
|
34
116
|
export function withTurnIndex(err, turnIndex) {
|
|
117
|
+
if (err instanceof SpeechSdkProviderError) {
|
|
118
|
+
return copyProviderError(err, { turnIndex });
|
|
119
|
+
}
|
|
35
120
|
if (err instanceof ApiError) {
|
|
36
121
|
return new ApiError(err.message, {
|
|
37
122
|
statusCode: err.statusCode,
|
|
@@ -47,6 +132,27 @@ export function withTurnIndex(err, turnIndex) {
|
|
|
47
132
|
}
|
|
48
133
|
return err;
|
|
49
134
|
}
|
|
135
|
+
export function withProviderErrorStage(err, stage) {
|
|
136
|
+
return err instanceof SpeechSdkProviderError
|
|
137
|
+
? copyProviderError(err, { stage })
|
|
138
|
+
: err;
|
|
139
|
+
}
|
|
140
|
+
function copyProviderError(error, overrides) {
|
|
141
|
+
return new SpeechSdkProviderError(error.message, {
|
|
142
|
+
status: error.status,
|
|
143
|
+
provider: error.provider,
|
|
144
|
+
model: error.model,
|
|
145
|
+
code: error.code,
|
|
146
|
+
details: error.details,
|
|
147
|
+
rawResponse: error.rawResponse,
|
|
148
|
+
requestId: error.requestId,
|
|
149
|
+
retryable: error.retryable,
|
|
150
|
+
stage: overrides.stage ?? error.stage,
|
|
151
|
+
turnIndex: overrides.turnIndex ?? error.turnIndex,
|
|
152
|
+
retryAfterMs: error.retryAfterMs,
|
|
153
|
+
cause: error,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
50
156
|
export class StreamingNotSupportedError extends SpeechSDKError {
|
|
51
157
|
constructor(model) {
|
|
52
158
|
super(`Streaming is not supported by ${model}. Use generateSpeech() instead.`);
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IACjC,UAAU,CAAS;IACnB,YAAY,CAAW;IAChC,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,8 @@ export { cloneVoice } from "./clone-voice.js";
|
|
|
5
5
|
export { ConversationInputError, DialogueConstraintError, MixedDispatchError, StitchUnsupportedError, } from "./conversation/errors.js";
|
|
6
6
|
export type { DesignedVoice, DesignVoiceOptions, VoiceDesignPreview, } from "./design-voice.js";
|
|
7
7
|
export { designVoice } from "./design-voice.js";
|
|
8
|
-
export {
|
|
8
|
+
export type { ProviderErrorStage, SpeechSdkProviderErrorOptions, } from "./errors.js";
|
|
9
|
+
export { ApiError, AudioOutputInputError, CloneSampleFetchError, GatewayInputError, InvalidCloneFieldError, InvalidDesignFieldError, MissingApiKeyError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, SpeechSdkProviderError, StreamingNotSupportedError, TextChunkingUnsupportedError, TimestampKeyMissingError, TooManyCloneSamplesError, UnsupportedSampleRateError, VoiceCloningUnsupportedError, VoiceDesignUnsupportedError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
|
|
9
10
|
export { generateConversation } from "./generate-conversation.js";
|
|
10
11
|
export { generateSpeech } from "./generate-speech.js";
|
|
11
12
|
export type { Pronunciation, PronunciationsInput, } from "./pronunciations/types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EACV,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { timestampsToCaptions } from "./captions.js";
|
|
|
3
3
|
export { cloneVoice } from "./clone-voice.js";
|
|
4
4
|
export { ConversationInputError, DialogueConstraintError, MixedDispatchError, StitchUnsupportedError, } from "./conversation/errors.js";
|
|
5
5
|
export { designVoice } from "./design-voice.js";
|
|
6
|
-
export { ApiError, AudioOutputInputError, CloneSampleFetchError, GatewayInputError, InvalidCloneFieldError, InvalidDesignFieldError, MissingApiKeyError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, StreamingNotSupportedError, TextChunkingUnsupportedError, TimestampKeyMissingError, TooManyCloneSamplesError, UnsupportedSampleRateError, VoiceCloningUnsupportedError, VoiceDesignUnsupportedError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
|
|
6
|
+
export { ApiError, AudioOutputInputError, CloneSampleFetchError, GatewayInputError, InvalidCloneFieldError, InvalidDesignFieldError, MissingApiKeyError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, SpeechSdkProviderError, StreamingNotSupportedError, TextChunkingUnsupportedError, TimestampKeyMissingError, TooManyCloneSamplesError, UnsupportedSampleRateError, VoiceCloningUnsupportedError, VoiceDesignUnsupportedError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
|
|
7
7
|
export { generateConversation } from "./generate-conversation.js";
|
|
8
8
|
export { generateSpeech } from "./generate-speech.js";
|
|
9
9
|
export { streamSpeech } from "./stream-speech.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAOrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAOrD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAKtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/provider-utils.d.ts
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
|
-
import { ApiError } from "./errors.js";
|
|
1
|
+
import { type ApiError, type ProviderErrorStage } from "./errors.js";
|
|
2
2
|
export declare const SDK_USER_AGENT = "jellypod-speech-sdk";
|
|
3
3
|
export declare function resolveApiKey(stored: string | undefined, envVar: string, providerName: string): string;
|
|
4
4
|
export declare function isRetriableApiError(error: ApiError): boolean;
|
|
5
5
|
export declare function parseRetryAfter(headerValue: string | null): number | undefined;
|
|
6
|
-
export
|
|
6
|
+
export interface ProviderErrorContext {
|
|
7
|
+
readonly message?: string;
|
|
8
|
+
readonly model?: string;
|
|
9
|
+
readonly provider: string;
|
|
10
|
+
readonly stage?: ProviderErrorStage;
|
|
11
|
+
}
|
|
12
|
+
export declare function handleErrorResponse(response: Response, context: ProviderErrorContext): Promise<void>;
|
|
7
13
|
//# sourceMappingURL=provider-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-utils.d.ts","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider-utils.d.ts","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAEb,KAAK,kBAAkB,EAExB,MAAM,aAAa,CAAC;AAGrB,eAAO,MAAM,cAAc,wBAAwB,CAAC;AAEpD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GACnB,MAAM,CAQR;AAgED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAQ5D;AAMD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,MAAM,GAAG,SAAS,CAgBpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC;CACrC;AAmBD,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
package/dist/provider-utils.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MissingApiKeyError, SpeechSdkProviderError, } from "./errors.js";
|
|
2
2
|
// Sent as X-User-Agent — User-Agent is a forbidden header name in browser fetch.
|
|
3
3
|
export const SDK_USER_AGENT = "jellypod-speech-sdk";
|
|
4
4
|
export function resolveApiKey(stored, envVar, providerName) {
|
|
@@ -12,30 +12,56 @@ export function resolveApiKey(stored, envVar, providerName) {
|
|
|
12
12
|
function truncate(body) {
|
|
13
13
|
return body.length > 200 ? `${body.slice(0, 200)}…` : body;
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function isRecord(value) {
|
|
16
|
+
return typeof value === "object" && value !== null;
|
|
17
|
+
}
|
|
18
|
+
function stringProperty(value, property) {
|
|
19
|
+
if (!isRecord(value)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const candidate = value[property];
|
|
23
|
+
return typeof candidate === "string" ? candidate : undefined;
|
|
24
|
+
}
|
|
25
|
+
function providerErrorStage(value) {
|
|
26
|
+
const stage = stringProperty(value, "stage");
|
|
27
|
+
return stage === "alignment" || stage === "synthesis" ? stage : undefined;
|
|
28
|
+
}
|
|
29
|
+
function parseErrorBody(body) {
|
|
16
30
|
if (!body) {
|
|
17
31
|
return {};
|
|
18
32
|
}
|
|
19
33
|
try {
|
|
20
34
|
const json = JSON.parse(body);
|
|
35
|
+
const error = isRecord(json) ? json.error : undefined;
|
|
21
36
|
const candidates = [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
json
|
|
25
|
-
json
|
|
37
|
+
typeof error === "string" ? error : undefined,
|
|
38
|
+
stringProperty(error, "message"),
|
|
39
|
+
stringProperty(json, "message"),
|
|
40
|
+
stringProperty(json, "detail"),
|
|
26
41
|
];
|
|
27
42
|
const message = candidates.find((c) => typeof c === "string") ??
|
|
28
43
|
truncate(body);
|
|
29
|
-
const code =
|
|
30
|
-
|
|
44
|
+
const code = stringProperty(json, "code") ??
|
|
45
|
+
stringProperty(error, "code") ??
|
|
46
|
+
stringProperty(error, "status") ??
|
|
47
|
+
stringProperty(json, "status");
|
|
48
|
+
const requestId = stringProperty(json, "requestId") ??
|
|
49
|
+
stringProperty(json, "request_id") ??
|
|
50
|
+
stringProperty(error, "requestId") ??
|
|
51
|
+
stringProperty(error, "request_id");
|
|
52
|
+
const stage = providerErrorStage(json) ?? providerErrorStage(error);
|
|
53
|
+
return { message, code, details: json, requestId, stage };
|
|
31
54
|
}
|
|
32
55
|
catch {
|
|
33
|
-
return { message: truncate(body) };
|
|
56
|
+
return { message: truncate(body), details: body };
|
|
34
57
|
}
|
|
35
58
|
}
|
|
36
59
|
// 501 is terminal — gateway uses it for "capability will never work" (e.g. timestamps_unsupported).
|
|
37
60
|
// 429 retry honors Retry-After in retry-options.ts (RFC 7231 §7.1.3).
|
|
38
61
|
export function isRetriableApiError(error) {
|
|
62
|
+
if (error instanceof SpeechSdkProviderError) {
|
|
63
|
+
return error.retryable;
|
|
64
|
+
}
|
|
39
65
|
if (error.statusCode === 429) {
|
|
40
66
|
return true;
|
|
41
67
|
}
|
|
@@ -61,20 +87,44 @@ export function parseRetryAfter(headerValue) {
|
|
|
61
87
|
}
|
|
62
88
|
return Math.max(0, dateMs - Date.now());
|
|
63
89
|
}
|
|
64
|
-
|
|
90
|
+
const REQUEST_ID_HEADERS = [
|
|
91
|
+
"request-id",
|
|
92
|
+
"x-request-id",
|
|
93
|
+
"x-goog-request-id",
|
|
94
|
+
"x-amzn-requestid",
|
|
95
|
+
];
|
|
96
|
+
function responseRequestId(response) {
|
|
97
|
+
for (const header of REQUEST_ID_HEADERS) {
|
|
98
|
+
const value = response.headers.get(header);
|
|
99
|
+
if (value) {
|
|
100
|
+
return value;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
export async function handleErrorResponse(response, context) {
|
|
65
106
|
if (response.ok) {
|
|
66
107
|
return;
|
|
67
108
|
}
|
|
68
|
-
const
|
|
69
|
-
const
|
|
70
|
-
const message =
|
|
71
|
-
|
|
72
|
-
|
|
109
|
+
const rawResponse = await response.text().catch(() => undefined);
|
|
110
|
+
const parsed = parseErrorBody(rawResponse);
|
|
111
|
+
const message = context.message ??
|
|
112
|
+
(parsed.message
|
|
113
|
+
? `API error ${response.status}: ${parsed.message}`
|
|
114
|
+
: `API error ${response.status}`);
|
|
73
115
|
const retryAfterMs = parseRetryAfter(response.headers.get("retry-after"));
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
116
|
+
const retryable = response.status === 429 ||
|
|
117
|
+
(response.status >= 500 && response.status !== 501);
|
|
118
|
+
throw new SpeechSdkProviderError(message, {
|
|
119
|
+
status: response.status,
|
|
120
|
+
provider: context.provider,
|
|
121
|
+
model: context.model,
|
|
122
|
+
code: parsed.code,
|
|
123
|
+
details: parsed.details,
|
|
124
|
+
rawResponse,
|
|
125
|
+
requestId: responseRequestId(response) ?? parsed.requestId,
|
|
126
|
+
retryable,
|
|
127
|
+
stage: context.stage ?? parsed.stage,
|
|
78
128
|
...(retryAfterMs != null && { retryAfterMs }),
|
|
79
129
|
});
|
|
80
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-utils.js","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider-utils.js","sourceRoot":"","sources":["../src/provider-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/cartesia/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,uBAAuB,CAAC;AAc/B,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACd,KAAK,aAAa,EAElB,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,eAAO,MAAM,oBAAoB,EAAG,UAAmB,CAAC;AAmDxD,eAAO,MAAM,eAAe,EAAE,SAAS,SAAS,EAmBtC,CAAC;AAEX,qBAAa,sBAAuB,YAAW,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IAC3E,QAAQ,CAAC,EAAE,aAAwB;IACnC,QAAQ,CAAC,YAAY,eAAe;IAEpC,QAAQ,CAAC,MAAM,uBAAmB;IAElC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;IAEjE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CA2DrB;IAEX,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,4BAA4B;IAMhD,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IA2CjC,QAAQ,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,UAAU,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;KAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/cartesia/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,7 +201,11 @@ export class CartesiaSpeechProvider {
|
|
|
201
201
|
body: JSON.stringify(body),
|
|
202
202
|
signal: options.abortSignal,
|
|
203
203
|
});
|
|
204
|
-
await handleErrorResponse(response
|
|
204
|
+
await handleErrorResponse(response, {
|
|
205
|
+
provider: this.id,
|
|
206
|
+
model: options.modelId,
|
|
207
|
+
stage: "synthesis",
|
|
208
|
+
});
|
|
205
209
|
const arrayBuffer = await response.arrayBuffer();
|
|
206
210
|
const mediaType = cartesiaMediaTypeForBody(body);
|
|
207
211
|
return {
|
|
@@ -237,7 +241,11 @@ export class CartesiaSpeechProvider {
|
|
|
237
241
|
body: JSON.stringify(body),
|
|
238
242
|
signal: options.abortSignal,
|
|
239
243
|
});
|
|
240
|
-
await handleErrorResponse(response
|
|
244
|
+
await handleErrorResponse(response, {
|
|
245
|
+
provider: this.id,
|
|
246
|
+
model: options.modelId,
|
|
247
|
+
stage: "synthesis",
|
|
248
|
+
});
|
|
241
249
|
if (!response.body) {
|
|
242
250
|
throw new SpeechSDKError(`cartesia/${options.modelId}: /tts/sse response has no body`);
|
|
243
251
|
}
|
|
@@ -274,7 +282,11 @@ export class CartesiaSpeechProvider {
|
|
|
274
282
|
body: JSON.stringify(body),
|
|
275
283
|
signal: options.abortSignal,
|
|
276
284
|
});
|
|
277
|
-
await handleErrorResponse(response
|
|
285
|
+
await handleErrorResponse(response, {
|
|
286
|
+
provider: this.id,
|
|
287
|
+
model: options.modelId,
|
|
288
|
+
stage: "synthesis",
|
|
289
|
+
});
|
|
278
290
|
if (!response.body) {
|
|
279
291
|
throw new Error(`cartesia/${options.modelId}: response has no body`);
|
|
280
292
|
}
|
|
@@ -378,7 +390,7 @@ export class CartesiaSpeechProvider {
|
|
|
378
390
|
body: form,
|
|
379
391
|
signal: options.abortSignal,
|
|
380
392
|
});
|
|
381
|
-
await handleErrorResponse(response);
|
|
393
|
+
await handleErrorResponse(response, { provider: this.id });
|
|
382
394
|
const json = (await response.json());
|
|
383
395
|
const voiceId = json.id;
|
|
384
396
|
if (typeof voiceId !== "string") {
|