@juspay/neurolink 13.6.5 → 13.8.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/CHANGELOG.md +6 -2
- package/dist/auth/sessionManager.js +8 -3
- package/dist/browser/neurolink.min.js +480 -460
- package/dist/cli/commands/serve.js +11 -1
- package/dist/cli/commands/transcribe.js +39 -3
- package/dist/constants/langfuse.d.ts +2 -0
- package/dist/constants/langfuse.js +2 -0
- package/dist/core/redisConversationMemoryManager.js +6 -16
- package/dist/factories/sttDescriptors.js +7 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -2
- package/dist/neurolink.js +33 -1
- package/dist/observability/exporters/langfuseExporter.d.ts +4 -0
- package/dist/observability/exporters/langfuseExporter.js +29 -8
- package/dist/observability/otlpEncoding.js +2 -2
- package/dist/server/abstract/baseServerAdapter.js +2 -0
- package/dist/server/adapters/expressAdapter.js +1 -1
- package/dist/server/adapters/fastifyAdapter.js +4 -1
- package/dist/server/adapters/honoAdapter.js +1 -1
- package/dist/server/adapters/koaAdapter.js +1 -1
- package/dist/server/routes/transcribeRoutes.d.ts +0 -8
- package/dist/server/routes/transcribeRoutes.js +130 -3
- package/dist/server/utils/validation.d.ts +409 -15
- package/dist/server/utils/validation.js +106 -4
- package/dist/server/websocket/frameQueue.d.ts +16 -0
- package/dist/server/websocket/frameQueue.js +55 -0
- package/dist/server/websocket/realtimeTranscription.d.ts +48 -0
- package/dist/server/websocket/realtimeTranscription.js +603 -0
- package/dist/server/websocket/transcribeWebSocket.d.ts +17 -1
- package/dist/server/websocket/transcribeWebSocket.js +263 -64
- package/dist/services/server/ai/observability/langfuseSetup.js +6 -1
- package/dist/telemetry/attributes.d.ts +1 -1
- package/dist/telemetry/attributes.js +84 -8
- package/dist/types/cli.d.ts +6 -0
- package/dist/types/exporter.d.ts +3 -1
- package/dist/types/server.d.ts +304 -2
- package/dist/types/stt.d.ts +38 -3
- package/dist/types/transcribe.d.ts +401 -5
- package/dist/utils/redis.d.ts +17 -0
- package/dist/utils/redis.js +31 -0
- package/dist/voice/audioLevel.d.ts +14 -0
- package/dist/voice/audioLevel.js +60 -0
- package/dist/voice/codeMix.d.ts +40 -0
- package/dist/voice/codeMix.js +282 -0
- package/dist/voice/correction/align.d.ts +12 -0
- package/dist/voice/correction/align.js +48 -0
- package/dist/voice/correction/guards.d.ts +39 -0
- package/dist/voice/correction/guards.js +122 -0
- package/dist/voice/correction/index.d.ts +25 -3
- package/dist/voice/correction/index.js +132 -4
- package/dist/voice/correction/rewrite.d.ts +64 -3
- package/dist/voice/correction/rewrite.js +295 -25
- package/dist/voice/eval/sttEvalLangfuse.d.ts +14 -0
- package/dist/voice/eval/sttEvalLangfuse.js +182 -0
- package/dist/voice/eval/sttEvalStore.d.ts +27 -0
- package/dist/voice/eval/sttEvalStore.js +397 -0
- package/dist/voice/index.js +3 -0
- package/dist/voice/languages.d.ts +34 -0
- package/dist/voice/languages.js +290 -0
- package/dist/voice/modelAssets.d.ts +28 -0
- package/dist/voice/modelAssets.js +113 -0
- package/dist/voice/output/render.d.ts +32 -0
- package/dist/voice/output/render.js +368 -0
- package/dist/voice/providers/OpenAISTT.d.ts +11 -1
- package/dist/voice/providers/OpenAISTT.js +57 -6
- package/dist/voice/session/transcriptionSession.d.ts +55 -0
- package/dist/voice/session/transcriptionSession.js +225 -0
- package/dist/voice/streaming/chunkedStreamAdapter.d.ts +7 -0
- package/dist/voice/streaming/chunkedStreamAdapter.js +711 -28
- package/dist/voice/streaming/endpointer.d.ts +50 -17
- package/dist/voice/streaming/endpointer.js +115 -19
- package/dist/voice/transcribe.d.ts +18 -1
- package/dist/voice/transcribe.js +459 -18
- package/dist/voice/transcribeStream.d.ts +18 -1
- package/dist/voice/transcribeStream.js +413 -16
- package/dist/voice/vad/assets.d.ts +36 -0
- package/dist/voice/vad/assets.js +142 -0
- package/dist/voice/vad/frameScorer.d.ts +28 -0
- package/dist/voice/vad/frameScorer.js +90 -0
- package/dist/voice/vad/sileroVad.d.ts +43 -0
- package/dist/voice/vad/sileroVad.js +178 -0
- package/dist/voice/whistle/assets.d.ts +3 -4
- package/dist/voice/whistle/assets.js +11 -95
- package/docs-site/static/search-index.json +21 -6
- package/models/silero-vad/README.md +19 -0
- package/models/silero-vad/silero_vad.onnx +0 -0
- package/package.json +4 -1
|
@@ -173,12 +173,70 @@ export declare const TranscribeDictionaryEntrySchema: z.ZodObject<{
|
|
|
173
173
|
heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
174
174
|
meaning: z.ZodOptional<z.ZodString>;
|
|
175
175
|
}, z.core.$strip>;
|
|
176
|
-
/**
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
176
|
+
/** A BCP-47 output tag (`es`, `fr-CA`, `hi-Latn`, `zh-Hant`) or `source`. */
|
|
177
|
+
export declare const TranscribeOutputLanguageSchema: z.ZodString;
|
|
178
|
+
/** Output languages and how they are rendered. */
|
|
179
|
+
export declare const TranscribeOutputSchema: z.ZodObject<{
|
|
180
|
+
languages: z.ZodArray<z.ZodString>;
|
|
181
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
182
|
+
model: z.ZodOptional<z.ZodString>;
|
|
183
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
184
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
185
|
+
glossary: z.ZodOptional<z.ZodBoolean>;
|
|
186
|
+
}, z.core.$strip>;
|
|
187
|
+
/** A text frame on the transcribe WebSocket after the config: change the output languages. */
|
|
188
|
+
export declare const TranscribeOutputControlSchema: z.ZodObject<{
|
|
189
|
+
type: z.ZodLiteral<"output">;
|
|
190
|
+
languages: z.ZodArray<z.ZodString>;
|
|
191
|
+
}, z.core.$strip>;
|
|
192
|
+
/** A listener's frame on the session socket: which languages and speakers to follow. */
|
|
193
|
+
export declare const TranscribeSubscribeSchema: z.ZodObject<{
|
|
194
|
+
type: z.ZodLiteral<"subscribe">;
|
|
195
|
+
languages: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
196
|
+
speakers: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
197
|
+
backlog: z.ZodOptional<z.ZodBoolean>;
|
|
198
|
+
interim: z.ZodOptional<z.ZodBoolean>;
|
|
199
|
+
}, z.core.$strip>;
|
|
200
|
+
export declare const STTEvalSegmentSchema: z.ZodObject<{
|
|
201
|
+
id: z.ZodString;
|
|
202
|
+
source: z.ZodEnum<{
|
|
203
|
+
primary: "primary";
|
|
204
|
+
shadow: "shadow";
|
|
205
|
+
}>;
|
|
206
|
+
model: z.ZodString;
|
|
207
|
+
participant_identity: z.ZodString;
|
|
208
|
+
participant_name: z.ZodOptional<z.ZodString>;
|
|
209
|
+
text: z.ZodString;
|
|
210
|
+
language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
211
|
+
start_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
212
|
+
end_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
213
|
+
received_at: z.ZodNumber;
|
|
214
|
+
}, z.core.$strip>;
|
|
215
|
+
export declare const STTEvalBatchSchema: z.ZodObject<{
|
|
216
|
+
call_id: z.ZodString;
|
|
217
|
+
room: z.ZodOptional<z.ZodString>;
|
|
218
|
+
batch: z.ZodNumber;
|
|
219
|
+
final: z.ZodOptional<z.ZodBoolean>;
|
|
220
|
+
models: z.ZodObject<{
|
|
221
|
+
primary: z.ZodString;
|
|
222
|
+
shadow: z.ZodString;
|
|
223
|
+
}, z.core.$strip>;
|
|
224
|
+
segments: z.ZodArray<z.ZodObject<{
|
|
225
|
+
id: z.ZodString;
|
|
226
|
+
source: z.ZodEnum<{
|
|
227
|
+
primary: "primary";
|
|
228
|
+
shadow: "shadow";
|
|
229
|
+
}>;
|
|
230
|
+
model: z.ZodString;
|
|
231
|
+
participant_identity: z.ZodString;
|
|
232
|
+
participant_name: z.ZodOptional<z.ZodString>;
|
|
233
|
+
text: z.ZodString;
|
|
234
|
+
language: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
235
|
+
start_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
236
|
+
end_time: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
237
|
+
received_at: z.ZodNumber;
|
|
238
|
+
}, z.core.$strip>>;
|
|
239
|
+
}, z.core.$strip>;
|
|
182
240
|
export declare const TranscribeConfigSchema: z.ZodObject<{
|
|
183
241
|
provider: z.ZodOptional<z.ZodString>;
|
|
184
242
|
model: z.ZodOptional<z.ZodString>;
|
|
@@ -196,22 +254,32 @@ export declare const TranscribeConfigSchema: z.ZodObject<{
|
|
|
196
254
|
decide: "decide";
|
|
197
255
|
}>>;
|
|
198
256
|
decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
199
|
-
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
|
|
257
|
+
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodLiteral<"auto">, z.ZodObject<{
|
|
200
258
|
provider: z.ZodOptional<z.ZodString>;
|
|
201
259
|
model: z.ZodOptional<z.ZodString>;
|
|
202
260
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
261
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
262
|
+
auto: "auto";
|
|
263
|
+
always: "always";
|
|
264
|
+
}>>;
|
|
203
265
|
}, z.core.$strip>]>>;
|
|
266
|
+
perSentence: z.ZodOptional<z.ZodBoolean>;
|
|
204
267
|
transliterate: z.ZodOptional<z.ZodEnum<{
|
|
205
268
|
native: "native";
|
|
206
269
|
latin: "latin";
|
|
207
270
|
}>>;
|
|
208
271
|
punctuate: z.ZodOptional<z.ZodBoolean>;
|
|
209
|
-
|
|
272
|
+
cleanup: z.ZodOptional<z.ZodEnum<{
|
|
273
|
+
verbatim: "verbatim";
|
|
274
|
+
clean: "clean";
|
|
275
|
+
}>>;
|
|
276
|
+
secondOpinion: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodObject<{
|
|
210
277
|
provider: z.ZodString;
|
|
211
278
|
model: z.ZodOptional<z.ZodString>;
|
|
212
|
-
}, z.core.$strip>>;
|
|
279
|
+
}, z.core.$strip>]>>;
|
|
213
280
|
context: z.ZodOptional<z.ZodString>;
|
|
214
281
|
maxDropRatio: z.ZodOptional<z.ZodNumber>;
|
|
282
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
215
283
|
}, z.core.$strip>>;
|
|
216
284
|
fallback: z.ZodOptional<z.ZodObject<{
|
|
217
285
|
provider: z.ZodString;
|
|
@@ -222,6 +290,27 @@ export declare const TranscribeConfigSchema: z.ZodObject<{
|
|
|
222
290
|
unsure: "unsure";
|
|
223
291
|
}>>>;
|
|
224
292
|
}, z.core.$strip>>;
|
|
293
|
+
routing: z.ZodOptional<z.ZodObject<{
|
|
294
|
+
probe: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
+
lockAfterPasses: z.ZodOptional<z.ZodNumber>;
|
|
296
|
+
prior: z.ZodOptional<z.ZodEnum<{
|
|
297
|
+
none: "none";
|
|
298
|
+
carry: "carry";
|
|
299
|
+
}>>;
|
|
300
|
+
engines: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
301
|
+
}, z.core.$strip>>;
|
|
302
|
+
chunking: z.ZodOptional<z.ZodEnum<{
|
|
303
|
+
engine: "engine";
|
|
304
|
+
utterances: "utterances";
|
|
305
|
+
}>>;
|
|
306
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
307
|
+
languages: z.ZodArray<z.ZodString>;
|
|
308
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
309
|
+
model: z.ZodOptional<z.ZodString>;
|
|
310
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
311
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
312
|
+
glossary: z.ZodOptional<z.ZodBoolean>;
|
|
313
|
+
}, z.core.$strip>>;
|
|
225
314
|
diarization: z.ZodOptional<z.ZodBoolean>;
|
|
226
315
|
wordTimestamps: z.ZodOptional<z.ZodBoolean>;
|
|
227
316
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
@@ -246,22 +335,32 @@ export declare const TranscribeRequestSchema: z.ZodObject<{
|
|
|
246
335
|
decide: "decide";
|
|
247
336
|
}>>;
|
|
248
337
|
decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
249
|
-
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
|
|
338
|
+
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodLiteral<"auto">, z.ZodObject<{
|
|
250
339
|
provider: z.ZodOptional<z.ZodString>;
|
|
251
340
|
model: z.ZodOptional<z.ZodString>;
|
|
252
341
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
342
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
343
|
+
auto: "auto";
|
|
344
|
+
always: "always";
|
|
345
|
+
}>>;
|
|
253
346
|
}, z.core.$strip>]>>;
|
|
347
|
+
perSentence: z.ZodOptional<z.ZodBoolean>;
|
|
254
348
|
transliterate: z.ZodOptional<z.ZodEnum<{
|
|
255
349
|
native: "native";
|
|
256
350
|
latin: "latin";
|
|
257
351
|
}>>;
|
|
258
352
|
punctuate: z.ZodOptional<z.ZodBoolean>;
|
|
259
|
-
|
|
353
|
+
cleanup: z.ZodOptional<z.ZodEnum<{
|
|
354
|
+
verbatim: "verbatim";
|
|
355
|
+
clean: "clean";
|
|
356
|
+
}>>;
|
|
357
|
+
secondOpinion: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodObject<{
|
|
260
358
|
provider: z.ZodString;
|
|
261
359
|
model: z.ZodOptional<z.ZodString>;
|
|
262
|
-
}, z.core.$strip>>;
|
|
360
|
+
}, z.core.$strip>]>>;
|
|
263
361
|
context: z.ZodOptional<z.ZodString>;
|
|
264
362
|
maxDropRatio: z.ZodOptional<z.ZodNumber>;
|
|
363
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
265
364
|
}, z.core.$strip>>;
|
|
266
365
|
fallback: z.ZodOptional<z.ZodObject<{
|
|
267
366
|
provider: z.ZodString;
|
|
@@ -272,6 +371,27 @@ export declare const TranscribeRequestSchema: z.ZodObject<{
|
|
|
272
371
|
unsure: "unsure";
|
|
273
372
|
}>>>;
|
|
274
373
|
}, z.core.$strip>>;
|
|
374
|
+
routing: z.ZodOptional<z.ZodObject<{
|
|
375
|
+
probe: z.ZodOptional<z.ZodBoolean>;
|
|
376
|
+
lockAfterPasses: z.ZodOptional<z.ZodNumber>;
|
|
377
|
+
prior: z.ZodOptional<z.ZodEnum<{
|
|
378
|
+
none: "none";
|
|
379
|
+
carry: "carry";
|
|
380
|
+
}>>;
|
|
381
|
+
engines: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
382
|
+
}, z.core.$strip>>;
|
|
383
|
+
chunking: z.ZodOptional<z.ZodEnum<{
|
|
384
|
+
engine: "engine";
|
|
385
|
+
utterances: "utterances";
|
|
386
|
+
}>>;
|
|
387
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
388
|
+
languages: z.ZodArray<z.ZodString>;
|
|
389
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
390
|
+
model: z.ZodOptional<z.ZodString>;
|
|
391
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
392
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
393
|
+
glossary: z.ZodOptional<z.ZodBoolean>;
|
|
394
|
+
}, z.core.$strip>>;
|
|
275
395
|
diarization: z.ZodOptional<z.ZodBoolean>;
|
|
276
396
|
wordTimestamps: z.ZodOptional<z.ZodBoolean>;
|
|
277
397
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
@@ -312,22 +432,32 @@ export declare const TranscribeStreamConfigSchema: z.ZodObject<{
|
|
|
312
432
|
decide: "decide";
|
|
313
433
|
}>>;
|
|
314
434
|
decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
315
|
-
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodObject<{
|
|
435
|
+
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodLiteral<"auto">, z.ZodObject<{
|
|
316
436
|
provider: z.ZodOptional<z.ZodString>;
|
|
317
437
|
model: z.ZodOptional<z.ZodString>;
|
|
318
438
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
439
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
440
|
+
auto: "auto";
|
|
441
|
+
always: "always";
|
|
442
|
+
}>>;
|
|
319
443
|
}, z.core.$strip>]>>;
|
|
444
|
+
perSentence: z.ZodOptional<z.ZodBoolean>;
|
|
320
445
|
transliterate: z.ZodOptional<z.ZodEnum<{
|
|
321
446
|
native: "native";
|
|
322
447
|
latin: "latin";
|
|
323
448
|
}>>;
|
|
324
449
|
punctuate: z.ZodOptional<z.ZodBoolean>;
|
|
325
|
-
|
|
450
|
+
cleanup: z.ZodOptional<z.ZodEnum<{
|
|
451
|
+
verbatim: "verbatim";
|
|
452
|
+
clean: "clean";
|
|
453
|
+
}>>;
|
|
454
|
+
secondOpinion: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodObject<{
|
|
326
455
|
provider: z.ZodString;
|
|
327
456
|
model: z.ZodOptional<z.ZodString>;
|
|
328
|
-
}, z.core.$strip>>;
|
|
457
|
+
}, z.core.$strip>]>>;
|
|
329
458
|
context: z.ZodOptional<z.ZodString>;
|
|
330
459
|
maxDropRatio: z.ZodOptional<z.ZodNumber>;
|
|
460
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
331
461
|
}, z.core.$strip>>;
|
|
332
462
|
fallback: z.ZodOptional<z.ZodObject<{
|
|
333
463
|
provider: z.ZodString;
|
|
@@ -338,9 +468,34 @@ export declare const TranscribeStreamConfigSchema: z.ZodObject<{
|
|
|
338
468
|
unsure: "unsure";
|
|
339
469
|
}>>>;
|
|
340
470
|
}, z.core.$strip>>;
|
|
471
|
+
routing: z.ZodOptional<z.ZodObject<{
|
|
472
|
+
probe: z.ZodOptional<z.ZodBoolean>;
|
|
473
|
+
lockAfterPasses: z.ZodOptional<z.ZodNumber>;
|
|
474
|
+
prior: z.ZodOptional<z.ZodEnum<{
|
|
475
|
+
none: "none";
|
|
476
|
+
carry: "carry";
|
|
477
|
+
}>>;
|
|
478
|
+
engines: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
479
|
+
}, z.core.$strip>>;
|
|
480
|
+
chunking: z.ZodOptional<z.ZodEnum<{
|
|
481
|
+
engine: "engine";
|
|
482
|
+
utterances: "utterances";
|
|
483
|
+
}>>;
|
|
484
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
485
|
+
languages: z.ZodArray<z.ZodString>;
|
|
486
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
487
|
+
model: z.ZodOptional<z.ZodString>;
|
|
488
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
489
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
490
|
+
glossary: z.ZodOptional<z.ZodBoolean>;
|
|
491
|
+
}, z.core.$strip>>;
|
|
341
492
|
diarization: z.ZodOptional<z.ZodBoolean>;
|
|
342
493
|
wordTimestamps: z.ZodOptional<z.ZodBoolean>;
|
|
343
494
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
495
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
496
|
+
file: "file";
|
|
497
|
+
live: "live";
|
|
498
|
+
}>>;
|
|
344
499
|
streaming: z.ZodOptional<z.ZodObject<{
|
|
345
500
|
mode: z.ZodOptional<z.ZodEnum<{
|
|
346
501
|
auto: "auto";
|
|
@@ -355,8 +510,247 @@ export declare const TranscribeStreamConfigSchema: z.ZodObject<{
|
|
|
355
510
|
onsetRms: z.ZodOptional<z.ZodNumber>;
|
|
356
511
|
prerollMs: z.ZodOptional<z.ZodNumber>;
|
|
357
512
|
minSpeechMs: z.ZodOptional<z.ZodNumber>;
|
|
513
|
+
concurrency: z.ZodOptional<z.ZodNumber>;
|
|
514
|
+
finalRetries: z.ZodOptional<z.ZodNumber>;
|
|
515
|
+
vad: z.ZodOptional<z.ZodObject<{
|
|
516
|
+
engine: z.ZodOptional<z.ZodEnum<{
|
|
517
|
+
auto: "auto";
|
|
518
|
+
silero: "silero";
|
|
519
|
+
energy: "energy";
|
|
520
|
+
}>>;
|
|
521
|
+
onset: z.ZodOptional<z.ZodNumber>;
|
|
522
|
+
sustain: z.ZodOptional<z.ZodNumber>;
|
|
523
|
+
startMs: z.ZodOptional<z.ZodNumber>;
|
|
524
|
+
}, z.core.$strip>>;
|
|
525
|
+
normalize: z.ZodOptional<z.ZodBoolean>;
|
|
358
526
|
}, z.core.$strip>>;
|
|
359
527
|
}, z.core.$strip>;
|
|
528
|
+
export declare const STTRealtimeProfileSchema: z.ZodObject<{
|
|
529
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
530
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
531
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
532
|
+
languages: z.ZodArray<z.ZodString>;
|
|
533
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
534
|
+
model: z.ZodOptional<z.ZodString>;
|
|
535
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
536
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
537
|
+
glossary: z.ZodOptional<z.ZodBoolean>;
|
|
538
|
+
}, z.core.$strip>>;
|
|
539
|
+
model: z.ZodOptional<z.ZodString>;
|
|
540
|
+
streaming: z.ZodOptional<z.ZodObject<{
|
|
541
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
542
|
+
auto: "auto";
|
|
543
|
+
native: "native";
|
|
544
|
+
chunked: "chunked";
|
|
545
|
+
}>>;
|
|
546
|
+
sampleRate: z.ZodOptional<z.ZodNumber>;
|
|
547
|
+
endSilenceMs: z.ZodOptional<z.ZodNumber>;
|
|
548
|
+
intervalMs: z.ZodOptional<z.ZodNumber>;
|
|
549
|
+
softCutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
550
|
+
maxUtteranceSeconds: z.ZodOptional<z.ZodNumber>;
|
|
551
|
+
onsetRms: z.ZodOptional<z.ZodNumber>;
|
|
552
|
+
prerollMs: z.ZodOptional<z.ZodNumber>;
|
|
553
|
+
minSpeechMs: z.ZodOptional<z.ZodNumber>;
|
|
554
|
+
concurrency: z.ZodOptional<z.ZodNumber>;
|
|
555
|
+
finalRetries: z.ZodOptional<z.ZodNumber>;
|
|
556
|
+
vad: z.ZodOptional<z.ZodObject<{
|
|
557
|
+
engine: z.ZodOptional<z.ZodEnum<{
|
|
558
|
+
auto: "auto";
|
|
559
|
+
silero: "silero";
|
|
560
|
+
energy: "energy";
|
|
561
|
+
}>>;
|
|
562
|
+
onset: z.ZodOptional<z.ZodNumber>;
|
|
563
|
+
sustain: z.ZodOptional<z.ZodNumber>;
|
|
564
|
+
startMs: z.ZodOptional<z.ZodNumber>;
|
|
565
|
+
}, z.core.$strip>>;
|
|
566
|
+
normalize: z.ZodOptional<z.ZodBoolean>;
|
|
567
|
+
}, z.core.$strip>>;
|
|
568
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
569
|
+
language: z.ZodOptional<z.ZodString>;
|
|
570
|
+
diarization: z.ZodOptional<z.ZodBoolean>;
|
|
571
|
+
wordTimestamps: z.ZodOptional<z.ZodBoolean>;
|
|
572
|
+
dictionary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
573
|
+
term: z.ZodString;
|
|
574
|
+
heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
575
|
+
meaning: z.ZodOptional<z.ZodString>;
|
|
576
|
+
}, z.core.$strip>>>;
|
|
577
|
+
correction: z.ZodOptional<z.ZodObject<{
|
|
578
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
579
|
+
guard: z.ZodOptional<z.ZodEnum<{
|
|
580
|
+
none: "none";
|
|
581
|
+
decide: "decide";
|
|
582
|
+
}>>;
|
|
583
|
+
decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
584
|
+
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodLiteral<"auto">, z.ZodObject<{
|
|
585
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
586
|
+
model: z.ZodOptional<z.ZodString>;
|
|
587
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
588
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
589
|
+
auto: "auto";
|
|
590
|
+
always: "always";
|
|
591
|
+
}>>;
|
|
592
|
+
}, z.core.$strip>]>>;
|
|
593
|
+
perSentence: z.ZodOptional<z.ZodBoolean>;
|
|
594
|
+
transliterate: z.ZodOptional<z.ZodEnum<{
|
|
595
|
+
native: "native";
|
|
596
|
+
latin: "latin";
|
|
597
|
+
}>>;
|
|
598
|
+
punctuate: z.ZodOptional<z.ZodBoolean>;
|
|
599
|
+
cleanup: z.ZodOptional<z.ZodEnum<{
|
|
600
|
+
verbatim: "verbatim";
|
|
601
|
+
clean: "clean";
|
|
602
|
+
}>>;
|
|
603
|
+
secondOpinion: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodObject<{
|
|
604
|
+
provider: z.ZodString;
|
|
605
|
+
model: z.ZodOptional<z.ZodString>;
|
|
606
|
+
}, z.core.$strip>]>>;
|
|
607
|
+
context: z.ZodOptional<z.ZodString>;
|
|
608
|
+
maxDropRatio: z.ZodOptional<z.ZodNumber>;
|
|
609
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
610
|
+
}, z.core.$strip>>;
|
|
611
|
+
fallback: z.ZodOptional<z.ZodObject<{
|
|
612
|
+
provider: z.ZodString;
|
|
613
|
+
model: z.ZodOptional<z.ZodString>;
|
|
614
|
+
when: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
615
|
+
error: "error";
|
|
616
|
+
empty: "empty";
|
|
617
|
+
unsure: "unsure";
|
|
618
|
+
}>>>;
|
|
619
|
+
}, z.core.$strip>>;
|
|
620
|
+
routing: z.ZodOptional<z.ZodObject<{
|
|
621
|
+
probe: z.ZodOptional<z.ZodBoolean>;
|
|
622
|
+
lockAfterPasses: z.ZodOptional<z.ZodNumber>;
|
|
623
|
+
prior: z.ZodOptional<z.ZodEnum<{
|
|
624
|
+
none: "none";
|
|
625
|
+
carry: "carry";
|
|
626
|
+
}>>;
|
|
627
|
+
engines: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
628
|
+
}, z.core.$strip>>;
|
|
629
|
+
chunking: z.ZodOptional<z.ZodEnum<{
|
|
630
|
+
engine: "engine";
|
|
631
|
+
utterances: "utterances";
|
|
632
|
+
}>>;
|
|
633
|
+
completed: z.ZodOptional<z.ZodEnum<{
|
|
634
|
+
final: "final";
|
|
635
|
+
corrected: "corrected";
|
|
636
|
+
}>>;
|
|
637
|
+
correctionWaitMs: z.ZodOptional<z.ZodNumber>;
|
|
638
|
+
clientLanguage: z.ZodOptional<z.ZodBoolean>;
|
|
639
|
+
clientTurnDetection: z.ZodOptional<z.ZodBoolean>;
|
|
640
|
+
}, z.core.$strip>;
|
|
641
|
+
export declare const STTRealtimeProfilesSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
642
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
643
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
644
|
+
output: z.ZodOptional<z.ZodObject<{
|
|
645
|
+
languages: z.ZodArray<z.ZodString>;
|
|
646
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
647
|
+
model: z.ZodOptional<z.ZodString>;
|
|
648
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
649
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
650
|
+
glossary: z.ZodOptional<z.ZodBoolean>;
|
|
651
|
+
}, z.core.$strip>>;
|
|
652
|
+
model: z.ZodOptional<z.ZodString>;
|
|
653
|
+
streaming: z.ZodOptional<z.ZodObject<{
|
|
654
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
655
|
+
auto: "auto";
|
|
656
|
+
native: "native";
|
|
657
|
+
chunked: "chunked";
|
|
658
|
+
}>>;
|
|
659
|
+
sampleRate: z.ZodOptional<z.ZodNumber>;
|
|
660
|
+
endSilenceMs: z.ZodOptional<z.ZodNumber>;
|
|
661
|
+
intervalMs: z.ZodOptional<z.ZodNumber>;
|
|
662
|
+
softCutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
663
|
+
maxUtteranceSeconds: z.ZodOptional<z.ZodNumber>;
|
|
664
|
+
onsetRms: z.ZodOptional<z.ZodNumber>;
|
|
665
|
+
prerollMs: z.ZodOptional<z.ZodNumber>;
|
|
666
|
+
minSpeechMs: z.ZodOptional<z.ZodNumber>;
|
|
667
|
+
concurrency: z.ZodOptional<z.ZodNumber>;
|
|
668
|
+
finalRetries: z.ZodOptional<z.ZodNumber>;
|
|
669
|
+
vad: z.ZodOptional<z.ZodObject<{
|
|
670
|
+
engine: z.ZodOptional<z.ZodEnum<{
|
|
671
|
+
auto: "auto";
|
|
672
|
+
silero: "silero";
|
|
673
|
+
energy: "energy";
|
|
674
|
+
}>>;
|
|
675
|
+
onset: z.ZodOptional<z.ZodNumber>;
|
|
676
|
+
sustain: z.ZodOptional<z.ZodNumber>;
|
|
677
|
+
startMs: z.ZodOptional<z.ZodNumber>;
|
|
678
|
+
}, z.core.$strip>>;
|
|
679
|
+
normalize: z.ZodOptional<z.ZodBoolean>;
|
|
680
|
+
}, z.core.$strip>>;
|
|
681
|
+
prompt: z.ZodOptional<z.ZodString>;
|
|
682
|
+
language: z.ZodOptional<z.ZodString>;
|
|
683
|
+
diarization: z.ZodOptional<z.ZodBoolean>;
|
|
684
|
+
wordTimestamps: z.ZodOptional<z.ZodBoolean>;
|
|
685
|
+
dictionary: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
686
|
+
term: z.ZodString;
|
|
687
|
+
heardAs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
688
|
+
meaning: z.ZodOptional<z.ZodString>;
|
|
689
|
+
}, z.core.$strip>>>;
|
|
690
|
+
correction: z.ZodOptional<z.ZodObject<{
|
|
691
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
692
|
+
guard: z.ZodOptional<z.ZodEnum<{
|
|
693
|
+
none: "none";
|
|
694
|
+
decide: "decide";
|
|
695
|
+
}>>;
|
|
696
|
+
decideTimeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
697
|
+
rewrite: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<false>, z.ZodLiteral<"auto">, z.ZodObject<{
|
|
698
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
699
|
+
model: z.ZodOptional<z.ZodString>;
|
|
700
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
701
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
702
|
+
auto: "auto";
|
|
703
|
+
always: "always";
|
|
704
|
+
}>>;
|
|
705
|
+
}, z.core.$strip>]>>;
|
|
706
|
+
perSentence: z.ZodOptional<z.ZodBoolean>;
|
|
707
|
+
transliterate: z.ZodOptional<z.ZodEnum<{
|
|
708
|
+
native: "native";
|
|
709
|
+
latin: "latin";
|
|
710
|
+
}>>;
|
|
711
|
+
punctuate: z.ZodOptional<z.ZodBoolean>;
|
|
712
|
+
cleanup: z.ZodOptional<z.ZodEnum<{
|
|
713
|
+
verbatim: "verbatim";
|
|
714
|
+
clean: "clean";
|
|
715
|
+
}>>;
|
|
716
|
+
secondOpinion: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"auto">, z.ZodObject<{
|
|
717
|
+
provider: z.ZodString;
|
|
718
|
+
model: z.ZodOptional<z.ZodString>;
|
|
719
|
+
}, z.core.$strip>]>>;
|
|
720
|
+
context: z.ZodOptional<z.ZodString>;
|
|
721
|
+
maxDropRatio: z.ZodOptional<z.ZodNumber>;
|
|
722
|
+
contextUtterances: z.ZodOptional<z.ZodNumber>;
|
|
723
|
+
}, z.core.$strip>>;
|
|
724
|
+
fallback: z.ZodOptional<z.ZodObject<{
|
|
725
|
+
provider: z.ZodString;
|
|
726
|
+
model: z.ZodOptional<z.ZodString>;
|
|
727
|
+
when: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
728
|
+
error: "error";
|
|
729
|
+
empty: "empty";
|
|
730
|
+
unsure: "unsure";
|
|
731
|
+
}>>>;
|
|
732
|
+
}, z.core.$strip>>;
|
|
733
|
+
routing: z.ZodOptional<z.ZodObject<{
|
|
734
|
+
probe: z.ZodOptional<z.ZodBoolean>;
|
|
735
|
+
lockAfterPasses: z.ZodOptional<z.ZodNumber>;
|
|
736
|
+
prior: z.ZodOptional<z.ZodEnum<{
|
|
737
|
+
none: "none";
|
|
738
|
+
carry: "carry";
|
|
739
|
+
}>>;
|
|
740
|
+
engines: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
741
|
+
}, z.core.$strip>>;
|
|
742
|
+
chunking: z.ZodOptional<z.ZodEnum<{
|
|
743
|
+
engine: "engine";
|
|
744
|
+
utterances: "utterances";
|
|
745
|
+
}>>;
|
|
746
|
+
completed: z.ZodOptional<z.ZodEnum<{
|
|
747
|
+
final: "final";
|
|
748
|
+
corrected: "corrected";
|
|
749
|
+
}>>;
|
|
750
|
+
correctionWaitMs: z.ZodOptional<z.ZodNumber>;
|
|
751
|
+
clientLanguage: z.ZodOptional<z.ZodBoolean>;
|
|
752
|
+
clientTurnDetection: z.ZodOptional<z.ZodBoolean>;
|
|
753
|
+
}, z.core.$strip>>;
|
|
360
754
|
/**
|
|
361
755
|
* Type guard to check if a value is an ErrorResponse
|
|
362
756
|
*/
|
|
@@ -180,12 +180,63 @@ export const TranscribeDictionaryEntrySchema = z.object({
|
|
|
180
180
|
meaning: z.string().max(2000).optional(),
|
|
181
181
|
});
|
|
182
182
|
const sttProviderName = z.string().min(1).max(100);
|
|
183
|
+
/** A BCP-47 output tag (`es`, `fr-CA`, `hi-Latn`, `zh-Hant`) or `source`. */
|
|
184
|
+
export const TranscribeOutputLanguageSchema = z
|
|
185
|
+
.string()
|
|
186
|
+
.trim()
|
|
187
|
+
.regex(/^(?:source|[A-Za-z]{2,3}(?:-[A-Za-z]{4})?(?:-(?:[A-Za-z]{2}|\d{3}))?)$/u, "must be a BCP-47 tag such as es, fr-CA or hi-Latn, or source");
|
|
188
|
+
/** Output languages and how they are rendered. */
|
|
189
|
+
export const TranscribeOutputSchema = z.object({
|
|
190
|
+
languages: z.array(TranscribeOutputLanguageSchema).max(8),
|
|
191
|
+
provider: z.string().min(1).max(100).optional(),
|
|
192
|
+
model: z.string().min(1).max(200).optional(),
|
|
193
|
+
timeoutMs: z.number().int().positive().max(120_000).optional(),
|
|
194
|
+
contextUtterances: z.number().int().min(0).max(10).optional(),
|
|
195
|
+
glossary: z.boolean().optional(),
|
|
196
|
+
});
|
|
197
|
+
/** A text frame on the transcribe WebSocket after the config: change the output languages. */
|
|
198
|
+
export const TranscribeOutputControlSchema = z.object({
|
|
199
|
+
type: z.literal("output"),
|
|
200
|
+
languages: z.array(TranscribeOutputLanguageSchema).max(8),
|
|
201
|
+
});
|
|
202
|
+
/** A listener's frame on the session socket: which languages and speakers to follow. */
|
|
203
|
+
export const TranscribeSubscribeSchema = z.object({
|
|
204
|
+
type: z.literal("subscribe"),
|
|
205
|
+
languages: z.array(TranscribeOutputLanguageSchema).max(8).optional(),
|
|
206
|
+
speakers: z.array(z.string().min(1).max(100)).max(64).optional(),
|
|
207
|
+
backlog: z.boolean().optional(),
|
|
208
|
+
interim: z.boolean().optional(),
|
|
209
|
+
});
|
|
183
210
|
/**
|
|
184
211
|
* Engine and correction settings shared by `POST /agent/transcribe`, the
|
|
185
212
|
* OpenAI-compatible route's extension fields and the transcribe WebSocket's
|
|
186
213
|
* config frame. Unknown keys (including `credentials`) are stripped: a caller
|
|
187
214
|
* cannot swap in its own key or point an engine at another host.
|
|
188
215
|
*/
|
|
216
|
+
const EvalTimeSchema = z.number().finite().nonnegative().nullish();
|
|
217
|
+
export const STTEvalSegmentSchema = z.object({
|
|
218
|
+
id: z.string().min(1).max(200),
|
|
219
|
+
source: z.enum(["primary", "shadow"]),
|
|
220
|
+
model: z.string().max(200),
|
|
221
|
+
participant_identity: z.string().max(500),
|
|
222
|
+
participant_name: z.string().max(500).optional(),
|
|
223
|
+
text: z.string().max(20_000),
|
|
224
|
+
language: z.string().max(35).nullish(),
|
|
225
|
+
start_time: EvalTimeSchema,
|
|
226
|
+
end_time: EvalTimeSchema,
|
|
227
|
+
received_at: z.number().finite().nonnegative(),
|
|
228
|
+
});
|
|
229
|
+
export const STTEvalBatchSchema = z.object({
|
|
230
|
+
call_id: z.string().min(1).max(500),
|
|
231
|
+
room: z.string().max(500).optional(),
|
|
232
|
+
batch: z.number().int().nonnegative(),
|
|
233
|
+
final: z.boolean().optional(),
|
|
234
|
+
models: z.object({
|
|
235
|
+
primary: z.string().max(200),
|
|
236
|
+
shadow: z.string().max(200),
|
|
237
|
+
}),
|
|
238
|
+
segments: z.array(STTEvalSegmentSchema).max(5_000),
|
|
239
|
+
});
|
|
189
240
|
export const TranscribeConfigSchema = z.object({
|
|
190
241
|
provider: sttProviderName.optional(),
|
|
191
242
|
model: z.string().min(1).max(200).optional(),
|
|
@@ -200,23 +251,31 @@ export const TranscribeConfigSchema = z.object({
|
|
|
200
251
|
rewrite: z
|
|
201
252
|
.union([
|
|
202
253
|
z.literal(false),
|
|
254
|
+
z.literal("auto"),
|
|
203
255
|
z.object({
|
|
204
256
|
provider: z.string().min(1).max(100).optional(),
|
|
205
257
|
model: z.string().min(1).max(200).optional(),
|
|
206
258
|
timeoutMs: z.number().int().positive().max(120_000).optional(),
|
|
259
|
+
mode: z.enum(["auto", "always"]).optional(),
|
|
207
260
|
}),
|
|
208
261
|
])
|
|
209
262
|
.optional(),
|
|
263
|
+
perSentence: z.boolean().optional(),
|
|
210
264
|
transliterate: z.enum(["latin", "native"]).optional(),
|
|
211
265
|
punctuate: z.boolean().optional(),
|
|
266
|
+
cleanup: z.enum(["verbatim", "clean"]).optional(),
|
|
212
267
|
secondOpinion: z
|
|
213
|
-
.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
268
|
+
.union([
|
|
269
|
+
z.literal("auto"),
|
|
270
|
+
z.object({
|
|
271
|
+
provider: sttProviderName,
|
|
272
|
+
model: z.string().min(1).max(200).optional(),
|
|
273
|
+
}),
|
|
274
|
+
])
|
|
217
275
|
.optional(),
|
|
218
276
|
context: z.string().max(1000).optional(),
|
|
219
277
|
maxDropRatio: z.number().min(0).max(1).optional(),
|
|
278
|
+
contextUtterances: z.number().int().min(0).max(10).optional(),
|
|
220
279
|
})
|
|
221
280
|
.optional(),
|
|
222
281
|
fallback: z
|
|
@@ -226,6 +285,21 @@ export const TranscribeConfigSchema = z.object({
|
|
|
226
285
|
when: z.array(z.enum(["unsure", "empty", "error"])).optional(),
|
|
227
286
|
})
|
|
228
287
|
.optional(),
|
|
288
|
+
routing: z
|
|
289
|
+
.object({
|
|
290
|
+
probe: z.boolean().optional(),
|
|
291
|
+
lockAfterPasses: z.number().int().min(1).max(5).optional(),
|
|
292
|
+
prior: z.enum(["carry", "none"]).optional(),
|
|
293
|
+
engines: z
|
|
294
|
+
.record(z.string().min(1).max(35), sttProviderName)
|
|
295
|
+
.refine((engines) => Object.keys(engines).length <= 64, {
|
|
296
|
+
message: "at most 64 routes",
|
|
297
|
+
})
|
|
298
|
+
.optional(),
|
|
299
|
+
})
|
|
300
|
+
.optional(),
|
|
301
|
+
chunking: z.enum(["engine", "utterances"]).optional(),
|
|
302
|
+
output: TranscribeOutputSchema.optional(),
|
|
229
303
|
diarization: z.boolean().optional(),
|
|
230
304
|
wordTimestamps: z.boolean().optional(),
|
|
231
305
|
timeoutMs: z.number().int().positive().max(600_000).optional(),
|
|
@@ -257,6 +331,13 @@ export const TranscribeRequestSchema = TranscribeConfigSchema.extend({
|
|
|
257
331
|
* The transcribe WebSocket's first text frame: the config plus streaming tuning.
|
|
258
332
|
*/
|
|
259
333
|
export const TranscribeStreamConfigSchema = TranscribeConfigSchema.extend({
|
|
334
|
+
/**
|
|
335
|
+
* `"file"`: the socket carries a whole recording as fast as the client can
|
|
336
|
+
* send it, not a microphone. No interim passes, utterances transcribed
|
|
337
|
+
* several at a time, a failed final retried, file-sized engine timeouts and
|
|
338
|
+
* shorter utterance cuts, with results per utterance as they finish.
|
|
339
|
+
*/
|
|
340
|
+
mode: z.enum(["live", "file"]).optional(),
|
|
260
341
|
streaming: z
|
|
261
342
|
.object({
|
|
262
343
|
mode: z.enum(["auto", "native", "chunked"]).optional(),
|
|
@@ -268,9 +349,30 @@ export const TranscribeStreamConfigSchema = TranscribeConfigSchema.extend({
|
|
|
268
349
|
onsetRms: z.number().positive().optional(),
|
|
269
350
|
prerollMs: z.number().nonnegative().optional(),
|
|
270
351
|
minSpeechMs: z.number().nonnegative().optional(),
|
|
352
|
+
concurrency: z.number().int().min(1).max(8).optional(),
|
|
353
|
+
finalRetries: z.number().int().min(0).max(3).optional(),
|
|
354
|
+
// The detector and its thresholds; where its model lives is the server's business.
|
|
355
|
+
vad: z
|
|
356
|
+
.object({
|
|
357
|
+
engine: z.enum(["auto", "silero", "energy"]).optional(),
|
|
358
|
+
onset: z.number().min(0).max(1).optional(),
|
|
359
|
+
sustain: z.number().min(0).max(1).optional(),
|
|
360
|
+
startMs: z.number().nonnegative().max(2000).optional(),
|
|
361
|
+
})
|
|
362
|
+
.optional(),
|
|
363
|
+
normalize: z.boolean().optional(),
|
|
271
364
|
})
|
|
272
365
|
.optional(),
|
|
273
366
|
});
|
|
367
|
+
export const STTRealtimeProfileSchema = TranscribeStreamConfigSchema.omit({
|
|
368
|
+
mode: true,
|
|
369
|
+
}).extend({
|
|
370
|
+
completed: z.enum(["corrected", "final"]).optional(),
|
|
371
|
+
correctionWaitMs: z.number().int().min(0).max(30_000).optional(),
|
|
372
|
+
clientLanguage: z.boolean().optional(),
|
|
373
|
+
clientTurnDetection: z.boolean().optional(),
|
|
374
|
+
});
|
|
375
|
+
export const STTRealtimeProfilesSchema = z.record(z.string().min(1).max(100), STTRealtimeProfileSchema);
|
|
274
376
|
// ============================================
|
|
275
377
|
// Error Response Type Guards / Helpers
|
|
276
378
|
// ============================================
|