@speech-sdk/core 0.8.3 → 0.9.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/dist/apply-speed.d.ts +19 -0
- package/dist/apply-speed.d.ts.map +1 -0
- package/dist/apply-speed.js +49 -0
- package/dist/apply-speed.js.map +1 -0
- package/dist/conversation/stitch.d.ts +1 -0
- package/dist/conversation/stitch.d.ts.map +1 -1
- package/dist/conversation/stitch.js +2 -1
- package/dist/conversation/stitch.js.map +1 -1
- package/dist/conversation/types.d.ts +2 -0
- package/dist/conversation/types.d.ts.map +1 -1
- package/dist/generate-conversation.d.ts.map +1 -1
- package/dist/generate-conversation.js +75 -21
- package/dist/generate-conversation.js.map +1 -1
- package/dist/generate-speech.d.ts.map +1 -1
- package/dist/generate-speech.js +62 -16
- package/dist/generate-speech.js.map +1 -1
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/time-stretch/bytes.d.ts +3 -0
- package/dist/plugins/time-stretch/bytes.d.ts.map +1 -0
- package/dist/plugins/time-stretch/bytes.js +22 -0
- package/dist/plugins/time-stretch/bytes.js.map +1 -0
- package/dist/plugins/time-stretch/fallback.d.ts +2 -0
- package/dist/plugins/time-stretch/fallback.d.ts.map +1 -0
- package/dist/plugins/time-stretch/fallback.js +27 -0
- package/dist/plugins/time-stretch/fallback.js.map +1 -0
- package/dist/plugins/time-stretch/index.d.ts +10 -0
- package/dist/plugins/time-stretch/index.d.ts.map +1 -0
- package/dist/plugins/time-stretch/index.js +22 -0
- package/dist/plugins/time-stretch/index.js.map +1 -0
- package/dist/plugins/time-stretch/int16.d.ts +5 -0
- package/dist/plugins/time-stretch/int16.d.ts.map +1 -0
- package/dist/plugins/time-stretch/int16.js +33 -0
- package/dist/plugins/time-stretch/int16.js.map +1 -0
- package/dist/plugins/time-stretch/validate.d.ts +9 -0
- package/dist/plugins/time-stretch/validate.d.ts.map +1 -0
- package/dist/plugins/time-stretch/validate.js +93 -0
- package/dist/plugins/time-stretch/validate.js.map +1 -0
- package/dist/plugins/time-stretch/wsola.d.ts +3 -0
- package/dist/plugins/time-stretch/wsola.d.ts.map +1 -0
- package/dist/plugins/time-stretch/wsola.js +154 -0
- package/dist/plugins/time-stretch/wsola.js.map +1 -0
- package/dist/providers/gateway/index.d.ts +3 -0
- package/dist/providers/gateway/index.d.ts.map +1 -1
- package/dist/providers/gateway/index.js +7 -0
- package/dist/providers/gateway/index.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type AudioOutput } from "./audio-output.js";
|
|
2
|
+
export declare const SPEED_MIN = 0.75;
|
|
3
|
+
export declare const SPEED_MAX = 1.5;
|
|
4
|
+
export declare function validateSpeed(speed: number | undefined): void;
|
|
5
|
+
export declare function isSpeedActive(speed: number | undefined): speed is number;
|
|
6
|
+
export declare function applySpeedToAudio(args: {
|
|
7
|
+
readonly audio: Uint8Array;
|
|
8
|
+
readonly mediaType: string;
|
|
9
|
+
readonly speed: number;
|
|
10
|
+
readonly output: AudioOutput | undefined;
|
|
11
|
+
}): Promise<{
|
|
12
|
+
readonly audio: Uint8Array;
|
|
13
|
+
readonly mediaType: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function scaleTimestamps<T extends {
|
|
16
|
+
start: number;
|
|
17
|
+
end: number;
|
|
18
|
+
}>(timestamps: readonly T[] | undefined, speed: number): T[] | undefined;
|
|
19
|
+
//# sourceMappingURL=apply-speed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-speed.d.ts","sourceRoot":"","sources":["../src/apply-speed.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAI3B,eAAO,MAAM,SAAS,OAAO,CAAC;AAC9B,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAY7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAExE;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CAC1C,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBtE;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EACtE,UAAU,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,EACpC,KAAK,EAAE,MAAM,GACZ,CAAC,EAAE,GAAG,SAAS,CASjB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { decodeAudioToPcm16 } from "./audio-decode.js";
|
|
2
|
+
import { applyOptionalOutputConversion, } from "./audio-output.js";
|
|
3
|
+
import { wrapPcm16Mono } from "./audio-utils.js";
|
|
4
|
+
import { timeStretch } from "./plugins/time-stretch/index.js";
|
|
5
|
+
export const SPEED_MIN = 0.75;
|
|
6
|
+
export const SPEED_MAX = 1.5;
|
|
7
|
+
export function validateSpeed(speed) {
|
|
8
|
+
if (speed === undefined) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (typeof speed !== "number" || !Number.isFinite(speed)) {
|
|
12
|
+
throw new TypeError("speed must be a finite number.");
|
|
13
|
+
}
|
|
14
|
+
if (speed < SPEED_MIN || speed > SPEED_MAX) {
|
|
15
|
+
throw new RangeError(`speed must be between ${SPEED_MIN} and ${SPEED_MAX}.`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function isSpeedActive(speed) {
|
|
19
|
+
return speed !== undefined && speed !== 1;
|
|
20
|
+
}
|
|
21
|
+
export async function applySpeedToAudio(args) {
|
|
22
|
+
const decoded = await decodeAudioToPcm16(args.audio, args.mediaType);
|
|
23
|
+
const stretched = timeStretch(decoded.pcm, {
|
|
24
|
+
speed: args.speed,
|
|
25
|
+
sampleRate: decoded.sampleRate,
|
|
26
|
+
});
|
|
27
|
+
const stretchedBytes = new Uint8Array(stretched.buffer, stretched.byteOffset, stretched.byteLength);
|
|
28
|
+
const wav = await wrapPcm16Mono(stretchedBytes, decoded.sampleRate);
|
|
29
|
+
// Default to mp3 when no output is specified — matches the format most providers
|
|
30
|
+
// return natively (so a caller that only sets speed gets the same container they'd
|
|
31
|
+
// get without speed, instead of a silent switch to wav).
|
|
32
|
+
const targetOutput = args.output ?? { format: "mp3" };
|
|
33
|
+
return await applyOptionalOutputConversion({
|
|
34
|
+
audio: wav,
|
|
35
|
+
mediaType: "audio/wav",
|
|
36
|
+
output: targetOutput,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
export function scaleTimestamps(timestamps, speed) {
|
|
40
|
+
if (!timestamps) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
return timestamps.map((t) => ({
|
|
44
|
+
...t,
|
|
45
|
+
start: t.start / speed,
|
|
46
|
+
end: t.end / speed,
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=apply-speed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-speed.js","sourceRoot":"","sources":["../src/apply-speed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAEL,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAE9D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC;AAC9B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC;AAE7B,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzD,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,GAAG,SAAS,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,UAAU,CAClB,yBAAyB,SAAS,QAAQ,SAAS,GAAG,CACvD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAyB;IACrD,OAAO,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAKvC;IACC,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE;QACzC,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,IAAI,UAAU,CACnC,SAAS,CAAC,MAAM,EAChB,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,UAAU,CACrB,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEpE,iFAAiF;IACjF,mFAAmF;IACnF,yDAAyD;IACzD,MAAM,YAAY,GAAgB,IAAI,CAAC,MAAM,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnE,OAAO,MAAM,6BAA6B,CAAC;QACzC,KAAK,EAAE,GAAG;QACV,SAAS,EAAE,WAAW;QACtB,MAAM,EAAE,YAAY;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAAoC,EACpC,KAAa;IAEb,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,GAAG,CAAC;QACJ,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK;QACtB,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG,KAAK;KACnB,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -7,6 +7,7 @@ import type { ConversationTurn } from "./types.js";
|
|
|
7
7
|
interface StitchInput<V extends Voice = Voice> {
|
|
8
8
|
readonly abortSignal?: AbortSignal;
|
|
9
9
|
readonly apiKey?: string;
|
|
10
|
+
readonly deferOutputConversion?: boolean;
|
|
10
11
|
readonly gapMs: number;
|
|
11
12
|
readonly headers?: Record<string, string>;
|
|
12
13
|
readonly maxConcurrency: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stitch.d.ts","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAK5B,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;
|
|
1
|
+
{"version":3,"file":"stitch.d.ts","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,oBAAoB,CAAC;AAK5B,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;IAGzB,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IACzC,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;AAKD,wBAAsB,SAAS,CAAC,CAAC,SAAS,KAAK,EAC7C,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,YAAY,CAAC,CAwJvB"}
|
|
@@ -33,6 +33,7 @@ export async function runStitch(input) {
|
|
|
33
33
|
pronunciations: input.pronunciations,
|
|
34
34
|
maxInputChars: input.maxInputChars,
|
|
35
35
|
maxConcurrency: input.maxConcurrency,
|
|
36
|
+
speed: turn.speed,
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
catch (err) {
|
|
@@ -56,7 +57,7 @@ export async function runStitch(input) {
|
|
|
56
57
|
const { audio: finalAudio, mediaType } = await applyOptionalOutputConversion({
|
|
57
58
|
audio,
|
|
58
59
|
mediaType: "audio/wav",
|
|
59
|
-
output: input.output,
|
|
60
|
+
output: input.deferOutputConversion ? undefined : input.output,
|
|
60
61
|
});
|
|
61
62
|
const totalSamples = perTurn.reduce((n, p) => n +
|
|
62
63
|
Math.round((p.segment.pcm.length / p.segment.sampleRate) * TARGET_SAMPLE_RATE), 0) +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAEL,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAKrC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"stitch.js","sourceRoot":"","sources":["../../src/conversation/stitch.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { ResolvedModel, Voice } from "../speech-provider.js";
|
|
|
4
4
|
export interface ConversationTurn<V extends Voice = Voice> {
|
|
5
5
|
readonly model?: string | ResolvedModel<V>;
|
|
6
6
|
readonly providerOptions?: Record<string, unknown>;
|
|
7
|
+
readonly speed?: number;
|
|
7
8
|
readonly text: string;
|
|
8
9
|
readonly voice: V;
|
|
9
10
|
}
|
|
@@ -20,6 +21,7 @@ export interface GenerateConversationOptions<V extends Voice = Voice, M extends
|
|
|
20
21
|
readonly output?: AudioOutput;
|
|
21
22
|
readonly pronunciations?: PronunciationsFor<M>;
|
|
22
23
|
readonly providerOptions?: Record<string, unknown>;
|
|
24
|
+
readonly speed?: number;
|
|
23
25
|
readonly timestamps?: boolean;
|
|
24
26
|
readonly turns: readonly ConversationTurn<V>[];
|
|
25
27
|
readonly volumeDbfs?: number;
|
|
@@ -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,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;
|
|
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;IAEnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,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;IAEnD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,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":"generate-conversation.d.ts","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generate-conversation.d.ts","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"AAeA,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;AAK5B,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,CA2IzE"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pRetry from "p-retry";
|
|
2
|
+
import { applySpeedToAudio, isSpeedActive, scaleTimestamps, validateSpeed, } from "./apply-speed.js";
|
|
2
3
|
import { computeAudioDuration } from "./audio-duration.js";
|
|
3
4
|
import { applyOptionalOutputConversion, validateOutput, } from "./audio-output.js";
|
|
4
5
|
import { resolveMaxConcurrency } from "./concurrency.js";
|
|
@@ -25,6 +26,11 @@ const DEFAULT_MAX_RETRIES = 2;
|
|
|
25
26
|
export async function generateConversation(options) {
|
|
26
27
|
validateConversationInput(options);
|
|
27
28
|
validateOutput(options.output);
|
|
29
|
+
validateSpeed(options.speed);
|
|
30
|
+
for (const turn of options.turns) {
|
|
31
|
+
validateSpeed(turn.speed);
|
|
32
|
+
}
|
|
33
|
+
const hasPerTurnSpeed = options.turns.some((t) => isSpeedActive(t.speed));
|
|
28
34
|
// Cache string-model resolutions so turns share one provider instance — dispatch compares by reference.
|
|
29
35
|
const stringResolutionCache = new Map();
|
|
30
36
|
const resolveOnce = (model) => {
|
|
@@ -54,11 +60,12 @@ export async function generateConversation(options) {
|
|
|
54
60
|
}
|
|
55
61
|
return resolveOnce(model);
|
|
56
62
|
});
|
|
57
|
-
const forceStitch =
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
const forceStitch = hasPerTurnSpeed ||
|
|
64
|
+
needsConversationStitchForMaxInputChars({
|
|
65
|
+
resolvedPerTurn,
|
|
66
|
+
turns: options.turns,
|
|
67
|
+
userMaxInputChars: options.maxInputChars,
|
|
68
|
+
});
|
|
62
69
|
const path = chooseConversationPath({
|
|
63
70
|
forceStitch,
|
|
64
71
|
resolvedPerTurn,
|
|
@@ -68,6 +75,7 @@ export async function generateConversation(options) {
|
|
|
68
75
|
validatePronunciationsInput(options.pronunciations, isGateway);
|
|
69
76
|
assertGatewayForModerationRulesetId(options.moderationRulesetId, isGateway);
|
|
70
77
|
if (path.kind === "gateway") {
|
|
78
|
+
// Gateway handles top-level + per-turn speed server-side; no local stretch.
|
|
71
79
|
return await runGateway({
|
|
72
80
|
options,
|
|
73
81
|
resolvedPerTurn: path.resolvedPerTurn,
|
|
@@ -80,10 +88,14 @@ export async function generateConversation(options) {
|
|
|
80
88
|
if (turnWithOpts !== -1) {
|
|
81
89
|
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.`);
|
|
82
90
|
}
|
|
83
|
-
return await
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
91
|
+
return await applySpeedToConversationResult({
|
|
92
|
+
result: await runNative({
|
|
93
|
+
options,
|
|
94
|
+
resolved: path.resolved,
|
|
95
|
+
maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
|
|
96
|
+
}),
|
|
97
|
+
speed: options.speed,
|
|
98
|
+
output: options.output,
|
|
87
99
|
});
|
|
88
100
|
}
|
|
89
101
|
// Lazy-load so native-only callers don't bundle pcm-concat / mediabunny.
|
|
@@ -104,6 +116,8 @@ export async function generateConversation(options) {
|
|
|
104
116
|
headers: options.headers,
|
|
105
117
|
timestamps: options.timestamps ?? false,
|
|
106
118
|
pronunciations: options.pronunciations,
|
|
119
|
+
// Defer output conversion to applySpeedToConversationResult to avoid encoding twice.
|
|
120
|
+
deferOutputConversion: isSpeedActive(options.speed),
|
|
107
121
|
});
|
|
108
122
|
if (stitched.audio.length === 0) {
|
|
109
123
|
throw new NoSpeechGeneratedError();
|
|
@@ -116,16 +130,20 @@ export async function generateConversation(options) {
|
|
|
116
130
|
}),
|
|
117
131
|
perTurn: stitched.metadataPerTurn,
|
|
118
132
|
};
|
|
119
|
-
return {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
133
|
+
return await applySpeedToConversationResult({
|
|
134
|
+
result: {
|
|
135
|
+
audio: new DefaultGeneratedAudioFile({
|
|
136
|
+
data: stitched.audio,
|
|
137
|
+
mediaType: stitched.mediaType,
|
|
138
|
+
}),
|
|
139
|
+
metadata,
|
|
140
|
+
providerMetadata: { turns: stitched.providerMetadataPerTurn },
|
|
141
|
+
warnings: stitched.warnings.length > 0 ? [...stitched.warnings] : undefined,
|
|
142
|
+
timestamps: stitched.timestamps,
|
|
143
|
+
},
|
|
144
|
+
speed: options.speed,
|
|
145
|
+
output: options.output,
|
|
146
|
+
});
|
|
129
147
|
}
|
|
130
148
|
function needsConversationStitchForMaxInputChars(args) {
|
|
131
149
|
let forceStitch = false;
|
|
@@ -181,6 +199,7 @@ async function runGateway(args) {
|
|
|
181
199
|
voice: t.voice,
|
|
182
200
|
text: t.text,
|
|
183
201
|
...(t.providerOptions && { providerOptions: t.providerOptions }),
|
|
202
|
+
...(t.speed != null && { speed: t.speed }),
|
|
184
203
|
};
|
|
185
204
|
});
|
|
186
205
|
const result = await pRetry(() => provider.generateConversation({
|
|
@@ -189,6 +208,7 @@ async function runGateway(args) {
|
|
|
189
208
|
gapMs: options.gapMs ?? DEFAULT_GAP_MS,
|
|
190
209
|
volumeDbfs: options.volumeDbfs,
|
|
191
210
|
providerOptions: options.providerOptions,
|
|
211
|
+
speed: options.speed,
|
|
192
212
|
abortSignal: options.abortSignal,
|
|
193
213
|
headers: options.headers,
|
|
194
214
|
includeTimestamps,
|
|
@@ -292,12 +312,15 @@ async function runNative(args) {
|
|
|
292
312
|
const timestamps = ruleMap
|
|
293
313
|
? inverseAlignDialogueTimestamps(rawTimestamps, substitutedTurns)
|
|
294
314
|
: rawTimestamps;
|
|
315
|
+
// Defer output conversion to applySpeedToConversationResult when top-level speed
|
|
316
|
+
// is active — otherwise we'd encode here and re-encode in the stretch step.
|
|
317
|
+
const deferOutput = isSpeedActive(options.speed);
|
|
295
318
|
const converted = await applyOptionalOutputConversion({
|
|
296
319
|
audio: audio.uint8Array,
|
|
297
320
|
mediaType: outputMediaType,
|
|
298
|
-
output: options.output,
|
|
321
|
+
output: deferOutput ? undefined : options.output,
|
|
299
322
|
});
|
|
300
|
-
const finalAudio = options.output
|
|
323
|
+
const finalAudio = options.output && !deferOutput
|
|
301
324
|
? new DefaultGeneratedAudioFile({
|
|
302
325
|
data: converted.audio,
|
|
303
326
|
mediaType: converted.mediaType,
|
|
@@ -393,6 +416,37 @@ function buildSubstitutedTurns(turns, ruleMap) {
|
|
|
393
416
|
return { voice: t.voice, text: subbed.text, edits: subbed.edits };
|
|
394
417
|
});
|
|
395
418
|
}
|
|
419
|
+
async function applySpeedToConversationResult(args) {
|
|
420
|
+
const { result, speed, output } = args;
|
|
421
|
+
if (!isSpeedActive(speed)) {
|
|
422
|
+
return result;
|
|
423
|
+
}
|
|
424
|
+
const stretched = await applySpeedToAudio({
|
|
425
|
+
audio: result.audio.uint8Array,
|
|
426
|
+
mediaType: result.audio.mediaType,
|
|
427
|
+
speed,
|
|
428
|
+
output,
|
|
429
|
+
});
|
|
430
|
+
const newAudio = new DefaultGeneratedAudioFile({
|
|
431
|
+
data: stretched.audio,
|
|
432
|
+
mediaType: stretched.mediaType,
|
|
433
|
+
});
|
|
434
|
+
const computedDuration = await computeAudioDuration(newAudio.uint8Array, stretched.mediaType);
|
|
435
|
+
const fallbackDurationMs = result.metadata.audioDurationMs == null
|
|
436
|
+
? undefined
|
|
437
|
+
: Math.round(result.metadata.audioDurationMs / speed);
|
|
438
|
+
const audioDurationMs = computedDuration ?? fallbackDurationMs;
|
|
439
|
+
return {
|
|
440
|
+
audio: newAudio,
|
|
441
|
+
metadata: {
|
|
442
|
+
...result.metadata,
|
|
443
|
+
...(audioDurationMs != null && { audioDurationMs }),
|
|
444
|
+
},
|
|
445
|
+
providerMetadata: result.providerMetadata,
|
|
446
|
+
warnings: result.warnings,
|
|
447
|
+
timestamps: scaleTimestamps(result.timestamps, speed),
|
|
448
|
+
};
|
|
449
|
+
}
|
|
396
450
|
function inverseAlignDialogueTimestamps(timestamps, perTurn) {
|
|
397
451
|
if (!timestamps) {
|
|
398
452
|
return timestamps;
|
|
@@ -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 +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":"AAkCA,OAAO,EAIL,KAAK,aAAa,EAGlB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAMxD,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,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAgL7D"}
|
package/dist/generate-speech.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pRetry from "p-retry";
|
|
2
|
+
import { applySpeedToAudio, isSpeedActive, scaleTimestamps, validateSpeed, } from "./apply-speed.js";
|
|
2
3
|
import { computeAudioDuration } from "./audio-duration.js";
|
|
3
4
|
import { applyOptionalOutputConversion, validateOutput, } from "./audio-output.js";
|
|
4
5
|
import { detectAudioTags, stripAudioTags } from "./audio-tags.js";
|
|
@@ -18,9 +19,10 @@ import { DefaultGeneratedAudioFile } from "./speech-result.js";
|
|
|
18
19
|
import { resolveMaxInputChars, splitTextByMaxChars } from "./text-chunker.js";
|
|
19
20
|
const CHUNK_STITCH_SAMPLE_RATE = 24_000;
|
|
20
21
|
export async function generateSpeech(options) {
|
|
21
|
-
const { model, voice, abortSignal, headers, volumeDbfs, timestamps = false, moderationRulesetId, } = options;
|
|
22
|
+
const { model, voice, abortSignal, headers, volumeDbfs, timestamps = false, moderationRulesetId, speed, } = options;
|
|
22
23
|
const maxRetries = options.maxRetries ?? 2;
|
|
23
24
|
validateOutput(options.output);
|
|
25
|
+
validateSpeed(speed);
|
|
24
26
|
const resolved = resolveModel(model, { apiKey: options.apiKey });
|
|
25
27
|
const modelIdentifier = `${resolved.provider.id}/${resolved.modelId}`;
|
|
26
28
|
const isGateway = isSpeechGatewayModel(resolved);
|
|
@@ -56,6 +58,8 @@ export async function generateSpeech(options) {
|
|
|
56
58
|
callerOptions: options.providerOptions,
|
|
57
59
|
maxInputChars,
|
|
58
60
|
shouldChunk,
|
|
61
|
+
// Time-stretching needs decodable PCM/WAV input — request the stitch wire format from the provider.
|
|
62
|
+
needsDecodableInput: !isGateway && isSpeedActive(speed),
|
|
59
63
|
});
|
|
60
64
|
const hasNativeTimestamps = modelDeclaresNativeTimestamps(resolved);
|
|
61
65
|
const shouldRequestNative = timestamps && (hasNativeTimestamps || isGateway);
|
|
@@ -98,37 +102,42 @@ export async function generateSpeech(options) {
|
|
|
98
102
|
output: options.output,
|
|
99
103
|
pronunciations: options.pronunciations,
|
|
100
104
|
moderationRulesetId,
|
|
105
|
+
speed,
|
|
101
106
|
});
|
|
102
107
|
const latencyMs = Math.round(performance.now() - startTime);
|
|
103
108
|
const audioData = result.audio;
|
|
104
109
|
if (audioData.length === 0) {
|
|
105
110
|
throw new NoSpeechGeneratedError();
|
|
106
111
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
112
|
+
// Gateway already applied speed server-side; only apply locally for direct paths.
|
|
113
|
+
const localSpeed = isGateway ? undefined : speed;
|
|
114
|
+
const stretched = await finalizeSpeechAudio({
|
|
115
|
+
audioData,
|
|
116
|
+
resultMediaType: result.mediaType,
|
|
117
|
+
isGateway,
|
|
118
|
+
volumeDbfs,
|
|
119
|
+
output: options.output,
|
|
120
|
+
speed: localSpeed,
|
|
121
|
+
});
|
|
115
122
|
const audio = new DefaultGeneratedAudioFile({
|
|
116
|
-
data:
|
|
117
|
-
mediaType:
|
|
123
|
+
data: stretched.audio,
|
|
124
|
+
mediaType: stretched.mediaType,
|
|
118
125
|
});
|
|
119
126
|
const [computedDuration, resolvedTimestamps] = await Promise.all([
|
|
120
|
-
computeAudioDuration(audio.uint8Array,
|
|
127
|
+
computeAudioDuration(audio.uint8Array, stretched.mediaType),
|
|
121
128
|
resolveTimestamps({
|
|
122
129
|
timestamps,
|
|
123
130
|
modelIdentifier,
|
|
124
131
|
resolved,
|
|
125
|
-
|
|
132
|
+
// Native timestamps reference pre-stretch timing on direct paths; gateway already returns scaled timestamps.
|
|
133
|
+
resultTimestamps: maybeScale(result.timestamps, localSpeed),
|
|
126
134
|
audio: audio.uint8Array,
|
|
127
|
-
mediaType:
|
|
135
|
+
mediaType: stretched.mediaType,
|
|
128
136
|
abortSignal,
|
|
129
137
|
}),
|
|
130
138
|
]);
|
|
131
|
-
const audioDurationMs = computedDuration ??
|
|
139
|
+
const audioDurationMs = computedDuration ??
|
|
140
|
+
maybeScaleDurationMs(result.audioDurationMs, localSpeed);
|
|
132
141
|
const finalTimestamps = resolvedTimestamps && pronunciationEdits.length > 0
|
|
133
142
|
? inverseAlign(resolvedTimestamps, textToSend, pronunciationEdits)
|
|
134
143
|
: resolvedTimestamps;
|
|
@@ -194,6 +203,7 @@ async function generateProviderSpeech(args) {
|
|
|
194
203
|
output: args.output,
|
|
195
204
|
pronunciations: args.pronunciations,
|
|
196
205
|
moderationRulesetId: args.moderationRulesetId,
|
|
206
|
+
speed: args.speed,
|
|
197
207
|
})
|
|
198
208
|
: args.resolved.provider.generate({
|
|
199
209
|
modelId: args.resolved.modelId,
|
|
@@ -305,7 +315,7 @@ function resolveProviderOptionsForLocalDecoding(args) {
|
|
|
305
315
|
if (args.isGateway) {
|
|
306
316
|
return { providerOptions: args.callerOptions, stitchOptions: undefined };
|
|
307
317
|
}
|
|
308
|
-
const needsStitchWireFormat = args.volumeDbfs != null || args.shouldChunk;
|
|
318
|
+
const needsStitchWireFormat = args.volumeDbfs != null || args.shouldChunk || args.needsDecodableInput;
|
|
309
319
|
if (!needsStitchWireFormat && args.output != null) {
|
|
310
320
|
const native = args.resolved.provider.resolveOutputFormat?.(args.resolved.modelId, args.output);
|
|
311
321
|
if (native) {
|
|
@@ -388,6 +398,42 @@ function preprocessText(resolved, rawText, modelIdentifier) {
|
|
|
388
398
|
}
|
|
389
399
|
return { text: rawText, warnings: [] };
|
|
390
400
|
}
|
|
401
|
+
function maybeScale(timestamps, speed) {
|
|
402
|
+
return isSpeedActive(speed) ? scaleTimestamps(timestamps, speed) : timestamps;
|
|
403
|
+
}
|
|
404
|
+
function maybeScaleDurationMs(durationMs, speed) {
|
|
405
|
+
if (durationMs == null || !isSpeedActive(speed)) {
|
|
406
|
+
return durationMs;
|
|
407
|
+
}
|
|
408
|
+
return Math.round(durationMs / speed);
|
|
409
|
+
}
|
|
410
|
+
async function finalizeSpeechAudio(args) {
|
|
411
|
+
// When speed is active, defer output conversion to applySpeedToAudio — otherwise
|
|
412
|
+
// we'd encode to `output` here and then decode/re-encode in the stretch step,
|
|
413
|
+
// a wasteful round-trip that loses quality on lossy formats.
|
|
414
|
+
const preStretchOutput = isSpeedActive(args.speed) ? undefined : args.output;
|
|
415
|
+
const postProcessed = args.isGateway
|
|
416
|
+
? { bytes: args.audioData, mediaType: args.resultMediaType }
|
|
417
|
+
: await applyLocalAudioPostProcessing({
|
|
418
|
+
audio: args.audioData,
|
|
419
|
+
mediaType: args.resultMediaType,
|
|
420
|
+
volumeDbfs: args.volumeDbfs,
|
|
421
|
+
output: preStretchOutput,
|
|
422
|
+
});
|
|
423
|
+
const postProcessedBytes = new DefaultGeneratedAudioFile({
|
|
424
|
+
data: postProcessed.bytes,
|
|
425
|
+
mediaType: postProcessed.mediaType,
|
|
426
|
+
}).uint8Array;
|
|
427
|
+
if (!isSpeedActive(args.speed)) {
|
|
428
|
+
return { audio: postProcessedBytes, mediaType: postProcessed.mediaType };
|
|
429
|
+
}
|
|
430
|
+
return await applySpeedToAudio({
|
|
431
|
+
audio: postProcessedBytes,
|
|
432
|
+
mediaType: postProcessed.mediaType,
|
|
433
|
+
speed: args.speed,
|
|
434
|
+
output: args.output,
|
|
435
|
+
});
|
|
436
|
+
}
|
|
391
437
|
function logTimestampDecision(args) {
|
|
392
438
|
const { modelIdentifier, enabled, willRequestNative } = args;
|
|
393
439
|
if (!enabled) {
|