@picsart/ai-sdk 6.6.0 → 6.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/index.d.ts +78 -0
- package/index.js +281 -128
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -191,20 +191,47 @@ type ModelInputById = {
|
|
|
191
191
|
audioUrl: string;
|
|
192
192
|
voiceId?: string;
|
|
193
193
|
removeBackgroundNoise?: boolean;
|
|
194
|
+
stability?: number;
|
|
195
|
+
similarityBoost?: number;
|
|
196
|
+
styleExaggeration?: number;
|
|
197
|
+
speed?: number;
|
|
194
198
|
};
|
|
195
199
|
"eleven-multilingual-v2": {
|
|
196
200
|
prompt: string;
|
|
197
201
|
voiceId?: string;
|
|
202
|
+
stability?: number;
|
|
203
|
+
similarityBoost?: number;
|
|
204
|
+
styleExaggeration?: number;
|
|
205
|
+
speed?: number;
|
|
206
|
+
useSpeakerBoost?: boolean;
|
|
198
207
|
};
|
|
199
208
|
"eleven-sts-v2": {
|
|
200
209
|
audioUrl: string;
|
|
201
210
|
voiceId?: string;
|
|
202
211
|
removeBackgroundNoise?: boolean;
|
|
212
|
+
stability?: number;
|
|
213
|
+
similarityBoost?: number;
|
|
214
|
+
styleExaggeration?: number;
|
|
215
|
+
speed?: number;
|
|
216
|
+
};
|
|
217
|
+
"eleven-text-to-dialogue": {
|
|
218
|
+
dialogue: Array<{
|
|
219
|
+
voiceId: string;
|
|
220
|
+
text: string;
|
|
221
|
+
}>;
|
|
222
|
+
stability?: 0 | 0.5 | 1;
|
|
223
|
+
language?: string;
|
|
224
|
+
seed?: number;
|
|
203
225
|
};
|
|
204
226
|
"eleven-v3": {
|
|
205
227
|
language?: string;
|
|
206
228
|
prompt: string;
|
|
207
229
|
voiceId?: string;
|
|
230
|
+
stability?: number;
|
|
231
|
+
similarityBoost?: number;
|
|
232
|
+
styleExaggeration?: number;
|
|
233
|
+
speed?: number;
|
|
234
|
+
useSpeakerBoost?: boolean;
|
|
208
235
|
};
|
|
209
236
|
"eleven-voice-create": {
|
|
210
237
|
prompt: string;
|
|
@@ -2042,6 +2069,21 @@ interface FileDescriptor {
|
|
|
2042
2069
|
* worker stays the authoritative gate. Omit for no client-side cap.
|
|
2043
2070
|
*/
|
|
2044
2071
|
maxDurationSec?: number;
|
|
2072
|
+
/**
|
|
2073
|
+
* Min intrinsic duration (seconds) accepted for a video/audio file. Unlike
|
|
2074
|
+
* every other bound here this one has no remedy: a clip that is too short
|
|
2075
|
+
* cannot be lengthened, so the client's only honest move is to refuse the
|
|
2076
|
+
* attachment and say why. Enforced client-side at upload by measuring the
|
|
2077
|
+
* media before it is sent; the backend worker stays the authoritative gate.
|
|
2078
|
+
* Omit for no client-side floor.
|
|
2079
|
+
*/
|
|
2080
|
+
minDurationSec?: number;
|
|
2081
|
+
/**
|
|
2082
|
+
* Max intrinsic frame rate (fps) accepted for a video file. Enforced
|
|
2083
|
+
* client-side at upload by measuring the media before it is sent; the backend
|
|
2084
|
+
* worker stays the authoritative gate. Omit for no client-side cap.
|
|
2085
|
+
*/
|
|
2086
|
+
maxFrameRate?: number;
|
|
2045
2087
|
/**
|
|
2046
2088
|
* Min intrinsic pixel count (width × height) accepted for an image/video file.
|
|
2047
2089
|
* Enforced client-side at upload by measuring the media before it is sent; the
|
|
@@ -2057,6 +2099,41 @@ interface FileDescriptor {
|
|
|
2057
2099
|
* authoritative gate. Omit for no client-side floor.
|
|
2058
2100
|
*/
|
|
2059
2101
|
minSidePixels?: number;
|
|
2102
|
+
/**
|
|
2103
|
+
* Max intrinsic pixel count (width × height) accepted for an image/video
|
|
2104
|
+
* file. The ceiling matching `minPixels`, and a separate rule from
|
|
2105
|
+
* `maxSidePixels`: a 12000×2000 frame passes a 36 MP area cap and still
|
|
2106
|
+
* breaks a 6000 px per-side one. Enforced client-side at upload by measuring
|
|
2107
|
+
* the media before it is sent; the backend worker stays the authoritative
|
|
2108
|
+
* gate. Omit for no client-side ceiling.
|
|
2109
|
+
*/
|
|
2110
|
+
maxPixels?: number;
|
|
2111
|
+
/**
|
|
2112
|
+
* Max intrinsic long-side length (pixels) accepted for an image/video file:
|
|
2113
|
+
* `max(width, height)` must not exceed this. The ceiling matching
|
|
2114
|
+
* `minSidePixels`, so the pair expresses the shape vendors usually publish
|
|
2115
|
+
* ("width and height must each be between 300 and 6000 px"). Distinct from
|
|
2116
|
+
* `maxShortSidePixels`, which bounds the OTHER side and exists for upscaler
|
|
2117
|
+
* sources. Enforced client-side at upload by measuring the media before it is
|
|
2118
|
+
* sent; the backend worker stays the authoritative gate. Omit for no
|
|
2119
|
+
* client-side ceiling.
|
|
2120
|
+
*/
|
|
2121
|
+
maxSidePixels?: number;
|
|
2122
|
+
/**
|
|
2123
|
+
* Min intrinsic aspect ratio (width / height) accepted for an image/video
|
|
2124
|
+
* file. Vendors publish this as the bound a panorama or a tall crop breaks,
|
|
2125
|
+
* and it is not derivable from the pixel and side bounds: a 6000x1200 frame
|
|
2126
|
+
* satisfies a [300, 6000] per-side rule and a 36 MP area rule and is still
|
|
2127
|
+
* refused at 5.0. Enforced client-side at upload by measuring the media
|
|
2128
|
+
* before it is sent; the backend worker stays the authoritative gate. Omit
|
|
2129
|
+
* for no client-side floor.
|
|
2130
|
+
*/
|
|
2131
|
+
minAspectRatio?: number;
|
|
2132
|
+
/**
|
|
2133
|
+
* Max intrinsic aspect ratio (width / height) accepted for an image/video
|
|
2134
|
+
* file. The ceiling matching `minAspectRatio`.
|
|
2135
|
+
*/
|
|
2136
|
+
maxAspectRatio?: number;
|
|
2060
2137
|
/**
|
|
2061
2138
|
* Max intrinsic short-side length (pixels) accepted for an image/video file —
|
|
2062
2139
|
* `min(width, height)` must not exceed this. Used by upscalers whose source
|
|
@@ -2927,6 +3004,7 @@ declare const Models: {
|
|
|
2927
3004
|
readonly ElevenMultilingualStsV2: "eleven-multilingual-sts-v2";
|
|
2928
3005
|
readonly ElevenMultilingualV2: "eleven-multilingual-v2";
|
|
2929
3006
|
readonly ElevenStsV2: "eleven-sts-v2";
|
|
3007
|
+
readonly ElevenTextToDialogue: "eleven-text-to-dialogue";
|
|
2930
3008
|
readonly ElevenV3: "eleven-v3";
|
|
2931
3009
|
readonly ElevenVoiceCreate: "eleven-voice-create";
|
|
2932
3010
|
readonly ElevenVoiceDesignV2: "eleven-voice-design-v2";
|
package/index.js
CHANGED
|
@@ -927,8 +927,14 @@ var p = {
|
|
|
927
927
|
accept,
|
|
928
928
|
...opts?.array ? { array: opts.array } : {},
|
|
929
929
|
...opts?.maxDurationSec != null ? { maxDurationSec: opts.maxDurationSec } : {},
|
|
930
|
+
...opts?.minDurationSec != null ? { minDurationSec: opts.minDurationSec } : {},
|
|
931
|
+
...opts?.maxFrameRate != null ? { maxFrameRate: opts.maxFrameRate } : {},
|
|
930
932
|
...opts?.minPixels != null ? { minPixels: opts.minPixels } : {},
|
|
933
|
+
...opts?.maxPixels != null ? { maxPixels: opts.maxPixels } : {},
|
|
931
934
|
...opts?.minSidePixels != null ? { minSidePixels: opts.minSidePixels } : {},
|
|
935
|
+
...opts?.maxSidePixels != null ? { maxSidePixels: opts.maxSidePixels } : {},
|
|
936
|
+
...opts?.minAspectRatio != null ? { minAspectRatio: opts.minAspectRatio } : {},
|
|
937
|
+
...opts?.maxAspectRatio != null ? { maxAspectRatio: opts.maxAspectRatio } : {},
|
|
932
938
|
...opts?.maxShortSidePixels != null ? { maxShortSidePixels: opts.maxShortSidePixels } : {},
|
|
933
939
|
...opts?.maxBytes != null ? { maxBytes: opts.maxBytes } : {}
|
|
934
940
|
}
|
|
@@ -1162,50 +1168,37 @@ var params = {
|
|
|
1162
1168
|
// `category` defaults to the most common role for the slot (overridable per call):
|
|
1163
1169
|
// asset → start/end frame, sync audio (direct inputs to the output)
|
|
1164
1170
|
// reference → ref images/videos/audios (guidance signals)
|
|
1165
|
-
/** Array of image inputs (writes to `imageUrls`).
|
|
1166
|
-
|
|
1167
|
-
* rule stated as a total pixel count, `minSidePixels` for one stated per
|
|
1168
|
-
* side (width and height each), which is what most vendors publish. */
|
|
1169
|
-
imageInput: (max = 1, label = "Start Image", required = false, category = "reference", bounds) => p.file("imageUrls", "image", {
|
|
1170
|
-
array: { max },
|
|
1171
|
-
label,
|
|
1172
|
-
required,
|
|
1173
|
-
category,
|
|
1174
|
-
...bounds?.minPixels != null ? { minPixels: bounds.minPixels } : {},
|
|
1175
|
-
...bounds?.minSidePixels != null ? { minSidePixels: bounds.minSidePixels } : {}
|
|
1176
|
-
}),
|
|
1171
|
+
/** Array of image inputs (writes to `imageUrls`). */
|
|
1172
|
+
imageInput: (max = 1, label = "Start Image", required = false, category = "reference", bounds) => p.file("imageUrls", "image", { array: { max }, label, required, category, ...bounds }),
|
|
1177
1173
|
/** Single source-video slot (v2v / video edit). Writes to `videoUrl`.
|
|
1178
|
-
* `
|
|
1179
|
-
*
|
|
1180
|
-
|
|
1181
|
-
videoInput: (label = "Source Video", category = "reference", required = true, maxDurationSec, maxShortSidePixels, maxBytes) => p.file("videoUrl", "video", {
|
|
1174
|
+
* The four positional limits predate `bounds` and are kept so the dozens of
|
|
1175
|
+
* existing call sites do not churn; new limits go in `bounds`. */
|
|
1176
|
+
videoInput: (label = "Source Video", category = "reference", required = true, maxDurationSec, maxShortSidePixels, maxBytes, bounds) => p.file("videoUrl", "video", {
|
|
1182
1177
|
label,
|
|
1183
1178
|
required,
|
|
1184
1179
|
category,
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1180
|
+
maxDurationSec,
|
|
1181
|
+
maxShortSidePixels,
|
|
1182
|
+
maxBytes,
|
|
1183
|
+
...bounds
|
|
1188
1184
|
}),
|
|
1189
1185
|
/** Single driving / sync-audio slot. Writes to `audioUrl`. */
|
|
1190
1186
|
audioInput: (label = "Audio Track", required = false, category = "asset") => p.file("audioUrl", "audio", { label, required, category }),
|
|
1191
|
-
/** Array of reference videos (writes to `videoUrls`).
|
|
1192
|
-
*
|
|
1193
|
-
*
|
|
1194
|
-
*
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
}),
|
|
1204
|
-
/**
|
|
1205
|
-
|
|
1206
|
-
audioInputs: (max = 3, label = "Reference Audios", required = false) => p.file("audioUrls", "audio", { array: { max }, label, required, category: "reference" }),
|
|
1207
|
-
startFrame: (label = "Start Frame", required = false) => p.file("startFrame", "image", { label, required, category: "asset" }),
|
|
1208
|
-
endFrame: (label = "End Frame") => p.file("endFrame", "image", { label, category: "asset" })
|
|
1187
|
+
/** Array of reference videos (writes to `videoUrls`). `bounds` is checked per
|
|
1188
|
+
* clip. The backend also caps the COMBINED length of the array per model,
|
|
1189
|
+
* which no descriptor field expresses yet; declaring the per-clip bounds
|
|
1190
|
+
* still turns the common single-clip case into a trim prompt in the composer
|
|
1191
|
+
* instead of a vendor `400` after the user pressed Generate. */
|
|
1192
|
+
videoInputs: (max = 3, label = "Reference Videos", required = false, bounds) => p.file("videoUrls", "video", { array: { max }, label, required, category: "reference", ...bounds }),
|
|
1193
|
+
/** Array of reference audios (writes to `audioUrls`). `bounds` is checked per
|
|
1194
|
+
* clip; as with `videoInputs` the backend also caps the combined length. */
|
|
1195
|
+
audioInputs: (max = 3, label = "Reference Audios", required = false, bounds) => p.file("audioUrls", "audio", { array: { max }, label, required, category: "reference", ...bounds }),
|
|
1196
|
+
/** First-frame slot (writes to `startFrame`). Vendors routinely publish a
|
|
1197
|
+
* DIFFERENT pixel floor for a frame than for a reference image, because a
|
|
1198
|
+
* frame becomes the output's first rendered frame. */
|
|
1199
|
+
startFrame: (label = "Start Frame", required = false, bounds) => p.file("startFrame", "image", { label, required, category: "asset", ...bounds }),
|
|
1200
|
+
/** Last-frame slot (writes to `endFrame`). Same `bounds` as `startFrame`. */
|
|
1201
|
+
endFrame: (label = "End Frame", bounds) => p.file("endFrame", "image", { label, category: "asset", ...bounds })
|
|
1209
1202
|
};
|
|
1210
1203
|
var paramPresets = {
|
|
1211
1204
|
videoStartEndWithAudio
|
|
@@ -3673,8 +3666,71 @@ registerPayloads(MODELS11, {
|
|
|
3673
3666
|
// src/vendors/catalog/seedance.ts
|
|
3674
3667
|
var SEEDANCE_FRAME_REF_REASON = "Start/End frames cannot be combined with reference images, videos, or audios";
|
|
3675
3668
|
var SEEDANCE_MIN_SIDE_PIXELS = 300;
|
|
3669
|
+
var SEEDANCE_MAX_SIDE_PIXELS = 6e3;
|
|
3670
|
+
var SEEDANCE_MIN_ASPECT_RATIO = 0.39;
|
|
3671
|
+
var SEEDANCE_MAX_ASPECT_RATIO = 2.5;
|
|
3672
|
+
var SEEDANCE_MAX_IMAGE_PIXELS = 36e6;
|
|
3676
3673
|
var SEEDANCE_VIDEO_MIN_PIXELS = 407696;
|
|
3677
|
-
var
|
|
3674
|
+
var SEEDANCE_VIDEO_MAX_PIXELS = 8295044;
|
|
3675
|
+
var SEEDANCE_MIN_MEDIA_SEC = 1.8;
|
|
3676
|
+
var SEEDANCE_MAX_FRAME_RATE = 60;
|
|
3677
|
+
var SEEDANCE_MAX_VIDEO_BYTES = 209715200;
|
|
3678
|
+
var SEEDANCE_FRAME_MIN_PIXELS = 9e4;
|
|
3679
|
+
var SEEDANCE_MAX_IMAGE_BYTES = 31457280;
|
|
3680
|
+
var SEEDANCE_MAX_AUDIO_BYTES = 15728640;
|
|
3681
|
+
var SEEDANCE_25_MAX_MEDIA_SEC = 30;
|
|
3682
|
+
var SEEDANCE_20_MAX_MEDIA_SEC = 15;
|
|
3683
|
+
var SEEDANCE_IMAGE_BOUNDS = {
|
|
3684
|
+
minAspectRatio: SEEDANCE_MIN_ASPECT_RATIO,
|
|
3685
|
+
maxAspectRatio: SEEDANCE_MAX_ASPECT_RATIO,
|
|
3686
|
+
minSidePixels: SEEDANCE_MIN_SIDE_PIXELS,
|
|
3687
|
+
maxSidePixels: SEEDANCE_MAX_SIDE_PIXELS,
|
|
3688
|
+
maxPixels: SEEDANCE_MAX_IMAGE_PIXELS,
|
|
3689
|
+
maxBytes: SEEDANCE_MAX_IMAGE_BYTES
|
|
3690
|
+
};
|
|
3691
|
+
var SEEDANCE_FRAME_BOUNDS = {
|
|
3692
|
+
minAspectRatio: SEEDANCE_MIN_ASPECT_RATIO,
|
|
3693
|
+
maxAspectRatio: SEEDANCE_MAX_ASPECT_RATIO,
|
|
3694
|
+
minPixels: SEEDANCE_FRAME_MIN_PIXELS,
|
|
3695
|
+
maxPixels: SEEDANCE_MAX_IMAGE_PIXELS,
|
|
3696
|
+
minSidePixels: SEEDANCE_MIN_SIDE_PIXELS,
|
|
3697
|
+
maxSidePixels: SEEDANCE_MAX_SIDE_PIXELS,
|
|
3698
|
+
maxBytes: SEEDANCE_MAX_IMAGE_BYTES
|
|
3699
|
+
};
|
|
3700
|
+
var SEEDANCE_25_VIDEO_BOUNDS = {
|
|
3701
|
+
minAspectRatio: SEEDANCE_MIN_ASPECT_RATIO,
|
|
3702
|
+
maxAspectRatio: SEEDANCE_MAX_ASPECT_RATIO,
|
|
3703
|
+
minPixels: SEEDANCE_VIDEO_MIN_PIXELS,
|
|
3704
|
+
maxPixels: SEEDANCE_VIDEO_MAX_PIXELS,
|
|
3705
|
+
minSidePixels: SEEDANCE_MIN_SIDE_PIXELS,
|
|
3706
|
+
maxSidePixels: SEEDANCE_MAX_SIDE_PIXELS,
|
|
3707
|
+
maxBytes: SEEDANCE_MAX_VIDEO_BYTES,
|
|
3708
|
+
minDurationSec: SEEDANCE_MIN_MEDIA_SEC,
|
|
3709
|
+
maxDurationSec: SEEDANCE_25_MAX_MEDIA_SEC,
|
|
3710
|
+
maxFrameRate: SEEDANCE_MAX_FRAME_RATE
|
|
3711
|
+
};
|
|
3712
|
+
var SEEDANCE_20_VIDEO_BOUNDS = {
|
|
3713
|
+
minAspectRatio: SEEDANCE_MIN_ASPECT_RATIO,
|
|
3714
|
+
maxAspectRatio: SEEDANCE_MAX_ASPECT_RATIO,
|
|
3715
|
+
minPixels: SEEDANCE_VIDEO_MIN_PIXELS,
|
|
3716
|
+
maxPixels: SEEDANCE_VIDEO_MAX_PIXELS,
|
|
3717
|
+
minSidePixels: SEEDANCE_MIN_SIDE_PIXELS,
|
|
3718
|
+
maxSidePixels: SEEDANCE_MAX_SIDE_PIXELS,
|
|
3719
|
+
maxBytes: SEEDANCE_MAX_VIDEO_BYTES,
|
|
3720
|
+
minDurationSec: SEEDANCE_MIN_MEDIA_SEC,
|
|
3721
|
+
maxDurationSec: SEEDANCE_20_MAX_MEDIA_SEC,
|
|
3722
|
+
maxFrameRate: SEEDANCE_MAX_FRAME_RATE
|
|
3723
|
+
};
|
|
3724
|
+
var SEEDANCE_25_AUDIO_BOUNDS = {
|
|
3725
|
+
minDurationSec: SEEDANCE_MIN_MEDIA_SEC,
|
|
3726
|
+
maxDurationSec: SEEDANCE_25_MAX_MEDIA_SEC,
|
|
3727
|
+
maxBytes: SEEDANCE_MAX_AUDIO_BYTES
|
|
3728
|
+
};
|
|
3729
|
+
var SEEDANCE_20_AUDIO_BOUNDS = {
|
|
3730
|
+
minDurationSec: SEEDANCE_MIN_MEDIA_SEC,
|
|
3731
|
+
maxDurationSec: SEEDANCE_20_MAX_MEDIA_SEC,
|
|
3732
|
+
maxBytes: SEEDANCE_MAX_AUDIO_BYTES
|
|
3733
|
+
};
|
|
3678
3734
|
var seedance20Constraints = [
|
|
3679
3735
|
{
|
|
3680
3736
|
when: {
|
|
@@ -3944,15 +4000,11 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
3944
4000
|
...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
|
|
3945
4001
|
...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
|
|
3946
4002
|
// 2.5 lifts the reference caps to 30 images / 10 videos / 10 audios.
|
|
3947
|
-
...params.imageInput(30, "Reference Images", false, "reference",
|
|
3948
|
-
...params.videoInputs(10, "Reference Videos", false,
|
|
3949
|
-
|
|
3950
|
-
|
|
3951
|
-
|
|
3952
|
-
}),
|
|
3953
|
-
...params.audioInputs(10, "Reference Audios"),
|
|
3954
|
-
...params.startFrame(),
|
|
3955
|
-
...params.endFrame()
|
|
4003
|
+
...params.imageInput(30, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
|
|
4004
|
+
...params.videoInputs(10, "Reference Videos", false, SEEDANCE_25_VIDEO_BOUNDS),
|
|
4005
|
+
...params.audioInputs(10, "Reference Audios", false, SEEDANCE_25_AUDIO_BOUNDS),
|
|
4006
|
+
...params.startFrame("Start Frame", false, SEEDANCE_FRAME_BOUNDS),
|
|
4007
|
+
...params.endFrame("End Frame", SEEDANCE_FRAME_BOUNDS)
|
|
3956
4008
|
}
|
|
3957
4009
|
},
|
|
3958
4010
|
{
|
|
@@ -3983,15 +4035,11 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
3983
4035
|
...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
|
|
3984
4036
|
...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
|
|
3985
4037
|
// 2.5 lifts the reference caps to 30 images / 10 videos / 10 audios.
|
|
3986
|
-
...params.imageInput(30, "Reference Images", false, "reference",
|
|
3987
|
-
...params.videoInputs(10, "Reference Videos", false,
|
|
3988
|
-
|
|
3989
|
-
|
|
3990
|
-
|
|
3991
|
-
}),
|
|
3992
|
-
...params.audioInputs(10, "Reference Audios"),
|
|
3993
|
-
...params.startFrame(),
|
|
3994
|
-
...params.endFrame()
|
|
4038
|
+
...params.imageInput(30, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
|
|
4039
|
+
...params.videoInputs(10, "Reference Videos", false, SEEDANCE_25_VIDEO_BOUNDS),
|
|
4040
|
+
...params.audioInputs(10, "Reference Audios", false, SEEDANCE_25_AUDIO_BOUNDS),
|
|
4041
|
+
...params.startFrame("Start Frame", false, SEEDANCE_FRAME_BOUNDS),
|
|
4042
|
+
...params.endFrame("End Frame", SEEDANCE_FRAME_BOUNDS)
|
|
3995
4043
|
}
|
|
3996
4044
|
},
|
|
3997
4045
|
{
|
|
@@ -4018,8 +4066,10 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4018
4066
|
...params.returnLastFrame(),
|
|
4019
4067
|
...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
|
|
4020
4068
|
...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
|
|
4021
|
-
|
|
4022
|
-
|
|
4069
|
+
// Every limit rides in `bounds`; the positional maxDuration / maxShortSide
|
|
4070
|
+
// / maxBytes args predate it and are skipped rather than duplicated.
|
|
4071
|
+
...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_25_VIDEO_BOUNDS),
|
|
4072
|
+
...params.imageInput(30, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS)
|
|
4023
4073
|
}
|
|
4024
4074
|
},
|
|
4025
4075
|
{
|
|
@@ -4047,8 +4097,10 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4047
4097
|
...params.returnLastFrame(),
|
|
4048
4098
|
...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
|
|
4049
4099
|
...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
|
|
4050
|
-
|
|
4051
|
-
|
|
4100
|
+
// Every limit rides in `bounds`; the positional maxDuration / maxShortSide
|
|
4101
|
+
// / maxBytes args predate it and are skipped rather than duplicated.
|
|
4102
|
+
...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_25_VIDEO_BOUNDS),
|
|
4103
|
+
...params.imageInput(30, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS)
|
|
4052
4104
|
}
|
|
4053
4105
|
},
|
|
4054
4106
|
{
|
|
@@ -4075,7 +4127,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4075
4127
|
...params.generateAudio(),
|
|
4076
4128
|
...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
|
|
4077
4129
|
...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
|
|
4078
|
-
...params.videoInputs(10, "Source Videos", true,
|
|
4130
|
+
...params.videoInputs(10, "Source Videos", true, SEEDANCE_25_VIDEO_BOUNDS)
|
|
4079
4131
|
}
|
|
4080
4132
|
},
|
|
4081
4133
|
{
|
|
@@ -4103,7 +4155,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4103
4155
|
...params.generateAudio(),
|
|
4104
4156
|
...p.enum("outputFormat", SEEDANCE_25_FORMATS, "mp4", { label: "Format" }),
|
|
4105
4157
|
...p.enum("colorDepth", SEEDANCE_25_COLOR_DEPTHS, "10bit", { label: "Color Depth" }),
|
|
4106
|
-
...params.videoInputs(10, "Source Videos", true,
|
|
4158
|
+
...params.videoInputs(10, "Source Videos", true, SEEDANCE_25_VIDEO_BOUNDS)
|
|
4107
4159
|
}
|
|
4108
4160
|
},
|
|
4109
4161
|
{
|
|
@@ -4129,14 +4181,11 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4129
4181
|
...params.returnLastFrame(),
|
|
4130
4182
|
// Reference roles map directly to backend `reference_*` content entries.
|
|
4131
4183
|
// start/end frame stay on their own named slots.
|
|
4132
|
-
...params.imageInput(9, "Reference Images", false, "reference",
|
|
4133
|
-
...params.videoInputs(3, "Reference Videos", false,
|
|
4134
|
-
|
|
4135
|
-
|
|
4136
|
-
|
|
4137
|
-
...params.audioInputs(3, "Reference Audios"),
|
|
4138
|
-
...params.startFrame(),
|
|
4139
|
-
...params.endFrame()
|
|
4184
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
|
|
4185
|
+
...params.videoInputs(3, "Reference Videos", false, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4186
|
+
...params.audioInputs(3, "Reference Audios", false, SEEDANCE_20_AUDIO_BOUNDS),
|
|
4187
|
+
...params.startFrame("Start Frame", false, SEEDANCE_FRAME_BOUNDS),
|
|
4188
|
+
...params.endFrame("End Frame", SEEDANCE_FRAME_BOUNDS)
|
|
4140
4189
|
}
|
|
4141
4190
|
},
|
|
4142
4191
|
{
|
|
@@ -4166,14 +4215,11 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4166
4215
|
...params.returnLastFrame(),
|
|
4167
4216
|
// Reference roles map directly to backend `reference_*` content entries.
|
|
4168
4217
|
// start/end frame stay on their own named slots.
|
|
4169
|
-
...params.imageInput(9, "Reference Images", false, "reference",
|
|
4170
|
-
...params.videoInputs(3, "Reference Videos", false,
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
...params.audioInputs(3, "Reference Audios"),
|
|
4175
|
-
...params.startFrame(),
|
|
4176
|
-
...params.endFrame()
|
|
4218
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
|
|
4219
|
+
...params.videoInputs(3, "Reference Videos", false, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4220
|
+
...params.audioInputs(3, "Reference Audios", false, SEEDANCE_20_AUDIO_BOUNDS),
|
|
4221
|
+
...params.startFrame("Start Frame", false, SEEDANCE_FRAME_BOUNDS),
|
|
4222
|
+
...params.endFrame("End Frame", SEEDANCE_FRAME_BOUNDS)
|
|
4177
4223
|
}
|
|
4178
4224
|
},
|
|
4179
4225
|
{
|
|
@@ -4199,14 +4245,11 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4199
4245
|
...params.returnLastFrame(),
|
|
4200
4246
|
// Reference roles map directly to backend `reference_*` content entries.
|
|
4201
4247
|
// start/end frame stay on their own named slots.
|
|
4202
|
-
...params.imageInput(9, "Reference Images", false, "reference",
|
|
4203
|
-
...params.videoInputs(3, "Reference Videos", false,
|
|
4204
|
-
|
|
4205
|
-
|
|
4206
|
-
|
|
4207
|
-
...params.audioInputs(3, "Reference Audios"),
|
|
4208
|
-
...params.startFrame(),
|
|
4209
|
-
...params.endFrame()
|
|
4248
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
|
|
4249
|
+
...params.videoInputs(3, "Reference Videos", false, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4250
|
+
...params.audioInputs(3, "Reference Audios", false, SEEDANCE_20_AUDIO_BOUNDS),
|
|
4251
|
+
...params.startFrame("Start Frame", false, SEEDANCE_FRAME_BOUNDS),
|
|
4252
|
+
...params.endFrame("End Frame", SEEDANCE_FRAME_BOUNDS)
|
|
4210
4253
|
}
|
|
4211
4254
|
},
|
|
4212
4255
|
{
|
|
@@ -4232,14 +4275,11 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4232
4275
|
...params.returnLastFrame(),
|
|
4233
4276
|
// Reference roles map directly to backend `reference_*` content entries.
|
|
4234
4277
|
// start/end frame stay on their own named slots.
|
|
4235
|
-
...params.imageInput(9, "Reference Images", false, "reference",
|
|
4236
|
-
...params.videoInputs(3, "Reference Videos", false,
|
|
4237
|
-
|
|
4238
|
-
|
|
4239
|
-
|
|
4240
|
-
...params.audioInputs(3, "Reference Audios"),
|
|
4241
|
-
...params.startFrame(),
|
|
4242
|
-
...params.endFrame()
|
|
4278
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS),
|
|
4279
|
+
...params.videoInputs(3, "Reference Videos", false, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4280
|
+
...params.audioInputs(3, "Reference Audios", false, SEEDANCE_20_AUDIO_BOUNDS),
|
|
4281
|
+
...params.startFrame("Start Frame", false, SEEDANCE_FRAME_BOUNDS),
|
|
4282
|
+
...params.endFrame("End Frame", SEEDANCE_FRAME_BOUNDS)
|
|
4243
4283
|
}
|
|
4244
4284
|
},
|
|
4245
4285
|
{
|
|
@@ -4262,8 +4302,10 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4262
4302
|
...params.duration(SEEDANCE_V2_DURATIONS, 5),
|
|
4263
4303
|
...params.generateAudio(),
|
|
4264
4304
|
...params.returnLastFrame(),
|
|
4265
|
-
|
|
4266
|
-
|
|
4305
|
+
// Every limit rides in `bounds`; the positional maxDuration / maxShortSide
|
|
4306
|
+
// / maxBytes args predate it and are skipped rather than duplicated.
|
|
4307
|
+
...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4308
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS)
|
|
4267
4309
|
}
|
|
4268
4310
|
},
|
|
4269
4311
|
{
|
|
@@ -4287,8 +4329,10 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4287
4329
|
...params.duration(SEEDANCE_V2_DURATIONS, 5),
|
|
4288
4330
|
...params.generateAudio(),
|
|
4289
4331
|
...params.returnLastFrame(),
|
|
4290
|
-
|
|
4291
|
-
|
|
4332
|
+
// Every limit rides in `bounds`; the positional maxDuration / maxShortSide
|
|
4333
|
+
// / maxBytes args predate it and are skipped rather than duplicated.
|
|
4334
|
+
...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4335
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS)
|
|
4292
4336
|
}
|
|
4293
4337
|
},
|
|
4294
4338
|
{
|
|
@@ -4311,8 +4355,10 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4311
4355
|
...params.duration(SEEDANCE_V2_DURATIONS, 5),
|
|
4312
4356
|
...params.generateAudio(),
|
|
4313
4357
|
...params.returnLastFrame(),
|
|
4314
|
-
|
|
4315
|
-
|
|
4358
|
+
// Every limit rides in `bounds`; the positional maxDuration / maxShortSide
|
|
4359
|
+
// / maxBytes args predate it and are skipped rather than duplicated.
|
|
4360
|
+
...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4361
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS)
|
|
4316
4362
|
}
|
|
4317
4363
|
},
|
|
4318
4364
|
{
|
|
@@ -4335,8 +4381,10 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4335
4381
|
...params.duration(SEEDANCE_V2_DURATIONS, 5),
|
|
4336
4382
|
...params.generateAudio(),
|
|
4337
4383
|
...params.returnLastFrame(),
|
|
4338
|
-
|
|
4339
|
-
|
|
4384
|
+
// Every limit rides in `bounds`; the positional maxDuration / maxShortSide
|
|
4385
|
+
// / maxBytes args predate it and are skipped rather than duplicated.
|
|
4386
|
+
...params.videoInput("Source Video", "reference", true, void 0, void 0, void 0, SEEDANCE_20_VIDEO_BOUNDS),
|
|
4387
|
+
...params.imageInput(9, "Reference Images", false, "reference", SEEDANCE_IMAGE_BOUNDS)
|
|
4340
4388
|
}
|
|
4341
4389
|
},
|
|
4342
4390
|
{
|
|
@@ -4358,7 +4406,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4358
4406
|
...params.resolution(["480p", "720p", "1080p", "4k"], "720p"),
|
|
4359
4407
|
...params.duration(SEEDANCE_V2_DURATIONS, 15),
|
|
4360
4408
|
...params.generateAudio(),
|
|
4361
|
-
...params.videoInputs(3, "Source Videos", true)
|
|
4409
|
+
...params.videoInputs(3, "Source Videos", true, SEEDANCE_20_VIDEO_BOUNDS)
|
|
4362
4410
|
}
|
|
4363
4411
|
},
|
|
4364
4412
|
{
|
|
@@ -4381,7 +4429,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4381
4429
|
...params.resolution(["480p", "720p", "1080p", "4k"], "720p"),
|
|
4382
4430
|
...params.duration(SEEDANCE_V2_DURATIONS, 15),
|
|
4383
4431
|
...params.generateAudio(),
|
|
4384
|
-
...params.videoInputs(3, "Source Videos", true)
|
|
4432
|
+
...params.videoInputs(3, "Source Videos", true, SEEDANCE_20_VIDEO_BOUNDS)
|
|
4385
4433
|
}
|
|
4386
4434
|
},
|
|
4387
4435
|
{
|
|
@@ -4403,7 +4451,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4403
4451
|
...params.resolution(["480p", "720p"], "720p"),
|
|
4404
4452
|
...params.duration(SEEDANCE_V2_DURATIONS, 15),
|
|
4405
4453
|
...params.generateAudio(),
|
|
4406
|
-
...params.videoInputs(3, "Source Videos", true)
|
|
4454
|
+
...params.videoInputs(3, "Source Videos", true, SEEDANCE_20_VIDEO_BOUNDS)
|
|
4407
4455
|
}
|
|
4408
4456
|
},
|
|
4409
4457
|
{
|
|
@@ -4425,7 +4473,7 @@ var { MODELS: MODELS12 } = defineModels("seedance", [
|
|
|
4425
4473
|
...params.resolution(["480p", "720p"], "720p"),
|
|
4426
4474
|
...params.duration(SEEDANCE_V2_DURATIONS, 15),
|
|
4427
4475
|
...params.generateAudio(),
|
|
4428
|
-
...params.videoInputs(3, "Source Videos", true)
|
|
4476
|
+
...params.videoInputs(3, "Source Videos", true, SEEDANCE_20_VIDEO_BOUNDS)
|
|
4429
4477
|
}
|
|
4430
4478
|
},
|
|
4431
4479
|
{
|
|
@@ -6296,23 +6344,12 @@ registerEditPayloads(MODELS22, {
|
|
|
6296
6344
|
});
|
|
6297
6345
|
|
|
6298
6346
|
// src/vendors/catalog/elevenlabs.ts
|
|
6299
|
-
var
|
|
6300
|
-
text: ctx.prompt,
|
|
6301
|
-
voice_id: ctx.voiceId ?? DEFAULT_VOICE_ID,
|
|
6302
|
-
model_id: modelId,
|
|
6303
|
-
...ctx.language ? { language_code: ctx.language } : {}
|
|
6304
|
-
});
|
|
6347
|
+
var VOICE_CATALOG = { workflow: "elevenlabs/v1/catalog/voices" };
|
|
6305
6348
|
var buildElevenLabsSFXPayload = (modelId) => (ctx) => ({
|
|
6306
6349
|
text: ctx.prompt,
|
|
6307
6350
|
duration_seconds: ctx.duration ?? 5,
|
|
6308
6351
|
model_id: modelId
|
|
6309
6352
|
});
|
|
6310
|
-
var buildElevenLabsSTSPayload = (modelId) => (ctx) => ({
|
|
6311
|
-
audio_url: ctx.audioUrl,
|
|
6312
|
-
voice_id: ctx.voiceId ?? DEFAULT_VOICE_ID,
|
|
6313
|
-
model_id: modelId,
|
|
6314
|
-
remove_background_noise: ctx.removeBackgroundNoise ?? false
|
|
6315
|
-
});
|
|
6316
6353
|
var buildElevenLabsAudioIsolationPayload = (ctx) => ({
|
|
6317
6354
|
audio_url: ctx.audioUrl
|
|
6318
6355
|
});
|
|
@@ -6335,13 +6372,35 @@ var buildElevenLabsVoicePreviewsPayload = (ctx) => ({
|
|
|
6335
6372
|
voice_description: ctx.prompt,
|
|
6336
6373
|
auto_generate_text: true
|
|
6337
6374
|
});
|
|
6375
|
+
var voiceSettingsParams = (withSpeakerBoost) => ({
|
|
6376
|
+
stability: {
|
|
6377
|
+
label: "Stability",
|
|
6378
|
+
descriptor: { kind: "range", min: 0, max: 1, step: 0.05 }
|
|
6379
|
+
},
|
|
6380
|
+
similarityBoost: {
|
|
6381
|
+
label: "Similarity",
|
|
6382
|
+
descriptor: { kind: "range", min: 0, max: 1, step: 0.05 }
|
|
6383
|
+
},
|
|
6384
|
+
// `style` is taken on GenerationContext by the image models' style *name*,
|
|
6385
|
+
// so the vendor's 0–1 style exaggeration gets a key of its own.
|
|
6386
|
+
styleExaggeration: {
|
|
6387
|
+
label: "Style Exaggeration",
|
|
6388
|
+
descriptor: { kind: "range", min: 0, max: 1, step: 0.05 }
|
|
6389
|
+
},
|
|
6390
|
+
speed: {
|
|
6391
|
+
label: "Speed",
|
|
6392
|
+
descriptor: { kind: "range", min: 0.1, max: 5, step: 0.05 }
|
|
6393
|
+
},
|
|
6394
|
+
...withSpeakerBoost ? { useSpeakerBoost: { label: "Speaker Boost", descriptor: { kind: "boolean", default: true } } } : {}
|
|
6395
|
+
});
|
|
6338
6396
|
var ttsParamConfig = (promptMaxLength, withLanguage) => ({
|
|
6339
6397
|
// language_code is honoured by eleven_v3 only — the vendor documents it as
|
|
6340
6398
|
// "not supported for multilingual_v2 models" (silently ignored there).
|
|
6341
6399
|
// No accent param anywhere: no builder ever read it.
|
|
6342
6400
|
...withLanguage ? params.language(false) : {},
|
|
6343
6401
|
...params.prompt({ maxLength: promptMaxLength }),
|
|
6344
|
-
...params.voiceId([], DEFAULT_VOICE_ID, { catalog:
|
|
6402
|
+
...params.voiceId([], DEFAULT_VOICE_ID, { catalog: VOICE_CATALOG }),
|
|
6403
|
+
...voiceSettingsParams(true)
|
|
6345
6404
|
});
|
|
6346
6405
|
var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
6347
6406
|
// ── TTS ───────────────────────────────────────────────────────────
|
|
@@ -6351,7 +6410,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6351
6410
|
modelId: "eleven_v3",
|
|
6352
6411
|
addedAt: "2026-02-06",
|
|
6353
6412
|
workflow: "elevenlabs/v1/text-to-speech",
|
|
6354
|
-
buildPayload: buildElevenLabsTTSPayload("eleven_v3"),
|
|
6355
6413
|
estimatedTime: 11,
|
|
6356
6414
|
mode: "audio",
|
|
6357
6415
|
inputType: "tts",
|
|
@@ -6366,7 +6424,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6366
6424
|
modelId: "eleven_multilingual_v2",
|
|
6367
6425
|
addedAt: "2026-02-06",
|
|
6368
6426
|
workflow: "elevenlabs/v1/text-to-speech",
|
|
6369
|
-
buildPayload: buildElevenLabsTTSPayload("eleven_multilingual_v2"),
|
|
6370
6427
|
estimatedTime: 9,
|
|
6371
6428
|
mode: "audio",
|
|
6372
6429
|
inputType: "tts",
|
|
@@ -6375,6 +6432,61 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6375
6432
|
features: [feat("Stable", "characteristic"), feat("Professional", "characteristic")],
|
|
6376
6433
|
paramConfig: ttsParamConfig(1e4, false)
|
|
6377
6434
|
},
|
|
6435
|
+
// ── Dialogue ──────────────────────────────────────────────────────
|
|
6436
|
+
{
|
|
6437
|
+
// `modelId` is the pricing-catalog key, not the vendor id: the worker
|
|
6438
|
+
// registers the operation as `eleven-text-to-dialogue` while the vendor
|
|
6439
|
+
// model behind it is plain `eleven_v3`.
|
|
6440
|
+
id: "eleven-text-to-dialogue",
|
|
6441
|
+
name: "Eleven Dialogue v3",
|
|
6442
|
+
modelId: "eleven-text-to-dialogue",
|
|
6443
|
+
addedAt: "2026-09-22",
|
|
6444
|
+
workflow: "elevenlabs/v1/text-to-dialogue",
|
|
6445
|
+
estimatedTime: 12,
|
|
6446
|
+
mode: "audio",
|
|
6447
|
+
inputType: "tts",
|
|
6448
|
+
description: "Generate a multi-speaker conversation \u2014 a voice per line \u2014 in one take.",
|
|
6449
|
+
features: [feat("Multi-Speaker", "characteristic"), feat("Creative Control", "characteristic")],
|
|
6450
|
+
paramConfig: {
|
|
6451
|
+
// One entry per spoken line, in order. The vendor publishes no cap on the
|
|
6452
|
+
// number of lines, so none is invented here.
|
|
6453
|
+
//
|
|
6454
|
+
// The 5,000-character limit is the vendor's hard cap and applies to the
|
|
6455
|
+
// dialogue AS A WHOLE, which a per-field maxLength cannot express — a
|
|
6456
|
+
// single line simply cannot exceed it either. Probed against the live
|
|
6457
|
+
// `elevenlabs/v1/text-to-dialogue` worker: 10,000 characters are refused
|
|
6458
|
+
// with "Request text length (10000) exceeds the maximum text length of
|
|
6459
|
+
// 5000 characters", while 2,600 generate fine. The docs' "keep it at or
|
|
6460
|
+
// below 2,000" is guidance, not a limit. Note the far end is slow: a
|
|
6461
|
+
// 5,000-character dialogue outruns the worker's 120s vendor timeout.
|
|
6462
|
+
dialogue: {
|
|
6463
|
+
label: "Dialogue",
|
|
6464
|
+
required: true,
|
|
6465
|
+
descriptor: {
|
|
6466
|
+
kind: "object",
|
|
6467
|
+
array: { min: 1 },
|
|
6468
|
+
fields: {
|
|
6469
|
+
// A plain id, not a catalog-bound picker: catalog loading resolves
|
|
6470
|
+
// top-level params only. Every ElevenLabs model shares one voices
|
|
6471
|
+
// task, so a caller lists them from any TTS model — e.g.
|
|
6472
|
+
// `ai.catalogs.voices('eleven-v3')` — and uses the ids here.
|
|
6473
|
+
voiceId: { label: "Voice ID", kind: "text", placeholder: DEFAULT_VOICE_ID },
|
|
6474
|
+
text: { label: "Line", kind: "text", maxLength: 5e3 }
|
|
6475
|
+
}
|
|
6476
|
+
}
|
|
6477
|
+
},
|
|
6478
|
+
// The vendor takes any 0–1 double and defaults to 0.5; eleven_v3 reads the
|
|
6479
|
+
// three presets below, so the picker offers those instead of a slider
|
|
6480
|
+
// whose in-between values the engine rounds anyway.
|
|
6481
|
+
...p.enum("stability", [
|
|
6482
|
+
{ id: 0, label: "Creative" },
|
|
6483
|
+
{ id: 0.5, label: "Natural" },
|
|
6484
|
+
{ id: 1, label: "Robust" }
|
|
6485
|
+
], 0.5, { label: "Stability" }),
|
|
6486
|
+
...params.language(false),
|
|
6487
|
+
...params.seed(4294967295)
|
|
6488
|
+
}
|
|
6489
|
+
},
|
|
6378
6490
|
// ── Sound Effects ─────────────────────────────────────────────────
|
|
6379
6491
|
{
|
|
6380
6492
|
id: "elevenlabs-sfx",
|
|
@@ -6421,7 +6533,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6421
6533
|
modelId: "eleven_english_sts_v2",
|
|
6422
6534
|
addedAt: "2026-02-15",
|
|
6423
6535
|
workflow: "elevenlabs/v1/speech-to-speech",
|
|
6424
|
-
buildPayload: buildElevenLabsSTSPayload("eleven_english_sts_v2"),
|
|
6425
6536
|
estimatedTime: 15,
|
|
6426
6537
|
mode: "audio",
|
|
6427
6538
|
inputType: "sts",
|
|
@@ -6429,8 +6540,9 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6429
6540
|
features: [feat("Voice Changer", "characteristic"), feat("Emotion Preserved", "characteristic")],
|
|
6430
6541
|
paramConfig: {
|
|
6431
6542
|
...params.audioInput("Speech Audio", true),
|
|
6432
|
-
...params.voiceId([], DEFAULT_VOICE_ID, { catalog:
|
|
6433
|
-
...p.boolean("removeBackgroundNoise", false, "Remove Background Noise")
|
|
6543
|
+
...params.voiceId([], DEFAULT_VOICE_ID, { catalog: VOICE_CATALOG }),
|
|
6544
|
+
...p.boolean("removeBackgroundNoise", false, "Remove Background Noise"),
|
|
6545
|
+
...voiceSettingsParams(false)
|
|
6434
6546
|
}
|
|
6435
6547
|
},
|
|
6436
6548
|
{
|
|
@@ -6439,7 +6551,6 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6439
6551
|
modelId: "eleven_multilingual_sts_v2",
|
|
6440
6552
|
addedAt: "2026-02-15",
|
|
6441
6553
|
workflow: "elevenlabs/v1/speech-to-speech",
|
|
6442
|
-
buildPayload: buildElevenLabsSTSPayload("eleven_multilingual_sts_v2"),
|
|
6443
6554
|
estimatedTime: 15,
|
|
6444
6555
|
mode: "audio",
|
|
6445
6556
|
inputType: "sts",
|
|
@@ -6447,8 +6558,9 @@ var { MODELS: MODELS23 } = defineModels("elevenlabs", [
|
|
|
6447
6558
|
features: [feat("Voice Changer", "characteristic"), feat("Multilingual", "characteristic"), feat("29 Languages", "characteristic")],
|
|
6448
6559
|
paramConfig: {
|
|
6449
6560
|
...params.audioInput("Speech Audio", true),
|
|
6450
|
-
...params.voiceId([], DEFAULT_VOICE_ID, { catalog:
|
|
6451
|
-
...p.boolean("removeBackgroundNoise", false, "Remove Background Noise")
|
|
6561
|
+
...params.voiceId([], DEFAULT_VOICE_ID, { catalog: VOICE_CATALOG }),
|
|
6562
|
+
...p.boolean("removeBackgroundNoise", false, "Remove Background Noise"),
|
|
6563
|
+
...voiceSettingsParams(false)
|
|
6452
6564
|
}
|
|
6453
6565
|
},
|
|
6454
6566
|
// ── Audio Processing ────────────────────────────────────────────
|
|
@@ -6563,8 +6675,47 @@ var buildElevenLabsMusicPayload = (input) => ({
|
|
|
6563
6675
|
model_id: "music_v2",
|
|
6564
6676
|
force_instrumental: input.isInstrumental ?? false
|
|
6565
6677
|
});
|
|
6678
|
+
var voiceSettings = (input) => {
|
|
6679
|
+
const settings = {
|
|
6680
|
+
...input.stability != null ? { stability: input.stability } : {},
|
|
6681
|
+
...input.similarityBoost != null ? { similarity_boost: input.similarityBoost } : {},
|
|
6682
|
+
...input.styleExaggeration != null ? { style: input.styleExaggeration } : {},
|
|
6683
|
+
...input.speed != null ? { speed: input.speed } : {},
|
|
6684
|
+
...input.useSpeakerBoost != null ? { use_speaker_boost: input.useSpeakerBoost } : {}
|
|
6685
|
+
};
|
|
6686
|
+
return Object.keys(settings).length > 0 ? { voice_settings: settings } : {};
|
|
6687
|
+
};
|
|
6688
|
+
var buildElevenLabsTTSPayload = (modelId) => (input) => ({
|
|
6689
|
+
text: input.prompt,
|
|
6690
|
+
voice_id: input.voiceId ?? DEFAULT_VOICE_ID,
|
|
6691
|
+
model_id: modelId,
|
|
6692
|
+
...input.language ? { language_code: input.language } : {},
|
|
6693
|
+
...voiceSettings(input)
|
|
6694
|
+
});
|
|
6695
|
+
var buildElevenLabsSTSPayload = (modelId) => (input) => ({
|
|
6696
|
+
audio_url: input.audioUrl,
|
|
6697
|
+
voice_id: input.voiceId ?? DEFAULT_VOICE_ID,
|
|
6698
|
+
model_id: modelId,
|
|
6699
|
+
remove_background_noise: input.removeBackgroundNoise ?? false,
|
|
6700
|
+
...voiceSettings(input)
|
|
6701
|
+
});
|
|
6702
|
+
var buildElevenLabsDialoguePayload = (input) => ({
|
|
6703
|
+
conversation: input.dialogue.map((line) => ({
|
|
6704
|
+
voice_id: line.voiceId,
|
|
6705
|
+
text: line.text
|
|
6706
|
+
})),
|
|
6707
|
+
model_id: "eleven_v3",
|
|
6708
|
+
...input.stability != null ? { settings: { stability: input.stability } } : {},
|
|
6709
|
+
...input.language ? { language_code: input.language } : {},
|
|
6710
|
+
...input.seed != null ? { seed: input.seed } : {}
|
|
6711
|
+
});
|
|
6566
6712
|
registerPayloads(MODELS23, {
|
|
6567
|
-
"elevenlabs-music-v2": buildElevenLabsMusicPayload
|
|
6713
|
+
"elevenlabs-music-v2": buildElevenLabsMusicPayload,
|
|
6714
|
+
"eleven-v3": buildElevenLabsTTSPayload("eleven_v3"),
|
|
6715
|
+
"eleven-multilingual-v2": buildElevenLabsTTSPayload("eleven_multilingual_v2"),
|
|
6716
|
+
"eleven-sts-v2": buildElevenLabsSTSPayload("eleven_english_sts_v2"),
|
|
6717
|
+
"eleven-multilingual-sts-v2": buildElevenLabsSTSPayload("eleven_multilingual_sts_v2"),
|
|
6718
|
+
"eleven-text-to-dialogue": buildElevenLabsDialoguePayload
|
|
6568
6719
|
});
|
|
6569
6720
|
|
|
6570
6721
|
// src/vendors/catalog/heygen.ts
|
|
@@ -12059,6 +12210,7 @@ var ElevenDubbing = "eleven-dubbing";
|
|
|
12059
12210
|
var ElevenMultilingualStsV2 = "eleven-multilingual-sts-v2";
|
|
12060
12211
|
var ElevenMultilingualV2 = "eleven-multilingual-v2";
|
|
12061
12212
|
var ElevenStsV2 = "eleven-sts-v2";
|
|
12213
|
+
var ElevenTextToDialogue = "eleven-text-to-dialogue";
|
|
12062
12214
|
var ElevenV3 = "eleven-v3";
|
|
12063
12215
|
var ElevenVoiceCreate = "eleven-voice-create";
|
|
12064
12216
|
var ElevenVoiceDesignV2 = "eleven-voice-design-v2";
|
|
@@ -12299,6 +12451,7 @@ var Models = {
|
|
|
12299
12451
|
ElevenMultilingualStsV2,
|
|
12300
12452
|
ElevenMultilingualV2,
|
|
12301
12453
|
ElevenStsV2,
|
|
12454
|
+
ElevenTextToDialogue,
|
|
12302
12455
|
ElevenV3,
|
|
12303
12456
|
ElevenVoiceCreate,
|
|
12304
12457
|
ElevenVoiceDesignV2,
|