@cartesia/cartesia-js 3.0.0-b5 → 3.0.0-b7

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 (70) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/backcompat/errors.d.mts +16 -0
  3. package/backcompat/errors.d.mts.map +1 -0
  4. package/backcompat/errors.d.ts +16 -0
  5. package/backcompat/errors.d.ts.map +1 -0
  6. package/backcompat/errors.js +46 -0
  7. package/backcompat/errors.js.map +1 -0
  8. package/backcompat/errors.mjs +40 -0
  9. package/backcompat/errors.mjs.map +1 -0
  10. package/backcompat/index.d.mts +17 -31
  11. package/backcompat/index.d.mts.map +1 -1
  12. package/backcompat/index.d.ts +17 -31
  13. package/backcompat/index.d.ts.map +1 -1
  14. package/backcompat/index.js +26 -254
  15. package/backcompat/index.js.map +1 -1
  16. package/backcompat/index.mjs +25 -253
  17. package/backcompat/index.mjs.map +1 -1
  18. package/backcompat/tts-wrapper.d.mts +69 -0
  19. package/backcompat/tts-wrapper.d.mts.map +1 -0
  20. package/backcompat/tts-wrapper.d.ts +69 -0
  21. package/backcompat/tts-wrapper.d.ts.map +1 -0
  22. package/backcompat/tts-wrapper.js +264 -0
  23. package/backcompat/tts-wrapper.js.map +1 -0
  24. package/backcompat/tts-wrapper.mjs +258 -0
  25. package/backcompat/tts-wrapper.mjs.map +1 -0
  26. package/backcompat/types.d.mts +18 -0
  27. package/backcompat/types.d.mts.map +1 -0
  28. package/backcompat/types.d.ts +18 -0
  29. package/backcompat/types.d.ts.map +1 -0
  30. package/backcompat/types.js +3 -0
  31. package/backcompat/types.js.map +1 -0
  32. package/backcompat/types.mjs +2 -0
  33. package/backcompat/types.mjs.map +1 -0
  34. package/backcompat/voice-changer-wrapper.d.mts +19 -0
  35. package/backcompat/voice-changer-wrapper.d.mts.map +1 -0
  36. package/backcompat/voice-changer-wrapper.d.ts +19 -0
  37. package/backcompat/voice-changer-wrapper.d.ts.map +1 -0
  38. package/backcompat/voice-changer-wrapper.js +49 -0
  39. package/backcompat/voice-changer-wrapper.js.map +1 -0
  40. package/backcompat/voice-changer-wrapper.mjs +45 -0
  41. package/backcompat/voice-changer-wrapper.mjs.map +1 -0
  42. package/backcompat/voices-wrapper.d.mts +36 -0
  43. package/backcompat/voices-wrapper.d.mts.map +1 -0
  44. package/backcompat/voices-wrapper.d.ts +36 -0
  45. package/backcompat/voices-wrapper.d.ts.map +1 -0
  46. package/backcompat/voices-wrapper.js +82 -0
  47. package/backcompat/voices-wrapper.js.map +1 -0
  48. package/backcompat/voices-wrapper.mjs +78 -0
  49. package/backcompat/voices-wrapper.mjs.map +1 -0
  50. package/index.d.mts +1 -1
  51. package/index.d.mts.map +1 -1
  52. package/index.d.ts +1 -1
  53. package/index.d.ts.map +1 -1
  54. package/index.js +3 -3
  55. package/index.js.map +1 -1
  56. package/index.mjs +1 -1
  57. package/index.mjs.map +1 -1
  58. package/package.json +1 -1
  59. package/src/backcompat/errors.ts +52 -0
  60. package/src/backcompat/index.ts +31 -291
  61. package/src/backcompat/tts-wrapper.ts +328 -0
  62. package/src/backcompat/types.ts +19 -0
  63. package/src/backcompat/voice-changer-wrapper.ts +70 -0
  64. package/src/backcompat/voices-wrapper.ts +163 -0
  65. package/src/index.ts +1 -1
  66. package/src/version.ts +1 -1
  67. package/version.d.mts +1 -1
  68. package/version.d.ts +1 -1
  69. package/version.js +1 -1
  70. package/version.mjs +1 -1
