@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/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
- accent: "american",
1924
- languages: ["en", "de", "pt", "cs", "pl", "tr", "hi"],
1925
- description: "A young adult with energy and warmth - suitable for reels and shorts.",
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: "Alice",
1931
- name: "Alice",
1907
+ id: "10a3a20742114a4ea6dd441e7591850f",
1908
+ name: "Manon",
1932
1909
  gender: "female",
1933
- accent: "british",
1934
- languages: ["en", "it", "fr", "ar", "ja", "pl", "hi"],
1935
- description: "Clear and engaging, friendly woman with a British accent suitable for e-learning.",
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: "Matilda",
1940
- name: "Matilda",
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
- accent: "american",
1943
- languages: ["en", "it", "fr", "de", "ar", "es"],
1944
- description: "A professional woman with a pleasing alto pitch. Suitable for many use cases.",
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: "Will",
1949
- name: "Will",
1931
+ id: "c1e7cc926aa5469aa966c353094d4b0b",
1932
+ name: "Lukas",
1950
1933
  gender: "male",
1951
- accent: "american",
1952
- languages: ["en", "fr", "de", "pt", "zh", "cs", "fil", "sk", "es", "sv"],
1953
- description: "Conversational and laid back.",
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: "Jessica",
1958
- name: "Jessica",
1939
+ id: "b3c060cc41544a7da94a2c487647c902",
1940
+ name: "Let\xEDcia",
1959
1941
  gender: "female",
1960
- accent: "american",
1961
- languages: ["en", "fr", "ar", "ja", "zh", "de", "cs", "hi"],
1962
- description: "Young and popular, this playful American female voice is perfect for trendy content.",
1963
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cgSgspJ2msm6clMCkdW9/56a97bf8-b69b-448f-846c-c3a11683d45a.mp3"
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: "Eric",
1967
- name: "Eric",
1948
+ id: "add7bcb8d3c8423bbfa152ca232aad6e",
1949
+ name: "Ricardo",
1968
1950
  gender: "male",
1969
- accent: "american",
1970
- languages: ["en", "fr", "pt", "de", "sk", "es"],
1971
- description: "A smooth tenor pitch from a man in his 40s - perfect for agentic use cases.",
1972
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cjVigY5qzO86Huf0OWal/d098fda0-6456-4030-b3d8-63aa048c9070.mp3"
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: "Chris",
1976
- name: "Chris",
1977
- gender: "male",
1978
- accent: "american",
1979
- languages: ["en", "fr", "ar", "pt", "sv", "hi"],
1980
- description: "Natural and real, this down-to-earth voice is great across many use-cases.",
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: "Brian",
1985
- name: "Brian",
1965
+ id: "297a6fd278df47c3b9da9bfdf55ac89a",
1966
+ name: "Satoru",
1986
1967
  gender: "male",
1987
- accent: "american",
1988
- languages: ["en", "ar", "zh", "pt", "de", "nl", "sk", "ro", "hi"],
1989
- description: "Middle-aged man with a resonant and comforting tone. Great for narrations and advertisements.",
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: "Daniel",
1994
- name: "Daniel",
1995
- gender: "male",
1996
- accent: "british",
1997
- languages: ["en", "de", "tr"],
1998
- description: "A strong voice perfect for delivering a professional broadcast or news story.",
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: "Lily",
2003
- name: "Lily",
1981
+ id: "74c6aba5cbf94a15bbdc547ffce5cb38",
1982
+ name: "Yutong",
2004
1983
  gender: "female",
2005
- accent: "british",
2006
- languages: ["en", "it", "de", "zh", "cs", "nl", "pl"],
2007
- description: "Velvety British female voice delivers news and narrations with warmth and clarity.",
2008
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pFZP5JQG7iQjIQuC4Bku/89b68b35-b3dd-4348-a84a-a3c13a3c2b30.mp3"
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: "Bill",
2012
- name: "Bill",
2013
- gender: "male",
2014
- accent: "american",
2015
- languages: ["en", "fr", "ar", "zh", "de", "cs"],
2016
- description: "Friendly and comforting voice ready to narrate your stories.",
2017
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pqHfZKP75CvOlQylNhV4/d782b3ff-84ba-4029-848c-acf01285524d.mp3"
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 ELEVENLABS_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
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 PER_CALL2 = { unit: "images" };
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: PER_CALL2,
3687
+ usage: PER_CALL3,
3622
3688
  pricingKind: "flat",
3623
- display: { provider: "elevenlabs", logo: ELEVENLABS_LOGO, description: tts.description },
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: PER_CALL2,
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: PER_CALL2,
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: PER_CALL2,
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: PER_CALL2,
3822
+ usage: PER_CALL3,
3757
3823
  pricingKind: "flat",
3758
3824
  display: {
3759
3825
  provider: "elevenlabs",
3760
- logo: ELEVENLABS_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: PER_CALL2,
3849
+ usage: PER_CALL3,
3784
3850
  pricingKind: "flat",
3785
3851
  display: {
3786
3852
  provider: "elevenlabs",
3787
- logo: ELEVENLABS_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: PER_CALL2,
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: PER_CALL2,
3948
+ usage: PER_CALL3,
3883
3949
  pricingKind: "flat",
3884
3950
  display: {
3885
3951
  provider: "elevenlabs",
3886
- logo: ELEVENLABS_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 ELEVENLABS_LOGO2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
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: ELEVENLABS_LOGO2,
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: ELEVENLABS_LOGO2,
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",