@speech-sdk/core 0.6.2 → 0.8.0-alpha
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/LICENSE +202 -21
- package/README.md +267 -264
- package/dist/__tests__/e2e/_save-audio.d.ts +5 -24
- package/dist/__tests__/e2e/_save-audio.d.ts.map +1 -1
- package/dist/__tests__/e2e/_save-audio.js +19 -42
- package/dist/__tests__/e2e/_save-audio.js.map +1 -1
- package/dist/audio-duration.d.ts +0 -5
- package/dist/audio-duration.d.ts.map +1 -1
- package/dist/audio-duration.js +3 -10
- package/dist/audio-duration.js.map +1 -1
- package/dist/audio-utils.d.ts +1 -9
- package/dist/audio-utils.d.ts.map +1 -1
- package/dist/audio-utils.js +10 -13
- package/dist/audio-utils.js.map +1 -1
- package/dist/captions.d.ts +29 -0
- package/dist/captions.d.ts.map +1 -0
- package/dist/captions.js +193 -0
- package/dist/captions.js.map +1 -0
- package/dist/conversation/attribute-timestamps.d.ts +26 -0
- package/dist/conversation/attribute-timestamps.d.ts.map +1 -0
- package/dist/conversation/attribute-timestamps.js +276 -0
- package/dist/conversation/attribute-timestamps.js.map +1 -0
- package/dist/conversation/dispatch.d.ts +5 -5
- package/dist/conversation/dispatch.d.ts.map +1 -1
- package/dist/conversation/dispatch.js +18 -8
- package/dist/conversation/dispatch.js.map +1 -1
- package/dist/conversation/errors.d.ts +3 -0
- package/dist/conversation/errors.d.ts.map +1 -1
- package/dist/conversation/errors.js +6 -0
- package/dist/conversation/errors.js.map +1 -1
- package/dist/conversation/pcm-concat.d.ts +0 -23
- package/dist/conversation/pcm-concat.d.ts.map +1 -1
- package/dist/conversation/pcm-concat.js +5 -43
- package/dist/conversation/pcm-concat.js.map +1 -1
- package/dist/conversation/proportional-fill.d.ts +10 -0
- package/dist/conversation/proportional-fill.d.ts.map +1 -0
- package/dist/conversation/proportional-fill.js +64 -0
- package/dist/conversation/proportional-fill.js.map +1 -0
- package/dist/conversation/silence-detection.d.ts +14 -0
- package/dist/conversation/silence-detection.d.ts.map +1 -0
- package/dist/conversation/silence-detection.js +52 -0
- package/dist/conversation/silence-detection.js.map +1 -0
- package/dist/conversation/stitch.d.ts +3 -1
- package/dist/conversation/stitch.d.ts.map +1 -1
- package/dist/conversation/stitch.js +54 -13
- package/dist/conversation/stitch.js.map +1 -1
- package/dist/conversation/types.d.ts +1 -19
- package/dist/conversation/types.d.ts.map +1 -1
- package/dist/conversation/validate.d.ts +1 -16
- package/dist/conversation/validate.d.ts.map +1 -1
- package/dist/conversation/validate.js +29 -29
- package/dist/conversation/validate.js.map +1 -1
- package/dist/default-stt-fallback.d.ts +3 -0
- package/dist/default-stt-fallback.d.ts.map +1 -0
- package/dist/default-stt-fallback.js +11 -0
- package/dist/default-stt-fallback.js.map +1 -0
- package/dist/derive-timestamps.d.ts +10 -0
- package/dist/derive-timestamps.d.ts.map +1 -0
- package/dist/derive-timestamps.js +24 -0
- package/dist/derive-timestamps.js.map +1 -0
- package/dist/errors.d.ts +20 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +28 -2
- package/dist/errors.js.map +1 -1
- package/dist/generate-conversation.d.ts +5 -4
- package/dist/generate-conversation.d.ts.map +1 -1
- package/dist/generate-conversation.js +191 -38
- package/dist/generate-conversation.js.map +1 -1
- package/dist/generate-speech.d.ts +2 -10
- package/dist/generate-speech.d.ts.map +1 -1
- package/dist/generate-speech.js +111 -33
- package/dist/generate-speech.js.map +1 -1
- package/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +2 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +29 -0
- package/dist/logger.js.map +1 -0
- package/dist/metadata.d.ts +0 -22
- package/dist/metadata.d.ts.map +1 -1
- package/dist/provider-utils.d.ts +3 -1
- package/dist/provider-utils.d.ts.map +1 -1
- package/dist/provider-utils.js +36 -39
- package/dist/provider-utils.js.map +1 -1
- package/dist/providers/cartesia/alignment.d.ts +8 -0
- package/dist/providers/cartesia/alignment.d.ts.map +1 -0
- package/dist/providers/cartesia/alignment.js +18 -0
- package/dist/providers/cartesia/alignment.js.map +1 -0
- package/dist/providers/cartesia/index.d.ts +11 -13
- package/dist/providers/cartesia/index.d.ts.map +1 -1
- package/dist/providers/cartesia/index.js +184 -61
- package/dist/providers/cartesia/index.js.map +1 -1
- package/dist/providers/deepgram/index.d.ts +7 -8
- package/dist/providers/deepgram/index.d.ts.map +1 -1
- package/dist/providers/deepgram/index.js +17 -18
- package/dist/providers/deepgram/index.js.map +1 -1
- package/dist/providers/elevenlabs/alignment.d.ts +10 -0
- package/dist/providers/elevenlabs/alignment.d.ts.map +1 -0
- package/dist/providers/elevenlabs/alignment.js +47 -0
- package/dist/providers/elevenlabs/alignment.js.map +1 -0
- package/dist/providers/elevenlabs/index.d.ts +10 -26
- package/dist/providers/elevenlabs/index.d.ts.map +1 -1
- package/dist/providers/elevenlabs/index.js +216 -154
- package/dist/providers/elevenlabs/index.js.map +1 -1
- package/dist/providers/fal/index.d.ts +7 -43
- package/dist/providers/fal/index.d.ts.map +1 -1
- package/dist/providers/fal/index.js +37 -86
- package/dist/providers/fal/index.js.map +1 -1
- package/dist/providers/fish-audio/index.d.ts +7 -8
- package/dist/providers/fish-audio/index.d.ts.map +1 -1
- package/dist/providers/fish-audio/index.js +23 -19
- package/dist/providers/fish-audio/index.js.map +1 -1
- package/dist/providers/gateway/index.d.ts +68 -0
- package/dist/providers/gateway/index.d.ts.map +1 -0
- package/dist/providers/gateway/index.js +236 -0
- package/dist/providers/gateway/index.js.map +1 -0
- package/dist/providers/google/index.d.ts +7 -20
- package/dist/providers/google/index.d.ts.map +1 -1
- package/dist/providers/google/index.js +161 -151
- package/dist/providers/google/index.js.map +1 -1
- package/dist/providers/hume/alignment.d.ts +33 -0
- package/dist/providers/hume/alignment.d.ts.map +1 -0
- package/dist/providers/hume/alignment.js +37 -0
- package/dist/providers/hume/alignment.js.map +1 -0
- package/dist/providers/hume/index.d.ts +11 -13
- package/dist/providers/hume/index.d.ts.map +1 -1
- package/dist/providers/hume/index.js +105 -41
- package/dist/providers/hume/index.js.map +1 -1
- package/dist/providers/inworld/alignment.d.ts +11 -0
- package/dist/providers/inworld/alignment.d.ts.map +1 -0
- package/dist/providers/inworld/alignment.js +24 -0
- package/dist/providers/inworld/alignment.js.map +1 -0
- package/dist/providers/inworld/index.d.ts +10 -14
- package/dist/providers/inworld/index.d.ts.map +1 -1
- package/dist/providers/inworld/index.js +55 -38
- package/dist/providers/inworld/index.js.map +1 -1
- package/dist/providers/mistral/index.d.ts +7 -8
- package/dist/providers/mistral/index.d.ts.map +1 -1
- package/dist/providers/mistral/index.js +39 -38
- package/dist/providers/mistral/index.js.map +1 -1
- package/dist/providers/murf/alignment.d.ts +13 -0
- package/dist/providers/murf/alignment.d.ts.map +1 -0
- package/dist/providers/murf/alignment.js +22 -0
- package/dist/providers/murf/alignment.js.map +1 -0
- package/dist/providers/murf/index.d.ts +11 -13
- package/dist/providers/murf/index.d.ts.map +1 -1
- package/dist/providers/murf/index.js +73 -56
- package/dist/providers/murf/index.js.map +1 -1
- package/dist/providers/openai/index.d.ts +36 -20
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +270 -102
- package/dist/providers/openai/index.js.map +1 -1
- package/dist/providers/resemble/alignment.d.ts +11 -0
- package/dist/providers/resemble/alignment.d.ts.map +1 -0
- package/dist/providers/resemble/alignment.js +54 -0
- package/dist/providers/resemble/alignment.js.map +1 -0
- package/dist/providers/resemble/index.d.ts +10 -8
- package/dist/providers/resemble/index.d.ts.map +1 -1
- package/dist/providers/resemble/index.js +58 -40
- package/dist/providers/resemble/index.js.map +1 -1
- package/dist/providers/xai/index.d.ts +7 -9
- package/dist/providers/xai/index.d.ts.map +1 -1
- package/dist/providers/xai/index.js +37 -40
- package/dist/providers/xai/index.js.map +1 -1
- package/dist/providers.d.ts +29 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +15 -0
- package/dist/providers.js.map +1 -0
- package/dist/resolve-provider.d.ts.map +1 -1
- package/dist/resolve-provider.js +7 -59
- package/dist/resolve-provider.js.map +1 -1
- package/dist/speech-provider.d.ts +19 -15
- package/dist/speech-provider.d.ts.map +1 -1
- package/dist/speech-provider.js +9 -14
- package/dist/speech-provider.js.map +1 -1
- package/dist/speech-result.d.ts +5 -0
- package/dist/speech-result.d.ts.map +1 -1
- package/dist/speech-result.js.map +1 -1
- package/dist/speech-to-text-provider.d.ts +28 -0
- package/dist/speech-to-text-provider.d.ts.map +1 -0
- package/dist/speech-to-text-provider.js +2 -0
- package/dist/speech-to-text-provider.js.map +1 -0
- package/dist/stream-speech.d.ts.map +1 -1
- package/dist/stream-speech.js +2 -3
- package/dist/stream-speech.js.map +1 -1
- package/dist/timestamps.d.ts +9 -0
- package/dist/timestamps.d.ts.map +1 -0
- package/dist/timestamps.js +2 -0
- package/dist/timestamps.js.map +1 -0
- package/dist/turns.d.ts +9 -0
- package/dist/turns.d.ts.map +1 -0
- package/dist/turns.js +21 -0
- package/dist/turns.js.map +1 -0
- package/dist/types.d.ts +25 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/volume-adjust.d.ts +0 -6
- package/dist/volume-adjust.d.ts.map +1 -1
- package/dist/volume-adjust.js +0 -6
- package/dist/volume-adjust.js.map +1 -1
- package/package.json +12 -63
|
@@ -1,33 +1,47 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { base64ToUint8Array } from "../../audio-utils.js";
|
|
3
|
+
import { SpeechSDKError } from "../../errors.js";
|
|
1
4
|
import { handleErrorResponse, resolveApiKey, SDK_USER_AGENT, } from "../../provider-utils.js";
|
|
5
|
+
import { humeSnippetSchema, snippetsToWordTimestamps } from "./alignment.js";
|
|
6
|
+
const ttsResponseSchema = z.object({
|
|
7
|
+
generations: z
|
|
8
|
+
.array(z.object({
|
|
9
|
+
audio: z.string().optional(),
|
|
10
|
+
snippets: z.array(z.array(humeSnippetSchema)).optional(),
|
|
11
|
+
}))
|
|
12
|
+
.optional(),
|
|
13
|
+
});
|
|
14
|
+
export const HUME_PROVIDER_ID = "hume";
|
|
15
|
+
export const HUME_MODELS = [
|
|
16
|
+
{
|
|
17
|
+
id: "octave-2",
|
|
18
|
+
releaseDate: "2025-10-01",
|
|
19
|
+
languages: [
|
|
20
|
+
"en",
|
|
21
|
+
"fr",
|
|
22
|
+
"de",
|
|
23
|
+
"es",
|
|
24
|
+
"pt",
|
|
25
|
+
"ja",
|
|
26
|
+
"ko",
|
|
27
|
+
"hi",
|
|
28
|
+
"it",
|
|
29
|
+
"ar",
|
|
30
|
+
"ru",
|
|
31
|
+
],
|
|
32
|
+
features: ["streaming", "inline-voice-cloning", "timestamps"],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "octave-1",
|
|
36
|
+
releaseDate: "2025-03-01",
|
|
37
|
+
languages: ["en"],
|
|
38
|
+
features: ["streaming"],
|
|
39
|
+
},
|
|
40
|
+
];
|
|
2
41
|
export class HumeSpeechProvider {
|
|
3
|
-
id =
|
|
42
|
+
id = HUME_PROVIDER_ID;
|
|
4
43
|
defaultModel = "octave-2";
|
|
5
|
-
models =
|
|
6
|
-
{
|
|
7
|
-
id: "octave-2",
|
|
8
|
-
releaseDate: "2025-10-01",
|
|
9
|
-
languages: [
|
|
10
|
-
"en",
|
|
11
|
-
"fr",
|
|
12
|
-
"de",
|
|
13
|
-
"es",
|
|
14
|
-
"pt",
|
|
15
|
-
"ja",
|
|
16
|
-
"ko",
|
|
17
|
-
"hi",
|
|
18
|
-
"it",
|
|
19
|
-
"ar",
|
|
20
|
-
"ru",
|
|
21
|
-
],
|
|
22
|
-
features: ["streaming", "inline-voice-cloning"],
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
id: "octave-1",
|
|
26
|
-
releaseDate: "2025-03-01",
|
|
27
|
-
languages: ["en"],
|
|
28
|
-
features: ["streaming"],
|
|
29
|
-
},
|
|
30
|
-
];
|
|
44
|
+
models = HUME_MODELS;
|
|
31
45
|
apiKey;
|
|
32
46
|
baseURL;
|
|
33
47
|
fetchFn;
|
|
@@ -43,7 +57,7 @@ export class HumeSpeechProvider {
|
|
|
43
57
|
if (modelId === "octave-1") {
|
|
44
58
|
return "1";
|
|
45
59
|
}
|
|
46
|
-
return
|
|
60
|
+
return;
|
|
47
61
|
}
|
|
48
62
|
async generate(options) {
|
|
49
63
|
const utterance = { text: options.text };
|
|
@@ -58,6 +72,10 @@ export class HumeSpeechProvider {
|
|
|
58
72
|
if (version != null) {
|
|
59
73
|
body.version = version;
|
|
60
74
|
}
|
|
75
|
+
// Native timestamps are Octave-2 only and only on JSON /v0/tts (/v0/tts/file is bytes-only).
|
|
76
|
+
if (options.includeTimestamps && version === "2") {
|
|
77
|
+
return this.generateWithTimestamps(options, body);
|
|
78
|
+
}
|
|
61
79
|
const url = `${this.baseURL}/tts/file`;
|
|
62
80
|
const response = await this.fetchFn(url, {
|
|
63
81
|
method: "POST",
|
|
@@ -70,7 +88,7 @@ export class HumeSpeechProvider {
|
|
|
70
88
|
body: JSON.stringify(body),
|
|
71
89
|
signal: options.abortSignal,
|
|
72
90
|
});
|
|
73
|
-
await handleErrorResponse(response
|
|
91
|
+
await handleErrorResponse(response);
|
|
74
92
|
const arrayBuffer = await response.arrayBuffer();
|
|
75
93
|
const mediaType = response.headers.get("content-type") ?? "audio/mpeg";
|
|
76
94
|
return {
|
|
@@ -78,6 +96,43 @@ export class HumeSpeechProvider {
|
|
|
78
96
|
mediaType,
|
|
79
97
|
};
|
|
80
98
|
}
|
|
99
|
+
async generateWithTimestamps(options, baseBody) {
|
|
100
|
+
// split_utterances:false keeps one snippet per utterance so timestamps line up byte-for-byte with returned audio.
|
|
101
|
+
const body = {
|
|
102
|
+
...baseBody,
|
|
103
|
+
include_timestamp_types: ["word"],
|
|
104
|
+
split_utterances: false,
|
|
105
|
+
};
|
|
106
|
+
const url = `${this.baseURL}/tts`;
|
|
107
|
+
const response = await this.fetchFn(url, {
|
|
108
|
+
method: "POST",
|
|
109
|
+
headers: {
|
|
110
|
+
"Content-Type": "application/json",
|
|
111
|
+
"X-Hume-Api-Key": resolveApiKey(this.apiKey, "HUME_API_KEY", "Hume"),
|
|
112
|
+
"X-User-Agent": SDK_USER_AGENT,
|
|
113
|
+
...options.headers,
|
|
114
|
+
},
|
|
115
|
+
body: JSON.stringify(body),
|
|
116
|
+
signal: options.abortSignal,
|
|
117
|
+
});
|
|
118
|
+
await handleErrorResponse(response);
|
|
119
|
+
const payload = ttsResponseSchema.parse(await response.json());
|
|
120
|
+
const gen = payload.generations?.[0];
|
|
121
|
+
if (!gen?.audio) {
|
|
122
|
+
throw new SpeechSDKError(`hume/${options.modelId}: /v0/tts response missing generations[0].audio`);
|
|
123
|
+
}
|
|
124
|
+
const audio = base64ToUint8Array(gen.audio);
|
|
125
|
+
const timestamps = gen.snippets
|
|
126
|
+
? snippetsToWordTimestamps(gen.snippets)
|
|
127
|
+
: undefined;
|
|
128
|
+
// No Content-Type for base64-in-JSON audio bytes; derive from requested format.
|
|
129
|
+
const format = (baseBody.format ?? {});
|
|
130
|
+
return {
|
|
131
|
+
audio,
|
|
132
|
+
mediaType: humeFormatToMediaType(format.type),
|
|
133
|
+
timestamps,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
81
136
|
async stream(options) {
|
|
82
137
|
const utterance = { text: options.text };
|
|
83
138
|
if (options.voice) {
|
|
@@ -103,7 +158,7 @@ export class HumeSpeechProvider {
|
|
|
103
158
|
body: JSON.stringify(body),
|
|
104
159
|
signal: options.abortSignal,
|
|
105
160
|
});
|
|
106
|
-
await handleErrorResponse(response
|
|
161
|
+
await handleErrorResponse(response);
|
|
107
162
|
if (!response.body) {
|
|
108
163
|
throw new Error(`hume/${options.modelId}: response has no body`);
|
|
109
164
|
}
|
|
@@ -114,26 +169,20 @@ export class HumeSpeechProvider {
|
|
|
114
169
|
}
|
|
115
170
|
getStitchOptions(modelId) {
|
|
116
171
|
if (this.models.some((m) => m.id === modelId)) {
|
|
117
|
-
// Hume Octave always
|
|
118
|
-
// API only accepts { type: "mp3" | "wav" | "pcm" } — there is no
|
|
119
|
-
// sample-rate option (verified against the Hume TS SDK's FormatPcm
|
|
120
|
-
// type and Hume's own 48 kHz "professional audio" claim). The
|
|
121
|
-
// response content-type omits the rate, so we declare it here for
|
|
122
|
-
// the stitch decoder.
|
|
172
|
+
// Hume Octave is always 48 kHz mono s16 PCM; /v0/tts/file has no rate option and the response omits it.
|
|
123
173
|
return {
|
|
124
174
|
providerOptions: { format: { type: "pcm" } },
|
|
125
175
|
mediaType: "audio/pcm;rate=48000",
|
|
126
176
|
};
|
|
127
177
|
}
|
|
128
|
-
return
|
|
178
|
+
return;
|
|
129
179
|
}
|
|
130
180
|
dialogueCapabilities(modelId) {
|
|
131
181
|
if (this.models.some((m) => m.id === modelId)) {
|
|
132
|
-
// Hume
|
|
133
|
-
// voice ceiling (4) to stay conservative.
|
|
182
|
+
// Hume publishes no hard maximum; cap conservatively at SDK-wide unique-voice ceiling of 4.
|
|
134
183
|
return { minVoices: 1, maxVoices: 4 };
|
|
135
184
|
}
|
|
136
|
-
return
|
|
185
|
+
return;
|
|
137
186
|
}
|
|
138
187
|
async generateDialogue(options) {
|
|
139
188
|
const utterances = options.turns.map((t) => ({
|
|
@@ -160,7 +209,7 @@ export class HumeSpeechProvider {
|
|
|
160
209
|
body: JSON.stringify(body),
|
|
161
210
|
signal: options.abortSignal,
|
|
162
211
|
});
|
|
163
|
-
await handleErrorResponse(response
|
|
212
|
+
await handleErrorResponse(response);
|
|
164
213
|
const arrayBuffer = await response.arrayBuffer();
|
|
165
214
|
return {
|
|
166
215
|
audio: new Uint8Array(arrayBuffer),
|
|
@@ -170,11 +219,26 @@ export class HumeSpeechProvider {
|
|
|
170
219
|
}
|
|
171
220
|
export function createHume(config = {}) {
|
|
172
221
|
const provider = new HumeSpeechProvider(config);
|
|
222
|
+
const fallbackSTT = config.fallbackSTT;
|
|
173
223
|
return function hume(modelId) {
|
|
174
224
|
return {
|
|
175
225
|
provider,
|
|
176
226
|
modelId: modelId ?? provider.defaultModel,
|
|
227
|
+
...(fallbackSTT && { fallbackSTT }),
|
|
177
228
|
};
|
|
178
229
|
};
|
|
179
230
|
}
|
|
231
|
+
// Hume's PCM mode is always 48 kHz mono s16.
|
|
232
|
+
function humeFormatToMediaType(formatType) {
|
|
233
|
+
if (!formatType) {
|
|
234
|
+
return "audio/mpeg";
|
|
235
|
+
}
|
|
236
|
+
if (formatType === "wav") {
|
|
237
|
+
return "audio/wav";
|
|
238
|
+
}
|
|
239
|
+
if (formatType === "pcm") {
|
|
240
|
+
return "audio/pcm;rate=48000";
|
|
241
|
+
}
|
|
242
|
+
return "audio/mpeg";
|
|
243
|
+
}
|
|
180
244
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/hume/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/hume/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { WordTimestamp } from "../../timestamps.js";
|
|
3
|
+
export declare const inworldWordAlignmentSchema: z.ZodObject<{
|
|
4
|
+
phoneticDetails: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
|
|
5
|
+
wordEndTimeSeconds: z.ZodArray<z.ZodNumber>;
|
|
6
|
+
wordStartTimeSeconds: z.ZodArray<z.ZodNumber>;
|
|
7
|
+
words: z.ZodArray<z.ZodString>;
|
|
8
|
+
}, z.core.$strip>;
|
|
9
|
+
export type InworldWordAlignment = z.infer<typeof inworldWordAlignmentSchema>;
|
|
10
|
+
export declare function wordAlignmentToWordTimestamps(alignment: InworldWordAlignment): WordTimestamp[];
|
|
11
|
+
//# sourceMappingURL=alignment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../../src/providers/inworld/alignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,eAAO,MAAM,0BAA0B;;;;;iBAKrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,oBAAoB,GAC9B,aAAa,EAAE,CAkBjB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// Inworld `timestampInfo.wordAlignment` (timestamp_type: "WORD"). Times in seconds.
|
|
3
|
+
export const inworldWordAlignmentSchema = z.object({
|
|
4
|
+
phoneticDetails: z.array(z.unknown()).optional(),
|
|
5
|
+
wordEndTimeSeconds: z.array(z.number()),
|
|
6
|
+
wordStartTimeSeconds: z.array(z.number()),
|
|
7
|
+
words: z.array(z.string()),
|
|
8
|
+
});
|
|
9
|
+
export function wordAlignmentToWordTimestamps(alignment) {
|
|
10
|
+
const len = Math.min(alignment.words.length, alignment.wordStartTimeSeconds.length, alignment.wordEndTimeSeconds.length);
|
|
11
|
+
const out = [];
|
|
12
|
+
for (let i = 0; i < len; i++) {
|
|
13
|
+
const text = alignment.words[i];
|
|
14
|
+
const start = alignment.wordStartTimeSeconds[i];
|
|
15
|
+
const end = alignment.wordEndTimeSeconds[i];
|
|
16
|
+
// Drop empty-string entries (Inworld emits them for silence/punctuation).
|
|
17
|
+
if (text == null || start == null || end == null || text.length === 0) {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
out.push({ text, start, end });
|
|
21
|
+
}
|
|
22
|
+
return out;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=alignment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../../src/providers/inworld/alignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,oFAAoF;AACpF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChD,kBAAkB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,oBAAoB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3B,CAAC,CAAC;AAGH,MAAM,UAAU,6BAA6B,CAC3C,SAA+B;IAE/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAClB,SAAS,CAAC,KAAK,CAAC,MAAM,EACtB,SAAS,CAAC,oBAAoB,CAAC,MAAM,EACrC,SAAS,CAAC,kBAAkB,CAAC,MAAM,CACpC,CAAC;IACF,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAC5C,0EAA0E;QAC1E,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtE,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,24 +1,18 @@
|
|
|
1
|
-
import type { ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
1
|
+
import type { ModelInfo, ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
2
|
+
import type { ResolvedSTTModel } from "../../speech-to-text-provider.js";
|
|
3
|
+
import type { WordTimestamp } from "../../timestamps.js";
|
|
2
4
|
export interface InworldSpeechProviderConfig {
|
|
3
5
|
apiKey?: string;
|
|
4
6
|
baseURL?: string;
|
|
7
|
+
fallbackSTT?: ResolvedSTTModel;
|
|
5
8
|
fetch?: typeof globalThis.fetch;
|
|
6
9
|
}
|
|
10
|
+
export declare const INWORLD_PROVIDER_ID: "inworld";
|
|
11
|
+
export declare const INWORLD_MODELS: readonly ModelInfo[];
|
|
7
12
|
export declare class InworldSpeechProvider implements SpeechProvider<string, string> {
|
|
8
|
-
readonly id
|
|
13
|
+
readonly id: "inworld";
|
|
9
14
|
readonly defaultModel = "inworld-tts-1.5-max";
|
|
10
|
-
|
|
11
|
-
readonly models: readonly [{
|
|
12
|
-
readonly id: "inworld-tts-1.5-max";
|
|
13
|
-
readonly releaseDate: "2025-08-15";
|
|
14
|
-
readonly languages: readonly ["en", "es", "fr", "de", "it", "pt", "ja", "ko", "nl", "pl", "zh"];
|
|
15
|
-
readonly features: readonly ["streaming"];
|
|
16
|
-
}, {
|
|
17
|
-
readonly id: "inworld-tts-1.5-mini";
|
|
18
|
-
readonly releaseDate: "2025-08-15";
|
|
19
|
-
readonly languages: readonly ["en", "es", "fr", "de", "it", "pt", "ja", "ko", "nl", "pl", "zh"];
|
|
20
|
-
readonly features: readonly ["streaming"];
|
|
21
|
-
}];
|
|
15
|
+
readonly models: readonly ModelInfo[];
|
|
22
16
|
private readonly apiKey;
|
|
23
17
|
private readonly baseURL;
|
|
24
18
|
private readonly fetchFn;
|
|
@@ -31,10 +25,12 @@ export declare class InworldSpeechProvider implements SpeechProvider<string, str
|
|
|
31
25
|
providerOptions?: Record<string, unknown>;
|
|
32
26
|
abortSignal?: AbortSignal;
|
|
33
27
|
headers?: Record<string, string>;
|
|
28
|
+
includeTimestamps?: boolean;
|
|
34
29
|
}): Promise<{
|
|
35
30
|
audio: string;
|
|
36
31
|
mediaType: string;
|
|
37
32
|
providerMetadata?: Record<string, unknown>;
|
|
33
|
+
timestamps?: WordTimestamp[];
|
|
38
34
|
}>;
|
|
39
35
|
stream(options: {
|
|
40
36
|
modelId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/inworld/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/inworld/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAazD,MAAM,WAAW,2BAA2B;IAC1C,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;AA0BD,eAAO,MAAM,mBAAmB,EAAG,SAAkB,CAAC;AAiBtD,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAarC,CAAC;AAEX,qBAAa,qBAAsB,YAAW,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IAC1E,QAAQ,CAAC,EAAE,YAAuB;IAClC,QAAQ,CAAC,YAAY,yBAAyB;IAE9C,QAAQ,CAAC,MAAM,uBAAkB;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,2BAA2B;IAM/C,OAAO,CAAC,SAAS;IA4BX,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,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;KAC9B,CAAC;IAgDI,MAAM,CAAC,OAAO,EAAE;QACpB,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;KAClC,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;IAqCF,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;;;;;;;CAcjC;AA4GD,wBAAgB,aAAa,CAAC,MAAM,GAAE,2BAAgC,IAI5C,UAAU,MAAM,KAAG,aAAa,CAAC,MAAM,CAAC,CAOjE"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { handleErrorResponse, resolveApiKey, SDK_USER_AGENT, } from "../../provider-utils.js";
|
|
3
|
+
import { inworldWordAlignmentSchema, wordAlignmentToWordTimestamps, } from "./alignment.js";
|
|
4
|
+
const ttsResponseSchema = z.object({
|
|
5
|
+
audioContent: z.string().optional(),
|
|
6
|
+
timestampInfo: z
|
|
7
|
+
.object({ wordAlignment: inworldWordAlignmentSchema.optional() })
|
|
8
|
+
.optional(),
|
|
9
|
+
});
|
|
2
10
|
const DEFAULT_AUDIO_ENCODING = "MP3";
|
|
3
11
|
const DEFAULT_SAMPLE_RATE_HERTZ = 48_000;
|
|
4
12
|
function mediaTypeForEncoding(encoding) {
|
|
@@ -15,38 +23,39 @@ function mediaTypeForEncoding(encoding) {
|
|
|
15
23
|
return "audio/mpeg";
|
|
16
24
|
}
|
|
17
25
|
}
|
|
26
|
+
export const INWORLD_PROVIDER_ID = "inworld";
|
|
27
|
+
// https://docs.inworld.ai/tts/overview#supported-languages
|
|
28
|
+
const INWORLD_LANGUAGES = [
|
|
29
|
+
"en",
|
|
30
|
+
"es",
|
|
31
|
+
"fr",
|
|
32
|
+
"de",
|
|
33
|
+
"it",
|
|
34
|
+
"pt",
|
|
35
|
+
"ja",
|
|
36
|
+
"ko",
|
|
37
|
+
"nl",
|
|
38
|
+
"pl",
|
|
39
|
+
"zh",
|
|
40
|
+
];
|
|
41
|
+
export const INWORLD_MODELS = [
|
|
42
|
+
{
|
|
43
|
+
id: "inworld-tts-1.5-max",
|
|
44
|
+
releaseDate: "2025-08-15",
|
|
45
|
+
languages: INWORLD_LANGUAGES,
|
|
46
|
+
features: ["streaming", "timestamps"],
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: "inworld-tts-1.5-mini",
|
|
50
|
+
releaseDate: "2025-08-15",
|
|
51
|
+
languages: INWORLD_LANGUAGES,
|
|
52
|
+
features: ["streaming", "timestamps"],
|
|
53
|
+
},
|
|
54
|
+
];
|
|
18
55
|
export class InworldSpeechProvider {
|
|
19
|
-
id =
|
|
56
|
+
id = INWORLD_PROVIDER_ID;
|
|
20
57
|
defaultModel = "inworld-tts-1.5-max";
|
|
21
|
-
|
|
22
|
-
// https://docs.inworld.ai/tts/overview#supported-languages
|
|
23
|
-
static LANGUAGES = [
|
|
24
|
-
"en",
|
|
25
|
-
"es",
|
|
26
|
-
"fr",
|
|
27
|
-
"de",
|
|
28
|
-
"it",
|
|
29
|
-
"pt",
|
|
30
|
-
"ja",
|
|
31
|
-
"ko",
|
|
32
|
-
"nl",
|
|
33
|
-
"pl",
|
|
34
|
-
"zh",
|
|
35
|
-
];
|
|
36
|
-
models = [
|
|
37
|
-
{
|
|
38
|
-
id: "inworld-tts-1.5-max",
|
|
39
|
-
releaseDate: "2025-08-15",
|
|
40
|
-
languages: InworldSpeechProvider.LANGUAGES,
|
|
41
|
-
features: ["streaming"],
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: "inworld-tts-1.5-mini",
|
|
45
|
-
releaseDate: "2025-08-15",
|
|
46
|
-
languages: InworldSpeechProvider.LANGUAGES,
|
|
47
|
-
features: ["streaming"],
|
|
48
|
-
},
|
|
49
|
-
];
|
|
58
|
+
models = INWORLD_MODELS;
|
|
50
59
|
apiKey;
|
|
51
60
|
baseURL;
|
|
52
61
|
fetchFn;
|
|
@@ -76,6 +85,9 @@ export class InworldSpeechProvider {
|
|
|
76
85
|
}
|
|
77
86
|
async generate(options) {
|
|
78
87
|
const { body, audioConfig } = this.buildBody(options.text, options.modelId, options.voice, options.providerOptions);
|
|
88
|
+
if (options.includeTimestamps) {
|
|
89
|
+
body.timestamp_type = "WORD";
|
|
90
|
+
}
|
|
79
91
|
const url = `${this.baseURL}/tts/v1/voice`;
|
|
80
92
|
const response = await this.fetchFn(url, {
|
|
81
93
|
method: "POST",
|
|
@@ -88,14 +100,19 @@ export class InworldSpeechProvider {
|
|
|
88
100
|
body: JSON.stringify(body),
|
|
89
101
|
signal: options.abortSignal,
|
|
90
102
|
});
|
|
91
|
-
await handleErrorResponse(response
|
|
92
|
-
const json = (await response.json());
|
|
103
|
+
await handleErrorResponse(response);
|
|
104
|
+
const json = ttsResponseSchema.parse(await response.json());
|
|
93
105
|
if (!json.audioContent) {
|
|
94
106
|
throw new Error(`inworld/${options.modelId}: response missing audioContent`);
|
|
95
107
|
}
|
|
108
|
+
const wordAlignment = json.timestampInfo?.wordAlignment;
|
|
109
|
+
const timestamps = options.includeTimestamps && wordAlignment
|
|
110
|
+
? wordAlignmentToWordTimestamps(wordAlignment)
|
|
111
|
+
: undefined;
|
|
96
112
|
return {
|
|
97
113
|
audio: json.audioContent,
|
|
98
114
|
mediaType: mediaTypeForEncoding(audioConfig.audio_encoding),
|
|
115
|
+
timestamps,
|
|
99
116
|
};
|
|
100
117
|
}
|
|
101
118
|
async stream(options) {
|
|
@@ -112,7 +129,7 @@ export class InworldSpeechProvider {
|
|
|
112
129
|
body: JSON.stringify(body),
|
|
113
130
|
signal: options.abortSignal,
|
|
114
131
|
});
|
|
115
|
-
await handleErrorResponse(response
|
|
132
|
+
await handleErrorResponse(response);
|
|
116
133
|
if (!response.body) {
|
|
117
134
|
throw new Error(`inworld/${options.modelId}: response has no body`);
|
|
118
135
|
}
|
|
@@ -133,7 +150,7 @@ export class InworldSpeechProvider {
|
|
|
133
150
|
mediaType: "audio/wav",
|
|
134
151
|
};
|
|
135
152
|
}
|
|
136
|
-
return
|
|
153
|
+
return;
|
|
137
154
|
}
|
|
138
155
|
}
|
|
139
156
|
function base64ToBytes(b64) {
|
|
@@ -203,8 +220,7 @@ function parseInworldNdjsonStream(source, model) {
|
|
|
203
220
|
}
|
|
204
221
|
catch (err) {
|
|
205
222
|
const error = err instanceof Error ? err : new Error(`${model}: ${String(err)}`);
|
|
206
|
-
// Cancel
|
|
207
|
-
// locked / hanging. Swallow cancel errors — we already have `error`.
|
|
223
|
+
// Cancel upstream so the fetch body isn't left locked; swallow cancel errors.
|
|
208
224
|
reader.cancel(error).catch(() => {
|
|
209
225
|
/* noop */
|
|
210
226
|
});
|
|
@@ -212,18 +228,19 @@ function parseInworldNdjsonStream(source, model) {
|
|
|
212
228
|
}
|
|
213
229
|
},
|
|
214
230
|
cancel(reason) {
|
|
215
|
-
//
|
|
216
|
-
// body so the HTTP connection can be released.
|
|
231
|
+
// Propagate cancel to upstream fetch so the HTTP connection is released.
|
|
217
232
|
return reader.cancel(reason);
|
|
218
233
|
},
|
|
219
234
|
});
|
|
220
235
|
}
|
|
221
236
|
export function createInworld(config = {}) {
|
|
222
237
|
const provider = new InworldSpeechProvider(config);
|
|
238
|
+
const fallbackSTT = config.fallbackSTT;
|
|
223
239
|
return function inworld(modelId) {
|
|
224
240
|
return {
|
|
225
241
|
provider,
|
|
226
242
|
modelId: modelId ?? provider.defaultModel,
|
|
243
|
+
...(fallbackSTT && { fallbackSTT }),
|
|
227
244
|
};
|
|
228
245
|
};
|
|
229
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/inworld/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/inworld/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import type { ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
1
|
+
import type { ModelInfo, ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
2
|
+
import type { ResolvedSTTModel } from "../../speech-to-text-provider.js";
|
|
2
3
|
export interface MistralSpeechProviderConfig {
|
|
3
4
|
apiKey?: string;
|
|
4
5
|
baseURL?: string;
|
|
6
|
+
fallbackSTT?: ResolvedSTTModel;
|
|
5
7
|
fetch?: typeof globalThis.fetch;
|
|
6
8
|
}
|
|
9
|
+
export declare const MISTRAL_PROVIDER_ID: "mistral";
|
|
10
|
+
export declare const MISTRAL_MODELS: readonly ModelInfo[];
|
|
7
11
|
export declare class MistralSpeechProvider implements SpeechProvider<string, string | {
|
|
8
12
|
audio: string | Uint8Array;
|
|
9
13
|
}> {
|
|
10
|
-
readonly id
|
|
14
|
+
readonly id: "mistral";
|
|
11
15
|
readonly defaultModel = "voxtral-mini-tts-2603";
|
|
12
|
-
readonly models: readonly [
|
|
13
|
-
readonly id: "voxtral-mini-tts-2603";
|
|
14
|
-
readonly releaseDate: "2026-03-23";
|
|
15
|
-
readonly languages: readonly ["en", "fr", "de", "es", "nl", "pt", "it", "hi", "ar"];
|
|
16
|
-
readonly features: readonly ["streaming", "open-source", "inline-voice-cloning"];
|
|
17
|
-
}];
|
|
16
|
+
readonly models: readonly ModelInfo[];
|
|
18
17
|
private readonly apiKey;
|
|
19
18
|
private readonly baseURL;
|
|
20
19
|
private readonly fetchFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/mistral/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/mistral/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AA0BzE,MAAM,WAAW,2BAA2B;IAC1C,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,mBAAmB,EAAG,SAAkB,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAOrC,CAAC;AAEX,qBAAa,qBACX,YAAW,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;IAE1E,QAAQ,CAAC,EAAE,YAAuB;IAClC,QAAQ,CAAC,YAAY,2BAA2B;IAChD,QAAQ,CAAC,MAAM,uBAAkB;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,2BAA2B;IAMzC,QAAQ,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;SAAE,CAAC;QAChD,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;KAClC,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAuDI,MAAM,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;SAAE,CAAC;QAChD,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;KAClC,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;IAkEF,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;;;;CAUjC;AAkBD,wBAAgB,aAAa,CAAC,MAAM,GAAE,2BAAgC,IAIlE,UAAU,MAAM,KACf,aAAa,CAAC,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,CAO1D"}
|