@agentproto/model-catalog 0.2.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.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +37 -0
  3. package/dist/access/index.d.ts +30 -0
  4. package/dist/access/index.mjs +4 -0
  5. package/dist/access/index.mjs.map +1 -0
  6. package/dist/audio/index.d.ts +84 -0
  7. package/dist/audio/index.mjs +3 -0
  8. package/dist/audio/index.mjs.map +1 -0
  9. package/dist/audio-BzVF_wke.d.ts +92 -0
  10. package/dist/base-BNHcMifc.d.ts +109 -0
  11. package/dist/byok/index.d.ts +33 -0
  12. package/dist/byok/index.mjs +3 -0
  13. package/dist/byok/index.mjs.map +1 -0
  14. package/dist/catalog-aQHd559b.d.ts +594 -0
  15. package/dist/chunk-2LWYZOWB.mjs +643 -0
  16. package/dist/chunk-2LWYZOWB.mjs.map +1 -0
  17. package/dist/chunk-CINXNTU3.mjs +134 -0
  18. package/dist/chunk-CINXNTU3.mjs.map +1 -0
  19. package/dist/chunk-F7OEHYUI.mjs +187 -0
  20. package/dist/chunk-F7OEHYUI.mjs.map +1 -0
  21. package/dist/chunk-GH7PB5FB.mjs +183 -0
  22. package/dist/chunk-GH7PB5FB.mjs.map +1 -0
  23. package/dist/chunk-H6JUTF3U.mjs +33 -0
  24. package/dist/chunk-H6JUTF3U.mjs.map +1 -0
  25. package/dist/chunk-HEDDSOZF.mjs +47 -0
  26. package/dist/chunk-HEDDSOZF.mjs.map +1 -0
  27. package/dist/chunk-HRRG2RZO.mjs +116 -0
  28. package/dist/chunk-HRRG2RZO.mjs.map +1 -0
  29. package/dist/chunk-IJZ4XPO2.mjs +606 -0
  30. package/dist/chunk-IJZ4XPO2.mjs.map +1 -0
  31. package/dist/chunk-IORIAFK2.mjs +227 -0
  32. package/dist/chunk-IORIAFK2.mjs.map +1 -0
  33. package/dist/chunk-OHAMH3ZE.mjs +2629 -0
  34. package/dist/chunk-OHAMH3ZE.mjs.map +1 -0
  35. package/dist/chunk-QHELXPSL.mjs +85 -0
  36. package/dist/chunk-QHELXPSL.mjs.map +1 -0
  37. package/dist/chunk-SGJR6ZQH.mjs +1230 -0
  38. package/dist/chunk-SGJR6ZQH.mjs.map +1 -0
  39. package/dist/chunk-WRUWNKDB.mjs +521 -0
  40. package/dist/chunk-WRUWNKDB.mjs.map +1 -0
  41. package/dist/chunk-WTHHXXIK.mjs +366 -0
  42. package/dist/chunk-WTHHXXIK.mjs.map +1 -0
  43. package/dist/chunk-XFDXTFV3.mjs +28 -0
  44. package/dist/chunk-XFDXTFV3.mjs.map +1 -0
  45. package/dist/cost/index.d.ts +114 -0
  46. package/dist/cost/index.mjs +13 -0
  47. package/dist/cost/index.mjs.map +1 -0
  48. package/dist/curation/index.d.ts +98 -0
  49. package/dist/curation/index.mjs +13 -0
  50. package/dist/curation/index.mjs.map +1 -0
  51. package/dist/evaluate-DisH3H7u.d.ts +84 -0
  52. package/dist/image/index.d.ts +79 -0
  53. package/dist/image/index.mjs +3 -0
  54. package/dist/image/index.mjs.map +1 -0
  55. package/dist/index-BICjPG8H.d.ts +132 -0
  56. package/dist/index-D8nL3fPZ.d.ts +171 -0
  57. package/dist/index.d.ts +94 -0
  58. package/dist/index.mjs +33 -0
  59. package/dist/index.mjs.map +1 -0
  60. package/dist/llm/index.d.ts +48 -0
  61. package/dist/llm/index.mjs +4 -0
  62. package/dist/llm/index.mjs.map +1 -0
  63. package/dist/overlay/index.d.ts +67 -0
  64. package/dist/overlay/index.mjs +3 -0
  65. package/dist/overlay/index.mjs.map +1 -0
  66. package/dist/picker/index.d.ts +11 -0
  67. package/dist/picker/index.mjs +26 -0
  68. package/dist/picker/index.mjs.map +1 -0
  69. package/dist/pricing/index.d.ts +106 -0
  70. package/dist/pricing/index.mjs +3 -0
  71. package/dist/pricing/index.mjs.map +1 -0
  72. package/dist/providers/index.d.ts +78 -0
  73. package/dist/providers/index.mjs +237 -0
  74. package/dist/providers/index.mjs.map +1 -0
  75. package/dist/schema/index.d.ts +627 -0
  76. package/dist/schema/index.mjs +4 -0
  77. package/dist/schema/index.mjs.map +1 -0
  78. package/dist/schema/voice.d.ts +66 -0
  79. package/dist/schema/voice.mjs +3 -0
  80. package/dist/schema/voice.mjs.map +1 -0
  81. package/dist/video/index.d.ts +78 -0
  82. package/dist/video/index.mjs +3 -0
  83. package/dist/video/index.mjs.map +1 -0
  84. package/dist/voice/index.d.ts +1300 -0
  85. package/dist/voice/index.mjs +4 -0
  86. package/dist/voice/index.mjs.map +1 -0
  87. package/package.json +137 -0
