@speech-sdk/core 0.7.0 → 0.8.1-alpha

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 (200) hide show
  1. package/README.md +165 -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-duration.d.ts +0 -5
  7. package/dist/audio-duration.d.ts.map +1 -1
  8. package/dist/audio-duration.js +3 -10
  9. package/dist/audio-duration.js.map +1 -1
  10. package/dist/audio-utils.d.ts +0 -10
  11. package/dist/audio-utils.d.ts.map +1 -1
  12. package/dist/audio-utils.js +2 -14
  13. package/dist/audio-utils.js.map +1 -1
  14. package/dist/captions.d.ts +0 -108
  15. package/dist/captions.d.ts.map +1 -1
  16. package/dist/captions.js +8 -98
  17. package/dist/captions.js.map +1 -1
  18. package/dist/conversation/attribute-timestamps.d.ts +26 -0
  19. package/dist/conversation/attribute-timestamps.d.ts.map +1 -0
  20. package/dist/conversation/attribute-timestamps.js +276 -0
  21. package/dist/conversation/attribute-timestamps.js.map +1 -0
  22. package/dist/conversation/dispatch.d.ts +5 -5
  23. package/dist/conversation/dispatch.d.ts.map +1 -1
  24. package/dist/conversation/dispatch.js +18 -8
  25. package/dist/conversation/dispatch.js.map +1 -1
  26. package/dist/conversation/errors.d.ts +3 -0
  27. package/dist/conversation/errors.d.ts.map +1 -1
  28. package/dist/conversation/errors.js +6 -0
  29. package/dist/conversation/errors.js.map +1 -1
  30. package/dist/conversation/pcm-concat.d.ts +0 -23
  31. package/dist/conversation/pcm-concat.d.ts.map +1 -1
  32. package/dist/conversation/pcm-concat.js +5 -43
  33. package/dist/conversation/pcm-concat.js.map +1 -1
  34. package/dist/conversation/proportional-fill.d.ts +10 -0
  35. package/dist/conversation/proportional-fill.d.ts.map +1 -0
  36. package/dist/conversation/proportional-fill.js +64 -0
  37. package/dist/conversation/proportional-fill.js.map +1 -0
  38. package/dist/conversation/silence-detection.d.ts +14 -0
  39. package/dist/conversation/silence-detection.d.ts.map +1 -0
  40. package/dist/conversation/silence-detection.js +52 -0
  41. package/dist/conversation/silence-detection.js.map +1 -0
  42. package/dist/conversation/stitch.d.ts +5 -6
  43. package/dist/conversation/stitch.d.ts.map +1 -1
  44. package/dist/conversation/stitch.js +42 -36
  45. package/dist/conversation/stitch.js.map +1 -1
  46. package/dist/conversation/types.d.ts +1 -35
  47. package/dist/conversation/types.d.ts.map +1 -1
  48. package/dist/conversation/validate.d.ts +1 -16
  49. package/dist/conversation/validate.d.ts.map +1 -1
  50. package/dist/conversation/validate.js +29 -29
  51. package/dist/conversation/validate.js.map +1 -1
  52. package/dist/default-stt-fallback.d.ts +3 -0
  53. package/dist/default-stt-fallback.d.ts.map +1 -0
  54. package/dist/default-stt-fallback.js +11 -0
  55. package/dist/default-stt-fallback.js.map +1 -0
  56. package/dist/derive-timestamps.d.ts +1 -5
  57. package/dist/derive-timestamps.d.ts.map +1 -1
  58. package/dist/derive-timestamps.js +1 -15
  59. package/dist/derive-timestamps.js.map +1 -1
  60. package/dist/errors.d.ts +5 -12
  61. package/dist/errors.d.ts.map +1 -1
  62. package/dist/errors.js +12 -14
  63. package/dist/errors.js.map +1 -1
  64. package/dist/generate-conversation.d.ts +4 -3
  65. package/dist/generate-conversation.d.ts.map +1 -1
  66. package/dist/generate-conversation.js +162 -67
  67. package/dist/generate-conversation.js.map +1 -1
  68. package/dist/generate-speech.d.ts +1 -26
  69. package/dist/generate-speech.d.ts.map +1 -1
  70. package/dist/generate-speech.js +85 -64
  71. package/dist/generate-speech.js.map +1 -1
  72. package/dist/index.d.ts +4 -11
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +5 -4
  75. package/dist/index.js.map +1 -1
  76. package/dist/logger.d.ts.map +1 -1
  77. package/dist/logger.js +2 -13
  78. package/dist/logger.js.map +1 -1
  79. package/dist/metadata.d.ts +0 -22
  80. package/dist/metadata.d.ts.map +1 -1
  81. package/dist/provider-utils.d.ts +3 -9
  82. package/dist/provider-utils.d.ts.map +1 -1
  83. package/dist/provider-utils.js +34 -51
  84. package/dist/provider-utils.js.map +1 -1
  85. package/dist/providers/cartesia/alignment.d.ts +0 -16
  86. package/dist/providers/cartesia/alignment.d.ts.map +1 -1
  87. package/dist/providers/cartesia/alignment.js +1 -6
  88. package/dist/providers/cartesia/alignment.js.map +1 -1
  89. package/dist/providers/cartesia/index.d.ts +7 -19
  90. package/dist/providers/cartesia/index.d.ts.map +1 -1
  91. package/dist/providers/cartesia/index.js +68 -80
  92. package/dist/providers/cartesia/index.js.map +1 -1
  93. package/dist/providers/deepgram/index.d.ts +7 -8
  94. package/dist/providers/deepgram/index.d.ts.map +1 -1
  95. package/dist/providers/deepgram/index.js +17 -18
  96. package/dist/providers/deepgram/index.js.map +1 -1
  97. package/dist/providers/elevenlabs/alignment.d.ts +7 -21
  98. package/dist/providers/elevenlabs/alignment.d.ts.map +1 -1
  99. package/dist/providers/elevenlabs/alignment.js +8 -9
  100. package/dist/providers/elevenlabs/alignment.js.map +1 -1
  101. package/dist/providers/elevenlabs/index.d.ts +7 -38
  102. package/dist/providers/elevenlabs/index.d.ts.map +1 -1
  103. package/dist/providers/elevenlabs/index.js +161 -169
  104. package/dist/providers/elevenlabs/index.js.map +1 -1
  105. package/dist/providers/fal/index.d.ts +7 -18
  106. package/dist/providers/fal/index.d.ts.map +1 -1
  107. package/dist/providers/fal/index.js +37 -31
  108. package/dist/providers/fal/index.js.map +1 -1
  109. package/dist/providers/fish-audio/index.d.ts +7 -8
  110. package/dist/providers/fish-audio/index.d.ts.map +1 -1
  111. package/dist/providers/fish-audio/index.js +23 -19
  112. package/dist/providers/fish-audio/index.js.map +1 -1
  113. package/dist/providers/gateway/index.d.ts +68 -0
  114. package/dist/providers/gateway/index.d.ts.map +1 -0
  115. package/dist/providers/gateway/index.js +236 -0
  116. package/dist/providers/gateway/index.js.map +1 -0
  117. package/dist/providers/google/index.d.ts +7 -20
  118. package/dist/providers/google/index.d.ts.map +1 -1
  119. package/dist/providers/google/index.js +161 -151
  120. package/dist/providers/google/index.js.map +1 -1
  121. package/dist/providers/hume/alignment.d.ts +30 -35
  122. package/dist/providers/hume/alignment.d.ts.map +1 -1
  123. package/dist/providers/hume/alignment.js +14 -8
  124. package/dist/providers/hume/alignment.js.map +1 -1
  125. package/dist/providers/hume/index.d.ts +7 -16
  126. package/dist/providers/hume/index.d.ts.map +1 -1
  127. package/dist/providers/hume/index.js +55 -65
  128. package/dist/providers/hume/index.js.map +1 -1
  129. package/dist/providers/inworld/alignment.d.ts +8 -22
  130. package/dist/providers/inworld/alignment.d.ts.map +1 -1
  131. package/dist/providers/inworld/alignment.js +9 -8
  132. package/dist/providers/inworld/alignment.js.map +1 -1
  133. package/dist/providers/inworld/index.d.ts +7 -20
  134. package/dist/providers/inworld/index.d.ts.map +1 -1
  135. package/dist/providers/inworld/index.js +47 -39
  136. package/dist/providers/inworld/index.js.map +1 -1
  137. package/dist/providers/mistral/index.d.ts +7 -8
  138. package/dist/providers/mistral/index.d.ts.map +1 -1
  139. package/dist/providers/mistral/index.js +39 -38
  140. package/dist/providers/mistral/index.js.map +1 -1
  141. package/dist/providers/murf/alignment.d.ts +10 -19
  142. package/dist/providers/murf/alignment.d.ts.map +1 -1
  143. package/dist/providers/murf/alignment.js +10 -5
  144. package/dist/providers/murf/alignment.js.map +1 -1
  145. package/dist/providers/murf/index.d.ts +7 -16
  146. package/dist/providers/murf/index.d.ts.map +1 -1
  147. package/dist/providers/murf/index.js +65 -57
  148. package/dist/providers/murf/index.js.map +1 -1
  149. package/dist/providers/openai/index.d.ts +36 -29
  150. package/dist/providers/openai/index.d.ts.map +1 -1
  151. package/dist/providers/openai/index.js +270 -106
  152. package/dist/providers/openai/index.js.map +1 -1
  153. package/dist/providers/resemble/alignment.d.ts +8 -29
  154. package/dist/providers/resemble/alignment.d.ts.map +1 -1
  155. package/dist/providers/resemble/alignment.js +9 -12
  156. package/dist/providers/resemble/alignment.js.map +1 -1
  157. package/dist/providers/resemble/index.d.ts +7 -11
  158. package/dist/providers/resemble/index.d.ts.map +1 -1
  159. package/dist/providers/resemble/index.js +54 -48
  160. package/dist/providers/resemble/index.js.map +1 -1
  161. package/dist/providers/xai/index.d.ts +7 -9
  162. package/dist/providers/xai/index.d.ts.map +1 -1
  163. package/dist/providers/xai/index.js +37 -40
  164. package/dist/providers/xai/index.js.map +1 -1
  165. package/dist/providers.d.ts +29 -0
  166. package/dist/providers.d.ts.map +1 -0
  167. package/dist/providers.js +15 -0
  168. package/dist/providers.js.map +1 -0
  169. package/dist/resolve-provider.d.ts.map +1 -1
  170. package/dist/resolve-provider.js +8 -51
  171. package/dist/resolve-provider.js.map +1 -1
  172. package/dist/speech-provider.d.ts +13 -53
  173. package/dist/speech-provider.d.ts.map +1 -1
  174. package/dist/speech-provider.js +5 -26
  175. package/dist/speech-provider.js.map +1 -1
  176. package/dist/speech-result.d.ts +8 -9
  177. package/dist/speech-result.d.ts.map +1 -1
  178. package/dist/speech-result.js.map +1 -1
  179. package/dist/speech-to-text-provider.d.ts +0 -12
  180. package/dist/speech-to-text-provider.d.ts.map +1 -1
  181. package/dist/stream-speech.d.ts.map +1 -1
  182. package/dist/stream-speech.js +2 -3
  183. package/dist/stream-speech.js.map +1 -1
  184. package/dist/timestamps.d.ts +3 -17
  185. package/dist/timestamps.d.ts.map +1 -1
  186. package/dist/turns.d.ts +9 -0
  187. package/dist/turns.d.ts.map +1 -0
  188. package/dist/turns.js +21 -0
  189. package/dist/turns.js.map +1 -0
  190. package/dist/types.d.ts +25 -0
  191. package/dist/types.d.ts.map +1 -1
  192. package/dist/volume-adjust.d.ts +0 -6
  193. package/dist/volume-adjust.d.ts.map +1 -1
  194. package/dist/volume-adjust.js +0 -6
  195. package/dist/volume-adjust.js.map +1 -1
  196. package/package.json +11 -66
  197. package/dist/stt-providers/openai/index.d.ts +0 -42
  198. package/dist/stt-providers/openai/index.d.ts.map +0 -1
  199. package/dist/stt-providers/openai/index.js +0 -184
  200. package/dist/stt-providers/openai/index.js.map +0 -1
