makefx 1.6.1 → 1.6.3
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 +1 -1
- package/makefx.mjs +29 -12
- package/package.json +1 -1
package/README.md
CHANGED
package/makefx.mjs
CHANGED
|
@@ -4438,7 +4438,7 @@ require_websocket_server();
|
|
|
4438
4438
|
var wrapper_default = import_websocket.default;
|
|
4439
4439
|
//#endregion
|
|
4440
4440
|
//#region src/cli/version.ts
|
|
4441
|
-
var CLI_VERSION = "1.6.
|
|
4441
|
+
var CLI_VERSION = "1.6.3+203ed3ea216e";
|
|
4442
4442
|
var CLI_VERSION_HEADER = "X-MakeFX-CLI-Version";
|
|
4443
4443
|
function cliVersionHeaders() {
|
|
4444
4444
|
return {
|
|
@@ -5780,6 +5780,18 @@ Usage:
|
|
|
5780
5780
|
`);
|
|
5781
5781
|
}
|
|
5782
5782
|
//#endregion
|
|
5783
|
+
//#region src/shared/audioGenerationOptions.ts
|
|
5784
|
+
var DEFAULT_ELEVENLABS_SPEECH_MODEL_ID = "eleven_v3";
|
|
5785
|
+
/**
|
|
5786
|
+
* Keep the provider-native ElevenLabs ID canonical everywhere after an input
|
|
5787
|
+
* boundary. The hyphenated MakeFX slug is accepted only for migration.
|
|
5788
|
+
*/
|
|
5789
|
+
function normalizeElevenLabsSpeechModelId(model) {
|
|
5790
|
+
const normalized = model?.trim();
|
|
5791
|
+
if (!normalized) return void 0;
|
|
5792
|
+
return normalized === "eleven-v3" ? DEFAULT_ELEVENLABS_SPEECH_MODEL_ID : normalized;
|
|
5793
|
+
}
|
|
5794
|
+
//#endregion
|
|
5783
5795
|
//#region src/backend/utils/audio-metadata.ts
|
|
5784
5796
|
function readWavDurationMs(bytes) {
|
|
5785
5797
|
if (bytes.byteLength < 12) return void 0;
|
|
@@ -6870,8 +6882,9 @@ function getAudioModeFromType(type) {
|
|
|
6870
6882
|
}
|
|
6871
6883
|
function validateAudioModelOption(value, mode) {
|
|
6872
6884
|
if (!value) return;
|
|
6873
|
-
const
|
|
6874
|
-
|
|
6885
|
+
const normalized = mode === "speech" || mode === "dialogue" ? normalizeElevenLabsSpeechModelId(value) : value;
|
|
6886
|
+
const supported = mode === "music" ? ["eleven-music", "lyria-3"] : mode === "sfx" ? ["eleven-sfx"] : mode === "speech" || mode === "dialogue" ? [DEFAULT_ELEVENLABS_SPEECH_MODEL_ID] : [];
|
|
6887
|
+
if (!normalized || !supported.includes(normalized)) throw new Error(`Unsupported ${mode ?? "audio"} model: ${value}. Expected ${supported.join(" or ")}`);
|
|
6875
6888
|
}
|
|
6876
6889
|
function parseMusicProviderOption(parsed, mediaKind, assetType) {
|
|
6877
6890
|
const value = parsed.options.model;
|
|
@@ -7067,7 +7080,6 @@ async function preflightLocalSeedanceReferences(options, deps, state) {
|
|
|
7067
7080
|
if (videoBytes >= 50 * 1024 * 1024) throw new Error("Seedance reference videos must total under 50 MB");
|
|
7068
7081
|
const hasCompleteVideoDurations = inspections.video.every((item) => item.durationMs !== void 0);
|
|
7069
7082
|
if (inspections.video.length > 0 && hasCompleteVideoDurations && (videoDurationMs < 2e3 || videoDurationMs > 15e3)) throw new Error("Seedance reference videos must total 2 to 15 seconds");
|
|
7070
|
-
if (inspections.audio.reduce((total, item) => total + (item.durationMs ?? 0), 0) > 15e3) throw new Error("Seedance reference audio must total at most 15 seconds");
|
|
7071
7083
|
}
|
|
7072
7084
|
async function resolveReferenceVariantIds(refs, ctx, deps, variants = [], mediaKind = CLI_GENERATION_MEDIA_KIND, assets = [], expectedReferenceMediaKind) {
|
|
7073
7085
|
const variantIds = [];
|
|
@@ -7435,9 +7447,12 @@ function normalizeCliOption(value) {
|
|
|
7435
7447
|
if (value === void 0 || value === "true") return void 0;
|
|
7436
7448
|
return value.trim() || void 0;
|
|
7437
7449
|
}
|
|
7438
|
-
function parseAudioGenerationOptions(
|
|
7450
|
+
function parseAudioGenerationOptions(parsed, mediaKind) {
|
|
7439
7451
|
if (mediaKind !== "audio") return {};
|
|
7440
|
-
|
|
7452
|
+
const mode = getAudioModeFromType(parsed.options.type);
|
|
7453
|
+
if (mode !== "speech" && mode !== "dialogue") return {};
|
|
7454
|
+
const model = normalizeElevenLabsSpeechModelId(parsed.options.model);
|
|
7455
|
+
return model ? { model } : {};
|
|
7441
7456
|
}
|
|
7442
7457
|
function parseImageGenerationOptions(parsed, mediaKind) {
|
|
7443
7458
|
if (mediaKind !== "image") return {};
|
|
@@ -7638,6 +7653,7 @@ function parseWaitSeconds$1(value) {
|
|
|
7638
7653
|
function buildRegenerationBody(mediaKind, parsed, referenceVariantIds, audioMode, sourceRecipe) {
|
|
7639
7654
|
const prompt = parsed.positionals[1] ?? parsed.options.prompt;
|
|
7640
7655
|
const model = parsed.options.model;
|
|
7656
|
+
const audioModel = mediaKind === "audio" && (audioMode === "speech" || audioMode === "dialogue") ? normalizeElevenLabsSpeechModelId(model) : void 0;
|
|
7641
7657
|
const params = {};
|
|
7642
7658
|
let duration;
|
|
7643
7659
|
let modelProvider;
|
|
@@ -7658,7 +7674,7 @@ function buildRegenerationBody(mediaKind, parsed, referenceVariantIds, audioMode
|
|
|
7658
7674
|
if (parsed.options["no-audio"] === "true") params.generateAudio = false;
|
|
7659
7675
|
} else {
|
|
7660
7676
|
if (!audioMode) throw new Error("Audio regeneration mode is required");
|
|
7661
|
-
validateAudioModel(audioMode, model);
|
|
7677
|
+
validateAudioModel(audioMode, audioModel ?? model);
|
|
7662
7678
|
if (parsed.options.voice) params.voiceId = parsed.options.voice;
|
|
7663
7679
|
if (parsed.options["dialogue-voices"]) params.dialogueVoiceIds = splitList(parsed.options["dialogue-voices"]);
|
|
7664
7680
|
if (audioMode === "music" && model) params.musicProvider = model === "lyria-3" ? "lyria" : "elevenlabs";
|
|
@@ -7667,6 +7683,7 @@ function buildRegenerationBody(mediaKind, parsed, referenceVariantIds, audioMode
|
|
|
7667
7683
|
...prompt ? { prompt } : {},
|
|
7668
7684
|
...model && mediaKind === "image" ? { model } : {},
|
|
7669
7685
|
...model && mediaKind === "video" ? { model: resolveVideoRegenerationModel(model, parsed, sourceRecipe) } : {},
|
|
7686
|
+
...audioModel ? { model: audioModel } : {},
|
|
7670
7687
|
...modelProvider ? { modelProvider } : {},
|
|
7671
7688
|
...referenceVariantIds !== void 0 ? { referenceVariantIds } : {},
|
|
7672
7689
|
...Object.keys(params).length > 0 ? { params } : {},
|
|
@@ -7708,7 +7725,7 @@ function parseStoredRecipe$2(recipe) {
|
|
|
7708
7725
|
}
|
|
7709
7726
|
function validateAudioModel(mode, model) {
|
|
7710
7727
|
if (!model) return;
|
|
7711
|
-
const supported = mode === "music" ? ["eleven-music", "lyria-3"] : mode === "sfx" ? ["eleven-sfx"] : [
|
|
7728
|
+
const supported = mode === "music" ? ["eleven-music", "lyria-3"] : mode === "sfx" ? ["eleven-sfx"] : [DEFAULT_ELEVENLABS_SPEECH_MODEL_ID];
|
|
7712
7729
|
if (!supported.includes(model)) throw new Error(`Unsupported ${mode} model: ${model}. Expected ${supported.join(" or ")}`);
|
|
7713
7730
|
}
|
|
7714
7731
|
function parseReferences(mediaKind, options) {
|
|
@@ -11497,10 +11514,10 @@ Seedance mode is inferred: first/last frame selects frame mode, image/video/audi
|
|
|
11497
11514
|
makefx audio voices [--json]
|
|
11498
11515
|
makefx audio align <variant-ref> "transcript" [--space <id>] [--json]
|
|
11499
11516
|
makefx audio align <variant-ref> --input transcript.txt [--space <id>] [--json]
|
|
11500
|
-
makefx audio speech generate "text" --voice <voice-id> --name <name> -o <file>
|
|
11501
|
-
makefx audio speech regenerate <variant-ref> ["text"] [--voice <voice-id>] [--no-activate] [--wait]
|
|
11502
|
-
makefx audio dialogue generate --input <file> --dialogue-voices <id,id> --name <name> -o <file>
|
|
11503
|
-
makefx audio dialogue regenerate <variant-ref> ["script"] [--dialogue-voices <id,id>] [--no-activate] [--wait]
|
|
11517
|
+
makefx audio speech generate "text" [--model eleven_v3] --voice <voice-id> --name <name> -o <file>
|
|
11518
|
+
makefx audio speech regenerate <variant-ref> ["text"] [--model eleven_v3] [--voice <voice-id>] [--no-activate] [--wait]
|
|
11519
|
+
makefx audio dialogue generate --input <file> [--model eleven_v3] --dialogue-voices <id,id> --name <name> -o <file>
|
|
11520
|
+
makefx audio dialogue regenerate <variant-ref> ["script"] [--model eleven_v3] [--dialogue-voices <id,id>] [--no-activate] [--wait]
|
|
11504
11521
|
makefx audio music generate "prompt" --model eleven-music|lyria-3 --name <name> -o <file>
|
|
11505
11522
|
makefx audio music regenerate <variant-ref> ["prompt"] [--model eleven-music|lyria-3] [--no-activate] [--wait]
|
|
11506
11523
|
makefx audio sfx generate "prompt" --name <name> -o <file>
|