@shop-os/modelkit 0.9.0 → 0.10.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/CHANGELOG.md +15 -0
- package/README.md +2 -1
- package/dist/catalog.cjs +454 -386
- package/dist/catalog.cjs.map +1 -1
- package/dist/catalog.d.cts +6 -3
- package/dist/catalog.d.ts +6 -3
- package/dist/catalog.js +454 -386
- package/dist/catalog.js.map +1 -1
- package/dist/index.cjs +967 -617
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +9 -4
- package/dist/index.d.ts +9 -4
- package/dist/index.js +966 -617
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/catalog.js
CHANGED
|
@@ -1219,303 +1219,6 @@ var VEED_SUBTITLES = {
|
|
|
1219
1219
|
}
|
|
1220
1220
|
};
|
|
1221
1221
|
|
|
1222
|
-
// src/catalog/voices-fish.ts
|
|
1223
|
-
var FISH_VOICES = [
|
|
1224
|
-
{
|
|
1225
|
-
id: "933563129e564b19a115bedd57b7406a",
|
|
1226
|
-
name: "Sarah",
|
|
1227
|
-
gender: "female",
|
|
1228
|
-
languages: ["en"],
|
|
1229
|
-
description: "An engaged speaker.",
|
|
1230
|
-
previewUrl: "https://platform.r2.fish.audio/task/4e204945670c460c86fdab57512cb308.mp3"
|
|
1231
|
-
},
|
|
1232
|
-
{
|
|
1233
|
-
id: "bf322df2096a46f18c579d0baa36f41d",
|
|
1234
|
-
name: "Adrian",
|
|
1235
|
-
gender: "male",
|
|
1236
|
-
languages: ["en"],
|
|
1237
|
-
description: "A steady and reliable narrator.",
|
|
1238
|
-
previewUrl: "https://platform.r2.fish.audio/task/d730b09f4a484316a77ecc86137e85fb.mp3"
|
|
1239
|
-
},
|
|
1240
|
-
{
|
|
1241
|
-
id: "536d3a5e000945adb7038665781a4aca",
|
|
1242
|
-
name: "Ethan",
|
|
1243
|
-
gender: "male",
|
|
1244
|
-
languages: ["en"],
|
|
1245
|
-
description: "A curious explainer.",
|
|
1246
|
-
previewUrl: "https://platform.r2.fish.audio/task/bdd677ed767744fc91f166468786264b.mp3"
|
|
1247
|
-
},
|
|
1248
|
-
{
|
|
1249
|
-
id: "b347db033a6549378b48d00acb0d06cd",
|
|
1250
|
-
name: "Selene",
|
|
1251
|
-
gender: "female",
|
|
1252
|
-
languages: ["en"],
|
|
1253
|
-
description: "A meditative female voice.",
|
|
1254
|
-
previewUrl: "https://platform.r2.fish.audio/task/fcf629b4a0b343558f461338ba1b9da4.mp3"
|
|
1255
|
-
},
|
|
1256
|
-
{
|
|
1257
|
-
id: "9a9cf47702da476aa4629e2506d4a857",
|
|
1258
|
-
name: "Hannah",
|
|
1259
|
-
gender: "female",
|
|
1260
|
-
languages: ["en"],
|
|
1261
|
-
description: "A conversation specialist.",
|
|
1262
|
-
previewUrl: "https://platform.r2.fish.audio/task/08d658835feb427db808e37060b78eb0.mp3"
|
|
1263
|
-
},
|
|
1264
|
-
{
|
|
1265
|
-
id: "79d0bd3e4e5444b18f7b6d89b5927bf1",
|
|
1266
|
-
name: "Jordan",
|
|
1267
|
-
gender: "male",
|
|
1268
|
-
languages: ["en"],
|
|
1269
|
-
description: "A motivational speaker.",
|
|
1270
|
-
previewUrl: "https://platform.r2.fish.audio/task/edecbc0bdd4c46c39eda8520a0f729ef.mp3"
|
|
1271
|
-
},
|
|
1272
|
-
{
|
|
1273
|
-
id: "e3cd384158934cc9a01029cd7d278634",
|
|
1274
|
-
name: "Laura",
|
|
1275
|
-
gender: "female",
|
|
1276
|
-
languages: ["en"],
|
|
1277
|
-
description: "A confident female narrator.",
|
|
1278
|
-
previewUrl: "https://platform.r2.fish.audio/task/e821bef995344d519caa1c93d808db23.mp3"
|
|
1279
|
-
},
|
|
1280
|
-
{
|
|
1281
|
-
id: "f3a2b90078d54a65af4b95f63bc7798e",
|
|
1282
|
-
name: "Sheila",
|
|
1283
|
-
gender: "female",
|
|
1284
|
-
accent: "american",
|
|
1285
|
-
languages: ["en"],
|
|
1286
|
-
description: "A young American English woman's voice.",
|
|
1287
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/9bb9e1a1cf3f47f38700da1c5c0a678a.mp3"
|
|
1288
|
-
},
|
|
1289
|
-
{
|
|
1290
|
-
id: "0db6e93af420470b9d9b9a886dbaa954",
|
|
1291
|
-
name: "Kai",
|
|
1292
|
-
gender: "male",
|
|
1293
|
-
languages: ["en"],
|
|
1294
|
-
description: "A friendly English man's voice for companion apps and everyday conversation.",
|
|
1295
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/13306f1172544c3ba3106d1e363feaa6.mp3"
|
|
1296
|
-
},
|
|
1297
|
-
{
|
|
1298
|
-
id: "8abfa9ebd4c24a3399b68c3cdac8c7b5",
|
|
1299
|
-
name: "Freya",
|
|
1300
|
-
gender: "female",
|
|
1301
|
-
accent: "british",
|
|
1302
|
-
languages: ["en"],
|
|
1303
|
-
description: "A natural, professional British English voice with a brisk, conversational pace. Clear and easy to follow, suited to voice assistants, customer support and everyday narration.",
|
|
1304
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/07918705a56b42daaab149f65392cea7.mp3"
|
|
1305
|
-
},
|
|
1306
|
-
{
|
|
1307
|
-
id: "2f64e528a4f2406691925ab1e0ed5b7f",
|
|
1308
|
-
name: "Ananya",
|
|
1309
|
-
gender: "female",
|
|
1310
|
-
languages: ["hi"],
|
|
1311
|
-
description: "\u0938\u093E\u092B\u093C \u0914\u0930 \u0906\u0924\u094D\u092E\u0935\u093F\u0936\u094D\u0935\u093E\u0938 \u092D\u0930\u0940 \u0906\u0935\u093E\u091C\u093C, \u091C\u094B \u0935\u0949\u0907\u0938 \u0905\u0938\u093F\u0938\u094D\u091F\u0947\u0902\u091F, \u0917\u094D\u0930\u093E\u0939\u0915 \u0938\u0947\u0935\u093E \u0914\u0930 \u092A\u094D\u0930\u0938\u094D\u0924\u0941\u0924\u093F\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0909\u092A\u092F\u0941\u0915\u094D\u0924 \u0939\u0948\u0964",
|
|
1312
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a17a700668d8405f8316db120733145c.mp3"
|
|
1313
|
-
},
|
|
1314
|
-
{
|
|
1315
|
-
id: "cefd91a07b99468f9148e2580990082d",
|
|
1316
|
-
name: "Arjun",
|
|
1317
|
-
gender: "male",
|
|
1318
|
-
languages: ["hi"],
|
|
1319
|
-
description: "\u0938\u093E\u092B\u093C \u0914\u0930 \u0906\u0924\u094D\u092E\u0935\u093F\u0936\u094D\u0935\u093E\u0938 \u092D\u0930\u0940 \u0906\u0935\u093E\u091C\u093C, \u091C\u094B \u0935\u0949\u0907\u0938 \u0905\u0938\u093F\u0938\u094D\u091F\u0947\u0902\u091F, \u0917\u094D\u0930\u093E\u0939\u0915 \u0938\u0947\u0935\u093E \u0914\u0930 \u092A\u094D\u0930\u0938\u094D\u0924\u0941\u0924\u093F\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0909\u092A\u092F\u0941\u0915\u094D\u0924 \u0939\u0948\u0964",
|
|
1320
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/a0c4a8eadb7841cdae8e5e68031a2dfb.mp3"
|
|
1321
|
-
},
|
|
1322
|
-
{
|
|
1323
|
-
id: "3f065d660212478a9c697fa965b4d098",
|
|
1324
|
-
name: "Carmen",
|
|
1325
|
-
gender: "female",
|
|
1326
|
-
languages: ["es"],
|
|
1327
|
-
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1328
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/3421be48b6cb4c28bf829c25188e7e74.mp3"
|
|
1329
|
-
},
|
|
1330
|
-
{
|
|
1331
|
-
id: "ec0718028a2445fb9be8e8bfb56a0150",
|
|
1332
|
-
name: "Rodrigo",
|
|
1333
|
-
gender: "male",
|
|
1334
|
-
languages: ["es"],
|
|
1335
|
-
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1336
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/5a77c32365604800ad5b4eb13c5585df.mp3"
|
|
1337
|
-
},
|
|
1338
|
-
{
|
|
1339
|
-
id: "10a3a20742114a4ea6dd441e7591850f",
|
|
1340
|
-
name: "Manon",
|
|
1341
|
-
gender: "female",
|
|
1342
|
-
languages: ["fr"],
|
|
1343
|
-
description: "Une voix claire et vive, adapt\xE9e aux assistants vocaux et au support client.",
|
|
1344
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/f7b75ee1fa524e48a8cefb003cf72952.mp3"
|
|
1345
|
-
},
|
|
1346
|
-
{
|
|
1347
|
-
id: "f69bca092b674168a8d02d61ca20943c",
|
|
1348
|
-
name: "Lucas",
|
|
1349
|
-
gender: "male",
|
|
1350
|
-
languages: ["fr"],
|
|
1351
|
-
description: "Une voix claire et assur\xE9e, adapt\xE9e aux assistants vocaux et au service client.",
|
|
1352
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/86fca3e56a014a3d8a11450854bb8311.mp3"
|
|
1353
|
-
},
|
|
1354
|
-
{
|
|
1355
|
-
id: "3937b44b604249f18b94913daef94043",
|
|
1356
|
-
name: "Lena",
|
|
1357
|
-
gender: "female",
|
|
1358
|
-
languages: ["de"],
|
|
1359
|
-
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
1360
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/8659fec80b74442dab68a7755716a401.mp3"
|
|
1361
|
-
},
|
|
1362
|
-
{
|
|
1363
|
-
id: "c1e7cc926aa5469aa966c353094d4b0b",
|
|
1364
|
-
name: "Lukas",
|
|
1365
|
-
gender: "male",
|
|
1366
|
-
languages: ["de"],
|
|
1367
|
-
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
1368
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/fb1d538126bb4fe38f8366250f6a2136.mp3"
|
|
1369
|
-
},
|
|
1370
|
-
{
|
|
1371
|
-
id: "b3c060cc41544a7da94a2c487647c902",
|
|
1372
|
-
name: "Let\xEDcia",
|
|
1373
|
-
gender: "female",
|
|
1374
|
-
accent: "brazilian",
|
|
1375
|
-
languages: ["pt"],
|
|
1376
|
-
description: "A Brazilian-accented Portuguese woman's voice, in her late twenties. Soft, warm, intimate. A freelance designer from Belo Horizonte who enjoys long walks in the park. Best suited to companion apps and casual everyday conversation.",
|
|
1377
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/13c6c0d96b5c4069951f89868ee15360.mp3"
|
|
1378
|
-
},
|
|
1379
|
-
{
|
|
1380
|
-
id: "add7bcb8d3c8423bbfa152ca232aad6e",
|
|
1381
|
-
name: "Ricardo",
|
|
1382
|
-
gender: "male",
|
|
1383
|
-
accent: "brazilian",
|
|
1384
|
-
languages: ["pt"],
|
|
1385
|
-
description: "A Brazilian-accented Portuguese man's voice, in his late forties. Clear, professional, monotone. A high school history teacher from Curitiba who loves classical music. Best suited to lessons, tutoring and explainer content.",
|
|
1386
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/67475fc717ae45cbb38e647a2dd37fe1.mp3"
|
|
1387
|
-
},
|
|
1388
|
-
{
|
|
1389
|
-
id: "b2d9d8db057042688a5e318b8f405bc2",
|
|
1390
|
-
name: "Kyoko",
|
|
1391
|
-
gender: "female",
|
|
1392
|
-
languages: ["ja"],
|
|
1393
|
-
description: "\u4E01\u5BE7\u3067\u843D\u3061\u7740\u3044\u305F\u8A71\u3057\u65B9\u304C\u7279\u5FB4\u306E\u5973\u6027\u306E\u58F0\u3002\u304A\u5BA2\u69D8\u5BFE\u5FDC\u3084\u60C5\u5831\u63D0\u4F9B\u306B\u6700\u9069\u3002",
|
|
1394
|
-
previewUrl: "https://platform.r2.fish.audio/task/993b3ccb52124341aff79580f1ce5a5a.mp3"
|
|
1395
|
-
},
|
|
1396
|
-
{
|
|
1397
|
-
id: "297a6fd278df47c3b9da9bfdf55ac89a",
|
|
1398
|
-
name: "Satoru",
|
|
1399
|
-
gender: "male",
|
|
1400
|
-
languages: ["ja"],
|
|
1401
|
-
description: "\u82E5\u3005\u3057\u304F\u3082\u843D\u3061\u7740\u304D\u306E\u3042\u308B\u7537\u6027\u306E\u58F0\u3002\u65E5\u5E38\u306E\u8A9E\u308A\u3084\u30EA\u30E9\u30C3\u30AF\u30B9\u3057\u305F\u30CA\u30EC\u30FC\u30B7\u30E7\u30F3\u306B\u6700\u9069\u3002",
|
|
1402
|
-
previewUrl: "https://platform.r2.fish.audio/task/1b4712fb831f4c149eef6b0133157418.mp3"
|
|
1403
|
-
},
|
|
1404
|
-
{
|
|
1405
|
-
id: "0b14f34a13a94ed88fe6113193749bb0",
|
|
1406
|
-
name: "Fatima",
|
|
1407
|
-
gender: "female",
|
|
1408
|
-
languages: ["ar"],
|
|
1409
|
-
description: "\u0635\u0648\u062A \u0648\u0627\u0636\u062D \u0648\u0648\u0627\u062B\u0642 \u064A\u0646\u0627\u0633\u0628 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0627\u062A \u0627\u0644\u0635\u0648\u062A\u064A\u0629 \u0648\u062E\u062F\u0645\u0629 \u0627\u0644\u0639\u0645\u0644\u0627\u0621 \u0648\u0627\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u062A\u0642\u062F\u064A\u0645\u064A\u0629.",
|
|
1410
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/93406e1b905a4c4994306e3421243390.mp3"
|
|
1411
|
-
},
|
|
1412
|
-
{
|
|
1413
|
-
id: "74c6aba5cbf94a15bbdc547ffce5cb38",
|
|
1414
|
-
name: "Yutong",
|
|
1415
|
-
gender: "female",
|
|
1416
|
-
languages: ["zh"],
|
|
1417
|
-
description: "\u58F0\u97F3\u6E05\u6670\u81EA\u7136\uFF0C\u8868\u8FBE\u5229\u843D\uFF0C\u9002\u5408\u8BED\u97F3\u52A9\u624B\u3001\u5BA2\u670D\u548C\u65E5\u5E38\u64AD\u62A5\u3002",
|
|
1418
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a48320f37fe44c4699549a1afc3778e8.mp3"
|
|
1419
|
-
}
|
|
1420
|
-
];
|
|
1421
|
-
|
|
1422
|
-
// src/catalog/speech-fish.ts
|
|
1423
|
-
var FISH_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/fishaudio.png";
|
|
1424
|
-
var PER_CALL = { unit: "images" };
|
|
1425
|
-
var PER_REQUEST = { unit: "requests" };
|
|
1426
|
-
var TTS_MAX_CHARS = 1e4;
|
|
1427
|
-
function fishTts(id, label, providerModelId, description) {
|
|
1428
|
-
return {
|
|
1429
|
-
id,
|
|
1430
|
-
aliases: [],
|
|
1431
|
-
label,
|
|
1432
|
-
type: "speech",
|
|
1433
|
-
adapter: "fish",
|
|
1434
|
-
providerModelId,
|
|
1435
|
-
lifecycle: "active",
|
|
1436
|
-
exposure: [],
|
|
1437
|
-
constraints: {
|
|
1438
|
-
voices: FISH_VOICES,
|
|
1439
|
-
outputFormats: ["mp3", "wav"],
|
|
1440
|
-
supports: [],
|
|
1441
|
-
prompt: { referenceSyntax: "numbered", maxChars: TTS_MAX_CHARS }
|
|
1442
|
-
},
|
|
1443
|
-
defaults: { voice: "9a9cf47702da476aa4629e2506d4a857", outputFormat: "mp3" },
|
|
1444
|
-
usage: PER_CALL,
|
|
1445
|
-
pricingKind: "flat",
|
|
1446
|
-
display: { provider: "fishaudio", logo: FISH_LOGO, description },
|
|
1447
|
-
capabilities: { customVoices: true }
|
|
1448
|
-
};
|
|
1449
|
-
}
|
|
1450
|
-
var FISH_MODELS = [
|
|
1451
|
-
fishTts(
|
|
1452
|
-
"fish-s2.1-pro",
|
|
1453
|
-
"Fish Audio S2.1 Pro",
|
|
1454
|
-
"s2.1-pro",
|
|
1455
|
-
"Fish Audio S2.1 Pro text to speech in 83 languages, with [bracket] directions and your own cloned voices."
|
|
1456
|
-
),
|
|
1457
|
-
fishTts(
|
|
1458
|
-
"fish-s2.1-pro-free",
|
|
1459
|
-
"Fish Audio S2.1 Pro Free",
|
|
1460
|
-
"s2.1-pro-free",
|
|
1461
|
-
"Fish Audio S2.1 Pro on the free developer tier: the same voices at no cost, without latency or data-processing guarantees."
|
|
1462
|
-
),
|
|
1463
|
-
fishTts(
|
|
1464
|
-
"fish-drama-3",
|
|
1465
|
-
"Fish Audio Drama 3",
|
|
1466
|
-
"drama-3",
|
|
1467
|
-
"Fish Audio Drama 3 text to speech you direct like an actor: [directions], sounds, pauses and per-word tags."
|
|
1468
|
-
),
|
|
1469
|
-
{
|
|
1470
|
-
id: "fish-voice-clone",
|
|
1471
|
-
aliases: [],
|
|
1472
|
-
label: "Fish Audio Voice Clone",
|
|
1473
|
-
type: "voice-clone",
|
|
1474
|
-
adapter: "fish",
|
|
1475
|
-
providerModelId: "voice-clone",
|
|
1476
|
-
lifecycle: "active",
|
|
1477
|
-
exposure: [],
|
|
1478
|
-
constraints: {
|
|
1479
|
-
// POST /model takes 1-20 voice files; Fish advises 10 s or more of clean speech each.
|
|
1480
|
-
references: { audios: 20, audioFormats: ["wav", "mp3", "m4a", "opus"] },
|
|
1481
|
-
supports: []
|
|
1482
|
-
},
|
|
1483
|
-
defaults: {},
|
|
1484
|
-
usage: PER_REQUEST,
|
|
1485
|
-
pricingKind: "flat",
|
|
1486
|
-
display: {
|
|
1487
|
-
provider: "fishaudio",
|
|
1488
|
-
logo: FISH_LOGO,
|
|
1489
|
-
description: "Clone a private, reusable voice from one or more clean recordings, then speak with it on the Fish Audio speech models."
|
|
1490
|
-
},
|
|
1491
|
-
capabilities: {}
|
|
1492
|
-
},
|
|
1493
|
-
{
|
|
1494
|
-
id: "fish-voice-design-1",
|
|
1495
|
-
aliases: [],
|
|
1496
|
-
label: "Fish Audio Voice Design",
|
|
1497
|
-
type: "voice-design",
|
|
1498
|
-
adapter: "fish",
|
|
1499
|
-
providerModelId: "voice-design-1",
|
|
1500
|
-
lifecycle: "active",
|
|
1501
|
-
exposure: [],
|
|
1502
|
-
constraints: {
|
|
1503
|
-
voiceDesign: { maxCandidates: 4, previewMaxChars: 150 },
|
|
1504
|
-
supports: [],
|
|
1505
|
-
prompt: { referenceSyntax: "numbered", maxChars: 2e3 }
|
|
1506
|
-
},
|
|
1507
|
-
defaults: {},
|
|
1508
|
-
usage: PER_REQUEST,
|
|
1509
|
-
pricingKind: "flat",
|
|
1510
|
-
display: {
|
|
1511
|
-
provider: "fishaudio",
|
|
1512
|
-
logo: FISH_LOGO,
|
|
1513
|
-
description: "Describe a voice and get up to four short candidates; keep one as a cloned voice."
|
|
1514
|
-
},
|
|
1515
|
-
capabilities: {}
|
|
1516
|
-
}
|
|
1517
|
-
];
|
|
1518
|
-
|
|
1519
1222
|
// src/catalog/languages-audio.ts
|
|
1520
1223
|
var ELEVENLABS_V4_LANGUAGES = [
|
|
1521
1224
|
{ code: "af", name: "Afrikaans" },
|
|
@@ -1917,104 +1620,467 @@ var ELEVENLABS_VOICES = [
|
|
|
1917
1620
|
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/SAz9YHcvj6GT2YYXdXww/e6c95f0b-2227-491a-b3d7-2249240decb7.mp3"
|
|
1918
1621
|
},
|
|
1919
1622
|
{
|
|
1920
|
-
id: "Liam",
|
|
1921
|
-
name: "Liam",
|
|
1623
|
+
id: "Liam",
|
|
1624
|
+
name: "Liam",
|
|
1625
|
+
gender: "male",
|
|
1626
|
+
accent: "american",
|
|
1627
|
+
languages: ["en", "de", "pt", "cs", "pl", "tr", "hi"],
|
|
1628
|
+
description: "A young adult with energy and warmth - suitable for reels and shorts.",
|
|
1629
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/TX3LPaxmHKxFdv7VOQHJ/63148076-6363-42db-aea8-31424308b92c.mp3"
|
|
1630
|
+
},
|
|
1631
|
+
{ id: "Charlotte", name: "Charlotte" },
|
|
1632
|
+
{
|
|
1633
|
+
id: "Alice",
|
|
1634
|
+
name: "Alice",
|
|
1635
|
+
gender: "female",
|
|
1636
|
+
accent: "british",
|
|
1637
|
+
languages: ["en", "it", "fr", "ar", "ja", "pl", "hi"],
|
|
1638
|
+
description: "Clear and engaging, friendly woman with a British accent suitable for e-learning.",
|
|
1639
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/Xb7hH8MSUJpSbSDYk0k2/d10f7534-11f6-41fe-a012-2de1e482d336.mp3"
|
|
1640
|
+
},
|
|
1641
|
+
{
|
|
1642
|
+
id: "Matilda",
|
|
1643
|
+
name: "Matilda",
|
|
1644
|
+
gender: "female",
|
|
1645
|
+
accent: "american",
|
|
1646
|
+
languages: ["en", "it", "fr", "de", "ar", "es"],
|
|
1647
|
+
description: "A professional woman with a pleasing alto pitch. Suitable for many use cases.",
|
|
1648
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/XrExE9yKIg1WjnnlVkGX/b930e18d-6b4d-466e-bab2-0ae97c6d8535.mp3"
|
|
1649
|
+
},
|
|
1650
|
+
{
|
|
1651
|
+
id: "Will",
|
|
1652
|
+
name: "Will",
|
|
1653
|
+
gender: "male",
|
|
1654
|
+
accent: "american",
|
|
1655
|
+
languages: ["en", "fr", "de", "pt", "zh", "cs", "fil", "sk", "es", "sv"],
|
|
1656
|
+
description: "Conversational and laid back.",
|
|
1657
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/bIHbv24MWmeRgasZH58o/8caf8f3d-ad29-4980-af41-53f20c72d7a4.mp3"
|
|
1658
|
+
},
|
|
1659
|
+
{
|
|
1660
|
+
id: "Jessica",
|
|
1661
|
+
name: "Jessica",
|
|
1662
|
+
gender: "female",
|
|
1663
|
+
accent: "american",
|
|
1664
|
+
languages: ["en", "fr", "ar", "ja", "zh", "de", "cs", "hi"],
|
|
1665
|
+
description: "Young and popular, this playful American female voice is perfect for trendy content.",
|
|
1666
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cgSgspJ2msm6clMCkdW9/56a97bf8-b69b-448f-846c-c3a11683d45a.mp3"
|
|
1667
|
+
},
|
|
1668
|
+
{
|
|
1669
|
+
id: "Eric",
|
|
1670
|
+
name: "Eric",
|
|
1671
|
+
gender: "male",
|
|
1672
|
+
accent: "american",
|
|
1673
|
+
languages: ["en", "fr", "pt", "de", "sk", "es"],
|
|
1674
|
+
description: "A smooth tenor pitch from a man in his 40s - perfect for agentic use cases.",
|
|
1675
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cjVigY5qzO86Huf0OWal/d098fda0-6456-4030-b3d8-63aa048c9070.mp3"
|
|
1676
|
+
},
|
|
1677
|
+
{
|
|
1678
|
+
id: "Chris",
|
|
1679
|
+
name: "Chris",
|
|
1680
|
+
gender: "male",
|
|
1681
|
+
accent: "american",
|
|
1682
|
+
languages: ["en", "fr", "ar", "pt", "sv", "hi"],
|
|
1683
|
+
description: "Natural and real, this down-to-earth voice is great across many use-cases.",
|
|
1684
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/iP95p4xoKVk53GoZ742B/3f4bde72-cc48-40dd-829f-57fbf906f4d7.mp3"
|
|
1685
|
+
},
|
|
1686
|
+
{
|
|
1687
|
+
id: "Brian",
|
|
1688
|
+
name: "Brian",
|
|
1689
|
+
gender: "male",
|
|
1690
|
+
accent: "american",
|
|
1691
|
+
languages: ["en", "ar", "zh", "pt", "de", "nl", "sk", "ro", "hi"],
|
|
1692
|
+
description: "Middle-aged man with a resonant and comforting tone. Great for narrations and advertisements.",
|
|
1693
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/nPczCjzI2devNBz1zQrb/2dd3e72c-4fd3-42f1-93ea-abc5d4e5aa1d.mp3"
|
|
1694
|
+
},
|
|
1695
|
+
{
|
|
1696
|
+
id: "Daniel",
|
|
1697
|
+
name: "Daniel",
|
|
1698
|
+
gender: "male",
|
|
1699
|
+
accent: "british",
|
|
1700
|
+
languages: ["en", "de", "tr"],
|
|
1701
|
+
description: "A strong voice perfect for delivering a professional broadcast or news story.",
|
|
1702
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/onwK4e9ZLuTAKqWW03F9/7eee0236-1a72-4b86-b303-5dcadc007ba9.mp3"
|
|
1703
|
+
},
|
|
1704
|
+
{
|
|
1705
|
+
id: "Lily",
|
|
1706
|
+
name: "Lily",
|
|
1707
|
+
gender: "female",
|
|
1708
|
+
accent: "british",
|
|
1709
|
+
languages: ["en", "it", "de", "zh", "cs", "nl", "pl"],
|
|
1710
|
+
description: "Velvety British female voice delivers news and narrations with warmth and clarity.",
|
|
1711
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pFZP5JQG7iQjIQuC4Bku/89b68b35-b3dd-4348-a84a-a3c13a3c2b30.mp3"
|
|
1712
|
+
},
|
|
1713
|
+
{
|
|
1714
|
+
id: "Bill",
|
|
1715
|
+
name: "Bill",
|
|
1716
|
+
gender: "male",
|
|
1717
|
+
accent: "american",
|
|
1718
|
+
languages: ["en", "fr", "ar", "zh", "de", "cs"],
|
|
1719
|
+
description: "Friendly and comforting voice ready to narrate your stories.",
|
|
1720
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pqHfZKP75CvOlQylNhV4/d782b3ff-84ba-4029-848c-acf01285524d.mp3"
|
|
1721
|
+
}
|
|
1722
|
+
];
|
|
1723
|
+
var PREMADE_ID = /\/premade\/voices\/([A-Za-z0-9]+)\//;
|
|
1724
|
+
var ELEVENLABS_DIRECT_VOICES = ELEVENLABS_VOICES.flatMap((v) => {
|
|
1725
|
+
const id = v.previewUrl ? PREMADE_ID.exec(v.previewUrl)?.[1] : void 0;
|
|
1726
|
+
return id ? [{ ...v, id }] : [];
|
|
1727
|
+
});
|
|
1728
|
+
var ELEVENLABS_DIRECT_DEFAULT_VOICE = "EXAVITQu4vr4xnSDxMaL";
|
|
1729
|
+
|
|
1730
|
+
// src/catalog/speech-elevenlabs-direct.ts
|
|
1731
|
+
var ELEVENLABS_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
|
|
1732
|
+
var PER_CALL = { unit: "images" };
|
|
1733
|
+
var PER_REQUEST = { unit: "requests" };
|
|
1734
|
+
var ELEVENLABS_DIRECT_MODELS = [
|
|
1735
|
+
{
|
|
1736
|
+
id: "elevenlabs-v4-direct",
|
|
1737
|
+
aliases: [],
|
|
1738
|
+
label: "ElevenLabs v4 (direct)",
|
|
1739
|
+
type: "speech",
|
|
1740
|
+
adapter: "elevenlabs",
|
|
1741
|
+
providerModelId: "eleven_v4",
|
|
1742
|
+
lifecycle: "active",
|
|
1743
|
+
exposure: [],
|
|
1744
|
+
constraints: {
|
|
1745
|
+
// Premade voices under their ElevenLabs ids (the direct API takes ids, not names).
|
|
1746
|
+
voices: ELEVENLABS_DIRECT_VOICES,
|
|
1747
|
+
languages: ELEVENLABS_V4_LANGUAGES,
|
|
1748
|
+
outputFormats: ELEVENLABS_MP3_FORMATS,
|
|
1749
|
+
supports: [],
|
|
1750
|
+
// ElevenLabs docs: 10,000 characters per request.
|
|
1751
|
+
prompt: { referenceSyntax: "numbered", maxChars: 1e4 }
|
|
1752
|
+
},
|
|
1753
|
+
defaults: { voice: ELEVENLABS_DIRECT_DEFAULT_VOICE, outputFormat: "mp3_44100_128" },
|
|
1754
|
+
usage: PER_CALL,
|
|
1755
|
+
pricingKind: "flat",
|
|
1756
|
+
display: {
|
|
1757
|
+
provider: "elevenlabs",
|
|
1758
|
+
logo: ELEVENLABS_LOGO,
|
|
1759
|
+
description: "ElevenLabs v4 text to speech with audio tags, in a premade voice or your own cloned voice; up to 10,000 characters."
|
|
1760
|
+
},
|
|
1761
|
+
capabilities: { customVoices: true }
|
|
1762
|
+
},
|
|
1763
|
+
{
|
|
1764
|
+
id: "elevenlabs-ivc",
|
|
1765
|
+
aliases: [],
|
|
1766
|
+
label: "ElevenLabs Instant Voice Clone",
|
|
1767
|
+
type: "voice-clone",
|
|
1768
|
+
adapter: "elevenlabs",
|
|
1769
|
+
providerModelId: "ivc",
|
|
1770
|
+
lifecycle: "active",
|
|
1771
|
+
exposure: [],
|
|
1772
|
+
constraints: {
|
|
1773
|
+
// POST /v1/voices/add; ElevenLabs takes up to 25 samples and advises 1-2 minutes of
|
|
1774
|
+
// clean speech in total. Each clone uses a voice slot on our plan until deleted.
|
|
1775
|
+
references: { audios: 25, audioFormats: ["mp3", "wav", "m4a", "webm", "ogg"] },
|
|
1776
|
+
supports: []
|
|
1777
|
+
},
|
|
1778
|
+
defaults: {},
|
|
1779
|
+
usage: PER_REQUEST,
|
|
1780
|
+
pricingKind: "flat",
|
|
1781
|
+
display: {
|
|
1782
|
+
provider: "elevenlabs",
|
|
1783
|
+
logo: ELEVENLABS_LOGO,
|
|
1784
|
+
description: "Clone a private, reusable voice from one or more clean recordings, then speak with it on ElevenLabs v4 (direct)."
|
|
1785
|
+
},
|
|
1786
|
+
capabilities: {}
|
|
1787
|
+
}
|
|
1788
|
+
];
|
|
1789
|
+
|
|
1790
|
+
// src/catalog/voices-fish.ts
|
|
1791
|
+
var FISH_VOICES = [
|
|
1792
|
+
{
|
|
1793
|
+
id: "933563129e564b19a115bedd57b7406a",
|
|
1794
|
+
name: "Sarah",
|
|
1795
|
+
gender: "female",
|
|
1796
|
+
languages: ["en"],
|
|
1797
|
+
description: "An engaged speaker.",
|
|
1798
|
+
previewUrl: "https://platform.r2.fish.audio/task/4e204945670c460c86fdab57512cb308.mp3"
|
|
1799
|
+
},
|
|
1800
|
+
{
|
|
1801
|
+
id: "bf322df2096a46f18c579d0baa36f41d",
|
|
1802
|
+
name: "Adrian",
|
|
1803
|
+
gender: "male",
|
|
1804
|
+
languages: ["en"],
|
|
1805
|
+
description: "A steady and reliable narrator.",
|
|
1806
|
+
previewUrl: "https://platform.r2.fish.audio/task/d730b09f4a484316a77ecc86137e85fb.mp3"
|
|
1807
|
+
},
|
|
1808
|
+
{
|
|
1809
|
+
id: "536d3a5e000945adb7038665781a4aca",
|
|
1810
|
+
name: "Ethan",
|
|
1811
|
+
gender: "male",
|
|
1812
|
+
languages: ["en"],
|
|
1813
|
+
description: "A curious explainer.",
|
|
1814
|
+
previewUrl: "https://platform.r2.fish.audio/task/bdd677ed767744fc91f166468786264b.mp3"
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
id: "b347db033a6549378b48d00acb0d06cd",
|
|
1818
|
+
name: "Selene",
|
|
1819
|
+
gender: "female",
|
|
1820
|
+
languages: ["en"],
|
|
1821
|
+
description: "A meditative female voice.",
|
|
1822
|
+
previewUrl: "https://platform.r2.fish.audio/task/fcf629b4a0b343558f461338ba1b9da4.mp3"
|
|
1823
|
+
},
|
|
1824
|
+
{
|
|
1825
|
+
id: "9a9cf47702da476aa4629e2506d4a857",
|
|
1826
|
+
name: "Hannah",
|
|
1827
|
+
gender: "female",
|
|
1828
|
+
languages: ["en"],
|
|
1829
|
+
description: "A conversation specialist.",
|
|
1830
|
+
previewUrl: "https://platform.r2.fish.audio/task/08d658835feb427db808e37060b78eb0.mp3"
|
|
1831
|
+
},
|
|
1832
|
+
{
|
|
1833
|
+
id: "79d0bd3e4e5444b18f7b6d89b5927bf1",
|
|
1834
|
+
name: "Jordan",
|
|
1835
|
+
gender: "male",
|
|
1836
|
+
languages: ["en"],
|
|
1837
|
+
description: "A motivational speaker.",
|
|
1838
|
+
previewUrl: "https://platform.r2.fish.audio/task/edecbc0bdd4c46c39eda8520a0f729ef.mp3"
|
|
1839
|
+
},
|
|
1840
|
+
{
|
|
1841
|
+
id: "e3cd384158934cc9a01029cd7d278634",
|
|
1842
|
+
name: "Laura",
|
|
1843
|
+
gender: "female",
|
|
1844
|
+
languages: ["en"],
|
|
1845
|
+
description: "A confident female narrator.",
|
|
1846
|
+
previewUrl: "https://platform.r2.fish.audio/task/e821bef995344d519caa1c93d808db23.mp3"
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
id: "f3a2b90078d54a65af4b95f63bc7798e",
|
|
1850
|
+
name: "Sheila",
|
|
1851
|
+
gender: "female",
|
|
1852
|
+
accent: "american",
|
|
1853
|
+
languages: ["en"],
|
|
1854
|
+
description: "A young American English woman's voice.",
|
|
1855
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/9bb9e1a1cf3f47f38700da1c5c0a678a.mp3"
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
id: "0db6e93af420470b9d9b9a886dbaa954",
|
|
1859
|
+
name: "Kai",
|
|
1860
|
+
gender: "male",
|
|
1861
|
+
languages: ["en"],
|
|
1862
|
+
description: "A friendly English man's voice for companion apps and everyday conversation.",
|
|
1863
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/13306f1172544c3ba3106d1e363feaa6.mp3"
|
|
1864
|
+
},
|
|
1865
|
+
{
|
|
1866
|
+
id: "8abfa9ebd4c24a3399b68c3cdac8c7b5",
|
|
1867
|
+
name: "Freya",
|
|
1868
|
+
gender: "female",
|
|
1869
|
+
accent: "british",
|
|
1870
|
+
languages: ["en"],
|
|
1871
|
+
description: "A natural, professional British English voice with a brisk, conversational pace. Clear and easy to follow, suited to voice assistants, customer support and everyday narration.",
|
|
1872
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/07918705a56b42daaab149f65392cea7.mp3"
|
|
1873
|
+
},
|
|
1874
|
+
{
|
|
1875
|
+
id: "2f64e528a4f2406691925ab1e0ed5b7f",
|
|
1876
|
+
name: "Ananya",
|
|
1877
|
+
gender: "female",
|
|
1878
|
+
languages: ["hi"],
|
|
1879
|
+
description: "\u0938\u093E\u092B\u093C \u0914\u0930 \u0906\u0924\u094D\u092E\u0935\u093F\u0936\u094D\u0935\u093E\u0938 \u092D\u0930\u0940 \u0906\u0935\u093E\u091C\u093C, \u091C\u094B \u0935\u0949\u0907\u0938 \u0905\u0938\u093F\u0938\u094D\u091F\u0947\u0902\u091F, \u0917\u094D\u0930\u093E\u0939\u0915 \u0938\u0947\u0935\u093E \u0914\u0930 \u092A\u094D\u0930\u0938\u094D\u0924\u0941\u0924\u093F\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0909\u092A\u092F\u0941\u0915\u094D\u0924 \u0939\u0948\u0964",
|
|
1880
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a17a700668d8405f8316db120733145c.mp3"
|
|
1881
|
+
},
|
|
1882
|
+
{
|
|
1883
|
+
id: "cefd91a07b99468f9148e2580990082d",
|
|
1884
|
+
name: "Arjun",
|
|
1885
|
+
gender: "male",
|
|
1886
|
+
languages: ["hi"],
|
|
1887
|
+
description: "\u0938\u093E\u092B\u093C \u0914\u0930 \u0906\u0924\u094D\u092E\u0935\u093F\u0936\u094D\u0935\u093E\u0938 \u092D\u0930\u0940 \u0906\u0935\u093E\u091C\u093C, \u091C\u094B \u0935\u0949\u0907\u0938 \u0905\u0938\u093F\u0938\u094D\u091F\u0947\u0902\u091F, \u0917\u094D\u0930\u093E\u0939\u0915 \u0938\u0947\u0935\u093E \u0914\u0930 \u092A\u094D\u0930\u0938\u094D\u0924\u0941\u0924\u093F\u092F\u094B\u0902 \u0915\u0947 \u0932\u093F\u090F \u0909\u092A\u092F\u0941\u0915\u094D\u0924 \u0939\u0948\u0964",
|
|
1888
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/a0c4a8eadb7841cdae8e5e68031a2dfb.mp3"
|
|
1889
|
+
},
|
|
1890
|
+
{
|
|
1891
|
+
id: "3f065d660212478a9c697fa965b4d098",
|
|
1892
|
+
name: "Carmen",
|
|
1893
|
+
gender: "female",
|
|
1894
|
+
languages: ["es"],
|
|
1895
|
+
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1896
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/3421be48b6cb4c28bf829c25188e7e74.mp3"
|
|
1897
|
+
},
|
|
1898
|
+
{
|
|
1899
|
+
id: "ec0718028a2445fb9be8e8bfb56a0150",
|
|
1900
|
+
name: "Rodrigo",
|
|
1922
1901
|
gender: "male",
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/TX3LPaxmHKxFdv7VOQHJ/63148076-6363-42db-aea8-31424308b92c.mp3"
|
|
1902
|
+
languages: ["es"],
|
|
1903
|
+
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1904
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/5a77c32365604800ad5b4eb13c5585df.mp3"
|
|
1927
1905
|
},
|
|
1928
|
-
{ id: "Charlotte", name: "Charlotte" },
|
|
1929
1906
|
{
|
|
1930
|
-
id: "
|
|
1931
|
-
name: "
|
|
1907
|
+
id: "10a3a20742114a4ea6dd441e7591850f",
|
|
1908
|
+
name: "Manon",
|
|
1932
1909
|
gender: "female",
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/Xb7hH8MSUJpSbSDYk0k2/d10f7534-11f6-41fe-a012-2de1e482d336.mp3"
|
|
1910
|
+
languages: ["fr"],
|
|
1911
|
+
description: "Une voix claire et vive, adapt\xE9e aux assistants vocaux et au support client.",
|
|
1912
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/f7b75ee1fa524e48a8cefb003cf72952.mp3"
|
|
1937
1913
|
},
|
|
1938
1914
|
{
|
|
1939
|
-
id: "
|
|
1940
|
-
name: "
|
|
1915
|
+
id: "f69bca092b674168a8d02d61ca20943c",
|
|
1916
|
+
name: "Lucas",
|
|
1917
|
+
gender: "male",
|
|
1918
|
+
languages: ["fr"],
|
|
1919
|
+
description: "Une voix claire et assur\xE9e, adapt\xE9e aux assistants vocaux et au service client.",
|
|
1920
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/86fca3e56a014a3d8a11450854bb8311.mp3"
|
|
1921
|
+
},
|
|
1922
|
+
{
|
|
1923
|
+
id: "3937b44b604249f18b94913daef94043",
|
|
1924
|
+
name: "Lena",
|
|
1941
1925
|
gender: "female",
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/XrExE9yKIg1WjnnlVkGX/b930e18d-6b4d-466e-bab2-0ae97c6d8535.mp3"
|
|
1926
|
+
languages: ["de"],
|
|
1927
|
+
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
1928
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/8659fec80b74442dab68a7755716a401.mp3"
|
|
1946
1929
|
},
|
|
1947
1930
|
{
|
|
1948
|
-
id: "
|
|
1949
|
-
name: "
|
|
1931
|
+
id: "c1e7cc926aa5469aa966c353094d4b0b",
|
|
1932
|
+
name: "Lukas",
|
|
1950
1933
|
gender: "male",
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/bIHbv24MWmeRgasZH58o/8caf8f3d-ad29-4980-af41-53f20c72d7a4.mp3"
|
|
1934
|
+
languages: ["de"],
|
|
1935
|
+
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
1936
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/fb1d538126bb4fe38f8366250f6a2136.mp3"
|
|
1955
1937
|
},
|
|
1956
1938
|
{
|
|
1957
|
-
id: "
|
|
1958
|
-
name: "
|
|
1939
|
+
id: "b3c060cc41544a7da94a2c487647c902",
|
|
1940
|
+
name: "Let\xEDcia",
|
|
1959
1941
|
gender: "female",
|
|
1960
|
-
accent: "
|
|
1961
|
-
languages: ["
|
|
1962
|
-
description: "
|
|
1963
|
-
previewUrl: "https://
|
|
1942
|
+
accent: "brazilian",
|
|
1943
|
+
languages: ["pt"],
|
|
1944
|
+
description: "A Brazilian-accented Portuguese woman's voice, in her late twenties. Soft, warm, intimate. A freelance designer from Belo Horizonte who enjoys long walks in the park. Best suited to companion apps and casual everyday conversation.",
|
|
1945
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/13c6c0d96b5c4069951f89868ee15360.mp3"
|
|
1964
1946
|
},
|
|
1965
1947
|
{
|
|
1966
|
-
id: "
|
|
1967
|
-
name: "
|
|
1948
|
+
id: "add7bcb8d3c8423bbfa152ca232aad6e",
|
|
1949
|
+
name: "Ricardo",
|
|
1968
1950
|
gender: "male",
|
|
1969
|
-
accent: "
|
|
1970
|
-
languages: ["
|
|
1971
|
-
description: "A
|
|
1972
|
-
previewUrl: "https://
|
|
1951
|
+
accent: "brazilian",
|
|
1952
|
+
languages: ["pt"],
|
|
1953
|
+
description: "A Brazilian-accented Portuguese man's voice, in his late forties. Clear, professional, monotone. A high school history teacher from Curitiba who loves classical music. Best suited to lessons, tutoring and explainer content.",
|
|
1954
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/67475fc717ae45cbb38e647a2dd37fe1.mp3"
|
|
1973
1955
|
},
|
|
1974
1956
|
{
|
|
1975
|
-
id: "
|
|
1976
|
-
name: "
|
|
1977
|
-
gender: "
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
1981
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/iP95p4xoKVk53GoZ742B/3f4bde72-cc48-40dd-829f-57fbf906f4d7.mp3"
|
|
1957
|
+
id: "b2d9d8db057042688a5e318b8f405bc2",
|
|
1958
|
+
name: "Kyoko",
|
|
1959
|
+
gender: "female",
|
|
1960
|
+
languages: ["ja"],
|
|
1961
|
+
description: "\u4E01\u5BE7\u3067\u843D\u3061\u7740\u3044\u305F\u8A71\u3057\u65B9\u304C\u7279\u5FB4\u306E\u5973\u6027\u306E\u58F0\u3002\u304A\u5BA2\u69D8\u5BFE\u5FDC\u3084\u60C5\u5831\u63D0\u4F9B\u306B\u6700\u9069\u3002",
|
|
1962
|
+
previewUrl: "https://platform.r2.fish.audio/task/993b3ccb52124341aff79580f1ce5a5a.mp3"
|
|
1982
1963
|
},
|
|
1983
1964
|
{
|
|
1984
|
-
id: "
|
|
1985
|
-
name: "
|
|
1965
|
+
id: "297a6fd278df47c3b9da9bfdf55ac89a",
|
|
1966
|
+
name: "Satoru",
|
|
1986
1967
|
gender: "male",
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/nPczCjzI2devNBz1zQrb/2dd3e72c-4fd3-42f1-93ea-abc5d4e5aa1d.mp3"
|
|
1968
|
+
languages: ["ja"],
|
|
1969
|
+
description: "\u82E5\u3005\u3057\u304F\u3082\u843D\u3061\u7740\u304D\u306E\u3042\u308B\u7537\u6027\u306E\u58F0\u3002\u65E5\u5E38\u306E\u8A9E\u308A\u3084\u30EA\u30E9\u30C3\u30AF\u30B9\u3057\u305F\u30CA\u30EC\u30FC\u30B7\u30E7\u30F3\u306B\u6700\u9069\u3002",
|
|
1970
|
+
previewUrl: "https://platform.r2.fish.audio/task/1b4712fb831f4c149eef6b0133157418.mp3"
|
|
1991
1971
|
},
|
|
1992
1972
|
{
|
|
1993
|
-
id: "
|
|
1994
|
-
name: "
|
|
1995
|
-
gender: "
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/onwK4e9ZLuTAKqWW03F9/7eee0236-1a72-4b86-b303-5dcadc007ba9.mp3"
|
|
1973
|
+
id: "0b14f34a13a94ed88fe6113193749bb0",
|
|
1974
|
+
name: "Fatima",
|
|
1975
|
+
gender: "female",
|
|
1976
|
+
languages: ["ar"],
|
|
1977
|
+
description: "\u0635\u0648\u062A \u0648\u0627\u0636\u062D \u0648\u0648\u0627\u062B\u0642 \u064A\u0646\u0627\u0633\u0628 \u0627\u0644\u0645\u0633\u0627\u0639\u062F\u0627\u062A \u0627\u0644\u0635\u0648\u062A\u064A\u0629 \u0648\u062E\u062F\u0645\u0629 \u0627\u0644\u0639\u0645\u0644\u0627\u0621 \u0648\u0627\u0644\u0639\u0631\u0648\u0636 \u0627\u0644\u062A\u0642\u062F\u064A\u0645\u064A\u0629.",
|
|
1978
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/93406e1b905a4c4994306e3421243390.mp3"
|
|
2000
1979
|
},
|
|
2001
1980
|
{
|
|
2002
|
-
id: "
|
|
2003
|
-
name: "
|
|
1981
|
+
id: "74c6aba5cbf94a15bbdc547ffce5cb38",
|
|
1982
|
+
name: "Yutong",
|
|
2004
1983
|
gender: "female",
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
1984
|
+
languages: ["zh"],
|
|
1985
|
+
description: "\u58F0\u97F3\u6E05\u6670\u81EA\u7136\uFF0C\u8868\u8FBE\u5229\u843D\uFF0C\u9002\u5408\u8BED\u97F3\u52A9\u624B\u3001\u5BA2\u670D\u548C\u65E5\u5E38\u64AD\u62A5\u3002",
|
|
1986
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a48320f37fe44c4699549a1afc3778e8.mp3"
|
|
1987
|
+
}
|
|
1988
|
+
];
|
|
1989
|
+
|
|
1990
|
+
// src/catalog/speech-fish.ts
|
|
1991
|
+
var FISH_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/fishaudio.png";
|
|
1992
|
+
var PER_CALL2 = { unit: "images" };
|
|
1993
|
+
var PER_REQUEST2 = { unit: "requests" };
|
|
1994
|
+
var TTS_MAX_CHARS = 1e4;
|
|
1995
|
+
function fishTts(id, label, providerModelId, description) {
|
|
1996
|
+
return {
|
|
1997
|
+
id,
|
|
1998
|
+
aliases: [],
|
|
1999
|
+
label,
|
|
2000
|
+
type: "speech",
|
|
2001
|
+
adapter: "fish",
|
|
2002
|
+
providerModelId,
|
|
2003
|
+
lifecycle: "active",
|
|
2004
|
+
exposure: [],
|
|
2005
|
+
constraints: {
|
|
2006
|
+
voices: FISH_VOICES,
|
|
2007
|
+
outputFormats: ["mp3", "wav"],
|
|
2008
|
+
supports: [],
|
|
2009
|
+
prompt: { referenceSyntax: "numbered", maxChars: TTS_MAX_CHARS }
|
|
2010
|
+
},
|
|
2011
|
+
defaults: { voice: "9a9cf47702da476aa4629e2506d4a857", outputFormat: "mp3" },
|
|
2012
|
+
usage: PER_CALL2,
|
|
2013
|
+
pricingKind: "flat",
|
|
2014
|
+
display: { provider: "fishaudio", logo: FISH_LOGO, description },
|
|
2015
|
+
capabilities: { customVoices: true }
|
|
2016
|
+
};
|
|
2017
|
+
}
|
|
2018
|
+
var FISH_MODELS = [
|
|
2019
|
+
fishTts(
|
|
2020
|
+
"fish-s2.1-pro",
|
|
2021
|
+
"Fish Audio S2.1 Pro",
|
|
2022
|
+
"s2.1-pro",
|
|
2023
|
+
"Fish Audio S2.1 Pro text to speech in 83 languages, with [bracket] directions and your own cloned voices."
|
|
2024
|
+
),
|
|
2025
|
+
fishTts(
|
|
2026
|
+
"fish-s2.1-pro-free",
|
|
2027
|
+
"Fish Audio S2.1 Pro Free",
|
|
2028
|
+
"s2.1-pro-free",
|
|
2029
|
+
"Fish Audio S2.1 Pro on the free developer tier: the same voices at no cost, without latency or data-processing guarantees."
|
|
2030
|
+
),
|
|
2031
|
+
fishTts(
|
|
2032
|
+
"fish-drama-3",
|
|
2033
|
+
"Fish Audio Drama 3",
|
|
2034
|
+
"drama-3",
|
|
2035
|
+
"Fish Audio Drama 3 text to speech you direct like an actor: [directions], sounds, pauses and per-word tags."
|
|
2036
|
+
),
|
|
2037
|
+
{
|
|
2038
|
+
id: "fish-voice-clone",
|
|
2039
|
+
aliases: [],
|
|
2040
|
+
label: "Fish Audio Voice Clone",
|
|
2041
|
+
type: "voice-clone",
|
|
2042
|
+
adapter: "fish",
|
|
2043
|
+
providerModelId: "voice-clone",
|
|
2044
|
+
lifecycle: "active",
|
|
2045
|
+
exposure: [],
|
|
2046
|
+
constraints: {
|
|
2047
|
+
// POST /model takes 1-20 voice files; Fish advises 10 s or more of clean speech each.
|
|
2048
|
+
references: { audios: 20, audioFormats: ["wav", "mp3", "m4a", "opus"] },
|
|
2049
|
+
supports: []
|
|
2050
|
+
},
|
|
2051
|
+
defaults: {},
|
|
2052
|
+
usage: PER_REQUEST2,
|
|
2053
|
+
pricingKind: "flat",
|
|
2054
|
+
display: {
|
|
2055
|
+
provider: "fishaudio",
|
|
2056
|
+
logo: FISH_LOGO,
|
|
2057
|
+
description: "Clone a private, reusable voice from one or more clean recordings, then speak with it on the Fish Audio speech models."
|
|
2058
|
+
},
|
|
2059
|
+
capabilities: {}
|
|
2009
2060
|
},
|
|
2010
2061
|
{
|
|
2011
|
-
id: "
|
|
2012
|
-
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
|
|
2016
|
-
|
|
2017
|
-
|
|
2062
|
+
id: "fish-voice-design-1",
|
|
2063
|
+
aliases: [],
|
|
2064
|
+
label: "Fish Audio Voice Design",
|
|
2065
|
+
type: "voice-design",
|
|
2066
|
+
adapter: "fish",
|
|
2067
|
+
providerModelId: "voice-design-1",
|
|
2068
|
+
lifecycle: "active",
|
|
2069
|
+
exposure: [],
|
|
2070
|
+
constraints: {
|
|
2071
|
+
voiceDesign: { maxCandidates: 4, previewMaxChars: 150 },
|
|
2072
|
+
supports: [],
|
|
2073
|
+
prompt: { referenceSyntax: "numbered", maxChars: 2e3 }
|
|
2074
|
+
},
|
|
2075
|
+
defaults: {},
|
|
2076
|
+
usage: PER_REQUEST2,
|
|
2077
|
+
pricingKind: "flat",
|
|
2078
|
+
display: {
|
|
2079
|
+
provider: "fishaudio",
|
|
2080
|
+
logo: FISH_LOGO,
|
|
2081
|
+
description: "Describe a voice and get up to four short candidates; keep one as a cloned voice."
|
|
2082
|
+
},
|
|
2083
|
+
capabilities: {}
|
|
2018
2084
|
}
|
|
2019
2085
|
];
|
|
2020
2086
|
|
|
@@ -3593,11 +3659,11 @@ var MINIMAX_VOICES = [
|
|
|
3593
3659
|
];
|
|
3594
3660
|
|
|
3595
3661
|
// src/catalog/media-nodes.ts
|
|
3596
|
-
var
|
|
3662
|
+
var ELEVENLABS_LOGO2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
|
|
3597
3663
|
var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
|
|
3598
3664
|
var MINIMAX_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png";
|
|
3599
3665
|
var SYNC_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/sync.png";
|
|
3600
|
-
var
|
|
3666
|
+
var PER_CALL3 = { unit: "images" };
|
|
3601
3667
|
var EXPOSURE4 = ["cowork", "space_builder"];
|
|
3602
3668
|
var LIPSYNC_AUDIO = { audioSeconds: { max: 30 } };
|
|
3603
3669
|
function elevenLabsTts(tts) {
|
|
@@ -3618,9 +3684,9 @@ function elevenLabsTts(tts) {
|
|
|
3618
3684
|
prompt: { referenceSyntax: "numbered", maxChars: tts.maxChars }
|
|
3619
3685
|
},
|
|
3620
3686
|
defaults: { voice: "Rachel", ...tts.formats && { outputFormat: "mp3_44100_128" } },
|
|
3621
|
-
usage:
|
|
3687
|
+
usage: PER_CALL3,
|
|
3622
3688
|
pricingKind: "flat",
|
|
3623
|
-
display: { provider: "elevenlabs", logo:
|
|
3689
|
+
display: { provider: "elevenlabs", logo: ELEVENLABS_LOGO2, description: tts.description },
|
|
3624
3690
|
capabilities: {}
|
|
3625
3691
|
};
|
|
3626
3692
|
}
|
|
@@ -3642,7 +3708,7 @@ function geminiTts(id, label, description) {
|
|
|
3642
3708
|
prompt: { referenceSyntax: "numbered", maxChars: 8192 }
|
|
3643
3709
|
},
|
|
3644
3710
|
defaults: { voice: "Kore" },
|
|
3645
|
-
usage:
|
|
3711
|
+
usage: PER_CALL3,
|
|
3646
3712
|
pricingKind: "flat",
|
|
3647
3713
|
display: { provider: "google", logo: GOOGLE_LOGO, description },
|
|
3648
3714
|
capabilities: {}
|
|
@@ -3665,7 +3731,7 @@ function syncLipsync(id, label, providerModelId, syncModel, description) {
|
|
|
3665
3731
|
},
|
|
3666
3732
|
defaults: {},
|
|
3667
3733
|
...syncModel !== void 0 && { providerOptions: { fal: { model: syncModel } } },
|
|
3668
|
-
usage:
|
|
3734
|
+
usage: PER_CALL3,
|
|
3669
3735
|
pricingKind: "flat",
|
|
3670
3736
|
display: { provider: "sync", logo: SYNC_LOGO, description },
|
|
3671
3737
|
capabilities: { acceptsSourceVideo: true }
|
|
@@ -3726,7 +3792,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3726
3792
|
prompt: { referenceSyntax: "numbered", maxChars: 1e4 }
|
|
3727
3793
|
},
|
|
3728
3794
|
defaults: { voice: "Wise_Woman" },
|
|
3729
|
-
usage:
|
|
3795
|
+
usage: PER_CALL3,
|
|
3730
3796
|
pricingKind: "flat",
|
|
3731
3797
|
display: {
|
|
3732
3798
|
provider: "minimax",
|
|
@@ -3753,11 +3819,11 @@ var MEDIA_NODE_MODELS = [
|
|
|
3753
3819
|
supports: []
|
|
3754
3820
|
},
|
|
3755
3821
|
defaults: { voice: "Rachel", outputFormat: "mp3_44100_128" },
|
|
3756
|
-
usage:
|
|
3822
|
+
usage: PER_CALL3,
|
|
3757
3823
|
pricingKind: "flat",
|
|
3758
3824
|
display: {
|
|
3759
3825
|
provider: "elevenlabs",
|
|
3760
|
-
logo:
|
|
3826
|
+
logo: ELEVENLABS_LOGO2,
|
|
3761
3827
|
description: "ElevenLabs speech to speech; re-voices a recording in another voice and keeps its timing and delivery."
|
|
3762
3828
|
},
|
|
3763
3829
|
capabilities: {}
|
|
@@ -3780,11 +3846,11 @@ var MEDIA_NODE_MODELS = [
|
|
|
3780
3846
|
supports: []
|
|
3781
3847
|
},
|
|
3782
3848
|
defaults: {},
|
|
3783
|
-
usage:
|
|
3849
|
+
usage: PER_CALL3,
|
|
3784
3850
|
pricingKind: "flat",
|
|
3785
3851
|
display: {
|
|
3786
3852
|
provider: "elevenlabs",
|
|
3787
|
-
logo:
|
|
3853
|
+
logo: ELEVENLABS_LOGO2,
|
|
3788
3854
|
description: "ElevenLabs dubbing; translates the speech in a video or audio file into another language in the original voices."
|
|
3789
3855
|
},
|
|
3790
3856
|
capabilities: { acceptsSourceVideo: true }
|
|
@@ -3827,7 +3893,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3827
3893
|
supports: []
|
|
3828
3894
|
},
|
|
3829
3895
|
defaults: {},
|
|
3830
|
-
usage:
|
|
3896
|
+
usage: PER_CALL3,
|
|
3831
3897
|
pricingKind: "flat",
|
|
3832
3898
|
display: {
|
|
3833
3899
|
provider: "veed",
|
|
@@ -3879,17 +3945,18 @@ var MEDIA_NODE_MODELS = [
|
|
|
3879
3945
|
supports: []
|
|
3880
3946
|
},
|
|
3881
3947
|
defaults: {},
|
|
3882
|
-
usage:
|
|
3948
|
+
usage: PER_CALL3,
|
|
3883
3949
|
pricingKind: "flat",
|
|
3884
3950
|
display: {
|
|
3885
3951
|
provider: "elevenlabs",
|
|
3886
|
-
logo:
|
|
3952
|
+
logo: ELEVENLABS_LOGO2,
|
|
3887
3953
|
description: "ElevenLabs Scribe v2 speech to text with word timings, speaker labels and audio-event tags."
|
|
3888
3954
|
},
|
|
3889
3955
|
capabilities: {}
|
|
3890
3956
|
},
|
|
3891
3957
|
SAM_3_IMAGE,
|
|
3892
|
-
...FISH_MODELS
|
|
3958
|
+
...FISH_MODELS,
|
|
3959
|
+
...ELEVENLABS_DIRECT_MODELS
|
|
3893
3960
|
];
|
|
3894
3961
|
|
|
3895
3962
|
// src/catalog/model3d.ts
|
|
@@ -4085,7 +4152,7 @@ var MODEL3D_MODELS = [
|
|
|
4085
4152
|
|
|
4086
4153
|
// src/catalog/other.ts
|
|
4087
4154
|
var GOOGLE_LOGO2 = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
|
|
4088
|
-
var
|
|
4155
|
+
var ELEVENLABS_LOGO3 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
|
|
4089
4156
|
var MINIMAX_LOGO2 = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png";
|
|
4090
4157
|
var OTHER_MODELS = [
|
|
4091
4158
|
{
|
|
@@ -4250,7 +4317,7 @@ var OTHER_MODELS = [
|
|
|
4250
4317
|
pricingKind: "flat",
|
|
4251
4318
|
display: {
|
|
4252
4319
|
provider: "elevenlabs",
|
|
4253
|
-
logo:
|
|
4320
|
+
logo: ELEVENLABS_LOGO3,
|
|
4254
4321
|
description: "ElevenLabs Music v2.5 text-to-music; full songs or instrumentals from 3 seconds to 1 minute."
|
|
4255
4322
|
},
|
|
4256
4323
|
capabilities: {}
|
|
@@ -4302,7 +4369,7 @@ var OTHER_MODELS = [
|
|
|
4302
4369
|
pricingKind: "flat",
|
|
4303
4370
|
display: {
|
|
4304
4371
|
provider: "elevenlabs",
|
|
4305
|
-
logo:
|
|
4372
|
+
logo: ELEVENLABS_LOGO3,
|
|
4306
4373
|
description: "ElevenLabs Sound Effects v2; a sound effect from a text description, up to 22 seconds."
|
|
4307
4374
|
},
|
|
4308
4375
|
capabilities: {}
|
|
@@ -7531,7 +7598,8 @@ var ADAPTER_IDS = [
|
|
|
7531
7598
|
"higgsfield",
|
|
7532
7599
|
"xai-video",
|
|
7533
7600
|
"luma",
|
|
7534
|
-
"fish"
|
|
7601
|
+
"fish",
|
|
7602
|
+
"elevenlabs"
|
|
7535
7603
|
];
|
|
7536
7604
|
var ModelTypeSchema = z3.enum([
|
|
7537
7605
|
"text",
|