@node-webrtc-rust/voice-catalog 0.12.1 → 0.13.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.
@@ -260,6 +260,65 @@
260
260
  "ttsDocs": "https://docs.fish.audio/api-reference/endpoint/websocket/tts-live",
261
261
  "modelsDocs": "https://docs.fish.audio/developer-guide/models-pricing/models-overview"
262
262
  },
263
+ {
264
+ "id": "mistral",
265
+ "label": "Mistral (Voxtral 3)",
266
+ "stt": true,
267
+ "tts": true,
268
+ "defaultSttModel": "voxtral-mini-transcribe-realtime-3-0",
269
+ "defaultTtsModel": "voxtral-mini-tts-3-0",
270
+ "defaultTtsVoice": "voice_478",
271
+ "sttModels": ["voxtral-mini-transcribe-realtime-3-0", "voxtral-mini-transcribe-realtime-3"],
272
+ "ttsModels": ["voxtral-mini-tts-3-0", "voxtral-mini-tts-3", "voxtral-mini-tts-realtime-3-0"],
273
+ "ttsVoices": [],
274
+ "ttsTransports": ["http"],
275
+ "defaultTtsTransport": "http",
276
+ "sttTransports": ["websocket"],
277
+ "defaultSttTransport": "websocket",
278
+ "ttsVoiceIds": "open",
279
+ "ttsPresetVoices": [
280
+ { "id": "voice_478", "name": "Sheila", "language": "en-US" },
281
+ { "id": "voice_447", "name": "Margaret", "language": "en-US" },
282
+ { "id": "voice_485", "name": "Rob", "language": "en-US" },
283
+ { "id": "voice_3150", "name": "James", "language": "en-US" },
284
+ { "id": "voice_1787", "name": "Mary", "language": "en-GB" },
285
+ { "id": "voice_1786", "name": "Sky", "language": "en-GB" },
286
+ { "id": "voice_1788", "name": "David", "language": "en-GB" },
287
+ { "id": "voice_590", "name": "Harriet", "language": "en-GB" },
288
+ { "id": "voice_591", "name": "Fred", "language": "en-GB" },
289
+ { "id": "voice_3149", "name": "Hugo", "language": "en-GB" },
290
+ { "id": "voice_3147", "name": "Howard", "language": "en-GB" },
291
+ { "id": "voice_592", "name": "Marie", "language": "fr" },
292
+ { "id": "voice_3137", "name": "Manon", "language": "fr" },
293
+ { "id": "voice_589", "name": "Lea", "language": "fr" },
294
+ { "id": "voice_3141", "name": "Camille", "language": "fr" },
295
+ { "id": "voice_483", "name": "Elena", "language": "es" },
296
+ { "id": "voice_481", "name": "Heidi", "language": "de" },
297
+ { "id": "voice_482", "name": "Lorenzo", "language": "it" },
298
+ { "id": "voice_480", "name": "Gabriela", "language": "pt" },
299
+ { "id": "voice_479", "name": "Maryam", "language": "ar" },
300
+ { "id": "voice_3143", "name": "Jordi", "language": "ca" },
301
+ { "id": "voice_3139", "name": "Ananya", "language": "hi" },
302
+ { "id": "voice_3153", "name": "Himanshu", "language": "hi" },
303
+ { "id": "voice_3146", "name": "Olivia", "language": "hu" },
304
+ { "id": "voice_3133", "name": "Haruto", "language": "ja" },
305
+ { "id": "voice_3136", "name": "Sung", "language": "ko" },
306
+ { "id": "voice_3135", "name": "Jin", "language": "ko" },
307
+ { "id": "voice_3145", "name": "Lotte", "language": "nl" },
308
+ { "id": "voice_3134", "name": "Lars", "language": "no" },
309
+ { "id": "voice_3154", "name": "Leon", "language": "pl" },
310
+ { "id": "voice_3155", "name": "Irina", "language": "ro" },
311
+ { "id": "voice_3132", "name": "Tatiana", "language": "ru" },
312
+ { "id": "voice_3138", "name": "Oran", "language": "tr" },
313
+ { "id": "voice_3140", "name": "Taras", "language": "uk" },
314
+ { "id": "voice_3144", "name": "Huong", "language": "vi" },
315
+ { "id": "voice_3142", "name": "Mei", "language": "zh" }
316
+ ],
317
+ "home": "https://docs.mistral.ai/studio/audio/text-to-speech/generate-speech",
318
+ "sttDocs": "https://docs.mistral.ai/studio/audio/speech-to-text/transcribe-in-realtime",
319
+ "ttsDocs": "https://docs.mistral.ai/studio/audio/text-to-speech/generate-speech",
320
+ "modelsDocs": "https://docs.mistral.ai/studio/audio/text-to-speech/voices"
321
+ },
263
322
  {
264
323
  "id": "assemblyai",
265
324
  "label": "AssemblyAI",
@@ -260,6 +260,65 @@
260
260
  "ttsDocs": "https://docs.fish.audio/api-reference/endpoint/websocket/tts-live",
261
261
  "modelsDocs": "https://docs.fish.audio/developer-guide/models-pricing/models-overview"
262
262
  },
