@speech-sdk/core 0.8.3-alpha → 0.8.3

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.
Files changed (114) hide show
  1. package/README.md +52 -1
  2. package/dist/captions.d.ts.map +1 -1
  3. package/dist/captions.js +2 -3
  4. package/dist/captions.js.map +1 -1
  5. package/dist/concurrency.d.ts +6 -0
  6. package/dist/concurrency.d.ts.map +1 -0
  7. package/dist/concurrency.js +59 -0
  8. package/dist/concurrency.js.map +1 -0
  9. package/dist/conversation/dispatch.d.ts +1 -0
  10. package/dist/conversation/dispatch.d.ts.map +1 -1
  11. package/dist/conversation/dispatch.js +2 -2
  12. package/dist/conversation/dispatch.js.map +1 -1
  13. package/dist/conversation/stitch.d.ts +3 -0
  14. package/dist/conversation/stitch.d.ts.map +1 -1
  15. package/dist/conversation/stitch.js +13 -19
  16. package/dist/conversation/stitch.js.map +1 -1
  17. package/dist/conversation/types.d.ts +6 -2
  18. package/dist/conversation/types.d.ts.map +1 -1
  19. package/dist/errors.d.ts +9 -0
  20. package/dist/errors.d.ts.map +1 -1
  21. package/dist/errors.js +20 -0
  22. package/dist/errors.js.map +1 -1
  23. package/dist/generate-conversation.d.ts +2 -2
  24. package/dist/generate-conversation.d.ts.map +1 -1
  25. package/dist/generate-conversation.js +131 -44
  26. package/dist/generate-conversation.js.map +1 -1
  27. package/dist/generate-speech.d.ts +2 -14
  28. package/dist/generate-speech.d.ts.map +1 -1
  29. package/dist/generate-speech.js +225 -55
  30. package/dist/generate-speech.js.map +1 -1
  31. package/dist/index.d.ts +4 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +2 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/pronunciations/errors.d.ts +5 -0
  36. package/dist/pronunciations/errors.d.ts.map +1 -0
  37. package/dist/pronunciations/errors.js +8 -0
  38. package/dist/pronunciations/errors.js.map +1 -0
  39. package/dist/pronunciations/index.d.ts +5 -0
  40. package/dist/pronunciations/index.d.ts.map +1 -0
  41. package/dist/pronunciations/index.js +5 -0
  42. package/dist/pronunciations/index.js.map +1 -0
  43. package/dist/pronunciations/inverse-align.d.ts +4 -0
  44. package/dist/pronunciations/inverse-align.d.ts.map +1 -0
  45. package/dist/pronunciations/inverse-align.js +54 -0
  46. package/dist/pronunciations/inverse-align.js.map +1 -0
  47. package/dist/pronunciations/merge.d.ts +4 -0
  48. package/dist/pronunciations/merge.d.ts.map +1 -0
  49. package/dist/pronunciations/merge.js +13 -0
  50. package/dist/pronunciations/merge.js.map +1 -0
  51. package/dist/pronunciations/substitute.d.ts +6 -0
  52. package/dist/pronunciations/substitute.d.ts.map +1 -0
  53. package/dist/pronunciations/substitute.js +67 -0
  54. package/dist/pronunciations/substitute.js.map +1 -0
  55. package/dist/pronunciations/types.d.ts +18 -0
  56. package/dist/pronunciations/types.d.ts.map +1 -0
  57. package/dist/pronunciations/types.js +2 -0
  58. package/dist/pronunciations/types.js.map +1 -0
  59. package/dist/pronunciations/validate.d.ts +3 -0
  60. package/dist/pronunciations/validate.d.ts.map +1 -0
  61. package/dist/pronunciations/validate.js +26 -0
  62. package/dist/pronunciations/validate.js.map +1 -0
  63. package/dist/provider-utils.d.ts +1 -0
  64. package/dist/provider-utils.d.ts.map +1 -1
  65. package/dist/provider-utils.js +26 -0
  66. package/dist/provider-utils.js.map +1 -1
  67. package/dist/providers/deepgram/index.d.ts.map +1 -1
  68. package/dist/providers/deepgram/index.js +1 -0
  69. package/dist/providers/deepgram/index.js.map +1 -1
  70. package/dist/providers/elevenlabs/index.d.ts.map +1 -1
  71. package/dist/providers/elevenlabs/index.js +4 -0
  72. package/dist/providers/elevenlabs/index.js.map +1 -1
  73. package/dist/providers/fal/index.d.ts.map +1 -1
  74. package/dist/providers/fal/index.js +1 -0
  75. package/dist/providers/fal/index.js.map +1 -1
  76. package/dist/providers/gateway/index.d.ts +8 -0
  77. package/dist/providers/gateway/index.d.ts.map +1 -1
  78. package/dist/providers/gateway/index.js +18 -0
  79. package/dist/providers/gateway/index.js.map +1 -1
  80. package/dist/providers/hume/index.d.ts.map +1 -1
  81. package/dist/providers/hume/index.js +2 -0
  82. package/dist/providers/hume/index.js.map +1 -1
  83. package/dist/providers/inworld/index.d.ts.map +1 -1
  84. package/dist/providers/inworld/index.js +2 -0
  85. package/dist/providers/inworld/index.js.map +1 -1
  86. package/dist/providers/openai/index.d.ts.map +1 -1
  87. package/dist/providers/openai/index.js +3 -0
  88. package/dist/providers/openai/index.js.map +1 -1
  89. package/dist/providers/xai/index.d.ts.map +1 -1
  90. package/dist/providers/xai/index.js +1 -0
  91. package/dist/providers/xai/index.js.map +1 -1
  92. package/dist/retry-options.d.ts +6 -0
  93. package/dist/retry-options.d.ts.map +1 -0
  94. package/dist/retry-options.js +48 -0
  95. package/dist/retry-options.js.map +1 -0
  96. package/dist/sentence-boundaries.d.ts +3 -0
  97. package/dist/sentence-boundaries.d.ts.map +1 -0
  98. package/dist/sentence-boundaries.js +3 -0
  99. package/dist/sentence-boundaries.js.map +1 -0
  100. package/dist/speech-provider.d.ts +2 -0
  101. package/dist/speech-provider.d.ts.map +1 -1
  102. package/dist/speech-provider.js +4 -0
  103. package/dist/speech-provider.js.map +1 -1
  104. package/dist/stream-speech.d.ts +5 -2
  105. package/dist/stream-speech.d.ts.map +1 -1
  106. package/dist/stream-speech.js +38 -21
  107. package/dist/stream-speech.js.map +1 -1
  108. package/dist/text-chunker.d.ts +13 -0
  109. package/dist/text-chunker.d.ts.map +1 -0
  110. package/dist/text-chunker.js +194 -0
  111. package/dist/text-chunker.js.map +1 -0
  112. package/dist/types.d.ts +8 -2
  113. package/dist/types.d.ts.map +1 -1
  114. package/package.json +6 -2
