@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/inworld/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/inworld/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AudioOutput } from "../../audio-output.js";
|
|
2
|
+
import type { ModelInfo, ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
3
|
+
import type { ResolvedSTTModel } from "../../speech-to-text-provider.js";
|
|
2
4
|
export interface MistralSpeechProviderConfig {
|
|
3
5
|
apiKey?: string;
|
|
4
6
|
baseURL?: string;
|
|
7
|
+
fallbackSTT?: ResolvedSTTModel;
|
|
5
8
|
fetch?: typeof globalThis.fetch;
|
|
6
9
|
}
|
|
10
|
+
export declare const MISTRAL_PROVIDER_ID: "mistral";
|
|
11
|
+
export declare const MISTRAL_MODELS: readonly ModelInfo[];
|
|
7
12
|
export declare class MistralSpeechProvider implements SpeechProvider<string, string | {
|
|
8
13
|
audio: string | Uint8Array;
|
|
9
14
|
}> {
|
|
10
|
-
readonly id
|
|
15
|
+
readonly id: "mistral";
|
|
11
16
|
readonly defaultModel = "voxtral-mini-tts-2603";
|
|
12
|
-
readonly models: readonly [
|
|
13
|
-
readonly id: "voxtral-mini-tts-2603";
|
|
14
|
-
readonly releaseDate: "2026-03-23";
|
|
15
|
-
readonly languages: readonly ["en", "fr", "de", "es", "nl", "pt", "it", "hi", "ar"];
|
|
16
|
-
readonly features: readonly ["streaming", "open-source", "inline-voice-cloning"];
|
|
17
|
-
}];
|
|
17
|
+
readonly models: readonly ModelInfo[];
|
|
18
18
|
private readonly apiKey;
|
|
19
19
|
private readonly baseURL;
|
|
20
20
|
private readonly fetchFn;
|
|
@@ -53,6 +53,12 @@ export declare class MistralSpeechProvider implements SpeechProvider<string, str
|
|
|
53
53
|
};
|
|
54
54
|
mediaType: string;
|
|
55
55
|
} | undefined;
|
|
56
|
+
resolveOutputFormat(modelId: string, output: AudioOutput): {
|
|
57
|
+
providerOptions: {
|
|
58
|
+
response_format: string;
|
|
59
|
+
};
|
|
60
|
+
expectedMediaType: string;
|
|
61
|
+
} | undefined;
|
|
56
62
|
}
|
|
57
63
|
export declare function createMistral(config?: MistralSpeechProviderConfig): (modelId?: string) => ResolvedModel<string | {
|
|
58
64
|
audio: string | Uint8Array;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/mistral/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/mistral/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOzD,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AA0BzE,MAAM,WAAW,2BAA2B;IAC1C,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,mBAAmB,EAAG,SAAkB,CAAC;AAEtD,eAAO,MAAM,cAAc,EAAE,SAAS,SAAS,EAOrC,CAAC;AAEX,qBAAa,qBACX,YAAW,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC;IAE1E,QAAQ,CAAC,EAAE,YAAuB;IAClC,QAAQ,CAAC,YAAY,2BAA2B;IAChD,QAAQ,CAAC,MAAM,uBAAkB;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,2BAA2B;IAMzC,QAAQ,CAAC,OAAO,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;SAAE,CAAC;QAChD,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,MAAM,CAAC;QACd,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IAmDI,MAAM,CAAC,OAAO,EAAE;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;SAAE,CAAC;QAChD,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;IA8DF,gBAAgB,CAAC,OAAO,EAAE,MAAM;;;;;;IAWhC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;;;;;;CAqBzD;AAkBD,wBAAgB,aAAa,CAAC,MAAM,GAAE,2BAAgC,IAIlE,UAAU,MAAM,KACf,aAAa,CAAC,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAAA;CAAE,CAAC,CAO1D"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { uint8ArrayToBase64 } from "../../audio-utils.js";
|
|
1
3
|
import { handleErrorResponse, resolveApiKey, SDK_USER_AGENT, } from "../../provider-utils.js";
|
|
2
4
|
import { parseSseBase64Stream } from "../../sse-stream.js";
|
|
3
5
|
function safeParseJson(input) {
|
|
@@ -8,27 +10,31 @@ function safeParseJson(input) {
|
|
|
8
10
|
return null;
|
|
9
11
|
}
|
|
10
12
|
}
|
|
13
|
+
const speechResponseSchema = z.object({
|
|
14
|
+
audio_data: z.string(),
|
|
15
|
+
usage: z.object({ audio_duration_seconds: z.number().optional() }).optional(),
|
|
16
|
+
});
|
|
17
|
+
const audioDeltaEventSchema = z.object({
|
|
18
|
+
type: z.literal("speech.audio.delta"),
|
|
19
|
+
audio_data: z.string(),
|
|
20
|
+
});
|
|
21
|
+
const audioDoneEventSchema = z.object({
|
|
22
|
+
type: z.literal("speech.audio.done"),
|
|
23
|
+
usage: z.record(z.string(), z.unknown()),
|
|
24
|
+
});
|
|
25
|
+
export const MISTRAL_PROVIDER_ID = "mistral";
|
|
26
|
+
export const MISTRAL_MODELS = [
|
|
27
|
+
{
|
|
28
|
+
id: "voxtral-mini-tts-2603",
|
|
29
|
+
releaseDate: "2026-03-23",
|
|
30
|
+
languages: ["en", "fr", "de", "es", "nl", "pt", "it", "hi", "ar"],
|
|
31
|
+
features: ["streaming", "open-source", "inline-voice-cloning"],
|
|
32
|
+
},
|
|
33
|
+
];
|
|
11
34
|
export class MistralSpeechProvider {
|
|
12
|
-
id =
|
|
35
|
+
id = MISTRAL_PROVIDER_ID;
|
|
13
36
|
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
|
-
];
|
|
37
|
+
models = MISTRAL_MODELS;
|
|
32
38
|
apiKey;
|
|
33
39
|
baseURL;
|
|
34
40
|
fetchFn;
|
|
@@ -51,11 +57,7 @@ export class MistralSpeechProvider {
|
|
|
51
57
|
else if ("audio" in options.voice) {
|
|
52
58
|
const audio = options.voice.audio;
|
|
53
59
|
if (audio instanceof Uint8Array) {
|
|
54
|
-
|
|
55
|
-
for (const byte of audio) {
|
|
56
|
-
binaryString += String.fromCharCode(byte);
|
|
57
|
-
}
|
|
58
|
-
body.ref_audio = btoa(binaryString);
|
|
60
|
+
body.ref_audio = uint8ArrayToBase64(audio);
|
|
59
61
|
}
|
|
60
62
|
else {
|
|
61
63
|
body.ref_audio = audio;
|
|
@@ -74,8 +76,8 @@ export class MistralSpeechProvider {
|
|
|
74
76
|
body: JSON.stringify(body),
|
|
75
77
|
signal: options.abortSignal,
|
|
76
78
|
});
|
|
77
|
-
await handleErrorResponse(response
|
|
78
|
-
const json = (await response.json());
|
|
79
|
+
await handleErrorResponse(response);
|
|
80
|
+
const json = speechResponseSchema.parse(await response.json());
|
|
79
81
|
const audioDurationMs = json.usage?.audio_duration_seconds == null
|
|
80
82
|
? undefined
|
|
81
83
|
: Math.round(json.usage.audio_duration_seconds * 1000);
|
|
@@ -100,11 +102,7 @@ export class MistralSpeechProvider {
|
|
|
100
102
|
else if ("audio" in options.voice) {
|
|
101
103
|
const audio = options.voice.audio;
|
|
102
104
|
if (audio instanceof Uint8Array) {
|
|
103
|
-
|
|
104
|
-
for (const byte of audio) {
|
|
105
|
-
binaryString += String.fromCharCode(byte);
|
|
106
|
-
}
|
|
107
|
-
body.ref_audio = btoa(binaryString);
|
|
105
|
+
body.ref_audio = uint8ArrayToBase64(audio);
|
|
108
106
|
}
|
|
109
107
|
else {
|
|
110
108
|
body.ref_audio = audio;
|
|
@@ -124,25 +122,18 @@ export class MistralSpeechProvider {
|
|
|
124
122
|
body: JSON.stringify(body),
|
|
125
123
|
signal: options.abortSignal,
|
|
126
124
|
});
|
|
127
|
-
await handleErrorResponse(response
|
|
125
|
+
await handleErrorResponse(response);
|
|
128
126
|
if (!response.body) {
|
|
129
127
|
throw new Error(`mistral/${options.modelId}: response has no body`);
|
|
130
128
|
}
|
|
131
129
|
const { stream } = parseSseBase64Stream(response.body, {
|
|
132
130
|
extractBase64(eventData) {
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
typeof json.audio_data === "string") {
|
|
136
|
-
return json.audio_data;
|
|
137
|
-
}
|
|
138
|
-
return null;
|
|
131
|
+
const result = audioDeltaEventSchema.safeParse(safeParseJson(eventData));
|
|
132
|
+
return result.success ? result.data.audio_data : null;
|
|
139
133
|
},
|
|
140
134
|
extractMetadata(eventData) {
|
|
141
|
-
const
|
|
142
|
-
|
|
143
|
-
return { usage: json.usage };
|
|
144
|
-
}
|
|
145
|
-
return null;
|
|
135
|
+
const result = audioDoneEventSchema.safeParse(safeParseJson(eventData));
|
|
136
|
+
return result.success ? { usage: result.data.usage } : null;
|
|
146
137
|
},
|
|
147
138
|
});
|
|
148
139
|
return {
|
|
@@ -152,15 +143,34 @@ export class MistralSpeechProvider {
|
|
|
152
143
|
}
|
|
153
144
|
getStitchOptions(modelId) {
|
|
154
145
|
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.
|
|
146
|
+
// voxtral pcm is headerless float32 LE 24kHz mono; encoding=float32 tells the stitch decoder to convert to int16.
|
|
158
147
|
return {
|
|
159
148
|
providerOptions: { response_format: "pcm" },
|
|
160
149
|
mediaType: "audio/pcm;rate=24000;encoding=float32",
|
|
161
150
|
};
|
|
162
151
|
}
|
|
163
|
-
return
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
resolveOutputFormat(modelId, output) {
|
|
155
|
+
if (!this.models.some((m) => m.id === modelId)) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
switch (output.format) {
|
|
159
|
+
case "mp3":
|
|
160
|
+
return {
|
|
161
|
+
providerOptions: { response_format: "mp3" },
|
|
162
|
+
expectedMediaType: "audio/mpeg",
|
|
163
|
+
};
|
|
164
|
+
case "pcm":
|
|
165
|
+
case "wav":
|
|
166
|
+
// voxtral pcm is headerless float32 LE 24kHz mono; encoding=float32 tells the decoder to convert to int16.
|
|
167
|
+
return {
|
|
168
|
+
providerOptions: { response_format: "pcm" },
|
|
169
|
+
expectedMediaType: "audio/pcm;rate=24000;encoding=float32",
|
|
170
|
+
};
|
|
171
|
+
default:
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
164
174
|
}
|
|
165
175
|
}
|
|
166
176
|
function mediaTypeForResponseFormat(format) {
|
|
@@ -180,8 +190,13 @@ function mediaTypeForResponseFormat(format) {
|
|
|
180
190
|
}
|
|
181
191
|
export function createMistral(config = {}) {
|
|
182
192
|
const provider = new MistralSpeechProvider(config);
|
|
193
|
+
const fallbackSTT = config.fallbackSTT;
|
|
183
194
|
return function mistral(modelId) {
|
|
184
|
-
return {
|
|
195
|
+
return {
|
|
196
|
+
provider,
|
|
197
|
+
modelId: modelId ?? provider.defaultModel,
|
|
198
|
+
...(fallbackSTT && { fallbackSTT }),
|
|
199
|
+
};
|
|
185
200
|
};
|
|
186
201
|
}
|
|
187
202
|
//# 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":"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"}
|
|
@@ -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,19 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { AudioOutput } from "../../audio-output.js";
|
|
2
|
+
import type { ModelInfo, ResolvedModel, SpeechProvider } from "../../speech-provider.js";
|
|
3
|
+
import type { ResolvedSTTModel } from "../../speech-to-text-provider.js";
|
|
2
4
|
import type { WordTimestamp } from "../../timestamps.js";
|
|
3
5
|
export interface MurfSpeechProviderConfig {
|
|
4
6
|
apiKey?: string;
|
|
5
7
|
baseURL?: string;
|
|
8
|
+
fallbackSTT?: ResolvedSTTModel;
|
|
6
9
|
fetch?: typeof globalThis.fetch;
|
|
7
10
|
}
|
|
11
|
+
export declare const MURF_PROVIDER_ID: "murf";
|
|
12
|
+
export declare const MURF_MODELS: readonly ModelInfo[];
|
|
8
13
|
export declare class MurfSpeechProvider implements SpeechProvider<string, string> {
|
|
9
|
-
readonly id
|
|
14
|
+
readonly id: "murf";
|
|
10
15
|
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
|
-
}];
|
|
16
|
+
readonly models: readonly ModelInfo[];
|
|
25
17
|
private readonly apiKey;
|
|
26
18
|
private readonly baseURL;
|
|
27
19
|
private readonly fetchFn;
|
|
@@ -57,6 +49,13 @@ export declare class MurfSpeechProvider implements SpeechProvider<string, string
|
|
|
57
49
|
providerOptions: {};
|
|
58
50
|
mediaType: string;
|
|
59
51
|
} | undefined;
|
|
52
|
+
resolveOutputFormat(modelId: string, output: AudioOutput): {
|
|
53
|
+
providerOptions: {
|
|
54
|
+
format: string;
|
|
55
|
+
sampleRate: number;
|
|
56
|
+
};
|
|
57
|
+
expectedMediaType: string;
|
|
58
|
+
} | undefined;
|
|
60
59
|
}
|
|
61
60
|
export declare function createMurf(config?: MurfSpeechProviderConfig): (modelId?: string) => ResolvedModel<string>;
|
|
62
61
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -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":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAMzD,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;;;;IAWhC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;;;;;;;CAwBzD;AAkBD,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;
|
|
@@ -105,7 +113,7 @@ export class MurfSpeechProvider {
|
|
|
105
113
|
return {
|
|
106
114
|
audio: json.encodedAudio,
|
|
107
115
|
audioDurationMs,
|
|
108
|
-
mediaType:
|
|
116
|
+
mediaType: murfMediaType(body.format, body.sampleRate),
|
|
109
117
|
timestamps,
|
|
110
118
|
};
|
|
111
119
|
}
|
|
@@ -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,62 @@ 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;
|
|
157
|
+
}
|
|
158
|
+
resolveOutputFormat(modelId, output) {
|
|
159
|
+
if (!this.models.some((m) => m.id === modelId)) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
switch (output.format) {
|
|
163
|
+
case "wav":
|
|
164
|
+
return {
|
|
165
|
+
providerOptions: { format: "WAV", sampleRate: 24_000 },
|
|
166
|
+
expectedMediaType: "audio/wav",
|
|
167
|
+
};
|
|
168
|
+
case "mp3":
|
|
169
|
+
return {
|
|
170
|
+
providerOptions: { format: "MP3", sampleRate: 24_000 },
|
|
171
|
+
expectedMediaType: "audio/mpeg",
|
|
172
|
+
};
|
|
173
|
+
case "pcm":
|
|
174
|
+
return {
|
|
175
|
+
providerOptions: { format: "PCM", sampleRate: 24_000 },
|
|
176
|
+
expectedMediaType: "audio/pcm;rate=24000",
|
|
177
|
+
};
|
|
178
|
+
default:
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function murfMediaType(format, sampleRate) {
|
|
184
|
+
const rate = typeof sampleRate === "number" ? sampleRate : 24_000;
|
|
185
|
+
switch (typeof format === "string" ? format.toUpperCase() : "WAV") {
|
|
186
|
+
case "MP3":
|
|
187
|
+
return "audio/mpeg";
|
|
188
|
+
case "PCM":
|
|
189
|
+
return `audio/pcm;rate=${rate}`;
|
|
190
|
+
case "ALAW":
|
|
191
|
+
return "audio/x-alaw-basic";
|
|
192
|
+
case "ULAW":
|
|
193
|
+
return "audio/basic";
|
|
194
|
+
default:
|
|
195
|
+
return "audio/wav";
|
|
151
196
|
}
|
|
152
197
|
}
|
|
153
198
|
export function createMurf(config = {}) {
|
|
154
199
|
const provider = new MurfSpeechProvider(config);
|
|
200
|
+
const fallbackSTT = config.fallbackSTT;
|
|
155
201
|
return function murf(modelId) {
|
|
156
202
|
return {
|
|
157
203
|
provider,
|
|
158
204
|
modelId: modelId ?? provider.defaultModel,
|
|
205
|
+
...(fallbackSTT && { fallbackSTT }),
|
|
159
206
|
};
|
|
160
207
|
};
|
|
161
208
|
}
|