@speech-sdk/core 0.7.0 → 0.8.0-alpha
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 +165 -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-duration.d.ts +0 -5
- package/dist/audio-duration.d.ts.map +1 -1
- package/dist/audio-duration.js +3 -10
- package/dist/audio-duration.js.map +1 -1
- package/dist/audio-utils.d.ts +0 -10
- package/dist/audio-utils.d.ts.map +1 -1
- package/dist/audio-utils.js +2 -14
- 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 -23
- package/dist/conversation/pcm-concat.d.ts.map +1 -1
- package/dist/conversation/pcm-concat.js +5 -43
- 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 +3 -6
- package/dist/conversation/stitch.d.ts.map +1 -1
- package/dist/conversation/stitch.js +40 -36
- package/dist/conversation/stitch.js.map +1 -1
- package/dist/conversation/types.d.ts +1 -35
- 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/errors.d.ts +5 -12
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +12 -14
- package/dist/errors.js.map +1 -1
- package/dist/generate-conversation.d.ts +4 -3
- package/dist/generate-conversation.d.ts.map +1 -1
- package/dist/generate-conversation.js +161 -67
- package/dist/generate-conversation.js.map +1 -1
- package/dist/generate-speech.d.ts +1 -26
- package/dist/generate-speech.d.ts.map +1 -1
- package/dist/generate-speech.js +85 -64
- package/dist/generate-speech.js.map +1 -1
- package/dist/index.d.ts +4 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -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/provider-utils.d.ts +3 -9
- package/dist/provider-utils.d.ts.map +1 -1
- package/dist/provider-utils.js +34 -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 +7 -19
- package/dist/providers/cartesia/index.d.ts.map +1 -1
- package/dist/providers/cartesia/index.js +68 -80
- package/dist/providers/cartesia/index.js.map +1 -1
- package/dist/providers/deepgram/index.d.ts +7 -8
- package/dist/providers/deepgram/index.d.ts.map +1 -1
- package/dist/providers/deepgram/index.js +17 -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 +7 -38
- package/dist/providers/elevenlabs/index.d.ts.map +1 -1
- package/dist/providers/elevenlabs/index.js +161 -169
- package/dist/providers/elevenlabs/index.js.map +1 -1
- package/dist/providers/fal/index.d.ts +7 -18
- package/dist/providers/fal/index.d.ts.map +1 -1
- package/dist/providers/fal/index.js +37 -31
- package/dist/providers/fal/index.js.map +1 -1
- package/dist/providers/fish-audio/index.d.ts +7 -8
- package/dist/providers/fish-audio/index.d.ts.map +1 -1
- package/dist/providers/fish-audio/index.js +23 -19
- package/dist/providers/fish-audio/index.js.map +1 -1
- package/dist/providers/gateway/index.d.ts +68 -0
- package/dist/providers/gateway/index.d.ts.map +1 -0
- package/dist/providers/gateway/index.js +236 -0
- package/dist/providers/gateway/index.js.map +1 -0
- package/dist/providers/google/index.d.ts +7 -20
- package/dist/providers/google/index.d.ts.map +1 -1
- package/dist/providers/google/index.js +161 -151
- 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 +7 -16
- package/dist/providers/hume/index.d.ts.map +1 -1
- package/dist/providers/hume/index.js +55 -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 +7 -20
- package/dist/providers/inworld/index.d.ts.map +1 -1
- package/dist/providers/inworld/index.js +47 -39
- package/dist/providers/inworld/index.js.map +1 -1
- package/dist/providers/mistral/index.d.ts +7 -8
- package/dist/providers/mistral/index.d.ts.map +1 -1
- package/dist/providers/mistral/index.js +39 -38
- 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 +7 -16
- package/dist/providers/murf/index.d.ts.map +1 -1
- package/dist/providers/murf/index.js +65 -57
- package/dist/providers/murf/index.js.map +1 -1
- package/dist/providers/openai/index.d.ts +36 -29
- package/dist/providers/openai/index.d.ts.map +1 -1
- package/dist/providers/openai/index.js +270 -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 +7 -11
- package/dist/providers/resemble/index.d.ts.map +1 -1
- package/dist/providers/resemble/index.js +54 -48
- package/dist/providers/resemble/index.js.map +1 -1
- package/dist/providers/xai/index.d.ts +7 -9
- package/dist/providers/xai/index.d.ts.map +1 -1
- package/dist/providers/xai/index.js +37 -40
- package/dist/providers/xai/index.js.map +1 -1
- package/dist/providers.d.ts +29 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +15 -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/speech-provider.d.ts +13 -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 +4 -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.map +1 -1
- package/dist/stream-speech.js +2 -3
- 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 +25 -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 +0 -6
- package/dist/volume-adjust.js.map +1 -1
- package/package.json +11 -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,3 +1,4 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { handleErrorResponse, resolveApiKey, SDK_USER_AGENT, } from "../../provider-utils.js";
|
|
2
3
|
import { parseSseBase64Stream } from "../../sse-stream.js";
|
|
3
4
|
function safeParseJson(input) {
|
|
@@ -8,27 +9,31 @@ function safeParseJson(input) {
|
|
|
8
9
|
return null;
|
|
9
10
|
}
|
|
10
11
|
}
|
|
12
|
+
const speechResponseSchema = z.object({
|
|
13
|
+
audio_data: z.string(),
|
|
14
|
+
usage: z.object({ audio_duration_seconds: z.number().optional() }).optional(),
|
|
15
|
+
});
|
|
16
|
+
const audioDeltaEventSchema = z.object({
|
|
17
|
+
type: z.literal("speech.audio.delta"),
|
|
18
|
+
audio_data: z.string(),
|
|
19
|
+
});
|
|
20
|
+
const audioDoneEventSchema = z.object({
|
|
21
|
+
type: z.literal("speech.audio.done"),
|
|
22
|
+
usage: z.record(z.string(), z.unknown()),
|
|
23
|
+
});
|
|
24
|
+
export const MISTRAL_PROVIDER_ID = "mistral";
|
|
25
|
+
export const MISTRAL_MODELS = [
|
|
26
|
+
{
|
|
27
|
+
id: "voxtral-mini-tts-2603",
|
|
28
|
+
releaseDate: "2026-03-23",
|
|
29
|
+
languages: ["en", "fr", "de", "es", "nl", "pt", "it", "hi", "ar"],
|
|
30
|
+
features: ["streaming", "open-source", "inline-voice-cloning"],
|
|
31
|
+
},
|
|
32
|
+
];
|
|
11
33
|
export class MistralSpeechProvider {
|
|
12
|
-
id =
|
|
34
|
+
id = MISTRAL_PROVIDER_ID;
|
|
13
35
|
defaultModel = "voxtral-mini-tts-2603";
|
|
14
|
-
models =
|
|
15
|
-
{
|
|
16
|
-
id: "voxtral-mini-tts-2603",
|
|
17
|
-
releaseDate: "2026-03-23",
|
|
18
|
-
languages: [
|
|
19
|
-
"en",
|
|
20
|
-
"fr",
|
|
21
|
-
"de",
|
|
22
|
-
"es",
|
|
23
|
-
"nl",
|
|
24
|
-
"pt",
|
|
25
|
-
"it",
|
|
26
|
-
"hi",
|
|
27
|
-
"ar",
|
|
28
|
-
],
|
|
29
|
-
features: ["streaming", "open-source", "inline-voice-cloning"],
|
|
30
|
-
},
|
|
31
|
-
];
|
|
36
|
+
models = MISTRAL_MODELS;
|
|
32
37
|
apiKey;
|
|
33
38
|
baseURL;
|
|
34
39
|
fetchFn;
|
|
@@ -74,8 +79,8 @@ export class MistralSpeechProvider {
|
|
|
74
79
|
body: JSON.stringify(body),
|
|
75
80
|
signal: options.abortSignal,
|
|
76
81
|
});
|
|
77
|
-
await handleErrorResponse(response
|
|
78
|
-
const json = (await response.json());
|
|
82
|
+
await handleErrorResponse(response);
|
|
83
|
+
const json = speechResponseSchema.parse(await response.json());
|
|
79
84
|
const audioDurationMs = json.usage?.audio_duration_seconds == null
|
|
80
85
|
? undefined
|
|
81
86
|
: Math.round(json.usage.audio_duration_seconds * 1000);
|
|
@@ -124,25 +129,18 @@ export class MistralSpeechProvider {
|
|
|
124
129
|
body: JSON.stringify(body),
|
|
125
130
|
signal: options.abortSignal,
|
|
126
131
|
});
|
|
127
|
-
await handleErrorResponse(response
|
|
132
|
+
await handleErrorResponse(response);
|
|
128
133
|
if (!response.body) {
|
|
129
134
|
throw new Error(`mistral/${options.modelId}: response has no body`);
|
|
130
135
|
}
|
|
131
136
|
const { stream } = parseSseBase64Stream(response.body, {
|
|
132
137
|
extractBase64(eventData) {
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
typeof json.audio_data === "string") {
|
|
136
|
-
return json.audio_data;
|
|
137
|
-
}
|
|
138
|
-
return null;
|
|
138
|
+
const result = audioDeltaEventSchema.safeParse(safeParseJson(eventData));
|
|
139
|
+
return result.success ? result.data.audio_data : null;
|
|
139
140
|
},
|
|
140
141
|
extractMetadata(eventData) {
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
return { usage: json.usage };
|
|
144
|
-
}
|
|
145
|
-
return null;
|
|
142
|
+
const result = audioDoneEventSchema.safeParse(safeParseJson(eventData));
|
|
143
|
+
return result.success ? { usage: result.data.usage } : null;
|
|
146
144
|
},
|
|
147
145
|
});
|
|
148
146
|
return {
|
|
@@ -152,15 +150,13 @@ export class MistralSpeechProvider {
|
|
|
152
150
|
}
|
|
153
151
|
getStitchOptions(modelId) {
|
|
154
152
|
if (this.models.some((m) => m.id === modelId)) {
|
|
155
|
-
// voxtral
|
|
156
|
-
// 24 kHz — declared via the `encoding=float32` mediaType param so the
|
|
157
|
-
// stitch decoder converts to int16 before concatenation.
|
|
153
|
+
// voxtral pcm is headerless float32 LE 24kHz mono; encoding=float32 tells the stitch decoder to convert to int16.
|
|
158
154
|
return {
|
|
159
155
|
providerOptions: { response_format: "pcm" },
|
|
160
156
|
mediaType: "audio/pcm;rate=24000;encoding=float32",
|
|
161
157
|
};
|
|
162
158
|
}
|
|
163
|
-
return
|
|
159
|
+
return;
|
|
164
160
|
}
|
|
165
161
|
}
|
|
166
162
|
function mediaTypeForResponseFormat(format) {
|
|
@@ -180,8 +176,13 @@ function mediaTypeForResponseFormat(format) {
|
|
|
180
176
|
}
|
|
181
177
|
export function createMistral(config = {}) {
|
|
182
178
|
const provider = new MistralSpeechProvider(config);
|
|
179
|
+
const fallbackSTT = config.fallbackSTT;
|
|
183
180
|
return function mistral(modelId) {
|
|
184
|
-
return {
|
|
181
|
+
return {
|
|
182
|
+
provider,
|
|
183
|
+
modelId: modelId ?? provider.defaultModel,
|
|
184
|
+
...(fallbackSTT && { fallbackSTT }),
|
|
185
|
+
};
|
|
185
186
|
};
|
|
186
187
|
}
|
|
187
188
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/mistral/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/mistral/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC9E,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;CACzC,CAAC,CAAC;AASH,MAAM,CAAC,MAAM,mBAAmB,GAAG,SAAkB,CAAC;AAEtD,MAAM,CAAC,MAAM,cAAc,GAAyB;IAClD;QACE,EAAE,EAAE,uBAAuB;QAC3B,WAAW,EAAE,YAAY;QACzB,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;QAC1E,QAAQ,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,sBAAsB,CAAC;KAC/D;CACO,CAAC;AAEX,MAAM,OAAO,qBAAqB;IAGvB,EAAE,GAAG,mBAAmB,CAAC;IACzB,YAAY,GAAG,uBAAuB,CAAC;IACvC,MAAM,GAAG,cAAc,CAAC;IAEhB,MAAM,CAAqB;IAC3B,OAAO,CAAS;IAChB,OAAO,CAA0B;IAElD,YAAY,MAAmC;QAC7C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,2BAA2B,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAOd;QAKC,MAAM,IAAI,GAA4B;YACpC,eAAe,EAAE,KAAK;YACtB,GAAG,OAAO,CAAC,eAAe;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;YACtB,KAAK,EAAE,OAAO,CAAC,IAAI;SACpB,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;YAChC,CAAC;iBAAM,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBAChC,IAAI,YAAY,GAAG,EAAE,CAAC;oBACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,eAAe,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE;gBACnF,cAAc,EAAE,cAAc;gBAC9B,GAAG,OAAO,CAAC,OAAO;aACnB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,OAAO,CAAC,WAAW;SAC5B,CAAC,CAAC;QAEH,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEpC,MAAM,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/D,MAAM,eAAe,GACnB,IAAI,CAAC,KAAK,EAAE,sBAAsB,IAAI,IAAI;YACxC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;QAE3D,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,eAAe;YACf,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAOZ;QAKC,MAAM,IAAI,GAA4B;YACpC,eAAe,EAAE,KAAK;YACtB,GAAG,OAAO,CAAC,eAAe;YAC1B,KAAK,EAAE,OAAO,CAAC,OAAO;YACtB,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC1B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;YAChC,CAAC;iBAAM,IAAI,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBAClC,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBAChC,IAAI,YAAY,GAAG,EAAE,CAAC;oBACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACzB,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC5C,CAAC;oBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,eAAe,CAAC;QAE3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE;gBACnF,MAAM,EAAE,mBAAmB;gBAC3B,cAAc,EAAE,cAAc;gBAC9B,GAAG,OAAO,CAAC,OAAO;aACnB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;YAC1B,MAAM,EAAE,OAAO,CAAC,WAAW;SAC5B,CAAC,CAAC;QAEH,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,OAAO,wBAAwB,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,QAAQ,CAAC,IAAI,EAAE;YACrD,aAAa,CAAC,SAAS;gBACrB,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAC5C,aAAa,CAAC,SAAS,CAAC,CACzB,CAAC;gBACF,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;YACxD,CAAC;YACD,eAAe,CAAC,SAAS;gBACvB,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,CAAC;SACF,CAAC,CAAC;QAEH,OAAO;YACL,MAAM;YACN,SAAS,EAAE,0BAA0B,CAAC,IAAI,CAAC,eAAe,CAAC;SAC5D,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC9B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;YAC9C,kHAAkH;YAClH,OAAO;gBACL,eAAe,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE;gBAC3C,SAAS,EAAE,uCAAuC;aACnD,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;CACF;AAED,SAAS,0BAA0B,CAAC,MAAe;IACjD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,OAAO,WAAW,CAAC;QACrB,KAAK,KAAK;YACR,0DAA0D;YAC1D,OAAO,uCAAuC,CAAC;QACjD,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,YAAY,CAAC;QACtB;YACE,OAAO,YAAY,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAsC,EAAE;IACpE,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,OAAO,SAAS,OAAO,CACrB,OAAgB;QAEhB,OAAO;YACL,QAAQ;YACR,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,YAAY;YACzC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,22 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import type { WordTimestamp } from "../../timestamps.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
readonly pitchScaleMinimum?: number;
|
|
12
|
-
readonly sourceWordIndex?: number;
|
|
13
|
-
readonly startMs: number;
|
|
14
|
-
readonly word: string;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Converts Murf's word-level durations (milliseconds) into the SDK's
|
|
18
|
-
* `WordTimestamp[]` (seconds). Murf already groups output by word, so no
|
|
19
|
-
* aggregation is needed — this is just a unit conversion.
|
|
20
|
-
*/
|
|
3
|
+
export declare const murfWordDurationSchema: z.ZodObject<{
|
|
4
|
+
endMs: z.ZodNumber;
|
|
5
|
+
pitchScaleMaximum: z.ZodOptional<z.ZodNumber>;
|
|
6
|
+
pitchScaleMinimum: z.ZodOptional<z.ZodNumber>;
|
|
7
|
+
sourceWordIndex: z.ZodOptional<z.ZodNumber>;
|
|
8
|
+
startMs: z.ZodNumber;
|
|
9
|
+
word: z.ZodString;
|
|
10
|
+
}, z.core.$strip>;
|
|
11
|
+
export type MurfWordDuration = z.infer<typeof murfWordDurationSchema>;
|
|
21
12
|
export declare function wordDurationsToWordTimestamps(durations: readonly MurfWordDuration[]): WordTimestamp[];
|
|
22
13
|
//# sourceMappingURL=alignment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../../src/providers/murf/alignment.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"alignment.d.ts","sourceRoot":"","sources":["../../../src/providers/murf/alignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,eAAO,MAAM,sBAAsB;;;;;;;iBAOjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,SAAS,gBAAgB,EAAE,GACrC,aAAa,EAAE,CAUjB"}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// Murf `/v1/speech/generate` `wordDurations` entry. Times are integer ms.
|
|
3
|
+
export const murfWordDurationSchema = z.object({
|
|
4
|
+
endMs: z.number(),
|
|
5
|
+
pitchScaleMaximum: z.number().optional(),
|
|
6
|
+
pitchScaleMinimum: z.number().optional(),
|
|
7
|
+
sourceWordIndex: z.number().optional(),
|
|
8
|
+
startMs: z.number(),
|
|
9
|
+
word: z.string(),
|
|
10
|
+
});
|
|
6
11
|
export function wordDurationsToWordTimestamps(durations) {
|
|
7
12
|
const out = [];
|
|
8
13
|
for (const d of durations) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../../src/providers/murf/alignment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"alignment.js","sourceRoot":"","sources":["../../../src/providers/murf/alignment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,0EAA0E;AAC1E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAGH,MAAM,UAAU,6BAA6B,CAC3C,SAAsC;IAEtC,MAAM,GAAG,GAAoB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,KAAK,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI;YACvB,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,27 +1,18 @@
|
|
|
1
|
-
import type { ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
1
|
+
import type { ModelInfo, ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
2
|
+
import type { ResolvedSTTModel } from "../../speech-to-text-provider.js";
|
|
2
3
|
import type { WordTimestamp } from "../../timestamps.js";
|
|
3
4
|
export interface MurfSpeechProviderConfig {
|
|
4
5
|
apiKey?: string;
|
|
5
6
|
baseURL?: string;
|
|
7
|
+
fallbackSTT?: ResolvedSTTModel;
|
|
6
8
|
fetch?: typeof globalThis.fetch;
|
|
7
9
|
}
|
|
10
|
+
export declare const MURF_PROVIDER_ID: "murf";
|
|
11
|
+
export declare const MURF_MODELS: readonly ModelInfo[];
|
|
8
12
|
export declare class MurfSpeechProvider implements SpeechProvider<string, string> {
|
|
9
|
-
readonly id
|
|
13
|
+
readonly id: "murf";
|
|
10
14
|
readonly defaultModel = "GEN2";
|
|
11
|
-
readonly models: readonly [
|
|
12
|
-
readonly id: "GEN2";
|
|
13
|
-
readonly releaseDate: "2025-01-01";
|
|
14
|
-
readonly languages: readonly ["en", "de", "es", "fr", "zh", "ar", "hi", "bn", "ta", "pt", "it", "ja", "ko", "nl", "pl", "ru", "sv", "tr", "id", "ms", "tl", "cs", "fi", "th", "vi", "da", "no", "ro", "el", "hu", "uk", "sk", "bg"];
|
|
15
|
-
readonly features: readonly ["streaming", {
|
|
16
|
-
readonly id: "timestamps";
|
|
17
|
-
readonly mode: "native";
|
|
18
|
-
}];
|
|
19
|
-
}, {
|
|
20
|
-
readonly id: "FALCON";
|
|
21
|
-
readonly releaseDate: "2025-01-01";
|
|
22
|
-
readonly languages: readonly ["en"];
|
|
23
|
-
readonly features: readonly ["streaming"];
|
|
24
|
-
}];
|
|
15
|
+
readonly models: readonly ModelInfo[];
|
|
25
16
|
private readonly apiKey;
|
|
26
17
|
private readonly baseURL;
|
|
27
18
|
private readonly fetchFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/murf/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/murf/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAYzD,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,eAAO,MAAM,gBAAgB,EAAG,MAAe,CAAC;AAEhD,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EA+ClC,CAAC;AAEX,qBAAa,kBAAmB,YAAW,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IACvE,QAAQ,CAAC,EAAE,SAAoB;IAC/B,QAAQ,CAAC,YAAY,UAAU;IAE/B,QAAQ,CAAC,MAAM,uBAAe;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,wBAAwB;IAMtC,QAAQ,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;QAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;KAC9B,CAAC;IA0DI,MAAM,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;IAkCF,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;;CAUjC;AAED,wBAAgB,UAAU,CAAC,MAAM,GAAE,wBAA6B,IAIzC,UAAU,MAAM,KAAG,aAAa,CAAC,MAAM,CAAC,CAO9D"}
|
|
@@ -1,56 +1,64 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
1
2
|
import { handleErrorResponse, resolveApiKey, SDK_USER_AGENT, } from "../../provider-utils.js";
|
|
2
|
-
import { wordDurationsToWordTimestamps, } from "./alignment.js";
|
|
3
|
+
import { murfWordDurationSchema, wordDurationsToWordTimestamps, } from "./alignment.js";
|
|
4
|
+
const speechResponseSchema = z.object({
|
|
5
|
+
encodedAudio: z.string(),
|
|
6
|
+
audioLengthInSeconds: z.number().optional(),
|
|
7
|
+
wordDurations: z.array(murfWordDurationSchema).optional(),
|
|
8
|
+
});
|
|
9
|
+
export const MURF_PROVIDER_ID = "murf";
|
|
10
|
+
export const MURF_MODELS = [
|
|
11
|
+
{
|
|
12
|
+
id: "GEN2",
|
|
13
|
+
releaseDate: "2025-01-01",
|
|
14
|
+
languages: [
|
|
15
|
+
"en",
|
|
16
|
+
"de",
|
|
17
|
+
"es",
|
|
18
|
+
"fr",
|
|
19
|
+
"zh",
|
|
20
|
+
"ar",
|
|
21
|
+
"hi",
|
|
22
|
+
"bn",
|
|
23
|
+
"ta",
|
|
24
|
+
"pt",
|
|
25
|
+
"it",
|
|
26
|
+
"ja",
|
|
27
|
+
"ko",
|
|
28
|
+
"nl",
|
|
29
|
+
"pl",
|
|
30
|
+
"ru",
|
|
31
|
+
"sv",
|
|
32
|
+
"tr",
|
|
33
|
+
"id",
|
|
34
|
+
"ms",
|
|
35
|
+
"tl",
|
|
36
|
+
"cs",
|
|
37
|
+
"fi",
|
|
38
|
+
"th",
|
|
39
|
+
"vi",
|
|
40
|
+
"da",
|
|
41
|
+
"no",
|
|
42
|
+
"ro",
|
|
43
|
+
"el",
|
|
44
|
+
"hu",
|
|
45
|
+
"uk",
|
|
46
|
+
"sk",
|
|
47
|
+
"bg",
|
|
48
|
+
],
|
|
49
|
+
features: ["streaming", "timestamps"],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: "FALCON",
|
|
53
|
+
releaseDate: "2025-01-01",
|
|
54
|
+
languages: ["en"],
|
|
55
|
+
features: ["streaming"],
|
|
56
|
+
},
|
|
57
|
+
];
|
|
3
58
|
export class MurfSpeechProvider {
|
|
4
|
-
id =
|
|
59
|
+
id = MURF_PROVIDER_ID;
|
|
5
60
|
defaultModel = "GEN2";
|
|
6
|
-
models =
|
|
7
|
-
{
|
|
8
|
-
id: "GEN2",
|
|
9
|
-
releaseDate: "2025-01-01",
|
|
10
|
-
languages: [
|
|
11
|
-
"en",
|
|
12
|
-
"de",
|
|
13
|
-
"es",
|
|
14
|
-
"fr",
|
|
15
|
-
"zh",
|
|
16
|
-
"ar",
|
|
17
|
-
"hi",
|
|
18
|
-
"bn",
|
|
19
|
-
"ta",
|
|
20
|
-
"pt",
|
|
21
|
-
"it",
|
|
22
|
-
"ja",
|
|
23
|
-
"ko",
|
|
24
|
-
"nl",
|
|
25
|
-
"pl",
|
|
26
|
-
"ru",
|
|
27
|
-
"sv",
|
|
28
|
-
"tr",
|
|
29
|
-
"id",
|
|
30
|
-
"ms",
|
|
31
|
-
"tl",
|
|
32
|
-
"cs",
|
|
33
|
-
"fi",
|
|
34
|
-
"th",
|
|
35
|
-
"vi",
|
|
36
|
-
"da",
|
|
37
|
-
"no",
|
|
38
|
-
"ro",
|
|
39
|
-
"el",
|
|
40
|
-
"hu",
|
|
41
|
-
"uk",
|
|
42
|
-
"sk",
|
|
43
|
-
"bg",
|
|
44
|
-
],
|
|
45
|
-
features: ["streaming", { id: "timestamps", mode: "native" }],
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
id: "FALCON",
|
|
49
|
-
releaseDate: "2025-01-01",
|
|
50
|
-
languages: ["en"],
|
|
51
|
-
features: ["streaming"],
|
|
52
|
-
},
|
|
53
|
-
];
|
|
61
|
+
models = MURF_MODELS;
|
|
54
62
|
apiKey;
|
|
55
63
|
baseURL;
|
|
56
64
|
fetchFn;
|
|
@@ -86,7 +94,7 @@ export class MurfSpeechProvider {
|
|
|
86
94
|
body: JSON.stringify(body),
|
|
87
95
|
signal: options.abortSignal,
|
|
88
96
|
});
|
|
89
|
-
await handleErrorResponse(response
|
|
97
|
+
await handleErrorResponse(response);
|
|
90
98
|
if (isFalcon) {
|
|
91
99
|
const arrayBuffer = await response.arrayBuffer();
|
|
92
100
|
const mediaType = response.headers.get("content-type") ?? "audio/wav";
|
|
@@ -95,7 +103,7 @@ export class MurfSpeechProvider {
|
|
|
95
103
|
mediaType,
|
|
96
104
|
};
|
|
97
105
|
}
|
|
98
|
-
const json = (await response.json());
|
|
106
|
+
const json = speechResponseSchema.parse(await response.json());
|
|
99
107
|
const audioDurationMs = typeof json.audioLengthInSeconds === "number"
|
|
100
108
|
? Math.round(json.audioLengthInSeconds * 1000)
|
|
101
109
|
: undefined;
|
|
@@ -128,7 +136,7 @@ export class MurfSpeechProvider {
|
|
|
128
136
|
body: JSON.stringify(body),
|
|
129
137
|
signal: options.abortSignal,
|
|
130
138
|
});
|
|
131
|
-
await handleErrorResponse(response
|
|
139
|
+
await handleErrorResponse(response);
|
|
132
140
|
if (!response.body) {
|
|
133
141
|
throw new Error(`murf/${options.modelId}: response has no body`);
|
|
134
142
|
}
|
|
@@ -139,23 +147,23 @@ export class MurfSpeechProvider {
|
|
|
139
147
|
}
|
|
140
148
|
getStitchOptions(modelId) {
|
|
141
149
|
if (this.models.some((m) => m.id === modelId)) {
|
|
142
|
-
//
|
|
143
|
-
// Both paths already yield audio/wav so no provider-side overrides are
|
|
144
|
-
// required.
|
|
150
|
+
// GEN2 base64 WAV and FALCON streamed WAV both yield audio/wav with no overrides needed.
|
|
145
151
|
return {
|
|
146
152
|
providerOptions: {},
|
|
147
153
|
mediaType: "audio/wav",
|
|
148
154
|
};
|
|
149
155
|
}
|
|
150
|
-
return
|
|
156
|
+
return;
|
|
151
157
|
}
|
|
152
158
|
}
|
|
153
159
|
export function createMurf(config = {}) {
|
|
154
160
|
const provider = new MurfSpeechProvider(config);
|
|
161
|
+
const fallbackSTT = config.fallbackSTT;
|
|
155
162
|
return function murf(modelId) {
|
|
156
163
|
return {
|
|
157
164
|
provider,
|
|
158
165
|
modelId: modelId ?? provider.defaultModel,
|
|
166
|
+
...(fallbackSTT && { fallbackSTT }),
|
|
159
167
|
};
|
|
160
168
|
};
|
|
161
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/murf/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,cAAc,GACf,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/murf/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +1,18 @@
|
|
|
1
|
-
import { type ResolvedModel, type SpeechProvider } from "../../speech-provider.js";
|
|
1
|
+
import { type ModelInfo, type ResolvedModel, type SpeechProvider } from "../../speech-provider.js";
|
|
2
|
+
import type { ResolvedSTTModel, SpeechToTextProvider } from "../../speech-to-text-provider.js";
|
|
3
|
+
import type { WordTimestamp } from "../../timestamps.js";
|
|
2
4
|
export interface OpenAISpeechProviderConfig {
|
|
3
5
|
apiKey?: string;
|
|
4
6
|
baseURL?: string;
|
|
7
|
+
fallbackSTT?: ResolvedSTTModel;
|
|
5
8
|
fetch?: typeof globalThis.fetch;
|
|
6
9
|
}
|
|
10
|
+
export declare const OPENAI_PROVIDER_ID: "openai";
|
|
11
|
+
export declare const OPENAI_MODELS: readonly ModelInfo[];
|
|
7
12
|
export declare class OpenAISpeechProvider implements SpeechProvider<string, string> {
|
|
8
|
-
readonly id
|
|
13
|
+
readonly id: "openai";
|
|
9
14
|
readonly defaultModel = "gpt-4o-mini-tts";
|
|
10
|
-
|
|
11
|
-
readonly models: readonly [{
|
|
12
|
-
readonly id: "gpt-4o-mini-tts";
|
|
13
|
-
readonly releaseDate: "2025-03-20";
|
|
14
|
-
readonly languages: readonly ["af", "ar", "bg", "bn", "bs", "ca", "cs", "cy", "da", "de", "el", "en", "es", "et", "fi", "fr", "gl", "gu", "he", "hi", "hr", "hu", "id", "is", "it", "ja", "jv", "ka", "kk", "km", "kn", "ko", "lo", "lt", "lv", "mk", "ml", "mn", "mr", "ms", "my", "ne", "nl", "no", "pa", "pl", "pt", "ro", "ru", "si", "sk", "sl", "so", "sq", "sr", "su", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "ur", "vi", "zh"];
|
|
15
|
-
readonly features: readonly ["streaming", "audio-tags", {
|
|
16
|
-
readonly id: "timestamps";
|
|
17
|
-
readonly mode: "derived";
|
|
18
|
-
}];
|
|
19
|
-
}, {
|
|
20
|
-
readonly id: "tts-1";
|
|
21
|
-
readonly releaseDate: "2023-11-06";
|
|
22
|
-
readonly languages: readonly ["af", "ar", "bg", "bn", "bs", "ca", "cs", "cy", "da", "de", "el", "en", "es", "et", "fi", "fr", "gl", "gu", "he", "hi", "hr", "hu", "id", "is", "it", "ja", "jv", "ka", "kk", "km", "kn", "ko", "lo", "lt", "lv", "mk", "ml", "mn", "mr", "ms", "my", "ne", "nl", "no", "pa", "pl", "pt", "ro", "ru", "si", "sk", "sl", "so", "sq", "sr", "su", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "ur", "vi", "zh"];
|
|
23
|
-
readonly features: readonly ["streaming", {
|
|
24
|
-
readonly id: "timestamps";
|
|
25
|
-
readonly mode: "derived";
|
|
26
|
-
}];
|
|
27
|
-
}, {
|
|
28
|
-
readonly id: "tts-1-hd";
|
|
29
|
-
readonly releaseDate: "2023-11-06";
|
|
30
|
-
readonly languages: readonly ["af", "ar", "bg", "bn", "bs", "ca", "cs", "cy", "da", "de", "el", "en", "es", "et", "fi", "fr", "gl", "gu", "he", "hi", "hr", "hu", "id", "is", "it", "ja", "jv", "ka", "kk", "km", "kn", "ko", "lo", "lt", "lv", "mk", "ml", "mn", "mr", "ms", "my", "ne", "nl", "no", "pa", "pl", "pt", "ro", "ru", "si", "sk", "sl", "so", "sq", "sr", "su", "sv", "sw", "ta", "te", "th", "tl", "tr", "uk", "ur", "vi", "zh"];
|
|
31
|
-
readonly features: readonly ["streaming", {
|
|
32
|
-
readonly id: "timestamps";
|
|
33
|
-
readonly mode: "derived";
|
|
34
|
-
}];
|
|
35
|
-
}];
|
|
15
|
+
readonly models: readonly ModelInfo[];
|
|
36
16
|
private readonly apiKey;
|
|
37
17
|
private readonly baseURL;
|
|
38
18
|
private readonly fetchFn;
|
|
@@ -73,5 +53,32 @@ export declare class OpenAISpeechProvider implements SpeechProvider<string, stri
|
|
|
73
53
|
mediaType: string;
|
|
74
54
|
} | undefined;
|
|
75
55
|
}
|
|
76
|
-
export declare
|
|
56
|
+
export declare class OpenAISpeechToTextProvider implements SpeechToTextProvider {
|
|
57
|
+
readonly id: "openai";
|
|
58
|
+
readonly defaultModel = "whisper-1";
|
|
59
|
+
readonly models: readonly [{
|
|
60
|
+
readonly id: "whisper-1";
|
|
61
|
+
readonly releaseDate: "2023-03-01";
|
|
62
|
+
readonly languages: readonly ["af", "ar", "az", "be", "bg", "bn", "bs", "ca", "cs", "cy", "da", "de", "el", "en", "es", "et", "fa", "fi", "fr", "gl", "he", "hi", "hr", "hu", "hy", "id", "is", "it", "ja", "kk", "kn", "ko", "lt", "lv", "mi", "mk", "mr", "ms", "ne", "nl", "no", "pl", "pt", "ro", "ru", "sk", "sl", "sr", "sv", "sw", "ta", "th", "tl", "tr", "uk", "ur", "vi", "zh"];
|
|
63
|
+
}];
|
|
64
|
+
private readonly apiKey;
|
|
65
|
+
private readonly baseURL;
|
|
66
|
+
private readonly fetchFn;
|
|
67
|
+
constructor(config?: OpenAISpeechProviderConfig);
|
|
68
|
+
transcribe(options: {
|
|
69
|
+
modelId: string;
|
|
70
|
+
audio: Uint8Array;
|
|
71
|
+
mediaType: string;
|
|
72
|
+
language?: string;
|
|
73
|
+
abortSignal?: AbortSignal;
|
|
74
|
+
headers?: Record<string, string>;
|
|
75
|
+
}): Promise<{
|
|
76
|
+
timestamps: WordTimestamp[];
|
|
77
|
+
text?: string;
|
|
78
|
+
providerMetadata?: Record<string, unknown>;
|
|
79
|
+
}>;
|
|
80
|
+
}
|
|
81
|
+
export declare function createOpenAI(config?: OpenAISpeechProviderConfig): ((modelId?: string) => ResolvedModel<string>) & {
|
|
82
|
+
stt: (modelId?: string) => ResolvedSTTModel;
|
|
83
|
+
};
|
|
77
84
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUzD,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAED,eAAO,MAAM,kBAAkB,EAAG,QAAiB,CAAC;AAwEpD,eAAO,MAAM,aAAa,EAAE,SAAS,SAAS,EAmBpC,CAAC;AAEX,qBAAa,oBAAqB,YAAW,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;IACzE,QAAQ,CAAC,EAAE,WAAsB;IACjC,QAAQ,CAAC,YAAY,qBAAqB;IAE1C,QAAQ,CAAC,MAAM,uBAAiB;IAEhC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,0BAA0B;IAM9C,OAAO,CAAC,iBAAiB;IA8BzB,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAUjC,QAAQ,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC;QACV,KAAK,EAAE,UAAU,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;IA0CI,MAAM,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC1C,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;IA2CF,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;;;;CASjC;AAiED,qBAAa,0BAA2B,YAAW,oBAAoB;IACrE,QAAQ,CAAC,EAAE,WAAsB;IACjC,QAAQ,CAAC,YAAY,eAAe;IAEpC,QAAQ,CAAC,MAAM;;;;OAMJ;IAEX,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,GAAE,0BAA+B;IAM7C,UAAU,CAAC,OAAO,EAAE;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,UAAU,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC;QACV,UAAU,EAAE,aAAa,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,CAAC;CAkDH;AA8CD,wBAAgB,YAAY,CAAC,MAAM,GAAE,0BAA+B,eAKvC,MAAM,KAAG,aAAa,CAAC,MAAM,CAAC;oBAOvC,MAAM,KAAG,gBAAgB;EAK5C"}
|