@@ -0,0 +1,264 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TTSWrapper = exports.WebSocketWrapper = void 0;
4
+ const tslib_1 = require("../internal/tslib.js");
5
+ const ws_1 = tslib_1.__importDefault(require("ws"));
6
+ const errors_1 = require("./errors.js");
7
+ // Helper for generating UUIDs. Not cryptographically secure.
8
+ function uuidv4() {
9
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
10
+ var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
11
+ return v.toString(16);
12
+ });
13
+ }
14
+ class AudioSource {
15
+ constructor() {
16
+ this.buffers = [];
17
+ this.waiter = null;
18
+ this.isDone = false;
19
+ }
20
+ push(data) {
21
+ this.buffers.push(data);
22
+ if (this.waiter) {
23
+ this.waiter();
24
+ this.waiter = null;
25
+ }
26
+ }
27
+ markDone() {
28
+ this.isDone = true;
29
+ if (this.waiter) {
30
+ this.waiter();
31
+ this.waiter = null;
32
+ }
33
+ }
34
+ async read(outBuffer) {
35
+ if (this.buffers.length === 0 && !this.isDone) {
36
+ await new Promise((resolve) => { this.waiter = resolve; });
37
+ }
38
+ if (this.buffers.length === 0 && this.isDone) {
39
+ return 0;
40
+ }
41
+ let totalFloatsRead = 0;
42
+ let outOffset = 0;
43
+ const maxFloats = outBuffer.length;
44
+ while (this.buffers.length > 0 && totalFloatsRead < maxFloats) {
45
+ const buf = this.buffers[0]; // ts not smart enough to check loop condition
46
+ const floatsInBuf = buf.length / 4;
47
+ const floatsNeeded = maxFloats - totalFloatsRead;
48
+ const floatsToCopy = Math.min(floatsInBuf, floatsNeeded);
49
+ const bytesToCopy = floatsToCopy * 4;
50
+ // Copy to outBuffer.
51
+ // Create a view on the buffer to read floats.
52
+ // We need to ensure byteOffset is a multiple of 4.
53
+ // If not, we must copy the buffer to a new one.
54
+ let srcFloats;
55
+ if (buf.byteOffset % 4 === 0) {
56
+ srcFloats = new Float32Array(buf.buffer, buf.byteOffset, floatsInBuf);
57
+ }
58
+ else {
59
+ const alignedBuf = new Uint8Array(buf);
60
+ srcFloats = new Float32Array(alignedBuf.buffer, alignedBuf.byteOffset, floatsInBuf);
61
+ }
62
+ outBuffer.set(srcFloats.subarray(0, floatsToCopy), outOffset);
63
+ totalFloatsRead += floatsToCopy;
64
+ outOffset += floatsToCopy;
65
+ if (floatsToCopy < floatsInBuf) {
66
+ // We didn't use the whole buffer. Update it.
67
+ this.buffers[0] = buf.subarray(bytesToCopy);
68
+ }
69
+ else {
70
+ // We used the whole buffer. Remove it.
71
+ this.buffers.shift();
72
+ }
73
+ }
74
+ return totalFloatsRead;
75
+ }
76
+ }
77
+ class WebSocketWrapper {
78
+ constructor(client, config) {
79
+ this.socket = null;
80
+ this.sources = new Map();
81
+ // Fallback source for messages without context_id or if we just want to capture everything (legacy behavior?)
82
+ // The original test didn't use context_id explicitly in send() but expected a response source.
83
+ // We'll map context_id to source.
84
+ this.defaultSource = null;
85
+ this.client = client;
86
+ this.config = config;
87
+ }
88
+ async connect() {
89
+ const baseURL = this.client.baseURL;
90
+ // Construct WebSocket URL
91
+ // baseURL is like https://api.cartesia.ai
92
+ let urlStr = baseURL.replace(/^http/, "ws");
93
+ if (!urlStr.includes("/tts/websocket")) {
94
+ if (urlStr.endsWith("/")) {
95
+ urlStr += "tts/websocket";
96
+ }
97
+ else {
98
+ urlStr += "/tts/websocket";
99
+ }
100
+ }
101
+ const url = new URL(urlStr);
102
+ const headers = {
103
+ "cartesia-version": "2025-04-16",
104
+ };
105
+ if (this.client.apiKey) {
106
+ headers["Authorization"] = `Bearer ${this.client.apiKey}`;
107
+ }
108
+ this.socket = new ws_1.default(url.toString(), {
109
+ headers: headers,
110
+ });
111
+ return new Promise((resolve, reject) => {
112
+ this.socket.on("open", () => {
113
+ console.log("WebSocket connected.");
114
+ resolve();
115
+ });
116
+ this.socket.on("error", (err) => {
117
+ console.error("WebSocket error:", err);
118
+ reject(err);
119
+ });
120
+ this.socket.on("message", (data) => {
121
+ this.handleMessage(data);
122
+ });
123
+ this.socket.on("close", () => {
124
+ console.log("WebSocket closed.");
125
+ this.sources.forEach((s) => { s.markDone(); });
126
+ if (this.defaultSource)
127
+ this.defaultSource.markDone();
128
+ });
129
+ });
130
+ }
131
+ handleMessage(data) {
132
+ try {
133
+ const str = data.toString();
134
+ const msg = JSON.parse(str);
135
+ const contextId = msg.context_id;
136
+ let source = contextId ? this.sources.get(contextId) : this.defaultSource;
137
+ // If we received a message for a context we don't know about, and we have a default source, use it
138
+ if (!source && this.defaultSource) {
139
+ source = this.defaultSource;
140
+ }
141
+ if (msg.type === "chunk" && msg.data) {
142
+ const audioData = Buffer.from(msg.data, "base64");
143
+ if (source)
144
+ source.push(audioData);
145
+ }
146
+ else if (msg.type === "done") {
147
+ if (source)
148
+ source.markDone();
149
+ }
150
+ else if (msg.type === "error") {
151
+ console.error("Server error:", msg);
152
+ if (source)
153
+ source.markDone(); // Fail the stream?
154
+ }
155
+ }
156
+ catch (e) {
157
+ console.error("Error parsing message:", e);
158
+ }
159
+ }
160
+ async send(request) {
161
+ if (!this.socket) {
162
+ throw new Error("WebSocket not connected");
163
+ }
164
+ // Ensure request has a context_id so we can route the response
165
+ const contextId = request.contextId || uuidv4();
166
+ const source = new AudioSource();
167
+ this.sources.set(contextId, source);
168
+ // Also set as default source if none exists, for compatibility with simple tests
169
+ if (!this.defaultSource) {
170
+ this.defaultSource = source;
171
+ }
172
+ // Construct payload
173
+ const payload = {
174
+ model_id: request.modelId,
175
+ transcript: request.transcript,
176
+ voice: request.voice,
177
+ context_id: contextId,
178
+ };
179
+ // Output Format
180
+ if (request.outputFormat) {
181
+ payload.output_format = {
182
+ container: request.outputFormat.container,
183
+ encoding: request.outputFormat.encoding,
184
+ sample_rate: request.outputFormat.sampleRate,
185
+ bit_rate: request.outputFormat.bitRate,
186
+ };
187
+ }
188
+ else if (this.config) {
189
+ payload.output_format = {
190
+ container: this.config.container,
191
+ encoding: this.config.encoding,
192
+ sample_rate: this.config.sampleRate,
193
+ };
194
+ }
195
+ // Generation Config
196
+ if (request.generationConfig) {
197
+ payload.generation_config = request.generationConfig;
198
+ }
199
+ // Other fields
200
+ if (request.continue !== undefined)
201
+ payload.continue = request.continue;
202
+ if (request.duration !== undefined)
203
+ payload.duration = request.duration;
204
+ if (request.addTimestamps !== undefined)
205
+ payload.add_timestamps = request.addTimestamps;
206
+ if (request.addPhonemeTimestamps !== undefined)
207
+ payload.add_phoneme_timestamps = request.addPhonemeTimestamps;
208
+ this.socket.send(JSON.stringify(payload));
209
+ return {
210
+ source: source
211
+ };
212
+ }
213
+ disconnect() {
214
+ if (this.socket) {
215
+ this.socket.close();
216
+ }
217
+ }
218
+ }
219
+ exports.WebSocketWrapper = WebSocketWrapper;
220
+ /** @deprecated Use the new SDK's tts methods on the {@link Cartesia} instance instead. */
221
+ class TTSWrapper {
222
+ constructor(client) {
223
+ this.client = client;
224
+ }
225
+ /** @deprecated Use {@link Cartesia.tts.websocket} instead. */
226
+ websocket(config) {
227
+ return new WebSocketWrapper(this.client, config);
228
+ }
229
+ /** @deprecated Use {@link Cartesia.tts.synthesizeBytes} instead. */
230
+ async bytes(request, requestOptions) {
231
+ const params = {
232
+ model_id: request.modelId,
233
+ transcript: request.transcript,
234
+ voice: request.voice,
235
+ generation_config: request.generationConfig,
236
+ context_id: request.contextId,
237
+ };
238
+ if (request.outputFormat) {
239
+ params.output_format = {
240
+ ...request.outputFormat,
241
+ sample_rate: request.outputFormat.sampleRate,
242
+ bit_rate: request.outputFormat.bitRate,
243
+ };
244
+ // Remove camelCase keys
245
+ delete params.output_format.sampleRate;
246
+ delete params.output_format.bitRate;
247
+ }
248
+ const options = {};
249
+ if (requestOptions) {
250
+ if (requestOptions.timeoutInSeconds) {
251
+ options.timeout = requestOptions.timeoutInSeconds * 1000;
252
+ }
253
+ if (requestOptions.maxRetries !== undefined) {
254
+ options.maxRetries = requestOptions.maxRetries;
255
+ }
256
+ options.headers = requestOptions.headers;
257
+ options.signal = requestOptions.abortSignal;
258
+ }
259
+ // @ts-ignore
260
+ return (0, errors_1.wrap)(this.client.tts.synthesizeBytes(params, options));
261
+ }
262
+ }
263
+ exports.TTSWrapper = TTSWrapper;
264
+ //# sourceMappingURL=tts-wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tts-wrapper.js","sourceRoot":"","sources":["../src/backcompat/tts-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,258 @@
1
+ import WebSocket from "ws";
2
+ import { wrap } from "./errors.mjs";
3
+ // Helper for generating UUIDs. Not cryptographically secure.
4
+ function uuidv4() {
5
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
6
+ var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
7
+ return v.toString(16);
8
+ });
9
+ }
10
+ class AudioSource {
11
+ constructor() {
12
+ this.buffers = [];
13
+ this.waiter = null;
14
+ this.isDone = false;
15
+ }
16
+ push(data) {
17
+ this.buffers.push(data);
18
+ if (this.waiter) {
19
+ this.waiter();
20
+ this.waiter = null;
21
+ }
22
+ }
23
+ markDone() {
24
+ this.isDone = true;
25
+ if (this.waiter) {
26
+ this.waiter();
27
+ this.waiter = null;
28
+ }
29
+ }
30
+ async read(outBuffer) {
31
+ if (this.buffers.length === 0 && !this.isDone) {
32
+ await new Promise((resolve) => { this.waiter = resolve; });
33
+ }
34
+ if (this.buffers.length === 0 && this.isDone) {
35
+ return 0;
36
+ }
37
+ let totalFloatsRead = 0;
38
+ let outOffset = 0;
39
+ const maxFloats = outBuffer.length;
40
+ while (this.buffers.length > 0 && totalFloatsRead < maxFloats) {
41
+ const buf = this.buffers[0]; // ts not smart enough to check loop condition
42
+ const floatsInBuf = buf.length / 4;
43
+ const floatsNeeded = maxFloats - totalFloatsRead;
44
+ const floatsToCopy = Math.min(floatsInBuf, floatsNeeded);
45
+ const bytesToCopy = floatsToCopy * 4;
46
+ // Copy to outBuffer.
47
+ // Create a view on the buffer to read floats.
48
+ // We need to ensure byteOffset is a multiple of 4.
49
+ // If not, we must copy the buffer to a new one.
50
+ let srcFloats;
51
+ if (buf.byteOffset % 4 === 0) {
52
+ srcFloats = new Float32Array(buf.buffer, buf.byteOffset, floatsInBuf);
53
+ }
54
+ else {
55
+ const alignedBuf = new Uint8Array(buf);
56
+ srcFloats = new Float32Array(alignedBuf.buffer, alignedBuf.byteOffset, floatsInBuf);
57
+ }
58
+ outBuffer.set(srcFloats.subarray(0, floatsToCopy), outOffset);
59
+ totalFloatsRead += floatsToCopy;
60
+ outOffset += floatsToCopy;
61
+ if (floatsToCopy < floatsInBuf) {
62
+ // We didn't use the whole buffer. Update it.
63
+ this.buffers[0] = buf.subarray(bytesToCopy);
64
+ }
65
+ else {
66
+ // We used the whole buffer. Remove it.
67
+ this.buffers.shift();
68
+ }
69
+ }
70
+ return totalFloatsRead;
71
+ }
72
+ }
73
+ export class WebSocketWrapper {
74
+ constructor(client, config) {
75
+ this.socket = null;
76
+ this.sources = new Map();
77
+ // Fallback source for messages without context_id or if we just want to capture everything (legacy behavior?)
78
+ // The original test didn't use context_id explicitly in send() but expected a response source.
79
+ // We'll map context_id to source.
80
+ this.defaultSource = null;
81
+ this.client = client;
82
+ this.config = config;
83
+ }
84
+ async connect() {
85
+ const baseURL = this.client.baseURL;
86
+ // Construct WebSocket URL
87
+ // baseURL is like https://api.cartesia.ai
88
+ let urlStr = baseURL.replace(/^http/, "ws");
89
+ if (!urlStr.includes("/tts/websocket")) {
90
+ if (urlStr.endsWith("/")) {
91
+ urlStr += "tts/websocket";
92
+ }
93
+ else {
94
+ urlStr += "/tts/websocket";
95
+ }
96
+ }
97
+ const url = new URL(urlStr);
98
+ const headers = {
99
+ "cartesia-version": "2025-04-16",
100
+ };
101
+ if (this.client.apiKey) {
102
+ headers["Authorization"] = `Bearer ${this.client.apiKey}`;
103
+ }
104
+ this.socket = new WebSocket(url.toString(), {
105
+ headers: headers,
106
+ });
107
+ return new Promise((resolve, reject) => {
108
+ this.socket.on("open", () => {
109
+ console.log("WebSocket connected.");
110
+ resolve();
111
+ });
112
+ this.socket.on("error", (err) => {
113
+ console.error("WebSocket error:", err);
114
+ reject(err);
115
+ });
116
+ this.socket.on("message", (data) => {
117
+ this.handleMessage(data);
118
+ });
119
+ this.socket.on("close", () => {
120
+ console.log("WebSocket closed.");
121
+ this.sources.forEach((s) => { s.markDone(); });
122
+ if (this.defaultSource)
123
+ this.defaultSource.markDone();
124
+ });
125
+ });
126
+ }
127
+ handleMessage(data) {
128
+ try {
129
+ const str = data.toString();
130
+ const msg = JSON.parse(str);
131
+ const contextId = msg.context_id;
132
+ let source = contextId ? this.sources.get(contextId) : this.defaultSource;
133
+ // If we received a message for a context we don't know about, and we have a default source, use it
134
+ if (!source && this.defaultSource) {
135
+ source = this.defaultSource;
136
+ }
137
+ if (msg.type === "chunk" && msg.data) {
138
+ const audioData = Buffer.from(msg.data, "base64");
139
+ if (source)
140
+ source.push(audioData);
141
+ }
142
+ else if (msg.type === "done") {
143
+ if (source)
144
+ source.markDone();
145
+ }
146
+ else if (msg.type === "error") {
147
+ console.error("Server error:", msg);
148
+ if (source)
149
+ source.markDone(); // Fail the stream?
150
+ }
151
+ }
152
+ catch (e) {
153
+ console.error("Error parsing message:", e);
154
+ }
155
+ }
156
+ async send(request) {
157
+ if (!this.socket) {
158
+ throw new Error("WebSocket not connected");
159
+ }
160
+ // Ensure request has a context_id so we can route the response
161
+ const contextId = request.contextId || uuidv4();
162
+ const source = new AudioSource();
163
+ this.sources.set(contextId, source);
164
+ // Also set as default source if none exists, for compatibility with simple tests
165
+ if (!this.defaultSource) {
166
+ this.defaultSource = source;
167
+ }
168
+ // Construct payload
169
+ const payload = {
170
+ model_id: request.modelId,
171
+ transcript: request.transcript,
172
+ voice: request.voice,
173
+ context_id: contextId,
174
+ };
175
+ // Output Format
176
+ if (request.outputFormat) {
177
+ payload.output_format = {
178
+ container: request.outputFormat.container,
179
+ encoding: request.outputFormat.encoding,
180
+ sample_rate: request.outputFormat.sampleRate,
181
+ bit_rate: request.outputFormat.bitRate,
182
+ };
183
+ }
184
+ else if (this.config) {
185
+ payload.output_format = {
186
+ container: this.config.container,
187
+ encoding: this.config.encoding,
188
+ sample_rate: this.config.sampleRate,
189
+ };
190
+ }
191
+ // Generation Config
192
+ if (request.generationConfig) {
193
+ payload.generation_config = request.generationConfig;
194
+ }
195
+ // Other fields
196
+ if (request.continue !== undefined)
197
+ payload.continue = request.continue;
198
+ if (request.duration !== undefined)
199
+ payload.duration = request.duration;
200
+ if (request.addTimestamps !== undefined)
201
+ payload.add_timestamps = request.addTimestamps;
202
+ if (request.addPhonemeTimestamps !== undefined)
203
+ payload.add_phoneme_timestamps = request.addPhonemeTimestamps;
204
+ this.socket.send(JSON.stringify(payload));
205
+ return {
206
+ source: source
207
+ };
208
+ }
209
+ disconnect() {
210
+ if (this.socket) {
211
+ this.socket.close();
212
+ }
213
+ }
214
+ }
215
+ /** @deprecated Use the new SDK's tts methods on the {@link Cartesia} instance instead. */
216
+ export class TTSWrapper {
217
+ constructor(client) {
218
+ this.client = client;
219
+ }
220
+ /** @deprecated Use {@link Cartesia.tts.websocket} instead. */
221
+ websocket(config) {
222
+ return new WebSocketWrapper(this.client, config);
223
+ }
224
+ /** @deprecated Use {@link Cartesia.tts.synthesizeBytes} instead. */
225
+ async bytes(request, requestOptions) {
226
+ const params = {
227
+ model_id: request.modelId,
228
+ transcript: request.transcript,
229
+ voice: request.voice,
230
+ generation_config: request.generationConfig,
231
+ context_id: request.contextId,
232
+ };
233
+ if (request.outputFormat) {
234
+ params.output_format = {
235
+ ...request.outputFormat,
236
+ sample_rate: request.outputFormat.sampleRate,
237
+ bit_rate: request.outputFormat.bitRate,
238
+ };
239
+ // Remove camelCase keys
240
+ delete params.output_format.sampleRate;
241
+ delete params.output_format.bitRate;
242
+ }
243
+ const options = {};
244
+ if (requestOptions) {
245
+ if (requestOptions.timeoutInSeconds) {
246
+ options.timeout = requestOptions.timeoutInSeconds * 1000;
247
+ }
248
+ if (requestOptions.maxRetries !== undefined) {
249
+ options.maxRetries = requestOptions.maxRetries;
250
+ }
251
+ options.headers = requestOptions.headers;
252
+ options.signal = requestOptions.abortSignal;
253
+ }
254
+ // @ts-ignore
255
+ return wrap(this.client.tts.synthesizeBytes(params, options));
256
+ }
257
+ }
258
+ //# sourceMappingURL=tts-wrapper.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tts-wrapper.mjs","sourceRoot":"","sources":["../src/backcompat/tts-wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type Supplier<T> = T | Promise<T> | (() => T | Promise<T>);
2
+ export interface CartesiaClientOptions {
3
+ environment?: Supplier<"https://api.cartesia.ai" | string>;
4
+ /** Specify a custom URL to connect the client to. */
5
+ baseUrl?: Supplier<string>;
6
+ apiKey?: Supplier<string | undefined>;
7
+ /** Override the Cartesia-Version header */
8
+ cartesiaVersion?: string;
9
+ fetcher?: any;
10
+ }
11
+ export interface BackCompatRequestOptions {
12
+ timeoutInSeconds?: number;
13
+ maxRetries?: number;
14
+ abortSignal?: AbortSignal;
15
+ cartesiaVersion?: string;
16
+ headers?: Record<string, string>;
17
+ }
18
+ //# sourceMappingURL=types.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/backcompat/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACrC,WAAW,CAAC,EAAE,QAAQ,CAAC,yBAAyB,GAAG,MAAM,CAAC,CAAC;IAC3D,qDAAqD;IACrD,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC"}
@@ -0,0 +1,18 @@
1
+ export type Supplier<T> = T | Promise<T> | (() => T | Promise<T>);
2
+ export interface CartesiaClientOptions {
3
+ environment?: Supplier<"https://api.cartesia.ai" | string>;
4
+ /** Specify a custom URL to connect the client to. */
5
+ baseUrl?: Supplier<string>;
6
+ apiKey?: Supplier<string | undefined>;
7
+ /** Override the Cartesia-Version header */
8
+ cartesiaVersion?: string;
9
+ fetcher?: any;
10
+ }
11
+ export interface BackCompatRequestOptions {
12
+ timeoutInSeconds?: number;
13
+ maxRetries?: number;
14
+ abortSignal?: AbortSignal;
15
+ cartesiaVersion?: string;
16
+ headers?: Record<string, string>;
17
+ }
18
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/backcompat/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAElE,MAAM,WAAW,qBAAqB;IACrC,WAAW,CAAC,EAAE,QAAQ,CAAC,yBAAyB,GAAG,MAAM,CAAC,CAAC;IAC3D,qDAAqD;IACrD,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtC,2CAA2C;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,GAAG,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/backcompat/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/backcompat/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import * as fs from "fs";
2
+ import { Cartesia } from "../client.mjs";
3
+ import { Readable } from "stream";
4
+ import { BackCompatRequestOptions } from "./types.mjs";
5
+ export interface BackCompatVoiceChangerBytesRequest {
6
+ voiceId: string;
7
+ outputFormatContainer: "raw" | "wav" | "mp3";
8
+ outputFormatSampleRate: 8000 | 16000 | 22050 | 24000 | 44100 | 48000;
9
+ outputFormatEncoding?: "pcm_f32le" | "pcm_s16le" | "mulaw" | "alaw";
10
+ outputFormatBitRate?: 32000 | 64000 | 96000 | 128000 | 192000;
11
+ }
12
+ /** @deprecated Use the new SDK's voice changer methods on the {@link Cartesia} instance instead. */
13
+ export declare class VoiceChangerWrapper {
14
+ private client;
15
+ constructor(client: Cartesia);
16
+ /** @deprecated Use {@link Cartesia.voiceChanger.changeVoiceBytes} instead. */
17
+ bytes(clip: File | fs.ReadStream | Blob, request: BackCompatVoiceChangerBytesRequest, requestOptions?: BackCompatRequestOptions): Promise<void | Readable>;
18
+ }
19
+ //# sourceMappingURL=voice-changer-wrapper.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice-changer-wrapper.d.mts","sourceRoot":"","sources":["../src/backcompat/voice-changer-wrapper.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,QAAQ,EAAE;OAGZ,EAAE,QAAQ,EAAE,MAAM,QAAQ;OAC1B,EAAE,wBAAwB,EAAE;AAGnC,MAAM,WAAW,kCAAkC;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IAC7C,sBAAsB,EAAE,IAAI,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACrE,oBAAoB,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IACpE,mBAAmB,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9D;AAED,oGAAoG;AACpG,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,MAAM,CAAW;gBAEb,MAAM,EAAE,QAAQ;IAI5B,8EAA8E;IACxE,KAAK,CACV,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,UAAU,GAAG,IAAI,EACjC,OAAO,EAAE,kCAAkC,EAC3C,cAAc,CAAC,EAAE,wBAAwB;CAyC1C"}
@@ -0,0 +1,19 @@
1
+ import * as fs from "fs";
2
+ import { Cartesia } from "../client.js";
3
+ import { Readable } from "stream";
4
+ import { BackCompatRequestOptions } from "./types.js";
5
+ export interface BackCompatVoiceChangerBytesRequest {
6
+ voiceId: string;
7
+ outputFormatContainer: "raw" | "wav" | "mp3";
8
+ outputFormatSampleRate: 8000 | 16000 | 22050 | 24000 | 44100 | 48000;
9
+ outputFormatEncoding?: "pcm_f32le" | "pcm_s16le" | "mulaw" | "alaw";
10
+ outputFormatBitRate?: 32000 | 64000 | 96000 | 128000 | 192000;
11
+ }
12
+ /** @deprecated Use the new SDK's voice changer methods on the {@link Cartesia} instance instead. */
13
+ export declare class VoiceChangerWrapper {
14
+ private client;
15
+ constructor(client: Cartesia);
16
+ /** @deprecated Use {@link Cartesia.voiceChanger.changeVoiceBytes} instead. */
17
+ bytes(clip: File | fs.ReadStream | Blob, request: BackCompatVoiceChangerBytesRequest, requestOptions?: BackCompatRequestOptions): Promise<void | Readable>;
18
+ }
19
+ //# sourceMappingURL=voice-changer-wrapper.d.ts.map