package/dist/errors.d.ts CHANGED
@@ -6,12 +6,12 @@ export declare class SpeechSDKError extends Error {
6
6
  export declare class ApiError extends SpeechSDKError {
7
7
  readonly statusCode: number;
8
8
  readonly responseBody?: unknown;
9
- readonly model: string;
9
+ readonly code?: string;
10
10
  constructor(message: string, options: {
11
11
  statusCode: number;
12
- model: string;
13
12
  responseBody?: unknown;
14
13
  cause?: unknown;
14
+ code?: string;
15
15
  });
16
16
  }
17
17
  export declare class NoSpeechGeneratedError extends SpeechSDKError {
@@ -23,11 +23,9 @@ export declare class StreamingNotSupportedError extends SpeechSDKError {
23
23
  export declare class VolumeAdjustmentUnsupportedError extends SpeechSDKError {
24
24
  constructor(model: string);
25
25
  }
26
- /**
27
- * Thrown by `resolveApiKey` when neither the `apiKey` option nor the provider's
28
- * env var is set. Carries the provider name + env var so callers can build
29
- * their own actionable error (see `TimestampKeyMissingError`).
30
- */
26
+ export declare class GatewayInputError extends SpeechSDKError {
27
+ constructor(message: string);
28
+ }
31
29
  export declare class MissingApiKeyError extends SpeechSDKError {
32
30
  readonly providerName: string;
33
31
  readonly envVar: string;
@@ -36,11 +34,6 @@ export declare class MissingApiKeyError extends SpeechSDKError {
36
34
  envVar: string;
37
35
  });
38
36
  }
39
- /**
40
- * Thrown when `timestamps: "on"` is requested but the SDK can't obtain word
41
- * timestamps because the required API key for the fallback STT provider is
42
- * missing. Message names the env vars that would unblock the request.
43
- */
44
37
  export declare class TimestampKeyMissingError extends SpeechSDKError {
45
38
  constructor(options: {
46
39
  ttsModel: string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,qBAAa,QAAS,SAAQ,cAAc;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB;CAQJ;AAED,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,KAAK,EAAE,MAAM;CAM1B;AAED,qBAAa,gCAAiC,SAAQ,cAAc;gBACtD,KAAK,EAAE,MAAM;CAM1B;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAQ9D;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,SAAQ,cAAc;gBAC9C,OAAO,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB;CAQF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D;AAED,qBAAa,QAAS,SAAQ,cAAc;IAC1C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEhC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAGrB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf;CAQJ;AAED,qBAAa,sBAAuB,SAAQ,cAAc;gBAC5C,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED,qBAAa,0BAA2B,SAAQ,cAAc;gBAChD,KAAK,EAAE,MAAM;CAM1B;AAED,qBAAa,gCAAiC,SAAQ,cAAc;gBACtD,KAAK,EAAE,MAAM;CAM1B;AAED,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IACpD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAQ9D;AAED,qBAAa,wBAAyB,SAAQ,cAAc;gBAC9C,OAAO,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB;CASF"}
package/dist/errors.js CHANGED
@@ -7,13 +7,14 @@ export class SpeechSDKError extends Error {
7
7
  export class ApiError extends SpeechSDKError {
8
8
  statusCode;
9
9
  responseBody;
10
- model;
10
+ // RFC 7807 `code` extension; only Speech Gateway populates it today.
11
+ code;
11
12
  constructor(message, options) {
12
13
  super(message, { cause: options.cause });
13
14
  this.name = "ApiError";
14
15
  this.statusCode = options.statusCode;
15
- this.model = options.model;
16
16
  this.responseBody = options.responseBody;
17
+ this.code = options.code;
17
18
  }
18
19
  }
19
20
  export class NoSpeechGeneratedError extends SpeechSDKError {
@@ -34,11 +35,12 @@ export class VolumeAdjustmentUnsupportedError extends SpeechSDKError {
34
35
  this.name = "VolumeAdjustmentUnsupportedError";
35
36
  }
36
37
  }
37
- /**
38
- * Thrown by `resolveApiKey` when neither the `apiKey` option nor the provider's
39
- * env var is set. Carries the provider name + env var so callers can build
40
- * their own actionable error (see `TimestampKeyMissingError`).
41
- */
38
+ export class GatewayInputError extends SpeechSDKError {
39
+ constructor(message) {
40
+ super(message);
41
+ this.name = "GatewayInputError";
42
+ }
43
+ }
42
44
  export class MissingApiKeyError extends SpeechSDKError {
43
45
  providerName;
44
46
  envVar;
@@ -49,16 +51,12 @@ export class MissingApiKeyError extends SpeechSDKError {
49
51
  this.envVar = options.envVar;
50
52
  }
51
53
  }
52
- /**
53
- * Thrown when `timestamps: "on"` is requested but the SDK can't obtain word
54
- * timestamps because the required API key for the fallback STT provider is
55
- * missing. Message names the env vars that would unblock the request.
56
- */
57
54
  export class TimestampKeyMissingError extends SpeechSDKError {
58
55
  constructor(options) {
59
56
  super(`${options.ttsModel} does not return word timestamps natively. ` +
60
- `Set ${options.envVar} to enable the ${options.sttProvider} fallback, ` +
61
- `pass a configured timestampProvider, or use timestamps: 'auto' | 'off'.`);
57
+ `Set ${options.envVar} to use the default ${options.sttProvider} fallback, ` +
58
+ "or pass an explicit fallbackSTT to your provider factory " +
59
+ "(e.g. createElevenLabs({ apiKey, fallbackSTT: createOpenAI({ apiKey: '...' }).stt('whisper-1') })).");
62
60
  this.name = "TimestampKeyMissingError";
63
61
  }
64
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IACjC,UAAU,CAAS;IACnB,YAAY,CAAW;IACvB,KAAK,CAAS;IAEvB,YACE,OAAe,EACf,OAKC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IAC5D,YAAY,KAAa;QACvB,KAAK,CACH,iCAAiC,KAAK,iCAAiC,CACxE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,cAAc;IAClE,YAAY,KAAa;QACvB,KAAK,CACH,kCAAkC,KAAK,gEAAgE,CACxG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAC3C,YAAY,CAAS;IACrB,MAAM,CAAS;IAExB,YAAY,OAAiD;QAC3D,KAAK,CACH,GAAG,OAAO,CAAC,YAAY,8DAA8D,OAAO,CAAC,MAAM,wBAAwB,CAC5H,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAC1D,YAAY,OAIX;QACC,KAAK,CACH,GAAG,OAAO,CAAC,QAAQ,6CAA6C;YAC9D,OAAO,OAAO,CAAC,MAAM,kBAAkB,OAAO,CAAC,WAAW,aAAa;YACvE,yEAAyE,CAC5E,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC,YAAY,OAAe,EAAE,OAA6B;QACxD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,cAAc;IACjC,UAAU,CAAS;IACnB,YAAY,CAAW;IAChC,qEAAqE;IAC5D,IAAI,CAAU;IAEvB,YACE,OAAe,EACf,OAKC;QAED,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACxD,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;IACvC,CAAC;CACF;AAED,MAAM,OAAO,0BAA2B,SAAQ,cAAc;IAC5D,YAAY,KAAa;QACvB,KAAK,CACH,iCAAiC,KAAK,iCAAiC,CACxE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,gCAAiC,SAAQ,cAAc;IAClE,YAAY,KAAa;QACvB,KAAK,CACH,kCAAkC,KAAK,gEAAgE,CACxG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,kCAAkC,CAAC;IACjD,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAC3C,YAAY,CAAS;IACrB,MAAM,CAAS;IAExB,YAAY,OAAiD;QAC3D,KAAK,CACH,GAAG,OAAO,CAAC,YAAY,8DAA8D,OAAO,CAAC,MAAM,wBAAwB,CAC5H,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAC1D,YAAY,OAIX;QACC,KAAK,CACH,GAAG,OAAO,CAAC,QAAQ,6CAA6C;YAC9D,OAAO,OAAO,CAAC,MAAM,uBAAuB,OAAO,CAAC,WAAW,aAAa;YAC5E,2DAA2D;YAC3D,qGAAqG,CACxG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF"}
@@ -1,7 +1,8 @@
1
1
  import type { GenerateConversationOptions } from "./conversation/types.js";
2
2
  import { type Voice } from "./speech-provider.js";
3
- import type { SpeechResult } from "./speech-result.js";
4
- export { ConversationInputError, DialogueConstraintError, StitchUnsupportedError, } from "./conversation/errors.js";
3
+ import type { ConversationResult } from "./speech-result.js";
4
+ export { ConversationInputError, DialogueConstraintError, MixedDispatchError, StitchUnsupportedError, } from "./conversation/errors.js";
5
5
  export type { ConversationTurn, GenerateConversationOptions, } from "./conversation/types.js";
6
- export declare function generateConversation<V extends Voice = Voice>(options: GenerateConversationOptions<V>): Promise<SpeechResult>;
6
+ export type { ConversationMetadata, ConversationResult, } from "./speech-result.js";
7
+ export declare function generateConversation<V extends Voice = Voice>(options: GenerateConversationOptions<V>): Promise<ConversationResult>;
7
8
  //# sourceMappingURL=generate-conversation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-conversation.d.ts","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAO3E,OAAO,EAGL,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMvD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AAMjC,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAChE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACtC,OAAO,CAAC,YAAY,CAAC,CAwFvB"}
1
+ {"version":3,"file":"generate-conversation.d.ts","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,2BAA2B,EAC5B,MAAM,yBAAyB,CAAC;AAUjC,OAAO,EAGL,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAM5B,wBAAsB,oBAAoB,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAChE,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACtC,OAAO,CAAC,kBAAkB,CAAC,CAyG7B"}
@@ -3,37 +3,63 @@ import { computeAudioDuration } from "./audio-duration.js";
3
3
  import { chooseConversationPath } from "./conversation/dispatch.js";
4
4
  import { ConversationInputError } from "./conversation/errors.js";
5
5
  import { validateConversationInput } from "./conversation/validate.js";
6
+ import { getDefaultSTTFallback } from "./default-stt-fallback.js";
6
7
  import { deriveTimestampsViaSTT } from "./derive-timestamps.js";
7
8
  import { ApiError, NoSpeechGeneratedError } from "./errors.js";
8
9
  import { debug } from "./logger.js";
10
+ import { isRetriableApiError } from "./provider-utils.js";
9
11
  import { resolveModel } from "./resolve-provider.js";
10
12
  import { modelDeclaresNativeTimestamps, } from "./speech-provider.js";
11
13
  import { DefaultGeneratedAudioFile } from "./speech-result.js";
12
14
  // biome-ignore lint/performance/noBarrelFile: public entry point — re-export error classes so callers get fn + types + errors from one import
13
- export { ConversationInputError, DialogueConstraintError, StitchUnsupportedError, } from "./conversation/errors.js";
15
+ export { ConversationInputError, DialogueConstraintError, MixedDispatchError, StitchUnsupportedError, } from "./conversation/errors.js";
14
16
  const DEFAULT_GAP_MS = 300;
15
17
  const DEFAULT_MAX_CONCURRENCY = 6;
16
18
  const DEFAULT_MAX_RETRIES = 2;
17
19
  export async function generateConversation(options) {
18
20
  validateConversationInput(options);
21
+ // Cache string-model resolutions so turns share one provider instance — dispatch compares by reference.
22
+ const stringResolutionCache = new Map();
23
+ const resolveOnce = (model) => {
24
+ if (typeof model !== "string") {
25
+ return resolveModel(model, {
26
+ apiKey: options.apiKey,
27
+ });
28
+ }
29
+ const cached = stringResolutionCache.get(model);
30
+ if (cached) {
31
+ return cached;
32
+ }
33
+ const fresh = resolveModel(model, {
34
+ apiKey: options.apiKey,
35
+ });
36
+ stringResolutionCache.set(model, fresh);
37
+ return fresh;
38
+ };
39
+ const topLevelResolved = options.model == null ? undefined : resolveOnce(options.model);
19
40
  const resolvedPerTurn = options.turns.map((turn) => {
20
- const model = turn.model ?? options.model;
41
+ if (turn.model == null && topLevelResolved) {
42
+ return topLevelResolved;
43
+ }
44
+ const model = turn.model;
21
45
  if (!model) {
22
46
  throw new Error("generateConversation: model is required");
23
47
  }
24
- return resolveModel(model, { apiKey: options.apiKey });
48
+ return resolveOnce(model);
25
49
  });
26
50
  const path = chooseConversationPath({
27
51
  resolvedPerTurn,
28
52
  turns: options.turns,
29
53
  });
54
+ if (path.kind === "gateway") {
55
+ return await runGateway({
56
+ options,
57
+ resolvedPerTurn: path.resolvedPerTurn,
58
+ maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
59
+ });
60
+ }
30
61
  if (path.kind === "native") {
31
- // The native-dialogue path renders the entire script in a single provider
32
- // API call, so per-turn providerOptions have no well-defined meaning —
33
- // silently collapsing them to a single blob would lie to the caller. Fail
34
- // loudly and let them move providerOptions to the top level (where it's
35
- // forwarded once to the dialogue call) or pick a model that routes
36
- // through the stitch path.
62
+ // Native-dialogue is one API call; per-turn providerOptions can't be honored — fail loudly.
37
63
  const turnWithOpts = options.turns.findIndex((t) => t.providerOptions !== undefined);
38
64
  if (turnWithOpts !== -1) {
39
65
  throw new ConversationInputError(`turns[${turnWithOpts}].providerOptions is set, but ${path.resolved.provider.id}/${path.resolved.modelId} dispatched to the native dialogue path, which renders all turns in one API call. Per-turn providerOptions are not supported on this path; move them to the top-level providerOptions instead.`);
@@ -44,9 +70,7 @@ export async function generateConversation(options) {
44
70
  maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
45
71
  });
46
72
  }
47
- // Lazy-load the stitch pipeline so callers whose dispatch always picks
48
- // native (e.g. a Jellypod gateway provider that handles concatenation
49
- // server-side) never bundle pcm-concat / audio-utils / mediabunny WAV mux.
73
+ // Lazy-load so native-only callers don't bundle pcm-concat / mediabunny.
50
74
  const { runStitch } = await import("./conversation/stitch.js");
51
75
  const stitched = await runStitch({
52
76
  resolvedPerTurn,
@@ -57,26 +81,21 @@ export async function generateConversation(options) {
57
81
  gapMs: options.gapMs ?? DEFAULT_GAP_MS,
58
82
  maxConcurrency: options.maxConcurrency ?? DEFAULT_MAX_CONCURRENCY,
59
83
  maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,
60
- normalizeVolume: options.normalizeVolume ?? true,
61
84
  volumeDbfs: options.volumeDbfs,
62
85
  abortSignal: options.abortSignal,
63
86
  headers: options.headers,
64
- timestamps: options.timestamps ?? "auto",
65
- timestampProvider: options.timestampProvider,
87
+ timestamps: options.timestamps ?? false,
66
88
  });
67
89
  if (stitched.audio.length === 0) {
68
90
  throw new NoSpeechGeneratedError();
69
91
  }
70
- const providers = Array.from(new Set(resolvedPerTurn.map((r) => r.provider.id)));
71
- const models = Array.from(new Set(resolvedPerTurn.map((r) => r.modelId)));
72
92
  const metadata = {
73
93
  latencyMs: stitched.metadata.latencyMs,
74
94
  inputChars: stitched.metadata.inputChars,
75
- provider: providers.length === 1 ? providers[0] : providers.join(","),
76
- model: models.length === 1 ? models[0] : models.join(","),
77
95
  ...(stitched.metadata.audioDurationMs != null && {
78
96
  audioDurationMs: stitched.metadata.audioDurationMs,
79
97
  }),
98
+ perTurn: stitched.metadataPerTurn,
80
99
  };
81
100
  return {
82
101
  audio: new DefaultGeneratedAudioFile({
@@ -89,6 +108,75 @@ export async function generateConversation(options) {
89
108
  timestamps: stitched.timestamps,
90
109
  };
91
110
  }
111
+ async function runGateway(args) {
112
+ const { options, resolvedPerTurn, maxRetries } = args;
113
+ const start = performance.now();
114
+ const provider = resolvedPerTurn[0]
115
+ .provider;
116
+ const includeTimestamps = options.timestamps ?? false;
117
+ // Pick wire shape: shared model when every turn resolved to the same modelId
118
+ // (covers both `options.model` and the case where every turn happened to
119
+ // resolve identically); per-turn model when they diverge.
120
+ const firstModelId = resolvedPerTurn[0].modelId;
121
+ const allSameModel = resolvedPerTurn.every((r) => r.modelId === firstModelId);
122
+ // Object-shaped voices aren't supported on the gateway conversation path.
123
+ const wireTurns = options.turns.map((t, i) => {
124
+ if (typeof t.voice !== "string") {
125
+ throw new Error(`speech-gateway/conversation: gateway conversation path requires string voices; turns[${i}].voice is an object.`);
126
+ }
127
+ return {
128
+ ...(allSameModel ? {} : { model: resolvedPerTurn[i].modelId }),
129
+ voice: t.voice,
130
+ text: t.text,
131
+ ...(t.providerOptions && { providerOptions: t.providerOptions }),
132
+ };
133
+ });
134
+ const result = await pRetry(() => provider.generateConversation({
135
+ ...(allSameModel && { modelId: firstModelId }),
136
+ turns: wireTurns,
137
+ gapMs: options.gapMs ?? DEFAULT_GAP_MS,
138
+ volumeDbfs: options.volumeDbfs,
139
+ providerOptions: options.providerOptions,
140
+ abortSignal: options.abortSignal,
141
+ headers: options.headers,
142
+ includeTimestamps,
143
+ }), {
144
+ retries: maxRetries,
145
+ signal: options.abortSignal,
146
+ shouldRetry: ({ error }) => {
147
+ if (error instanceof ApiError && !isRetriableApiError(error)) {
148
+ return false;
149
+ }
150
+ return true;
151
+ },
152
+ });
153
+ const latencyMs = Math.round(performance.now() - start);
154
+ if (result.audio.length === 0) {
155
+ throw new NoSpeechGeneratedError();
156
+ }
157
+ const audio = new DefaultGeneratedAudioFile({
158
+ data: result.audio,
159
+ mediaType: result.mediaType,
160
+ });
161
+ const audioDurationMs = await computeAudioDuration(audio.uint8Array, result.mediaType);
162
+ const timestamps = includeTimestamps ? (result.timestamps ?? []) : undefined;
163
+ const warnings = result.warnings;
164
+ const inputChars = options.turns.reduce((n, t) => n + t.text.length, 0);
165
+ const metadata = {
166
+ latencyMs,
167
+ inputChars,
168
+ ...(audioDurationMs != null && { audioDurationMs }),
169
+ };
170
+ return {
171
+ audio,
172
+ metadata,
173
+ ...(result.providerMetadata !== undefined && {
174
+ providerMetadata: result.providerMetadata,
175
+ }),
176
+ timestamps,
177
+ warnings: warnings && warnings.length > 0 ? warnings : undefined,
178
+ };
179
+ }
92
180
  async function runNative(args) {
93
181
  const { options, resolved, maxRetries } = args;
94
182
  const start = performance.now();
@@ -96,42 +184,28 @@ async function runNative(args) {
96
184
  throw new Error(`generateConversation: ${resolved.provider.id}/${resolved.modelId} dispatched to native but generateDialogue missing`);
97
185
  }
98
186
  const generateDialogue = resolved.provider.generateDialogue.bind(resolved.provider);
99
- // When normalization is requested and the provider exposes a decodable
100
- // PCM/WAV mode via getStitchOptions, force the dialogue request into that
101
- // mode so we can re-RMS-level the output. Otherwise the dialogue runs
102
- // unchanged and emerges in whatever format the provider mixes natively
103
- // (often MP3) — we surface that via a warning.
104
- const normalize = options.normalizeVolume ?? true;
105
- const stitchOpts = normalize
106
- ? resolved.provider.getStitchOptions?.(resolved.modelId)
107
- : undefined;
187
+ // Force decodable PCM/WAV via getStitchOptions for normalization; if unavailable, emit the provider's mixed audio and warn.
188
+ const stitchOpts = resolved.provider.getStitchOptions?.(resolved.modelId);
108
189
  const warnings = [];
109
- if (normalize && !stitchOpts) {
110
- warnings.push(`${resolved.provider.id}/${resolved.modelId}: native dialogue path returns the provider's mixed audio without volume normalization. Pass normalizeVolume:false to silence this warning.`);
190
+ if (!stitchOpts) {
191
+ warnings.push(`${resolved.provider.id}/${resolved.modelId}: native dialogue path returns the provider's mixed audio without volume normalization (no decodable PCM/WAV mode).`);
111
192
  }
112
- // Stitch-mode options are applied last so they override user-supplied
113
- // providerOptions that would otherwise break the decoder (e.g. a caller
114
- // requesting `response_format: "mp3"` while normalization is on). Same
115
- // precedence as the stitch path's per-turn merge.
193
+ // Stitch options must win caller-supplied response_format would break the decoder.
116
194
  const dialogueProviderOptions = stitchOpts
117
195
  ? { ...options.providerOptions, ...stitchOpts.providerOptions }
118
196
  : options.providerOptions;
119
- const timestampMode = options.timestamps ?? "auto";
197
+ const requestTimestamps = options.timestamps ?? false;
120
198
  const hasNativeDialogueTimestamps = modelDeclaresNativeTimestamps(resolved);
121
- const shouldRequestNative = (timestampMode === "on" || timestampMode === "auto") &&
122
- hasNativeDialogueTimestamps;
199
+ const shouldRequestNative = requestTimestamps && hasNativeDialogueTimestamps;
123
200
  const dialogueId = `${resolved.provider.id}/${resolved.modelId}`;
124
- if (timestampMode === "off") {
125
- debug(`${dialogueId} (dialogue): timestamps: "off" — skipping alignment.`);
201
+ if (!requestTimestamps) {
202
+ debug(`${dialogueId} (dialogue): timestamps: false — skipping alignment.`);
126
203
  }
127
204
  else if (shouldRequestNative) {
128
- debug(`${dialogueId} (dialogue): timestamps: "${timestampMode}" — requesting native dialogue alignment.`);
129
- }
130
- else if (timestampMode === "auto") {
131
- debug(`${dialogueId} (dialogue): timestamps: "auto" — dialogue endpoint has no native alignment; skipping. Pass timestamps: "on" to derive from the mixed audio via STT (flat list, no speaker labels).`);
205
+ debug(`${dialogueId} (dialogue): timestamps: true — requesting native dialogue alignment.`);
132
206
  }
133
207
  else {
134
- debug(`${dialogueId} (dialogue): timestamps: "on" but no native dialogue alignment — will transcribe mixed audio via STT after rendering (adds a round-trip).`);
208
+ debug(`${dialogueId} (dialogue): timestamps: true but no native dialogue alignment — will transcribe mixed audio via STT after rendering (adds a round-trip).`);
135
209
  }
136
210
  const result = await pRetry(() => generateDialogue({
137
211
  modelId: resolved.modelId,
@@ -144,7 +218,7 @@ async function runNative(args) {
144
218
  retries: maxRetries,
145
219
  signal: options.abortSignal,
146
220
  shouldRetry: ({ error }) => {
147
- if (error instanceof ApiError && error.statusCode < 500) {
221
+ if (error instanceof ApiError && !isRetriableApiError(error)) {
148
222
  return false;
149
223
  }
150
224
  return true;
@@ -155,8 +229,7 @@ async function runNative(args) {
155
229
  throw new NoSpeechGeneratedError();
156
230
  }
157
231
  let audioBytes = result.audio;
158
- // Prefer the stitch-mode mediaType over the provider's response header;
159
- // some providers (e.g. Hume) omit the sample rate from content-type.
232
+ // Hume and others omit sample rate from content-type; prefer stitch mediaType.
160
233
  let outputMediaType = stitchOpts?.mediaType ?? result.mediaType;
161
234
  if (stitchOpts) {
162
235
  const { adjustVolume } = await import("./volume-adjust.js");
@@ -173,54 +246,76 @@ async function runNative(args) {
173
246
  });
174
247
  const computedDuration = await computeAudioDuration(audio.uint8Array, outputMediaType);
175
248
  const audioDurationMs = computedDuration ?? result.audioDurationMs;
176
- const timestamps = await resolveNativeDialogueTimestamps({
177
- timestampMode,
249
+ const { timestamps, warnings: attributionWarnings } = await resolveNativeDialogueTimestamps({
250
+ requestTimestamps,
178
251
  nativeTimestamps: result.timestamps,
179
252
  audio: audio.uint8Array,
180
253
  mediaType: outputMediaType,
181
254
  ttsModel: `${resolved.provider.id}/${resolved.modelId}`,
182
- timestampProvider: options.timestampProvider,
255
+ resolved,
183
256
  abortSignal: options.abortSignal,
257
+ turns: options.turns,
184
258
  });
185
259
  const inputChars = options.turns.reduce((n, t) => n + t.text.length, 0);
186
260
  const metadata = {
187
261
  latencyMs,
188
262
  inputChars,
189
- provider: resolved.provider.id,
190
- model: resolved.modelId,
191
263
  ...(audioDurationMs != null && { audioDurationMs }),
192
264
  };
265
+ const mergedWarnings = warnings.length > 0 || attributionWarnings.length > 0
266
+ ? [...warnings, ...attributionWarnings]
267
+ : undefined;
193
268
  return {
194
269
  audio,
195
270
  metadata,
196
271
  providerMetadata: result.providerMetadata,
197
- warnings: warnings.length > 0 ? warnings : undefined,
272
+ warnings: mergedWarnings,
198
273
  timestamps,
199
274
  };
200
275
  }
201
- // Resolves timestamps for the native dialogue path:
202
- // - "off" → undefined
203
- // - native alignment returned → pass through
204
- // - "on" without native → STT fallback on the mixed audio
205
- // (flat WordTimestamp[] without speaker labels — limitation of one-call
206
- // dialogue rendering)
207
- // - "auto" without native → undefined
208
276
  async function resolveNativeDialogueTimestamps(args) {
209
- if (args.timestampMode === "off") {
210
- return;
277
+ if (!args.requestTimestamps) {
278
+ return { timestamps: undefined, warnings: [] };
211
279
  }
280
+ // Either use native flat timestamps, or derive via STT fallback.
281
+ let flatTimestamps;
212
282
  if (args.nativeTimestamps && args.nativeTimestamps.length > 0) {
213
- return args.nativeTimestamps;
283
+ flatTimestamps = args.nativeTimestamps;
214
284
  }
215
- if (args.timestampMode === "on") {
216
- return await deriveTimestampsViaSTT({
285
+ else {
286
+ const fallback = args.resolved.fallbackSTT ?? (await getDefaultSTTFallback());
287
+ flatTimestamps = await deriveTimestampsViaSTT({
217
288
  ttsModel: args.ttsModel,
218
289
  audio: args.audio,
219
290
  mediaType: args.mediaType,
220
- timestampProvider: args.timestampProvider,
291
+ timestampFallback: fallback,
221
292
  abortSignal: args.abortSignal,
222
293
  });
223
294
  }
224
- return;
295
+ const { decodeToPcm16 } = await import("./conversation/pcm-concat.js");
296
+ const { detectSilenceGaps } = await import("./conversation/silence-detection.js");
297
+ const { attributeTimestamps } = await import("./conversation/attribute-timestamps.js");
298
+ let silenceGaps = [];
299
+ try {
300
+ const segment = decodeToPcm16(args.audio, args.mediaType);
301
+ const gaps = detectSilenceGaps(segment.pcm, {
302
+ sampleRate: segment.sampleRate,
303
+ minDurationMs: 150,
304
+ });
305
+ silenceGaps = gaps;
306
+ }
307
+ catch {
308
+ // Decoder couldn't read the audio (e.g., compressed format we can't decode locally).
309
+ // Tier 1 will be skipped; dispatcher falls through to Tier 2/3.
310
+ }
311
+ const result = attributeTimestamps({
312
+ timestamps: flatTimestamps,
313
+ turnTexts: args.turns.map((t) => t.text),
314
+ silenceGaps,
315
+ });
316
+ return {
317
+ timestamps: result.timestamps,
318
+ warnings: result.warnings,
319
+ };
225
320
  }
226
321
  //# sourceMappingURL=generate-conversation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-conversation.js","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate-conversation.js","sourceRoot":"","sources":["../src/generate-conversation.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,5 @@
1
1
  import { type ResolvedModel, type Voice } from "./speech-provider.js";
2
2
  import type { SpeechResult } from "./speech-result.js";
3
- import type { ResolvedSTTModel } from "./speech-to-text-provider.js";
4
- import type { TimestampMode } from "./timestamps.js";
5
3
  export declare function generateSpeech<V extends Voice = Voice>(options: {
6
4
  model: string | ResolvedModel<V>;
7
5
  text: string;
@@ -11,30 +9,7 @@ export declare function generateSpeech<V extends Voice = Voice>(options: {
11
9
  maxRetries?: number;
12
10
  abortSignal?: AbortSignal;
13
11
  headers?: Record<string, string>;
14
- /**
15
- * RMS-normalize the returned audio to this dBFS level. Must be ≤ 0.
16
- * When set, generateSpeech requests the provider's decodable PCM/WAV
17
- * output mode (via `getStitchOptions`), normalizes the samples to the
18
- * target loudness, and re-encodes the result as 16-bit mono WAV — so
19
- * the response `mediaType` will be `audio/wav` regardless of the
20
- * provider's native default. Throws `VolumeAdjustmentUnsupportedError`
21
- * if the provider doesn't expose a decodable output mode.
22
- */
23
12
  volumeDbfs?: number;
24
- /**
25
- * Controls whether the returned `SpeechResult` includes word-level
26
- * timestamps. Default `"auto"` — return natively when the TTS provider
27
- * supplies alignment, otherwise omit. `"on"` forces word timestamps
28
- * (falling back to STT round-trip when necessary). `"off"` suppresses
29
- * them even for providers that would return them free.
30
- */
31
- timestamps?: TimestampMode;
32
- /**
33
- * Override the STT provider used for the derived-timestamps path. Construct
34
- * via a factory (e.g. `createOpenAISTT({ apiKey })("whisper-1")`). Only
35
- * consulted when timestamps are requested AND the TTS provider can't supply
36
- * them natively. Defaults to OpenAI Whisper read from `OPENAI_API_KEY`.
37
- */
38
- timestampProvider?: ResolvedSTTModel;
13
+ timestamps?: boolean;
39
14
  }): Promise<SpeechResult>;
40
15
  //# sourceMappingURL=generate-speech.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-speech.d.ts","sourceRoot":"","sources":["../src/generate-speech.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAEpE,wBAAsB,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,OAAO,EAAE;IACrE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;CACtC,GAAG,OAAO,CAAC,YAAY,CAAC,CAuJxB"}
1
+ {"version":3,"file":"generate-speech.d.ts","sourceRoot":"","sources":["../src/generate-speech.ts"],"names":[],"mappings":"AAcA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKvD,wBAAsB,cAAc,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,EAAE,OAAO,EAAE;IACrE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,CAAC;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAoJxB"}