@speech-sdk/core 0.7.0 → 0.8.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 (245) hide show
  1. package/README.md +227 -108
  2. package/dist/__tests__/e2e/_save-audio.d.ts +0 -42
  3. package/dist/__tests__/e2e/_save-audio.d.ts.map +1 -1
  4. package/dist/__tests__/e2e/_save-audio.js +0 -59
  5. package/dist/__tests__/e2e/_save-audio.js.map +1 -1
  6. package/dist/audio-decode.d.ts +7 -0
  7. package/dist/audio-decode.d.ts.map +1 -0
  8. package/dist/audio-decode.js +109 -0
  9. package/dist/audio-decode.js.map +1 -0
  10. package/dist/audio-duration.d.ts +0 -5
  11. package/dist/audio-duration.d.ts.map +1 -1
  12. package/dist/audio-duration.js +5 -21
  13. package/dist/audio-duration.js.map +1 -1
  14. package/dist/audio-output.d.ts +39 -0
  15. package/dist/audio-output.d.ts.map +1 -0
  16. package/dist/audio-output.js +111 -0
  17. package/dist/audio-output.js.map +1 -0
  18. package/dist/audio-utils.d.ts +2 -10
  19. package/dist/audio-utils.d.ts.map +1 -1
  20. package/dist/audio-utils.js +57 -15
  21. package/dist/audio-utils.js.map +1 -1
  22. package/dist/captions.d.ts +0 -108
  23. package/dist/captions.d.ts.map +1 -1
  24. package/dist/captions.js +8 -98
  25. package/dist/captions.js.map +1 -1
  26. package/dist/conversation/attribute-timestamps.d.ts +26 -0
  27. package/dist/conversation/attribute-timestamps.d.ts.map +1 -0
  28. package/dist/conversation/attribute-timestamps.js +276 -0
  29. package/dist/conversation/attribute-timestamps.js.map +1 -0
  30. package/dist/conversation/dispatch.d.ts +5 -5
  31. package/dist/conversation/dispatch.d.ts.map +1 -1
  32. package/dist/conversation/dispatch.js +18 -8
  33. package/dist/conversation/dispatch.js.map +1 -1
  34. package/dist/conversation/errors.d.ts +3 -0
  35. package/dist/conversation/errors.d.ts.map +1 -1
  36. package/dist/conversation/errors.js +6 -0
  37. package/dist/conversation/errors.js.map +1 -1
  38. package/dist/conversation/pcm-concat.d.ts +0 -24
  39. package/dist/conversation/pcm-concat.d.ts.map +1 -1
  40. package/dist/conversation/pcm-concat.js +8 -183
  41. package/dist/conversation/pcm-concat.js.map +1 -1
  42. package/dist/conversation/proportional-fill.d.ts +10 -0
  43. package/dist/conversation/proportional-fill.d.ts.map +1 -0
  44. package/dist/conversation/proportional-fill.js +64 -0
  45. package/dist/conversation/proportional-fill.js.map +1 -0
  46. package/dist/conversation/silence-detection.d.ts +14 -0
  47. package/dist/conversation/silence-detection.d.ts.map +1 -0
  48. package/dist/conversation/silence-detection.js +52 -0
  49. package/dist/conversation/silence-detection.js.map +1 -0
  50. package/dist/conversation/stitch.d.ts +9 -6
  51. package/dist/conversation/stitch.d.ts.map +1 -1
  52. package/dist/conversation/stitch.js +72 -51
  53. package/dist/conversation/stitch.js.map +1 -1
  54. package/dist/conversation/types.d.ts +7 -37
  55. package/dist/conversation/types.d.ts.map +1 -1
  56. package/dist/conversation/validate.d.ts +1 -16
  57. package/dist/conversation/validate.d.ts.map +1 -1
  58. package/dist/conversation/validate.js +29 -29
  59. package/dist/conversation/validate.js.map +1 -1
  60. package/dist/default-stt-fallback.d.ts +3 -0
  61. package/dist/default-stt-fallback.d.ts.map +1 -0
  62. package/dist/default-stt-fallback.js +11 -0
  63. package/dist/default-stt-fallback.js.map +1 -0
  64. package/dist/derive-timestamps.d.ts +1 -5
  65. package/dist/derive-timestamps.d.ts.map +1 -1
  66. package/dist/derive-timestamps.js +1 -15
  67. package/dist/derive-timestamps.js.map +1 -1
  68. package/dist/encoders/mp3.d.ts +6 -0
  69. package/dist/encoders/mp3.d.ts.map +1 -0
  70. package/dist/encoders/mp3.js +54 -0
  71. package/dist/encoders/mp3.js.map +1 -0
  72. package/dist/errors.d.ts +20 -13
  73. package/dist/errors.d.ts.map +1 -1
  74. package/dist/errors.js +49 -15
  75. package/dist/errors.js.map +1 -1
  76. package/dist/generate-conversation.d.ts +5 -4
  77. package/dist/generate-conversation.d.ts.map +1 -1
  78. package/dist/generate-conversation.js +250 -93
  79. package/dist/generate-conversation.js.map +1 -1
  80. package/dist/generate-speech.d.ts +7 -28
  81. package/dist/generate-speech.d.ts.map +1 -1
  82. package/dist/generate-speech.js +185 -94
  83. package/dist/generate-speech.js.map +1 -1
  84. package/dist/index.d.ts +7 -11
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +6 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/logger.d.ts.map +1 -1
  89. package/dist/logger.js +2 -13
  90. package/dist/logger.js.map +1 -1
  91. package/dist/metadata.d.ts +0 -22
  92. package/dist/metadata.d.ts.map +1 -1
  93. package/dist/pronunciations/errors.d.ts +5 -0
  94. package/dist/pronunciations/errors.d.ts.map +1 -0
  95. package/dist/pronunciations/errors.js +8 -0
  96. package/dist/pronunciations/errors.js.map +1 -0
  97. package/dist/pronunciations/inverse-align.d.ts +4 -0
  98. package/dist/pronunciations/inverse-align.d.ts.map +1 -0
  99. package/dist/pronunciations/inverse-align.js +54 -0
  100. package/dist/pronunciations/inverse-align.js.map +1 -0
  101. package/dist/pronunciations/merge.d.ts +4 -0
  102. package/dist/pronunciations/merge.d.ts.map +1 -0
  103. package/dist/pronunciations/merge.js +13 -0
  104. package/dist/pronunciations/merge.js.map +1 -0
  105. package/dist/pronunciations/substitute.d.ts +6 -0
  106. package/dist/pronunciations/substitute.d.ts.map +1 -0
  107. package/dist/pronunciations/substitute.js +67 -0
  108. package/dist/pronunciations/substitute.js.map +1 -0
  109. package/dist/pronunciations/types.d.ts +18 -0
  110. package/dist/pronunciations/types.d.ts.map +1 -0
  111. package/dist/pronunciations/types.js +2 -0
  112. package/dist/pronunciations/types.js.map +1 -0
  113. package/dist/pronunciations/validate.d.ts +3 -0
  114. package/dist/pronunciations/validate.d.ts.map +1 -0
  115. package/dist/pronunciations/validate.js +26 -0
  116. package/dist/pronunciations/validate.js.map +1 -0
  117. package/dist/provider-utils.d.ts +4 -9
  118. package/dist/provider-utils.d.ts.map +1 -1
  119. package/dist/provider-utils.js +60 -51
  120. package/dist/provider-utils.js.map +1 -1
  121. package/dist/providers/cartesia/alignment.d.ts +0 -16
  122. package/dist/providers/cartesia/alignment.d.ts.map +1 -1
  123. package/dist/providers/cartesia/alignment.js +1 -6
  124. package/dist/providers/cartesia/alignment.js.map +1 -1
  125. package/dist/providers/cartesia/index.d.ts +29 -19
  126. package/dist/providers/cartesia/index.d.ts.map +1 -1
  127. package/dist/providers/cartesia/index.js +116 -80
  128. package/dist/providers/cartesia/index.js.map +1 -1
  129. package/dist/providers/deepgram/index.d.ts +23 -8
  130. package/dist/providers/deepgram/index.d.ts.map +1 -1
  131. package/dist/providers/deepgram/index.js +51 -18
  132. package/dist/providers/deepgram/index.js.map +1 -1
  133. package/dist/providers/elevenlabs/alignment.d.ts +7 -21
  134. package/dist/providers/elevenlabs/alignment.d.ts.map +1 -1
  135. package/dist/providers/elevenlabs/alignment.js +8 -9
  136. package/dist/providers/elevenlabs/alignment.js.map +1 -1
  137. package/dist/providers/elevenlabs/index.d.ts +14 -38
  138. package/dist/providers/elevenlabs/index.d.ts.map +1 -1
  139. package/dist/providers/elevenlabs/index.js +186 -169
  140. package/dist/providers/elevenlabs/index.js.map +1 -1
  141. package/dist/providers/fal/index.d.ts +11 -20
  142. package/dist/providers/fal/index.d.ts.map +1 -1
  143. package/dist/providers/fal/index.js +49 -37
  144. package/dist/providers/fal/index.js.map +1 -1
  145. package/dist/providers/fish-audio/index.d.ts +14 -8
  146. package/dist/providers/fish-audio/index.d.ts.map +1 -1
  147. package/dist/providers/fish-audio/index.js +47 -19
  148. package/dist/providers/fish-audio/index.js.map +1 -1
  149. package/dist/providers/gateway/index.d.ts +76 -0
  150. package/dist/providers/gateway/index.d.ts.map +1 -0
  151. package/dist/providers/gateway/index.js +251 -0
  152. package/dist/providers/gateway/index.js.map +1 -0
  153. package/dist/providers/google/index.d.ts +12 -20
  154. package/dist/providers/google/index.d.ts.map +1 -1
  155. package/dist/providers/google/index.js +180 -162
  156. package/dist/providers/google/index.js.map +1 -1
  157. package/dist/providers/hume/alignment.d.ts +30 -35
  158. package/dist/providers/hume/alignment.d.ts.map +1 -1
  159. package/dist/providers/hume/alignment.js +14 -8
  160. package/dist/providers/hume/alignment.js.map +1 -1
  161. package/dist/providers/hume/index.d.ts +16 -16
  162. package/dist/providers/hume/index.d.ts.map +1 -1
  163. package/dist/providers/hume/index.js +79 -65
  164. package/dist/providers/hume/index.js.map +1 -1
  165. package/dist/providers/inworld/alignment.d.ts +8 -22
  166. package/dist/providers/inworld/alignment.d.ts.map +1 -1
  167. package/dist/providers/inworld/alignment.js +9 -8
  168. package/dist/providers/inworld/alignment.js.map +1 -1
  169. package/dist/providers/inworld/index.d.ts +17 -20
  170. package/dist/providers/inworld/index.d.ts.map +1 -1
  171. package/dist/providers/inworld/index.js +79 -47
  172. package/dist/providers/inworld/index.js.map +1 -1
  173. package/dist/providers/mistral/index.d.ts +14 -8
  174. package/dist/providers/mistral/index.d.ts.map +1 -1
  175. package/dist/providers/mistral/index.js +63 -48
  176. package/dist/providers/mistral/index.js.map +1 -1
  177. package/dist/providers/murf/alignment.d.ts +10 -19
  178. package/dist/providers/murf/alignment.d.ts.map +1 -1
  179. package/dist/providers/murf/alignment.js +10 -5
  180. package/dist/providers/murf/alignment.js.map +1 -1
  181. package/dist/providers/murf/index.d.ts +15 -16
  182. package/dist/providers/murf/index.d.ts.map +1 -1
  183. package/dist/providers/murf/index.js +105 -58
  184. package/dist/providers/murf/index.js.map +1 -1
  185. package/dist/providers/openai/index.d.ts +43 -29
  186. package/dist/providers/openai/index.d.ts.map +1 -1
  187. package/dist/providers/openai/index.js +294 -106
  188. package/dist/providers/openai/index.js.map +1 -1
  189. package/dist/providers/resemble/alignment.d.ts +8 -29
  190. package/dist/providers/resemble/alignment.d.ts.map +1 -1
  191. package/dist/providers/resemble/alignment.js +9 -12
  192. package/dist/providers/resemble/alignment.js.map +1 -1
  193. package/dist/providers/resemble/index.d.ts +21 -11
  194. package/dist/providers/resemble/index.d.ts.map +1 -1
  195. package/dist/providers/resemble/index.js +89 -49
  196. package/dist/providers/resemble/index.js.map +1 -1
  197. package/dist/providers/smallest-ai/index.d.ts +47 -0
  198. package/dist/providers/smallest-ai/index.d.ts.map +1 -0
  199. package/dist/providers/smallest-ai/index.js +107 -0
  200. package/dist/providers/smallest-ai/index.js.map +1 -0
  201. package/dist/providers/xai/index.d.ts +25 -9
  202. package/dist/providers/xai/index.d.ts.map +1 -1
  203. package/dist/providers/xai/index.js +63 -40
  204. package/dist/providers/xai/index.js.map +1 -1
  205. package/dist/providers.d.ts +31 -0
  206. package/dist/providers.d.ts.map +1 -0
  207. package/dist/providers.js +16 -0
  208. package/dist/providers.js.map +1 -0
  209. package/dist/resolve-provider.d.ts.map +1 -1
  210. package/dist/resolve-provider.js +8 -51
  211. package/dist/resolve-provider.js.map +1 -1
  212. package/dist/retry-options.d.ts +6 -0
  213. package/dist/retry-options.d.ts.map +1 -0
  214. package/dist/retry-options.js +48 -0
  215. package/dist/retry-options.js.map +1 -0
  216. package/dist/speech-provider.d.ts +28 -53
  217. package/dist/speech-provider.d.ts.map +1 -1
  218. package/dist/speech-provider.js +5 -26
  219. package/dist/speech-provider.js.map +1 -1
  220. package/dist/speech-result.d.ts +8 -9
  221. package/dist/speech-result.d.ts.map +1 -1
  222. package/dist/speech-result.js.map +1 -1
  223. package/dist/speech-to-text-provider.d.ts +0 -12
  224. package/dist/speech-to-text-provider.d.ts.map +1 -1
  225. package/dist/stream-speech.d.ts +4 -2
  226. package/dist/stream-speech.d.ts.map +1 -1
  227. package/dist/stream-speech.js +36 -22
  228. package/dist/stream-speech.js.map +1 -1
  229. package/dist/timestamps.d.ts +3 -17
  230. package/dist/timestamps.d.ts.map +1 -1
  231. package/dist/turns.d.ts +9 -0
  232. package/dist/turns.d.ts.map +1 -0
  233. package/dist/turns.js +21 -0
  234. package/dist/turns.js.map +1 -0
  235. package/dist/types.d.ts +31 -0
  236. package/dist/types.d.ts.map +1 -1
  237. package/dist/volume-adjust.d.ts +0 -6
  238. package/dist/volume-adjust.d.ts.map +1 -1
  239. package/dist/volume-adjust.js +4 -16
  240. package/dist/volume-adjust.js.map +1 -1
  241. package/package.json +13 -66
  242. package/dist/stt-providers/openai/index.d.ts +0 -42
  243. package/dist/stt-providers/openai/index.d.ts.map +0 -1
  244. package/dist/stt-providers/openai/index.js +0 -184
  245. package/dist/stt-providers/openai/index.js.map +0 -1
