vidspotai-shared 1.0.59 → 1.0.61
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/lib/globals/aiModels/enums.d.ts +2 -0
- package/lib/globals/aiModels/enums.d.ts.map +1 -1
- package/lib/globals/aiModels/enums.js +2 -0
- package/lib/globals/aiModels/providers/bytedance.d.ts.map +1 -1
- package/lib/globals/aiModels/providers/bytedance.js +54 -0
- package/lib/globals/ttsModels/voices.d.ts +18 -0
- package/lib/globals/ttsModels/voices.d.ts.map +1 -1
- package/lib/globals/ttsModels/voices.js +30 -1
- package/lib/models/video.model.d.ts +4 -0
- package/lib/models/video.model.d.ts.map +1 -1
- package/lib/services/aiGen/aiGenFactory.service.d.ts.map +1 -1
- package/lib/services/aiGen/aiGenFactory.service.js +2 -0
- package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts +1 -0
- package/lib/services/aiGen/providers/bytedance/bytedance.service.d.ts.map +1 -1
- package/lib/services/aiGen/providers/bytedance/bytedance.service.js +85 -25
- package/lib/services/aiGen/providers/types.d.ts +2 -0
- package/lib/services/aiGen/providers/types.d.ts.map +1 -1
- package/lib/services/tts/providers/elevenlabs.service.d.ts.map +1 -1
- package/lib/services/tts/providers/elevenlabs.service.js +3 -2
- package/lib/services/tts/types.d.ts +6 -0
- package/lib/services/tts/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -5,6 +5,8 @@ export declare enum EVideoGenModels {
|
|
|
5
5
|
BYTEDANCE_SEEDANCE_1_5_PRO = "bytedance-seedance-1.5-pro",
|
|
6
6
|
BYTEDANCE_SEEDANCE_1_0_PRO_FAST = "bytedance-seedance-1.0-pro-fast",
|
|
7
7
|
BYTEDANCE_SEEDANCE_1_0_PRO = "bytedance-seedance-1.0-pro",
|
|
8
|
+
BYTEDANCE_SEEDANCE_2_0 = "bytedance-seedance-2.0",
|
|
9
|
+
BYTEDANCE_SEEDANCE_2_0_FAST = "bytedance-seedance-2.0-fast",
|
|
8
10
|
GOOGLE_VEO_3_1 = "google-veo-3.1",
|
|
9
11
|
GOOGLE_VEO_3_1_FAST = "google-veo-3.1-fast",
|
|
10
12
|
GOOGLE_VEO_3_1_LITE = "google-veo-3.1-lite",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/globals/aiModels/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,0BAA0B,+BAA+B;IACzD,+BAA+B,oCAAoC;IACnE,0BAA0B,+BAA+B;IACzD,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAE7B,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IAGvC,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;CACxC;AAED,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,oBAAY,cAAc;IACxB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/globals/aiModels/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,eAAe;IACzB,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,0BAA0B,+BAA+B;IACzD,+BAA+B,oCAAoC;IACnE,0BAA0B,+BAA+B;IACzD,sBAAsB,2BAA2B;IACjD,2BAA2B,gCAAgC;IAC3D,cAAc,mBAAmB;IACjC,mBAAmB,wBAAwB;IAC3C,mBAAmB,wBAAwB;IAC3C,YAAY,iBAAiB;IAC7B,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;IACvC,iBAAiB,sBAAsB;IACvC,eAAe,oBAAoB;IACnC,UAAU,eAAe;IACzB,iBAAiB,sBAAsB;IACvC,gBAAgB,qBAAqB;IACrC,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAE7B,uBAAuB,4BAA4B;IACnD,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;IAGvC,aAAa,kBAAkB;IAC/B,iBAAiB,sBAAsB;CACxC;AAED,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,oBAAY,cAAc;IACxB,kBAAkB,uBAAuB;IACzC,iBAAiB,sBAAsB;CACxC;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,cAAc,CAAC"}
|
|
@@ -9,6 +9,8 @@ var EVideoGenModels;
|
|
|
9
9
|
EVideoGenModels["BYTEDANCE_SEEDANCE_1_5_PRO"] = "bytedance-seedance-1.5-pro";
|
|
10
10
|
EVideoGenModels["BYTEDANCE_SEEDANCE_1_0_PRO_FAST"] = "bytedance-seedance-1.0-pro-fast";
|
|
11
11
|
EVideoGenModels["BYTEDANCE_SEEDANCE_1_0_PRO"] = "bytedance-seedance-1.0-pro";
|
|
12
|
+
EVideoGenModels["BYTEDANCE_SEEDANCE_2_0"] = "bytedance-seedance-2.0";
|
|
13
|
+
EVideoGenModels["BYTEDANCE_SEEDANCE_2_0_FAST"] = "bytedance-seedance-2.0-fast";
|
|
12
14
|
EVideoGenModels["GOOGLE_VEO_3_1"] = "google-veo-3.1";
|
|
13
15
|
EVideoGenModels["GOOGLE_VEO_3_1_FAST"] = "google-veo-3.1-fast";
|
|
14
16
|
EVideoGenModels["GOOGLE_VEO_3_1_LITE"] = "google-veo-3.1-lite";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytedance.d.ts","sourceRoot":"","sources":["../../../../src/globals/aiModels/providers/bytedance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"bytedance.d.ts","sourceRoot":"","sources":["../../../../src/globals/aiModels/providers/bytedance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CA0HvE,CAAC"}
|
|
@@ -65,4 +65,58 @@ exports.bytedanceConfigs = {
|
|
|
65
65
|
per1KTokens: 0.0025,
|
|
66
66
|
},
|
|
67
67
|
},
|
|
68
|
+
// Seedance 2.0 (Dreamina). Multimodal: text, up to 9 image refs, 3 video refs,
|
|
69
|
+
// 3 audio refs (with role tags). Pricing axes are resolution + whether the
|
|
70
|
+
// request includes a video input — see cost.videoInput / cost.noVideoInput.
|
|
71
|
+
"bytedance-seedance-2.0": {
|
|
72
|
+
modelId: "dreamina-seedance-2-0-260128",
|
|
73
|
+
type: ["text-to-video", "image-to-video", "video-to-video"],
|
|
74
|
+
acceptedImageFormats: ["image/jpeg", "image/jpg", "image/png"],
|
|
75
|
+
fields: {
|
|
76
|
+
prompt: { required: true },
|
|
77
|
+
aspectRatio: { allowedValues: ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"] },
|
|
78
|
+
resolution: { allowedValues: ["480p", "720p", "1080p"], default: "720p" },
|
|
79
|
+
duration: { allowedValues: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], default: 5 },
|
|
80
|
+
audio: {},
|
|
81
|
+
},
|
|
82
|
+
requestPerMin: 180, // individual-tier; bumps to 600 for enterprise
|
|
83
|
+
concurrentRequests: 3, // individual-tier; bumps to 10 for enterprise
|
|
84
|
+
cost: {
|
|
85
|
+
videoInput: {
|
|
86
|
+
"480p": 0.0043,
|
|
87
|
+
"720p": 0.0043,
|
|
88
|
+
"1080p": 0.0047,
|
|
89
|
+
},
|
|
90
|
+
noVideoInput: {
|
|
91
|
+
"480p": 0.0070,
|
|
92
|
+
"720p": 0.0070,
|
|
93
|
+
"1080p": 0.0077,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
// Seedance 2.0 Fast. Same capabilities as 2.0 but no 1080p; cheaper.
|
|
98
|
+
"bytedance-seedance-2.0-fast": {
|
|
99
|
+
modelId: "dreamina-seedance-2-0-fast-260128",
|
|
100
|
+
type: ["text-to-video", "image-to-video", "video-to-video"],
|
|
101
|
+
acceptedImageFormats: ["image/jpeg", "image/jpg", "image/png"],
|
|
102
|
+
fields: {
|
|
103
|
+
prompt: { required: true },
|
|
104
|
+
aspectRatio: { allowedValues: ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16"] },
|
|
105
|
+
resolution: { allowedValues: ["480p", "720p"], default: "720p" },
|
|
106
|
+
duration: { allowedValues: [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], default: 5 },
|
|
107
|
+
audio: {},
|
|
108
|
+
},
|
|
109
|
+
requestPerMin: 180,
|
|
110
|
+
concurrentRequests: 3,
|
|
111
|
+
cost: {
|
|
112
|
+
videoInput: {
|
|
113
|
+
"480p": 0.0033,
|
|
114
|
+
"720p": 0.0033,
|
|
115
|
+
},
|
|
116
|
+
noVideoInput: {
|
|
117
|
+
"480p": 0.0056,
|
|
118
|
+
"720p": 0.0056,
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
},
|
|
68
122
|
};
|
|
@@ -19,4 +19,22 @@ export declare const DEFAULT_ELEVENLABS_VOICE_ID = "EXAVITQu4vr4xnSDxMaL";
|
|
|
19
19
|
* Reference: https://help.elevenlabs.io/hc/en-us/articles/13313366263441
|
|
20
20
|
*/
|
|
21
21
|
export declare const LANG_TO_ELEVENLABS_CODE: Record<string, string>;
|
|
22
|
+
/**
|
|
23
|
+
* ElevenLabs `eleven_turbo_v2_5` supported languages (32 total, per docs:
|
|
24
|
+
* https://elevenlabs.io/docs/models#supported-languages). Used for the
|
|
25
|
+
* preview-audio path: turbo_v2_5 is ~3–5× faster than `eleven_v3` and
|
|
26
|
+
* preview quality differences are imperceptible at short sample lengths.
|
|
27
|
+
*
|
|
28
|
+
* Languages added in v3 only (e.g. Hebrew `he`, Thai `th`) fall back to
|
|
29
|
+
* `eleven_v3` for preview to avoid an unsupported-language error.
|
|
30
|
+
*
|
|
31
|
+
* Values are the mapped ElevenLabs `language_code` (post-`mapLanguageCode`).
|
|
32
|
+
*/
|
|
33
|
+
export declare const ELEVEN_TURBO_V2_5_LANGS: ReadonlySet<string>;
|
|
34
|
+
/**
|
|
35
|
+
* Picks the fastest ElevenLabs model that supports the given language.
|
|
36
|
+
* @param locale Standard locale string (e.g. "en", "fr-FR"). When undefined
|
|
37
|
+
* or unknown, returns v3 — the only model with auto-detect across all langs.
|
|
38
|
+
*/
|
|
39
|
+
export declare function getElevenLabsPreviewModelId(locale: string | undefined): string;
|
|
22
40
|
//# sourceMappingURL=voices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../../src/globals/ttsModels/voices.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAuFxC,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuC1D,CAAC"}
|
|
1
|
+
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../../src/globals/ttsModels/voices.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,EAuFxC,CAAC;AAEF,kDAAkD;AAClD,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuC1D,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAKtD,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9E"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LANG_TO_ELEVENLABS_CODE = exports.DEFAULT_ELEVENLABS_VOICE_ID = exports.ELEVENLABS_VOICES = void 0;
|
|
3
|
+
exports.ELEVEN_TURBO_V2_5_LANGS = exports.LANG_TO_ELEVENLABS_CODE = exports.DEFAULT_ELEVENLABS_VOICE_ID = exports.ELEVENLABS_VOICES = void 0;
|
|
4
|
+
exports.getElevenLabsPreviewModelId = getElevenLabsPreviewModelId;
|
|
4
5
|
/**
|
|
5
6
|
* Curated list of ElevenLabs voices compatible with eleven_multilingual_v3.
|
|
6
7
|
* Any voice can speak any supported language via the language_code parameter.
|
|
@@ -140,3 +141,31 @@ exports.LANG_TO_ELEVENLABS_CODE = {
|
|
|
140
141
|
uk: "uk",
|
|
141
142
|
vi: "vi",
|
|
142
143
|
};
|
|
144
|
+
/**
|
|
145
|
+
* ElevenLabs `eleven_turbo_v2_5` supported languages (32 total, per docs:
|
|
146
|
+
* https://elevenlabs.io/docs/models#supported-languages). Used for the
|
|
147
|
+
* preview-audio path: turbo_v2_5 is ~3–5× faster than `eleven_v3` and
|
|
148
|
+
* preview quality differences are imperceptible at short sample lengths.
|
|
149
|
+
*
|
|
150
|
+
* Languages added in v3 only (e.g. Hebrew `he`, Thai `th`) fall back to
|
|
151
|
+
* `eleven_v3` for preview to avoid an unsupported-language error.
|
|
152
|
+
*
|
|
153
|
+
* Values are the mapped ElevenLabs `language_code` (post-`mapLanguageCode`).
|
|
154
|
+
*/
|
|
155
|
+
exports.ELEVEN_TURBO_V2_5_LANGS = new Set([
|
|
156
|
+
"en", "ja", "zh", "de", "hi", "fr", "ko", "pt", "it", "es",
|
|
157
|
+
"id", "nl", "tr", "fil", "pl", "sv", "bg", "ro", "ar", "cs",
|
|
158
|
+
"el", "fi", "hr", "ms", "sk", "da", "ta", "uk", "ru", "hu",
|
|
159
|
+
"no", "vi",
|
|
160
|
+
]);
|
|
161
|
+
/**
|
|
162
|
+
* Picks the fastest ElevenLabs model that supports the given language.
|
|
163
|
+
* @param locale Standard locale string (e.g. "en", "fr-FR"). When undefined
|
|
164
|
+
* or unknown, returns v3 — the only model with auto-detect across all langs.
|
|
165
|
+
*/
|
|
166
|
+
function getElevenLabsPreviewModelId(locale) {
|
|
167
|
+
if (!locale)
|
|
168
|
+
return "eleven_v3";
|
|
169
|
+
const mapped = exports.LANG_TO_ELEVENLABS_CODE[locale] ?? locale.split("-")[0] ?? locale;
|
|
170
|
+
return exports.ELEVEN_TURBO_V2_5_LANGS.has(mapped) ? "eleven_turbo_v2_5" : "eleven_v3";
|
|
171
|
+
}
|
|
@@ -53,6 +53,10 @@ export interface IVideoJobModel {
|
|
|
53
53
|
ttsVoiceId?: string;
|
|
54
54
|
ttsLanguageCode?: string;
|
|
55
55
|
generatedAudioUrl?: string;
|
|
56
|
+
/** True when inputAudioUrl is the preview-audio URL and it covers the entire
|
|
57
|
+
* ttsText (short text, single chunk). Tells the worker to reuse inputAudioUrl
|
|
58
|
+
* directly and skip TTS regeneration. */
|
|
59
|
+
ttsPreviewIsComplete?: boolean;
|
|
56
60
|
audioDurationSeconds?: number;
|
|
57
61
|
isSample?: boolean;
|
|
58
62
|
createdAt: FieldValue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CAOpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB,CAAA;IAGD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAI9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B"}
|
|
1
|
+
{"version":3,"file":"video.model.d.ts","sourceRoot":"","sources":["../../src/models/video.model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IAEnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CAOpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,UAAU,CAAC;KACxB,CAAA;IAGD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;8CAE0C;IAC1C,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAI9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,SAAS,EAAE,UAAU,CAAC;IACtB,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,CAAC;CAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiGenFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/aiGen/aiGenFactory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAYhC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,
|
|
1
|
+
{"version":3,"file":"aiGenFactory.service.d.ts","sourceRoot":"","sources":["../../../src/services/aiGen/aiGenFactory.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAYhC,KAAK,uBAAuB,GAAG,UAAU,wBAAwB,CAAC;AAElE,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,eAAe,EACf,uBAAuB,CAsDxB,CAAC;AAUF,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,cAAc,EAAE,uBAAuB,CAQzE,CAAC;AAEJ,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,WAAW,GACpB,wBAAwB,CAY1B"}
|
|
@@ -20,6 +20,8 @@ exports.videoServicesMap = {
|
|
|
20
20
|
"bytedance-seedance-1.5-pro": bytedance_service_1.ByteDanceService,
|
|
21
21
|
"bytedance-seedance-1.0-pro-fast": bytedance_service_1.ByteDanceService,
|
|
22
22
|
"bytedance-seedance-1.0-pro": bytedance_service_1.ByteDanceService,
|
|
23
|
+
"bytedance-seedance-2.0": bytedance_service_1.ByteDanceService,
|
|
24
|
+
"bytedance-seedance-2.0-fast": bytedance_service_1.ByteDanceService,
|
|
23
25
|
// --- Google ---
|
|
24
26
|
"google-veo-3.1": google_service_1.GoogleService,
|
|
25
27
|
"google-veo-3.1-fast": google_service_1.GoogleService,
|
|
@@ -3,6 +3,7 @@ import { CreditUsageParams, VideoGenerationParams, VideoGenerationResult, VideoS
|
|
|
3
3
|
export declare class ByteDanceService extends BaseAiGenProviderService {
|
|
4
4
|
private readonly baseUrl;
|
|
5
5
|
private sanitizePrompt;
|
|
6
|
+
private isSeedance2;
|
|
6
7
|
generateVideo(params: VideoGenerationParams): Promise<VideoGenerationResult>;
|
|
7
8
|
checkVideoStatus({ task, outputFilename, outputFilePath, }: VideoStatusParams): Promise<VideoStatusResult>;
|
|
8
9
|
getCreditUsed(params: CreditUsageParams): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bytedance.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/bytedance/bytedance.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAUlB,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CACsD;IAI9E,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"bytedance.service.d.ts","sourceRoot":"","sources":["../../../../../src/services/aiGen/providers/bytedance/bytedance.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAUlB,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,OAAO,CACsD;IAI9E,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,WAAW;IAIb,aAAa,CACjB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAuJ3B,gBAAgB,CAAC,EACrB,IAAI,EACJ,cAAc,EACd,cAAyB,GAC1B,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2HjD,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;CAgDjD"}
|
|
@@ -27,6 +27,11 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
|
|
|
27
27
|
.replace(/\s+/g, " ")
|
|
28
28
|
.trim();
|
|
29
29
|
}
|
|
30
|
+
// Seedance 2.0 (Dreamina) uses a new multimodal content schema with `role`
|
|
31
|
+
// tags on each non-text item. Earlier Seedance models reject the `role` field.
|
|
32
|
+
isSeedance2(modelKey) {
|
|
33
|
+
return modelKey.startsWith("bytedance-seedance-2.0");
|
|
34
|
+
}
|
|
30
35
|
async generateVideo(params) {
|
|
31
36
|
(0, helpers_1.validateParams)(params);
|
|
32
37
|
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
@@ -35,18 +40,44 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
|
|
|
35
40
|
if (!sanitizedPrompt) {
|
|
36
41
|
throw new errors_1.UserFacingError("Your prompt could not be processed. Please use English or Chinese text and try again.");
|
|
37
42
|
}
|
|
43
|
+
const isV2 = this.isSeedance2(params.modelKey);
|
|
38
44
|
const content = [
|
|
39
45
|
{
|
|
40
46
|
type: "text",
|
|
41
47
|
text: sanitizedPrompt,
|
|
42
48
|
},
|
|
43
49
|
];
|
|
44
|
-
//
|
|
50
|
+
// Image input. Seedance 2.0 expects role="first_frame" for I2V (or
|
|
51
|
+
// "reference_image" when combined with a video/audio reference). Earlier
|
|
52
|
+
// Seedance models reject `role` and treat any image as the first frame.
|
|
45
53
|
if (params.inputImageUrl) {
|
|
46
|
-
|
|
54
|
+
const item = {
|
|
47
55
|
type: "image_url",
|
|
48
56
|
image_url: { url: params.inputImageUrl },
|
|
49
|
-
}
|
|
57
|
+
};
|
|
58
|
+
if (isV2) {
|
|
59
|
+
// If a video reference is also present this is a multimodal reference,
|
|
60
|
+
// not first-frame I2V, so tag as reference_image.
|
|
61
|
+
item.role = params.inputVideoUrl ? "reference_image" : "first_frame";
|
|
62
|
+
}
|
|
63
|
+
content.push(item);
|
|
64
|
+
}
|
|
65
|
+
// Seedance 2.0 multimodal reference: video and/or audio inputs.
|
|
66
|
+
if (isV2) {
|
|
67
|
+
if (params.inputVideoUrl) {
|
|
68
|
+
content.push({
|
|
69
|
+
type: "video_url",
|
|
70
|
+
video_url: { url: params.inputVideoUrl },
|
|
71
|
+
role: "reference_video",
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
if (params.inputAudioUrl) {
|
|
75
|
+
content.push({
|
|
76
|
+
type: "audio_url",
|
|
77
|
+
audio_url: { url: params.inputAudioUrl },
|
|
78
|
+
role: "reference_audio",
|
|
79
|
+
});
|
|
80
|
+
}
|
|
50
81
|
}
|
|
51
82
|
const body = {
|
|
52
83
|
model: modelId,
|
|
@@ -56,9 +87,23 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
|
|
|
56
87
|
resolution: params.resolution, // e.g. 720p
|
|
57
88
|
duration: params.duration, // seconds
|
|
58
89
|
watermark: false,
|
|
59
|
-
service_tier: "default",
|
|
60
90
|
execution_expires_after: 172800, // 48h
|
|
61
91
|
};
|
|
92
|
+
if (!this.isSeedance2(params.modelKey)) {
|
|
93
|
+
body.service_tier = "default";
|
|
94
|
+
}
|
|
95
|
+
// Byteplus KYC commitment K2 (deadline 2026-07-01): every Seedance 2.0
|
|
96
|
+
// request must carry a stable per-user safety_identifier so Byteplus can
|
|
97
|
+
// attribute downstream policy violations to a single end-user. We hash the
|
|
98
|
+
// Firebase userId (sha256, 16 hex chars) — stable per user, but never
|
|
99
|
+
// exposes the raw UID to the provider.
|
|
100
|
+
if (this.isSeedance2(params.modelKey) && params.userId) {
|
|
101
|
+
body.safety_identifier = crypto_1.default
|
|
102
|
+
.createHash("sha256")
|
|
103
|
+
.update(params.userId)
|
|
104
|
+
.digest("hex")
|
|
105
|
+
.slice(0, 16);
|
|
106
|
+
}
|
|
62
107
|
const resp = await fetch(this.baseUrl, {
|
|
63
108
|
method: "POST",
|
|
64
109
|
headers: {
|
|
@@ -204,9 +249,21 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
|
|
|
204
249
|
}
|
|
205
250
|
getCreditUsed(params) {
|
|
206
251
|
const modelConfig = aiModels_1.aiModelConfigs[params.modelKey];
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
252
|
+
// Seedance 2.0 prices on (resolution × whether the request includes a
|
|
253
|
+
// video input), not on (audio toggle). Pick the matching per-1K rate.
|
|
254
|
+
let per1KTokens;
|
|
255
|
+
if (this.isSeedance2(params.modelKey)) {
|
|
256
|
+
const hasVideoInput = params.hasInputVideo === true || params.inputType === "video";
|
|
257
|
+
const table = hasVideoInput
|
|
258
|
+
? modelConfig.cost?.videoInput
|
|
259
|
+
: modelConfig.cost?.noVideoInput;
|
|
260
|
+
per1KTokens = params.resolution ? table?.[params.resolution] : undefined;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
per1KTokens = params.audio
|
|
264
|
+
? modelConfig.cost?.audio?.per1KTokens
|
|
265
|
+
: modelConfig.cost?.noAudio?.per1KTokens ?? modelConfig.cost?.per1KTokens;
|
|
266
|
+
}
|
|
210
267
|
if (!per1KTokens || !params.resolution || !params.aspectRatio || !params.duration) {
|
|
211
268
|
logger_1.logger.warn(`Missing cost or parameters for credit calculation. Returning default credits. Params: ${JSON.stringify(params)}, ModelConfig: ${JSON.stringify(modelConfig)}`);
|
|
212
269
|
return 10; // default fallback
|
|
@@ -223,29 +280,32 @@ class ByteDanceService extends baseAiGenProvider_service_1.BaseAiGenProviderServ
|
|
|
223
280
|
}
|
|
224
281
|
}
|
|
225
282
|
exports.ByteDanceService = ByteDanceService;
|
|
283
|
+
// Source of truth: Byteplus ModelArk pricing reference
|
|
284
|
+
// (https://docs.byteplus.com/en/docs/ModelArk/1544106 — Seedance dimensions table).
|
|
285
|
+
// Must stay in sync with SEEDANCE_DIMENSIONS_MAP in vidspot-frontend/src/lib/helpers.ts.
|
|
226
286
|
const dimensionsMap = {
|
|
227
287
|
"480p": {
|
|
228
|
-
"
|
|
229
|
-
"9
|
|
230
|
-
"
|
|
231
|
-
"
|
|
232
|
-
"3
|
|
233
|
-
"
|
|
288
|
+
"21:9": { width: 960, height: 416 },
|
|
289
|
+
"16:9": { width: 864, height: 480 },
|
|
290
|
+
"9:16": { width: 480, height: 864 },
|
|
291
|
+
"1:1": { width: 640, height: 640 },
|
|
292
|
+
"4:3": { width: 736, height: 544 },
|
|
293
|
+
"3:4": { width: 544, height: 736 },
|
|
234
294
|
},
|
|
235
295
|
"720p": {
|
|
236
|
-
"
|
|
237
|
-
"9
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"3
|
|
241
|
-
"
|
|
296
|
+
"21:9": { width: 1504, height: 640 },
|
|
297
|
+
"16:9": { width: 1248, height: 704 },
|
|
298
|
+
"9:16": { width: 704, height: 1248 },
|
|
299
|
+
"1:1": { width: 960, height: 960 },
|
|
300
|
+
"4:3": { width: 1120, height: 832 },
|
|
301
|
+
"3:4": { width: 832, height: 1120 },
|
|
242
302
|
},
|
|
243
303
|
"1080p": {
|
|
244
|
-
"
|
|
245
|
-
"9
|
|
246
|
-
"
|
|
247
|
-
"
|
|
248
|
-
"3
|
|
249
|
-
"
|
|
304
|
+
"21:9": { width: 2176, height: 928 },
|
|
305
|
+
"16:9": { width: 1920, height: 1088 },
|
|
306
|
+
"9:16": { width: 1088, height: 1920 },
|
|
307
|
+
"1:1": { width: 1440, height: 1440 },
|
|
308
|
+
"4:3": { width: 1664, height: 1248 },
|
|
309
|
+
"3:4": { width: 1248, height: 1664 },
|
|
250
310
|
},
|
|
251
311
|
};
|
|
@@ -16,6 +16,7 @@ export interface VideoGenerationParams {
|
|
|
16
16
|
audio?: boolean;
|
|
17
17
|
negativePrompt?: string;
|
|
18
18
|
multiClip?: boolean;
|
|
19
|
+
userId?: string;
|
|
19
20
|
}
|
|
20
21
|
export interface VideoGenerationResult {
|
|
21
22
|
status: EVideoSceneStatus.TRIGGERED;
|
|
@@ -48,6 +49,7 @@ export interface CreditUsageParams {
|
|
|
48
49
|
dimensions?: string;
|
|
49
50
|
aspectRatio?: string;
|
|
50
51
|
inputType?: "text" | "image" | "video";
|
|
52
|
+
hasInputVideo?: boolean;
|
|
51
53
|
outputType?: "text" | "image" | "video";
|
|
52
54
|
audio?: boolean;
|
|
53
55
|
multiClip?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAE7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/aiGen/providers/types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,iBAAiB,EACjB,aAAa,EACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAE7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,iBAAiB,CAAC,SAAS,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CAEvB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;CAMzB;AAED,MAAM,WAAW,oBAAoB;IAEnC,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,eAAe,GAAG,cAAc,CAAC;IAC3C,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elevenlabs.service.d.ts","sourceRoot":"","sources":["../../../../src/services/tts/providers/elevenlabs.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBzF,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAW1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"elevenlabs.service.d.ts","sourceRoot":"","sources":["../../../../src/services/tts/providers/elevenlabs.service.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAiBzF,qBAAa,iBAAkB,SAAQ,sBAAsB;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAE1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;;IAW1B,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IA6DrD;;;;;OAKG;YACW,gBAAgB;IAuC9B,SAAS,IAAI,eAAe,EAAE;IAI9B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAGpD"}
|
|
@@ -38,9 +38,10 @@ class ElevenLabsService extends types_1.BaseTtsProviderService {
|
|
|
38
38
|
const languageCode = params.languageCode
|
|
39
39
|
? this.mapLanguageCode(params.languageCode)
|
|
40
40
|
: undefined;
|
|
41
|
+
const modelId = params.modelIdOverride ?? elevenlabs_1.elevenlabsConfig.modelId;
|
|
41
42
|
const buildBody = (lang) => ({
|
|
42
43
|
text: params.text,
|
|
43
|
-
model_id:
|
|
44
|
+
model_id: modelId,
|
|
44
45
|
language_code: lang,
|
|
45
46
|
voice_settings: {
|
|
46
47
|
stability: 0.5,
|
|
@@ -81,7 +82,7 @@ class ElevenLabsService extends types_1.BaseTtsProviderService {
|
|
|
81
82
|
extension: "mp3",
|
|
82
83
|
};
|
|
83
84
|
}
|
|
84
|
-
throw new Error(`ElevenLabs TTS ${err.response.status}: ${detail} [voiceId=${voiceId}, languageCode=${languageCode ?? "none"}, textLen=${params.text?.length ?? 0}]`);
|
|
85
|
+
throw new Error(`ElevenLabs TTS ${err.response.status}: ${detail} [voiceId=${voiceId}, languageCode=${languageCode ?? "none"}, modelId=${modelId}, textLen=${params.text?.length ?? 0}]`);
|
|
85
86
|
}
|
|
86
87
|
throw err;
|
|
87
88
|
}
|
|
@@ -2,6 +2,12 @@ export interface TtsParams {
|
|
|
2
2
|
text: string;
|
|
3
3
|
voiceId?: string;
|
|
4
4
|
languageCode?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Optional provider-specific model override (e.g. ElevenLabs "eleven_turbo_v2_5"
|
|
7
|
+
* for preview to reduce latency). When undefined, providers use their default.
|
|
8
|
+
* Providers that don't support overrides ignore this field.
|
|
9
|
+
*/
|
|
10
|
+
modelIdOverride?: string;
|
|
5
11
|
}
|
|
6
12
|
export interface TtsResult {
|
|
7
13
|
audioBuffer: Buffer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/tts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/tts/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8BAAsB,sBAAsB;IAC1C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAExD;;;OAGG;IACH,QAAQ,CAAC,SAAS,IAAI,eAAe,EAAE;IAEvC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAC7D"}
|