@pico-brief/speech-services 1.0.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 (242) hide show
  1. package/README.md +177 -0
  2. package/dist/audio-sampler.d.ts +9 -0
  3. package/dist/audio-sampler.d.ts.map +1 -0
  4. package/dist/audio-sampler.js +135 -0
  5. package/dist/audio-sampler.js.map +1 -0
  6. package/dist/client.d.ts +3 -0
  7. package/dist/client.d.ts.map +1 -0
  8. package/dist/client.js +23 -0
  9. package/dist/client.js.map +1 -0
  10. package/dist/detect-locale.d.ts +3 -0
  11. package/dist/detect-locale.d.ts.map +1 -0
  12. package/dist/detect-locale.js +73 -0
  13. package/dist/detect-locale.js.map +1 -0
  14. package/dist/errors.d.ts +7 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +13 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/fetch-voices.d.ts +3 -0
  19. package/dist/fetch-voices.d.ts.map +1 -0
  20. package/dist/fetch-voices.js +50 -0
  21. package/dist/fetch-voices.js.map +1 -0
  22. package/dist/index.d.ts +10 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +12 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/providers/assemblyai/index.d.ts +2 -0
  27. package/dist/providers/assemblyai/index.d.ts.map +1 -0
  28. package/dist/providers/assemblyai/index.js +2 -0
  29. package/dist/providers/assemblyai/index.js.map +1 -0
  30. package/dist/providers/assemblyai/transcribe.d.ts +3 -0
  31. package/dist/providers/assemblyai/transcribe.d.ts.map +1 -0
  32. package/dist/providers/assemblyai/transcribe.js +92 -0
  33. package/dist/providers/assemblyai/transcribe.js.map +1 -0
  34. package/dist/providers/assemblyai/types.d.ts +18 -0
  35. package/dist/providers/assemblyai/types.d.ts.map +1 -0
  36. package/dist/providers/assemblyai/types.js +2 -0
  37. package/dist/providers/assemblyai/types.js.map +1 -0
  38. package/dist/providers/azure/batch-transcribe.d.ts +3 -0
  39. package/dist/providers/azure/batch-transcribe.d.ts.map +1 -0
  40. package/dist/providers/azure/batch-transcribe.js +118 -0
  41. package/dist/providers/azure/batch-transcribe.js.map +1 -0
  42. package/dist/providers/azure/detect-languages.d.ts +3 -0
  43. package/dist/providers/azure/detect-languages.d.ts.map +1 -0
  44. package/dist/providers/azure/detect-languages.js +15 -0
  45. package/dist/providers/azure/detect-languages.js.map +1 -0
  46. package/dist/providers/azure/fetch-voices.d.ts +3 -0
  47. package/dist/providers/azure/fetch-voices.d.ts.map +1 -0
  48. package/dist/providers/azure/fetch-voices.js +22 -0
  49. package/dist/providers/azure/fetch-voices.js.map +1 -0
  50. package/dist/providers/azure/helpers.d.ts +2 -0
  51. package/dist/providers/azure/helpers.d.ts.map +1 -0
  52. package/dist/providers/azure/helpers.js +9 -0
  53. package/dist/providers/azure/helpers.js.map +1 -0
  54. package/dist/providers/azure/index.d.ts +5 -0
  55. package/dist/providers/azure/index.d.ts.map +1 -0
  56. package/dist/providers/azure/index.js +5 -0
  57. package/dist/providers/azure/index.js.map +1 -0
  58. package/dist/providers/azure/synthesize.d.ts +3 -0
  59. package/dist/providers/azure/synthesize.d.ts.map +1 -0
  60. package/dist/providers/azure/synthesize.js +57 -0
  61. package/dist/providers/azure/synthesize.js.map +1 -0
  62. package/dist/providers/azure/transcribe.d.ts +5 -0
  63. package/dist/providers/azure/transcribe.d.ts.map +1 -0
  64. package/dist/providers/azure/transcribe.js +75 -0
  65. package/dist/providers/azure/transcribe.js.map +1 -0
  66. package/dist/providers/azure/types.d.ts +48 -0
  67. package/dist/providers/azure/types.d.ts.map +1 -0
  68. package/dist/providers/azure/types.js +2 -0
  69. package/dist/providers/azure/types.js.map +1 -0
  70. package/dist/providers/cartesia/fetch-voices.d.ts +3 -0
  71. package/dist/providers/cartesia/fetch-voices.d.ts.map +1 -0
  72. package/dist/providers/cartesia/fetch-voices.js +37 -0
  73. package/dist/providers/cartesia/fetch-voices.js.map +1 -0
  74. package/dist/providers/cartesia/index.d.ts +3 -0
  75. package/dist/providers/cartesia/index.d.ts.map +1 -0
  76. package/dist/providers/cartesia/index.js +3 -0
  77. package/dist/providers/cartesia/index.js.map +1 -0
  78. package/dist/providers/cartesia/synthesize.d.ts +3 -0
  79. package/dist/providers/cartesia/synthesize.d.ts.map +1 -0
  80. package/dist/providers/cartesia/synthesize.js +54 -0
  81. package/dist/providers/cartesia/synthesize.js.map +1 -0
  82. package/dist/providers/cartesia/types.d.ts +14 -0
  83. package/dist/providers/cartesia/types.d.ts.map +1 -0
  84. package/dist/providers/cartesia/types.js +3 -0
  85. package/dist/providers/cartesia/types.js.map +1 -0
  86. package/dist/providers/deepgram/fetch-voices.d.ts +3 -0
  87. package/dist/providers/deepgram/fetch-voices.d.ts.map +1 -0
  88. package/dist/providers/deepgram/fetch-voices.js +27 -0
  89. package/dist/providers/deepgram/fetch-voices.js.map +1 -0
  90. package/dist/providers/deepgram/index.d.ts +4 -0
  91. package/dist/providers/deepgram/index.d.ts.map +1 -0
  92. package/dist/providers/deepgram/index.js +4 -0
  93. package/dist/providers/deepgram/index.js.map +1 -0
  94. package/dist/providers/deepgram/synthesize.d.ts +3 -0
  95. package/dist/providers/deepgram/synthesize.d.ts.map +1 -0
  96. package/dist/providers/deepgram/synthesize.js +31 -0
  97. package/dist/providers/deepgram/synthesize.js.map +1 -0
  98. package/dist/providers/deepgram/transcribe.d.ts +3 -0
  99. package/dist/providers/deepgram/transcribe.d.ts.map +1 -0
  100. package/dist/providers/deepgram/transcribe.js +53 -0
  101. package/dist/providers/deepgram/transcribe.js.map +1 -0
  102. package/dist/providers/deepgram/types.d.ts +39 -0
  103. package/dist/providers/deepgram/types.d.ts.map +1 -0
  104. package/dist/providers/deepgram/types.js +2 -0
  105. package/dist/providers/deepgram/types.js.map +1 -0
  106. package/dist/providers/elevenlabs/fetch-voices.d.ts +3 -0
  107. package/dist/providers/elevenlabs/fetch-voices.d.ts.map +1 -0
  108. package/dist/providers/elevenlabs/fetch-voices.js +27 -0
  109. package/dist/providers/elevenlabs/fetch-voices.js.map +1 -0
  110. package/dist/providers/elevenlabs/index.d.ts +4 -0
  111. package/dist/providers/elevenlabs/index.d.ts.map +1 -0
  112. package/dist/providers/elevenlabs/index.js +4 -0
  113. package/dist/providers/elevenlabs/index.js.map +1 -0
  114. package/dist/providers/elevenlabs/synthesize.d.ts +3 -0
  115. package/dist/providers/elevenlabs/synthesize.d.ts.map +1 -0
  116. package/dist/providers/elevenlabs/synthesize.js +43 -0
  117. package/dist/providers/elevenlabs/synthesize.js.map +1 -0
  118. package/dist/providers/elevenlabs/transcribe.d.ts +3 -0
  119. package/dist/providers/elevenlabs/transcribe.d.ts.map +1 -0
  120. package/dist/providers/elevenlabs/transcribe.js +50 -0
  121. package/dist/providers/elevenlabs/transcribe.js.map +1 -0
  122. package/dist/providers/elevenlabs/types.d.ts +24 -0
  123. package/dist/providers/elevenlabs/types.d.ts.map +1 -0
  124. package/dist/providers/elevenlabs/types.js +2 -0
  125. package/dist/providers/elevenlabs/types.js.map +1 -0
  126. package/dist/providers/google/fetch-voices.d.ts +3 -0
  127. package/dist/providers/google/fetch-voices.d.ts.map +1 -0
  128. package/dist/providers/google/fetch-voices.js +28 -0
  129. package/dist/providers/google/fetch-voices.js.map +1 -0
  130. package/dist/providers/google/helpers.d.ts +10 -0
  131. package/dist/providers/google/helpers.d.ts.map +1 -0
  132. package/dist/providers/google/helpers.js +15 -0
  133. package/dist/providers/google/helpers.js.map +1 -0
  134. package/dist/providers/google/index.d.ts +4 -0
  135. package/dist/providers/google/index.d.ts.map +1 -0
  136. package/dist/providers/google/index.js +4 -0
  137. package/dist/providers/google/index.js.map +1 -0
  138. package/dist/providers/google/synthesize.d.ts +3 -0
  139. package/dist/providers/google/synthesize.d.ts.map +1 -0
  140. package/dist/providers/google/synthesize.js +35 -0
  141. package/dist/providers/google/synthesize.js.map +1 -0
  142. package/dist/providers/google/transcribe.d.ts +3 -0
  143. package/dist/providers/google/transcribe.d.ts.map +1 -0
  144. package/dist/providers/google/transcribe.js +117 -0
  145. package/dist/providers/google/transcribe.js.map +1 -0
  146. package/dist/providers/google/types.d.ts +43 -0
  147. package/dist/providers/google/types.d.ts.map +1 -0
  148. package/dist/providers/google/types.js +3 -0
  149. package/dist/providers/google/types.js.map +1 -0
  150. package/dist/providers/openai/fetch-voices.d.ts +3 -0
  151. package/dist/providers/openai/fetch-voices.d.ts.map +1 -0
  152. package/dist/providers/openai/fetch-voices.js +14 -0
  153. package/dist/providers/openai/fetch-voices.js.map +1 -0
  154. package/dist/providers/openai/index.d.ts +4 -0
  155. package/dist/providers/openai/index.d.ts.map +1 -0
  156. package/dist/providers/openai/index.js +4 -0
  157. package/dist/providers/openai/index.js.map +1 -0
  158. package/dist/providers/openai/synthesize.d.ts +3 -0
  159. package/dist/providers/openai/synthesize.d.ts.map +1 -0
  160. package/dist/providers/openai/synthesize.js +37 -0
  161. package/dist/providers/openai/synthesize.js.map +1 -0
  162. package/dist/providers/openai/transcribe.d.ts +3 -0
  163. package/dist/providers/openai/transcribe.d.ts.map +1 -0
  164. package/dist/providers/openai/transcribe.js +58 -0
  165. package/dist/providers/openai/transcribe.js.map +1 -0
  166. package/dist/providers/openai/types.d.ts +18 -0
  167. package/dist/providers/openai/types.d.ts.map +1 -0
  168. package/dist/providers/openai/types.js +2 -0
  169. package/dist/providers/openai/types.js.map +1 -0
  170. package/dist/providers/playht/fetch-voices.d.ts +3 -0
  171. package/dist/providers/playht/fetch-voices.d.ts.map +1 -0
  172. package/dist/providers/playht/fetch-voices.js +25 -0
  173. package/dist/providers/playht/fetch-voices.js.map +1 -0
  174. package/dist/providers/playht/index.d.ts +3 -0
  175. package/dist/providers/playht/index.d.ts.map +1 -0
  176. package/dist/providers/playht/index.js +3 -0
  177. package/dist/providers/playht/index.js.map +1 -0
  178. package/dist/providers/playht/synthesize.d.ts +3 -0
  179. package/dist/providers/playht/synthesize.d.ts.map +1 -0
  180. package/dist/providers/playht/synthesize.js +41 -0
  181. package/dist/providers/playht/synthesize.js.map +1 -0
  182. package/dist/providers/playht/types.d.ts +11 -0
  183. package/dist/providers/playht/types.d.ts.map +1 -0
  184. package/dist/providers/playht/types.js +2 -0
  185. package/dist/providers/playht/types.js.map +1 -0
  186. package/dist/providers/revai/index.d.ts +2 -0
  187. package/dist/providers/revai/index.d.ts.map +1 -0
  188. package/dist/providers/revai/index.js +2 -0
  189. package/dist/providers/revai/index.js.map +1 -0
  190. package/dist/providers/revai/transcribe.d.ts +3 -0
  191. package/dist/providers/revai/transcribe.d.ts.map +1 -0
  192. package/dist/providers/revai/transcribe.js +97 -0
  193. package/dist/providers/revai/transcribe.js.map +1 -0
  194. package/dist/providers/revai/types.d.ts +23 -0
  195. package/dist/providers/revai/types.d.ts.map +1 -0
  196. package/dist/providers/revai/types.js +2 -0
  197. package/dist/providers/revai/types.js.map +1 -0
  198. package/dist/providers/speechmatics/detect-languages.d.ts +3 -0
  199. package/dist/providers/speechmatics/detect-languages.d.ts.map +1 -0
  200. package/dist/providers/speechmatics/detect-languages.js +24 -0
  201. package/dist/providers/speechmatics/detect-languages.js.map +1 -0
  202. package/dist/providers/speechmatics/helpers.d.ts +4 -0
  203. package/dist/providers/speechmatics/helpers.d.ts.map +1 -0
  204. package/dist/providers/speechmatics/helpers.js +57 -0
  205. package/dist/providers/speechmatics/helpers.js.map +1 -0
  206. package/dist/providers/speechmatics/index.d.ts +3 -0
  207. package/dist/providers/speechmatics/index.d.ts.map +1 -0
  208. package/dist/providers/speechmatics/index.js +3 -0
  209. package/dist/providers/speechmatics/index.js.map +1 -0
  210. package/dist/providers/speechmatics/transcribe.d.ts +3 -0
  211. package/dist/providers/speechmatics/transcribe.d.ts.map +1 -0
  212. package/dist/providers/speechmatics/transcribe.js +61 -0
  213. package/dist/providers/speechmatics/transcribe.js.map +1 -0
  214. package/dist/providers/speechmatics/types.d.ts +27 -0
  215. package/dist/providers/speechmatics/types.d.ts.map +1 -0
  216. package/dist/providers/speechmatics/types.js +2 -0
  217. package/dist/providers/speechmatics/types.js.map +1 -0
  218. package/dist/synthesize.d.ts +4 -0
  219. package/dist/synthesize.d.ts.map +1 -0
  220. package/dist/synthesize.js +73 -0
  221. package/dist/synthesize.js.map +1 -0
  222. package/dist/transcribe.d.ts +3 -0
  223. package/dist/transcribe.d.ts.map +1 -0
  224. package/dist/transcribe.js +55 -0
  225. package/dist/transcribe.js.map +1 -0
  226. package/dist/types.d.ts +361 -0
  227. package/dist/types.d.ts.map +1 -0
  228. package/dist/types.js +3 -0
  229. package/dist/types.js.map +1 -0
  230. package/dist/utils.d.ts +19 -0
  231. package/dist/utils.d.ts.map +1 -0
  232. package/dist/utils.js +101 -0
  233. package/dist/utils.js.map +1 -0
  234. package/dist/voice-cache.d.ts +9 -0
  235. package/dist/voice-cache.d.ts.map +1 -0
  236. package/dist/voice-cache.js +21 -0
  237. package/dist/voice-cache.js.map +1 -0
  238. package/dist/voice-resolver.d.ts +7 -0
  239. package/dist/voice-resolver.d.ts.map +1 -0
  240. package/dist/voice-resolver.js +82 -0
  241. package/dist/voice-resolver.js.map +1 -0
  242. package/package.json +100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../../../src/providers/playht/synthesize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAK9F,wBAAsB,UAAU,CAC5B,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,GAAE,uBAA4B,GACtC,OAAO,CAAC,gBAAgB,CAAC,CAiD3B"}