@@ -1,36 +1,36 @@
1
1
  import { handleErrorResponse, resolveApiKey, SDK_USER_AGENT, } from "../../provider-utils.js";
2
+ export const XAI_PROVIDER_ID = "xai";
3
+ // ISO 639-1 codes; xAI also accepts BCP-47 (e.g. pt-BR) and "auto" via providerOptions.language.
4
+ const XAI_LANGUAGES = [
5
+ "en",
6
+ "ar",
7
+ "bn",
8
+ "zh",
9
+ "fr",
10
+ "de",
11
+ "hi",
12
+ "id",
13
+ "it",
14
+ "ja",
15
+ "ko",
16
+ "pt",
17
+ "ru",
18
+ "es",
19
+ "tr",
20
+ "vi",
21
+ ];
22
+ export const XAI_MODELS = [
23
+ {
24
+ id: "grok-tts",
25
+ releaseDate: "2025-11-01",
26
+ languages: XAI_LANGUAGES,
27
+ features: ["streaming", "audio-tags"],
28
+ },
29
+ ];
2
30
  export class XaiSpeechProvider {
3
- id = "xai";
31
+ id = XAI_PROVIDER_ID;
4
32
  defaultModel = "grok-tts";
5
- // ISO 639-1 codes, matching the rest of the SDK. xAI's API also accepts
6
- // region-qualified BCP-47 codes (e.g. `pt-BR`, `es-MX`) and `auto` for
7
- // detection — callers can pass either via `providerOptions.language`.
8
- static LANGUAGES = [
9
- "en",
10
- "ar",
11
- "bn",
12
- "zh",
13
- "fr",
14
- "de",
15
- "hi",
16
- "id",
17
- "it",
18
- "ja",
19
- "ko",
20
- "pt",
21
- "ru",
22
- "es",
23
- "tr",
24
- "vi",
25
- ];
26
- models = [
27
- {
28
- id: "grok-tts",
29
- releaseDate: "2025-11-01",
30
- languages: XaiSpeechProvider.LANGUAGES,
31
- features: ["streaming", "audio-tags"],
32
- },
33
- ];
33
+ models = XAI_MODELS;
34
34
  apiKey;
35
35
  baseURL;
36
36
  fetchFn;
@@ -39,15 +39,12 @@ export class XaiSpeechProvider {
39
39
  this.baseURL = config.baseURL ?? "https://api.x.ai/v1";
40
40
  this.fetchFn = config.fetch ?? globalThis.fetch.bind(globalThis);
41
41
  }
42
- // xAI natively supports bracket inline tags (`[pause]`, `[laugh]`) and
43
- // angle-bracket wrapping tags (`<whisper>...</whisper>`), so we pass text
44
- // through unchanged.
42
+ // xAI natively supports bracket and angle-bracket audio tags, so passthrough is safe.
45
43
  processAudioTags(text) {
46
44
  return { text, warnings: [] };
47
45
  }
48
46
  buildBody(options) {
49
- // `language` is required by xAI. Default to "auto" for language detection;
50
- // users can override via providerOptions.language with a BCP-47 code.
47
+ // `language` is required by xAI; default to "auto" so detection runs unless caller overrides.
51
48
  const body = {
52
49
  language: "auto",
53
50
  ...options.providerOptions,
@@ -90,7 +87,7 @@ export class XaiSpeechProvider {
90
87
  body: JSON.stringify(body),
91
88
  signal: options.abortSignal,
92
89
  });
93
- await handleErrorResponse(response, `xai/${options.modelId}`);
90
+ await handleErrorResponse(response);
94
91
  const arrayBuffer = await response.arrayBuffer();
95
92
  const mediaType = response.headers.get("content-type") ??
96
93
  this.mediaTypeForCodec(this.codecFromBody(body));
@@ -112,7 +109,7 @@ export class XaiSpeechProvider {
112
109
  body: JSON.stringify(body),
113
110
  signal: options.abortSignal,
114
111
  });
115
- await handleErrorResponse(response, `xai/${options.modelId}`);
112
+ await handleErrorResponse(response);
116
113
  if (!response.body) {
117
114
  throw new Error(`xai/${options.modelId}: response has no body`);
118
115
  }
@@ -124,22 +121,48 @@ export class XaiSpeechProvider {
124
121
  }
125
122
  getStitchOptions(modelId) {
126
123
  if (this.models.some((m) => m.id === modelId)) {
127
- // xAI Grok TTS accepts output_format.codec and its mediaTypeForCodec
128
- // helper maps "wav" → "audio/wav", which the stitch layer can decode.
129
124
  return {
130
125
  providerOptions: { output_format: { codec: "wav" } },
131
126
  mediaType: "audio/wav",
132
127
  };
133
128
  }
134
- return undefined;
129
+ return;
130
+ }
131
+ resolveOutputFormat(modelId, output) {
132
+ if (!this.models.some((m) => m.id === modelId)) {
133
+ return;
134
+ }
135
+ switch (output.format) {
136
+ case "wav":
137
+ return {
138
+ providerOptions: { output_format: { codec: "wav" } },
139
+ expectedMediaType: "audio/wav",
140
+ };
141
+ case "mp3":
142
+ return {
143
+ providerOptions: { output_format: { codec: "mp3" } },
144
+ expectedMediaType: "audio/mpeg",
145
+ };
146
+ case "pcm":
147
+ return {
148
+ providerOptions: {
149
+ output_format: { codec: "pcm", sample_rate: 24_000 },
150
+ },
151
+ expectedMediaType: "audio/pcm;rate=24000",
152
+ };
153
+ default:
154
+ return;
155
+ }
135
156
  }
136
157
  }
