@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.cjs
CHANGED
|
@@ -1304,303 +1304,6 @@ var VEED_SUBTITLES = {
|
|
|
1304
1304
|
}
|
|
1305
1305
|
};
|
|
1306
1306
|
|
|
1307
|
-
// src/catalog/voices-fish.ts
|
|
1308
|
-
var FISH_VOICES = [
|
|
1309
|
-
{
|
|
1310
|
-
id: "933563129e564b19a115bedd57b7406a",
|
|
1311
|
-
name: "Sarah",
|
|
1312
|
-
gender: "female",
|
|
1313
|
-
languages: ["en"],
|
|
1314
|
-
description: "An engaged speaker.",
|
|
1315
|
-
previewUrl: "https://platform.r2.fish.audio/task/4e204945670c460c86fdab57512cb308.mp3"
|
|
1316
|
-
},
|
|
1317
|
-
{
|
|
1318
|
-
id: "bf322df2096a46f18c579d0baa36f41d",
|
|
1319
|
-
name: "Adrian",
|
|
1320
|
-
gender: "male",
|
|
1321
|
-
languages: ["en"],
|
|
1322
|
-
description: "A steady and reliable narrator.",
|
|
1323
|
-
previewUrl: "https://platform.r2.fish.audio/task/d730b09f4a484316a77ecc86137e85fb.mp3"
|
|
1324
|
-
},
|
|
1325
|
-
{
|
|
1326
|
-
id: "536d3a5e000945adb7038665781a4aca",
|
|
1327
|
-
name: "Ethan",
|
|
1328
|
-
gender: "male",
|
|
1329
|
-
languages: ["en"],
|
|
1330
|
-
description: "A curious explainer.",
|
|
1331
|
-
previewUrl: "https://platform.r2.fish.audio/task/bdd677ed767744fc91f166468786264b.mp3"
|
|
1332
|
-
},
|
|
1333
|
-
{
|
|
1334
|
-
id: "b347db033a6549378b48d00acb0d06cd",
|
|
1335
|
-
name: "Selene",
|
|
1336
|
-
gender: "female",
|
|
1337
|
-
languages: ["en"],
|
|
1338
|
-
description: "A meditative female voice.",
|
|
1339
|
-
previewUrl: "https://platform.r2.fish.audio/task/fcf629b4a0b343558f461338ba1b9da4.mp3"
|
|
1340
|
-
},
|
|
1341
|
-
{
|
|
1342
|
-
id: "9a9cf47702da476aa4629e2506d4a857",
|
|
1343
|
-
name: "Hannah",
|
|
1344
|
-
gender: "female",
|
|
1345
|
-
languages: ["en"],
|
|
1346
|
-
description: "A conversation specialist.",
|
|
1347
|
-
previewUrl: "https://platform.r2.fish.audio/task/08d658835feb427db808e37060b78eb0.mp3"
|
|
1348
|
-
},
|
|
1349
|
-
{
|
|
1350
|
-
id: "79d0bd3e4e5444b18f7b6d89b5927bf1",
|
|
1351
|
-
name: "Jordan",
|
|
1352
|
-
gender: "male",
|
|
1353
|
-
languages: ["en"],
|
|
1354
|
-
description: "A motivational speaker.",
|
|
1355
|
-
previewUrl: "https://platform.r2.fish.audio/task/edecbc0bdd4c46c39eda8520a0f729ef.mp3"
|
|
1356
|
-
},
|
|
1357
|
-
{
|
|
1358
|
-
id: "e3cd384158934cc9a01029cd7d278634",
|
|
1359
|
-
name: "Laura",
|
|
1360
|
-
gender: "female",
|
|
1361
|
-
languages: ["en"],
|
|
1362
|
-
description: "A confident female narrator.",
|
|
1363
|
-
previewUrl: "https://platform.r2.fish.audio/task/e821bef995344d519caa1c93d808db23.mp3"
|
|
1364
|
-
},
|
|
1365
|
-
{
|
|
1366
|
-
id: "f3a2b90078d54a65af4b95f63bc7798e",
|
|
1367
|
-
name: "Sheila",
|
|
1368
|
-
gender: "female",
|
|
1369
|
-
accent: "american",
|
|
1370
|
-
languages: ["en"],
|
|
1371
|
-
description: "A young American English woman's voice.",
|
|
1372
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/9bb9e1a1cf3f47f38700da1c5c0a678a.mp3"
|
|
1373
|
-
},
|
|
1374
|
-
{
|
|
1375
|
-
id: "0db6e93af420470b9d9b9a886dbaa954",
|
|
1376
|
-
name: "Kai",
|
|
1377
|
-
gender: "male",
|
|
1378
|
-
languages: ["en"],
|
|
1379
|
-
description: "A friendly English man's voice for companion apps and everyday conversation.",
|
|
1380
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/13306f1172544c3ba3106d1e363feaa6.mp3"
|
|
1381
|
-
},
|
|
1382
|
-
{
|
|
1383
|
-
id: "8abfa9ebd4c24a3399b68c3cdac8c7b5",
|
|
1384
|
-
name: "Freya",
|
|
1385
|
-
gender: "female",
|
|
1386
|
-
accent: "british",
|
|
1387
|
-
languages: ["en"],
|
|
1388
|
-
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.",
|
|
1389
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/07918705a56b42daaab149f65392cea7.mp3"
|
|
1390
|
-
},
|
|
1391
|
-
{
|
|
1392
|
-
id: "2f64e528a4f2406691925ab1e0ed5b7f",
|
|
1393
|
-
name: "Ananya",
|
|
1394
|
-
gender: "female",
|
|
1395
|
-
languages: ["hi"],
|
|
1396
|
-
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",
|
|
1397
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a17a700668d8405f8316db120733145c.mp3"
|
|
1398
|
-
},
|
|
1399
|
-
{
|
|
1400
|
-
id: "cefd91a07b99468f9148e2580990082d",
|
|
1401
|
-
name: "Arjun",
|
|
1402
|
-
gender: "male",
|
|
1403
|
-
languages: ["hi"],
|
|
1404
|
-
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",
|
|
1405
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/a0c4a8eadb7841cdae8e5e68031a2dfb.mp3"
|
|
1406
|
-
},
|
|
1407
|
-
{
|
|
1408
|
-
id: "3f065d660212478a9c697fa965b4d098",
|
|
1409
|
-
name: "Carmen",
|
|
1410
|
-
gender: "female",
|
|
1411
|
-
languages: ["es"],
|
|
1412
|
-
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1413
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/3421be48b6cb4c28bf829c25188e7e74.mp3"
|
|
1414
|
-
},
|
|
1415
|
-
{
|
|
1416
|
-
id: "ec0718028a2445fb9be8e8bfb56a0150",
|
|
1417
|
-
name: "Rodrigo",
|
|
1418
|
-
gender: "male",
|
|
1419
|
-
languages: ["es"],
|
|
1420
|
-
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1421
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/5a77c32365604800ad5b4eb13c5585df.mp3"
|
|
1422
|
-
},
|
|
1423
|
-
{
|
|
1424
|
-
id: "10a3a20742114a4ea6dd441e7591850f",
|
|
1425
|
-
name: "Manon",
|
|
1426
|
-
gender: "female",
|
|
1427
|
-
languages: ["fr"],
|
|
1428
|
-
description: "Une voix claire et vive, adapt\xE9e aux assistants vocaux et au support client.",
|
|
1429
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/f7b75ee1fa524e48a8cefb003cf72952.mp3"
|
|
1430
|
-
},
|
|
1431
|
-
{
|
|
1432
|
-
id: "f69bca092b674168a8d02d61ca20943c",
|
|
1433
|
-
name: "Lucas",
|
|
1434
|
-
gender: "male",
|
|
1435
|
-
languages: ["fr"],
|
|
1436
|
-
description: "Une voix claire et assur\xE9e, adapt\xE9e aux assistants vocaux et au service client.",
|
|
1437
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/86fca3e56a014a3d8a11450854bb8311.mp3"
|
|
1438
|
-
},
|
|
1439
|
-
{
|
|
1440
|
-
id: "3937b44b604249f18b94913daef94043",
|
|
1441
|
-
name: "Lena",
|
|
1442
|
-
gender: "female",
|
|
1443
|
-
languages: ["de"],
|
|
1444
|
-
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
1445
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/8659fec80b74442dab68a7755716a401.mp3"
|
|
1446
|
-
},
|
|
1447
|
-
{
|
|
1448
|
-
id: "c1e7cc926aa5469aa966c353094d4b0b",
|
|
1449
|
-
name: "Lukas",
|
|
1450
|
-
gender: "male",
|
|
1451
|
-
languages: ["de"],
|
|
1452
|
-
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
1453
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/fb1d538126bb4fe38f8366250f6a2136.mp3"
|
|
1454
|
-
},
|
|
1455
|
-
{
|
|
1456
|
-
id: "b3c060cc41544a7da94a2c487647c902",
|
|
1457
|
-
name: "Let\xEDcia",
|
|
1458
|
-
gender: "female",
|
|
1459
|
-
accent: "brazilian",
|
|
1460
|
-
languages: ["pt"],
|
|
1461
|
-
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.",
|
|
1462
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/13c6c0d96b5c4069951f89868ee15360.mp3"
|
|
1463
|
-
},
|
|
1464
|
-
{
|
|
1465
|
-
id: "add7bcb8d3c8423bbfa152ca232aad6e",
|
|
1466
|
-
name: "Ricardo",
|
|
1467
|
-
gender: "male",
|
|
1468
|
-
accent: "brazilian",
|
|
1469
|
-
languages: ["pt"],
|
|
1470
|
-
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.",
|
|
1471
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/67475fc717ae45cbb38e647a2dd37fe1.mp3"
|
|
1472
|
-
},
|
|
1473
|
-
{
|
|
1474
|
-
id: "b2d9d8db057042688a5e318b8f405bc2",
|
|
1475
|
-
name: "Kyoko",
|
|
1476
|
-
gender: "female",
|
|
1477
|
-
languages: ["ja"],
|
|
1478
|
-
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",
|
|
1479
|
-
previewUrl: "https://platform.r2.fish.audio/task/993b3ccb52124341aff79580f1ce5a5a.mp3"
|
|
1480
|
-
},
|
|
1481
|
-
{
|
|
1482
|
-
id: "297a6fd278df47c3b9da9bfdf55ac89a",
|
|
1483
|
-
name: "Satoru",
|
|
1484
|
-
gender: "male",
|
|
1485
|
-
languages: ["ja"],
|
|
1486
|
-
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",
|
|
1487
|
-
previewUrl: "https://platform.r2.fish.audio/task/1b4712fb831f4c149eef6b0133157418.mp3"
|
|
1488
|
-
},
|
|
1489
|
-
{
|
|
1490
|
-
id: "0b14f34a13a94ed88fe6113193749bb0",
|
|
1491
|
-
name: "Fatima",
|
|
1492
|
-
gender: "female",
|
|
1493
|
-
languages: ["ar"],
|
|
1494
|
-
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.",
|
|
1495
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/93406e1b905a4c4994306e3421243390.mp3"
|
|
1496
|
-
},
|
|
1497
|
-
{
|
|
1498
|
-
id: "74c6aba5cbf94a15bbdc547ffce5cb38",
|
|
1499
|
-
name: "Yutong",
|
|
1500
|
-
gender: "female",
|
|
1501
|
-
languages: ["zh"],
|
|
1502
|
-
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",
|
|
1503
|
-
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a48320f37fe44c4699549a1afc3778e8.mp3"
|
|
1504
|
-
}
|
|
1505
|
-
];
|
|
1506
|
-
|
|
1507
|
-
// src/catalog/speech-fish.ts
|
|
1508
|
-
var FISH_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/fishaudio.png";
|
|
1509
|
-
var PER_CALL = { unit: "images" };
|
|
1510
|
-
var PER_REQUEST = { unit: "requests" };
|
|
1511
|
-
var TTS_MAX_CHARS = 1e4;
|
|
1512
|
-
function fishTts(id, label, providerModelId, description) {
|
|
1513
|
-
return {
|
|
1514
|
-
id,
|
|
1515
|
-
aliases: [],
|
|
1516
|
-
label,
|
|
1517
|
-
type: "speech",
|
|
1518
|
-
adapter: "fish",
|
|
1519
|
-
providerModelId,
|
|
1520
|
-
lifecycle: "active",
|
|
1521
|
-
exposure: [],
|
|
1522
|
-
constraints: {
|
|
1523
|
-
voices: FISH_VOICES,
|
|
1524
|
-
outputFormats: ["mp3", "wav"],
|
|
1525
|
-
supports: [],
|
|
1526
|
-
prompt: { referenceSyntax: "numbered", maxChars: TTS_MAX_CHARS }
|
|
1527
|
-
},
|
|
1528
|
-
defaults: { voice: "9a9cf47702da476aa4629e2506d4a857", outputFormat: "mp3" },
|
|
1529
|
-
usage: PER_CALL,
|
|
1530
|
-
pricingKind: "flat",
|
|
1531
|
-
display: { provider: "fishaudio", logo: FISH_LOGO, description },
|
|
1532
|
-
capabilities: { customVoices: true }
|
|
1533
|
-
};
|
|
1534
|
-
}
|
|
1535
|
-
var FISH_MODELS = [
|
|
1536
|
-
fishTts(
|
|
1537
|
-
"fish-s2.1-pro",
|
|
1538
|
-
"Fish Audio S2.1 Pro",
|
|
1539
|
-
"s2.1-pro",
|
|
1540
|
-
"Fish Audio S2.1 Pro text to speech in 83 languages, with [bracket] directions and your own cloned voices."
|
|
1541
|
-
),
|
|
1542
|
-
fishTts(
|
|
1543
|
-
"fish-s2.1-pro-free",
|
|
1544
|
-
"Fish Audio S2.1 Pro Free",
|
|
1545
|
-
"s2.1-pro-free",
|
|
1546
|
-
"Fish Audio S2.1 Pro on the free developer tier: the same voices at no cost, without latency or data-processing guarantees."
|
|
1547
|
-
),
|
|
1548
|
-
fishTts(
|
|
1549
|
-
"fish-drama-3",
|
|
1550
|
-
"Fish Audio Drama 3",
|
|
1551
|
-
"drama-3",
|
|
1552
|
-
"Fish Audio Drama 3 text to speech you direct like an actor: [directions], sounds, pauses and per-word tags."
|
|
1553
|
-
),
|
|
1554
|
-
{
|
|
1555
|
-
id: "fish-voice-clone",
|
|
1556
|
-
aliases: [],
|
|
1557
|
-
label: "Fish Audio Voice Clone",
|
|
1558
|
-
type: "voice-clone",
|
|
1559
|
-
adapter: "fish",
|
|
1560
|
-
providerModelId: "voice-clone",
|
|
1561
|
-
lifecycle: "active",
|
|
1562
|
-
exposure: [],
|
|
1563
|
-
constraints: {
|
|
1564
|
-
// POST /model takes 1-20 voice files; Fish advises 10 s or more of clean speech each.
|
|
1565
|
-
references: { audios: 20, audioFormats: ["wav", "mp3", "m4a", "opus"] },
|
|
1566
|
-
supports: []
|
|
1567
|
-
},
|
|
1568
|
-
defaults: {},
|
|
1569
|
-
usage: PER_REQUEST,
|
|
1570
|
-
pricingKind: "flat",
|
|
1571
|
-
display: {
|
|
1572
|
-
provider: "fishaudio",
|
|
1573
|
-
logo: FISH_LOGO,
|
|
1574
|
-
description: "Clone a private, reusable voice from one or more clean recordings, then speak with it on the Fish Audio speech models."
|
|
1575
|
-
},
|
|
1576
|
-
capabilities: {}
|
|
1577
|
-
},
|
|
1578
|
-
{
|
|
1579
|
-
id: "fish-voice-design-1",
|
|
1580
|
-
aliases: [],
|
|
1581
|
-
label: "Fish Audio Voice Design",
|
|
1582
|
-
type: "voice-design",
|
|
1583
|
-
adapter: "fish",
|
|
1584
|
-
providerModelId: "voice-design-1",
|
|
1585
|
-
lifecycle: "active",
|
|
1586
|
-
exposure: [],
|
|
1587
|
-
constraints: {
|
|
1588
|
-
voiceDesign: { maxCandidates: 4, previewMaxChars: 150 },
|
|
1589
|
-
supports: [],
|
|
1590
|
-
prompt: { referenceSyntax: "numbered", maxChars: 2e3 }
|
|
1591
|
-
},
|
|
1592
|
-
defaults: {},
|
|
1593
|
-
usage: PER_REQUEST,
|
|
1594
|
-
pricingKind: "flat",
|
|
1595
|
-
display: {
|
|
1596
|
-
provider: "fishaudio",
|
|
1597
|
-
logo: FISH_LOGO,
|
|
1598
|
-
description: "Describe a voice and get up to four short candidates; keep one as a cloned voice."
|
|
1599
|
-
},
|
|
1600
|
-
capabilities: {}
|
|
1601
|
-
}
|
|
1602
|
-
];
|
|
1603
|
-
|
|
1604
1307
|
// src/catalog/languages-audio.ts
|
|
1605
1308
|
var ELEVENLABS_V4_LANGUAGES = [
|
|
1606
1309
|
{ code: "af", name: "Afrikaans" },
|
|
@@ -2002,104 +1705,467 @@ var ELEVENLABS_VOICES = [
|
|
|
2002
1705
|
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/SAz9YHcvj6GT2YYXdXww/e6c95f0b-2227-491a-b3d7-2249240decb7.mp3"
|
|
2003
1706
|
},
|
|
2004
1707
|
{
|
|
2005
|
-
id: "Liam",
|
|
2006
|
-
name: "Liam",
|
|
1708
|
+
id: "Liam",
|
|
1709
|
+
name: "Liam",
|
|
1710
|
+
gender: "male",
|
|
1711
|
+
accent: "american",
|
|
1712
|
+
languages: ["en", "de", "pt", "cs", "pl", "tr", "hi"],
|
|
1713
|
+
description: "A young adult with energy and warmth - suitable for reels and shorts.",
|
|
1714
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/TX3LPaxmHKxFdv7VOQHJ/63148076-6363-42db-aea8-31424308b92c.mp3"
|
|
1715
|
+
},
|
|
1716
|
+
{ id: "Charlotte", name: "Charlotte" },
|
|
1717
|
+
{
|
|
1718
|
+
id: "Alice",
|
|
1719
|
+
name: "Alice",
|
|
1720
|
+
gender: "female",
|
|
1721
|
+
accent: "british",
|
|
1722
|
+
languages: ["en", "it", "fr", "ar", "ja", "pl", "hi"],
|
|
1723
|
+
description: "Clear and engaging, friendly woman with a British accent suitable for e-learning.",
|
|
1724
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/Xb7hH8MSUJpSbSDYk0k2/d10f7534-11f6-41fe-a012-2de1e482d336.mp3"
|
|
1725
|
+
},
|
|
1726
|
+
{
|
|
1727
|
+
id: "Matilda",
|
|
1728
|
+
name: "Matilda",
|
|
1729
|
+
gender: "female",
|
|
1730
|
+
accent: "american",
|
|
1731
|
+
languages: ["en", "it", "fr", "de", "ar", "es"],
|
|
1732
|
+
description: "A professional woman with a pleasing alto pitch. Suitable for many use cases.",
|
|
1733
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/XrExE9yKIg1WjnnlVkGX/b930e18d-6b4d-466e-bab2-0ae97c6d8535.mp3"
|
|
1734
|
+
},
|
|
1735
|
+
{
|
|
1736
|
+
id: "Will",
|
|
1737
|
+
name: "Will",
|
|
1738
|
+
gender: "male",
|
|
1739
|
+
accent: "american",
|
|
1740
|
+
languages: ["en", "fr", "de", "pt", "zh", "cs", "fil", "sk", "es", "sv"],
|
|
1741
|
+
description: "Conversational and laid back.",
|
|
1742
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/bIHbv24MWmeRgasZH58o/8caf8f3d-ad29-4980-af41-53f20c72d7a4.mp3"
|
|
1743
|
+
},
|
|
1744
|
+
{
|
|
1745
|
+
id: "Jessica",
|
|
1746
|
+
name: "Jessica",
|
|
1747
|
+
gender: "female",
|
|
1748
|
+
accent: "american",
|
|
1749
|
+
languages: ["en", "fr", "ar", "ja", "zh", "de", "cs", "hi"],
|
|
1750
|
+
description: "Young and popular, this playful American female voice is perfect for trendy content.",
|
|
1751
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cgSgspJ2msm6clMCkdW9/56a97bf8-b69b-448f-846c-c3a11683d45a.mp3"
|
|
1752
|
+
},
|
|
1753
|
+
{
|
|
1754
|
+
id: "Eric",
|
|
1755
|
+
name: "Eric",
|
|
1756
|
+
gender: "male",
|
|
1757
|
+
accent: "american",
|
|
1758
|
+
languages: ["en", "fr", "pt", "de", "sk", "es"],
|
|
1759
|
+
description: "A smooth tenor pitch from a man in his 40s - perfect for agentic use cases.",
|
|
1760
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cjVigY5qzO86Huf0OWal/d098fda0-6456-4030-b3d8-63aa048c9070.mp3"
|
|
1761
|
+
},
|
|
1762
|
+
{
|
|
1763
|
+
id: "Chris",
|
|
1764
|
+
name: "Chris",
|
|
1765
|
+
gender: "male",
|
|
1766
|
+
accent: "american",
|
|
1767
|
+
languages: ["en", "fr", "ar", "pt", "sv", "hi"],
|
|
1768
|
+
description: "Natural and real, this down-to-earth voice is great across many use-cases.",
|
|
1769
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/iP95p4xoKVk53GoZ742B/3f4bde72-cc48-40dd-829f-57fbf906f4d7.mp3"
|
|
1770
|
+
},
|
|
1771
|
+
{
|
|
1772
|
+
id: "Brian",
|
|
1773
|
+
name: "Brian",
|
|
1774
|
+
gender: "male",
|
|
1775
|
+
accent: "american",
|
|
1776
|
+
languages: ["en", "ar", "zh", "pt", "de", "nl", "sk", "ro", "hi"],
|
|
1777
|
+
description: "Middle-aged man with a resonant and comforting tone. Great for narrations and advertisements.",
|
|
1778
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/nPczCjzI2devNBz1zQrb/2dd3e72c-4fd3-42f1-93ea-abc5d4e5aa1d.mp3"
|
|
1779
|
+
},
|
|
1780
|
+
{
|
|
1781
|
+
id: "Daniel",
|
|
1782
|
+
name: "Daniel",
|
|
1783
|
+
gender: "male",
|
|
1784
|
+
accent: "british",
|
|
1785
|
+
languages: ["en", "de", "tr"],
|
|
1786
|
+
description: "A strong voice perfect for delivering a professional broadcast or news story.",
|
|
1787
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/onwK4e9ZLuTAKqWW03F9/7eee0236-1a72-4b86-b303-5dcadc007ba9.mp3"
|
|
1788
|
+
},
|
|
1789
|
+
{
|
|
1790
|
+
id: "Lily",
|
|
1791
|
+
name: "Lily",
|
|
1792
|
+
gender: "female",
|
|
1793
|
+
accent: "british",
|
|
1794
|
+
languages: ["en", "it", "de", "zh", "cs", "nl", "pl"],
|
|
1795
|
+
description: "Velvety British female voice delivers news and narrations with warmth and clarity.",
|
|
1796
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pFZP5JQG7iQjIQuC4Bku/89b68b35-b3dd-4348-a84a-a3c13a3c2b30.mp3"
|
|
1797
|
+
},
|
|
1798
|
+
{
|
|
1799
|
+
id: "Bill",
|
|
1800
|
+
name: "Bill",
|
|
1801
|
+
gender: "male",
|
|
1802
|
+
accent: "american",
|
|
1803
|
+
languages: ["en", "fr", "ar", "zh", "de", "cs"],
|
|
1804
|
+
description: "Friendly and comforting voice ready to narrate your stories.",
|
|
1805
|
+
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pqHfZKP75CvOlQylNhV4/d782b3ff-84ba-4029-848c-acf01285524d.mp3"
|
|
1806
|
+
}
|
|
1807
|
+
];
|
|
1808
|
+
var PREMADE_ID = /\/premade\/voices\/([A-Za-z0-9]+)\//;
|
|
1809
|
+
var ELEVENLABS_DIRECT_VOICES = ELEVENLABS_VOICES.flatMap((v) => {
|
|
1810
|
+
const id = v.previewUrl ? PREMADE_ID.exec(v.previewUrl)?.[1] : void 0;
|
|
1811
|
+
return id ? [{ ...v, id }] : [];
|
|
1812
|
+
});
|
|
1813
|
+
var ELEVENLABS_DIRECT_DEFAULT_VOICE = "EXAVITQu4vr4xnSDxMaL";
|
|
1814
|
+
|
|
1815
|
+
// src/catalog/speech-elevenlabs-direct.ts
|
|
1816
|
+
var ELEVENLABS_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
|
|
1817
|
+
var PER_CALL = { unit: "images" };
|
|
1818
|
+
var PER_REQUEST = { unit: "requests" };
|
|
1819
|
+
var ELEVENLABS_DIRECT_MODELS = [
|
|
1820
|
+
{
|
|
1821
|
+
id: "elevenlabs-v4-direct",
|
|
1822
|
+
aliases: [],
|
|
1823
|
+
label: "ElevenLabs v4 (direct)",
|
|
1824
|
+
type: "speech",
|
|
1825
|
+
adapter: "elevenlabs",
|
|
1826
|
+
providerModelId: "eleven_v4",
|
|
1827
|
+
lifecycle: "active",
|
|
1828
|
+
exposure: [],
|
|
1829
|
+
constraints: {
|
|
1830
|
+
// Premade voices under their ElevenLabs ids (the direct API takes ids, not names).
|
|
1831
|
+
voices: ELEVENLABS_DIRECT_VOICES,
|
|
1832
|
+
languages: ELEVENLABS_V4_LANGUAGES,
|
|
1833
|
+
outputFormats: ELEVENLABS_MP3_FORMATS,
|
|
1834
|
+
supports: [],
|
|
1835
|
+
// ElevenLabs docs: 10,000 characters per request.
|
|
1836
|
+
prompt: { referenceSyntax: "numbered", maxChars: 1e4 }
|
|
1837
|
+
},
|
|
1838
|
+
defaults: { voice: ELEVENLABS_DIRECT_DEFAULT_VOICE, outputFormat: "mp3_44100_128" },
|
|
1839
|
+
usage: PER_CALL,
|
|
1840
|
+
pricingKind: "flat",
|
|
1841
|
+
display: {
|
|
1842
|
+
provider: "elevenlabs",
|
|
1843
|
+
logo: ELEVENLABS_LOGO,
|
|
1844
|
+
description: "ElevenLabs v4 text to speech with audio tags, in a premade voice or your own cloned voice; up to 10,000 characters."
|
|
1845
|
+
},
|
|
1846
|
+
capabilities: { customVoices: true }
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
id: "elevenlabs-ivc",
|
|
1850
|
+
aliases: [],
|
|
1851
|
+
label: "ElevenLabs Instant Voice Clone",
|
|
1852
|
+
type: "voice-clone",
|
|
1853
|
+
adapter: "elevenlabs",
|
|
1854
|
+
providerModelId: "ivc",
|
|
1855
|
+
lifecycle: "active",
|
|
1856
|
+
exposure: [],
|
|
1857
|
+
constraints: {
|
|
1858
|
+
// POST /v1/voices/add; ElevenLabs takes up to 25 samples and advises 1-2 minutes of
|
|
1859
|
+
// clean speech in total. Each clone uses a voice slot on our plan until deleted.
|
|
1860
|
+
references: { audios: 25, audioFormats: ["mp3", "wav", "m4a", "webm", "ogg"] },
|
|
1861
|
+
supports: []
|
|
1862
|
+
},
|
|
1863
|
+
defaults: {},
|
|
1864
|
+
usage: PER_REQUEST,
|
|
1865
|
+
pricingKind: "flat",
|
|
1866
|
+
display: {
|
|
1867
|
+
provider: "elevenlabs",
|
|
1868
|
+
logo: ELEVENLABS_LOGO,
|
|
1869
|
+
description: "Clone a private, reusable voice from one or more clean recordings, then speak with it on ElevenLabs v4 (direct)."
|
|
1870
|
+
},
|
|
1871
|
+
capabilities: {}
|
|
1872
|
+
}
|
|
1873
|
+
];
|
|
1874
|
+
|
|
1875
|
+
// src/catalog/voices-fish.ts
|
|
1876
|
+
var FISH_VOICES = [
|
|
1877
|
+
{
|
|
1878
|
+
id: "933563129e564b19a115bedd57b7406a",
|
|
1879
|
+
name: "Sarah",
|
|
1880
|
+
gender: "female",
|
|
1881
|
+
languages: ["en"],
|
|
1882
|
+
description: "An engaged speaker.",
|
|
1883
|
+
previewUrl: "https://platform.r2.fish.audio/task/4e204945670c460c86fdab57512cb308.mp3"
|
|
1884
|
+
},
|
|
1885
|
+
{
|
|
1886
|
+
id: "bf322df2096a46f18c579d0baa36f41d",
|
|
1887
|
+
name: "Adrian",
|
|
1888
|
+
gender: "male",
|
|
1889
|
+
languages: ["en"],
|
|
1890
|
+
description: "A steady and reliable narrator.",
|
|
1891
|
+
previewUrl: "https://platform.r2.fish.audio/task/d730b09f4a484316a77ecc86137e85fb.mp3"
|
|
1892
|
+
},
|
|
1893
|
+
{
|
|
1894
|
+
id: "536d3a5e000945adb7038665781a4aca",
|
|
1895
|
+
name: "Ethan",
|
|
1896
|
+
gender: "male",
|
|
1897
|
+
languages: ["en"],
|
|
1898
|
+
description: "A curious explainer.",
|
|
1899
|
+
previewUrl: "https://platform.r2.fish.audio/task/bdd677ed767744fc91f166468786264b.mp3"
|
|
1900
|
+
},
|
|
1901
|
+
{
|
|
1902
|
+
id: "b347db033a6549378b48d00acb0d06cd",
|
|
1903
|
+
name: "Selene",
|
|
1904
|
+
gender: "female",
|
|
1905
|
+
languages: ["en"],
|
|
1906
|
+
description: "A meditative female voice.",
|
|
1907
|
+
previewUrl: "https://platform.r2.fish.audio/task/fcf629b4a0b343558f461338ba1b9da4.mp3"
|
|
1908
|
+
},
|
|
1909
|
+
{
|
|
1910
|
+
id: "9a9cf47702da476aa4629e2506d4a857",
|
|
1911
|
+
name: "Hannah",
|
|
1912
|
+
gender: "female",
|
|
1913
|
+
languages: ["en"],
|
|
1914
|
+
description: "A conversation specialist.",
|
|
1915
|
+
previewUrl: "https://platform.r2.fish.audio/task/08d658835feb427db808e37060b78eb0.mp3"
|
|
1916
|
+
},
|
|
1917
|
+
{
|
|
1918
|
+
id: "79d0bd3e4e5444b18f7b6d89b5927bf1",
|
|
1919
|
+
name: "Jordan",
|
|
1920
|
+
gender: "male",
|
|
1921
|
+
languages: ["en"],
|
|
1922
|
+
description: "A motivational speaker.",
|
|
1923
|
+
previewUrl: "https://platform.r2.fish.audio/task/edecbc0bdd4c46c39eda8520a0f729ef.mp3"
|
|
1924
|
+
},
|
|
1925
|
+
{
|
|
1926
|
+
id: "e3cd384158934cc9a01029cd7d278634",
|
|
1927
|
+
name: "Laura",
|
|
1928
|
+
gender: "female",
|
|
1929
|
+
languages: ["en"],
|
|
1930
|
+
description: "A confident female narrator.",
|
|
1931
|
+
previewUrl: "https://platform.r2.fish.audio/task/e821bef995344d519caa1c93d808db23.mp3"
|
|
1932
|
+
},
|
|
1933
|
+
{
|
|
1934
|
+
id: "f3a2b90078d54a65af4b95f63bc7798e",
|
|
1935
|
+
name: "Sheila",
|
|
1936
|
+
gender: "female",
|
|
1937
|
+
accent: "american",
|
|
1938
|
+
languages: ["en"],
|
|
1939
|
+
description: "A young American English woman's voice.",
|
|
1940
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/9bb9e1a1cf3f47f38700da1c5c0a678a.mp3"
|
|
1941
|
+
},
|
|
1942
|
+
{
|
|
1943
|
+
id: "0db6e93af420470b9d9b9a886dbaa954",
|
|
1944
|
+
name: "Kai",
|
|
1945
|
+
gender: "male",
|
|
1946
|
+
languages: ["en"],
|
|
1947
|
+
description: "A friendly English man's voice for companion apps and everyday conversation.",
|
|
1948
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/13306f1172544c3ba3106d1e363feaa6.mp3"
|
|
1949
|
+
},
|
|
1950
|
+
{
|
|
1951
|
+
id: "8abfa9ebd4c24a3399b68c3cdac8c7b5",
|
|
1952
|
+
name: "Freya",
|
|
1953
|
+
gender: "female",
|
|
1954
|
+
accent: "british",
|
|
1955
|
+
languages: ["en"],
|
|
1956
|
+
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.",
|
|
1957
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/07918705a56b42daaab149f65392cea7.mp3"
|
|
1958
|
+
},
|
|
1959
|
+
{
|
|
1960
|
+
id: "2f64e528a4f2406691925ab1e0ed5b7f",
|
|
1961
|
+
name: "Ananya",
|
|
1962
|
+
gender: "female",
|
|
1963
|
+
languages: ["hi"],
|
|
1964
|
+
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",
|
|
1965
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a17a700668d8405f8316db120733145c.mp3"
|
|
1966
|
+
},
|
|
1967
|
+
{
|
|
1968
|
+
id: "cefd91a07b99468f9148e2580990082d",
|
|
1969
|
+
name: "Arjun",
|
|
1970
|
+
gender: "male",
|
|
1971
|
+
languages: ["hi"],
|
|
1972
|
+
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",
|
|
1973
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/a0c4a8eadb7841cdae8e5e68031a2dfb.mp3"
|
|
1974
|
+
},
|
|
1975
|
+
{
|
|
1976
|
+
id: "3f065d660212478a9c697fa965b4d098",
|
|
1977
|
+
name: "Carmen",
|
|
1978
|
+
gender: "female",
|
|
1979
|
+
languages: ["es"],
|
|
1980
|
+
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1981
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/3421be48b6cb4c28bf829c25188e7e74.mp3"
|
|
1982
|
+
},
|
|
1983
|
+
{
|
|
1984
|
+
id: "ec0718028a2445fb9be8e8bfb56a0150",
|
|
1985
|
+
name: "Rodrigo",
|
|
2007
1986
|
gender: "male",
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/TX3LPaxmHKxFdv7VOQHJ/63148076-6363-42db-aea8-31424308b92c.mp3"
|
|
1987
|
+
languages: ["es"],
|
|
1988
|
+
description: "Una voz clara y segura para asistentes de voz, atenci\xF3n al cliente y presentaciones.",
|
|
1989
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/5a77c32365604800ad5b4eb13c5585df.mp3"
|
|
2012
1990
|
},
|
|
2013
|
-
{ id: "Charlotte", name: "Charlotte" },
|
|
2014
1991
|
{
|
|
2015
|
-
id: "
|
|
2016
|
-
name: "
|
|
1992
|
+
id: "10a3a20742114a4ea6dd441e7591850f",
|
|
1993
|
+
name: "Manon",
|
|
2017
1994
|
gender: "female",
|
|
2018
|
-
|
|
2019
|
-
|
|
2020
|
-
|
|
2021
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/Xb7hH8MSUJpSbSDYk0k2/d10f7534-11f6-41fe-a012-2de1e482d336.mp3"
|
|
1995
|
+
languages: ["fr"],
|
|
1996
|
+
description: "Une voix claire et vive, adapt\xE9e aux assistants vocaux et au support client.",
|
|
1997
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/f7b75ee1fa524e48a8cefb003cf72952.mp3"
|
|
2022
1998
|
},
|
|
2023
1999
|
{
|
|
2024
|
-
id: "
|
|
2025
|
-
name: "
|
|
2000
|
+
id: "f69bca092b674168a8d02d61ca20943c",
|
|
2001
|
+
name: "Lucas",
|
|
2002
|
+
gender: "male",
|
|
2003
|
+
languages: ["fr"],
|
|
2004
|
+
description: "Une voix claire et assur\xE9e, adapt\xE9e aux assistants vocaux et au service client.",
|
|
2005
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/86fca3e56a014a3d8a11450854bb8311.mp3"
|
|
2006
|
+
},
|
|
2007
|
+
{
|
|
2008
|
+
id: "3937b44b604249f18b94913daef94043",
|
|
2009
|
+
name: "Lena",
|
|
2026
2010
|
gender: "female",
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/XrExE9yKIg1WjnnlVkGX/b930e18d-6b4d-466e-bab2-0ae97c6d8535.mp3"
|
|
2011
|
+
languages: ["de"],
|
|
2012
|
+
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
2013
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/8659fec80b74442dab68a7755716a401.mp3"
|
|
2031
2014
|
},
|
|
2032
2015
|
{
|
|
2033
|
-
id: "
|
|
2034
|
-
name: "
|
|
2016
|
+
id: "c1e7cc926aa5469aa966c353094d4b0b",
|
|
2017
|
+
name: "Lukas",
|
|
2035
2018
|
gender: "male",
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/bIHbv24MWmeRgasZH58o/8caf8f3d-ad29-4980-af41-53f20c72d7a4.mp3"
|
|
2019
|
+
languages: ["de"],
|
|
2020
|
+
description: "Eine klare, souver\xE4ne Stimme f\xFCr Sprachassistenten, Kundenservice und Pr\xE4sentationen.",
|
|
2021
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/fb1d538126bb4fe38f8366250f6a2136.mp3"
|
|
2040
2022
|
},
|
|
2041
2023
|
{
|
|
2042
|
-
id: "
|
|
2043
|
-
name: "
|
|
2024
|
+
id: "b3c060cc41544a7da94a2c487647c902",
|
|
2025
|
+
name: "Let\xEDcia",
|
|
2044
2026
|
gender: "female",
|
|
2045
|
-
accent: "
|
|
2046
|
-
languages: ["
|
|
2047
|
-
description: "
|
|
2048
|
-
previewUrl: "https://
|
|
2027
|
+
accent: "brazilian",
|
|
2028
|
+
languages: ["pt"],
|
|
2029
|
+
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.",
|
|
2030
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/13c6c0d96b5c4069951f89868ee15360.mp3"
|
|
2049
2031
|
},
|
|
2050
2032
|
{
|
|
2051
|
-
id: "
|
|
2052
|
-
name: "
|
|
2033
|
+
id: "add7bcb8d3c8423bbfa152ca232aad6e",
|
|
2034
|
+
name: "Ricardo",
|
|
2053
2035
|
gender: "male",
|
|
2054
|
-
accent: "
|
|
2055
|
-
languages: ["
|
|
2056
|
-
description: "A
|
|
2057
|
-
previewUrl: "https://
|
|
2036
|
+
accent: "brazilian",
|
|
2037
|
+
languages: ["pt"],
|
|
2038
|
+
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.",
|
|
2039
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-10-12/67475fc717ae45cbb38e647a2dd37fe1.mp3"
|
|
2058
2040
|
},
|
|
2059
2041
|
{
|
|
2060
|
-
id: "
|
|
2061
|
-
name: "
|
|
2062
|
-
gender: "
|
|
2063
|
-
|
|
2064
|
-
|
|
2065
|
-
|
|
2066
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/iP95p4xoKVk53GoZ742B/3f4bde72-cc48-40dd-829f-57fbf906f4d7.mp3"
|
|
2042
|
+
id: "b2d9d8db057042688a5e318b8f405bc2",
|
|
2043
|
+
name: "Kyoko",
|
|
2044
|
+
gender: "female",
|
|
2045
|
+
languages: ["ja"],
|
|
2046
|
+
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",
|
|
2047
|
+
previewUrl: "https://platform.r2.fish.audio/task/993b3ccb52124341aff79580f1ce5a5a.mp3"
|
|
2067
2048
|
},
|
|
2068
2049
|
{
|
|
2069
|
-
id: "
|
|
2070
|
-
name: "
|
|
2050
|
+
id: "297a6fd278df47c3b9da9bfdf55ac89a",
|
|
2051
|
+
name: "Satoru",
|
|
2071
2052
|
gender: "male",
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/nPczCjzI2devNBz1zQrb/2dd3e72c-4fd3-42f1-93ea-abc5d4e5aa1d.mp3"
|
|
2053
|
+
languages: ["ja"],
|
|
2054
|
+
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",
|
|
2055
|
+
previewUrl: "https://platform.r2.fish.audio/task/1b4712fb831f4c149eef6b0133157418.mp3"
|
|
2076
2056
|
},
|
|
2077
2057
|
{
|
|
2078
|
-
id: "
|
|
2079
|
-
name: "
|
|
2080
|
-
gender: "
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/onwK4e9ZLuTAKqWW03F9/7eee0236-1a72-4b86-b303-5dcadc007ba9.mp3"
|
|
2058
|
+
id: "0b14f34a13a94ed88fe6113193749bb0",
|
|
2059
|
+
name: "Fatima",
|
|
2060
|
+
gender: "female",
|
|
2061
|
+
languages: ["ar"],
|
|
2062
|
+
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.",
|
|
2063
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-24/93406e1b905a4c4994306e3421243390.mp3"
|
|
2085
2064
|
},
|
|
2086
2065
|
{
|
|
2087
|
-
id: "
|
|
2088
|
-
name: "
|
|
2066
|
+
id: "74c6aba5cbf94a15bbdc547ffce5cb38",
|
|
2067
|
+
name: "Yutong",
|
|
2089
2068
|
gender: "female",
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2069
|
+
languages: ["zh"],
|
|
2070
|
+
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",
|
|
2071
|
+
previewUrl: "https://platform.r2.fish.audio/tasks/2026-08-25/a48320f37fe44c4699549a1afc3778e8.mp3"
|
|
2072
|
+
}
|
|
2073
|
+
];
|
|
2074
|
+
|
|
2075
|
+
// src/catalog/speech-fish.ts
|
|
2076
|
+
var FISH_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/fishaudio.png";
|
|
2077
|
+
var PER_CALL2 = { unit: "images" };
|
|
2078
|
+
var PER_REQUEST2 = { unit: "requests" };
|
|
2079
|
+
var TTS_MAX_CHARS = 1e4;
|
|
2080
|
+
function fishTts(id, label, providerModelId, description) {
|
|
2081
|
+
return {
|
|
2082
|
+
id,
|
|
2083
|
+
aliases: [],
|
|
2084
|
+
label,
|
|
2085
|
+
type: "speech",
|
|
2086
|
+
adapter: "fish",
|
|
2087
|
+
providerModelId,
|
|
2088
|
+
lifecycle: "active",
|
|
2089
|
+
exposure: [],
|
|
2090
|
+
constraints: {
|
|
2091
|
+
voices: FISH_VOICES,
|
|
2092
|
+
outputFormats: ["mp3", "wav"],
|
|
2093
|
+
supports: [],
|
|
2094
|
+
prompt: { referenceSyntax: "numbered", maxChars: TTS_MAX_CHARS }
|
|
2095
|
+
},
|
|
2096
|
+
defaults: { voice: "9a9cf47702da476aa4629e2506d4a857", outputFormat: "mp3" },
|
|
2097
|
+
usage: PER_CALL2,
|
|
2098
|
+
pricingKind: "flat",
|
|
2099
|
+
display: { provider: "fishaudio", logo: FISH_LOGO, description },
|
|
2100
|
+
capabilities: { customVoices: true }
|
|
2101
|
+
};
|
|
2102
|
+
}
|
|
2103
|
+
var FISH_MODELS = [
|
|
2104
|
+
fishTts(
|
|
2105
|
+
"fish-s2.1-pro",
|
|
2106
|
+
"Fish Audio S2.1 Pro",
|
|
2107
|
+
"s2.1-pro",
|
|
2108
|
+
"Fish Audio S2.1 Pro text to speech in 83 languages, with [bracket] directions and your own cloned voices."
|
|
2109
|
+
),
|
|
2110
|
+
fishTts(
|
|
2111
|
+
"fish-s2.1-pro-free",
|
|
2112
|
+
"Fish Audio S2.1 Pro Free",
|
|
2113
|
+
"s2.1-pro-free",
|
|
2114
|
+
"Fish Audio S2.1 Pro on the free developer tier: the same voices at no cost, without latency or data-processing guarantees."
|
|
2115
|
+
),
|
|
2116
|
+
fishTts(
|
|
2117
|
+
"fish-drama-3",
|
|
2118
|
+
"Fish Audio Drama 3",
|
|
2119
|
+
"drama-3",
|
|
2120
|
+
"Fish Audio Drama 3 text to speech you direct like an actor: [directions], sounds, pauses and per-word tags."
|
|
2121
|
+
),
|
|
2122
|
+
{
|
|
2123
|
+
id: "fish-voice-clone",
|
|
2124
|
+
aliases: [],
|
|
2125
|
+
label: "Fish Audio Voice Clone",
|
|
2126
|
+
type: "voice-clone",
|
|
2127
|
+
adapter: "fish",
|
|
2128
|
+
providerModelId: "voice-clone",
|
|
2129
|
+
lifecycle: "active",
|
|
2130
|
+
exposure: [],
|
|
2131
|
+
constraints: {
|
|
2132
|
+
// POST /model takes 1-20 voice files; Fish advises 10 s or more of clean speech each.
|
|
2133
|
+
references: { audios: 20, audioFormats: ["wav", "mp3", "m4a", "opus"] },
|
|
2134
|
+
supports: []
|
|
2135
|
+
},
|
|
2136
|
+
defaults: {},
|
|
2137
|
+
usage: PER_REQUEST2,
|
|
2138
|
+
pricingKind: "flat",
|
|
2139
|
+
display: {
|
|
2140
|
+
provider: "fishaudio",
|
|
2141
|
+
logo: FISH_LOGO,
|
|
2142
|
+
description: "Clone a private, reusable voice from one or more clean recordings, then speak with it on the Fish Audio speech models."
|
|
2143
|
+
},
|
|
2144
|
+
capabilities: {}
|
|
2094
2145
|
},
|
|
2095
2146
|
{
|
|
2096
|
-
id: "
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2147
|
+
id: "fish-voice-design-1",
|
|
2148
|
+
aliases: [],
|
|
2149
|
+
label: "Fish Audio Voice Design",
|
|
2150
|
+
type: "voice-design",
|
|
2151
|
+
adapter: "fish",
|
|
2152
|
+
providerModelId: "voice-design-1",
|
|
2153
|
+
lifecycle: "active",
|
|
2154
|
+
exposure: [],
|
|
2155
|
+
constraints: {
|
|
2156
|
+
voiceDesign: { maxCandidates: 4, previewMaxChars: 150 },
|
|
2157
|
+
supports: [],
|
|
2158
|
+
prompt: { referenceSyntax: "numbered", maxChars: 2e3 }
|
|
2159
|
+
},
|
|
2160
|
+
defaults: {},
|
|
2161
|
+
usage: PER_REQUEST2,
|
|
2162
|
+
pricingKind: "flat",
|
|
2163
|
+
display: {
|
|
2164
|
+
provider: "fishaudio",
|
|
2165
|
+
logo: FISH_LOGO,
|
|
2166
|
+
description: "Describe a voice and get up to four short candidates; keep one as a cloned voice."
|
|
2167
|
+
},
|
|
2168
|
+
capabilities: {}
|
|
2103
2169
|
}
|
|
2104
2170
|
];
|
|
2105
2171
|
|
|
@@ -3678,11 +3744,11 @@ var MINIMAX_VOICES = [
|
|
|
3678
3744
|
];
|
|
3679
3745
|
|
|
3680
3746
|
// src/catalog/media-nodes.ts
|
|
3681
|
-
var
|
|
3747
|
+
var ELEVENLABS_LOGO2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
|
|
3682
3748
|
var GOOGLE_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
|
|
3683
3749
|
var MINIMAX_LOGO = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png";
|
|
3684
3750
|
var SYNC_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/sync.png";
|
|
3685
|
-
var
|
|
3751
|
+
var PER_CALL3 = { unit: "images" };
|
|
3686
3752
|
var EXPOSURE4 = ["cowork", "space_builder"];
|
|
3687
3753
|
var LIPSYNC_AUDIO = { audioSeconds: { max: 30 } };
|
|
3688
3754
|
function elevenLabsTts(tts) {
|
|
@@ -3703,9 +3769,9 @@ function elevenLabsTts(tts) {
|
|
|
3703
3769
|
prompt: { referenceSyntax: "numbered", maxChars: tts.maxChars }
|
|
3704
3770
|
},
|
|
3705
3771
|
defaults: { voice: "Rachel", ...tts.formats && { outputFormat: "mp3_44100_128" } },
|
|
3706
|
-
usage:
|
|
3772
|
+
usage: PER_CALL3,
|
|
3707
3773
|
pricingKind: "flat",
|
|
3708
|
-
display: { provider: "elevenlabs", logo:
|
|
3774
|
+
display: { provider: "elevenlabs", logo: ELEVENLABS_LOGO2, description: tts.description },
|
|
3709
3775
|
capabilities: {}
|
|
3710
3776
|
};
|
|
3711
3777
|
}
|
|
@@ -3727,7 +3793,7 @@ function geminiTts(id, label, description) {
|
|
|
3727
3793
|
prompt: { referenceSyntax: "numbered", maxChars: 8192 }
|
|
3728
3794
|
},
|
|
3729
3795
|
defaults: { voice: "Kore" },
|
|
3730
|
-
usage:
|
|
3796
|
+
usage: PER_CALL3,
|
|
3731
3797
|
pricingKind: "flat",
|
|
3732
3798
|
display: { provider: "google", logo: GOOGLE_LOGO, description },
|
|
3733
3799
|
capabilities: {}
|
|
@@ -3750,7 +3816,7 @@ function syncLipsync(id, label, providerModelId, syncModel, description) {
|
|
|
3750
3816
|
},
|
|
3751
3817
|
defaults: {},
|
|
3752
3818
|
...syncModel !== void 0 && { providerOptions: { fal: { model: syncModel } } },
|
|
3753
|
-
usage:
|
|
3819
|
+
usage: PER_CALL3,
|
|
3754
3820
|
pricingKind: "flat",
|
|
3755
3821
|
display: { provider: "sync", logo: SYNC_LOGO, description },
|
|
3756
3822
|
capabilities: { acceptsSourceVideo: true }
|
|
@@ -3811,7 +3877,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3811
3877
|
prompt: { referenceSyntax: "numbered", maxChars: 1e4 }
|
|
3812
3878
|
},
|
|
3813
3879
|
defaults: { voice: "Wise_Woman" },
|
|
3814
|
-
usage:
|
|
3880
|
+
usage: PER_CALL3,
|
|
3815
3881
|
pricingKind: "flat",
|
|
3816
3882
|
display: {
|
|
3817
3883
|
provider: "minimax",
|
|
@@ -3838,11 +3904,11 @@ var MEDIA_NODE_MODELS = [
|
|
|
3838
3904
|
supports: []
|
|
3839
3905
|
},
|
|
3840
3906
|
defaults: { voice: "Rachel", outputFormat: "mp3_44100_128" },
|
|
3841
|
-
usage:
|
|
3907
|
+
usage: PER_CALL3,
|
|
3842
3908
|
pricingKind: "flat",
|
|
3843
3909
|
display: {
|
|
3844
3910
|
provider: "elevenlabs",
|
|
3845
|
-
logo:
|
|
3911
|
+
logo: ELEVENLABS_LOGO2,
|
|
3846
3912
|
description: "ElevenLabs speech to speech; re-voices a recording in another voice and keeps its timing and delivery."
|
|
3847
3913
|
},
|
|
3848
3914
|
capabilities: {}
|
|
@@ -3865,11 +3931,11 @@ var MEDIA_NODE_MODELS = [
|
|
|
3865
3931
|
supports: []
|
|
3866
3932
|
},
|
|
3867
3933
|
defaults: {},
|
|
3868
|
-
usage:
|
|
3934
|
+
usage: PER_CALL3,
|
|
3869
3935
|
pricingKind: "flat",
|
|
3870
3936
|
display: {
|
|
3871
3937
|
provider: "elevenlabs",
|
|
3872
|
-
logo:
|
|
3938
|
+
logo: ELEVENLABS_LOGO2,
|
|
3873
3939
|
description: "ElevenLabs dubbing; translates the speech in a video or audio file into another language in the original voices."
|
|
3874
3940
|
},
|
|
3875
3941
|
capabilities: { acceptsSourceVideo: true }
|
|
@@ -3912,7 +3978,7 @@ var MEDIA_NODE_MODELS = [
|
|
|
3912
3978
|
supports: []
|
|
3913
3979
|
},
|
|
3914
3980
|
defaults: {},
|
|
3915
|
-
usage:
|
|
3981
|
+
usage: PER_CALL3,
|
|
3916
3982
|
pricingKind: "flat",
|
|
3917
3983
|
display: {
|
|
3918
3984
|
provider: "veed",
|
|
@@ -3964,17 +4030,18 @@ var MEDIA_NODE_MODELS = [
|
|
|
3964
4030
|
supports: []
|
|
3965
4031
|
},
|
|
3966
4032
|
defaults: {},
|
|
3967
|
-
usage:
|
|
4033
|
+
usage: PER_CALL3,
|
|
3968
4034
|
pricingKind: "flat",
|
|
3969
4035
|
display: {
|
|
3970
4036
|
provider: "elevenlabs",
|
|
3971
|
-
logo:
|
|
4037
|
+
logo: ELEVENLABS_LOGO2,
|
|
3972
4038
|
description: "ElevenLabs Scribe v2 speech to text with word timings, speaker labels and audio-event tags."
|
|
3973
4039
|
},
|
|
3974
4040
|
capabilities: {}
|
|
3975
4041
|
},
|
|
3976
4042
|
SAM_3_IMAGE,
|
|
3977
|
-
...FISH_MODELS
|
|
4043
|
+
...FISH_MODELS,
|
|
4044
|
+
...ELEVENLABS_DIRECT_MODELS
|
|
3978
4045
|
];
|
|
3979
4046
|
|
|
3980
4047
|
// src/catalog/model3d.ts
|
|
@@ -4170,7 +4237,7 @@ var MODEL3D_MODELS = [
|
|
|
4170
4237
|
|
|
4171
4238
|
// src/catalog/other.ts
|
|
4172
4239
|
var GOOGLE_LOGO2 = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/192485d2-a76a-4657-9c06-930b2c70badd_compressed.png";
|
|
4173
|
-
var
|
|
4240
|
+
var ELEVENLABS_LOGO3 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
|
|
4174
4241
|
var MINIMAX_LOGO2 = "https://d31vvfpk2ppdyq.cloudfront.net/assets/image/f4c2e906-28b7-4a4a-b491-df8fef7808ed.png";
|
|
4175
4242
|
var OTHER_MODELS = [
|
|
4176
4243
|
{
|
|
@@ -4335,7 +4402,7 @@ var OTHER_MODELS = [
|
|
|
4335
4402
|
pricingKind: "flat",
|
|
4336
4403
|
display: {
|
|
4337
4404
|
provider: "elevenlabs",
|
|
4338
|
-
logo:
|
|
4405
|
+
logo: ELEVENLABS_LOGO3,
|
|
4339
4406
|
description: "ElevenLabs Music v2.5 text-to-music; full songs or instrumentals from 3 seconds to 1 minute."
|
|
4340
4407
|
},
|
|
4341
4408
|
capabilities: {}
|
|
@@ -4387,7 +4454,7 @@ var OTHER_MODELS = [
|
|
|
4387
4454
|
pricingKind: "flat",
|
|
4388
4455
|
display: {
|
|
4389
4456
|
provider: "elevenlabs",
|
|
4390
|
-
logo:
|
|
4457
|
+
logo: ELEVENLABS_LOGO3,
|
|
4391
4458
|
description: "ElevenLabs Sound Effects v2; a sound effect from a text description, up to 22 seconds."
|
|
4392
4459
|
},
|
|
4393
4460
|
capabilities: {}
|
|
@@ -7616,7 +7683,8 @@ var ADAPTER_IDS = [
|
|
|
7616
7683
|
"higgsfield",
|
|
7617
7684
|
"xai-video",
|
|
7618
7685
|
"luma",
|
|
7619
|
-
"fish"
|
|
7686
|
+
"fish",
|
|
7687
|
+
"elevenlabs"
|
|
7620
7688
|
];
|
|
7621
7689
|
var ModelTypeSchema = import_zod3.z.enum([
|
|
7622
7690
|
"text",
|