@just-every/ensemble 0.2.84 → 0.2.86

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_voice.d.ts","sourceRoot":"","sources":["../../core/ensemble_voice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI9E,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAiCpC,wBAAuB,aAAa,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,mBAAwB,GAClC,cAAc,CAAC,GAAG,CAAC,CAsIrB"}
1
+ {"version":3,"file":"ensemble_voice.d.ts","sourceRoot":"","sources":["../../core/ensemble_voice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAK9E,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAiCpC,wBAAuB,aAAa,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,mBAAwB,GAClC,cAAc,CAAC,GAAG,CAAC,CAsTrB"}
@@ -1,27 +1,85 @@
1
1
  import { getModelFromAgent, getModelProvider } from '../model_providers/model_provider.js';
2
+ import { findModel } from '../data/model_data.js';
2
3
  export async function* ensembleVoice(text, agent, options = {}) {
3
4
  const streamOptions = { ...options, stream: true };
4
5
  const format = options.response_format || 'mp3';
5
6
  const isPCM = format.includes('pcm');
7
+ const model = await getModelFromAgent(agent, 'voice');
8
+ const isGemini = model.startsWith('gemini');
9
+ const isElevenLabs = model.startsWith('eleven_');
10
+ const startTime = Date.now();
11
+ let firstByteTime = null;
12
+ console.log(`[ensembleVoice] Starting TTS generation with model: ${model}`);
13
+ const modelInfo = findModel(model);
14
+ const isOpenAI = modelInfo?.provider === 'openai';
15
+ const isWav = format === 'wav';
16
+ const effectiveFormat = isGemini || (isElevenLabs && isPCM) ? 'wav' : format;
17
+ const supportsStreaming = effectiveFormat === 'wav' || effectiveFormat.includes('pcm');
18
+ const getMimeType = (fmt) => {
19
+ const mimeTypes = {
20
+ mp3: 'audio/mpeg',
21
+ opus: 'audio/opus',
22
+ aac: 'audio/aac',
23
+ flac: 'audio/flac',
24
+ wav: 'audio/wav',
25
+ pcm: 'audio/pcm',
26
+ pcm_16000: 'audio/pcm',
27
+ pcm_22050: 'audio/pcm',
28
+ pcm_24000: 'audio/pcm',
29
+ pcm_44100: 'audio/pcm',
30
+ };
31
+ return mimeTypes[fmt] || 'audio/mpeg';
32
+ };
33
+ yield {
34
+ type: 'format_info',
35
+ timestamp: new Date().toISOString(),
36
+ format: effectiveFormat,
37
+ mimeType: getMimeType(effectiveFormat),
38
+ supportsStreaming,
39
+ ...(isPCM || isGemini || (isOpenAI && isWav)
40
+ ? {
41
+ pcmParameters: {
42
+ sampleRate: isGemini
43
+ ? 24000
44
+ : isOpenAI
45
+ ? 24000
46
+ : format === 'pcm_44100'
47
+ ? 44100
48
+ : format === 'pcm_22050'
49
+ ? 22050
50
+ : format === 'pcm_16000'
51
+ ? 16000
52
+ : 24000,
53
+ channels: 1,
54
+ bitDepth: 16,
55
+ },
56
+ }
57
+ : {}),
58
+ };
6
59
  yield {
7
60
  type: 'audio_stream',
8
61
  timestamp: new Date().toISOString(),
9
- format: format,
10
- ...(isPCM && {
11
- pcmParameters: {
12
- sampleRate: format === 'pcm_44100'
13
- ? 44100
14
- : format === 'pcm_22050'
15
- ? 22050
16
- : format === 'pcm_16000'
17
- ? 16000
18
- : 24000,
19
- channels: 1,
20
- bitDepth: 16,
21
- },
22
- }),
62
+ format: effectiveFormat,
63
+ ...(isPCM || isGemini || (isOpenAI && isWav)
64
+ ? {
65
+ pcmParameters: {
66
+ sampleRate: isGemini
67
+ ? 24000
68
+ : isOpenAI
69
+ ? 24000
70
+ : format === 'pcm_44100'
71
+ ? 44100
72
+ : format === 'pcm_22050'
73
+ ? 22050
74
+ : format === 'pcm_16000'
75
+ ? 16000
76
+ : 24000,
77
+ channels: 1,
78
+ bitDepth: 16,
79
+ },
80
+ }
81
+ : {}),
23
82
  };
24
- const model = await getModelFromAgent(agent, 'voice');
25
83
  let provider;
26
84
  try {
27
85
  provider = getModelProvider(model);
@@ -34,8 +92,10 @@ export async function* ensembleVoice(text, agent, options = {}) {
34
92
  }
35
93
  let result;
36
94
  try {
95
+ const providerStartTime = Date.now();
37
96
  result = await provider.createVoice(text, model, streamOptions);
38
- console.log('[ensembleVoice] Got result from provider:', typeof result, result instanceof ReadableStream ? 'ReadableStream' : 'ArrayBuffer');
97
+ const providerTime = Date.now() - providerStartTime;
98
+ console.log(`[ensembleVoice] Got result from provider in ${providerTime}ms:`, typeof result, result instanceof ReadableStream ? 'ReadableStream' : 'ArrayBuffer');
39
99
  }
40
100
  catch (error) {
41
101
  console.error('[ensembleVoice] Error calling provider.createVoice:', error);
@@ -48,13 +108,99 @@ export async function* ensembleVoice(text, agent, options = {}) {
48
108
  const CHUNK_SIZE = 8192;
49
109
  let buffer = new Uint8Array(0);
50
110
  let chunkIndex = 0;
51
- try {
52
- let totalBytesReceived = 0;
111
+ const needsWavHandling = isGemini || (isElevenLabs && isPCM) || (isOpenAI && isWav);
112
+ if (needsWavHandling) {
113
+ const provider = isGemini ? 'Gemini' : isOpenAI ? 'OpenAI' : 'ElevenLabs';
114
+ let sampleRate;
115
+ if (isGemini || isOpenAI) {
116
+ sampleRate = 24000;
117
+ }
118
+ else {
119
+ if (format === 'pcm_16000')
120
+ sampleRate = 16000;
121
+ else if (format === 'pcm_22050')
122
+ sampleRate = 22050;
123
+ else if (format === 'pcm_44100')
124
+ sampleRate = 44100;
125
+ else
126
+ sampleRate = 24000;
127
+ }
128
+ console.log(`[ensembleVoice] ${provider}: Will stream with sample rate ${sampleRate}Hz`);
129
+ const providerChunkSize = isGemini ? 32768 : CHUNK_SIZE;
130
+ let isFirstChunk = true;
131
+ let hasWavHeader = false;
132
+ let headerBuffer = new Uint8Array(0);
133
+ while (true) {
134
+ const { done, value } = await reader.read();
135
+ if (value) {
136
+ if (!firstByteTime) {
137
+ firstByteTime = Date.now();
138
+ }
139
+ const newBuffer = new Uint8Array(buffer.length + value.length);
140
+ newBuffer.set(buffer);
141
+ newBuffer.set(value, buffer.length);
142
+ buffer = newBuffer;
143
+ }
144
+ if (isFirstChunk && buffer.length >= 4) {
145
+ const header = new TextDecoder().decode(buffer.slice(0, 4));
146
+ hasWavHeader = header === 'RIFF';
147
+ isFirstChunk = false;
148
+ if (!hasWavHeader) {
149
+ const dataSize = 0x7ffffffe;
150
+ const wavHeader = new ArrayBuffer(44);
151
+ const view = new DataView(wavHeader);
152
+ const setString = (offset, str) => {
153
+ for (let i = 0; i < str.length; i++) {
154
+ view.setUint8(offset + i, str.charCodeAt(i));
155
+ }
156
+ };
157
+ setString(0, 'RIFF');
158
+ view.setUint32(4, dataSize + 36, true);
159
+ setString(8, 'WAVE');
160
+ setString(12, 'fmt ');
161
+ view.setUint32(16, 16, true);
162
+ view.setUint16(20, 1, true);
163
+ view.setUint16(22, 1, true);
164
+ view.setUint32(24, sampleRate, true);
165
+ view.setUint32(28, sampleRate * 2, true);
166
+ view.setUint16(32, 2, true);
167
+ view.setUint16(34, 16, true);
168
+ setString(36, 'data');
169
+ view.setUint32(40, dataSize, true);
170
+ headerBuffer = new Uint8Array(wavHeader);
171
+ const newBuffer = new Uint8Array(headerBuffer.length + buffer.length);
172
+ newBuffer.set(headerBuffer);
173
+ newBuffer.set(buffer, headerBuffer.length);
174
+ buffer = newBuffer;
175
+ }
176
+ }
177
+ while (buffer.length >= providerChunkSize || (done && buffer.length > 0)) {
178
+ const chunkSize = Math.min(providerChunkSize, buffer.length);
179
+ const chunk = buffer.slice(0, chunkSize);
180
+ buffer = buffer.slice(chunkSize);
181
+ const base64Chunk = Buffer.from(chunk).toString('base64');
182
+ const isFinalChunk = done && buffer.length === 0;
183
+ yield {
184
+ type: 'audio_stream',
185
+ chunkIndex: chunkIndex++,
186
+ isFinalChunk: isFinalChunk,
187
+ data: base64Chunk,
188
+ timestamp: new Date().toISOString(),
189
+ };
190
+ if (isFinalChunk)
191
+ break;
192
+ }
193
+ if (done)
194
+ break;
195
+ }
196
+ }
197
+ else {
53
198
  while (true) {
54
199
  const { done, value } = await reader.read();
55
200
  if (value) {
56
- totalBytesReceived += value.length;
57
- console.log(`[ensembleVoice] Received chunk: ${value.length} bytes, total: ${totalBytesReceived} bytes`);
201
+ if (!firstByteTime) {
202
+ firstByteTime = Date.now();
203
+ }
58
204
  const newBuffer = new Uint8Array(buffer.length + value.length);
59
205
  newBuffer.set(buffer);
60
206
  newBuffer.set(value, buffer.length);
@@ -73,7 +219,6 @@ export async function* ensembleVoice(text, agent, options = {}) {
73
219
  data: base64Chunk,
74
220
  timestamp: new Date().toISOString(),
75
221
  };
76
- console.log(`[ensembleVoice] Yielding audio chunk ${audioEvent.chunkIndex}, size: ${chunk.length} bytes, final: ${isFinalChunk}`);
77
222
  yield audioEvent;
78
223
  if (isFinalChunk)
79
224
  break;
@@ -82,9 +227,8 @@ export async function* ensembleVoice(text, agent, options = {}) {
82
227
  break;
83
228
  }
84
229
  }
85
- finally {
86
- reader.releaseLock();
87
- }
230
+ const totalTime = Date.now() - startTime;
231
+ console.log(`[ensembleVoice] ${model}: Total generation time: ${totalTime}ms`);
88
232
  try {
89
233
  const costTrackerModule = await import('../utils/cost_tracker.js');
90
234
  const costTracker = costTrackerModule.costTracker;
@@ -1 +1 @@
1
- {"version":3,"file":"ensemble_voice.js","sourceRoot":"","sources":["../../core/ensemble_voice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensemble_voice.js","sourceRoot":"","sources":["../../core/ensemble_voice.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export * from './utils/quota_tracker.js';
9
9
  export * from './utils/image_utils.js';
10
10
  export * from './utils/llm_logger.js';
11
11
  export { createToolFunction } from './utils/create_tool_function.js';
12
+ export { AudioStreamPlayer } from './utils/audio_stream_player.js';
12
13
  export { getPauseController, isPaused, pause, resume, waitWhilePaused, type PauseController, } from './utils/pause_controller.js';
13
14
  export { getEventController, setEventHandler, emitEvent, hasEventHandler, type EventController, type EventHandler, } from './utils/event_controller.js';
14
15
  export { isValidBase64, detectImageType } from './utils/image_validation.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ export * from './utils/quota_tracker.js';
9
9
  export * from './utils/image_utils.js';
10
10
  export * from './utils/llm_logger.js';
11
11
  export { createToolFunction } from './utils/create_tool_function.js';
12
+ export { AudioStreamPlayer } from './utils/audio_stream_player.js';
12
13
  export { getPauseController, isPaused, pause, resume, waitWhilePaused, } from './utils/pause_controller.js';
13
14
  export { getEventController, setEventHandler, emitEvent, hasEventHandler, } from './utils/event_controller.js';
14
15
  export { isValidBase64, detectImageType } from './utils/image_validation.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,12 @@ export declare const ELEVENLABS_VOICES: {
11
11
  readonly adam: "pNInz6obpgDQGcFmaJgB";
12
12
  readonly sam: "yoZ06aMxZJJ28mfd3POQ";
13
13
  readonly george: "JBFqnCBsd6RMkjVDRZzb";
14
+ readonly jessica: "cgSgspJ2msm6clMCkdW9";
15
+ readonly laura: "FGY2WhTYpPnrIDTdsKH5";
16
+ readonly callum: "N2lVS1w4EtoT3dr4eOWO";
17
+ readonly unreal: "YOq2y2Up4RgXP2HyXjE5";
18
+ readonly blondie: "exsUS4vynmxd379XN4yO";
19
+ readonly james: "h0KXSKLMvNtfCIMB8I9L";
14
20
  };
15
21
  declare class ElevenLabsProvider extends BaseModelProvider {
16
22
  private _apiKey?;
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../model_providers/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,eAAO,MAAM,iBAAiB;;;;;;;;;;;CAWpB,CAAC;AAKX,cAAM,kBAAmB,SAAQ,iBAAiB;IAC9C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,OAAO,CAAkC;;IASjD,OAAO,KAAK,MAAM,GAUjB;IAKD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAOrC,YAAY,IAAI,GAAG;IAQb,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAOvB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAOrB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAOrB,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IA8FpD,OAAO,CAAC,eAAe;IAmBhB,oBAAoB,IAAI,cAAc,CAAC,GAAG,CAAC;CAIrD;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"elevenlabs.d.ts","sourceRoot":"","sources":["../../model_providers/elevenlabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAGxD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiBpB,CAAC;AAKX,cAAM,kBAAmB,SAAQ,iBAAiB;IAC9C,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,OAAO,CAAkC;;IASjD,OAAO,KAAK,MAAM,GAUjB;IAKD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAOrC,YAAY,IAAI,GAAG;IAQb,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;IAOvB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAOrB,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAOrB,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAkGpD,OAAO,CAAC,eAAe;IAmBhB,oBAAoB,IAAI,cAAc,CAAC,GAAG,CAAC;CAIrD;AAGD,eAAO,MAAM,kBAAkB,oBAA2B,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -11,6 +11,12 @@ export const ELEVENLABS_VOICES = {
11
11
  adam: 'pNInz6obpgDQGcFmaJgB',
12
12
  sam: 'yoZ06aMxZJJ28mfd3POQ',
13
13
  george: 'JBFqnCBsd6RMkjVDRZzb',
14
+ jessica: 'cgSgspJ2msm6clMCkdW9',
15
+ laura: 'FGY2WhTYpPnrIDTdsKH5',
16
+ callum: 'N2lVS1w4EtoT3dr4eOWO',
17
+ unreal: 'YOq2y2Up4RgXP2HyXjE5',
18
+ blondie: 'exsUS4vynmxd379XN4yO',
19
+ james: 'h0KXSKLMvNtfCIMB8I9L',
14
20
  };
15
21
  class ElevenLabsProvider extends BaseModelProvider {
16
22
  _apiKey;
@@ -50,7 +56,7 @@ class ElevenLabsProvider extends BaseModelProvider {
50
56
  voiceId = ELEVENLABS_VOICES[voiceId];
51
57
  }
52
58
  const outputFormat = this.mapOutputFormat(opts?.response_format || 'mp3_44100_128');
53
- console.log(`[ElevenLabs] Generating speech with model ${modelId}, voice: ${voiceId}, format: ${outputFormat}`);
59
+ console.log(`[ElevenLabs] Generating speech with model ${modelId}, voice: ${voiceId}, format: ${outputFormat}, streaming: ${opts?.stream || false}`);
54
60
  if (model === 'eleven_v3' && opts?.affect) {
55
61
  text = `[${opts.affect.toUpperCase()}] ${text}`;
56
62
  }
@@ -58,15 +64,17 @@ class ElevenLabsProvider extends BaseModelProvider {
58
64
  text,
59
65
  model_id: modelId,
60
66
  voice_settings: {
61
- stability: 0.45,
62
- similarity_boost: 0.75,
67
+ stability: 0.4,
68
+ similarity_boost: 0.5,
69
+ use_speaker_boost: true,
63
70
  ...(opts?.voice_settings || {}),
64
71
  },
65
72
  };
66
- if (requestBody.voice_settings.speed > 1) {
67
- requestBody.voice_settings.speed = requestBody.voice_settings.speed / 2;
73
+ if (opts?.speed !== undefined) {
74
+ requestBody.voice_settings.speed = opts.speed;
68
75
  }
69
- const url = `${this.baseUrl}/text-to-speech/${voiceId}?output_format=${outputFormat}`;
76
+ const endpoint = opts?.stream ? 'stream' : '';
77
+ const url = `${this.baseUrl}/text-to-speech/${voiceId}${endpoint ? '/stream' : ''}?output_format=${outputFormat}`;
70
78
  const response = await fetch(url, {
71
79
  method: 'POST',
72
80
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../model_providers/elevenlabs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../model_providers/elevenlabs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAwNvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAKD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAkKD,qBAAa,cAAe,SAAQ,iBAAiB;IACjD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAS3B,OAAO,KAAK,MAAM,GAcjB;IASK,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YA6IjG,2BAA2B;IA+BnC,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,GACvB,cAAc,CAAC,mBAAmB,CAAC;IA0YhC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsEhG,OAAO,CAAC,YAAY;IAmBd,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAuC,EAC9C,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAiIpD,OAAO,CAAC,gBAAgB;IA6DjB,mBAAmB,CACtB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,kBAAkB,CAAC;IA4Q/B,iBAAiB,CACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;CAyB1B;AA2gBD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../model_providers/gemini.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,EAGH,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EAEnB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,WAAW,EAOd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAwNvD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAO1D;AAKD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzD;AAkKD,qBAAa,cAAe,SAAQ,iBAAiB;IACjD,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,MAAM,CAAC,EAAE,MAAM;IAS3B,OAAO,KAAK,MAAM,GAcjB;IASK,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;YA6IjG,2BAA2B;IA+BnC,oBAAoB,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,eAAe,GACvB,cAAc,CAAC,mBAAmB,CAAC;IA0YhC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAsEhG,OAAO,CAAC,YAAY;IAmBd,WAAW,CACb,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAuC,EAC9C,IAAI,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC;IAqJpD,OAAO,CAAC,gBAAgB;IA6DjB,mBAAmB,CACtB,KAAK,EAAE,wBAAwB,EAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,kBAAkB,CAAC;IA4Q/B,iBAAiB,CACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,WAAW,CAAC;CAyB1B;AA2gBD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -840,28 +840,12 @@ export class GeminiProvider extends BaseModelProvider {
840
840
  text = `${say_prefix} and say:\n${text}`;
841
841
  }
842
842
  }
843
- const response = await this.client.models.generateContent({
843
+ console.log(`[Gemini] Starting generateContentStream call...`);
844
+ const streamPromise = this.client.models.generateContentStream({
844
845
  model,
845
846
  contents: [{ role: 'user', parts: [{ text }] }],
846
847
  config,
847
848
  });
848
- if (!response.candidates || response.candidates.length === 0) {
849
- throw new Error('No audio generated from Gemini TTS');
850
- }
851
- const candidate = response.candidates[0];
852
- if (!candidate.content.parts || candidate.content.parts.length === 0) {
853
- throw new Error('No audio parts in Gemini TTS response');
854
- }
855
- let audioData;
856
- for (const part of candidate.content.parts) {
857
- if (part.inlineData && part.inlineData.mimeType?.includes('audio')) {
858
- audioData = part.inlineData.data;
859
- break;
860
- }
861
- }
862
- if (!audioData) {
863
- throw new Error('No audio data found in Gemini TTS response');
864
- }
865
849
  const textLength = text.length;
866
850
  costTracker.addUsage({
867
851
  model,
@@ -873,27 +857,60 @@ export class GeminiProvider extends BaseModelProvider {
873
857
  type: 'voice_generation',
874
858
  },
875
859
  });
876
- const binaryString = atob(audioData);
877
- const bytes = new Uint8Array(binaryString.length);
878
- for (let i = 0; i < binaryString.length; i++) {
879
- bytes[i] = binaryString.charCodeAt(i);
880
- }
881
860
  if (opts?.stream) {
882
- const chunkSize = 8192;
883
- let position = 0;
884
- return new ReadableStream({
885
- pull(controller) {
886
- if (position >= bytes.length) {
887
- controller.close();
888
- return;
861
+ const stream = await streamPromise;
862
+ const chunks = [];
863
+ for await (const chunk of stream) {
864
+ if (chunk.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data) {
865
+ const part = chunk.candidates[0].content.parts[0];
866
+ const binaryString = atob(part.inlineData.data);
867
+ const bytes = new Uint8Array(binaryString.length);
868
+ for (let i = 0; i < binaryString.length; i++) {
869
+ bytes[i] = binaryString.charCodeAt(i);
889
870
  }
890
- const chunk = bytes.slice(position, Math.min(position + chunkSize, bytes.length));
891
- position += chunk.length;
892
- controller.enqueue(chunk);
871
+ chunks.push(bytes);
872
+ if (part.inlineData.mimeType) {
873
+ console.log(`[Gemini] Audio format: ${part.inlineData.mimeType}`);
874
+ }
875
+ }
876
+ }
877
+ const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
878
+ const combined = new Uint8Array(totalLength);
879
+ let offset = 0;
880
+ for (const chunk of chunks) {
881
+ combined.set(chunk, offset);
882
+ offset += chunk.length;
883
+ }
884
+ return new ReadableStream({
885
+ start(controller) {
886
+ controller.enqueue(combined);
887
+ controller.close();
893
888
  },
894
889
  });
895
890
  }
896
- return bytes.buffer;
891
+ let allData = new Uint8Array(0);
892
+ const stream = await streamPromise;
893
+ for await (const chunk of stream) {
894
+ if (!chunk.candidates || !chunk.candidates[0]?.content?.parts) {
895
+ continue;
896
+ }
897
+ const part = chunk.candidates[0].content.parts[0];
898
+ if (part?.inlineData?.data) {
899
+ const binaryString = atob(part.inlineData.data);
900
+ const bytes = new Uint8Array(binaryString.length);
901
+ for (let i = 0; i < binaryString.length; i++) {
902
+ bytes[i] = binaryString.charCodeAt(i);
903
+ }
904
+ const newData = new Uint8Array(allData.length + bytes.length);
905
+ newData.set(allData);
906
+ newData.set(bytes, allData.length);
907
+ allData = newData;
908
+ }
909
+ }
910
+ if (allData.length === 0) {
911
+ throw new Error('No audio data generated from Gemini TTS');
912
+ }
913
+ return allData.buffer;
897
914
  }
898
915
  catch (error) {
899
916
  console.error('[Gemini] Error generating voice:', error);