137
158
  export function createXai(config = {}) {
138
159
  const provider = new XaiSpeechProvider(config);
160
+ const fallbackSTT = config.fallbackSTT;
139
161
  return function xai(modelId) {
140
162
  return {
141
163
  provider,
142
164
  modelId: modelId ?? provider.defaultModel,
165
+ ...(fallbackSTT && { fallbackSTT }),
143
166
  };
144
167
  };
145
168
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/xai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/xai/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type { CartesiaSpeechProviderConfig } from "./providers/cartesia/index.js";
2
+ export { createCartesia } from "./providers/cartesia/index.js";
3
+ export type { DeepgramSpeechProviderConfig } from "./providers/deepgram/index.js";
4
+ export { createDeepgram } from "./providers/deepgram/index.js";
5
+ export type { ElevenLabsSpeechProviderConfig } from "./providers/elevenlabs/index.js";
6
+ export { createElevenLabs } from "./providers/elevenlabs/index.js";
7
+ export type { FalSpeechProviderConfig } from "./providers/fal/index.js";
8
+ export { createFal } from "./providers/fal/index.js";
9
+ export type { FishAudioSpeechProviderConfig } from "./providers/fish-audio/index.js";
10
+ export { createFishAudio } from "./providers/fish-audio/index.js";
11
+ export type { SpeechGatewayProviderConfig } from "./providers/gateway/index.js";
12
+ export { createSpeechGateway } from "./providers/gateway/index.js";
13
+ export type { GoogleSpeechProviderConfig } from "./providers/google/index.js";
14
+ export { createGoogle } from "./providers/google/index.js";
15
+ export type { HumeSpeechProviderConfig } from "./providers/hume/index.js";
16
+ export { createHume } from "./providers/hume/index.js";
17
+ export type { InworldSpeechProviderConfig } from "./providers/inworld/index.js";
18
+ export { createInworld } from "./providers/inworld/index.js";
19
+ export type { MistralSpeechProviderConfig } from "./providers/mistral/index.js";
20
+ export { createMistral } from "./providers/mistral/index.js";
21
+ export type { MurfSpeechProviderConfig } from "./providers/murf/index.js";
22
+ export { createMurf } from "./providers/murf/index.js";
23
+ export type { OpenAISpeechProviderConfig } from "./providers/openai/index.js";
24
+ export { createOpenAI } from "./providers/openai/index.js";
25
+ export type { ResembleSpeechProviderConfig } from "./providers/resemble/index.js";
26
+ export { createResemble } from "./providers/resemble/index.js";
27
+ export type { SmallestAISpeechProviderConfig } from "./providers/smallest-ai/index.js";
28
+ export { createSmallestAI } from "./providers/smallest-ai/index.js";
29
+ export type { XaiSpeechProviderConfig } from "./providers/xai/index.js";
30
+ export { createXai } from "./providers/xai/index.js";
31
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,YAAY,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,YAAY,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,YAAY,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,YAAY,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,YAAY,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,YAAY,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export { createCartesia } from "./providers/cartesia/index.js";
2
+ export { createDeepgram } from "./providers/deepgram/index.js";
3
+ export { createElevenLabs } from "./providers/elevenlabs/index.js";
4
+ export { createFal } from "./providers/fal/index.js";
5
+ export { createFishAudio } from "./providers/fish-audio/index.js";
6
+ export { createSpeechGateway } from "./providers/gateway/index.js";
7
+ export { createGoogle } from "./providers/google/index.js";
8
+ export { createHume } from "./providers/hume/index.js";
9
+ export { createInworld } from "./providers/inworld/index.js";
10
+ export { createMistral } from "./providers/mistral/index.js";
11
+ export { createMurf } from "./providers/murf/index.js";
12
+ export { createOpenAI } from "./providers/openai/index.js";
13
+ export { createResemble } from "./providers/resemble/index.js";
14
+ export { createSmallestAI } from "./providers/smallest-ai/index.js";
15
+ export { createXai } from "./providers/xai/index.js";
16
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-provider.d.ts","sourceRoot":"","sources":["../src/resolve-provider.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,sBAAsB,CAAC;AAgD1E,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,aAAa,CAWf"}
1
+ {"version":3,"file":"resolve-provider.d.ts","sourceRoot":"","sources":["../src/resolve-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAW1D,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,GAAG,aAAa,EAC7B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5B,aAAa,CAiBf"}
@@ -1,66 +1,23 @@
1
- import { SpeechSDKError } from "./errors.js";
2
- import { parseProviderModelSpec } from "./provider-utils.js";
3
- import { CartesiaSpeechProvider } from "./providers/cartesia/index.js";
4
- import { DeepgramSpeechProvider } from "./providers/deepgram/index.js";
5
- import { ElevenLabsSpeechProvider } from "./providers/elevenlabs/index.js";
6
- import { FalSpeechProvider } from "./providers/fal/index.js";
7
- import { FishAudioSpeechProvider } from "./providers/fish-audio/index.js";
8
- import { GoogleSpeechProvider } from "./providers/google/index.js";
9
- import { HumeSpeechProvider } from "./providers/hume/index.js";
10
- import { InworldSpeechProvider } from "./providers/inworld/index.js";
11
- import { MistralSpeechProvider } from "./providers/mistral/index.js";
12
- import { MurfSpeechProvider } from "./providers/murf/index.js";
13
- import { OpenAISpeechProvider } from "./providers/openai/index.js";
14
- import { ResembleSpeechProvider } from "./providers/resemble/index.js";
15
- import { XaiSpeechProvider } from "./providers/xai/index.js";
1
+ import { SpeechGatewayProvider } from "./providers/gateway/index.js";
16
2
  function isResolvedModel(model) {
17
3
  return (model != null &&
18
4
  typeof model === "object" &&
19
5
  "provider" in model &&
20
6
  "modelId" in model);
21
7
  }
22
- function createBuiltinProvider(name, options) {
23
- const config = options?.apiKey ? { apiKey: options.apiKey } : {};
24
- switch (name) {
25
- case "openai":
26
- return new OpenAISpeechProvider(config);
27
- case "elevenlabs":
28
- return new ElevenLabsSpeechProvider(config);
29
- case "deepgram":
30
- return new DeepgramSpeechProvider(config);
31
- case "cartesia":
32
- return new CartesiaSpeechProvider(config);
33
- case "hume":
34
- return new HumeSpeechProvider(config);
35
- case "inworld":
36
- return new InworldSpeechProvider(config);
37
- case "google":
38
- return new GoogleSpeechProvider(config);
39
- case "fish-audio":
40
- return new FishAudioSpeechProvider(config);
41
- case "murf":
42
- return new MurfSpeechProvider(config);
43
- case "resemble":
44
- return new ResembleSpeechProvider(config);
45
- case "fal-ai":
46
- return new FalSpeechProvider(config);
47
- case "mistral":
48
- return new MistralSpeechProvider(config);
49
- case "xai":
50
- return new XaiSpeechProvider(config);
51
- default:
52
- throw new SpeechSDKError(`Unknown provider: ${name}`);
53
- }
54
- }
55
8
  export function resolveModel(model, options) {
56
9
  if (isResolvedModel(model)) {
57
10
  return model;
58
11
  }
59
- const { providerName, modelId } = parseProviderModelSpec(model);
60
- const provider = createBuiltinProvider(providerName, options);
12
+ if (!model) {
13
+ throw new Error('A model is required. Pass a "provider/model" string (e.g., "openai/gpt-4o-mini-tts") to route through Speech Gateway, or a ResolvedModel from a factory like createOpenAI()().');
14
+ }
15
+ // Bare `"provider/model"` strings route through the speech gateway; direct provider access requires a ResolvedModel from the factory.
16
+ const config = options?.apiKey ? { apiKey: options.apiKey } : {};
17
+ const provider = new SpeechGatewayProvider(config);
61
18
  return {
62
19
  provider,
63
- modelId: modelId ?? provider.defaultModel,
20
+ modelId: model,
64
21
  };
65
22
  }
66
23
  //# sourceMappingURL=resolve-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-provider.js","sourceRoot":"","sources":["../src/resolve-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-provider.js","sourceRoot":"","sources":["../src/resolve-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGrE,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,CACL,KAAK,IAAI,IAAI;QACb,OAAO,KAAK,KAAK,QAAQ;QACzB,UAAU,IAAI,KAAK;QACnB,SAAS,IAAI,KAAK,CACnB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,KAA6B,EAC7B,OAA6B;IAE7B,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,gLAAgL,CACjL,CAAC;IACJ,CAAC;IACD,sIAAsI;IACtI,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,KAAK;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Options as PRetryOptions } from "p-retry";
2
+ export declare function buildRetryOptions(args: {
3
+ maxRetries: number;
4
+ abortSignal: AbortSignal | undefined;
5
+ }): PRetryOptions;
6
+ //# sourceMappingURL=retry-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-options.d.ts","sourceRoot":"","sources":["../src/retry-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,SAAS,CAAC;AAUxD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;CACtC,GAAG,aAAa,CA0BhB"}
@@ -0,0 +1,48 @@
1
+ import { ApiError } from "./errors.js";
2
+ import { isRetriableApiError } from "./provider-utils.js";
3
+ // Cap server-supplied Retry-After at 60s. A misbehaving upstream sending Retry-After: 86400
4
+ // shouldn't hang the SDK; failing fast is better than blocking the caller for hours.
5
+ const RETRY_AFTER_MAX_MS = 60_000;
6
+ // Added on top of Retry-After so a thundering herd of parallel callers don't all wake at the exact same instant.
7
+ const RETRY_AFTER_JITTER_MS = 250;
8
+ export function buildRetryOptions(args) {
9
+ return {
10
+ retries: args.maxRetries,
11
+ signal: args.abortSignal,
12
+ randomize: true,
13
+ shouldRetry: ({ error }) => !(error instanceof ApiError) || isRetriableApiError(error),
14
+ onFailedAttempt: async ({ error, retryDelay }) => {
15
+ if (!(error instanceof ApiError) ||
16
+ error.retryAfterMs == null ||
17
+ !isRetriableApiError(error)) {
18
+ return;
19
+ }
20
+ // p-retry will sleep retryDelay on its own after onFailedAttempt resolves;
21
+ // subtract it so total wait ≈ Retry-After (+ jitter), not Retry-After + retryDelay.
22
+ const target = Math.min(error.retryAfterMs, RETRY_AFTER_MAX_MS) +
23
+ Math.floor(Math.random() * RETRY_AFTER_JITTER_MS);
24
+ const wait = Math.max(0, target - retryDelay);
25
+ if (wait > 0) {
26
+ await sleep(wait, args.abortSignal);
27
+ }
28
+ },
29
+ };
30
+ }
31
+ function sleep(ms, signal) {
32
+ return new Promise((resolve, reject) => {
33
+ if (signal?.aborted) {
34
+ reject(signal.reason ?? new Error("Aborted"));
35
+ return;
36
+ }
37
+ const onAbort = () => {
38
+ clearTimeout(timer);
39
+ reject(signal?.reason ?? new Error("Aborted"));
40
+ };
41
+ const timer = setTimeout(() => {
42
+ signal?.removeEventListener("abort", onAbort);
43
+ resolve();
44
+ }, ms);
45
+ signal?.addEventListener("abort", onAbort, { once: true });
46
+ });
47
+ }
48
+ //# sourceMappingURL=retry-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-options.js","sourceRoot":"","sources":["../src/retry-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,4FAA4F;AAC5F,qFAAqF;AACrF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAClC,iHAAiH;AACjH,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,UAAU;QACxB,MAAM,EAAE,IAAI,CAAC,WAAW;QACxB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CACzB,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC,IAAI,mBAAmB,CAAC,KAAK,CAAC;QAC5D,eAAe,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;YAC/C,IACE,CAAC,CAAC,KAAK,YAAY,QAAQ,CAAC;gBAC5B,KAAK,CAAC,YAAY,IAAI,IAAI;gBAC1B,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAC3B,CAAC;gBACD,OAAO;YACT,CAAC;YACD,2EAA2E;YAC3E,oFAAoF;YACpF,MAAM,MAAM,GACV,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,kBAAkB,CAAC;gBAChD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,qBAAqB,CAAC,CAAC;YACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;YAC9C,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAA+B;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,44 +1,30 @@
1
+ import { type SpeechGatewayProvider } from "./providers/gateway/index.js";
2
+ import type { ResolvedSTTModel } from "./speech-to-text-provider.js";
1
3
  import type { WordTimestamp } from "./timestamps.js";
2
4
  export type Voice = string | {
3
5
  url: string;
4
6
  } | {
5
7
  audio: string | Uint8Array;
6
8
  };
7
- /**
8
- * A capability supported by a model. Today every feature is just an id (a
9
- * string), meaning "this model has feature X". The union also accepts an
10
- * object form `{ id, ...params }` so features that need parameters (e.g.
11
- * `timestamps` with a `mode`) can extend the type without breaking
12
- * existing string-based features.
13
- */
14
- export type Feature = string | TimestampsFeature | {
9
+ export interface StitchTurnOptions {
10
+ mediaType: string;
11
+ providerOptions: Record<string, unknown>;
12
+ }
13
+ export interface ResolvedOutputFormat {
14
+ /** The mediaType the provider will produce given those options. May or may not match user's requested format; SDK runs final conversion if not. */
15
+ expectedMediaType: string;
16
+ /** Provider-specific options to merge into the request body. */
17
+ providerOptions: Record<string, unknown>;
18
+ }
19
+ export type Feature = string | {
15
20
  readonly id: string;
16
21
  };
17
- /**
18
- * Per-model word-timestamp capability.
19
- *
20
- * - `"native"`: the TTS endpoint returns word-level alignment directly in
21
- * its response (e.g., ElevenLabs `/with-timestamps`, Cartesia SSE).
22
- * - `"derived"`: no native alignment; `timestamps: "on"` pipes the generated
23
- * audio through an STT round-trip to produce word timings. Extra cost and
24
- * latency, but works with any provider that has a usable STT API.
25
- *
26
- * Providers without any viable path (same-vendor STT missing or word-level
27
- * unavailable) declare no TIMESTAMPS feature; `timestamps: "on"` routes them
28
- * through the default `timestampProvider` (OpenAI Whisper) with a clear
29
- * error when no fallback key is configured.
30
- */
31
- export interface TimestampsFeature {
32
- readonly id: "timestamps";
33
- readonly mode: "native" | "derived";
34
- }
35
22
  export interface ModelInfo {
36
23
  readonly features: readonly Feature[];
37
24
  readonly id: string;
38
25
  readonly languages: readonly string[];
39
26
  readonly releaseDate: string;
40
27
  }
41
- /** Built-in feature ids the SDK uses. Providers may add custom strings. */
42
28
  export declare const FEATURES: {
43
29
  readonly STREAMING: "streaming";
44
30
  readonly AUDIO_TAGS: "audio-tags";
@@ -47,9 +33,6 @@ export declare const FEATURES: {
47
33
  readonly TIMESTAMPS: "timestamps";
48
34
  };
49
35
  export declare function hasFeature(model: ModelInfo, id: string): boolean;
50
- export declare function getFeature<T extends {
51
- id: string;
52
- }>(model: ModelInfo, id: string): T | undefined;
53
36
  export interface SpeechProvider<TModel extends string = string, TVoice extends Voice = Voice> {
54
37
  defaultModel: TModel;
55
38
  dialogueCapabilities?(modelId: string): {
@@ -64,13 +47,6 @@ export interface SpeechProvider<TModel extends string = string, TVoice extends V
64
47
  providerOptions?: Record<string, unknown>;
65
48
  abortSignal?: AbortSignal;
66
49
  headers?: Record<string, string>;
67
- /**
68
- * Hint from the orchestrator that the caller wants word timestamps. A
69
- * provider that supports native alignment should switch to its timestamp
70
- * endpoint (e.g., ElevenLabs `/with-timestamps`) and populate `timestamps`
71
- * in the return. Providers without native support ignore this flag; the
72
- * orchestrator then routes through an STT fallback.
73
- */
74
50
  includeTimestamps?: boolean;
75
51
  }): Promise<{
76
52
  audio: string | Uint8Array;
@@ -78,6 +54,7 @@ export interface SpeechProvider<TModel extends string = string, TVoice extends V
78
54
  mediaType: string;
79
55
  providerMetadata?: Record<string, unknown>;
80
56
  timestamps?: WordTimestamp[];
57
+ warnings?: string[];
81
58
  }>;
82
59
  generateDialogue?(options: {
83
60
  modelId: string;
@@ -88,13 +65,6 @@ export interface SpeechProvider<TModel extends string = string, TVoice extends V
88
65
  providerOptions?: Record<string, unknown>;
89
66
  abortSignal?: AbortSignal;
90
67
  headers?: Record<string, string>;
91
- /**
92
- * Hint that the caller wants word timestamps. A dialogue provider with a
93
- * native timestamp endpoint (e.g., ElevenLabs text-to-dialogue with
94
- * alignment) should switch to it and populate `timestamps` in the
95
- * return. Providers without native support ignore the flag; the
96
- * conversation orchestrator then falls back to STT on the mixed audio.
97
- */
98
68
  includeTimestamps?: boolean;
99
69
  }): Promise<{
100
70
  audio: string | Uint8Array;
@@ -103,16 +73,22 @@ export interface SpeechProvider<TModel extends string = string, TVoice extends V
103
73
  providerMetadata?: Record<string, unknown>;
104
74
  timestamps?: WordTimestamp[];
105
75
  }>;
106
- getStitchOptions?(modelId: string): {
107
- providerOptions: Record<string, unknown>;
108
- mediaType: string;
109
- } | undefined;
76
+ getStitchOptions?(modelId: string): StitchTurnOptions | undefined;
110
77
  id: string;
111
78
  models: readonly ModelInfo[];
112
79
  processAudioTags?(text: string, modelId: string): {
113
80
  text: string;
114
81
  warnings: string[];
115
82
  };
83
+ /**
84
+ * Given the user's desired output format, return the provider-specific options
85
+ * that produce the closest native match, plus the mediaType that the provider
86
+ * will return. The SDK applies a final mediabunny pass if expectedMediaType
87
+ * differs from the user's chosen format. Return `undefined` if the provider
88
+ * cannot produce any format that the SDK can convert from (i.e. only emits
89
+ * compressed audio that doesn't match the user's request).
90
+ */
91
+ resolveOutputFormat?(modelId: string, output: import("./audio-output.js").AudioOutput): ResolvedOutputFormat | undefined;
116
92
  stream?(options: {
117
93
  modelId: string;
118
94
  text: string;
@@ -128,13 +104,12 @@ export interface SpeechProvider<TModel extends string = string, TVoice extends V
128
104
  }>;
129
105
  }
130
106
  export interface ResolvedModel<TVoice extends Voice = Voice> {
107
+ fallbackSTT?: ResolvedSTTModel;
131
108
  modelId: string;
132
109
  provider: SpeechProvider<string, TVoice>;
133
110
  }
134
- /**
135
- * Returns true when the resolved model declares `{ id: "timestamps", mode: "native" }`
136
- * in its features (i.e., its TTS endpoint returns alignment data directly in the
137
- * response, no STT round-trip needed).
138
- */
111
+ export declare function isSpeechGatewayModel<V extends Voice>(model: ResolvedModel<V>): model is ResolvedModel<V> & {
112
+ provider: SpeechGatewayProvider;
113
+ };
139
114
  export declare function modelDeclaresNativeTimestamps(resolved: ResolvedModel): boolean;
140
115
  //# sourceMappingURL=speech-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"speech-provider.d.ts","sourceRoot":"","sources":["../src/speech-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"speech-provider.d.ts","sourceRoot":"","sources":["../src/speech-provider.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** Built-in feature ids the SDK uses. Providers may add custom strings. */
1
+ import { SPEECH_GATEWAY_PROVIDER_ID, } from "./providers/gateway/index.js";
2
2
  export const FEATURES = {
3
3
  STREAMING: "streaming",
4
4
  AUDIO_TAGS: "audio-tags",
@@ -7,34 +7,13 @@ export const FEATURES = {
7
7
  TIMESTAMPS: "timestamps",
8
8
  };
9
9
  export function hasFeature(model, id) {
10
- for (const f of model.features) {
11
- if (typeof f === "string" ? f === id : f.id === id) {
12
- return true;
13
- }
14
- }
15
- return false;
10
+ return model.features.some((f) => typeof f === "string" ? f === id : f.id === id);
16
11
  }
17
- export function getFeature(model, id) {
18
- for (const f of model.features) {
19
- if (typeof f !== "string" && f.id === id) {
20
- return f;
21
- }
22
- }
23
- return undefined;
12
+ export function isSpeechGatewayModel(model) {
13
+ return model.provider.id === SPEECH_GATEWAY_PROVIDER_ID;
24
14
  }
25
- /**
26
- * Returns true when the resolved model declares `{ id: "timestamps", mode: "native" }`
27
- * in its features (i.e., its TTS endpoint returns alignment data directly in the
28
- * response, no STT round-trip needed).
29
- */
30
15
  export function modelDeclaresNativeTimestamps(resolved) {
31
- // `.models` is required by the SpeechProvider interface but we use optional
32
- // chaining so tests/mocks that omit it don't crash here.
33
16
  const modelInfo = resolved.provider.models?.find((m) => m.id === resolved.modelId);
34
- if (!modelInfo) {
35
- return false;
36
- }
37
- const feature = getFeature(modelInfo, "timestamps");
38
- return feature?.mode === "native";
17
+ return modelInfo != null && hasFeature(modelInfo, FEATURES.TIMESTAMPS);
39
18
  }
40
19
  //# sourceMappingURL=speech-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"speech-provider.js","sourceRoot":"","sources":["../src/speech-provider.ts"],"names":[],"mappings":"AAuCA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,KAAgB,EAAE,EAAU;IACrD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,EAAU;IAEV,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;YACzC,OAAO,CAAM,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AA+FD;;;;GAIG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAuB;IAEvB,4EAA4E;IAC5E,yDAAyD;IACzD,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,OAAO,CACjC,CAAC;IACF,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAoB,SAAS,EAAE,YAAY,CAAC,CAAC;IACvE,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,CAAC;AACpC,CAAC"}
1
+ {"version":3,"file":"speech-provider.js","sourceRoot":"","sources":["../src/speech-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,GAE3B,MAAM,8BAA8B,CAAC;AA2BtC,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,oBAAoB,EAAE,sBAAsB;IAC5C,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;CAChB,CAAC;AAEX,MAAM,UAAU,UAAU,CAAC,KAAgB,EAAE,EAAU;IACrD,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAC/B,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAC/C,CAAC;AACJ,CAAC;AA2FD,MAAM,UAAU,oBAAoB,CAClC,KAAuB;IAEvB,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,KAAK,0BAA0B,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,QAAuB;IAEvB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAC9C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,OAAO,CACjC,CAAC;IACF,OAAO,SAAS,IAAI,IAAI,IAAI,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;AACzE,CAAC"}