@@ -0,0 +1,1300 @@
1
+ import { CatalogVoice, CatalogVoiceProvider } from '../schema/voice.js';
2
+ export { CatalogVoiceProviderSchema, CatalogVoiceSchema } from '../schema/voice.js';
3
+ import 'zod';
4
+
5
+ /**
6
+ * Unified voice catalog — the single source of truth for every curated
7
+ * TTS / realtime voice across providers. Per-provider sources under
8
+ * `providers/` are concatenated here; the registry exposes them as
9
+ * `kind: "voice"`, and the runtime merge layer (agent-framework) appends
10
+ * live ElevenLabs voices on top.
11
+ *
12
+ * Users pick voices by natural label ("Victoire", "Camille", "Pierre"…);
13
+ * provider details are internal — resolved by `resolveVoice()`.
14
+ */
15
+
16
+ /**
17
+ * Every curated voice, ordered featured-FR first then by provider. Saved
18
+ * `operator.voiceId` rows reference `catalogId`, so ordering is pure UX.
19
+ *
20
+ * Intentionally NOT annotated `: CatalogVoice[]` — the per-provider arrays
21
+ * are `as const satisfies`, so leaving inference intact preserves the
22
+ * literal `catalogId`s that `CatalogVoiceId` is derived from.
23
+ */
24
+ declare const VOICE_CATALOG: ({
25
+ readonly catalogId: "minimax-french-female-anchor";
26
+ readonly providerVoiceId: "French_FemaleAnchor";
27
+ readonly provider: "minimax";
28
+ readonly label: "Camille";
29
+ readonly description: "Posée et professionnelle, style présentatrice";
30
+ readonly gender: "female";
31
+ readonly primaryLanguage: "fr";
32
+ readonly supportedLanguages: string[];
33
+ readonly age: "adult";
34
+ readonly quality: "premium";
35
+ readonly featured: true;
36
+ } | {
37
+ readonly catalogId: "minimax-french-movie-lead-female";
38
+ readonly providerVoiceId: "French_MovieLeadFemale";
39
+ readonly provider: "minimax";
40
+ readonly label: "Sophie";
41
+ readonly description: "Chaleureuse et naturelle, style cinéma";
42
+ readonly gender: "female";
43
+ readonly primaryLanguage: "fr";
44
+ readonly supportedLanguages: string[];
45
+ readonly age: "adult";
46
+ readonly quality: "premium";
47
+ readonly featured: true;
48
+ } | {
49
+ readonly catalogId: "minimax-french-female-news-anchor";
50
+ readonly providerVoiceId: "French_Female_News Anchor";
51
+ readonly provider: "minimax";
52
+ readonly label: "Marion";
53
+ readonly description: "Rapide et dynamique, style journaliste";
54
+ readonly gender: "female";
55
+ readonly primaryLanguage: "fr";
56
+ readonly supportedLanguages: string[];
57
+ readonly age: "adult";
58
+ readonly quality: "premium";
59
+ readonly featured: true;
60
+ } | {
61
+ readonly catalogId: "minimax-french-male-narrator";
62
+ readonly providerVoiceId: "French_MaleNarrator";
63
+ readonly provider: "minimax";
64
+ readonly label: "Pierre";
65
+ readonly description: "Voix masculine posée, style narrateur";
66
+ readonly gender: "male";
67
+ readonly primaryLanguage: "fr";
68
+ readonly supportedLanguages: string[];
69
+ readonly age: "adult";
70
+ readonly quality: "premium";
71
+ } | {
72
+ readonly catalogId: "minimax-french-male-speech-new";
73
+ readonly providerVoiceId: "French_Male_Speech_New";
74
+ readonly provider: "minimax";
75
+ readonly label: "Antoine";
76
+ readonly description: "Voix masculine calme et mesurée";
77
+ readonly gender: "male";
78
+ readonly primaryLanguage: "fr";
79
+ readonly supportedLanguages: string[];
80
+ readonly age: "adult";
81
+ readonly quality: "premium";
82
+ } | {
83
+ readonly catalogId: "minimax-french-casual-man";
84
+ readonly providerVoiceId: "French_CasualMan";
85
+ readonly provider: "minimax";
86
+ readonly label: "Lucas";
87
+ readonly description: "Voix masculine décontractée";
88
+ readonly gender: "male";
89
+ readonly primaryLanguage: "fr";
90
+ readonly supportedLanguages: string[];
91
+ readonly age: "adult";
92
+ readonly quality: "premium";
93
+ } | {
94
+ readonly catalogId: "minimax-english-trustworth-man";
95
+ readonly providerVoiceId: "English_Trustworth_Man";
96
+ readonly provider: "minimax";
97
+ readonly label: "Aaron";
98
+ readonly description: "Trustworthy adult male voice";
99
+ readonly gender: "male";
100
+ readonly primaryLanguage: "en";
101
+ readonly supportedLanguages: string[];
102
+ readonly age: "adult";
103
+ readonly quality: "premium";
104
+ } | {
105
+ readonly catalogId: "minimax-english-calm-woman";
106
+ readonly providerVoiceId: "English_CalmWoman";
107
+ readonly provider: "minimax";
108
+ readonly label: "Olivia";
109
+ readonly description: "Calm adult female voice";
110
+ readonly gender: "female";
111
+ readonly primaryLanguage: "en";
112
+ readonly supportedLanguages: string[];
113
+ readonly age: "adult";
114
+ readonly quality: "premium";
115
+ } | {
116
+ readonly catalogId: "minimax-english-gentle-voiced-man";
117
+ readonly providerVoiceId: "English_Gentle-voiced_man";
118
+ readonly provider: "minimax";
119
+ readonly label: "Mark";
120
+ readonly description: "Gentle adult male voice";
121
+ readonly gender: "male";
122
+ readonly primaryLanguage: "en";
123
+ readonly supportedLanguages: string[];
124
+ readonly age: "adult";
125
+ readonly quality: "premium";
126
+ } | {
127
+ readonly catalogId: "minimax-english-graceful-lady";
128
+ readonly providerVoiceId: "English_Graceful_Lady";
129
+ readonly provider: "minimax";
130
+ readonly label: "Charlotte";
131
+ readonly description: "Graceful adult female voice";
132
+ readonly gender: "female";
133
+ readonly primaryLanguage: "en";
134
+ readonly supportedLanguages: string[];
135
+ readonly age: "adult";
136
+ readonly quality: "premium";
137
+ } | {
138
+ readonly catalogId: "minimax-english-upbeat-woman";
139
+ readonly providerVoiceId: "English_Upbeat_Woman";
140
+ readonly provider: "minimax";
141
+ readonly label: "Emma";
142
+ readonly description: "Upbeat young female voice";
143
+ readonly gender: "female";
144
+ readonly primaryLanguage: "en";
145
+ readonly supportedLanguages: string[];
146
+ readonly age: "young";
147
+ readonly quality: "premium";
148
+ } | {
149
+ readonly catalogId: "minimax-english-man-with-deep-voice";
150
+ readonly providerVoiceId: "English_ManWithDeepVoice";
151
+ readonly provider: "minimax";
152
+ readonly label: "Henry";
153
+ readonly description: "Deep adult male voice";
154
+ readonly gender: "male";
155
+ readonly primaryLanguage: "en";
156
+ readonly supportedLanguages: string[];
157
+ readonly age: "adult";
158
+ readonly quality: "premium";
159
+ } | {
160
+ readonly catalogId: "minimax-english-serene-woman";
161
+ readonly providerVoiceId: "English_SereneWoman";
162
+ readonly provider: "minimax";
163
+ readonly label: "Hannah";
164
+ readonly description: "Serene adult female voice";
165
+ readonly gender: "female";
166
+ readonly primaryLanguage: "en";
167
+ readonly supportedLanguages: string[];
168
+ readonly age: "adult";
169
+ readonly quality: "premium";
170
+ } | {
171
+ readonly catalogId: "minimax-english-confident-woman";
172
+ readonly providerVoiceId: "English_ConfidentWoman";
173
+ readonly provider: "minimax";
174
+ readonly label: "Grace";
175
+ readonly description: "Confident adult female voice";
176
+ readonly gender: "female";
177
+ readonly primaryLanguage: "en";
178
+ readonly supportedLanguages: string[];
179
+ readonly age: "adult";
180
+ readonly quality: "premium";
181
+ } | {
182
+ readonly catalogId: "minimax-english-patient-man";
183
+ readonly providerVoiceId: "English_PatientMan";
184
+ readonly provider: "minimax";
185
+ readonly label: "Patrick";
186
+ readonly description: "Patient adult male voice";
187
+ readonly gender: "male";
188
+ readonly primaryLanguage: "en";
189
+ readonly supportedLanguages: string[];
190
+ readonly age: "adult";
191
+ readonly quality: "premium";
192
+ } | {
193
+ readonly catalogId: "minimax-english-expressive-narrator";
194
+ readonly providerVoiceId: "English_expressive_narrator";
195
+ readonly provider: "minimax";
196
+ readonly label: "Daniel";
197
+ readonly description: "Expressive adult male narrator";
198
+ readonly gender: "male";
199
+ readonly primaryLanguage: "en";
200
+ readonly supportedLanguages: string[];
201
+ readonly age: "adult";
202
+ readonly quality: "premium";
203
+ } | {
204
+ readonly catalogId: "minimax-english-radiant-girl";
205
+ readonly providerVoiceId: "English_radiant_girl";
206
+ readonly provider: "minimax";
207
+ readonly label: "Ruby";
208
+ readonly description: "Radiant young female voice";
209
+ readonly gender: "female";
210
+ readonly primaryLanguage: "en";
211
+ readonly supportedLanguages: string[];
212
+ readonly age: "young";
213
+ readonly quality: "premium";
214
+ } | {
215
+ readonly catalogId: "minimax-spanish-serene-woman";
216
+ readonly providerVoiceId: "Spanish_SereneWoman";
217
+ readonly provider: "minimax";
218
+ readonly label: "Isabel";
219
+ readonly description: "Serene adult female voice";
220
+ readonly gender: "female";
221
+ readonly primaryLanguage: "es";
222
+ readonly supportedLanguages: string[];
223
+ readonly age: "adult";
224
+ readonly quality: "premium";
225
+ } | {
226
+ readonly catalogId: "minimax-spanish-narrator";
227
+ readonly providerVoiceId: "Spanish_Narrator";
228
+ readonly provider: "minimax";
229
+ readonly label: "Diego";
230
+ readonly description: "Adult male narrator voice";
231
+ readonly gender: "male";
232
+ readonly primaryLanguage: "es";
233
+ readonly supportedLanguages: string[];
234
+ readonly age: "adult";
235
+ readonly quality: "premium";
236
+ } | {
237
+ readonly catalogId: "minimax-german-friendly-man";
238
+ readonly providerVoiceId: "German_FriendlyMan";
239
+ readonly provider: "minimax";
240
+ readonly label: "Klaus";
241
+ readonly description: "Friendly adult male voice";
242
+ readonly gender: "male";
243
+ readonly primaryLanguage: "de";
244
+ readonly supportedLanguages: string[];
245
+ readonly age: "adult";
246
+ readonly quality: "premium";
247
+ } | {
248
+ readonly catalogId: "minimax-german-sweet-lady";
249
+ readonly providerVoiceId: "German_SweetLady";
250
+ readonly provider: "minimax";
251
+ readonly label: "Greta";
252
+ readonly description: "Sweet young female voice";
253
+ readonly gender: "female";
254
+ readonly primaryLanguage: "de";
255
+ readonly supportedLanguages: string[];
256
+ readonly age: "young";
257
+ readonly quality: "premium";
258
+ } | {
259
+ readonly catalogId: "minimax-japanese-gentle-butler";
260
+ readonly providerVoiceId: "Japanese_GentleButler";
261
+ readonly provider: "minimax";
262
+ readonly label: "Haruto";
263
+ readonly description: "Gentle adult male voice";
264
+ readonly gender: "male";
265
+ readonly primaryLanguage: "ja";
266
+ readonly supportedLanguages: string[];
267
+ readonly age: "adult";
268
+ readonly quality: "premium";
269
+ } | {
270
+ readonly catalogId: "minimax-japanese-kind-lady";
271
+ readonly providerVoiceId: "Japanese_KindLady";
272
+ readonly provider: "minimax";
273
+ readonly label: "Yuki";
274
+ readonly description: "Kind adult female voice";
275
+ readonly gender: "female";
276
+ readonly primaryLanguage: "ja";
277
+ readonly supportedLanguages: string[];
278
+ readonly age: "adult";
279
+ readonly quality: "premium";
280
+ } | {
281
+ readonly catalogId: "minimax-korean-calm-gentleman";
282
+ readonly providerVoiceId: "Korean_CalmGentleman";
283
+ readonly provider: "minimax";
284
+ readonly label: "Minjun";
285
+ readonly description: "Calm adult male voice";
286
+ readonly gender: "male";
287
+ readonly primaryLanguage: "ko";
288
+ readonly supportedLanguages: string[];
289
+ readonly age: "adult";
290
+ readonly quality: "premium";
291
+ } | {
292
+ readonly catalogId: "minimax-korean-sweet-girl";
293
+ readonly providerVoiceId: "Korean_SweetGirl";
294
+ readonly provider: "minimax";
295
+ readonly label: "Yuna";
296
+ readonly description: "Sweet young female voice";
297
+ readonly gender: "female";
298
+ readonly primaryLanguage: "ko";
299
+ readonly supportedLanguages: string[];
300
+ readonly age: "young";
301
+ readonly quality: "premium";
302
+ } | {
303
+ readonly catalogId: "minimax-chinese-mandarin-gentleman";
304
+ readonly providerVoiceId: "Chinese (Mandarin)_Gentleman";
305
+ readonly provider: "minimax";
306
+ readonly label: "Wei";
307
+ readonly description: "Adult male voice";
308
+ readonly gender: "male";
309
+ readonly primaryLanguage: "zh";
310
+ readonly supportedLanguages: string[];
311
+ readonly age: "adult";
312
+ readonly quality: "premium";
313
+ } | {
314
+ readonly catalogId: "minimax-chinese-mandarin-sweet-lady";
315
+ readonly providerVoiceId: "Chinese (Mandarin)_Sweet_Lady";
316
+ readonly provider: "minimax";
317
+ readonly label: "Mei";
318
+ readonly description: "Sweet young female voice";
319
+ readonly gender: "female";
320
+ readonly primaryLanguage: "zh";
321
+ readonly supportedLanguages: string[];
322
+ readonly age: "young";
323
+ readonly quality: "premium";
324
+ } | {
325
+ readonly catalogId: "minimax-portuguese-reliable-man";
326
+ readonly providerVoiceId: "Portuguese_ReliableMan";
327
+ readonly provider: "minimax";
328
+ readonly label: "Rafael";
329
+ readonly description: "Reliable adult male voice";
330
+ readonly gender: "male";
331
+ readonly primaryLanguage: "pt";
332
+ readonly supportedLanguages: string[];
333
+ readonly age: "adult";
334
+ readonly quality: "premium";
335
+ } | {
336
+ readonly catalogId: "minimax-portuguese-sweet-girl";
337
+ readonly providerVoiceId: "Portuguese_SweetGirl";
338
+ readonly provider: "minimax";
339
+ readonly label: "Beatriz";
340
+ readonly description: "Sweet young female voice";
341
+ readonly gender: "female";
342
+ readonly primaryLanguage: "pt";
343
+ readonly supportedLanguages: string[];
344
+ readonly age: "young";
345
+ readonly quality: "premium";
346
+ } | {
347
+ readonly catalogId: "minimax-italian-narrator";
348
+ readonly providerVoiceId: "Italian_Narrator";
349
+ readonly provider: "minimax";
350
+ readonly label: "Marco";
351
+ readonly description: "Adult male narrator voice";
352
+ readonly gender: "male";
353
+ readonly primaryLanguage: "it";
354
+ readonly supportedLanguages: string[];
355
+ readonly age: "adult";
356
+ readonly quality: "premium";
357
+ } | {
358
+ readonly catalogId: "minimax-italian-brave-heroine";
359
+ readonly providerVoiceId: "Italian_BraveHeroine";
360
+ readonly provider: "minimax";
361
+ readonly label: "Giulia";
362
+ readonly description: "Brave adult female voice";
363
+ readonly gender: "female";
364
+ readonly primaryLanguage: "it";
365
+ readonly supportedLanguages: string[];
366
+ readonly age: "adult";
367
+ readonly quality: "premium";
368
+ } | {
369
+ readonly catalogId: "elevenlabs-victoire";
370
+ readonly providerVoiceId: "O31r762Gb3WFygrEOGh0";
371
+ readonly provider: "elevenlabs";
372
+ readonly label: "Victoire";
373
+ readonly description: "Haute fidélité, voix naturelle premium";
374
+ readonly gender: "female";
375
+ readonly primaryLanguage: "fr";
376
+ readonly supportedLanguages: string[];
377
+ readonly age: "young";
378
+ readonly quality: "premium";
379
+ readonly featured: true;
380
+ } | {
381
+ readonly catalogId: "elevenlabs-victoria";
382
+ readonly providerVoiceId: "WeAAwKYcS06VmXw086yZ";
383
+ readonly provider: "elevenlabs";
384
+ readonly label: "Victoria";
385
+ readonly description: "Chaleureuse et posée, style narration";
386
+ readonly gender: "female";
387
+ readonly primaryLanguage: "fr";
388
+ readonly supportedLanguages: string[];
389
+ readonly age: "adult";
390
+ readonly quality: "premium";
391
+ readonly featured: true;
392
+ } | {
393
+ readonly catalogId: "elevenlabs-nicolas";
394
+ readonly providerVoiceId: "aQROLel5sQbj1vuIVi6B";
395
+ readonly provider: "elevenlabs";
396
+ readonly label: "Nicolas";
397
+ readonly description: "Voix masculine parisienne, style narrateur";
398
+ readonly gender: "male";
399
+ readonly primaryLanguage: "fr";
400
+ readonly supportedLanguages: string[];
401
+ readonly age: "adult";
402
+ readonly quality: "premium";
403
+ readonly featured: true;
404
+ } | {
405
+ readonly catalogId: "elevenlabs-george";
406
+ readonly providerVoiceId: "JBFqnCBsd6RMkjVDRZzb";
407
+ readonly provider: "elevenlabs";
408
+ readonly label: "George";
409
+ readonly description: "Warm, captivating British storyteller";
410
+ readonly gender: "male";
411
+ readonly primaryLanguage: "en";
412
+ readonly supportedLanguages: string[];
413
+ readonly age: "adult";
414
+ readonly quality: "premium";
415
+ readonly featured: true;
416
+ } | {
417
+ readonly catalogId: "elevenlabs-sarah";
418
+ readonly providerVoiceId: "EXAVITQu4vr4xnSDxMaL";
419
+ readonly provider: "elevenlabs";
420
+ readonly label: "Sarah";
421
+ readonly description: "Mature, reassuring, confident";
422
+ readonly gender: "female";
423
+ readonly primaryLanguage: "en";
424
+ readonly supportedLanguages: string[];
425
+ readonly age: "young";
426
+ readonly quality: "premium";
427
+ readonly featured: true;
428
+ } | {
429
+ readonly catalogId: "elevenlabs-daniel";
430
+ readonly providerVoiceId: "onwK4e9ZLuTAKqWW03F9";
431
+ readonly provider: "elevenlabs";
432
+ readonly label: "Daniel";
433
+ readonly description: "Steady British broadcaster";
434
+ readonly gender: "male";
435
+ readonly primaryLanguage: "en";
436
+ readonly supportedLanguages: string[];
437
+ readonly age: "adult";
438
+ readonly quality: "premium";
439
+ readonly featured: true;
440
+ } | {
441
+ readonly catalogId: "elevenlabs-alice";
442
+ readonly providerVoiceId: "Xb7hH8MSUJpSbSDYk0k2";
443
+ readonly provider: "elevenlabs";
444
+ readonly label: "Alice";
445
+ readonly description: "Clear, engaging British educator";
446
+ readonly gender: "female";
447
+ readonly primaryLanguage: "en";
448
+ readonly supportedLanguages: string[];
449
+ readonly age: "adult";
450
+ readonly quality: "premium";
451
+ readonly featured: true;
452
+ } | {
453
+ readonly catalogId: "openai-realtime-marin";
454
+ readonly providerVoiceId: "marin";
455
+ readonly provider: "openai-realtime";
456
+ readonly label: "Marin";
457
+ readonly description: "OpenAI Realtime — newest premium voice, warm and expressive";
458
+ readonly gender: "neutral";
459
+ readonly primaryLanguage: "en";
460
+ readonly supportedLanguages: string[];
461
+ readonly featured: true;
462
+ } | {
463
+ readonly catalogId: "openai-realtime-cedar";
464
+ readonly providerVoiceId: "cedar";
465
+ readonly provider: "openai-realtime";
466
+ readonly label: "Cedar";
467
+ readonly description: "OpenAI Realtime — grounded, confident";
468
+ readonly gender: "neutral";
469
+ readonly primaryLanguage: "en";
470
+ readonly supportedLanguages: string[];
471
+ readonly featured: true;
472
+ } | {
473
+ readonly catalogId: "openai-realtime-alloy";
474
+ readonly providerVoiceId: "alloy";
475
+ readonly provider: "openai-realtime";
476
+ readonly label: "Alloy";
477
+ readonly description: "OpenAI Realtime — neutral, balanced";
478
+ readonly gender: "neutral";
479
+ readonly primaryLanguage: "en";
480
+ readonly supportedLanguages: string[];
481
+ } | {
482
+ readonly catalogId: "openai-realtime-echo";
483
+ readonly providerVoiceId: "echo";
484
+ readonly provider: "openai-realtime";
485
+ readonly label: "Echo";
486
+ readonly description: "OpenAI Realtime — calm male";
487
+ readonly gender: "male";
488
+ readonly primaryLanguage: "en";
489
+ readonly supportedLanguages: string[];
490
+ } | {
491
+ readonly catalogId: "openai-realtime-shimmer";
492
+ readonly providerVoiceId: "shimmer";
493
+ readonly provider: "openai-realtime";
494
+ readonly label: "Shimmer";
495
+ readonly description: "OpenAI Realtime — soft female";
496
+ readonly gender: "female";
497
+ readonly primaryLanguage: "en";
498
+ readonly supportedLanguages: string[];
499
+ } | {
500
+ readonly catalogId: "openai-realtime-ash";
501
+ readonly providerVoiceId: "ash";
502
+ readonly provider: "openai-realtime";
503
+ readonly label: "Ash";
504
+ readonly description: "OpenAI Realtime — relaxed neutral";
505
+ readonly gender: "neutral";
506
+ readonly primaryLanguage: "en";
507
+ readonly supportedLanguages: string[];
508
+ } | {
509
+ readonly catalogId: "openai-realtime-ballad";
510
+ readonly providerVoiceId: "ballad";
511
+ readonly provider: "openai-realtime";
512
+ readonly label: "Ballad";
513
+ readonly description: "OpenAI Realtime — melodic, smooth";
514
+ readonly gender: "neutral";
515
+ readonly primaryLanguage: "en";
516
+ readonly supportedLanguages: string[];
517
+ } | {
518
+ readonly catalogId: "openai-realtime-coral";
519
+ readonly providerVoiceId: "coral";
520
+ readonly provider: "openai-realtime";
521
+ readonly label: "Coral";
522
+ readonly description: "OpenAI Realtime — friendly female";
523
+ readonly gender: "female";
524
+ readonly primaryLanguage: "en";
525
+ readonly supportedLanguages: string[];
526
+ } | {
527
+ readonly catalogId: "openai-realtime-sage";
528
+ readonly providerVoiceId: "sage";
529
+ readonly provider: "openai-realtime";
530
+ readonly label: "Sage";
531
+ readonly description: "OpenAI Realtime — wise, measured";
532
+ readonly gender: "neutral";
533
+ readonly primaryLanguage: "en";
534
+ readonly supportedLanguages: string[];
535
+ } | {
536
+ readonly catalogId: "openai-realtime-verse";
537
+ readonly providerVoiceId: "verse";
538
+ readonly provider: "openai-realtime";
539
+ readonly label: "Verse";
540
+ readonly description: "OpenAI Realtime — lyrical, animated";
541
+ readonly gender: "neutral";
542
+ readonly primaryLanguage: "en";
543
+ readonly supportedLanguages: string[];
544
+ } | {
545
+ readonly catalogId: "gemini-live-aoede";
546
+ readonly providerVoiceId: "Aoede";
547
+ readonly provider: "gemini-live";
548
+ readonly label: "Aoede";
549
+ readonly description: "Gemini Live — bright, melodic";
550
+ readonly gender: "female";
551
+ readonly primaryLanguage: "en";
552
+ readonly supportedLanguages: string[];
553
+ } | {
554
+ readonly catalogId: "gemini-live-charon";
555
+ readonly providerVoiceId: "Charon";
556
+ readonly provider: "gemini-live";
557
+ readonly label: "Charon";
558
+ readonly description: "Gemini Live — deep, measured";
559
+ readonly gender: "male";
560
+ readonly primaryLanguage: "en";
561
+ readonly supportedLanguages: string[];
562
+ } | {
563
+ readonly catalogId: "gemini-live-fenrir";
564
+ readonly providerVoiceId: "Fenrir";
565
+ readonly provider: "gemini-live";
566
+ readonly label: "Fenrir";
567
+ readonly description: "Gemini Live — gravelly, intense";
568
+ readonly gender: "male";
569
+ readonly primaryLanguage: "en";
570
+ readonly supportedLanguages: string[];
571
+ } | {
572
+ readonly catalogId: "gemini-live-kore";
573
+ readonly providerVoiceId: "Kore";
574
+ readonly provider: "gemini-live";
575
+ readonly label: "Kore";
576
+ readonly description: "Gemini Live — clear, articulate";
577
+ readonly gender: "female";
578
+ readonly primaryLanguage: "en";
579
+ readonly supportedLanguages: string[];
580
+ } | {
581
+ readonly catalogId: "gemini-live-puck";
582
+ readonly providerVoiceId: "Puck";
583
+ readonly provider: "gemini-live";
584
+ readonly label: "Puck";
585
+ readonly description: "Gemini Live — playful, energetic";
586
+ readonly gender: "neutral";
587
+ readonly primaryLanguage: "en";
588
+ readonly supportedLanguages: string[];
589
+ })[];
590
+ /**
591
+ * The union of every curated voice's `catalogId` — autocompleted +
592
+ * typo-checked at every call site that names a voice. Auto-derived from
593
+ * the catalog data; never hand-maintained. Aliases (app-side legacy slugs)
594
+ * are NOT in the union — they resolve at runtime but aren't canonical.
595
+ */
596
+ type CatalogVoiceId = (typeof VOICE_CATALOG)[number]["catalogId"];
597
+ /**
598
+ * Any string that resolves to a voice — a canonical `CatalogVoiceId`
599
+ * (autocompleted), or a `providerVoiceId` / legacy alias (free-form).
600
+ * The `string & {}` keeps the literal-union autocomplete while still
601
+ * accepting arbitrary ids.
602
+ */
603
+ type VoiceRef = CatalogVoiceId | (string & {});
604
+ /** Get all voices, optionally filtered by primary language. */
605
+ declare function getVoiceCatalog(language?: string): readonly CatalogVoice[];
606
+ /** Look up a voice by its canonical catalogId ("elevenlabs-victoire"). */
607
+ declare function getVoiceByCatalogId(catalogId: VoiceRef): CatalogVoice | undefined;
608
+ /** Look up a voice by its native provider id ("French_FemaleAnchor"). */
609
+ declare function getVoiceByProviderVoiceId(providerVoiceId: string): CatalogVoice | undefined;
610
+ /**
611
+ * Resolve a voice by canonical catalogId, then native providerVoiceId,
612
+ * then legacy alias — works with new slugs, native ids, and the old
613
+ * app-specific alias slugs (e.g. a consumer overlay).
614
+ */
615
+ declare function resolveVoice(ref: VoiceRef): CatalogVoice | undefined;
616
+ /** @deprecated Use `resolveVoice()`. Kept for backward compat. */
617
+ declare function getVoiceById(id: VoiceRef): CatalogVoice | undefined;
618
+ /** Featured voices (shown in the picker), optionally filtered by language. */
619
+ declare function getFeaturedVoices(language?: string): readonly CatalogVoice[];
620
+ /**
621
+ * Resolve which provider owns a voice and the native provider voice id.
622
+ * Accepts a canonical id, native id, or alias.
623
+ */
624
+ declare function getProviderForVoice(ref: VoiceRef): {
625
+ provider: CatalogVoiceProvider;
626
+ providerVoiceId: string;
627
+ } | undefined;
628
+
629
+ /**
630
+ * Curate a voice FROM provider-native data — the runtime analog of the
631
+ * codegen that authors the static per-provider files.
632
+ *
633
+ * The point: a curated entry is DERIVED from the provider's own data, so
634
+ * the display name defaults to the real provider name (rebrand becomes
635
+ * opt-in, never accidental) and the `catalogId` is derived unless pinned.
636
+ * Used by the live-voice merge (e.g. ElevenLabs `/v1/voices` rows) and
637
+ * anywhere a provider row needs to become a `CatalogVoice`.
638
+ *
639
+ * Note: runtime-curated ids are `string`, not `CatalogVoiceId` — they
640
+ * come from dynamic data and aren't part of the compile-time union. The
641
+ * static catalog (authored as `as const`) is what powers autocomplete.
642
+ */
643
+
644
+ /** Provider-native voice data — the shape any provider source/API row reduces to. */
645
+ interface NativeVoice {
646
+ provider: CatalogVoiceProvider;
647
+ providerVoiceId: string;
648
+ /** The provider's own name for the voice — the default display label. */
649
+ name: string;
650
+ gender: "female" | "male" | "neutral";
651
+ primaryLanguage: string;
652
+ supportedLanguages: readonly string[];
653
+ description?: string;
654
+ samplePath?: string;
655
+ age?: "child" | "young" | "adult" | "senior";
656
+ quality?: string;
657
+ }
658
+ interface VoiceCurationOverrides {
659
+ /** Pin the catalogId. Omit → derived `<provider>-<slug(providerVoiceId)>`. */
660
+ catalogId?: string;
661
+ /** Override the display name. Omit → the provider's real `name` (no rebrand). */
662
+ label?: string;
663
+ featured?: boolean;
664
+ aliases?: readonly string[];
665
+ }
666
+ /**
667
+ * Derive a catalogId from a provider voice id: `<provider>-<slug>`, where
668
+ * the slug splits camelCase and collapses non-alphanumerics. Same rule the
669
+ * codegen uses to materialize the static ids — keep them in sync.
670
+ */
671
+ declare function slugifyVoiceId(provider: string, providerVoiceId: string): string;
672
+ /** Build a `CatalogVoice` from provider-native data + curation overrides. */
673
+ declare function curateVoice(native: NativeVoice, overrides?: VoiceCurationOverrides): CatalogVoice;
674
+
675
+ declare const VOICE_PREVIEW_BASE = "https://storage.googleapis.com/agentik-public-assets/voice-previews";
676
+ declare const VOICE_PREVIEW_LOCALES: readonly ["en", "fr", "es", "de", "it", "pt"];
677
+ /** catalogId → UI locales that have a baked sample. */
678
+ declare const BAKED_VOICE_PREVIEWS: Record<string, readonly string[]>;
679
+ /**
680
+ * Public URL of a voice's baked sample in `locale` (falling back to en,
681
+ * then any baked locale), or `undefined` if the voice has no sample —
682
+ * in which case the caller should synthesize on demand.
683
+ */
684
+ declare function voicePreviewUrl(catalogId: string, locale?: string): string | undefined;
685
+
686
+ /**
687
+ * MiniMax voices — provider-authored source for the unified voice
688
+ * catalog. Each entry is a `CatalogVoice`: identity (`providerVoiceId`)
689
+ * + selection metadata (label, description, gender, languages, featured).
690
+ *
691
+ * `catalogId`s are derived (`<provider>-<slug(providerVoiceId)>`) and
692
+ * materialized as literals so the `CatalogVoiceId` union stays
693
+ * autocomplete-able. App-specific alias slugs live in a consumer overlay, not here.
694
+ * Authored per-provider; `VOICE_CATALOG` concatenates every provider.
695
+ */
696
+ declare const MINIMAX_VOICES: readonly [{
697
+ readonly catalogId: "minimax-french-female-anchor";
698
+ readonly providerVoiceId: "French_FemaleAnchor";
699
+ readonly provider: "minimax";
700
+ readonly label: "Camille";
701
+ readonly description: "Posée et professionnelle, style présentatrice";
702
+ readonly gender: "female";
703
+ readonly primaryLanguage: "fr";
704
+ readonly supportedLanguages: string[];
705
+ readonly age: "adult";
706
+ readonly quality: "premium";
707
+ readonly featured: true;
708
+ }, {
709
+ readonly catalogId: "minimax-french-movie-lead-female";
710
+ readonly providerVoiceId: "French_MovieLeadFemale";
711
+ readonly provider: "minimax";
712
+ readonly label: "Sophie";
713
+ readonly description: "Chaleureuse et naturelle, style cinéma";
714
+ readonly gender: "female";
715
+ readonly primaryLanguage: "fr";
716
+ readonly supportedLanguages: string[];
717
+ readonly age: "adult";
718
+ readonly quality: "premium";
719
+ readonly featured: true;
720
+ }, {
721
+ readonly catalogId: "minimax-french-female-news-anchor";
722
+ readonly providerVoiceId: "French_Female_News Anchor";
723
+ readonly provider: "minimax";
724
+ readonly label: "Marion";
725
+ readonly description: "Rapide et dynamique, style journaliste";
726
+ readonly gender: "female";
727
+ readonly primaryLanguage: "fr";
728
+ readonly supportedLanguages: string[];
729
+ readonly age: "adult";
730
+ readonly quality: "premium";
731
+ readonly featured: true;
732
+ }, {
733
+ readonly catalogId: "minimax-french-male-narrator";
734
+ readonly providerVoiceId: "French_MaleNarrator";
735
+ readonly provider: "minimax";
736
+ readonly label: "Pierre";
737
+ readonly description: "Voix masculine posée, style narrateur";
738
+ readonly gender: "male";
739
+ readonly primaryLanguage: "fr";
740
+ readonly supportedLanguages: string[];
741
+ readonly age: "adult";
742
+ readonly quality: "premium";
743
+ }, {
744
+ readonly catalogId: "minimax-french-male-speech-new";
745
+ readonly providerVoiceId: "French_Male_Speech_New";
746
+ readonly provider: "minimax";
747
+ readonly label: "Antoine";
748
+ readonly description: "Voix masculine calme et mesurée";
749
+ readonly gender: "male";
750
+ readonly primaryLanguage: "fr";
751
+ readonly supportedLanguages: string[];
752
+ readonly age: "adult";
753
+ readonly quality: "premium";
754
+ }, {
755
+ readonly catalogId: "minimax-french-casual-man";
756
+ readonly providerVoiceId: "French_CasualMan";
757
+ readonly provider: "minimax";
758
+ readonly label: "Lucas";
759
+ readonly description: "Voix masculine décontractée";
760
+ readonly gender: "male";
761
+ readonly primaryLanguage: "fr";
762
+ readonly supportedLanguages: string[];
763
+ readonly age: "adult";
764
+ readonly quality: "premium";
765
+ }, {
766
+ readonly catalogId: "minimax-english-trustworth-man";
767
+ readonly providerVoiceId: "English_Trustworth_Man";
768
+ readonly provider: "minimax";
769
+ readonly label: "Aaron";
770
+ readonly description: "Trustworthy adult male voice";
771
+ readonly gender: "male";
772
+ readonly primaryLanguage: "en";
773
+ readonly supportedLanguages: string[];
774
+ readonly age: "adult";
775
+ readonly quality: "premium";
776
+ }, {
777
+ readonly catalogId: "minimax-english-calm-woman";
778
+ readonly providerVoiceId: "English_CalmWoman";
779
+ readonly provider: "minimax";
780
+ readonly label: "Olivia";
781
+ readonly description: "Calm adult female voice";
782
+ readonly gender: "female";
783
+ readonly primaryLanguage: "en";
784
+ readonly supportedLanguages: string[];
785
+ readonly age: "adult";
786
+ readonly quality: "premium";
787
+ }, {
788
+ readonly catalogId: "minimax-english-gentle-voiced-man";
789
+ readonly providerVoiceId: "English_Gentle-voiced_man";
790
+ readonly provider: "minimax";
791
+ readonly label: "Mark";
792
+ readonly description: "Gentle adult male voice";
793
+ readonly gender: "male";
794
+ readonly primaryLanguage: "en";
795
+ readonly supportedLanguages: string[];
796
+ readonly age: "adult";
797
+ readonly quality: "premium";
798
+ }, {
799
+ readonly catalogId: "minimax-english-graceful-lady";
800
+ readonly providerVoiceId: "English_Graceful_Lady";
801
+ readonly provider: "minimax";
802
+ readonly label: "Charlotte";
803
+ readonly description: "Graceful adult female voice";
804
+ readonly gender: "female";
805
+ readonly primaryLanguage: "en";
806
+ readonly supportedLanguages: string[];
807
+ readonly age: "adult";
808
+ readonly quality: "premium";
809
+ }, {
810
+ readonly catalogId: "minimax-english-upbeat-woman";
811
+ readonly providerVoiceId: "English_Upbeat_Woman";
812
+ readonly provider: "minimax";
813
+ readonly label: "Emma";
814
+ readonly description: "Upbeat young female voice";
815
+ readonly gender: "female";
816
+ readonly primaryLanguage: "en";
817
+ readonly supportedLanguages: string[];
818
+ readonly age: "young";
819
+ readonly quality: "premium";
820
+ }, {
821
+ readonly catalogId: "minimax-english-man-with-deep-voice";
822
+ readonly providerVoiceId: "English_ManWithDeepVoice";
823
+ readonly provider: "minimax";
824
+ readonly label: "Henry";
825
+ readonly description: "Deep adult male voice";
826
+ readonly gender: "male";
827
+ readonly primaryLanguage: "en";
828
+ readonly supportedLanguages: string[];
829
+ readonly age: "adult";
830
+ readonly quality: "premium";
831
+ }, {
832
+ readonly catalogId: "minimax-english-serene-woman";
833
+ readonly providerVoiceId: "English_SereneWoman";
834
+ readonly provider: "minimax";
835
+ readonly label: "Hannah";
836
+ readonly description: "Serene adult female voice";
837
+ readonly gender: "female";
838
+ readonly primaryLanguage: "en";
839
+ readonly supportedLanguages: string[];
840
+ readonly age: "adult";
841
+ readonly quality: "premium";
842
+ }, {
843
+ readonly catalogId: "minimax-english-confident-woman";
844
+ readonly providerVoiceId: "English_ConfidentWoman";
845
+ readonly provider: "minimax";
846
+ readonly label: "Grace";
847
+ readonly description: "Confident adult female voice";
848
+ readonly gender: "female";
849
+ readonly primaryLanguage: "en";
850
+ readonly supportedLanguages: string[];
851
+ readonly age: "adult";
852
+ readonly quality: "premium";
853
+ }, {
854
+ readonly catalogId: "minimax-english-patient-man";
855
+ readonly providerVoiceId: "English_PatientMan";
856
+ readonly provider: "minimax";
857
+ readonly label: "Patrick";
858
+ readonly description: "Patient adult male voice";
859
+ readonly gender: "male";
860
+ readonly primaryLanguage: "en";
861
+ readonly supportedLanguages: string[];
862
+ readonly age: "adult";
863
+ readonly quality: "premium";
864
+ }, {
865
+ readonly catalogId: "minimax-english-expressive-narrator";
866
+ readonly providerVoiceId: "English_expressive_narrator";
867
+ readonly provider: "minimax";
868
+ readonly label: "Daniel";
869
+ readonly description: "Expressive adult male narrator";
870
+ readonly gender: "male";
871
+ readonly primaryLanguage: "en";
872
+ readonly supportedLanguages: string[];
873
+ readonly age: "adult";
874
+ readonly quality: "premium";
875
+ }, {
876
+ readonly catalogId: "minimax-english-radiant-girl";
877
+ readonly providerVoiceId: "English_radiant_girl";
878
+ readonly provider: "minimax";
879
+ readonly label: "Ruby";
880
+ readonly description: "Radiant young female voice";
881
+ readonly gender: "female";
882
+ readonly primaryLanguage: "en";
883
+ readonly supportedLanguages: string[];
884
+ readonly age: "young";
885
+ readonly quality: "premium";
886
+ }, {
887
+ readonly catalogId: "minimax-spanish-serene-woman";
888
+ readonly providerVoiceId: "Spanish_SereneWoman";
889
+ readonly provider: "minimax";
890
+ readonly label: "Isabel";
891
+ readonly description: "Serene adult female voice";
892
+ readonly gender: "female";
893
+ readonly primaryLanguage: "es";
894
+ readonly supportedLanguages: string[];
895
+ readonly age: "adult";
896
+ readonly quality: "premium";
897
+ }, {
898
+ readonly catalogId: "minimax-spanish-narrator";
899
+ readonly providerVoiceId: "Spanish_Narrator";
900
+ readonly provider: "minimax";
901
+ readonly label: "Diego";
902
+ readonly description: "Adult male narrator voice";
903
+ readonly gender: "male";
904
+ readonly primaryLanguage: "es";
905
+ readonly supportedLanguages: string[];
906
+ readonly age: "adult";
907
+ readonly quality: "premium";
908
+ }, {
909
+ readonly catalogId: "minimax-german-friendly-man";
910
+ readonly providerVoiceId: "German_FriendlyMan";
911
+ readonly provider: "minimax";
912
+ readonly label: "Klaus";
913
+ readonly description: "Friendly adult male voice";
914
+ readonly gender: "male";
915
+ readonly primaryLanguage: "de";
916
+ readonly supportedLanguages: string[];
917
+ readonly age: "adult";
918
+ readonly quality: "premium";
919
+ }, {
920
+ readonly catalogId: "minimax-german-sweet-lady";
921
+ readonly providerVoiceId: "German_SweetLady";
922
+ readonly provider: "minimax";
923
+ readonly label: "Greta";
924
+ readonly description: "Sweet young female voice";
925
+ readonly gender: "female";
926
+ readonly primaryLanguage: "de";
927
+ readonly supportedLanguages: string[];
928
+ readonly age: "young";
929
+ readonly quality: "premium";
930
+ }, {
931
+ readonly catalogId: "minimax-japanese-gentle-butler";
932
+ readonly providerVoiceId: "Japanese_GentleButler";
933
+ readonly provider: "minimax";
934
+ readonly label: "Haruto";
935
+ readonly description: "Gentle adult male voice";
936
+ readonly gender: "male";
937
+ readonly primaryLanguage: "ja";
938
+ readonly supportedLanguages: string[];
939
+ readonly age: "adult";
940
+ readonly quality: "premium";
941
+ }, {
942
+ readonly catalogId: "minimax-japanese-kind-lady";
943
+ readonly providerVoiceId: "Japanese_KindLady";
944
+ readonly provider: "minimax";
945
+ readonly label: "Yuki";
946
+ readonly description: "Kind adult female voice";
947
+ readonly gender: "female";
948
+ readonly primaryLanguage: "ja";
949
+ readonly supportedLanguages: string[];
950
+ readonly age: "adult";
951
+ readonly quality: "premium";
952
+ }, {
953
+ readonly catalogId: "minimax-korean-calm-gentleman";
954
+ readonly providerVoiceId: "Korean_CalmGentleman";
955
+ readonly provider: "minimax";
956
+ readonly label: "Minjun";
957
+ readonly description: "Calm adult male voice";
958
+ readonly gender: "male";
959
+ readonly primaryLanguage: "ko";
960
+ readonly supportedLanguages: string[];
961
+ readonly age: "adult";
962
+ readonly quality: "premium";
963
+ }, {
964
+ readonly catalogId: "minimax-korean-sweet-girl";
965
+ readonly providerVoiceId: "Korean_SweetGirl";
966
+ readonly provider: "minimax";
967
+ readonly label: "Yuna";
968
+ readonly description: "Sweet young female voice";
969
+ readonly gender: "female";
970
+ readonly primaryLanguage: "ko";
971
+ readonly supportedLanguages: string[];
972
+ readonly age: "young";
973
+ readonly quality: "premium";
974
+ }, {
975
+ readonly catalogId: "minimax-chinese-mandarin-gentleman";
976
+ readonly providerVoiceId: "Chinese (Mandarin)_Gentleman";
977
+ readonly provider: "minimax";
978
+ readonly label: "Wei";
979
+ readonly description: "Adult male voice";
980
+ readonly gender: "male";
981
+ readonly primaryLanguage: "zh";
982
+ readonly supportedLanguages: string[];
983
+ readonly age: "adult";
984
+ readonly quality: "premium";
985
+ }, {
986
+ readonly catalogId: "minimax-chinese-mandarin-sweet-lady";
987
+ readonly providerVoiceId: "Chinese (Mandarin)_Sweet_Lady";
988
+ readonly provider: "minimax";
989
+ readonly label: "Mei";
990
+ readonly description: "Sweet young female voice";
991
+ readonly gender: "female";
992
+ readonly primaryLanguage: "zh";
993
+ readonly supportedLanguages: string[];
994
+ readonly age: "young";
995
+ readonly quality: "premium";
996
+ }, {
997
+ readonly catalogId: "minimax-portuguese-reliable-man";
998
+ readonly providerVoiceId: "Portuguese_ReliableMan";
999
+ readonly provider: "minimax";
1000
+ readonly label: "Rafael";
1001
+ readonly description: "Reliable adult male voice";
1002
+ readonly gender: "male";
1003
+ readonly primaryLanguage: "pt";
1004
+ readonly supportedLanguages: string[];
1005
+ readonly age: "adult";
1006
+ readonly quality: "premium";
1007
+ }, {
1008
+ readonly catalogId: "minimax-portuguese-sweet-girl";
1009
+ readonly providerVoiceId: "Portuguese_SweetGirl";
1010
+ readonly provider: "minimax";
1011
+ readonly label: "Beatriz";
1012
+ readonly description: "Sweet young female voice";
1013
+ readonly gender: "female";
1014
+ readonly primaryLanguage: "pt";
1015
+ readonly supportedLanguages: string[];
1016
+ readonly age: "young";
1017
+ readonly quality: "premium";
1018
+ }, {
1019
+ readonly catalogId: "minimax-italian-narrator";
1020
+ readonly providerVoiceId: "Italian_Narrator";
1021
+ readonly provider: "minimax";
1022
+ readonly label: "Marco";
1023
+ readonly description: "Adult male narrator voice";
1024
+ readonly gender: "male";
1025
+ readonly primaryLanguage: "it";
1026
+ readonly supportedLanguages: string[];
1027
+ readonly age: "adult";
1028
+ readonly quality: "premium";
1029
+ }, {
1030
+ readonly catalogId: "minimax-italian-brave-heroine";
1031
+ readonly providerVoiceId: "Italian_BraveHeroine";
1032
+ readonly provider: "minimax";
1033
+ readonly label: "Giulia";
1034
+ readonly description: "Brave adult female voice";
1035
+ readonly gender: "female";
1036
+ readonly primaryLanguage: "it";
1037
+ readonly supportedLanguages: string[];
1038
+ readonly age: "adult";
1039
+ readonly quality: "premium";
1040
+ }];
1041
+
1042
+ /**
1043
+ * ElevenLabs voices — provider-authored source for the unified voice
1044
+ * catalog. Each entry is a `CatalogVoice`: identity (`providerVoiceId`)
1045
+ * + selection metadata (label, description, gender, languages, featured).
1046
+ *
1047
+ * ElevenLabs is the one provider fetched LIVE at runtime (`/v1/voices`),
1048
+ * so we curate only a featured showcase here; the runtime merge appends
1049
+ * the rest of the account's voices on top (deduped on `providerVoiceId`).
1050
+ * Hash-style `providerVoiceId`s would slugify to noise, so these carry
1051
+ * explicit readable ids. ids are provider-native (e.g. elevenlabs-victoire, the FR default).
1052
+ */
1053
+ declare const ELEVENLABS_VOICES: readonly [{
1054
+ readonly catalogId: "elevenlabs-victoire";
1055
+ readonly providerVoiceId: "O31r762Gb3WFygrEOGh0";
1056
+ readonly provider: "elevenlabs";
1057
+ readonly label: "Victoire";
1058
+ readonly description: "Haute fidélité, voix naturelle premium";
1059
+ readonly gender: "female";
1060
+ readonly primaryLanguage: "fr";
1061
+ readonly supportedLanguages: string[];
1062
+ readonly age: "young";
1063
+ readonly quality: "premium";
1064
+ readonly featured: true;
1065
+ }, {
1066
+ readonly catalogId: "elevenlabs-victoria";
1067
+ readonly providerVoiceId: "WeAAwKYcS06VmXw086yZ";
1068
+ readonly provider: "elevenlabs";
1069
+ readonly label: "Victoria";
1070
+ readonly description: "Chaleureuse et posée, style narration";
1071
+ readonly gender: "female";
1072
+ readonly primaryLanguage: "fr";
1073
+ readonly supportedLanguages: string[];
1074
+ readonly age: "adult";
1075
+ readonly quality: "premium";
1076
+ readonly featured: true;
1077
+ }, {
1078
+ readonly catalogId: "elevenlabs-nicolas";
1079
+ readonly providerVoiceId: "aQROLel5sQbj1vuIVi6B";
1080
+ readonly provider: "elevenlabs";
1081
+ readonly label: "Nicolas";
1082
+ readonly description: "Voix masculine parisienne, style narrateur";
1083
+ readonly gender: "male";
1084
+ readonly primaryLanguage: "fr";
1085
+ readonly supportedLanguages: string[];
1086
+ readonly age: "adult";
1087
+ readonly quality: "premium";
1088
+ readonly featured: true;
1089
+ }, {
1090
+ readonly catalogId: "elevenlabs-george";
1091
+ readonly providerVoiceId: "JBFqnCBsd6RMkjVDRZzb";
1092
+ readonly provider: "elevenlabs";
1093
+ readonly label: "George";
1094
+ readonly description: "Warm, captivating British storyteller";
1095
+ readonly gender: "male";
1096
+ readonly primaryLanguage: "en";
1097
+ readonly supportedLanguages: string[];
1098
+ readonly age: "adult";
1099
+ readonly quality: "premium";
1100
+ readonly featured: true;
1101
+ }, {
1102
+ readonly catalogId: "elevenlabs-sarah";
1103
+ readonly providerVoiceId: "EXAVITQu4vr4xnSDxMaL";
1104
+ readonly provider: "elevenlabs";
1105
+ readonly label: "Sarah";
1106
+ readonly description: "Mature, reassuring, confident";
1107
+ readonly gender: "female";
1108
+ readonly primaryLanguage: "en";
1109
+ readonly supportedLanguages: string[];
1110
+ readonly age: "young";
1111
+ readonly quality: "premium";
1112
+ readonly featured: true;
1113
+ }, {
1114
+ readonly catalogId: "elevenlabs-daniel";
1115
+ readonly providerVoiceId: "onwK4e9ZLuTAKqWW03F9";
1116
+ readonly provider: "elevenlabs";
1117
+ readonly label: "Daniel";
1118
+ readonly description: "Steady British broadcaster";
1119
+ readonly gender: "male";
1120
+ readonly primaryLanguage: "en";
1121
+ readonly supportedLanguages: string[];
1122
+ readonly age: "adult";
1123
+ readonly quality: "premium";
1124
+ readonly featured: true;
1125
+ }, {
1126
+ readonly catalogId: "elevenlabs-alice";
1127
+ readonly providerVoiceId: "Xb7hH8MSUJpSbSDYk0k2";
1128
+ readonly provider: "elevenlabs";
1129
+ readonly label: "Alice";
1130
+ readonly description: "Clear, engaging British educator";
1131
+ readonly gender: "female";
1132
+ readonly primaryLanguage: "en";
1133
+ readonly supportedLanguages: string[];
1134
+ readonly age: "adult";
1135
+ readonly quality: "premium";
1136
+ readonly featured: true;
1137
+ }];
1138
+
1139
+ /**
1140
+ * OpenAI Realtime voices — provider-authored source for the unified voice
1141
+ * catalog. Each entry is a `CatalogVoice`: identity (`providerVoiceId`)
1142
+ * + selection metadata (label, description, gender, languages, featured).
1143
+ *
1144
+ * `catalogId`s are derived (`<provider>-<slug(providerVoiceId)>`) and
1145
+ * materialized as literals so the `CatalogVoiceId` union stays
1146
+ * autocomplete-able. App-specific alias slugs live in a consumer overlay, not here.
1147
+ * Authored per-provider; `VOICE_CATALOG` concatenates every provider.
1148
+ */
1149
+ declare const OPENAI_REALTIME_VOICES: readonly [{
1150
+ readonly catalogId: "openai-realtime-marin";
1151
+ readonly providerVoiceId: "marin";
1152
+ readonly provider: "openai-realtime";
1153
+ readonly label: "Marin";
1154
+ readonly description: "OpenAI Realtime — newest premium voice, warm and expressive";
1155
+ readonly gender: "neutral";
1156
+ readonly primaryLanguage: "en";
1157
+ readonly supportedLanguages: string[];
1158
+ readonly featured: true;
1159
+ }, {
1160
+ readonly catalogId: "openai-realtime-cedar";
1161
+ readonly providerVoiceId: "cedar";
1162
+ readonly provider: "openai-realtime";
1163
+ readonly label: "Cedar";
1164
+ readonly description: "OpenAI Realtime — grounded, confident";
1165
+ readonly gender: "neutral";
1166
+ readonly primaryLanguage: "en";
1167
+ readonly supportedLanguages: string[];
1168
+ readonly featured: true;
1169
+ }, {
1170
+ readonly catalogId: "openai-realtime-alloy";
1171
+ readonly providerVoiceId: "alloy";
1172
+ readonly provider: "openai-realtime";
1173
+ readonly label: "Alloy";
1174
+ readonly description: "OpenAI Realtime — neutral, balanced";
1175
+ readonly gender: "neutral";
1176
+ readonly primaryLanguage: "en";
1177
+ readonly supportedLanguages: string[];
1178
+ }, {
1179
+ readonly catalogId: "openai-realtime-echo";
1180
+ readonly providerVoiceId: "echo";
1181
+ readonly provider: "openai-realtime";
1182
+ readonly label: "Echo";
1183
+ readonly description: "OpenAI Realtime — calm male";
1184
+ readonly gender: "male";
1185
+ readonly primaryLanguage: "en";
1186
+ readonly supportedLanguages: string[];
1187
+ }, {
1188
+ readonly catalogId: "openai-realtime-shimmer";
1189
+ readonly providerVoiceId: "shimmer";
1190
+ readonly provider: "openai-realtime";
1191
+ readonly label: "Shimmer";
1192
+ readonly description: "OpenAI Realtime — soft female";
1193
+ readonly gender: "female";
1194
+ readonly primaryLanguage: "en";
1195
+ readonly supportedLanguages: string[];
1196
+ }, {
1197
+ readonly catalogId: "openai-realtime-ash";
1198
+ readonly providerVoiceId: "ash";
1199
+ readonly provider: "openai-realtime";
1200
+ readonly label: "Ash";
1201
+ readonly description: "OpenAI Realtime — relaxed neutral";
1202
+ readonly gender: "neutral";
1203
+ readonly primaryLanguage: "en";
1204
+ readonly supportedLanguages: string[];
1205
+ }, {
1206
+ readonly catalogId: "openai-realtime-ballad";
1207
+ readonly providerVoiceId: "ballad";
1208
+ readonly provider: "openai-realtime";
1209
+ readonly label: "Ballad";
1210
+ readonly description: "OpenAI Realtime — melodic, smooth";
1211
+ readonly gender: "neutral";
1212
+ readonly primaryLanguage: "en";
1213
+ readonly supportedLanguages: string[];
1214
+ }, {
1215
+ readonly catalogId: "openai-realtime-coral";
1216
+ readonly providerVoiceId: "coral";
1217
+ readonly provider: "openai-realtime";
1218
+ readonly label: "Coral";
1219
+ readonly description: "OpenAI Realtime — friendly female";
1220
+ readonly gender: "female";
1221
+ readonly primaryLanguage: "en";
1222
+ readonly supportedLanguages: string[];
1223
+ }, {
1224
+ readonly catalogId: "openai-realtime-sage";
1225
+ readonly providerVoiceId: "sage";
1226
+ readonly provider: "openai-realtime";
1227
+ readonly label: "Sage";
1228
+ readonly description: "OpenAI Realtime — wise, measured";
1229
+ readonly gender: "neutral";
1230
+ readonly primaryLanguage: "en";
1231
+ readonly supportedLanguages: string[];
1232
+ }, {
1233
+ readonly catalogId: "openai-realtime-verse";
1234
+ readonly providerVoiceId: "verse";
1235
+ readonly provider: "openai-realtime";
1236
+ readonly label: "Verse";
1237
+ readonly description: "OpenAI Realtime — lyrical, animated";
1238
+ readonly gender: "neutral";
1239
+ readonly primaryLanguage: "en";
1240
+ readonly supportedLanguages: string[];
1241
+ }];
1242
+
1243
+ /**
1244
+ * Gemini Live voices — provider-authored source for the unified voice
1245
+ * catalog. Each entry is a `CatalogVoice`: identity (`providerVoiceId`)
1246
+ * + selection metadata (label, description, gender, languages, featured).
1247
+ *
1248
+ * `catalogId`s are derived (`<provider>-<slug(providerVoiceId)>`) and
1249
+ * materialized as literals so the `CatalogVoiceId` union stays
1250
+ * autocomplete-able. App-specific alias slugs live in a consumer overlay, not here.
1251
+ * Authored per-provider; `VOICE_CATALOG` concatenates every provider.
1252
+ */
1253
+ declare const GEMINI_LIVE_VOICES: readonly [{
1254
+ readonly catalogId: "gemini-live-aoede";
1255
+ readonly providerVoiceId: "Aoede";
1256
+ readonly provider: "gemini-live";
1257
+ readonly label: "Aoede";
1258
+ readonly description: "Gemini Live — bright, melodic";
1259
+ readonly gender: "female";
1260
+ readonly primaryLanguage: "en";
1261
+ readonly supportedLanguages: string[];
1262
+ }, {
1263
+ readonly catalogId: "gemini-live-charon";
1264
+ readonly providerVoiceId: "Charon";
1265
+ readonly provider: "gemini-live";
1266
+ readonly label: "Charon";
1267
+ readonly description: "Gemini Live — deep, measured";
1268
+ readonly gender: "male";
1269
+ readonly primaryLanguage: "en";
1270
+ readonly supportedLanguages: string[];
1271
+ }, {
1272
+ readonly catalogId: "gemini-live-fenrir";
1273
+ readonly providerVoiceId: "Fenrir";
1274
+ readonly provider: "gemini-live";
1275
+ readonly label: "Fenrir";
1276
+ readonly description: "Gemini Live — gravelly, intense";
1277
+ readonly gender: "male";
1278
+ readonly primaryLanguage: "en";
1279
+ readonly supportedLanguages: string[];
1280
+ }, {
1281
+ readonly catalogId: "gemini-live-kore";
1282
+ readonly providerVoiceId: "Kore";
1283
+ readonly provider: "gemini-live";
1284
+ readonly label: "Kore";
1285
+ readonly description: "Gemini Live — clear, articulate";
1286
+ readonly gender: "female";
1287
+ readonly primaryLanguage: "en";
1288
+ readonly supportedLanguages: string[];
1289
+ }, {
1290
+ readonly catalogId: "gemini-live-puck";
1291
+ readonly providerVoiceId: "Puck";
1292
+ readonly provider: "gemini-live";
1293
+ readonly label: "Puck";
1294
+ readonly description: "Gemini Live — playful, energetic";
1295
+ readonly gender: "neutral";
1296
+ readonly primaryLanguage: "en";
1297
+ readonly supportedLanguages: string[];
1298
+ }];
1299
+
1300
+ export { BAKED_VOICE_PREVIEWS, CatalogVoice, type CatalogVoiceId, CatalogVoiceProvider, ELEVENLABS_VOICES, GEMINI_LIVE_VOICES, MINIMAX_VOICES, type NativeVoice, OPENAI_REALTIME_VOICES, VOICE_CATALOG, VOICE_PREVIEW_BASE, VOICE_PREVIEW_LOCALES, type VoiceCurationOverrides, type VoiceRef, curateVoice, getFeaturedVoices, getProviderForVoice, getVoiceByCatalogId, getVoiceById, getVoiceByProviderVoiceId, getVoiceCatalog, resolveVoice, slugifyVoiceId, voicePreviewUrl };