@@ -2,35 +2,61 @@ import pRetry from "p-retry";
2
2
  import { computeAudioDuration } from "./audio-duration.js";
3
3
  import { applyOptionalOutputConversion, validateOutput, } from "./audio-output.js";
4
4
  import { detectAudioTags, stripAudioTags } from "./audio-tags.js";
5
+ import { mapWithConcurrency, resolveMaxConcurrency } from "./concurrency.js";
5
6
  import { getDefaultSTTFallback } from "./default-stt-fallback.js";
6
7
  import { deriveTimestampsViaSTT } from "./derive-timestamps.js";
7
- import { ApiError, NoSpeechGeneratedError, OutputConversionUnsupportedError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
8
+ import { assertGatewayForModerationRulesetId, NoSpeechGeneratedError, OutputConversionUnsupportedError, TextChunkingUnsupportedError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
8
9
  import { debug } from "./logger.js";
9
- import { isRetriableApiError } from "./provider-utils.js";
10
+ import { inverseAlign } from "./pronunciations/inverse-align.js";
11
+ import { mergeRules } from "./pronunciations/merge.js";
12
+ import { substitute } from "./pronunciations/substitute.js";
13
+ import { validatePronunciationsInput } from "./pronunciations/validate.js";
10
14
  import { resolveModel } from "./resolve-provider.js";
11
- import { isSpeechGatewayModel, modelDeclaresNativeTimestamps, } from "./speech-provider.js";
15
+ import { buildRetryOptions } from "./retry-options.js";
16
+ import { isSpeechGatewayModel, modelDeclaresNativeTimestamps, modelMaxInputChars, } from "./speech-provider.js";
12
17
  import { DefaultGeneratedAudioFile } from "./speech-result.js";
18
+ import { resolveMaxInputChars, splitTextByMaxChars } from "./text-chunker.js";
19
+ const CHUNK_STITCH_SAMPLE_RATE = 24_000;
13
20
  export async function generateSpeech(options) {
14
- const { model, voice, abortSignal, headers, volumeDbfs, timestamps = false, } = options;
21
+ const { model, voice, abortSignal, headers, volumeDbfs, timestamps = false, moderationRulesetId, } = options;
15
22
  const maxRetries = options.maxRetries ?? 2;
16
23
  validateOutput(options.output);
17
24
  const resolved = resolveModel(model, { apiKey: options.apiKey });
18
25
  const modelIdentifier = `${resolved.provider.id}/${resolved.modelId}`;
19
26
  const isGateway = isSpeechGatewayModel(resolved);
20
- const providerOptions = resolveProviderOptionsForLocalDecoding({
27
+ validatePronunciationsInput(options.pronunciations, isGateway);
28
+ assertGatewayForModerationRulesetId(moderationRulesetId, isGateway);
29
+ const { text: strippedText, warnings } = preprocessText(resolved, options.text, modelIdentifier);
30
+ if (strippedText.trim().length === 0) {
31
+ throw new NoSpeechGeneratedError(warnings.length > 0
32
+ ? `Text is empty after removing unsupported audio tags for ${modelIdentifier}.`
33
+ : "Text must not be empty.");
34
+ }
35
+ let textToSend = strippedText;
36
+ let pronunciationEdits = [];
37
+ if (!isGateway && options.pronunciations?.rules?.length) {
38
+ const ruleMap = mergeRules(options.pronunciations.rules);
39
+ const subbed = substitute(strippedText, ruleMap);
40
+ textToSend = subbed.text;
41
+ pronunciationEdits = subbed.edits;
42
+ }
43
+ const { maxInputChars, shouldChunk, textChunks } = resolveTextChunks({
44
+ resolved,
45
+ modelIdentifier,
46
+ isGateway,
47
+ processedText: textToSend,
48
+ userMaxInputChars: options.maxInputChars,
49
+ });
50
+ const { providerOptions, stitchOptions } = resolveProviderOptionsForLocalDecoding({
21
51
  resolved,
22
52
  isGateway,
23
53
  modelIdentifier,
24
54
  volumeDbfs,
25
55
  output: options.output,
26
56
  callerOptions: options.providerOptions,
57
+ maxInputChars,
58
+ shouldChunk,
27
59
  });
28
- const { text: processedText, warnings } = preprocessText(resolved, options.text, modelIdentifier);
29
- if (processedText.trim().length === 0) {
30
- throw new NoSpeechGeneratedError(warnings.length > 0
31
- ? `Text is empty after removing unsupported audio tags for ${modelIdentifier}.`
32
- : "Text must not be empty.");
33
- }
34
60
  const hasNativeTimestamps = modelDeclaresNativeTimestamps(resolved);
35
61
  const shouldRequestNative = timestamps && (hasNativeTimestamps || isGateway);
36
62
  const effectiveFallback = !timestamps || shouldRequestNative
@@ -44,36 +70,35 @@ export async function generateSpeech(options) {
44
70
  effectiveFallback,
45
71
  });
46
72
  const startTime = performance.now();
47
- const result = await pRetry(() => isGateway
48
- ? resolved.provider.generate({
49
- modelId: resolved.modelId,
50
- text: processedText,
51
- voice: voice,
73
+ const result = shouldChunk
74
+ ? await generateChunkedSpeech({
75
+ resolved,
76
+ modelIdentifier,
77
+ textChunks,
78
+ voice,
52
79
  providerOptions,
80
+ stitchOptions,
81
+ maxInputChars: maxInputChars ?? textToSend.length,
82
+ maxRetries,
83
+ maxConcurrency: resolveMaxConcurrency(options.maxConcurrency),
53
84
  abortSignal,
54
85
  headers,
55
86
  includeTimestamps: shouldRequestNative,
56
- volumeDbfs,
57
- output: options.output,
58
87
  })
59
- : resolved.provider.generate({
60
- modelId: resolved.modelId,
61
- text: processedText,
88
+ : await generateProviderSpeech({
89
+ resolved,
90
+ text: textToSend,
62
91
  voice,
63
92
  providerOptions,
93
+ maxRetries,
64
94
  abortSignal,
65
95
  headers,
66
96
  includeTimestamps: shouldRequestNative,
67
- }), {
68
- retries: maxRetries,
69
- signal: abortSignal,
70
- shouldRetry: ({ error }) => {
71
- if (error instanceof ApiError && !isRetriableApiError(error)) {
72
- return false;
73
- }
74
- return true;
75
- },
76
- });
97
+ volumeDbfs,
98
+ output: options.output,
99
+ pronunciations: options.pronunciations,
100
+ moderationRulesetId,
101
+ });
77
102
  const latencyMs = Math.round(performance.now() - startTime);
78
103
  const audioData = result.audio;
79
104
  if (audioData.length === 0) {
@@ -104,9 +129,12 @@ export async function generateSpeech(options) {
104
129
  }),
105
130
  ]);
106
131
  const audioDurationMs = computedDuration ?? result.audioDurationMs;
132
+ const finalTimestamps = resolvedTimestamps && pronunciationEdits.length > 0
133
+ ? inverseAlign(resolvedTimestamps, textToSend, pronunciationEdits)
134
+ : resolvedTimestamps;
107
135
  const metadata = {
108
136
  latencyMs,
109
- inputChars: processedText.length,
137
+ inputChars: options.text.length,
110
138
  ...(audioDurationMs != null && { audioDurationMs }),
111
139
  };
112
140
  return {
@@ -114,13 +142,143 @@ export async function generateSpeech(options) {
114
142
  metadata,
115
143
  providerMetadata: result.providerMetadata,
116
144
  warnings: mergeWarnings(warnings, result.warnings),
117
- timestamps: resolvedTimestamps,
145
+ timestamps: finalTimestamps,
118
146
  };
119
147
  }
120
148
  function mergeWarnings(preprocessingWarnings, providerWarnings) {
121
149
  const merged = [...preprocessingWarnings, ...(providerWarnings ?? [])];
122
150
  return merged.length > 0 ? merged : undefined;
123
151
  }
152
+ function resolveTextChunks(args) {
153
+ if (args.isGateway) {
154
+ if (args.userMaxInputChars != null) {
155
+ debug(`${args.modelIdentifier}: maxInputChars is not applied on the speech gateway path; the gateway server owns request processing.`);
156
+ }
157
+ return {
158
+ maxInputChars: undefined,
159
+ shouldChunk: false,
160
+ textChunks: [args.processedText],
161
+ };
162
+ }
163
+ const maxInputCharsResolution = resolveMaxInputChars({
164
+ providerMaxInputChars: modelMaxInputChars(args.resolved),
165
+ userMaxInputChars: args.userMaxInputChars,
166
+ });
167
+ if (maxInputCharsResolution.userExceedsProvider) {
168
+ debug(`${args.modelIdentifier}: caller maxInputChars=${maxInputCharsResolution.userMaxInputChars} exceeds provider maxInputChars=${maxInputCharsResolution.providerMaxInputChars}; the provider may reject oversized chunks.`);
169
+ }
170
+ const maxInputChars = maxInputCharsResolution.value;
171
+ const textChunks = maxInputChars == null
172
+ ? [args.processedText]
173
+ : splitTextByMaxChars(args.processedText, maxInputChars);
174
+ const shouldChunk = textChunks.length > 1;
175
+ if (shouldChunk) {
176
+ const source = maxInputCharsResolution.source === "user"
177
+ ? "caller maxInputChars"
178
+ : "model maxInputChars";
179
+ debug(`${args.modelIdentifier}: split ${args.processedText.length} input chars into ${textChunks.length} chunks using ${source}=${maxInputChars}.`);
180
+ }
181
+ return { maxInputChars, shouldChunk, textChunks };
182
+ }
183
+ async function generateProviderSpeech(args) {
184
+ return await pRetry(() => isSpeechGatewayModel(args.resolved)
185
+ ? args.resolved.provider.generate({
186
+ modelId: args.resolved.modelId,
187
+ text: args.text,
188
+ voice: args.voice,
189
+ providerOptions: args.providerOptions,
190
+ abortSignal: args.abortSignal,
191
+ headers: args.headers,
192
+ includeTimestamps: args.includeTimestamps,
193
+ volumeDbfs: args.volumeDbfs,
194
+ output: args.output,
195
+ pronunciations: args.pronunciations,
196
+ moderationRulesetId: args.moderationRulesetId,
197
+ })
198
+ : args.resolved.provider.generate({
199
+ modelId: args.resolved.modelId,
200
+ text: args.text,
201
+ voice: args.voice,
202
+ providerOptions: args.providerOptions,
203
+ abortSignal: args.abortSignal,
204
+ headers: args.headers,
205
+ includeTimestamps: args.includeTimestamps,
206
+ }), buildRetryOptions({
207
+ maxRetries: args.maxRetries,
208
+ abortSignal: args.abortSignal,
209
+ }));
210
+ }
211
+ async function generateChunkedSpeech(args) {
212
+ if (!args.stitchOptions) {
213
+ throw new TextChunkingUnsupportedError(args.modelIdentifier, args.maxInputChars);
214
+ }
215
+ const stitchOptions = args.stitchOptions;
216
+ const { decodeAudioToPcm16 } = await import("./audio-decode.js");
217
+ const { concatPcmToWav } = await import("./conversation/pcm-concat.js");
218
+ const perChunk = await mapWithConcurrency(args.textChunks, args.maxConcurrency, async (text, _i, signal) => {
219
+ const result = await generateProviderSpeech({
220
+ resolved: args.resolved,
221
+ text,
222
+ voice: args.voice,
223
+ providerOptions: args.providerOptions,
224
+ maxRetries: args.maxRetries,
225
+ abortSignal: signal,
226
+ headers: args.headers,
227
+ includeTimestamps: args.includeTimestamps,
228
+ });
229
+ const audio = new DefaultGeneratedAudioFile({
230
+ data: result.audio,
231
+ mediaType: result.mediaType,
232
+ }).uint8Array;
233
+ if (audio.length === 0) {
234
+ throw new NoSpeechGeneratedError();
235
+ }
236
+ const resultMediaType = result.mediaType.toLowerCase();
237
+ const decodeMediaType = resultMediaType.startsWith("audio/wav") ||
238
+ resultMediaType.startsWith("audio/x-wav")
239
+ ? result.mediaType
240
+ : stitchOptions.mediaType;
241
+ const segment = await decodeAudioToPcm16(audio, decodeMediaType);
242
+ return { result, segment };
243
+ }, { signal: args.abortSignal });
244
+ const segments = perChunk.map((c) => c.segment);
245
+ const audio = await concatPcmToWav(segments, {
246
+ gapMs: 0,
247
+ targetSampleRate: CHUNK_STITCH_SAMPLE_RATE,
248
+ });
249
+ const durationSeconds = segments.reduce((sum, segment) => sum + segment.pcm.length / segment.sampleRate, 0);
250
+ const warnings = perChunk.flatMap((c) => c.result.warnings ?? []);
251
+ const providerMetadataChunks = perChunk.map((c) => c.result.providerMetadata);
252
+ const providerMetadata = providerMetadataChunks.some((m) => m != null)
253
+ ? { chunks: providerMetadataChunks }
254
+ : undefined;
255
+ return {
256
+ audio,
257
+ audioDurationMs: Math.round(durationSeconds * 1000),
258
+ mediaType: "audio/wav",
259
+ providerMetadata,
260
+ timestamps: mergeChunkTimestamps(perChunk),
261
+ warnings: warnings.length > 0 ? warnings : undefined,
262
+ };
263
+ }
264
+ function mergeChunkTimestamps(perChunk) {
265
+ if (perChunk.some((c) => !c.result.timestamps?.length)) {
266
+ return;
267
+ }
268
+ const timestamps = [];
269
+ let offset = 0;
270
+ for (const chunk of perChunk) {
271
+ for (const word of chunk.result.timestamps ?? []) {
272
+ timestamps.push({
273
+ text: word.text,
274
+ start: word.start + offset,
275
+ end: word.end + offset,
276
+ });
277
+ }
278
+ offset += chunk.segment.pcm.length / chunk.segment.sampleRate;
279
+ }
280
+ return timestamps;
281
+ }
124
282
  async function resolveTimestamps(args) {
125
283
  if (!args.timestamps) {
126
284
  return;
@@ -145,37 +303,49 @@ async function resolveTimestamps(args) {
145
303
  }
146
304
  function resolveProviderOptionsForLocalDecoding(args) {
147
305
  if (args.isGateway) {
148
- return args.callerOptions;
149
- }
150
- // volumeDbfs needs a known-decodable wire format to decode→re-level→re-encode,
151
- // so SDK-required keys win over caller overrides — otherwise a stray
152
- // override would silently violate the normalization contract.
153
- if (args.volumeDbfs != null) {
154
- const stitchOpts = args.resolved.provider.getStitchOptions?.(args.resolved.modelId);
155
- if (!stitchOpts) {
156
- throw new VolumeAdjustmentUnsupportedError(args.modelIdentifier);
157
- }
158
- return { ...args.callerOptions, ...stitchOpts.providerOptions };
306
+ return { providerOptions: args.callerOptions, stitchOptions: undefined };
159
307
  }
160
- if (args.output != null) {
161
- // Native path: provider produces the requested format directly, so caller's
162
- // providerOptions are an explicit escape hatch and win over our defaults
163
- // (e.g. tweaking bitrate/sample_rate). Post-processing reads the actual
164
- // response mediaType and adapts.
308
+ const needsStitchWireFormat = args.volumeDbfs != null || args.shouldChunk;
309
+ if (!needsStitchWireFormat && args.output != null) {
165
310
  const native = args.resolved.provider.resolveOutputFormat?.(args.resolved.modelId, args.output);
166
311
  if (native) {
167
- return { ...native.providerOptions, ...args.callerOptions };
312
+ return {
313
+ providerOptions: { ...native.providerOptions, ...args.callerOptions },
314
+ stitchOptions: undefined,
315
+ };
168
316
  }
169
- // Stitch fallback: the SDK MUST decode locally to convert into the
170
- // requested format, so SDK-required keys win — same rationale as the
171
- // volumeDbfs path above.
172
317
  const stitchOpts = args.resolved.provider.getStitchOptions?.(args.resolved.modelId);
173
318
  if (!stitchOpts) {
174
319
  throw new OutputConversionUnsupportedError(args.modelIdentifier);
175
320
  }
176
- return { ...args.callerOptions, ...stitchOpts.providerOptions };
321
+ return {
322
+ providerOptions: {
323
+ ...args.callerOptions,
324
+ ...stitchOpts.providerOptions,
325
+ },
326
+ stitchOptions: stitchOpts,
327
+ };
177
328
  }
178
- return args.callerOptions;
329
+ if (!needsStitchWireFormat) {
330
+ return { providerOptions: args.callerOptions, stitchOptions: undefined };
331
+ }
332
+ const stitchOpts = args.resolved.provider.getStitchOptions?.(args.resolved.modelId);
333
+ if (!stitchOpts) {
334
+ if (args.shouldChunk && args.maxInputChars != null) {
335
+ throw new TextChunkingUnsupportedError(args.modelIdentifier, args.maxInputChars);
336
+ }
337
+ if (args.volumeDbfs != null) {
338
+ throw new VolumeAdjustmentUnsupportedError(args.modelIdentifier);
339
+ }
340
+ throw new OutputConversionUnsupportedError(args.modelIdentifier);
341
+ }
342
+ return {
343
+ providerOptions: {
344
+ ...args.callerOptions,
345
+ ...stitchOpts.providerOptions,
346
+ },
347
+ stitchOptions: stitchOpts,
348
+ };
179
349
  }
180
350
  async function applyLocalAudioPostProcessing(args) {
181
351
  let bytes = args.audio;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-speech.js","sourceRoot":"","sources":["../src/generate-speech.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-speech.js","sourceRoot":"","sources":["../src/generate-speech.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,9 +1,12 @@
1
1
  export type { AudioOutput, AudioOutputFormat } from "./audio-output.js";
2
2
  export { timestampsToCaptions } from "./captions.js";
3
3
  export { ConversationInputError, DialogueConstraintError, StitchUnsupportedError, } from "./conversation/errors.js";
4
- export { ApiError, AudioOutputInputError, GatewayInputError, MissingApiKeyError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, StreamingNotSupportedError, TimestampKeyMissingError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
4
+ export { ApiError, AudioOutputInputError, GatewayInputError, MissingApiKeyError, ModerationRulesetIdRequiresGatewayError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, StreamingNotSupportedError, TextChunkingUnsupportedError, TimestampKeyMissingError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
5
5
  export { generateConversation } from "./generate-conversation.js";
6
6
  export { generateSpeech } from "./generate-speech.js";
7
+ export { DictionaryIdsRequireGatewayError } from "./pronunciations/errors.js";
8
+ export type { Pronunciation, PronunciationsInput, } from "./pronunciations/types.js";
7
9
  export { streamSpeech } from "./stream-speech.js";
8
10
  export { timestampsToTurns } from "./turns.js";
11
+ export type { GenerateSpeechOptions } from "./types.js";
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -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,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,0BAA0B,EAC1B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,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,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,uCAAuC,EACvC,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAC9E,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
@@ -1,9 +1,10 @@
1
1
  // biome-ignore lint/performance/noBarrelFile: public API entry point
2
2
  export { timestampsToCaptions } from "./captions.js";
3
3
  export { ConversationInputError, DialogueConstraintError, StitchUnsupportedError, } from "./conversation/errors.js";
4
- export { ApiError, AudioOutputInputError, GatewayInputError, MissingApiKeyError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, StreamingNotSupportedError, TimestampKeyMissingError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
4
+ export { ApiError, AudioOutputInputError, GatewayInputError, MissingApiKeyError, ModerationRulesetIdRequiresGatewayError, NoSpeechGeneratedError, OutputConversionUnsupportedError, SpeechSDKError, StreamingNotSupportedError, TextChunkingUnsupportedError, TimestampKeyMissingError, VolumeAdjustmentUnsupportedError, } from "./errors.js";
5
5
  export { generateConversation } from "./generate-conversation.js";
6
6
  export { generateSpeech } from "./generate-speech.js";
7
+ export { DictionaryIdsRequireGatewayError } from "./pronunciations/errors.js";
7
8
  export { streamSpeech } from "./stream-speech.js";
8
9
  export { timestampsToTurns } from "./turns.js";
9
10
  //# sourceMappingURL=index.js.map
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;AACrD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,0BAA0B,EAC1B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,qEAAqE;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,uCAAuC,EACvC,sBAAsB,EACtB,gCAAgC,EAChC,cAAc,EACd,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAK9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { SpeechSDKError } from "../errors.js";
2
+ export declare class DictionaryIdsRequireGatewayError extends SpeechSDKError {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/pronunciations/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,qBAAa,gCAAiC,SAAQ,cAAc;;CAOnE"}
@@ -0,0 +1,8 @@
1
+ import { SpeechSDKError } from "../errors.js";
2
+ export class DictionaryIdsRequireGatewayError extends SpeechSDKError {
3
+ constructor() {
4
+ super("dictionaryIds require the gateway path. Use the gateway model string (e.g., 'openai/tts-1') or pass inline rules with { rules: [...] }.");
5
+ this.name = "DictionaryIdsRequireGatewayError";
6
+ }
7
+ }
8
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/pronunciations/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,OAAO,gCAAiC,SAAQ,cAAc;IAClE;QACE,KAAK,CACH,yIAAyI,CAC1I,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export { inverseAlign } from "./inverse-align.js";
2
+ export { mergeRules, ruleMapKey } from "./merge.js";
3
+ export { substitute } from "./substitute.js";
4
+ export type { Edit, Pronunciation, PronunciationsInput } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pronunciations/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,5 @@
1
+ // biome-ignore-all lint/performance/noBarrelFile: public pronunciations subpath entry point
2
+ export { inverseAlign } from "./inverse-align.js";
3
+ export { mergeRules, ruleMapKey } from "./merge.js";
4
+ export { substitute } from "./substitute.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pronunciations/index.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { WordTimestamp } from "../timestamps.js";
2
+ import type { Edit } from "./types.js";
3
+ export declare function inverseAlign<T extends WordTimestamp>(timestamps: readonly T[], substitutedText: string, edits: readonly Edit[]): T[];
4
+ //# sourceMappingURL=inverse-align.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inverse-align.d.ts","sourceRoot":"","sources":["../../src/pronunciations/inverse-align.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmBvC,wBAAgB,YAAY,CAAC,CAAC,SAAS,aAAa,EAClD,UAAU,EAAE,SAAS,CAAC,EAAE,EACxB,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,CAAC,EAAE,CAiDL"}
@@ -0,0 +1,54 @@
1
+ function findEditAt(position, edits) {
2
+ return edits.find((e) => position >= e.replacementRange[0] && position < e.replacementRange[1]);
3
+ }
4
+ function findTokenStart(haystack, searchFrom, token) {
5
+ return haystack.indexOf(token.toLowerCase(), searchFrom);
6
+ }
7
+ export function inverseAlign(timestamps, substitutedText, edits) {
8
+ if (edits.length === 0) {
9
+ return [...timestamps];
10
+ }
11
+ const out = [];
12
+ let cursor = 0;
13
+ let pendingGroup = null;
14
+ const haystack = substitutedText.toLowerCase();
15
+ const flushPending = () => {
16
+ if (!pendingGroup) {
17
+ return;
18
+ }
19
+ const merged = {
20
+ ...pendingGroup.first,
21
+ text: pendingGroup.edit.originalWord,
22
+ start: pendingGroup.first.start,
23
+ end: pendingGroup.last.end,
24
+ };
25
+ out.push(merged);
26
+ pendingGroup = null;
27
+ };
28
+ for (const ts of timestamps) {
29
+ const pos = findTokenStart(haystack, cursor, ts.text);
30
+ if (pos === -1) {
31
+ flushPending();
32
+ out.push(ts);
33
+ continue;
34
+ }
35
+ cursor = pos + ts.text.length;
36
+ const edit = findEditAt(pos, edits);
37
+ if (edit) {
38
+ if (pendingGroup && pendingGroup.edit === edit) {
39
+ pendingGroup.last = ts;
40
+ }
41
+ else {
42
+ flushPending();
43
+ pendingGroup = { edit, first: ts, last: ts };
44
+ }
45
+ }
46
+ else {
47
+ flushPending();
48
+ out.push(ts);
49
+ }
50
+ }
51
+ flushPending();
52
+ return out;
53
+ }
54
+ //# sourceMappingURL=inverse-align.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inverse-align.js","sourceRoot":"","sources":["../../src/pronunciations/inverse-align.ts"],"names":[],"mappings":"AAGA,SAAS,UAAU,CACjB,QAAgB,EAChB,KAAsB;IAEtB,OAAO,KAAK,CAAC,IAAI,CACf,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAC7E,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CACrB,QAAgB,EAChB,UAAkB,EAClB,KAAa;IAEb,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,UAAwB,EACxB,eAAuB,EACvB,KAAsB;IAEtB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,GAAG,GAAQ,EAAE,CAAC;IACpB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAA6C,IAAI,CAAC;IAClE,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC;IAE/C,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG;YACb,GAAG,YAAY,CAAC,KAAK;YACrB,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY;YACpC,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,KAAK;YAC/B,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG;SACtB,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC,CAAC;IAEF,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACb,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAC9B,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAEpC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,YAAY,IAAI,YAAY,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC/C,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,YAAY,EAAE,CAAC;gBACf,YAAY,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YAC/C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,YAAY,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,YAAY,EAAE,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Pronunciation } from "./types.js";
2
+ export declare function ruleMapKey(word: string, caseSensitive: boolean): string;
3
+ export declare function mergeRules(rules: readonly Pronunciation[]): Map<string, Pronunciation>;
4
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/pronunciations/merge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,GAAG,MAAM,CAEvE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAO5B"}
@@ -0,0 +1,13 @@
1
+ // A case-sensitive rule for an already-lowercase word can collide with a case-insensitive rule for the same word in one merge call; gateway dictionaries dedupe via a unique index, and Map.set's last-write-wins is fine for the inline-only case.
2
+ export function ruleMapKey(word, caseSensitive) {
3
+ return caseSensitive ? word : word.toLowerCase();
4
+ }
5
+ export function mergeRules(rules) {
6
+ const map = new Map();
7
+ for (const rule of rules) {
8
+ const caseSensitive = rule.caseSensitive ?? false;
9
+ map.set(ruleMapKey(rule.word, caseSensitive), { ...rule, caseSensitive });
10
+ }
11
+ return map;
12
+ }
13
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/pronunciations/merge.ts"],"names":[],"mappings":"AAEA,oPAAoP;AACpP,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,aAAsB;IAC7D,OAAO,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAA+B;IAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;QAClD,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Edit, Pronunciation } from "./types.js";
2
+ export declare function substitute(text: string, ruleMap: Map<string, Pronunciation>): {
3
+ text: string;
4
+ edits: Edit[];
5
+ };
6
+ //# sourceMappingURL=substitute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substitute.d.ts","sourceRoot":"","sources":["../../src/pronunciations/substitute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA0CtD,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,EAAE,CAAA;CAAE,CA0CjC"}