@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.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
- accent: "american",
2009
- languages: ["en", "de", "pt", "cs", "pl", "tr", "hi"],
2010
- description: "A young adult with energy and warmth - suitable for reels and shorts.",
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: "Alice",
2016
- name: "Alice",
1992
+ id: "10a3a20742114a4ea6dd441e7591850f",
1993
+ name: "Manon",
2017
1994
  gender: "female",
2018
- accent: "british",
2019
- languages: ["en", "it", "fr", "ar", "ja", "pl", "hi"],
2020
- description: "Clear and engaging, friendly woman with a British accent suitable for e-learning.",
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: "Matilda",
2025
- name: "Matilda",
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
- accent: "american",
2028
- languages: ["en", "it", "fr", "de", "ar", "es"],
2029
- description: "A professional woman with a pleasing alto pitch. Suitable for many use cases.",
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: "Will",
2034
- name: "Will",
2016
+ id: "c1e7cc926aa5469aa966c353094d4b0b",
2017
+ name: "Lukas",
2035
2018
  gender: "male",
2036
- accent: "american",
2037
- languages: ["en", "fr", "de", "pt", "zh", "cs", "fil", "sk", "es", "sv"],
2038
- description: "Conversational and laid back.",
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: "Jessica",
2043
- name: "Jessica",
2024
+ id: "b3c060cc41544a7da94a2c487647c902",
2025
+ name: "Let\xEDcia",
2044
2026
  gender: "female",
2045
- accent: "american",
2046
- languages: ["en", "fr", "ar", "ja", "zh", "de", "cs", "hi"],
2047
- description: "Young and popular, this playful American female voice is perfect for trendy content.",
2048
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cgSgspJ2msm6clMCkdW9/56a97bf8-b69b-448f-846c-c3a11683d45a.mp3"
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: "Eric",
2052
- name: "Eric",
2033
+ id: "add7bcb8d3c8423bbfa152ca232aad6e",
2034
+ name: "Ricardo",
2053
2035
  gender: "male",
2054
- accent: "american",
2055
- languages: ["en", "fr", "pt", "de", "sk", "es"],
2056
- description: "A smooth tenor pitch from a man in his 40s - perfect for agentic use cases.",
2057
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/cjVigY5qzO86Huf0OWal/d098fda0-6456-4030-b3d8-63aa048c9070.mp3"
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: "Chris",
2061
- name: "Chris",
2062
- gender: "male",
2063
- accent: "american",
2064
- languages: ["en", "fr", "ar", "pt", "sv", "hi"],
2065
- description: "Natural and real, this down-to-earth voice is great across many use-cases.",
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: "Brian",
2070
- name: "Brian",
2050
+ id: "297a6fd278df47c3b9da9bfdf55ac89a",
2051
+ name: "Satoru",
2071
2052
  gender: "male",
2072
- accent: "american",
2073
- languages: ["en", "ar", "zh", "pt", "de", "nl", "sk", "ro", "hi"],
2074
- description: "Middle-aged man with a resonant and comforting tone. Great for narrations and advertisements.",
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: "Daniel",
2079
- name: "Daniel",
2080
- gender: "male",
2081
- accent: "british",
2082
- languages: ["en", "de", "tr"],
2083
- description: "A strong voice perfect for delivering a professional broadcast or news story.",
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: "Lily",
2088
- name: "Lily",
2066
+ id: "74c6aba5cbf94a15bbdc547ffce5cb38",
2067
+ name: "Yutong",
2089
2068
  gender: "female",
2090
- accent: "british",
2091
- languages: ["en", "it", "de", "zh", "cs", "nl", "pl"],
2092
- description: "Velvety British female voice delivers news and narrations with warmth and clarity.",
2093
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pFZP5JQG7iQjIQuC4Bku/89b68b35-b3dd-4348-a84a-a3c13a3c2b30.mp3"
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: "Bill",
2097
- name: "Bill",
2098
- gender: "male",
2099
- accent: "american",
2100
- languages: ["en", "fr", "ar", "zh", "de", "cs"],
2101
- description: "Friendly and comforting voice ready to narrate your stories.",
2102
- previewUrl: "https://storage.googleapis.com/eleven-public-prod/premade/voices/pqHfZKP75CvOlQylNhV4/d782b3ff-84ba-4029-848c-acf01285524d.mp3"
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 ELEVENLABS_LOGO = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
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 PER_CALL2 = { unit: "images" };
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: PER_CALL2,
3772
+ usage: PER_CALL3,
3707
3773
  pricingKind: "flat",
3708
- display: { provider: "elevenlabs", logo: ELEVENLABS_LOGO, description: tts.description },
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: PER_CALL2,
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: PER_CALL2,
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: PER_CALL2,
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: PER_CALL2,
3907
+ usage: PER_CALL3,
3842
3908
  pricingKind: "flat",
3843
3909
  display: {
3844
3910
  provider: "elevenlabs",
3845
- logo: ELEVENLABS_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: PER_CALL2,
3934
+ usage: PER_CALL3,
3869
3935
  pricingKind: "flat",
3870
3936
  display: {
3871
3937
  provider: "elevenlabs",
3872
- logo: ELEVENLABS_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: PER_CALL2,
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: PER_CALL2,
4033
+ usage: PER_CALL3,
3968
4034
  pricingKind: "flat",
3969
4035
  display: {
3970
4036
  provider: "elevenlabs",
3971
- logo: ELEVENLABS_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 ELEVENLABS_LOGO2 = "https://cdn.jsdelivr.net/npm/@lobehub/icons-static-png@1.97.0/light/elevenlabs.png";
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: ELEVENLABS_LOGO2,
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: ELEVENLABS_LOGO2,
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",