@@ -0,0 +1,41 @@
1
+ import { SpeechServiceError } from "../../errors.js";
2
+ import { detectFormatFromString } from "../../utils.js";
3
+ import { BASE_URL } from "./types.js";
4
+ export async function synthesize(config, text, voice, language, options = {}) {
5
+ const { voiceEngine = "Play3.0-mini", outputFormat = "mp3", speed, sampleRate, quality, } = options;
6
+ const body = {
7
+ text,
8
+ voice,
9
+ voice_engine: voiceEngine,
10
+ output_format: outputFormat,
11
+ };
12
+ if (speed !== undefined)
13
+ body.speed = speed;
14
+ if (sampleRate !== undefined)
15
+ body.sample_rate = sampleRate;
16
+ if (quality)
17
+ body.quality = quality;
18
+ if (language)
19
+ body.language = language.toLowerCase();
20
+ const response = await fetch(`${BASE_URL}/tts/stream`, {
21
+ method: "POST",
22
+ headers: {
23
+ "X-USER-ID": config.userId,
24
+ AUTHORIZATION: config.apiKey,
25
+ Accept: "audio/mpeg",
26
+ "Content-Type": "application/json",
27
+ },
28
+ body: JSON.stringify(body),
29
+ });
30
+ if (!response.ok) {
31
+ const errorText = await response.text();
32
+ throw new SpeechServiceError(`PlayHT TTS failed: ${errorText}`, "API_ERROR", "playht", response.status);
33
+ }
34
+ const arrayBuffer = await response.arrayBuffer();
35
+ return {
36
+ audio: Buffer.from(arrayBuffer),
37
+ format: detectFormatFromString(outputFormat),
38
+ voice,
39
+ };
40
+ }
41
+ //# sourceMappingURL=synthesize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../../../src/providers/playht/synthesize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,MAAoB,EACpB,IAAY,EACZ,KAAa,EACb,QAA4B,EAC5B,UAAmC,EAAE;IAErC,MAAM,EACF,WAAW,GAAG,cAAc,EAC5B,YAAY,GAAG,KAAK,EACpB,KAAK,EACL,UAAU,EACV,OAAO,GACV,GAAG,OAAO,CAAC;IAEZ,MAAM,IAAI,GAA4B;QAClC,IAAI;QACJ,KAAK;QACL,YAAY,EAAE,WAAW;QACzB,aAAa,EAAE,YAAY;KAC9B,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC5C,IAAI,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;IAC5D,IAAI,OAAO;QAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACpC,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,aAAa,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACL,WAAW,EAAE,MAAM,CAAC,MAAM;YAC1B,aAAa,EAAE,MAAM,CAAC,MAAM;YAC5B,MAAM,EAAE,YAAY;YACpB,cAAc,EAAE,kBAAkB;SACrC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC7B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,kBAAkB,CACxB,sBAAsB,SAAS,EAAE,EACjC,WAAW,EACX,QAAQ,EACR,QAAQ,CAAC,MAAM,CAClB,CAAC;IACN,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEjD,OAAO;QACH,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QAC/B,MAAM,EAAE,sBAAsB,CAAC,YAAY,CAAC;QAC5C,KAAK;KACR,CAAC;AACN,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const BASE_URL = "https://api.play.ht/api/v2";
2
+ export interface PlayHTVoice {
3
+ id: string;
4
+ name: string;
5
+ language?: string;
6
+ language_code?: string;
7
+ gender?: string;
8
+ accent?: string;
9
+ sample?: string;
10
+ }
11
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/playht/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,+BAA+B,CAAC;AAErD,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export const BASE_URL = "https://api.play.ht/api/v2";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/playht/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { transcribe } from "./transcribe.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/revai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { transcribe } from "./transcribe.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/revai/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RevAIConfig, RevAITranscribeOptions, TranscribeResult } from "../../types.js";
2
+ export declare function transcribe(config: RevAIConfig, audio: Buffer | string, languages: string[] | undefined, options?: RevAITranscribeOptions): Promise<TranscribeResult>;
3
+ //# sourceMappingURL=transcribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../../src/providers/revai/transcribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,sBAAsB,EACtB,gBAAgB,EAEnB,MAAM,gBAAgB,CAAC;AAMxB,wBAAsB,UAAU,CAC5B,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAC/B,OAAO,GAAE,sBAA2B,GACrC,OAAO,CAAC,gBAAgB,CAAC,CA4I3B"}
@@ -0,0 +1,97 @@
1
+ import { SpeechServiceError } from "../../errors.js";
2
+ import { isUrl, poll } from "../../utils.js";
3
+ import { BASE_URL } from "./types.js";
4
+ export async function transcribe(config, audio, languages, options = {}) {
5
+ const { skipDiarization = false, skipPunctuation = false, filterProfanity = false, pollInterval = 5000, timeout = 300_000, } = options;
6
+ const language = languages?.[0] ?? "en";
7
+ const jobOptions = {
8
+ language,
9
+ skip_diarization: skipDiarization,
10
+ skip_punctuation: skipPunctuation,
11
+ filter_profanity: filterProfanity,
12
+ };
13
+ // Step 1: Submit job
14
+ let submitResponse;
15
+ if (typeof audio === "string" && isUrl(audio)) {
16
+ // URL input: JSON body
17
+ submitResponse = await fetch(`${BASE_URL}/jobs`, {
18
+ method: "POST",
19
+ headers: {
20
+ Authorization: `Bearer ${config.apiKey}`,
21
+ "Content-Type": "application/json",
22
+ },
23
+ body: JSON.stringify({
24
+ source_config: { url: audio },
25
+ ...jobOptions,
26
+ }),
27
+ });
28
+ }
29
+ else if (Buffer.isBuffer(audio)) {
30
+ // Buffer input: multipart with media + options
31
+ const formData = new FormData();
32
+ formData.append("media", new Blob([new Uint8Array(audio)]), "audio.mp3");
33
+ formData.append("options", JSON.stringify(jobOptions));
34
+ submitResponse = await fetch(`${BASE_URL}/jobs`, {
35
+ method: "POST",
36
+ headers: { Authorization: `Bearer ${config.apiKey}` },
37
+ body: formData,
38
+ });
39
+ }
40
+ else {
41
+ throw new SpeechServiceError("audio must be a Buffer or a URL string", "INVALID_INPUT", "revai");
42
+ }
43
+ if (!submitResponse.ok) {
44
+ const errorText = await submitResponse.text();
45
+ throw new SpeechServiceError(`Rev.ai job submission failed: ${errorText}`, "API_ERROR", "revai", submitResponse.status);
46
+ }
47
+ const job = (await submitResponse.json());
48
+ // Step 2: Poll until complete
49
+ const finalJob = await poll(async () => {
50
+ const res = await fetch(`${BASE_URL}/jobs/${job.id}`, {
51
+ headers: { Authorization: `Bearer ${config.apiKey}` },
52
+ });
53
+ if (!res.ok) {
54
+ throw new SpeechServiceError(`Rev.ai polling failed: ${res.status}`, "API_ERROR", "revai", res.status);
55
+ }
56
+ return res.json();
57
+ }, (result) => result.status === "transcribed" || result.status === "failed", pollInterval, timeout, "revai");
58
+ if (finalJob.status === "failed") {
59
+ throw new SpeechServiceError(`Rev.ai transcription failed: ${finalJob.failure ?? finalJob.failure_detail ?? "Unknown error"}`, "TRANSCRIPTION_FAILED", "revai");
60
+ }
61
+ // Step 3: Fetch transcript
62
+ const transcriptResponse = await fetch(`${BASE_URL}/jobs/${job.id}/transcript`, {
63
+ headers: {
64
+ Authorization: `Bearer ${config.apiKey}`,
65
+ Accept: "application/vnd.rev.transcript.v1.0+json",
66
+ },
67
+ });
68
+ if (!transcriptResponse.ok) {
69
+ const errorText = await transcriptResponse.text();
70
+ throw new SpeechServiceError(`Rev.ai transcript fetch failed: ${errorText}`, "API_ERROR", "revai", transcriptResponse.status);
71
+ }
72
+ const transcript = (await transcriptResponse.json());
73
+ // Step 4: Normalize
74
+ const words = [];
75
+ const textParts = [];
76
+ for (const monologue of transcript.monologues ?? []) {
77
+ for (const element of monologue.elements) {
78
+ if (element.type === "text") {
79
+ words.push({
80
+ text: element.value,
81
+ startTime: element.ts ?? 0,
82
+ endTime: element.end_ts ?? 0,
83
+ confidence: element.confidence,
84
+ speaker: String(monologue.speaker),
85
+ });
86
+ }
87
+ textParts.push(element.value);
88
+ }
89
+ }
90
+ return {
91
+ text: textParts.join("").trim(),
92
+ words,
93
+ language: finalJob.language ?? language,
94
+ duration: finalJob.duration_seconds ?? 0,
95
+ };
96
+ }
97
+ //# sourceMappingURL=transcribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../../src/providers/revai/transcribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare const BASE_URL = "https://api.rev.ai/speechtotext/v1";
2
+ export interface RevAIJob {
3
+ id: string;
4
+ status: "in_progress" | "transcribed" | "failed";
5
+ language?: string;
6
+ duration_seconds?: number;
7
+ failure?: string;
8
+ failure_detail?: string;
9
+ }
10
+ export interface RevAITranscript {
11
+ monologues?: Array<{
12
+ speaker: number;
13
+ elements: RevAIElement[];
14
+ }>;
15
+ }
16
+ export interface RevAIElement {
17
+ type: "text" | "punct" | "unknown";
18
+ value: string;
19
+ ts?: number;
20
+ end_ts?: number;
21
+ confidence?: number;
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/revai/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,uCAAuC,CAAC;AAE7D,MAAM,WAAW,QAAQ;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,QAAQ,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC5B,UAAU,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;KAC5B,CAAC,CAAC;CACN;AAED,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,2 @@
1
+ export const BASE_URL = "https://api.rev.ai/speechtotext/v1";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/revai/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,oCAAoC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SpeechmaticsConfig } from "../../types.js";
2
+ export declare function detectLanguages(config: SpeechmaticsConfig, audio: Buffer | string): Promise<Map<string, number>>;
3
+ //# sourceMappingURL=detect-languages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-languages.d.ts","sourceRoot":"","sources":["../../../src/providers/speechmatics/detect-languages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAIzD,wBAAsB,eAAe,CACjC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,GACvB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuB9B"}
@@ -0,0 +1,24 @@
1
+ import { getBaseLanguage } from "../../utils.js";
2
+ import { runTranscriptionJob } from "./helpers.js";
3
+ export async function detectLanguages(config, audio) {
4
+ const jobConfig = {
5
+ type: "transcription",
6
+ transcription_config: {
7
+ language: "auto",
8
+ operating_point: "standard",
9
+ },
10
+ };
11
+ const transcript = await runTranscriptionJob(config, audio, jobConfig, 5000, 300_000);
12
+ const counts = new Map();
13
+ for (const result of transcript.results ?? []) {
14
+ if (result.type === "word") {
15
+ const lang = result.alternatives?.[0]?.language;
16
+ if (lang) {
17
+ const base = getBaseLanguage(lang);
18
+ counts.set(base, (counts.get(base) ?? 0) + 1);
19
+ }
20
+ }
21
+ }
22
+ return counts;
23
+ }
24
+ //# sourceMappingURL=detect-languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-languages.js","sourceRoot":"","sources":["../../../src/providers/speechmatics/detect-languages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,eAAe,CACjC,MAA0B,EAC1B,KAAsB;IAEtB,MAAM,SAAS,GAA4B;QACvC,IAAI,EAAE,eAAe;QACrB,oBAAoB,EAAE;YAClB,QAAQ,EAAE,MAAM;YAChB,eAAe,EAAE,UAAU;SAC9B;KACJ,CAAC;IAEF,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAEtF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;YAChD,IAAI,IAAI,EAAE,CAAC;gBACP,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;gBACnC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SpeechmaticsConfig } from "../../types.js";
2
+ import type { SpeechmaticsTranscript } from "./types.js";
3
+ export declare function runTranscriptionJob(config: SpeechmaticsConfig, audio: Buffer | string, jobConfig: Record<string, unknown>, pollInterval: number, timeout: number): Promise<SpeechmaticsTranscript>;
4
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/providers/speechmatics/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGzD,OAAO,KAAK,EAA2B,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAOlF,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAwFjC"}
@@ -0,0 +1,57 @@
1
+ import { SpeechServiceError } from "../../errors.js";
2
+ import { poll } from "../../utils.js";
3
+ function getBaseUrl(config) {
4
+ const region = config.region ?? "eu1";
5
+ return `https://${region}.asr.api.speechmatics.com/v2`;
6
+ }
7
+ export async function runTranscriptionJob(config, audio, jobConfig, pollInterval, timeout) {
8
+ const baseUrl = getBaseUrl(config);
9
+ // Step 1: Submit job
10
+ const formData = new FormData();
11
+ formData.append("config", JSON.stringify(jobConfig));
12
+ if (Buffer.isBuffer(audio)) {
13
+ formData.append("data_file", new Blob([new Uint8Array(audio)]), "audio.mp3");
14
+ }
15
+ else if (typeof audio === "string") {
16
+ // For URLs, use fetch_data in config instead of form data
17
+ jobConfig.fetch_data = { url: audio };
18
+ formData.set("config", JSON.stringify(jobConfig));
19
+ }
20
+ const submitResponse = await fetch(`${baseUrl}/jobs/`, {
21
+ method: "POST",
22
+ headers: { Authorization: `Bearer ${config.apiKey}` },
23
+ body: formData,
24
+ });
25
+ if (!submitResponse.ok) {
26
+ const errorText = await submitResponse.text();
27
+ throw new SpeechServiceError(`Speechmatics job submission failed: ${errorText}`, "API_ERROR", "speechmatics", submitResponse.status);
28
+ }
29
+ const jobResponse = (await submitResponse.json());
30
+ const jobId = jobResponse.job?.id;
31
+ if (!jobId) {
32
+ throw new SpeechServiceError("Speechmatics returned no job ID", "API_ERROR", "speechmatics");
33
+ }
34
+ // Step 2: Poll until complete
35
+ const finalJob = await poll(async () => {
36
+ const res = await fetch(`${baseUrl}/jobs/${jobId}`, {
37
+ headers: { Authorization: `Bearer ${config.apiKey}` },
38
+ });
39
+ if (!res.ok) {
40
+ throw new SpeechServiceError(`Speechmatics polling failed: ${res.status}`, "API_ERROR", "speechmatics", res.status);
41
+ }
42
+ return res.json();
43
+ }, (result) => result.job?.status === "done" || result.job?.status === "rejected", pollInterval, timeout, "speechmatics");
44
+ if (finalJob.job?.status === "rejected") {
45
+ throw new SpeechServiceError("Speechmatics transcription was rejected", "TRANSCRIPTION_FAILED", "speechmatics");
46
+ }
47
+ // Step 3: Fetch transcript
48
+ const transcriptResponse = await fetch(`${baseUrl}/jobs/${jobId}/transcript?format=json-v2`, {
49
+ headers: { Authorization: `Bearer ${config.apiKey}` },
50
+ });
51
+ if (!transcriptResponse.ok) {
52
+ const errorText = await transcriptResponse.text();
53
+ throw new SpeechServiceError(`Speechmatics transcript fetch failed: ${errorText}`, "API_ERROR", "speechmatics", transcriptResponse.status);
54
+ }
55
+ return (await transcriptResponse.json());
56
+ }
57
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/providers/speechmatics/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { transcribe } from "./transcribe.js";
2
+ export { detectLanguages } from "./detect-languages.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/speechmatics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { transcribe } from "./transcribe.js";
2
+ export { detectLanguages } from "./detect-languages.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/speechmatics/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { SpeechmaticsConfig, SpeechmaticsTranscribeOptions, TranscribeResult } from "../../types.js";
2
+ export declare function transcribe(config: SpeechmaticsConfig, audio: Buffer | string, languages: string[] | undefined, options?: SpeechmaticsTranscribeOptions): Promise<TranscribeResult>;
3
+ //# sourceMappingURL=transcribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../../../src/providers/speechmatics/transcribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,kBAAkB,EAClB,6BAA6B,EAC7B,gBAAgB,EAEnB,MAAM,gBAAgB,CAAC;AAGxB,wBAAsB,UAAU,CAC5B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,EAC/B,OAAO,GAAE,6BAAkC,GAC5C,OAAO,CAAC,gBAAgB,CAAC,CAkE3B"}
@@ -0,0 +1,61 @@
1
+ import { runTranscriptionJob } from "./helpers.js";
2
+ export async function transcribe(config, audio, languages, options = {}) {
3
+ const { operatingPoint = "enhanced", diarization = "none", pollInterval = 5000, timeout = 300_000, } = options;
4
+ const language = languages?.[0] ?? "en";
5
+ const jobConfig = {
6
+ type: "transcription",
7
+ transcription_config: {
8
+ language,
9
+ operating_point: operatingPoint,
10
+ ...(diarization !== "none" ? { diarization: diarization } : {}),
11
+ },
12
+ };
13
+ const transcript = await runTranscriptionJob(config, audio, jobConfig, pollInterval, timeout);
14
+ // Normalize: build text and word list
15
+ const words = [];
16
+ const textParts = [];
17
+ let detectedLanguage = language;
18
+ let lastEndTime = 0;
19
+ for (const result of transcript.results ?? []) {
20
+ const alt = result.alternatives?.[0];
21
+ if (!alt)
22
+ continue;
23
+ if (result.type === "word") {
24
+ words.push({
25
+ text: alt.content,
26
+ startTime: result.start_time,
27
+ endTime: result.end_time,
28
+ confidence: alt.confidence,
29
+ speaker: alt.speaker ?? result.speaker ?? undefined,
30
+ });
31
+ textParts.push(alt.content);
32
+ if (alt.language)
33
+ detectedLanguage = alt.language;
34
+ if (result.end_time > lastEndTime)
35
+ lastEndTime = result.end_time;
36
+ }
37
+ else if (result.type === "punctuation") {
38
+ textParts.push(alt.content);
39
+ }
40
+ }
41
+ // Build text: words separated by spaces, punctuation appended directly
42
+ let text = "";
43
+ for (const result of transcript.results ?? []) {
44
+ const content = result.alternatives?.[0]?.content;
45
+ if (!content)
46
+ continue;
47
+ if (result.type === "word") {
48
+ text += (text.length > 0 ? " " : "") + content;
49
+ }
50
+ else if (result.type === "punctuation") {
51
+ text += content;
52
+ }
53
+ }
54
+ return {
55
+ text,
56
+ words,
57
+ language: detectedLanguage,
58
+ duration: transcript.job?.duration ?? lastEndTime,
59
+ };
60
+ }
61
+ //# sourceMappingURL=transcribe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe.js","sourceRoot":"","sources":["../../../src/providers/speechmatics/transcribe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface SpeechmaticsJobResponse {
2
+ job?: {
3
+ id: string;
4
+ status: "running" | "done" | "rejected";
5
+ duration?: number;
6
+ };
7
+ }
8
+ export interface SpeechmaticsTranscript {
9
+ results?: SpeechmaticsResult[];
10
+ job?: {
11
+ duration?: number;
12
+ };
13
+ }
14
+ export interface SpeechmaticsResult {
15
+ type: "word" | "punctuation" | "entity";
16
+ start_time: number;
17
+ end_time: number;
18
+ channel?: string;
19
+ speaker?: string;
20
+ alternatives?: Array<{
21
+ content: string;
22
+ confidence: number;
23
+ language?: string;
24
+ speaker?: string;
25
+ }>;
26
+ }
27
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/speechmatics/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC,GAAG,CAAC,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;QACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACL;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC/B,GAAG,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACN"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/speechmatics/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ClientConfig, SynthesizeParams, SynthesizeResult } from "./types.js";
2
+ import { VoiceCache } from "./voice-cache.js";
3
+ export declare function synthesize(config: ClientConfig, params: SynthesizeParams, voiceCache?: VoiceCache): Promise<SynthesizeResult>;
4
+ //# sourceMappingURL=synthesize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize.d.ts","sourceRoot":"","sources":["../src/synthesize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAa,MAAM,YAAY,CAAC;AAE9F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAU9C,wBAAsB,UAAU,CAC5B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,gBAAgB,EACxB,UAAU,CAAC,EAAE,UAAU,GACxB,OAAO,CAAC,gBAAgB,CAAC,CA2D3B"}
@@ -0,0 +1,73 @@
1
+ import { SpeechServiceError } from "./errors.js";
2
+ import { VoiceCache } from "./voice-cache.js";
3
+ import { resolveVoice } from "./voice-resolver.js";
4
+ import * as azure from "./providers/azure/index.js";
5
+ import * as cartesia from "./providers/cartesia/index.js";
6
+ import * as deepgram from "./providers/deepgram/index.js";
7
+ import * as elevenlabs from "./providers/elevenlabs/index.js";
8
+ import * as google from "./providers/google/index.js";
9
+ import * as openai from "./providers/openai/index.js";
10
+ import * as playht from "./providers/playht/index.js";
11
+ export async function synthesize(config, params, voiceCache) {
12
+ const cache = voiceCache ?? new VoiceCache();
13
+ switch (params.provider) {
14
+ case "azure": {
15
+ const cfg = requireConfig(config, "azure", "Azure");
16
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => azure.fetchVoices(cfg), `azure:${cfg.region}`, params);
17
+ return azure.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
18
+ }
19
+ case "cartesia": {
20
+ const cfg = requireConfig(config, "cartesia", "Cartesia");
21
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => cartesia.fetchVoices(cfg), "cartesia", params);
22
+ return cartesia.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
23
+ }
24
+ case "deepgram": {
25
+ const cfg = requireConfig(config, "deepgram", "Deepgram");
26
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => deepgram.fetchVoices(cfg), "deepgram", params);
27
+ return deepgram.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
28
+ }
29
+ case "elevenlabs": {
30
+ const cfg = requireConfig(config, "elevenlabs", "ElevenLabs");
31
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => elevenlabs.fetchVoices(cfg), "elevenlabs", params);
32
+ return elevenlabs.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
33
+ }
34
+ case "google": {
35
+ const cfg = requireConfig(config, "google", "Google");
36
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => google.fetchVoices(cfg), "google", params);
37
+ return google.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
38
+ }
39
+ case "openai": {
40
+ const cfg = requireConfig(config, "openai", "OpenAI");
41
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => openai.fetchVoices(cfg), "openai", params);
42
+ return openai.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
43
+ }
44
+ case "playht": {
45
+ const cfg = requireConfig(config, "playht", "PlayHT");
46
+ const resolvedVoice = await resolveVoiceForProvider(cache, () => playht.fetchVoices(cfg), "playht", params);
47
+ return playht.synthesize(cfg, params.text, resolvedVoice, params.languages?.[0], params.providerOptions);
48
+ }
49
+ default:
50
+ throw new SpeechServiceError(`Unknown TTS provider: ${params.provider}`, "UNKNOWN_PROVIDER");
51
+ }
52
+ }
53
+ function requireConfig(config, provider, displayName) {
54
+ const providerConfig = config[provider];
55
+ if (!providerConfig) {
56
+ throw new SpeechServiceError(`${displayName} is not configured. Add "${provider}" to your config.`, "NOT_CONFIGURED", provider);
57
+ }
58
+ return providerConfig;
59
+ }
60
+ async function resolveVoiceForProvider(cache, fetchFn, cacheKey, params) {
61
+ let voices = cache.get(cacheKey);
62
+ if (!voices) {
63
+ voices = await fetchFn();
64
+ cache.set(cacheKey, voices);
65
+ }
66
+ const resolved = resolveVoice(voices, {
67
+ voice: params.voice,
68
+ language: params.languages?.[0],
69
+ gender: params.gender,
70
+ });
71
+ return resolved.id;
72
+ }
73
+ //# sourceMappingURL=synthesize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesize.js","sourceRoot":"","sources":["../src/synthesize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAC;AACpD,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAC;AAC1D,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAC;AAC9D,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC5B,MAAoB,EACpB,MAAwB,EACxB,UAAuB;IAEvB,MAAM,KAAK,GAAG,UAAU,IAAI,IAAI,UAAU,EAAE,CAAC;IAE7C,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,OAAO,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,CACrE,CAAC;YACF,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC5G,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,CAC7D,CAAC;YACF,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/G,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YAC1D,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,CAC7D,CAAC;YACF,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/G,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAChB,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,CACjE,CAAC;YACF,OAAO,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QACjH,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CACzD,CAAC;YACF,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7G,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CACzD,CAAC;YACF,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7G,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtD,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAC/C,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CACzD,CAAC;YACF,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7G,CAAC;QACD;YACI,MAAM,IAAI,kBAAkB,CACxB,yBAA0B,MAA2B,CAAC,QAAQ,EAAE,EAChE,kBAAkB,CACrB,CAAC;IACV,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAClB,MAAoB,EACpB,QAAW,EACX,WAAmB;IAEnB,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,MAAM,IAAI,kBAAkB,CACxB,GAAG,WAAW,4BAA4B,QAAQ,mBAAmB,EACrE,gBAAgB,EAChB,QAAQ,CACX,CAAC;IACN,CAAC;IACD,OAAO,cAA8C,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,uBAAuB,CAClC,KAAiB,EACjB,OAAmC,EACnC,QAAgB,EAChB,MAAwB;IAExB,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,EAAE;QAClC,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;KACxB,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,EAAE,CAAC;AACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ClientConfig, TranscribeParams, TranscribeResult } from "./types.js";
2
+ export declare function transcribe(config: ClientConfig, params: TranscribeParams): Promise<TranscribeResult>;
3
+ //# sourceMappingURL=transcribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe.d.ts","sourceRoot":"","sources":["../src/transcribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAWnF,wBAAsB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC1G"}