@speech-sdk/core 0.8.2-alpha → 0.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -3
- package/dist/audio-decode.d.ts +7 -0
- package/dist/audio-decode.d.ts.map +1 -0
- package/dist/audio-decode.js +109 -0
- package/dist/audio-decode.js.map +1 -0
- package/dist/audio-duration.d.ts.map +1 -1
- package/dist/audio-duration.js +3 -12
- package/dist/audio-duration.js.map +1 -1
- package/dist/audio-output.d.ts.map +1 -1
- package/dist/audio-output.js +31 -10
- package/dist/audio-output.js.map +1 -1
- package/dist/audio-utils.d.ts +2 -0
- package/dist/audio-utils.d.ts.map +1 -1
- package/dist/audio-utils.js +55 -1
- package/dist/audio-utils.js.map +1 -1
- package/dist/captions.d.ts.map +1 -1
- package/dist/captions.js +2 -3
- package/dist/captions.js.map +1 -1
- package/dist/conversation/dispatch.d.ts +1 -0
- package/dist/conversation/dispatch.d.ts.map +1 -1
- package/dist/conversation/dispatch.js +2 -2
- package/dist/conversation/dispatch.js.map +1 -1
- package/dist/conversation/pcm-concat.d.ts +0 -1
- package/dist/conversation/pcm-concat.d.ts.map +1 -1
- package/dist/conversation/pcm-concat.js +6 -143
- package/dist/conversation/pcm-concat.js.map +1 -1
- package/dist/conversation/stitch.d.ts +3 -0
- package/dist/conversation/stitch.d.ts.map +1 -1
- package/dist/conversation/stitch.js +10 -2
- package/dist/conversation/stitch.js.map +1 -1
- package/dist/conversation/types.d.ts +6 -2
- package/dist/conversation/types.d.ts.map +1 -1
- package/dist/encoders/mp3.d.ts.map +1 -1
- package/dist/encoders/mp3.js +40 -22
- package/dist/encoders/mp3.js.map +1 -1
- package/dist/errors.d.ts +9 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +20 -0
- package/dist/errors.js.map +1 -1
- package/dist/generate-conversation.d.ts +2 -2
- package/dist/generate-conversation.d.ts.map +1 -1
- package/dist/generate-conversation.js +131 -44
- package/dist/generate-conversation.js.map +1 -1
- package/dist/generate-speech.d.ts +2 -14
- package/dist/generate-speech.d.ts.map +1 -1
- package/dist/generate-speech.js +223 -39
- package/dist/generate-speech.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/pronunciations/errors.d.ts +5 -0
- package/dist/pronunciations/errors.d.ts.map +1 -0
- package/dist/pronunciations/errors.js +8 -0
- package/dist/pronunciations/errors.js.map +1 -0
- package/dist/pronunciations/index.d.ts +5 -0
- package/dist/pronunciations/index.d.ts.map +1 -0
- package/dist/pronunciations/index.js +5 -0
- package/dist/pronunciations/index.js.map +1 -0
- package/dist/pronunciations/inverse-align.d.ts +4 -0
- package/dist/pronunciations/inverse-align.d.ts.map +1 -0
- package/dist/pronunciations/inverse-align.js +54 -0
- package/dist/pronunciations/inverse-align.js.map +1 -0
- package/dist/pronunciations/merge.d.ts +4 -0
- package/dist/pronunciations/merge.d.ts.map +1 -0
- package/dist/pronunciations/merge.js +13 -0
- package/dist/pronunciations/merge.js.map +1 -0
- package/dist/pronunciations/substitute.d.ts +6 -0
- package/dist/pronunciations/substitute.d.ts.map +1 -0
- package/dist/pronunciations/substitute.js +67 -0
- package/dist/pronunciations/substitute.js.map +1 -0
- package/dist/pronunciations/types.d.ts +18 -0
- package/dist/pronunciations/types.d.ts.map +1 -0
- package/dist/pronunciations/types.js +2 -0
- package/dist/pronunciations/types.js.map +1 -0
- package/dist/pronunciations/validate.d.ts +3 -0
- package/dist/pronunciations/validate.d.ts.map +1 -0
- package/dist/pronunciations/validate.js +26 -0
- package/dist/pronunciations/validate.js.map +1 -0
- package/dist/provider-utils.d.ts +1 -0
- package/dist/provider-utils.d.ts.map +1 -1
- package/dist/provider-utils.js +26 -0
- package/dist/provider-utils.js.map +1 -1
- package/dist/providers/cartesia/index.d.ts +22 -0
- package/dist/providers/cartesia/index.d.ts.map +1 -1
- package/dist/providers/cartesia/index.js +48 -0
- package/dist/providers/cartesia/index.js.map +1 -1
- package/dist/providers/deepgram/index.d.ts +16 -0
- package/dist/providers/deepgram/index.d.ts.map +1 -1
- package/dist/providers/deepgram/index.js +35 -0
- package/dist/providers/deepgram/index.js.map +1 -1
- package/dist/providers/elevenlabs/index.d.ts +7 -0
- package/dist/providers/elevenlabs/index.d.ts.map +1 -1
- package/dist/providers/elevenlabs/index.js +29 -0
- package/dist/providers/elevenlabs/index.js.map +1 -1
- package/dist/providers/fal/index.d.ts +5 -3
- package/dist/providers/fal/index.d.ts.map +1 -1
- package/dist/providers/fal/index.js +14 -7
- package/dist/providers/fal/index.js.map +1 -1
- package/dist/providers/fish-audio/index.d.ts +7 -0
- package/dist/providers/fish-audio/index.d.ts.map +1 -1
- package/dist/providers/fish-audio/index.js +24 -0
- package/dist/providers/fish-audio/index.js.map +1 -1
- package/dist/providers/gateway/index.d.ts +8 -0
- package/dist/providers/gateway/index.d.ts.map +1 -1
- package/dist/providers/gateway/index.js +18 -0
- package/dist/providers/gateway/index.js.map +1 -1
- package/dist/providers/google/index.d.ts +5 -0
- package/dist/providers/google/index.d.ts.map +1 -1
- package/dist/providers/google/index.js +19 -11
- package/dist/providers/google/index.js.map +1 -1
- package/dist/providers/hume/index.d.ts +9 -0
- package/dist/providers/hume/index.d.ts.map +1 -1
- package/dist/providers/hume/index.js +26 -0
- package/dist/providers/hume/index.js.map +1 -1
- package/dist/providers/inworld/index.d.ts +10 -0
- package/dist/providers/inworld/index.d.ts.map +1 -1
- package/dist/providers/inworld/index.js +34 -8
- package/dist/providers/inworld/index.js.map +1 -1
- package/dist/providers/mistral/index.d.ts +7 -0
- package/dist/providers/mistral/index.d.ts.map +1 -1
- package/dist/providers/mistral/index.js +24 -10
- package/dist/providers/mistral/index.js.map +1 -1
- package/dist/providers/murf/index.d.ts +8 -0
- package/dist/providers/murf/index.d.ts.map +1 -1
- package/dist/providers/murf/index.js +40 -1
- package/dist/providers/murf/index.js.map +1 -1
- package/dist/providers/openai/index.d.ts +7 -0
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +27 -0
- package/dist/providers/openai/index.js.map +1 -1
- package/dist/providers/resemble/index.d.ts +14 -0
- package/dist/providers/resemble/index.d.ts.map +1 -1
- package/dist/providers/resemble/index.js +35 -1
- package/dist/providers/resemble/index.js.map +1 -1
- package/dist/providers/smallest-ai/index.d.ts +47 -0
- package/dist/providers/smallest-ai/index.d.ts.map +1 -0
- package/dist/providers/smallest-ai/index.js +107 -0
- package/dist/providers/smallest-ai/index.js.map +1 -0
- package/dist/providers/xai/index.d.ts +18 -0
- package/dist/providers/xai/index.d.ts.map +1 -1
- package/dist/providers/xai/index.js +27 -0
- package/dist/providers/xai/index.js.map +1 -1
- package/dist/providers.d.ts +2 -0
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +1 -0
- package/dist/providers.js.map +1 -1
- package/dist/retry-options.d.ts +6 -0
- package/dist/retry-options.d.ts.map +1 -0
- package/dist/retry-options.js +48 -0
- package/dist/retry-options.js.map +1 -0
- package/dist/sentence-boundaries.d.ts +3 -0
- package/dist/sentence-boundaries.d.ts.map +1 -0
- package/dist/sentence-boundaries.js +3 -0
- package/dist/sentence-boundaries.js.map +1 -0
- package/dist/speech-provider.d.ts +17 -0
- package/dist/speech-provider.d.ts.map +1 -1
- package/dist/speech-provider.js +4 -0
- package/dist/speech-provider.js.map +1 -1
- package/dist/stream-speech.d.ts +5 -2
- package/dist/stream-speech.d.ts.map +1 -1
- package/dist/stream-speech.js +38 -21
- package/dist/stream-speech.js.map +1 -1
- package/dist/text-chunker.d.ts +13 -0
- package/dist/text-chunker.d.ts.map +1 -0
- package/dist/text-chunker.js +194 -0
- package/dist/text-chunker.js.map +1 -0
- package/dist/types.d.ts +7 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/volume-adjust.d.ts.map +1 -1
- package/dist/volume-adjust.js +4 -10
- package/dist/volume-adjust.js.map +1 -1
- package/package.json +9 -5
- package/NOTICE +0 -27
|
@@ -1,143 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
// Int16Array views require 2-byte alignment; copy on misalignment.
|
|
3
|
-
function pcmBytesToInt16(bytes) {
|
|
4
|
-
if (bytes.byteOffset % 2 === 0 && bytes.byteLength % 2 === 0) {
|
|
5
|
-
return new Int16Array(bytes.buffer, bytes.byteOffset, bytes.byteLength / 2);
|
|
6
|
-
}
|
|
7
|
-
const copy = new Uint8Array(bytes.byteLength);
|
|
8
|
-
copy.set(bytes);
|
|
9
|
-
return new Int16Array(copy.buffer);
|
|
10
|
-
}
|
|
11
|
-
function downmixToMono(interleaved, channels) {
|
|
12
|
-
if (channels === 1) {
|
|
13
|
-
return interleaved;
|
|
14
|
-
}
|
|
15
|
-
const frames = Math.floor(interleaved.length / channels);
|
|
16
|
-
const out = new Int16Array(frames);
|
|
17
|
-
for (let f = 0; f < frames; f++) {
|
|
18
|
-
let sum = 0;
|
|
19
|
-
for (let c = 0; c < channels; c++) {
|
|
20
|
-
sum += interleaved[f * channels + c];
|
|
21
|
-
}
|
|
22
|
-
out[f] = Math.round(sum / channels);
|
|
23
|
-
}
|
|
24
|
-
return out;
|
|
25
|
-
}
|
|
26
|
-
// Float32Array views require 4-byte alignment; copy on misalignment.
|
|
27
|
-
function pcmBytesToFloat32(bytes) {
|
|
28
|
-
if (bytes.byteOffset % 4 === 0 && bytes.byteLength % 4 === 0) {
|
|
29
|
-
return new Float32Array(bytes.buffer, bytes.byteOffset, bytes.byteLength / 4);
|
|
30
|
-
}
|
|
31
|
-
const copy = new Uint8Array(bytes.byteLength);
|
|
32
|
-
copy.set(bytes);
|
|
33
|
-
return new Float32Array(copy.buffer);
|
|
34
|
-
}
|
|
1
|
+
import { resamplePcm16, wrapPcm16Mono } from "../audio-utils.js";
|
|
35
2
|
const INT16_MAX = 32_767;
|
|
36
3
|
const INT16_MIN = -32_768;
|
|
37
|
-
function float32ToInt16(f32) {
|
|
38
|
-
const out = new Int16Array(f32.length);
|
|
39
|
-
for (let i = 0; i < f32.length; i++) {
|
|
40
|
-
const s = f32[i];
|
|
41
|
-
if (s >= 1) {
|
|
42
|
-
out[i] = INT16_MAX;
|
|
43
|
-
}
|
|
44
|
-
else if (s <= -1) {
|
|
45
|
-
out[i] = INT16_MIN;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
out[i] = Math.round(s * INT16_MAX);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return out;
|
|
52
|
-
}
|
|
53
|
-
const ENCODING_PARAM_RE = /(?:^|;)\s*encoding=([a-z0-9_-]+)(?=$|;|\s)/i;
|
|
54
|
-
export function decodeToPcm16(data, mediaType) {
|
|
55
|
-
const lower = mediaType.toLowerCase();
|
|
56
|
-
if (lower.startsWith("audio/pcm") || lower.startsWith("audio/x-pcm")) {
|
|
57
|
-
// audio/l16 (RFC 2586, big-endian) intentionally unsupported.
|
|
58
|
-
const sampleRate = parseMediaTypeParam(mediaType, "rate") ?? 24_000;
|
|
59
|
-
const channels = parseMediaTypeParam(mediaType, "channels") ?? 1;
|
|
60
|
-
const encoding = lower.match(ENCODING_PARAM_RE)?.[1];
|
|
61
|
-
if (encoding === "float32") {
|
|
62
|
-
const interleaved = float32ToInt16(pcmBytesToFloat32(data));
|
|
63
|
-
return {
|
|
64
|
-
pcm: downmixToMono(interleaved, channels),
|
|
65
|
-
sampleRate,
|
|
66
|
-
channels: 1,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
const interleaved = pcmBytesToInt16(data);
|
|
70
|
-
return {
|
|
71
|
-
pcm: downmixToMono(interleaved, channels),
|
|
72
|
-
sampleRate,
|
|
73
|
-
channels: 1,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
if (lower.startsWith("audio/wav") || lower.startsWith("audio/x-wav")) {
|
|
77
|
-
return decodeWav(data);
|
|
78
|
-
}
|
|
79
|
-
throw new Error(`conversation.pcm-concat: unsupported stitch mediaType "${mediaType}". ` +
|
|
80
|
-
'getStitchOptions must return "audio/wav" or "audio/pcm;rate=...[;encoding=float32]" so the stitch layer can concatenate without a compressed-audio decoder.');
|
|
81
|
-
}
|
|
82
|
-
function decodeWav(bytes) {
|
|
83
|
-
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
84
|
-
if (view.getUint32(0) !== 0x52_49_46_46 ||
|
|
85
|
-
view.getUint32(8) !== 0x57_41_56_45) {
|
|
86
|
-
throw new Error("conversation.pcm-concat: not a RIFF/WAVE file");
|
|
87
|
-
}
|
|
88
|
-
let offset = 12;
|
|
89
|
-
let sampleRate = 0;
|
|
90
|
-
let channels = 0;
|
|
91
|
-
let bitsPerSample = 0;
|
|
92
|
-
let audioFormat = 0;
|
|
93
|
-
let dataStart = -1;
|
|
94
|
-
let dataLen = 0;
|
|
95
|
-
while (offset + 8 <= bytes.byteLength) {
|
|
96
|
-
const chunkId = view.getUint32(offset);
|
|
97
|
-
const chunkSize = view.getUint32(offset + 4, true);
|
|
98
|
-
if (chunkId === 0x66_6d_74_20) {
|
|
99
|
-
audioFormat = view.getUint16(offset + 8, true);
|
|
100
|
-
channels = view.getUint16(offset + 10, true);
|
|
101
|
-
sampleRate = view.getUint32(offset + 12, true);
|
|
102
|
-
bitsPerSample = view.getUint16(offset + 22, true);
|
|
103
|
-
}
|
|
104
|
-
else if (chunkId === 0x64_61_74_61) {
|
|
105
|
-
dataStart = offset + 8;
|
|
106
|
-
dataLen = chunkSize;
|
|
107
|
-
break;
|
|
108
|
-
}
|
|
109
|
-
offset += 8 + chunkSize + (chunkSize % 2);
|
|
110
|
-
}
|
|
111
|
-
if (dataStart < 0 ||
|
|
112
|
-
sampleRate === 0 ||
|
|
113
|
-
bitsPerSample !== 16 ||
|
|
114
|
-
audioFormat !== 1) {
|
|
115
|
-
throw new Error(`conversation.pcm-concat: only 16-bit PCM WAV is supported (got audioFormat=${audioFormat}, bps=${bitsPerSample})`);
|
|
116
|
-
}
|
|
117
|
-
const payload = bytes.subarray(dataStart, dataStart + dataLen);
|
|
118
|
-
const interleaved = pcmBytesToInt16(payload);
|
|
119
|
-
return {
|
|
120
|
-
pcm: downmixToMono(interleaved, channels || 1),
|
|
121
|
-
sampleRate,
|
|
122
|
-
channels: 1,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
function resamplePcm16LinearMono(input, fromRate, toRate) {
|
|
126
|
-
if (fromRate === toRate) {
|
|
127
|
-
return input;
|
|
128
|
-
}
|
|
129
|
-
const ratio = fromRate / toRate;
|
|
130
|
-
const outLen = Math.round(input.length / ratio);
|
|
131
|
-
const out = new Int16Array(outLen);
|
|
132
|
-
for (let i = 0; i < outLen; i++) {
|
|
133
|
-
const srcPos = i * ratio;
|
|
134
|
-
const i0 = Math.floor(srcPos);
|
|
135
|
-
const i1 = Math.min(i0 + 1, input.length - 1);
|
|
136
|
-
const frac = srcPos - i0;
|
|
137
|
-
out[i] = Math.round(input[i0] * (1 - frac) + input[i1] * frac);
|
|
138
|
-
}
|
|
139
|
-
return out;
|
|
140
|
-
}
|
|
141
4
|
function silencePcm16(ms, sampleRate) {
|
|
142
5
|
const samples = Math.round((ms / 1000) * sampleRate);
|
|
143
6
|
return new Int16Array(samples);
|
|
@@ -186,12 +49,12 @@ export function normalizeRms(segments, targetRmsAmplitude = DEFAULT_TARGET_RMS_I
|
|
|
186
49
|
}
|
|
187
50
|
export async function concatPcmToWav(segments, options) {
|
|
188
51
|
const { gapMs, targetSampleRate } = options;
|
|
189
|
-
const resampled = [];
|
|
190
52
|
const gap = silencePcm16(gapMs, targetSampleRate);
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
53
|
+
const resampledSegments = await Promise.all(segments.map((s) => resamplePcm16(s.pcm, s.sampleRate, targetSampleRate)));
|
|
54
|
+
const resampled = [];
|
|
55
|
+
for (let i = 0; i < resampledSegments.length; i++) {
|
|
56
|
+
resampled.push(resampledSegments[i]);
|
|
57
|
+
if (i < resampledSegments.length - 1 && gap.length > 0) {
|
|
195
58
|
resampled.push(gap);
|
|
196
59
|
}
|
|
197
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pcm-concat.js","sourceRoot":"","sources":["../../src/conversation/pcm-concat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pcm-concat.js","sourceRoot":"","sources":["../../src/conversation/pcm-concat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAQjE,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC;AAE1B,SAAS,YAAY,CAAC,EAAU,EAAE,UAAkB;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IACrD,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,GAAe;IAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,GAAe,EAAE,IAAY;IAC/C,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAE,CAAC;AAEvC,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,wBAAwB,GAAG,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAErE,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAC1B,QAAiC,EACjC,kBAAkB,GAAG,wBAAwB;IAE7C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACxB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAiC,EACjC,OAAoD;IAEpD,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;IAE5C,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,GAAG,CACzC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAC1E,CAAC;IAEF,MAAM,SAAS,GAAiB,EAAE,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClD,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACnB,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,UAAU,CAChC,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,UAAU,CAClB,CAAC;IACF,OAAO,MAAM,aAAa,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type AudioOutput } from "../audio-output.js";
|
|
2
2
|
import type { SpeechMetadata } from "../metadata.js";
|
|
3
|
+
import type { PronunciationsInput } from "../pronunciations/types.js";
|
|
3
4
|
import type { ResolvedModel, Voice } from "../speech-provider.js";
|
|
4
5
|
import type { ConversationWordTimestamp } from "../timestamps.js";
|
|
5
6
|
import type { ConversationTurn } from "./types.js";
|
|
@@ -9,8 +10,10 @@ interface StitchInput<V extends Voice = Voice> {
|
|
|
9
10
|
readonly gapMs: number;
|
|
10
11
|
readonly headers?: Record<string, string>;
|
|
11
12
|
readonly maxConcurrency: number;
|
|
13
|
+
readonly maxInputChars?: number;
|
|
12
14
|
readonly maxRetries: number;
|
|
13
15
|
readonly output?: AudioOutput;
|
|
16
|
+
readonly pronunciations?: PronunciationsInput;
|
|
14
17
|
readonly resolvedPerTurn: readonly ResolvedModel<V>[];
|
|
15
18
|
readonly stitchOptionsPerTurn: readonly {
|
|
16
19
|
providerOptions: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stitch.d.ts","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stitch.d.ts","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,UAAU,WAAW,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,mBAAmB,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,SAAS,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,oBAAoB,EAAE,SAAS;QACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC;KACnB,EAAE,CAAC;IACJ,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,SAAS,cAAc,EAAE,CAAC;IACpD,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,SAAS,CACZ,EAAE,CAAC;IACJ,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AA4BD,wBAAsB,SAAS,CAAC,CAAC,SAAS,KAAK,EAC7C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,YAAY,CAAC,CAqJvB"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { decodeAudioToPcm16 } from "../audio-decode.js";
|
|
1
2
|
import { applyOptionalOutputConversion, } from "../audio-output.js";
|
|
2
3
|
import { withTurnIndex } from "../errors.js";
|
|
3
4
|
import { generateSpeech } from "../generate-speech.js";
|
|
4
5
|
import { debug } from "../logger.js";
|
|
5
|
-
import { concatPcmToWav, dbfsToInt16Rms,
|
|
6
|
+
import { concatPcmToWav, dbfsToInt16Rms, normalizeRms } from "./pcm-concat.js";
|
|
6
7
|
import { fillTurnTimestampsProportional } from "./proportional-fill.js";
|
|
7
8
|
const TARGET_SAMPLE_RATE = 24_000;
|
|
8
9
|
const WHITESPACE_RE = /\s+/;
|
|
@@ -43,13 +44,20 @@ export async function runStitch(input) {
|
|
|
43
44
|
abortSignal: input.abortSignal,
|
|
44
45
|
headers: input.headers,
|
|
45
46
|
timestamps: input.timestamps,
|
|
47
|
+
pronunciations: input.pronunciations,
|
|
48
|
+
maxInputChars: input.maxInputChars,
|
|
46
49
|
});
|
|
47
50
|
}
|
|
48
51
|
catch (err) {
|
|
49
52
|
throw withTurnIndex(err, i);
|
|
50
53
|
}
|
|
51
54
|
// Hume and others omit sample rate from content-type; prefer getStitchOptions.
|
|
52
|
-
const
|
|
55
|
+
const resultMediaType = result.audio.mediaType.toLowerCase();
|
|
56
|
+
const decodeMediaType = resultMediaType.startsWith("audio/wav") ||
|
|
57
|
+
resultMediaType.startsWith("audio/x-wav")
|
|
58
|
+
? result.audio.mediaType
|
|
59
|
+
: stitchOpts.mediaType;
|
|
60
|
+
const segment = await decodeAudioToPcm16(result.audio.uint8Array, decodeMediaType);
|
|
53
61
|
return { result, segment };
|
|
54
62
|
});
|
|
55
63
|
const segments = perTurn.map((p) => p.segment);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AudioOutput } from "../audio-output.js";
|
|
2
|
+
import type { PronunciationsFor } from "../pronunciations/types.js";
|
|
2
3
|
import type { ResolvedModel, Voice } from "../speech-provider.js";
|
|
3
4
|
export interface ConversationTurn<V extends Voice = Voice> {
|
|
4
5
|
readonly model?: string | ResolvedModel<V>;
|
|
@@ -6,15 +7,18 @@ export interface ConversationTurn<V extends Voice = Voice> {
|
|
|
6
7
|
readonly text: string;
|
|
7
8
|
readonly voice: V;
|
|
8
9
|
}
|
|
9
|
-
export interface GenerateConversationOptions<V extends Voice = Voice> {
|
|
10
|
+
export interface GenerateConversationOptions<V extends Voice = Voice, M extends string | ResolvedModel<V> | undefined = string | ResolvedModel<V> | undefined> {
|
|
10
11
|
readonly abortSignal?: AbortSignal;
|
|
11
12
|
readonly apiKey?: string;
|
|
12
13
|
readonly gapMs?: number;
|
|
13
14
|
readonly headers?: Record<string, string>;
|
|
14
15
|
readonly maxConcurrency?: number;
|
|
16
|
+
readonly maxInputChars?: number;
|
|
15
17
|
readonly maxRetries?: number;
|
|
16
|
-
readonly model?:
|
|
18
|
+
readonly model?: M;
|
|
19
|
+
readonly moderationRulesetId?: string;
|
|
17
20
|
readonly output?: AudioOutput;
|
|
21
|
+
readonly pronunciations?: PronunciationsFor<M>;
|
|
18
22
|
readonly providerOptions?: Record<string, unknown>;
|
|
19
23
|
readonly timestamps?: boolean;
|
|
20
24
|
readonly turns: readonly ConversationTurn<V>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conversation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/conversation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK;IACvD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B,CAC1C,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,CAAC,SAAS,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,GAC3C,MAAM,GACN,aAAa,CAAC,CAAC,CAAC,GAChB,SAAS;IAEb,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEnB,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAE/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mp3.d.ts","sourceRoot":"","sources":["../../src/encoders/mp3.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mp3.d.ts","sourceRoot":"","sources":["../../src/encoders/mp3.ts"],"names":[],"mappings":"AA4BA,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GAAG,OAAO,CAAC,UAAU,CAAC,CAwCtB"}
|
package/dist/encoders/mp3.js
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
import { AudioSample, AudioSampleSource, BufferTarget, canEncodeAudio, Mp3OutputFormat, Output, } from "mediabunny";
|
|
1
2
|
const SUPPORTED_SAMPLE_RATES = new Set([
|
|
2
3
|
16_000, 22_050, 24_000, 32_000, 44_100, 48_000,
|
|
3
4
|
]);
|
|
5
|
+
let mp3EncoderRegistered;
|
|
6
|
+
async function ensureMp3Encoder() {
|
|
7
|
+
if (!mp3EncoderRegistered) {
|
|
8
|
+
mp3EncoderRegistered = (async () => {
|
|
9
|
+
if (await canEncodeAudio("mp3")) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const { registerMp3Encoder } = await import("@mediabunny/mp3-encoder");
|
|
13
|
+
registerMp3Encoder();
|
|
14
|
+
})();
|
|
15
|
+
}
|
|
16
|
+
await mp3EncoderRegistered;
|
|
17
|
+
}
|
|
4
18
|
export async function encodePcm16ToMp3(args) {
|
|
5
19
|
const { pcm, sampleRate, bitrateKbps } = args;
|
|
6
20
|
if (pcm.byteLength === 0) {
|
|
@@ -9,28 +23,32 @@ export async function encodePcm16ToMp3(args) {
|
|
|
9
23
|
if (!SUPPORTED_SAMPLE_RATES.has(sampleRate)) {
|
|
10
24
|
throw new Error(`encodePcm16ToMp3: unsupported sample rate ${sampleRate}`);
|
|
11
25
|
}
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
await ensureMp3Encoder();
|
|
27
|
+
const output = new Output({
|
|
28
|
+
format: new Mp3OutputFormat(),
|
|
29
|
+
target: new BufferTarget(),
|
|
30
|
+
});
|
|
31
|
+
const source = new AudioSampleSource({
|
|
32
|
+
codec: "mp3",
|
|
33
|
+
bitrate: bitrateKbps * 1000,
|
|
34
|
+
});
|
|
35
|
+
output.addAudioTrack(source);
|
|
36
|
+
await output.start();
|
|
37
|
+
const numberOfFrames = Math.floor(pcm.byteLength / 2);
|
|
38
|
+
const sample = new AudioSample({
|
|
39
|
+
data: new Int16Array(pcm.buffer, pcm.byteOffset, numberOfFrames),
|
|
40
|
+
format: "s16",
|
|
41
|
+
numberOfChannels: 1,
|
|
42
|
+
sampleRate,
|
|
43
|
+
timestamp: 0,
|
|
44
|
+
});
|
|
45
|
+
await source.add(sample);
|
|
46
|
+
source.close();
|
|
47
|
+
await output.finalize();
|
|
48
|
+
const buffer = output.target.buffer;
|
|
49
|
+
if (!buffer) {
|
|
50
|
+
throw new Error("encodePcm16ToMp3: Mp3OutputFormat produced no buffer");
|
|
33
51
|
}
|
|
34
|
-
return
|
|
52
|
+
return new Uint8Array(buffer);
|
|
35
53
|
}
|
|
36
54
|
//# sourceMappingURL=mp3.js.map
|
package/dist/encoders/mp3.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mp3.js","sourceRoot":"","sources":["../../src/encoders/mp3.ts"],"names":[],"mappings":"AAAA,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC/C,CAAC,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"mp3.js","sourceRoot":"","sources":["../../src/encoders/mp3.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,MAAM,GACP,MAAM,YAAY,CAAC;AAEpB,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC/C,CAAC,CAAC;AAEH,IAAI,oBAA+C,CAAC;AAEpD,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,oBAAoB,GAAG,CAAC,KAAK,IAAI,EAAE;YACjC,IAAI,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACvE,kBAAkB,EAAE,CAAC;QACvB,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,MAAM,oBAAoB,CAAC;AAC7B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAItC;IACC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE9C,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,6CAA6C,UAAU,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,gBAAgB,EAAE,CAAC;IAEzB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC;QACxB,MAAM,EAAE,IAAI,eAAe,EAAE;QAC7B,MAAM,EAAE,IAAI,YAAY,EAAE;KAC3B,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,iBAAiB,CAAC;QACnC,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,WAAW,GAAG,IAAI;KAC5B,CAAC,CAAC;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IAErB,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC;QAC7B,IAAI,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC;QAChE,MAAM,EAAE,KAAK;QACb,gBAAgB,EAAE,CAAC;QACnB,UAAU;QACV,SAAS,EAAE,CAAC;KACb,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -8,12 +8,14 @@ export declare class ApiError extends SpeechSDKError {
|
|
|
8
8
|
readonly responseBody?: unknown;
|
|
9
9
|
readonly code?: string;
|
|
10
10
|
readonly turnIndex?: number;
|
|
11
|
+
readonly retryAfterMs?: number;
|
|
11
12
|
constructor(message: string, options: {
|
|
12
13
|
statusCode: number;
|
|
13
14
|
responseBody?: unknown;
|
|
14
15
|
cause?: unknown;
|
|
15
16
|
code?: string;
|
|
16
17
|
turnIndex?: number;
|
|
18
|
+
retryAfterMs?: number;
|
|
17
19
|
});
|
|
18
20
|
}
|
|
19
21
|
export declare class NoSpeechGeneratedError extends SpeechSDKError {
|
|
@@ -32,12 +34,19 @@ export declare class VolumeAdjustmentUnsupportedError extends SpeechSDKError {
|
|
|
32
34
|
export declare class OutputConversionUnsupportedError extends SpeechSDKError {
|
|
33
35
|
constructor(model: string);
|
|
34
36
|
}
|
|
37
|
+
export declare class TextChunkingUnsupportedError extends SpeechSDKError {
|
|
38
|
+
constructor(model: string, maxInputChars: number);
|
|
39
|
+
}
|
|
35
40
|
export declare class AudioOutputInputError extends SpeechSDKError {
|
|
36
41
|
constructor(message: string);
|
|
37
42
|
}
|
|
38
43
|
export declare class GatewayInputError extends SpeechSDKError {
|
|
39
44
|
constructor(message: string);
|
|
40
45
|
}
|
|
46
|
+
export declare class ModerationRulesetIdRequiresGatewayError extends SpeechSDKError {
|
|
47
|
+
constructor();
|
|
48
|
+
}
|
|
49
|
+
export declare function assertGatewayForModerationRulesetId(moderationRulesetId: string | undefined, isGateway: boolean): void;
|
|
41
50
|
export declare class MissingApiKeyError extends SpeechSDKError {
|
|
42
51
|
readonly providerName: string;
|
|
43
52
|
readonly envVar: string;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,qBAAa,QAAS,SAAQ,cAAc;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,qBAAa,QAAS,SAAQ,cAAc;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB;CAUJ;AAED,qBAAa,sBAAuB,SAAQ,cAAc;IAExD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEhB,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAK/D;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAetE;AAED,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,KAAK,EAAE,MAAM;CAM1B;AAED,qBAAa,gCAAiC,SAAQ,cAAc;gBACtD,KAAK,EAAE,MAAM;CAM1B;AAED,qBAAa,gCAAiC,SAAQ,cAAc;gBACtD,KAAK,EAAE,MAAM;CAM1B;AAED,qBAAa,4BAA6B,SAAQ,cAAc;gBAClD,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM;CAMjD;AAED,qBAAa,qBAAsB,SAAQ,cAAc;gBAC3C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,uCAAwC,SAAQ,cAAc;;CAO1E;AAED,wBAAgB,mCAAmC,CACjD,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,SAAS,EAAE,OAAO,GACjB,IAAI,CAIN;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAQ9D;AAED,qBAAa,wBAAyB,SAAQ,cAAc;gBAC9C,OAAO,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB;CASF"}
|
package/dist/errors.js
CHANGED
|
@@ -11,6 +11,7 @@ export class ApiError extends SpeechSDKError {
|
|
|
11
11
|
code;
|
|
12
12
|
// Set by generateConversation's stitch path; undefined for single-turn calls and single-API-call paths (gateway, native dialogue).
|
|
13
13
|
turnIndex;
|
|
14
|
+
retryAfterMs;
|
|
14
15
|
constructor(message, options) {
|
|
15
16
|
super(message, { cause: options.cause });
|
|
16
17
|
this.name = "ApiError";
|
|
@@ -18,6 +19,7 @@ export class ApiError extends SpeechSDKError {
|
|
|
18
19
|
this.responseBody = options.responseBody;
|
|
19
20
|
this.code = options.code;
|
|
20
21
|
this.turnIndex = options.turnIndex;
|
|
22
|
+
this.retryAfterMs = options.retryAfterMs;
|
|
21
23
|
}
|
|
22
24
|
}
|
|
23
25
|
export class NoSpeechGeneratedError extends SpeechSDKError {
|
|
@@ -37,6 +39,7 @@ export function withTurnIndex(err, turnIndex) {
|
|
|
37
39
|
code: err.code,
|
|
38
40
|
cause: err,
|
|
39
41
|
turnIndex,
|
|
42
|
+
retryAfterMs: err.retryAfterMs,
|
|
40
43
|
});
|
|
41
44
|
}
|
|
42
45
|
if (err instanceof NoSpeechGeneratedError) {
|
|
@@ -62,6 +65,12 @@ export class OutputConversionUnsupportedError extends SpeechSDKError {
|
|
|
62
65
|
this.name = "OutputConversionUnsupportedError";
|
|
63
66
|
}
|
|
64
67
|
}
|
|
68
|
+
export class TextChunkingUnsupportedError extends SpeechSDKError {
|
|
69
|
+
constructor(model, maxInputChars) {
|
|
70
|
+
super(`${model} requires chunking at ${maxInputChars} input characters, but the provider doesn't expose a decodable PCM/WAV output mode for stitching chunks.`);
|
|
71
|
+
this.name = "TextChunkingUnsupportedError";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
65
74
|
export class AudioOutputInputError extends SpeechSDKError {
|
|
66
75
|
constructor(message) {
|
|
67
76
|
super(message);
|
|
@@ -74,6 +83,17 @@ export class GatewayInputError extends SpeechSDKError {
|
|
|
74
83
|
this.name = "GatewayInputError";
|
|
75
84
|
}
|
|
76
85
|
}
|
|
86
|
+
export class ModerationRulesetIdRequiresGatewayError extends SpeechSDKError {
|
|
87
|
+
constructor() {
|
|
88
|
+
super("moderationRulesetId requires the gateway path. Use a gateway model string (e.g., 'openai/tts-1') or createSpeechGateway() — the field is meaningless without a gateway in front.");
|
|
89
|
+
this.name = "ModerationRulesetIdRequiresGatewayError";
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export function assertGatewayForModerationRulesetId(moderationRulesetId, isGateway) {
|
|
93
|
+
if (moderationRulesetId !== undefined && !isGateway) {
|
|
94
|
+
throw new ModerationRulesetIdRequiresGatewayError();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
77
97
|
export class MissingApiKeyError extends SpeechSDKError {
|
|
78
98
|
providerName;
|
|
79
99
|
envVar;
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IACjC,UAAU,CAAS;IACnB,YAAY,CAAW;IAChC,qEAAqE;IAC5D,IAAI,CAAU;IACvB,mIAAmI;IAC1H,SAAS,CAAU;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IACjC,UAAU,CAAS;IACnB,YAAY,CAAW;IAChC,qEAAqE;IAC5D,IAAI,CAAU;IACvB,mIAAmI;IAC1H,SAAS,CAAU;IACnB,YAAY,CAAU;IAE/B,YACE,OAAe,EACf,OAOC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,8EAA8E;IACrE,SAAS,CAAU;IAE5B,YAAY,OAAgB,EAAE,OAAgC;QAC5D,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,SAAS,CAAC;IACtC,CAAC;CACF;AAED,MAAM,UAAU,aAAa,CAAC,GAAY,EAAE,SAAiB;IAC3D,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE;YAC/B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,GAAG;YACV,SAAS;YACT,YAAY,EAAE,GAAG,CAAC,YAAY;SAC/B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,GAAG,YAAY,sBAAsB,EAAE,CAAC;QAC1C,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IAC5D,YAAY,KAAa;QACvB,KAAK,CACH,iCAAiC,KAAK,iCAAiC,CACxE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,cAAc;IAClE,YAAY,KAAa;QACvB,KAAK,CACH,kCAAkC,KAAK,gEAAgE,CACxG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,cAAc;IAClE,YAAY,KAAa;QACvB,KAAK,CACH,8CAA8C,KAAK,gEAAgE,CACpH,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,OAAO,4BAA6B,SAAQ,cAAc;IAC9D,YAAY,KAAa,EAAE,aAAqB;QAC9C,KAAK,CACH,GAAG,KAAK,yBAAyB,aAAa,0GAA0G,CACzJ,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,8BAA8B,CAAC;IAC7C,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,cAAc;IACvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,uCAAwC,SAAQ,cAAc;IACzE;QACE,KAAK,CACH,kLAAkL,CACnL,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,yCAAyC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,UAAU,mCAAmC,CACjD,mBAAuC,EACvC,SAAkB;IAElB,IAAI,mBAAmB,KAAK,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;QACpD,MAAM,IAAI,uCAAuC,EAAE,CAAC;IACtD,CAAC;AACH,CAAC;AAED,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAC3C,YAAY,CAAS;IACrB,MAAM,CAAS;IAExB,YAAY,OAAiD;QAC3D,KAAK,CACH,GAAG,OAAO,CAAC,YAAY,8DAA8D,OAAO,CAAC,MAAM,wBAAwB,CAC5H,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAC1D,YAAY,OAIX;QACC,KAAK,CACH,GAAG,OAAO,CAAC,QAAQ,6CAA6C;YAC9D,OAAO,OAAO,CAAC,MAAM,uBAAuB,OAAO,CAAC,WAAW,aAAa;YAC5E,2DAA2D;YAC3D,qGAAqG,CACxG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { GenerateConversationOptions } from "./conversation/types.js";
|
|
2
|
-
import { type Voice } from "./speech-provider.js";
|
|
2
|
+
import { type ResolvedModel, type Voice } from "./speech-provider.js";
|
|
3
3
|
import type { ConversationResult } from "./speech-result.js";
|
|
4
4
|
export { ConversationInputError, DialogueConstraintError, MixedDispatchError, StitchUnsupportedError, } from "./conversation/errors.js";
|
|
5
5
|
export type { ConversationTurn, GenerateConversationOptions, } from "./conversation/types.js";
|
|
6
6
|
export type { ConversationMetadata, ConversationResult, } from "./speech-result.js";
|
|
7
|
-
export declare function generateConversation<V extends Voice = Voice>(options: GenerateConversationOptions<V>): Promise<ConversationResult>;
|
|
7
|
+
export declare function generateConversation<V extends Voice = Voice, M extends string | ResolvedModel<V> | undefined = string | ResolvedModel<V> | undefined>(options: GenerateConversationOptions<V, M>): Promise<ConversationResult>;
|
|
8
8
|
//# sourceMappingURL=generate-conversation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-conversation.d.ts","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-conversation.d.ts","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AAmBjC,OAAO,EAIL,KAAK,aAAa,EAElB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAM5B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAM5B,wBAAsB,oBAAoB,CACxC,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,CAAC,SAAS,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,SAAS,GAC3C,MAAM,GACN,aAAa,CAAC,CAAC,CAAC,GAChB,SAAS,EACb,OAAO,EAAE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwHzE"}
|