263
+ {
264
+ "id": "mistral",
265
+ "label": "Mistral (Voxtral 3)",
266
+ "stt": true,
267
+ "tts": true,
268
+ "defaultSttModel": "voxtral-mini-transcribe-realtime-3-0",
269
+ "defaultTtsModel": "voxtral-mini-tts-3-0",
270
+ "defaultTtsVoice": "voice_478",
271
+ "sttModels": ["voxtral-mini-transcribe-realtime-3-0", "voxtral-mini-transcribe-realtime-3"],
272
+ "ttsModels": ["voxtral-mini-tts-3-0", "voxtral-mini-tts-3", "voxtral-mini-tts-realtime-3-0"],
273
+ "ttsVoices": [],
274
+ "ttsTransports": ["http"],
275
+ "defaultTtsTransport": "http",
276
+ "sttTransports": ["websocket"],
277
+ "defaultSttTransport": "websocket",
278
+ "ttsVoiceIds": "open",
279
+ "ttsPresetVoices": [
280
+ { "id": "voice_478", "name": "Sheila", "language": "en-US" },
281
+ { "id": "voice_447", "name": "Margaret", "language": "en-US" },
282
+ { "id": "voice_485", "name": "Rob", "language": "en-US" },
283
+ { "id": "voice_3150", "name": "James", "language": "en-US" },
284
+ { "id": "voice_1787", "name": "Mary", "language": "en-GB" },
285
+ { "id": "voice_1786", "name": "Sky", "language": "en-GB" },
286
+ { "id": "voice_1788", "name": "David", "language": "en-GB" },
287
+ { "id": "voice_590", "name": "Harriet", "language": "en-GB" },
288
+ { "id": "voice_591", "name": "Fred", "language": "en-GB" },
289
+ { "id": "voice_3149", "name": "Hugo", "language": "en-GB" },
290
+ { "id": "voice_3147", "name": "Howard", "language": "en-GB" },
291
+ { "id": "voice_592", "name": "Marie", "language": "fr" },
292
+ { "id": "voice_3137", "name": "Manon", "language": "fr" },
293
+ { "id": "voice_589", "name": "Lea", "language": "fr" },
294
+ { "id": "voice_3141", "name": "Camille", "language": "fr" },
295
+ { "id": "voice_483", "name": "Elena", "language": "es" },
296
+ { "id": "voice_481", "name": "Heidi", "language": "de" },
297
+ { "id": "voice_482", "name": "Lorenzo", "language": "it" },
298
+ { "id": "voice_480", "name": "Gabriela", "language": "pt" },
299
+ { "id": "voice_479", "name": "Maryam", "language": "ar" },
300
+ { "id": "voice_3143", "name": "Jordi", "language": "ca" },
301
+ { "id": "voice_3139", "name": "Ananya", "language": "hi" },
302
+ { "id": "voice_3153", "name": "Himanshu", "language": "hi" },
303
+ { "id": "voice_3146", "name": "Olivia", "language": "hu" },
304
+ { "id": "voice_3133", "name": "Haruto", "language": "ja" },
305
+ { "id": "voice_3136", "name": "Sung", "language": "ko" },
306
+ { "id": "voice_3135", "name": "Jin", "language": "ko" },
307
+ { "id": "voice_3145", "name": "Lotte", "language": "nl" },
308
+ { "id": "voice_3134", "name": "Lars", "language": "no" },
309
+ { "id": "voice_3154", "name": "Leon", "language": "pl" },
310
+ { "id": "voice_3155", "name": "Irina", "language": "ro" },
311
+ { "id": "voice_3132", "name": "Tatiana", "language": "ru" },
312
+ { "id": "voice_3138", "name": "Oran", "language": "tr" },
313
+ { "id": "voice_3140", "name": "Taras", "language": "uk" },
314
+ { "id": "voice_3144", "name": "Huong", "language": "vi" },
315
+ { "id": "voice_3142", "name": "Mei", "language": "zh" }
316
+ ],
317
+ "home": "https://docs.mistral.ai/studio/audio/text-to-speech/generate-speech",
318
+ "sttDocs": "https://docs.mistral.ai/studio/audio/speech-to-text/transcribe-in-realtime",
319
+ "ttsDocs": "https://docs.mistral.ai/studio/audio/text-to-speech/generate-speech",
320
+ "modelsDocs": "https://docs.mistral.ai/studio/audio/text-to-speech/voices"
321
+ },
263
322
  {
264
323
  "id": "assemblyai",
265
324
  "label": "AssemblyAI",
@@ -1,7 +1,14 @@
1
1
  /** SDK `stt.provider` / `tts.provider` id (matches VoiceAgent vendor ids). */
2
- export type VoiceVendorId = 'openai' | 'deepgram' | 'elevenlabs' | 'cartesia' | 'fishaudio' | 'assemblyai' | 'google' | 'groq' | 'azure' | 'aws' | 'local-sherpa' | 'mock';
2
+ export type VoiceVendorId = 'openai' | 'deepgram' | 'elevenlabs' | 'cartesia' | 'fishaudio' | 'mistral' | 'assemblyai' | 'google' | 'groq' | 'azure' | 'aws' | 'local-sherpa' | 'mock';
3
3
  /** Concrete speech transport a customer can select (`auto` is the SDK-level alias for the catalog default). */
4
4
  export type VoiceTransport = 'websocket' | 'http';
5
+ /** One suggested voice for a vendor whose voice ids are open. */
6
+ export interface TtsPresetVoice {
7
+ id: string;
8
+ name: string;
9
+ /** BCP 47 tag, e.g. `en-US`, `en-GB`, `fr`. */
10
+ language: string;
11
+ }
5
12
  export interface VoiceVendorEntry {
6
13
  id: VoiceVendorId;
7
14
  label: string;
@@ -30,6 +37,11 @@ export interface VoiceVendorEntry {
30
37
  * - `model`: the voice is selected by the model id.
31
38
  */
32
39
  ttsVoiceIds?: 'listed' | 'open' | 'model';
40
+ /**
41
+ * Suggested voices for `open` vendors, for a voice picker. Not a validation list: the vendor still
42
+ * accepts any voice id, and nothing rejects ids missing from here.
43
+ */
44
+ ttsPresetVoices?: TtsPresetVoice[];
33
45
  /** Relative to `catalog/` — load via {@link azureTtsVoices} / {@link googleTtsVoices}. */
34
46
  ttsVoiceListFile?: string;
35
47
  home: string;
@@ -72,6 +84,8 @@ export declare function sttModelAllowlist(vendorId: string): readonly string[];
72
84
  export declare function ttsModelAllowlist(vendorId: string): readonly string[];
73
85
  /** Documented TTS voices for a vendor; `model` selects a per-model list when the vendor has one. */
74
86
  export declare function ttsVoiceAllowlist(vendorId: string, model?: string): readonly string[];
87
+ /** Suggested voices for a vendor (empty when it lists none). Not a validation list. */
88
+ export declare function ttsPresetVoices(vendorId: string): readonly TtsPresetVoice[];
75
89
  /** Selectable STT transports for a vendor (empty when none). */
76
90
  export declare function sttTransports(vendorId: string): readonly VoiceTransport[];
77
91
  /** Selectable TTS transports for a vendor (empty when none). */
@@ -82,12 +96,17 @@ export declare function defaultSttTransport(vendorId: string): VoiceTransport |
82
96
  export declare function defaultTtsTransport(vendorId: string): VoiceTransport | undefined;
83
97
  export type VoiceCatalogValidationKind = 'sttModel' | 'ttsModel' | 'ttsVoice';
84
98
  export interface VoiceCatalogValidationError {
85
- kind: VoiceCatalogValidationKind;
99
+ kind: VoiceCatalogValidationKind | 'ttsPresetVoices';
86
100
  vendorId: string;
87
101
  value: string;
88
102
  message: string;
89
103
  }
90
104
  /** Returns `null` when the model/voice is in the published allowlist for that vendor. */
91
105
  export declare function validateVoiceCatalogChoice(vendorId: string, kind: VoiceCatalogValidationKind, value: string, model?: string): VoiceCatalogValidationError | null;
106
+ /**
107
+ * Checks the preset-voice rules for a catalog: presets only on `open` vendors, unique ids, and
108
+ * `defaultTtsVoice` (when set) is one of them. Returns every violation; empty when valid.
109
+ */
110
+ export declare function validateVoiceCatalogPresets(vendors?: readonly VoiceVendorEntry[]): VoiceCatalogValidationError[];
92
111
  export { vendorsCatalogJson as loadVendorsCatalog, azureTtsVoicesJson as loadAzureTtsVoicesCatalog, googleTtsVoicesJson as loadGoogleTtsVoicesCatalog, };
93
112
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -11,11 +11,13 @@ exports.customerTtsProviderIds = customerTtsProviderIds;
11
11
  exports.sttModelAllowlist = sttModelAllowlist;
12
12
  exports.ttsModelAllowlist = ttsModelAllowlist;
13
13
  exports.ttsVoiceAllowlist = ttsVoiceAllowlist;
14
+ exports.ttsPresetVoices = ttsPresetVoices;
14
15
  exports.sttTransports = sttTransports;
15
16
  exports.ttsTransports = ttsTransports;
16
17
  exports.defaultSttTransport = defaultSttTransport;
17
18
  exports.defaultTtsTransport = defaultTtsTransport;
18
19
  exports.validateVoiceCatalogChoice = validateVoiceCatalogChoice;
20
+ exports.validateVoiceCatalogPresets = validateVoiceCatalogPresets;
19
21
  const vendors_json_1 = __importDefault(require("../catalog/vendors.json"));
20
22
  const azure_tts_voices_json_1 = __importDefault(require("../catalog/azure-tts-voices.json"));
21
23
  const google_tts_voices_json_1 = __importDefault(require("../catalog/google-tts-voices.json"));
@@ -68,6 +70,10 @@ function ttsVoiceAllowlist(vendorId, model) {
68
70
  }
69
71
  return vendor?.ttsVoices ?? [];
70
72
  }
73
+ /** Suggested voices for a vendor (empty when it lists none). Not a validation list. */
74
+ function ttsPresetVoices(vendorId) {
75
+ return getVendor(vendorId)?.ttsPresetVoices ?? [];
76
+ }
71
77
  /** Selectable STT transports for a vendor (empty when none). */
72
78
  function sttTransports(vendorId) {
73
79
  return getVendor(vendorId)?.sttTransports ?? [];
@@ -146,4 +152,31 @@ function validateVoiceCatalogChoice(vendorId, kind, value, model) {
146
152
  }
147
153
  return null;
148
154
  }
155
+ /**
156
+ * Checks the preset-voice rules for a catalog: presets only on `open` vendors, unique ids, and
157
+ * `defaultTtsVoice` (when set) is one of them. Returns every violation; empty when valid.
158
+ */
159
+ function validateVoiceCatalogPresets(vendors = exports.VOICE_VENDORS) {
160
+ const errors = [];
161
+ for (const vendor of vendors) {
162
+ const presets = vendor.ttsPresetVoices;
163
+ if (!presets)
164
+ continue;
165
+ const fail = (value, message) => errors.push({ kind: 'ttsPresetVoices', vendorId: vendor.id, value, message });
166
+ if (vendor.ttsVoiceIds !== 'open') {
167
+ fail(vendor.ttsVoiceIds ?? '', `vendor \`${vendor.id}\` has ttsPresetVoices but ttsVoiceIds is not \`open\``);
168
+ }
169
+ const ids = new Set();
170
+ for (const preset of presets) {
171
+ if (ids.has(preset.id)) {
172
+ fail(preset.id, `duplicate preset voice id \`${preset.id}\` for vendor \`${vendor.id}\``);
173
+ }
174
+ ids.add(preset.id);
175
+ }
176
+ if (vendor.defaultTtsVoice !== undefined && !ids.has(vendor.defaultTtsVoice)) {
177
+ fail(vendor.defaultTtsVoice, `defaultTtsVoice \`${vendor.defaultTtsVoice}\` is not a preset voice of vendor \`${vendor.id}\``);
178
+ }
179
+ }
180
+ return errors;
181
+ }
149
182
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -260,6 +260,65 @@
260
260
  "ttsDocs": "https://docs.fish.audio/api-reference/endpoint/websocket/tts-live",
261
261
  "modelsDocs": "https://docs.fish.audio/developer-guide/models-pricing/models-overview"
262
262
  },
263
+ {
264
+ "id": "mistral",
265
+ "label": "Mistral (Voxtral 3)",
266
+ "stt": true,
267
+ "tts": true,
268
+ "defaultSttModel": "voxtral-mini-transcribe-realtime-3-0",
269
+ "defaultTtsModel": "voxtral-mini-tts-3-0",
270
+ "defaultTtsVoice": "voice_478",
271
+ "sttModels": ["voxtral-mini-transcribe-realtime-3-0", "voxtral-mini-transcribe-realtime-3"],
272
+ "ttsModels": ["voxtral-mini-tts-3-0", "voxtral-mini-tts-3", "voxtral-mini-tts-realtime-3-0"],
273
+ "ttsVoices": [],
274
+ "ttsTransports": ["http"],
275
+ "defaultTtsTransport": "http",
276
+ "sttTransports": ["websocket"],
277
+ "defaultSttTransport": "websocket",
278
+ "ttsVoiceIds": "open",
279
+ "ttsPresetVoices": [
280
+ { "id": "voice_478", "name": "Sheila", "language": "en-US" },
281
+ { "id": "voice_447", "name": "Margaret", "language": "en-US" },
282
+ { "id": "voice_485", "name": "Rob", "language": "en-US" },
283
+ { "id": "voice_3150", "name": "James", "language": "en-US" },
284
+ { "id": "voice_1787", "name": "Mary", "language": "en-GB" },
285
+ { "id": "voice_1786", "name": "Sky", "language": "en-GB" },
286
+ { "id": "voice_1788", "name": "David", "language": "en-GB" },
287
+ { "id": "voice_590", "name": "Harriet", "language": "en-GB" },
288
+ { "id": "voice_591", "name": "Fred", "language": "en-GB" },
289
+ { "id": "voice_3149", "name": "Hugo", "language": "en-GB" },
290
+ { "id": "voice_3147", "name": "Howard", "language": "en-GB" },
291
+ { "id": "voice_592", "name": "Marie", "language": "fr" },
292
+ { "id": "voice_3137", "name": "Manon", "language": "fr" },
293
+ { "id": "voice_589", "name": "Lea", "language": "fr" },
294
+ { "id": "voice_3141", "name": "Camille", "language": "fr" },
295
+ { "id": "voice_483", "name": "Elena", "language": "es" },
296
+ { "id": "voice_481", "name": "Heidi", "language": "de" },
297
+ { "id": "voice_482", "name": "Lorenzo", "language": "it" },
298
+ { "id": "voice_480", "name": "Gabriela", "language": "pt" },
299
+ { "id": "voice_479", "name": "Maryam", "language": "ar" },
300
+ { "id": "voice_3143", "name": "Jordi", "language": "ca" },
301
+ { "id": "voice_3139", "name": "Ananya", "language": "hi" },
302
+ { "id": "voice_3153", "name": "Himanshu", "language": "hi" },
303
+ { "id": "voice_3146", "name": "Olivia", "language": "hu" },
304
+ { "id": "voice_3133", "name": "Haruto", "language": "ja" },
305
+ { "id": "voice_3136", "name": "Sung", "language": "ko" },
306
+ { "id": "voice_3135", "name": "Jin", "language": "ko" },
307
+ { "id": "voice_3145", "name": "Lotte", "language": "nl" },
308
+ { "id": "voice_3134", "name": "Lars", "language": "no" },
309
+ { "id": "voice_3154", "name": "Leon", "language": "pl" },
310
+ { "id": "voice_3155", "name": "Irina", "language": "ro" },
311
+ { "id": "voice_3132", "name": "Tatiana", "language": "ru" },
312
+ { "id": "voice_3138", "name": "Oran", "language": "tr" },
313
+ { "id": "voice_3140", "name": "Taras", "language": "uk" },
314
+ { "id": "voice_3144", "name": "Huong", "language": "vi" },
315
+ { "id": "voice_3142", "name": "Mei", "language": "zh" }
316
+ ],
317
+ "home": "https://docs.mistral.ai/studio/audio/text-to-speech/generate-speech",
318
+ "sttDocs": "https://docs.mistral.ai/studio/audio/speech-to-text/transcribe-in-realtime",
319
+ "ttsDocs": "https://docs.mistral.ai/studio/audio/text-to-speech/generate-speech",
320
+ "modelsDocs": "https://docs.mistral.ai/studio/audio/text-to-speech/voices"
321
+ },
263
322
  {
264
323
  "id": "assemblyai",
265
324
  "label": "AssemblyAI",
@@ -1,7 +1,14 @@
1
1
  /** SDK `stt.provider` / `tts.provider` id (matches VoiceAgent vendor ids). */
2
- export type VoiceVendorId = 'openai' | 'deepgram' | 'elevenlabs' | 'cartesia' | 'fishaudio' | 'assemblyai' | 'google' | 'groq' | 'azure' | 'aws' | 'local-sherpa' | 'mock';
2
+ export type VoiceVendorId = 'openai' | 'deepgram' | 'elevenlabs' | 'cartesia' | 'fishaudio' | 'mistral' | 'assemblyai' | 'google' | 'groq' | 'azure' | 'aws' | 'local-sherpa' | 'mock';
3
3
  /** Concrete speech transport a customer can select (`auto` is the SDK-level alias for the catalog default). */
4
4
  export type VoiceTransport = 'websocket' | 'http';
5
+ /** One suggested voice for a vendor whose voice ids are open. */
6
+ export interface TtsPresetVoice {
7
+ id: string;
8
+ name: string;
9
+ /** BCP 47 tag, e.g. `en-US`, `en-GB`, `fr`. */
10
+ language: string;
11
+ }
5
12
  export interface VoiceVendorEntry {
6
13
  id: VoiceVendorId;
7
14
  label: string;
@@ -30,6 +37,11 @@ export interface VoiceVendorEntry {
30
37
  * - `model`: the voice is selected by the model id.
31
38
  */
32
39
  ttsVoiceIds?: 'listed' | 'open' | 'model';
40
+ /**
41
+ * Suggested voices for `open` vendors, for a voice picker. Not a validation list: the vendor still
42
+ * accepts any voice id, and nothing rejects ids missing from here.
43
+ */
44
+ ttsPresetVoices?: TtsPresetVoice[];
33
45
  /** Relative to `catalog/` — load via {@link azureTtsVoices} / {@link googleTtsVoices}. */
34
46
  ttsVoiceListFile?: string;
35
47
  home: string;
@@ -72,6 +84,8 @@ export declare function sttModelAllowlist(vendorId: string): readonly string[];
72
84
  export declare function ttsModelAllowlist(vendorId: string): readonly string[];
73
85
  /** Documented TTS voices for a vendor; `model` selects a per-model list when the vendor has one. */
74
86
  export declare function ttsVoiceAllowlist(vendorId: string, model?: string): readonly string[];
87
+ /** Suggested voices for a vendor (empty when it lists none). Not a validation list. */
88
+ export declare function ttsPresetVoices(vendorId: string): readonly TtsPresetVoice[];
75
89
  /** Selectable STT transports for a vendor (empty when none). */
76
90
  export declare function sttTransports(vendorId: string): readonly VoiceTransport[];
77
91
  /** Selectable TTS transports for a vendor (empty when none). */
@@ -82,12 +96,17 @@ export declare function defaultSttTransport(vendorId: string): VoiceTransport |
82
96
  export declare function defaultTtsTransport(vendorId: string): VoiceTransport | undefined;
83
97
  export type VoiceCatalogValidationKind = 'sttModel' | 'ttsModel' | 'ttsVoice';
84
98
  export interface VoiceCatalogValidationError {
85
- kind: VoiceCatalogValidationKind;
99
+ kind: VoiceCatalogValidationKind | 'ttsPresetVoices';
86
100
  vendorId: string;
87
101
  value: string;
88
102
  message: string;
89
103
  }
90
104
  /** Returns `null` when the model/voice is in the published allowlist for that vendor. */
91
105
  export declare function validateVoiceCatalogChoice(vendorId: string, kind: VoiceCatalogValidationKind, value: string, model?: string): VoiceCatalogValidationError | null;
106
+ /**
107
+ * Checks the preset-voice rules for a catalog: presets only on `open` vendors, unique ids, and
108
+ * `defaultTtsVoice` (when set) is one of them. Returns every violation; empty when valid.
109
+ */
110
+ export declare function validateVoiceCatalogPresets(vendors?: readonly VoiceVendorEntry[]): VoiceCatalogValidationError[];
92
111
  export { vendorsCatalogJson as loadVendorsCatalog, azureTtsVoicesJson as loadAzureTtsVoicesCatalog, googleTtsVoicesJson as loadGoogleTtsVoicesCatalog, };
93
112
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,10 @@ export function ttsVoiceAllowlist(vendorId, model) {
47
47
  }
48
48
  return vendor?.ttsVoices ?? [];
49
49
  }
50
+ /** Suggested voices for a vendor (empty when it lists none). Not a validation list. */
51
+ export function ttsPresetVoices(vendorId) {
52
+ return getVendor(vendorId)?.ttsPresetVoices ?? [];
53
+ }
50
54
  /** Selectable STT transports for a vendor (empty when none). */
51
55
  export function sttTransports(vendorId) {
52
56
  return getVendor(vendorId)?.sttTransports ?? [];
@@ -125,5 +129,32 @@ export function validateVoiceCatalogChoice(vendorId, kind, value, model) {
125
129
  }
126
130
  return null;
127
131
  }
132
+ /**
133
+ * Checks the preset-voice rules for a catalog: presets only on `open` vendors, unique ids, and
134
+ * `defaultTtsVoice` (when set) is one of them. Returns every violation; empty when valid.
135
+ */
136
+ export function validateVoiceCatalogPresets(vendors = VOICE_VENDORS) {
137
+ const errors = [];
138
+ for (const vendor of vendors) {
139
+ const presets = vendor.ttsPresetVoices;
140
+ if (!presets)
141
+ continue;
142
+ const fail = (value, message) => errors.push({ kind: 'ttsPresetVoices', vendorId: vendor.id, value, message });
143
+ if (vendor.ttsVoiceIds !== 'open') {
144
+ fail(vendor.ttsVoiceIds ?? '', `vendor \`${vendor.id}\` has ttsPresetVoices but ttsVoiceIds is not \`open\``);
145
+ }
146
+ const ids = new Set();
147
+ for (const preset of presets) {
148
+ if (ids.has(preset.id)) {
149
+ fail(preset.id, `duplicate preset voice id \`${preset.id}\` for vendor \`${vendor.id}\``);
150
+ }
151
+ ids.add(preset.id);
152
+ }
153
+ if (vendor.defaultTtsVoice !== undefined && !ids.has(vendor.defaultTtsVoice)) {
154
+ fail(vendor.defaultTtsVoice, `defaultTtsVoice \`${vendor.defaultTtsVoice}\` is not a preset voice of vendor \`${vendor.id}\``);
155
+ }
156
+ }
157
+ return errors;
158
+ }
128
159
  export { vendorsCatalogJson as loadVendorsCatalog, azureTtsVoicesJson as loadAzureTtsVoicesCatalog, googleTtsVoicesJson as loadGoogleTtsVoicesCatalog, };
129
160
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@node-webrtc-rust/voice-catalog",
3
- "version": "0.12.1",
3
+ "version": "0.13.0",
4
4
  "description": "Published STT/TTS vendor allowlists and documentation links for VoiceAgent providers",
5
5
  "keywords": [
6
6
  "webrtc",