@speech-sdk/core 0.7.0 → 0.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/README.md +227 -108
- package/dist/__tests__/e2e/_save-audio.d.ts +0 -42
- package/dist/__tests__/e2e/_save-audio.d.ts.map +1 -1
- package/dist/__tests__/e2e/_save-audio.js +0 -59
- package/dist/__tests__/e2e/_save-audio.js.map +1 -1
- 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 +0 -5
- package/dist/audio-duration.d.ts.map +1 -1
- package/dist/audio-duration.js +5 -21
- package/dist/audio-duration.js.map +1 -1
- package/dist/audio-output.d.ts +39 -0
- package/dist/audio-output.d.ts.map +1 -0
- package/dist/audio-output.js +111 -0
- package/dist/audio-output.js.map +1 -0
- package/dist/audio-utils.d.ts +2 -10
- package/dist/audio-utils.d.ts.map +1 -1
- package/dist/audio-utils.js +57 -15
- package/dist/audio-utils.js.map +1 -1
- package/dist/captions.d.ts +0 -108
- package/dist/captions.d.ts.map +1 -1
- package/dist/captions.js +8 -98
- package/dist/captions.js.map +1 -1
- package/dist/conversation/attribute-timestamps.d.ts +26 -0
- package/dist/conversation/attribute-timestamps.d.ts.map +1 -0
- package/dist/conversation/attribute-timestamps.js +276 -0
- package/dist/conversation/attribute-timestamps.js.map +1 -0
- package/dist/conversation/dispatch.d.ts +5 -5
- package/dist/conversation/dispatch.d.ts.map +1 -1
- package/dist/conversation/dispatch.js +18 -8
- package/dist/conversation/dispatch.js.map +1 -1
- package/dist/conversation/errors.d.ts +3 -0
- package/dist/conversation/errors.d.ts.map +1 -1
- package/dist/conversation/errors.js +6 -0
- package/dist/conversation/errors.js.map +1 -1
- package/dist/conversation/pcm-concat.d.ts +0 -24
- package/dist/conversation/pcm-concat.d.ts.map +1 -1
- package/dist/conversation/pcm-concat.js +8 -183
- package/dist/conversation/pcm-concat.js.map +1 -1
- package/dist/conversation/proportional-fill.d.ts +10 -0
- package/dist/conversation/proportional-fill.d.ts.map +1 -0
- package/dist/conversation/proportional-fill.js +64 -0
- package/dist/conversation/proportional-fill.js.map +1 -0
- package/dist/conversation/silence-detection.d.ts +14 -0
- package/dist/conversation/silence-detection.d.ts.map +1 -0
- package/dist/conversation/silence-detection.js +52 -0
- package/dist/conversation/silence-detection.js.map +1 -0
- package/dist/conversation/stitch.d.ts +9 -6
- package/dist/conversation/stitch.d.ts.map +1 -1
- package/dist/conversation/stitch.js +72 -51
- package/dist/conversation/stitch.js.map +1 -1
- package/dist/conversation/types.d.ts +7 -37
- package/dist/conversation/types.d.ts.map +1 -1
- package/dist/conversation/validate.d.ts +1 -16
- package/dist/conversation/validate.d.ts.map +1 -1
- package/dist/conversation/validate.js +29 -29
- package/dist/conversation/validate.js.map +1 -1
- package/dist/default-stt-fallback.d.ts +3 -0
- package/dist/default-stt-fallback.d.ts.map +1 -0
- package/dist/default-stt-fallback.js +11 -0
- package/dist/default-stt-fallback.js.map +1 -0
- package/dist/derive-timestamps.d.ts +1 -5
- package/dist/derive-timestamps.d.ts.map +1 -1
- package/dist/derive-timestamps.js +1 -15
- package/dist/derive-timestamps.js.map +1 -1
- package/dist/encoders/mp3.d.ts +6 -0
- package/dist/encoders/mp3.d.ts.map +1 -0
- package/dist/encoders/mp3.js +54 -0
- package/dist/encoders/mp3.js.map +1 -0
- package/dist/errors.d.ts +20 -13
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +49 -15
- package/dist/errors.js.map +1 -1
- package/dist/generate-conversation.d.ts +5 -4
- package/dist/generate-conversation.d.ts.map +1 -1
- package/dist/generate-conversation.js +250 -93
- package/dist/generate-conversation.js.map +1 -1
- package/dist/generate-speech.d.ts +7 -28
- package/dist/generate-speech.d.ts.map +1 -1
- package/dist/generate-speech.js +185 -94
- package/dist/generate-speech.js.map +1 -1
- package/dist/index.d.ts +7 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -13
- package/dist/logger.js.map +1 -1
- package/dist/metadata.d.ts +0 -22
- package/dist/metadata.d.ts.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/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 +4 -9
- package/dist/provider-utils.d.ts.map +1 -1
- package/dist/provider-utils.js +60 -51
- package/dist/provider-utils.js.map +1 -1
- package/dist/providers/cartesia/alignment.d.ts +0 -16
- package/dist/providers/cartesia/alignment.d.ts.map +1 -1
- package/dist/providers/cartesia/alignment.js +1 -6
- package/dist/providers/cartesia/alignment.js.map +1 -1
- package/dist/providers/cartesia/index.d.ts +29 -19
- package/dist/providers/cartesia/index.d.ts.map +1 -1
- package/dist/providers/cartesia/index.js +116 -80
- package/dist/providers/cartesia/index.js.map +1 -1
- package/dist/providers/deepgram/index.d.ts +23 -8
- package/dist/providers/deepgram/index.d.ts.map +1 -1
- package/dist/providers/deepgram/index.js +51 -18
- package/dist/providers/deepgram/index.js.map +1 -1
- package/dist/providers/elevenlabs/alignment.d.ts +7 -21
- package/dist/providers/elevenlabs/alignment.d.ts.map +1 -1
- package/dist/providers/elevenlabs/alignment.js +8 -9
- package/dist/providers/elevenlabs/alignment.js.map +1 -1
- package/dist/providers/elevenlabs/index.d.ts +14 -38
- package/dist/providers/elevenlabs/index.d.ts.map +1 -1
- package/dist/providers/elevenlabs/index.js +186 -169
- package/dist/providers/elevenlabs/index.js.map +1 -1
- package/dist/providers/fal/index.d.ts +11 -20
- package/dist/providers/fal/index.d.ts.map +1 -1
- package/dist/providers/fal/index.js +49 -37
- package/dist/providers/fal/index.js.map +1 -1
- package/dist/providers/fish-audio/index.d.ts +14 -8
- package/dist/providers/fish-audio/index.d.ts.map +1 -1
- package/dist/providers/fish-audio/index.js +47 -19
- package/dist/providers/fish-audio/index.js.map +1 -1
- package/dist/providers/gateway/index.d.ts +76 -0
- package/dist/providers/gateway/index.d.ts.map +1 -0
- package/dist/providers/gateway/index.js +251 -0
- package/dist/providers/gateway/index.js.map +1 -0
- package/dist/providers/google/index.d.ts +12 -20
- package/dist/providers/google/index.d.ts.map +1 -1
- package/dist/providers/google/index.js +180 -162
- package/dist/providers/google/index.js.map +1 -1
- package/dist/providers/hume/alignment.d.ts +30 -35
- package/dist/providers/hume/alignment.d.ts.map +1 -1
- package/dist/providers/hume/alignment.js +14 -8
- package/dist/providers/hume/alignment.js.map +1 -1
- package/dist/providers/hume/index.d.ts +16 -16
- package/dist/providers/hume/index.d.ts.map +1 -1
- package/dist/providers/hume/index.js +79 -65
- package/dist/providers/hume/index.js.map +1 -1
- package/dist/providers/inworld/alignment.d.ts +8 -22
- package/dist/providers/inworld/alignment.d.ts.map +1 -1
- package/dist/providers/inworld/alignment.js +9 -8
- package/dist/providers/inworld/alignment.js.map +1 -1
- package/dist/providers/inworld/index.d.ts +17 -20
- package/dist/providers/inworld/index.d.ts.map +1 -1
- package/dist/providers/inworld/index.js +79 -47
- package/dist/providers/inworld/index.js.map +1 -1
- package/dist/providers/mistral/index.d.ts +14 -8
- package/dist/providers/mistral/index.d.ts.map +1 -1
- package/dist/providers/mistral/index.js +63 -48
- package/dist/providers/mistral/index.js.map +1 -1
- package/dist/providers/murf/alignment.d.ts +10 -19
- package/dist/providers/murf/alignment.d.ts.map +1 -1
- package/dist/providers/murf/alignment.js +10 -5
- package/dist/providers/murf/alignment.js.map +1 -1
- package/dist/providers/murf/index.d.ts +15 -16
- package/dist/providers/murf/index.d.ts.map +1 -1
- package/dist/providers/murf/index.js +105 -58
- package/dist/providers/murf/index.js.map +1 -1
- package/dist/providers/openai/index.d.ts +43 -29
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +294 -106
- package/dist/providers/openai/index.js.map +1 -1
- package/dist/providers/resemble/alignment.d.ts +8 -29
- package/dist/providers/resemble/alignment.d.ts.map +1 -1
- package/dist/providers/resemble/alignment.js +9 -12
- package/dist/providers/resemble/alignment.js.map +1 -1
- package/dist/providers/resemble/index.d.ts +21 -11
- package/dist/providers/resemble/index.d.ts.map +1 -1
- package/dist/providers/resemble/index.js +89 -49
- 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 +25 -9
- package/dist/providers/xai/index.d.ts.map +1 -1
- package/dist/providers/xai/index.js +63 -40
- package/dist/providers/xai/index.js.map +1 -1
- package/dist/providers.d.ts +31 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +16 -0
- package/dist/providers.js.map +1 -0
- package/dist/resolve-provider.d.ts.map +1 -1
- package/dist/resolve-provider.js +8 -51
- package/dist/resolve-provider.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/speech-provider.d.ts +28 -53
- package/dist/speech-provider.d.ts.map +1 -1
- package/dist/speech-provider.js +5 -26
- package/dist/speech-provider.js.map +1 -1
- package/dist/speech-result.d.ts +8 -9
- package/dist/speech-result.d.ts.map +1 -1
- package/dist/speech-result.js.map +1 -1
- package/dist/speech-to-text-provider.d.ts +0 -12
- package/dist/speech-to-text-provider.d.ts.map +1 -1
- package/dist/stream-speech.d.ts +4 -2
- package/dist/stream-speech.d.ts.map +1 -1
- package/dist/stream-speech.js +36 -22
- package/dist/stream-speech.js.map +1 -1
- package/dist/timestamps.d.ts +3 -17
- package/dist/timestamps.d.ts.map +1 -1
- package/dist/turns.d.ts +9 -0
- package/dist/turns.d.ts.map +1 -0
- package/dist/turns.js +21 -0
- package/dist/turns.js.map +1 -0
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/volume-adjust.d.ts +0 -6
- package/dist/volume-adjust.d.ts.map +1 -1
- package/dist/volume-adjust.js +4 -16
- package/dist/volume-adjust.js.map +1 -1
- package/package.json +13 -66
- package/dist/stt-providers/openai/index.d.ts +0 -42
- package/dist/stt-providers/openai/index.d.ts.map +0 -1
- package/dist/stt-providers/openai/index.js +0 -184
- package/dist/stt-providers/openai/index.js.map +0 -1
|
@@ -1,39 +1,73 @@
|
|
|
1
1
|
import pRetry from "p-retry";
|
|
2
2
|
import { computeAudioDuration } from "./audio-duration.js";
|
|
3
|
+
import { applyOptionalOutputConversion, validateOutput, } from "./audio-output.js";
|
|
3
4
|
import { chooseConversationPath } from "./conversation/dispatch.js";
|
|
4
5
|
import { ConversationInputError } from "./conversation/errors.js";
|
|
5
6
|
import { validateConversationInput } from "./conversation/validate.js";
|
|
7
|
+
import { getDefaultSTTFallback } from "./default-stt-fallback.js";
|
|
6
8
|
import { deriveTimestampsViaSTT } from "./derive-timestamps.js";
|
|
7
|
-
import {
|
|
9
|
+
import { NoSpeechGeneratedError, OutputConversionUnsupportedError, } from "./errors.js";
|
|
8
10
|
import { debug } from "./logger.js";
|
|
11
|
+
import { inverseAlign } from "./pronunciations/inverse-align.js";
|
|
12
|
+
import { mergeRules } from "./pronunciations/merge.js";
|
|
13
|
+
import { substitute } from "./pronunciations/substitute.js";
|
|
14
|
+
import { validatePronunciationsInput } from "./pronunciations/validate.js";
|
|
9
15
|
import { resolveModel } from "./resolve-provider.js";
|
|
16
|
+
import { buildRetryOptions } from "./retry-options.js";
|
|
10
17
|
import { modelDeclaresNativeTimestamps, } from "./speech-provider.js";
|
|
11
18
|
import { DefaultGeneratedAudioFile } from "./speech-result.js";
|
|
12
19
|
// biome-ignore lint/performance/noBarrelFile: public entry point — re-export error classes so callers get fn + types + errors from one import
|
|
13
|
-
export { ConversationInputError, DialogueConstraintError, StitchUnsupportedError, } from "./conversation/errors.js";
|
|
20
|
+
export { ConversationInputError, DialogueConstraintError, MixedDispatchError, StitchUnsupportedError, } from "./conversation/errors.js";
|
|
14
21
|
const DEFAULT_GAP_MS = 300;
|
|
15
22
|
const DEFAULT_MAX_CONCURRENCY = 6;
|
|
16
23
|
const DEFAULT_MAX_RETRIES = 2;
|
|
17
24
|
export async function generateConversation(options) {
|
|
18
25
|
validateConversationInput(options);
|
|
26
|
+
validateOutput(options.output);
|
|
27
|
+
// Cache string-model resolutions so turns share one provider instance — dispatch compares by reference.
|
|
28
|
+
const stringResolutionCache = new Map();
|
|
29
|
+
const resolveOnce = (model) => {
|
|
30
|
+
if (typeof model !== "string") {
|
|
31
|
+
return resolveModel(model, {
|
|
32
|
+
apiKey: options.apiKey,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const cached = stringResolutionCache.get(model);
|
|
36
|
+
if (cached) {
|
|
37
|
+
return cached;
|
|
38
|
+
}
|
|
39
|
+
const fresh = resolveModel(model, {
|
|
40
|
+
apiKey: options.apiKey,
|
|
41
|
+
});
|
|
42
|
+
stringResolutionCache.set(model, fresh);
|
|
43
|
+
return fresh;
|
|
44
|
+
};
|
|
45
|
+
const topLevelResolved = options.model == null ? undefined : resolveOnce(options.model);
|
|
19
46
|
const resolvedPerTurn = options.turns.map((turn) => {
|
|
20
|
-
|
|
47
|
+
if (turn.model == null && topLevelResolved) {
|
|
48
|
+
return topLevelResolved;
|
|
49
|
+
}
|
|
50
|
+
const model = turn.model;
|
|
21
51
|
if (!model) {
|
|
22
52
|
throw new Error("generateConversation: model is required");
|
|
23
53
|
}
|
|
24
|
-
return
|
|
54
|
+
return resolveOnce(model);
|
|
25
55
|
});
|
|
26
56
|
const path = chooseConversationPath({
|
|
27
57
|
resolvedPerTurn,
|
|
28
58
|
turns: options.turns,
|
|
29
59
|
});
|
|
60
|
+
const isGateway = path.kind === "gateway";
|
|
61
|
+
validatePronunciationsInput(options.pronunciations, isGateway);
|
|
62
|
+
if (path.kind === "gateway") {
|
|
63
|
+
return await runGateway({
|
|
64
|
+
options,
|
|
65
|
+
resolvedPerTurn: path.resolvedPerTurn,
|
|
66
|
+
maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
30
69
|
if (path.kind === "native") {
|
|
31
|
-
//
|
|
32
|
-
// API call, so per-turn providerOptions have no well-defined meaning —
|
|
33
|
-
// silently collapsing them to a single blob would lie to the caller. Fail
|
|
34
|
-
// loudly and let them move providerOptions to the top level (where it's
|
|
35
|
-
// forwarded once to the dialogue call) or pick a model that routes
|
|
36
|
-
// through the stitch path.
|
|
70
|
+
// Native-dialogue is one API call; per-turn providerOptions can't be honored — fail loudly.
|
|
37
71
|
const turnWithOpts = options.turns.findIndex((t) => t.providerOptions !== undefined);
|
|
38
72
|
if (turnWithOpts !== -1) {
|
|
39
73
|
throw new ConversationInputError(`turns[${turnWithOpts}].providerOptions is set, but ${path.resolved.provider.id}/${path.resolved.modelId} dispatched to the native dialogue path, which renders all turns in one API call. Per-turn providerOptions are not supported on this path; move them to the top-level providerOptions instead.`);
|
|
@@ -44,9 +78,7 @@ export async function generateConversation(options) {
|
|
|
44
78
|
maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
|
|
45
79
|
});
|
|
46
80
|
}
|
|
47
|
-
// Lazy-load
|
|
48
|
-
// native (e.g. a Jellypod gateway provider that handles concatenation
|
|
49
|
-
// server-side) never bundle pcm-concat / audio-utils / mediabunny WAV mux.
|
|
81
|
+
// Lazy-load so native-only callers don't bundle pcm-concat / mediabunny.
|
|
50
82
|
const { runStitch } = await import("./conversation/stitch.js");
|
|
51
83
|
const stitched = await runStitch({
|
|
52
84
|
resolvedPerTurn,
|
|
@@ -57,26 +89,23 @@ export async function generateConversation(options) {
|
|
|
57
89
|
gapMs: options.gapMs ?? DEFAULT_GAP_MS,
|
|
58
90
|
maxConcurrency: options.maxConcurrency ?? DEFAULT_MAX_CONCURRENCY,
|
|
59
91
|
maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
|
|
60
|
-
|
|
92
|
+
output: options.output,
|
|
61
93
|
volumeDbfs: options.volumeDbfs,
|
|
62
94
|
abortSignal: options.abortSignal,
|
|
63
95
|
headers: options.headers,
|
|
64
|
-
timestamps: options.timestamps ??
|
|
65
|
-
|
|
96
|
+
timestamps: options.timestamps ?? false,
|
|
97
|
+
pronunciations: options.pronunciations,
|
|
66
98
|
});
|
|
67
99
|
if (stitched.audio.length === 0) {
|
|
68
100
|
throw new NoSpeechGeneratedError();
|
|
69
101
|
}
|
|
70
|
-
const providers = Array.from(new Set(resolvedPerTurn.map((r) => r.provider.id)));
|
|
71
|
-
const models = Array.from(new Set(resolvedPerTurn.map((r) => r.modelId)));
|
|
72
102
|
const metadata = {
|
|
73
103
|
latencyMs: stitched.metadata.latencyMs,
|
|
74
104
|
inputChars: stitched.metadata.inputChars,
|
|
75
|
-
provider: providers.length === 1 ? providers[0] : providers.join(","),
|
|
76
|
-
model: models.length === 1 ? models[0] : models.join(","),
|
|
77
105
|
...(stitched.metadata.audioDurationMs != null && {
|
|
78
106
|
audioDurationMs: stitched.metadata.audioDurationMs,
|
|
79
107
|
}),
|
|
108
|
+
perTurn: stitched.metadataPerTurn,
|
|
80
109
|
};
|
|
81
110
|
return {
|
|
82
111
|
audio: new DefaultGeneratedAudioFile({
|
|
@@ -89,6 +118,68 @@ export async function generateConversation(options) {
|
|
|
89
118
|
timestamps: stitched.timestamps,
|
|
90
119
|
};
|
|
91
120
|
}
|
|
121
|
+
async function runGateway(args) {
|
|
122
|
+
const { options, resolvedPerTurn, maxRetries } = args;
|
|
123
|
+
const start = performance.now();
|
|
124
|
+
const provider = resolvedPerTurn[0]
|
|
125
|
+
.provider;
|
|
126
|
+
const includeTimestamps = options.timestamps ?? false;
|
|
127
|
+
// Pick wire shape: shared model when every turn resolved to the same modelId
|
|
128
|
+
// (covers both `options.model` and the case where every turn happened to
|
|
129
|
+
// resolve identically); per-turn model when they diverge.
|
|
130
|
+
const firstModelId = resolvedPerTurn[0].modelId;
|
|
131
|
+
const allSameModel = resolvedPerTurn.every((r) => r.modelId === firstModelId);
|
|
132
|
+
// Object-shaped voices aren't supported on the gateway conversation path.
|
|
133
|
+
const wireTurns = options.turns.map((t, i) => {
|
|
134
|
+
if (typeof t.voice !== "string") {
|
|
135
|
+
throw new Error(`speech-gateway/conversation: gateway conversation path requires string voices; turns[${i}].voice is an object.`);
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
...(allSameModel ? {} : { model: resolvedPerTurn[i].modelId }),
|
|
139
|
+
voice: t.voice,
|
|
140
|
+
text: t.text,
|
|
141
|
+
...(t.providerOptions && { providerOptions: t.providerOptions }),
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
const result = await pRetry(() => provider.generateConversation({
|
|
145
|
+
...(allSameModel && { modelId: firstModelId }),
|
|
146
|
+
turns: wireTurns,
|
|
147
|
+
gapMs: options.gapMs ?? DEFAULT_GAP_MS,
|
|
148
|
+
volumeDbfs: options.volumeDbfs,
|
|
149
|
+
providerOptions: options.providerOptions,
|
|
150
|
+
abortSignal: options.abortSignal,
|
|
151
|
+
headers: options.headers,
|
|
152
|
+
includeTimestamps,
|
|
153
|
+
output: options.output,
|
|
154
|
+
pronunciations: options.pronunciations,
|
|
155
|
+
}), buildRetryOptions({ maxRetries, abortSignal: options.abortSignal }));
|
|
156
|
+
const latencyMs = Math.round(performance.now() - start);
|
|
157
|
+
if (result.audio.length === 0) {
|
|
158
|
+
throw new NoSpeechGeneratedError();
|
|
159
|
+
}
|
|
160
|
+
const audio = new DefaultGeneratedAudioFile({
|
|
161
|
+
data: result.audio,
|
|
162
|
+
mediaType: result.mediaType,
|
|
163
|
+
});
|
|
164
|
+
const audioDurationMs = await computeAudioDuration(audio.uint8Array, result.mediaType);
|
|
165
|
+
const timestamps = includeTimestamps ? (result.timestamps ?? []) : undefined;
|
|
166
|
+
const warnings = result.warnings;
|
|
167
|
+
const inputChars = options.turns.reduce((n, t) => n + t.text.length, 0);
|
|
168
|
+
const metadata = {
|
|
169
|
+
latencyMs,
|
|
170
|
+
inputChars,
|
|
171
|
+
...(audioDurationMs != null && { audioDurationMs }),
|
|
172
|
+
};
|
|
173
|
+
return {
|
|
174
|
+
audio,
|
|
175
|
+
metadata,
|
|
176
|
+
...(result.providerMetadata !== undefined && {
|
|
177
|
+
providerMetadata: result.providerMetadata,
|
|
178
|
+
}),
|
|
179
|
+
timestamps,
|
|
180
|
+
warnings: warnings && warnings.length > 0 ? warnings : undefined,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
92
183
|
async function runNative(args) {
|
|
93
184
|
const { options, resolved, maxRetries } = args;
|
|
94
185
|
const start = performance.now();
|
|
@@ -96,131 +187,197 @@ async function runNative(args) {
|
|
|
96
187
|
throw new Error(`generateConversation: ${resolved.provider.id}/${resolved.modelId} dispatched to native but generateDialogue missing`);
|
|
97
188
|
}
|
|
98
189
|
const generateDialogue = resolved.provider.generateDialogue.bind(resolved.provider);
|
|
99
|
-
//
|
|
100
|
-
|
|
101
|
-
// mode so we can re-RMS-level the output. Otherwise the dialogue runs
|
|
102
|
-
// unchanged and emerges in whatever format the provider mixes natively
|
|
103
|
-
// (often MP3) — we surface that via a warning.
|
|
104
|
-
const normalize = options.normalizeVolume ?? true;
|
|
105
|
-
const stitchOpts = normalize
|
|
106
|
-
? resolved.provider.getStitchOptions?.(resolved.modelId)
|
|
107
|
-
: undefined;
|
|
190
|
+
// Force decodable PCM/WAV via getStitchOptions for normalization; if unavailable, emit the provider's mixed audio and warn.
|
|
191
|
+
const stitchOpts = resolved.provider.getStitchOptions?.(resolved.modelId);
|
|
108
192
|
const warnings = [];
|
|
109
|
-
if (
|
|
110
|
-
warnings.push(`${resolved.provider.id}/${resolved.modelId}: native dialogue path returns the provider's mixed audio without volume normalization
|
|
193
|
+
if (!stitchOpts) {
|
|
194
|
+
warnings.push(`${resolved.provider.id}/${resolved.modelId}: native dialogue path returns the provider's mixed audio without volume normalization (no decodable PCM/WAV mode).`);
|
|
111
195
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
//
|
|
196
|
+
if (options.output && !stitchOpts) {
|
|
197
|
+
throw new OutputConversionUnsupportedError(`${resolved.provider.id}/${resolved.modelId}`);
|
|
198
|
+
}
|
|
199
|
+
// Stitch options must win — caller-supplied response_format would break the decoder.
|
|
116
200
|
const dialogueProviderOptions = stitchOpts
|
|
117
201
|
? { ...options.providerOptions, ...stitchOpts.providerOptions }
|
|
118
202
|
: options.providerOptions;
|
|
119
|
-
const
|
|
203
|
+
const requestTimestamps = options.timestamps ?? false;
|
|
120
204
|
const hasNativeDialogueTimestamps = modelDeclaresNativeTimestamps(resolved);
|
|
121
|
-
const shouldRequestNative =
|
|
122
|
-
hasNativeDialogueTimestamps;
|
|
205
|
+
const shouldRequestNative = requestTimestamps && hasNativeDialogueTimestamps;
|
|
123
206
|
const dialogueId = `${resolved.provider.id}/${resolved.modelId}`;
|
|
124
|
-
if (
|
|
125
|
-
debug(`${dialogueId} (dialogue): timestamps:
|
|
207
|
+
if (!requestTimestamps) {
|
|
208
|
+
debug(`${dialogueId} (dialogue): timestamps: false — skipping alignment.`);
|
|
126
209
|
}
|
|
127
210
|
else if (shouldRequestNative) {
|
|
128
|
-
debug(`${dialogueId} (dialogue): timestamps:
|
|
129
|
-
}
|
|
130
|
-
else if (timestampMode === "auto") {
|
|
131
|
-
debug(`${dialogueId} (dialogue): timestamps: "auto" — dialogue endpoint has no native alignment; skipping. Pass timestamps: "on" to derive from the mixed audio via STT (flat list, no speaker labels).`);
|
|
211
|
+
debug(`${dialogueId} (dialogue): timestamps: true — requesting native dialogue alignment.`);
|
|
132
212
|
}
|
|
133
213
|
else {
|
|
134
|
-
debug(`${dialogueId} (dialogue): timestamps:
|
|
214
|
+
debug(`${dialogueId} (dialogue): timestamps: true but no native dialogue alignment — will transcribe mixed audio via STT after rendering (adds a round-trip).`);
|
|
135
215
|
}
|
|
216
|
+
const ruleMap = options.pronunciations?.rules?.length
|
|
217
|
+
? mergeRules(options.pronunciations.rules)
|
|
218
|
+
: null;
|
|
219
|
+
const substitutedTurns = buildSubstitutedTurns(options.turns, ruleMap);
|
|
136
220
|
const result = await pRetry(() => generateDialogue({
|
|
137
221
|
modelId: resolved.modelId,
|
|
138
|
-
turns:
|
|
222
|
+
turns: substitutedTurns.map((t) => ({ voice: t.voice, text: t.text })),
|
|
139
223
|
providerOptions: dialogueProviderOptions,
|
|
140
224
|
abortSignal: options.abortSignal,
|
|
141
225
|
headers: options.headers,
|
|
142
226
|
includeTimestamps: shouldRequestNative,
|
|
143
|
-
}), {
|
|
144
|
-
retries: maxRetries,
|
|
145
|
-
signal: options.abortSignal,
|
|
146
|
-
shouldRetry: ({ error }) => {
|
|
147
|
-
if (error instanceof ApiError && error.statusCode < 500) {
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
|
-
return true;
|
|
151
|
-
},
|
|
152
|
-
});
|
|
227
|
+
}), buildRetryOptions({ maxRetries, abortSignal: options.abortSignal }));
|
|
153
228
|
const latencyMs = Math.round(performance.now() - start);
|
|
154
229
|
if (result.audio.length === 0) {
|
|
155
230
|
throw new NoSpeechGeneratedError();
|
|
156
231
|
}
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
if (stitchOpts) {
|
|
162
|
-
const { adjustVolume } = await import("./volume-adjust.js");
|
|
163
|
-
audioBytes = await adjustVolume({
|
|
164
|
-
audio: result.audio,
|
|
165
|
-
mediaType: stitchOpts.mediaType,
|
|
166
|
-
volumeDbfs: options.volumeDbfs ?? -20,
|
|
167
|
-
});
|
|
168
|
-
outputMediaType = "audio/wav";
|
|
169
|
-
}
|
|
170
|
-
const audio = new DefaultGeneratedAudioFile({
|
|
171
|
-
data: audioBytes,
|
|
172
|
-
mediaType: outputMediaType,
|
|
232
|
+
const { audio, outputMediaType } = await buildNativeAudio({
|
|
233
|
+
result,
|
|
234
|
+
stitchOpts,
|
|
235
|
+
volumeDbfs: options.volumeDbfs,
|
|
173
236
|
});
|
|
174
237
|
const computedDuration = await computeAudioDuration(audio.uint8Array, outputMediaType);
|
|
175
238
|
const audioDurationMs = computedDuration ?? result.audioDurationMs;
|
|
176
|
-
const timestamps = await resolveNativeDialogueTimestamps({
|
|
177
|
-
|
|
239
|
+
const { timestamps: rawTimestamps, warnings: attributionWarnings } = await resolveNativeDialogueTimestamps({
|
|
240
|
+
requestTimestamps,
|
|
178
241
|
nativeTimestamps: result.timestamps,
|
|
179
242
|
audio: audio.uint8Array,
|
|
180
243
|
mediaType: outputMediaType,
|
|
181
244
|
ttsModel: `${resolved.provider.id}/${resolved.modelId}`,
|
|
182
|
-
|
|
245
|
+
resolved,
|
|
183
246
|
abortSignal: options.abortSignal,
|
|
247
|
+
substitutedTurnTexts: substitutedTurns.map((t) => t.text),
|
|
184
248
|
});
|
|
249
|
+
const timestamps = ruleMap
|
|
250
|
+
? inverseAlignDialogueTimestamps(rawTimestamps, substitutedTurns)
|
|
251
|
+
: rawTimestamps;
|
|
252
|
+
const converted = await applyOptionalOutputConversion({
|
|
253
|
+
audio: audio.uint8Array,
|
|
254
|
+
mediaType: outputMediaType,
|
|
255
|
+
output: options.output,
|
|
256
|
+
});
|
|
257
|
+
const finalAudio = options.output
|
|
258
|
+
? new DefaultGeneratedAudioFile({
|
|
259
|
+
data: converted.audio,
|
|
260
|
+
mediaType: converted.mediaType,
|
|
261
|
+
})
|
|
262
|
+
: audio;
|
|
185
263
|
const inputChars = options.turns.reduce((n, t) => n + t.text.length, 0);
|
|
186
264
|
const metadata = {
|
|
187
265
|
latencyMs,
|
|
188
266
|
inputChars,
|
|
189
|
-
provider: resolved.provider.id,
|
|
190
|
-
model: resolved.modelId,
|
|
191
267
|
...(audioDurationMs != null && { audioDurationMs }),
|
|
192
268
|
};
|
|
269
|
+
const mergedWarnings = warnings.length > 0 || attributionWarnings.length > 0
|
|
270
|
+
? [...warnings, ...attributionWarnings]
|
|
271
|
+
: undefined;
|
|
193
272
|
return {
|
|
194
|
-
audio,
|
|
273
|
+
audio: finalAudio,
|
|
195
274
|
metadata,
|
|
196
275
|
providerMetadata: result.providerMetadata,
|
|
197
|
-
warnings:
|
|
276
|
+
warnings: mergedWarnings,
|
|
198
277
|
timestamps,
|
|
199
278
|
};
|
|
200
279
|
}
|
|
201
|
-
// Resolves timestamps for the native dialogue path:
|
|
202
|
-
// - "off" → undefined
|
|
203
|
-
// - native alignment returned → pass through
|
|
204
|
-
// - "on" without native → STT fallback on the mixed audio
|
|
205
|
-
// (flat WordTimestamp[] without speaker labels — limitation of one-call
|
|
206
|
-
// dialogue rendering)
|
|
207
|
-
// - "auto" without native → undefined
|
|
208
280
|
async function resolveNativeDialogueTimestamps(args) {
|
|
209
|
-
if (args.
|
|
210
|
-
return;
|
|
281
|
+
if (!args.requestTimestamps) {
|
|
282
|
+
return { timestamps: undefined, warnings: [] };
|
|
211
283
|
}
|
|
284
|
+
// Either use native flat timestamps, or derive via STT fallback.
|
|
285
|
+
let flatTimestamps;
|
|
212
286
|
if (args.nativeTimestamps && args.nativeTimestamps.length > 0) {
|
|
213
|
-
|
|
287
|
+
flatTimestamps = args.nativeTimestamps;
|
|
214
288
|
}
|
|
215
|
-
|
|
216
|
-
|
|
289
|
+
else {
|
|
290
|
+
const fallback = args.resolved.fallbackSTT ?? (await getDefaultSTTFallback());
|
|
291
|
+
flatTimestamps = await deriveTimestampsViaSTT({
|
|
217
292
|
ttsModel: args.ttsModel,
|
|
218
293
|
audio: args.audio,
|
|
219
294
|
mediaType: args.mediaType,
|
|
220
|
-
|
|
295
|
+
timestampFallback: fallback,
|
|
221
296
|
abortSignal: args.abortSignal,
|
|
222
297
|
});
|
|
223
298
|
}
|
|
224
|
-
|
|
299
|
+
const { decodeAudioToPcm16 } = await import("./audio-decode.js");
|
|
300
|
+
const { detectSilenceGaps } = await import("./conversation/silence-detection.js");
|
|
301
|
+
const { attributeTimestamps } = await import("./conversation/attribute-timestamps.js");
|
|
302
|
+
let silenceGaps = [];
|
|
303
|
+
try {
|
|
304
|
+
const segment = await decodeAudioToPcm16(args.audio, args.mediaType);
|
|
305
|
+
const gaps = detectSilenceGaps(segment.pcm, {
|
|
306
|
+
sampleRate: segment.sampleRate,
|
|
307
|
+
minDurationMs: 150,
|
|
308
|
+
});
|
|
309
|
+
silenceGaps = gaps;
|
|
310
|
+
}
|
|
311
|
+
catch {
|
|
312
|
+
// Decoder couldn't read the audio (e.g., compressed format we can't decode locally).
|
|
313
|
+
// Tier 1 will be skipped; dispatcher falls through to Tier 2/3.
|
|
314
|
+
}
|
|
315
|
+
const result = attributeTimestamps({
|
|
316
|
+
timestamps: flatTimestamps,
|
|
317
|
+
turnTexts: args.substitutedTurnTexts,
|
|
318
|
+
silenceGaps,
|
|
319
|
+
});
|
|
320
|
+
return {
|
|
321
|
+
timestamps: result.timestamps,
|
|
322
|
+
warnings: result.warnings,
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
async function buildNativeAudio(args) {
|
|
326
|
+
let audioBytes = args.result.audio;
|
|
327
|
+
// Hume and others omit sample rate from content-type; prefer stitch mediaType.
|
|
328
|
+
let outputMediaType = args.stitchOpts?.mediaType ?? args.result.mediaType;
|
|
329
|
+
if (args.stitchOpts) {
|
|
330
|
+
const { adjustVolume } = await import("./volume-adjust.js");
|
|
331
|
+
audioBytes = await adjustVolume({
|
|
332
|
+
audio: args.result.audio,
|
|
333
|
+
mediaType: args.stitchOpts.mediaType,
|
|
334
|
+
volumeDbfs: args.volumeDbfs ?? -20,
|
|
335
|
+
});
|
|
336
|
+
outputMediaType = "audio/wav";
|
|
337
|
+
}
|
|
338
|
+
const audio = new DefaultGeneratedAudioFile({
|
|
339
|
+
data: audioBytes,
|
|
340
|
+
mediaType: outputMediaType,
|
|
341
|
+
});
|
|
342
|
+
return { audio, outputMediaType };
|
|
343
|
+
}
|
|
344
|
+
function buildSubstitutedTurns(turns, ruleMap) {
|
|
345
|
+
return turns.map((t) => {
|
|
346
|
+
if (!ruleMap) {
|
|
347
|
+
return { voice: t.voice, text: t.text, edits: [] };
|
|
348
|
+
}
|
|
349
|
+
const subbed = substitute(t.text, ruleMap);
|
|
350
|
+
return { voice: t.voice, text: subbed.text, edits: subbed.edits };
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
function inverseAlignDialogueTimestamps(timestamps, perTurn) {
|
|
354
|
+
if (!timestamps) {
|
|
355
|
+
return timestamps;
|
|
356
|
+
}
|
|
357
|
+
const buckets = new Map();
|
|
358
|
+
for (const ts of timestamps) {
|
|
359
|
+
const bucket = buckets.get(ts.turnIndex);
|
|
360
|
+
if (bucket) {
|
|
361
|
+
bucket.push(ts);
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
buckets.set(ts.turnIndex, [ts]);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
const out = [];
|
|
368
|
+
for (let i = 0; i < perTurn.length; i++) {
|
|
369
|
+
const turnTimestamps = buckets.get(i);
|
|
370
|
+
if (!turnTimestamps?.length) {
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const turn = perTurn[i];
|
|
374
|
+
if (turn.edits.length === 0) {
|
|
375
|
+
out.push(...turnTimestamps);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
out.push(...inverseAlign(turnTimestamps, turn.text, turn.edits));
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
return out;
|
|
225
382
|
}
|
|
226
383
|
//# sourceMappingURL=generate-conversation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-conversation.js","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-conversation.js","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { type AudioOutput } from "./audio-output.js";
|
|
2
|
+
import type { PronunciationsFor } from "./pronunciations/types.js";
|
|
1
3
|
import { type ResolvedModel, type Voice } from "./speech-provider.js";
|
|
2
4
|
import type { SpeechResult } from "./speech-result.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export declare function generateSpeech<V extends Voice = Voice>(options: {
|
|
6
|
-
model: string | ResolvedModel<V>;
|
|
5
|
+
export declare function generateSpeech<V extends Voice = Voice, M extends string | ResolvedModel<V> = string | ResolvedModel<V>>(options: {
|
|
6
|
+
model: M;
|
|
7
7
|
text: string;
|
|
8
8
|
voice: V;
|
|
9
9
|
apiKey?: string;
|
|
@@ -11,30 +11,9 @@ export declare function generateSpeech<V extends Voice = Voice>(options: {
|
|
|
11
11
|
maxRetries?: number;
|
|
12
12
|
abortSignal?: AbortSignal;
|
|
13
13
|
headers?: Record<string, string>;
|
|
14
|
-
/**
|
|
15
|
-
* RMS-normalize the returned audio to this dBFS level. Must be ≤ 0.
|
|
16
|
-
* When set, generateSpeech requests the provider's decodable PCM/WAV
|
|
17
|
-
* output mode (via `getStitchOptions`), normalizes the samples to the
|
|
18
|
-
* target loudness, and re-encodes the result as 16-bit mono WAV — so
|
|
19
|
-
* the response `mediaType` will be `audio/wav` regardless of the
|
|
20
|
-
* provider's native default. Throws `VolumeAdjustmentUnsupportedError`
|
|
21
|
-
* if the provider doesn't expose a decodable output mode.
|
|
22
|
-
*/
|
|
23
14
|
volumeDbfs?: number;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
* supplies alignment, otherwise omit. `"on"` forces word timestamps
|
|
28
|
-
* (falling back to STT round-trip when necessary). `"off"` suppresses
|
|
29
|
-
* them even for providers that would return them free.
|
|
30
|
-
*/
|
|
31
|
-
timestamps?: TimestampMode;
|
|
32
|
-
/**
|
|
33
|
-
* Override the STT provider used for the derived-timestamps path. Construct
|
|
34
|
-
* via a factory (e.g. `createOpenAISTT({ apiKey })("whisper-1")`). Only
|
|
35
|
-
* consulted when timestamps are requested AND the TTS provider can't supply
|
|
36
|
-
* them natively. Defaults to OpenAI Whisper read from `OPENAI_API_KEY`.
|
|
37
|
-
*/
|
|
38
|
-
timestampProvider?: ResolvedSTTModel;
|
|
15
|
+
timestamps?: boolean;
|
|
16
|
+
output?: AudioOutput;
|
|
17
|
+
pronunciations?: PronunciationsFor<M>;
|
|
39
18
|
}): Promise<SpeechResult>;
|
|
40
19
|
//# sourceMappingURL=generate-speech.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-speech.d.ts","sourceRoot":"","sources":["../src/generate-speech.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-speech.d.ts","sourceRoot":"","sources":["../src/generate-speech.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,WAAW,EAGjB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,KAAK,EAAQ,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKzE,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,wBAAsB,cAAc,CAClC,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,CAAC,SAAS,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,EAC/D,OAAO,EAAE;IACT,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,cAAc,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CACvC,GAAG,OAAO,CAAC,YAAY,CAAC,CAqJxB"}
|