@llmrtc/llmrtc-provider-openai 1.1.0 → 1.2.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,77 @@
1
1
  # @llmrtc/llmrtc-provider-openai
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - fd91344: Anthropic modernization and richer stop reasons.
8
+ - The StopReason union gains `refusal`, `content_filter`, `pause_turn`, and
9
+ `context_overflow`. Note for TypeScript consumers with exhaustive switches:
10
+ this widens the union. OpenAI-compatible providers now report
11
+ `content_filter` for filtered responses (previously mis-reported as
12
+ `stop_sequence`); Gemini safety blocks and Bedrock guardrail interventions
13
+ also map to `content_filter`.
14
+ - The Anthropic provider defaults to `claude-sonnet-5` and automatically
15
+ omits temperature/top_p for model families that reject them (Sonnet 5,
16
+ Opus 4.7+, Fable tier), with a `samplingParamsSupported` override. The
17
+ Bedrock provider applies the same guard for Claude models.
18
+ - Orchestrators log a warning when a turn ends with an unusual stop reason.
19
+ - CLI and example fallbacks move off retired model ids.
20
+
21
+ - 319bb47: OpenAI voice updates: steerable TTS and current transcription models.
22
+ - TTSConfig gains an optional `instructions` field for instructable TTS
23
+ models. OpenAITTSProvider accepts `instructions` at the constructor and
24
+ per call, sends them for gpt-\* models (e.g. gpt-4o-mini-tts), and
25
+ ignores them with a one-time warning on tts-1/tts-1-hd.
26
+ - OpenAITTSVoice widened to the current voice roster (adds ash, ballad,
27
+ coral, sage, verse) while accepting any string for forward
28
+ compatibility; TTS model accepts any string. Note: code doing
29
+ exhaustive switches over OpenAITTSVoice will need adjusting, matching
30
+ the same widening in the official openai SDK. ballad/verse require
31
+ gpt-4o-mini-tts; the other nine voices work on all TTS models.
32
+ - OpenAIWhisperProvider documents gpt-4o-transcribe /
33
+ gpt-4o-mini-transcribe support.
34
+ - CLI: new OPENAI_STT_MODEL, OPENAI_TTS_MODEL, and
35
+ OPENAI_TTS_INSTRUCTIONS environment variables.
36
+
37
+ - a7d1ecc: Streaming speech-to-text: live interim transcripts while the user speaks.
38
+ - New ElevenLabsScribeProvider: batch STT via Scribe v2 and realtime
39
+ streaming via the Scribe v2 Realtime WebSocket (sub-150ms partials).
40
+ - New OpenAIRealtimeSTTProvider: streaming transcription over the OpenAI
41
+ Realtime API (gpt-realtime-whisper by default; audio-duration billing).
42
+ - Opt-in server mode streamingSTT (CLI: STREAMING_STT=true) streams mic
43
+ audio to the STT provider from VAD speech start, relaying partial
44
+ transcripts to the client over the existing transcript/isFinal
45
+ protocol; falls back to buffered STT when the provider can't stream.
46
+ - Both orchestrators gain runTurnStreamFromAudioStream; STTProvider
47
+ gains an optional streamingInputSampleRate hint; core exports an
48
+ AsyncEventQueue utility. Buffered STT remains the default.
49
+ - Streaming sockets carry watchdog timeouts (connect/inactivity/final)
50
+ and surface early closes or transcription failures as turn errors
51
+ instead of silently dropping the utterance.
52
+ - Behavior notes: the onSpeechStart server hook now fires after barge-in
53
+ cancellation, so a slow hook can no longer delay interruptions;
54
+ STT_PROVIDER=elevenlabs now selects ElevenLabs Scribe (previously it
55
+ silently fell back to OpenAI Whisper).
56
+
57
+ ### Patch Changes
58
+
59
+ - Updated dependencies [fd91344]
60
+ - Updated dependencies [319bb47]
61
+ - Updated dependencies [a7d1ecc]
62
+ - @llmrtc/llmrtc-core@1.2.0
63
+
64
+ ## 1.1.1
65
+
66
+ ### Patch Changes
67
+
68
+ - b35b4e1: Fix streaming TTS failing with "response.body?.getReader is not a function"
69
+ when the OpenAI SDK returns a Node Readable body (Node < 18 or apps loading
70
+ the SDK's Node shims). The provider now handles web ReadableStream bodies,
71
+ async-iterable Node stream bodies, and buffered fallback. Previously the
72
+ error was caught upstream and every turn silently fell back to
73
+ non-streaming TTS, adding seconds of latency.
74
+
3
75
  ## 1.1.0
4
76
 
5
77
  ### Minor Changes
package/README.md CHANGED
@@ -17,7 +17,7 @@ import { OpenAILLMProvider } from '@llmrtc/llmrtc-provider-openai';
17
17
 
18
18
  const llm = new OpenAILLMProvider({
19
19
  apiKey: process.env.OPENAI_API_KEY!,
20
- model: 'gpt-4o'
20
+ model: 'gpt-5.6-terra' // or 'gpt-5.6-sol' (flagship), 'gpt-5.6-luna' (fast)
21
21
  });
22
22
  ```
23
23
 
package/dist/index.d.ts CHANGED
@@ -16,6 +16,11 @@ export declare class OpenAILLMProvider implements LLMProvider {
16
16
  export interface OpenAIWhisperConfig {
17
17
  apiKey: string;
18
18
  baseURL?: string;
19
+ /**
20
+ * Transcription model (default: 'whisper-1'). The newer
21
+ * 'gpt-4o-transcribe' and 'gpt-4o-mini-transcribe' models run on the
22
+ * same endpoint with better accuracy, especially in noisy audio.
23
+ */
19
24
  model?: string;
20
25
  language?: string;
21
26
  }
@@ -27,32 +32,46 @@ export declare class OpenAIWhisperProvider implements STTProvider {
27
32
  constructor(config: OpenAIWhisperConfig);
28
33
  transcribe(audio: Buffer, config?: STTConfig): Promise<STTResult>;
29
34
  }
30
- export type OpenAITTSVoice = 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer';
35
+ export type OpenAITTSVoice = 'alloy' | 'ash' | 'ballad' | 'coral' | 'echo' | 'fable' | 'nova' | 'onyx' | 'sage' | 'shimmer' | 'verse' | (string & {});
31
36
  export type OpenAITTSFormat = 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm';
37
+ export type OpenAITTSModel = 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts' | (string & {});
32
38
  export interface OpenAITTSConfig {
33
39
  /** OpenAI API key */
34
40
  apiKey: string;
35
41
  /** Base URL for API (optional, for Azure OpenAI or proxies) */
36
42
  baseURL?: string;
37
43
  /** TTS model (default: 'tts-1') */
38
- model?: 'tts-1' | 'tts-1-hd' | 'gpt-4o-mini-tts';
44
+ model?: OpenAITTSModel;
39
45
  /** Default voice (default: 'alloy') */
40
46
  voice?: OpenAITTSVoice;
41
- /** Speech speed multiplier 0.25-4.0 (default: 1.0) */
47
+ /** Speech speed multiplier 0.25-4.0 (default: 1.0). No effect on gpt-4o-mini-tts - use `instructions` to direct pacing there. */
42
48
  speed?: number;
49
+ /**
50
+ * Default delivery instructions (tone, pacing, emotion, accent) for
51
+ * instructable models such as gpt-4o-mini-tts, e.g. "Speak like a
52
+ * calm customer-support agent". Instructions are only sent when the
53
+ * effective model name starts with 'gpt-'; on any other name
54
+ * (tts-1, tts-1-hd, proxy/deployment aliases) they are ignored with
55
+ * a one-time warning, since the API rejects them there.
56
+ */
57
+ instructions?: string;
43
58
  }
44
59
  /**
45
60
  * OpenAI Text-to-Speech Provider.
46
61
  *
47
- * Available voices: alloy, echo, fable, onyx, nova, shimmer
48
- * Available models: tts-1 (fast), tts-1-hd (quality), gpt-4o-mini-tts (instructable)
62
+ * Available voices: alloy, ash, coral, echo, fable, nova, onyx, sage,
63
+ * shimmer on all models; ballad and verse additionally on
64
+ * gpt-4o-mini-tts.
65
+ * Available models: tts-1 (fast), tts-1-hd (quality), gpt-4o-mini-tts
66
+ * (instructable - accepts natural-language delivery `instructions`).
49
67
  *
50
68
  * @example
51
69
  * ```typescript
52
70
  * const provider = new OpenAITTSProvider({
53
71
  * apiKey: 'sk-...',
54
- * model: 'tts-1',
55
- * voice: 'nova'
72
+ * model: 'gpt-4o-mini-tts',
73
+ * voice: 'coral',
74
+ * instructions: 'Speak warmly, at a relaxed pace.'
56
75
  * });
57
76
  * ```
58
77
  */
@@ -65,7 +84,10 @@ export declare class OpenAITTSProvider implements TTSProvider {
65
84
  private model;
66
85
  private voice;
67
86
  private speed;
87
+ private instructions?;
88
+ private warnedInstructionsUnsupported;
68
89
  constructor(config: OpenAITTSConfig);
90
+ private speechParams;
69
91
  speak(text: string, overrideConfig?: TTSConfig): Promise<TTSResult>;
70
92
  /**
71
93
  * Streaming TTS - returns audio chunks as they are generated.
@@ -76,3 +98,75 @@ export declare class OpenAITTSProvider implements TTSProvider {
76
98
  */
77
99
  speakStream(text: string, overrideConfig?: TTSConfig): AsyncIterable<Buffer>;
78
100
  }
101
+ export interface OpenAIRealtimeSTTConfig {
102
+ /** OpenAI API key */
103
+ apiKey: string;
104
+ /**
105
+ * Transcription model (default: 'gpt-realtime-whisper' - native
106
+ * streaming). 'gpt-4o-transcribe' / 'gpt-4o-mini-transcribe' also work
107
+ * over the Realtime API.
108
+ */
109
+ model?: string;
110
+ /** ISO language code hint */
111
+ language?: string;
112
+ /**
113
+ * Latency/accuracy trade-off for gpt-realtime-whisper
114
+ * (default: server-side default).
115
+ */
116
+ delay?: 'minimal' | 'low' | 'medium' | 'high' | 'xhigh';
117
+ /**
118
+ * Realtime WebSocket URL
119
+ * (default: 'wss://api.openai.com/v1/realtime?intent=transcription')
120
+ */
121
+ url?: string;
122
+ /**
123
+ * Socket watchdog timeouts in ms. Defaults: connect 10000, inactivity
124
+ * 30000, final-after-commit 15000. Mostly useful in tests.
125
+ */
126
+ timeoutsMs?: {
127
+ connect?: number;
128
+ inactivity?: number;
129
+ final?: number;
130
+ };
131
+ }
132
+ /**
133
+ * OpenAI Realtime Speech-to-Text Provider.
134
+ *
135
+ * Streams audio to a transcription-type Realtime API session and yields
136
+ * interim transcripts as the user speaks. Partial results carry the
137
+ * accumulated transcript-so-far; the final result carries the complete
138
+ * transcript. Billing follows the transcription model's audio pricing,
139
+ * not realtime LLM tokens.
140
+ *
141
+ * Input frames must be 24kHz mono 16-bit signed LE PCM
142
+ * (streamingInputSampleRate). transcribe() accepts a 16-bit mono PCM WAV
143
+ * buffer for compatibility with the buffered pipeline; for general batch
144
+ * transcription use OpenAIWhisperProvider instead.
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const stt = new OpenAIRealtimeSTTProvider({
149
+ * apiKey: process.env.OPENAI_API_KEY!,
150
+ * model: 'gpt-realtime-whisper'
151
+ * });
152
+ * ```
153
+ */
154
+ export declare class OpenAIRealtimeSTTProvider implements STTProvider {
155
+ readonly name = "openai-realtime-stt";
156
+ /** The Realtime API consumes 24kHz mono 16-bit PCM */
157
+ readonly streamingInputSampleRate = 24000;
158
+ private readonly apiKey;
159
+ private readonly model;
160
+ private readonly language?;
161
+ private readonly delay?;
162
+ private readonly url;
163
+ private readonly timeoutsMs;
164
+ constructor(config: OpenAIRealtimeSTTConfig);
165
+ transcribeStream(audio: AsyncIterable<Buffer>, config?: STTConfig): AsyncIterable<STTResult>;
166
+ /**
167
+ * One-shot transcription of a 16-bit mono PCM WAV buffer (the format
168
+ * produced by the LLMRTC voice pipeline), streamed through a realtime
169
+ * session. For arbitrary containers use OpenAIWhisperProvider.
170
+ */
171
+ transcribe(audio: Buffer, config?: STTConfig): Promise<STTResult>;
172
+ }
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import OpenAI, { toFile } from 'openai';
2
+ import WebSocket from 'ws';
3
+ import { AsyncEventQueue } from '@llmrtc/llmrtc-core';
2
4
  import { mapToolsToOpenAI, mapToolChoiceToOpenAI, parseToolCallsFromOpenAI, mapStopReasonFromOpenAI, processToolCallDelta, finalizeToolCalls, } from './tool-adapter.js';
3
5
  export class OpenAILLMProvider {
4
6
  constructor(config) {
@@ -191,18 +193,26 @@ function mapMessages(messages) {
191
193
  return { role: m.role, content: [{ type: 'text', text: m.content }, ...imageParts] };
192
194
  });
193
195
  }
196
+ /** The speech endpoint only accepts `instructions` on gpt-* TTS models. */
197
+ function ttsModelSupportsInstructions(model) {
198
+ return model.toLowerCase().startsWith('gpt-');
199
+ }
194
200
  /**
195
201
  * OpenAI Text-to-Speech Provider.
196
202
  *
197
- * Available voices: alloy, echo, fable, onyx, nova, shimmer
198
- * Available models: tts-1 (fast), tts-1-hd (quality), gpt-4o-mini-tts (instructable)
203
+ * Available voices: alloy, ash, coral, echo, fable, nova, onyx, sage,
204
+ * shimmer on all models; ballad and verse additionally on
205
+ * gpt-4o-mini-tts.
206
+ * Available models: tts-1 (fast), tts-1-hd (quality), gpt-4o-mini-tts
207
+ * (instructable - accepts natural-language delivery `instructions`).
199
208
  *
200
209
  * @example
201
210
  * ```typescript
202
211
  * const provider = new OpenAITTSProvider({
203
212
  * apiKey: 'sk-...',
204
- * model: 'tts-1',
205
- * voice: 'nova'
213
+ * model: 'gpt-4o-mini-tts',
214
+ * voice: 'coral',
215
+ * instructions: 'Speak warmly, at a relaxed pace.'
206
216
  * });
207
217
  * ```
208
218
  */
@@ -251,21 +261,48 @@ export class OpenAITTSProvider {
251
261
  writable: true,
252
262
  value: void 0
253
263
  });
264
+ Object.defineProperty(this, "instructions", {
265
+ enumerable: true,
266
+ configurable: true,
267
+ writable: true,
268
+ value: void 0
269
+ });
270
+ Object.defineProperty(this, "warnedInstructionsUnsupported", {
271
+ enumerable: true,
272
+ configurable: true,
273
+ writable: true,
274
+ value: false
275
+ });
254
276
  this.client = new OpenAI({ apiKey: config.apiKey, baseURL: config.baseURL });
255
277
  this.model = config.model ?? 'tts-1';
256
278
  this.voice = config.voice ?? 'alloy';
257
279
  this.speed = config.speed ?? 1.0;
280
+ this.instructions = config.instructions;
258
281
  }
259
- async speak(text, overrideConfig) {
260
- const voice = overrideConfig?.voice ?? this.voice;
261
- const format = mapFormat(overrideConfig?.format);
262
- const response = await this.client.audio.speech.create({
263
- model: overrideConfig?.model ?? this.model,
264
- voice,
282
+ speechParams(text, overrideConfig) {
283
+ const model = overrideConfig?.model ?? this.model;
284
+ const params = {
285
+ model,
286
+ voice: overrideConfig?.voice ?? this.voice,
265
287
  input: text,
266
- response_format: format,
288
+ response_format: mapFormat(overrideConfig?.format),
267
289
  speed: this.speed
268
- });
290
+ };
291
+ const instructions = overrideConfig?.instructions ?? this.instructions;
292
+ if (instructions) {
293
+ if (ttsModelSupportsInstructions(model)) {
294
+ params.instructions = instructions;
295
+ }
296
+ else if (!this.warnedInstructionsUnsupported) {
297
+ this.warnedInstructionsUnsupported = true;
298
+ console.warn(`[openai-tts] Model "${model}" does not support TTS instructions - ignoring them. ` +
299
+ `Use an instructable model such as gpt-4o-mini-tts.`);
300
+ }
301
+ }
302
+ return params;
303
+ }
304
+ async speak(text, overrideConfig) {
305
+ const response = await this.client.audio.speech.create(this.speechParams(text, overrideConfig));
269
306
  const buffer = Buffer.from(await response.arrayBuffer());
270
307
  return {
271
308
  audio: buffer,
@@ -281,29 +318,32 @@ export class OpenAITTSProvider {
281
318
  * This is the recommended format for lowest latency (no decode step needed).
282
319
  */
283
320
  async *speakStream(text, overrideConfig) {
284
- const voice = overrideConfig?.voice ?? this.voice;
285
- const format = mapFormat(overrideConfig?.format);
286
- const response = await this.client.audio.speech.create({
287
- model: overrideConfig?.model ?? this.model,
288
- voice,
289
- input: text,
290
- response_format: format,
291
- speed: this.speed
292
- });
293
- // Response is a Response-like object with body stream
294
- const reader = response.body?.getReader();
295
- if (!reader) {
296
- // Fallback: return the whole buffer if streaming not available
297
- const buffer = Buffer.from(await response.arrayBuffer());
298
- yield buffer;
321
+ const response = await this.client.audio.speech.create(this.speechParams(text, overrideConfig));
322
+ // The SDK's response body is a web ReadableStream when a global fetch
323
+ // is available, but a Node Readable when the SDK runs with its Node
324
+ // shims (e.g. Node < 18 or an app importing 'openai/shims/node').
325
+ // Handle both instead of assuming getReader() exists.
326
+ const body = response.body;
327
+ if (body && typeof body.getReader === 'function') {
328
+ const reader = body.getReader();
329
+ while (true) {
330
+ const { done, value } = await reader.read();
331
+ if (done)
332
+ break;
333
+ yield Buffer.from(value);
334
+ }
299
335
  return;
300
336
  }
301
- while (true) {
302
- const { done, value } = await reader.read();
303
- if (done)
304
- break;
305
- yield Buffer.from(value);
337
+ if (body &&
338
+ typeof body[Symbol.asyncIterator] === 'function') {
339
+ for await (const chunk of body) {
340
+ yield Buffer.from(chunk);
341
+ }
342
+ return;
306
343
  }
344
+ // Fallback: return the whole buffer if streaming is not available
345
+ const buffer = Buffer.from(await response.arrayBuffer());
346
+ yield buffer;
307
347
  }
308
348
  }
309
349
  /**
@@ -322,4 +362,296 @@ function mapFormat(format) {
322
362
  return 'mp3';
323
363
  }
324
364
  }
365
+ const REALTIME_STT_TIMEOUTS = { connect: 10000, inactivity: 30000, final: 15000 };
366
+ /**
367
+ * OpenAI Realtime Speech-to-Text Provider.
368
+ *
369
+ * Streams audio to a transcription-type Realtime API session and yields
370
+ * interim transcripts as the user speaks. Partial results carry the
371
+ * accumulated transcript-so-far; the final result carries the complete
372
+ * transcript. Billing follows the transcription model's audio pricing,
373
+ * not realtime LLM tokens.
374
+ *
375
+ * Input frames must be 24kHz mono 16-bit signed LE PCM
376
+ * (streamingInputSampleRate). transcribe() accepts a 16-bit mono PCM WAV
377
+ * buffer for compatibility with the buffered pipeline; for general batch
378
+ * transcription use OpenAIWhisperProvider instead.
379
+ *
380
+ * @example
381
+ * ```typescript
382
+ * const stt = new OpenAIRealtimeSTTProvider({
383
+ * apiKey: process.env.OPENAI_API_KEY!,
384
+ * model: 'gpt-realtime-whisper'
385
+ * });
386
+ * ```
387
+ */
388
+ export class OpenAIRealtimeSTTProvider {
389
+ constructor(config) {
390
+ Object.defineProperty(this, "name", {
391
+ enumerable: true,
392
+ configurable: true,
393
+ writable: true,
394
+ value: 'openai-realtime-stt'
395
+ });
396
+ /** The Realtime API consumes 24kHz mono 16-bit PCM */
397
+ Object.defineProperty(this, "streamingInputSampleRate", {
398
+ enumerable: true,
399
+ configurable: true,
400
+ writable: true,
401
+ value: 24000
402
+ });
403
+ Object.defineProperty(this, "apiKey", {
404
+ enumerable: true,
405
+ configurable: true,
406
+ writable: true,
407
+ value: void 0
408
+ });
409
+ Object.defineProperty(this, "model", {
410
+ enumerable: true,
411
+ configurable: true,
412
+ writable: true,
413
+ value: void 0
414
+ });
415
+ Object.defineProperty(this, "language", {
416
+ enumerable: true,
417
+ configurable: true,
418
+ writable: true,
419
+ value: void 0
420
+ });
421
+ Object.defineProperty(this, "delay", {
422
+ enumerable: true,
423
+ configurable: true,
424
+ writable: true,
425
+ value: void 0
426
+ });
427
+ Object.defineProperty(this, "url", {
428
+ enumerable: true,
429
+ configurable: true,
430
+ writable: true,
431
+ value: void 0
432
+ });
433
+ Object.defineProperty(this, "timeoutsMs", {
434
+ enumerable: true,
435
+ configurable: true,
436
+ writable: true,
437
+ value: void 0
438
+ });
439
+ this.apiKey = config.apiKey;
440
+ this.model = config.model ?? 'gpt-realtime-whisper';
441
+ this.language = config.language;
442
+ this.delay = config.delay;
443
+ // intent=transcription opens a transcription-type session directly,
444
+ // without naming an (unused) realtime LLM session model
445
+ this.url = config.url ?? 'wss://api.openai.com/v1/realtime?intent=transcription';
446
+ this.timeoutsMs = {
447
+ connect: config.timeoutsMs?.connect ?? REALTIME_STT_TIMEOUTS.connect,
448
+ inactivity: config.timeoutsMs?.inactivity ?? REALTIME_STT_TIMEOUTS.inactivity,
449
+ final: config.timeoutsMs?.final ?? REALTIME_STT_TIMEOUTS.final
450
+ };
451
+ }
452
+ async *transcribeStream(audio, config) {
453
+ const model = config?.model ?? this.model;
454
+ const ws = new WebSocket(this.url, {
455
+ headers: { Authorization: `Bearer ${this.apiKey}` }
456
+ });
457
+ const queue = new AsyncEventQueue();
458
+ let runningText = '';
459
+ let completed = false;
460
+ let commitSent = false;
461
+ // Watchdog: a silently-stalled socket must not hang the voice turn
462
+ let watchdog = null;
463
+ const armWatchdog = (ms, waitingFor) => {
464
+ if (watchdog)
465
+ clearTimeout(watchdog);
466
+ watchdog = setTimeout(() => {
467
+ queue.fail(new Error(`OpenAI Realtime STT timed out waiting for ${waitingFor}`));
468
+ ws.terminate();
469
+ }, ms);
470
+ watchdog.unref?.();
471
+ };
472
+ const disarmWatchdog = () => {
473
+ if (watchdog)
474
+ clearTimeout(watchdog);
475
+ watchdog = null;
476
+ };
477
+ armWatchdog(this.timeoutsMs.connect, 'connection');
478
+ ws.on('message', (data) => {
479
+ armWatchdog(commitSent ? this.timeoutsMs.final : this.timeoutsMs.inactivity, commitSent ? 'the final transcript' : 'server messages');
480
+ let event;
481
+ try {
482
+ event = JSON.parse(data.toString());
483
+ }
484
+ catch {
485
+ return;
486
+ }
487
+ switch (event.type) {
488
+ case 'conversation.item.input_audio_transcription.delta':
489
+ runningText += event.delta ?? '';
490
+ queue.push({ text: runningText, isFinal: false, raw: event });
491
+ break;
492
+ case 'conversation.item.input_audio_transcription.completed':
493
+ completed = true;
494
+ queue.push({ text: event.transcript ?? runningText, isFinal: true, raw: event });
495
+ queue.end();
496
+ ws.close();
497
+ break;
498
+ case 'conversation.item.input_audio_transcription.failed':
499
+ queue.fail(new Error(`OpenAI Realtime STT transcription failed: ${event.error?.message ?? JSON.stringify(event.error)}`));
500
+ ws.close();
501
+ break;
502
+ case 'error':
503
+ queue.fail(new Error(`OpenAI Realtime STT error: ${event.error?.message ?? JSON.stringify(event.error)}`));
504
+ ws.close();
505
+ break;
506
+ default:
507
+ break;
508
+ }
509
+ });
510
+ ws.on('error', (err) => {
511
+ queue.fail(new Error(`OpenAI Realtime STT socket error: ${err.message}`));
512
+ });
513
+ ws.on('close', () => {
514
+ disarmWatchdog();
515
+ // A close before the final transcript means the utterance was lost;
516
+ // surface it instead of silently producing an empty transcript
517
+ // (no-op when the queue already ended or failed)
518
+ if (!completed) {
519
+ queue.fail(new Error('OpenAI Realtime STT connection closed before the final transcript'));
520
+ }
521
+ });
522
+ const opened = new Promise((resolve, reject) => {
523
+ ws.once('open', () => resolve());
524
+ ws.once('error', (err) => reject(err));
525
+ ws.once('close', () => reject(new Error('socket closed before opening')));
526
+ });
527
+ const language = config?.language ?? this.language;
528
+ const sendLoop = (async () => {
529
+ await opened;
530
+ armWatchdog(this.timeoutsMs.inactivity, 'server messages');
531
+ // Transcription-type session; our own VAD segments the audio, so
532
+ // server turn detection stays off and we commit manually
533
+ ws.send(JSON.stringify({
534
+ type: 'session.update',
535
+ session: {
536
+ type: 'transcription',
537
+ audio: {
538
+ input: {
539
+ format: { type: 'audio/pcm', rate: this.streamingInputSampleRate },
540
+ transcription: {
541
+ model,
542
+ ...(language && { language }),
543
+ ...(this.delay && { delay: this.delay })
544
+ },
545
+ turn_detection: null
546
+ }
547
+ }
548
+ }
549
+ }));
550
+ let sentAny = false;
551
+ for await (const frame of audio) {
552
+ if (ws.readyState !== WebSocket.OPEN)
553
+ return;
554
+ if (frame.length === 0)
555
+ continue;
556
+ sentAny = true;
557
+ ws.send(JSON.stringify({ type: 'input_audio_buffer.append', audio: frame.toString('base64') }));
558
+ }
559
+ if (ws.readyState !== WebSocket.OPEN)
560
+ return;
561
+ if (sentAny) {
562
+ commitSent = true;
563
+ armWatchdog(this.timeoutsMs.final, 'the final transcript');
564
+ ws.send(JSON.stringify({ type: 'input_audio_buffer.commit' }));
565
+ }
566
+ else {
567
+ // Nothing to transcribe; committing an empty buffer errors
568
+ completed = true;
569
+ queue.end();
570
+ ws.close();
571
+ }
572
+ })().catch((err) => {
573
+ queue.fail(err);
574
+ ws.close();
575
+ });
576
+ try {
577
+ yield* queue;
578
+ }
579
+ finally {
580
+ disarmWatchdog();
581
+ // Close first: an abandoned sendLoop exits at its next frame once
582
+ // the socket is no longer OPEN, instead of feeding a dead session
583
+ if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) {
584
+ ws.close();
585
+ }
586
+ // sendLoop never rejects (errors route into the queue); the bounded
587
+ // wait guards against a caller-owned frame iterable that never ends
588
+ await Promise.race([
589
+ sendLoop,
590
+ new Promise((resolve) => {
591
+ const t = setTimeout(resolve, 5000);
592
+ t.unref?.();
593
+ })
594
+ ]);
595
+ }
596
+ }
597
+ /**
598
+ * One-shot transcription of a 16-bit mono PCM WAV buffer (the format
599
+ * produced by the LLMRTC voice pipeline), streamed through a realtime
600
+ * session. For arbitrary containers use OpenAIWhisperProvider.
601
+ */
602
+ async transcribe(audio, config) {
603
+ const pcm = wavToRealtimePCM(audio, this.streamingInputSampleRate);
604
+ const frames = (async function* () {
605
+ // 100ms chunks
606
+ const chunkBytes = 4800;
607
+ for (let off = 0; off < pcm.length; off += chunkBytes) {
608
+ yield pcm.subarray(off, Math.min(off + chunkBytes, pcm.length));
609
+ }
610
+ })();
611
+ let last = { text: '', isFinal: true };
612
+ for await (const result of this.transcribeStream(frames, config)) {
613
+ if (result.isFinal) {
614
+ last = result;
615
+ }
616
+ }
617
+ return last;
618
+ }
619
+ }
620
+ /**
621
+ * Extract PCM from a 16-bit mono WAV buffer and linearly resample it to
622
+ * the target rate. Throws on non-WAV input.
623
+ */
624
+ function wavToRealtimePCM(audio, targetRate) {
625
+ if (audio.length < 44 || audio.toString('ascii', 0, 4) !== 'RIFF' || audio.toString('ascii', 8, 12) !== 'WAVE') {
626
+ throw new Error('OpenAIRealtimeSTTProvider.transcribe expects a 16-bit mono PCM WAV buffer; use OpenAIWhisperProvider for other formats');
627
+ }
628
+ if (audio.toString('ascii', 36, 40) !== 'data') {
629
+ // Non-canonical header (extended fmt chunk, LIST metadata, ...) would
630
+ // silently misread the fields below - refuse instead
631
+ throw new Error('OpenAIRealtimeSTTProvider.transcribe expects a canonical 44-byte WAV header; use OpenAIWhisperProvider for other formats');
632
+ }
633
+ const sourceRate = audio.readUInt32LE(24);
634
+ const channels = audio.readUInt16LE(22);
635
+ const bits = audio.readUInt16LE(34);
636
+ if (channels !== 1 || bits !== 16) {
637
+ throw new Error(`OpenAIRealtimeSTTProvider.transcribe expects 16-bit mono WAV (got ${bits}-bit, ${channels}ch)`);
638
+ }
639
+ const pcm = audio.subarray(44);
640
+ if (sourceRate === targetRate) {
641
+ return pcm;
642
+ }
643
+ const sourceSamples = Math.floor(pcm.length / 2);
644
+ const targetSamples = Math.floor((sourceSamples * targetRate) / sourceRate);
645
+ const out = Buffer.alloc(targetSamples * 2);
646
+ for (let i = 0; i < targetSamples; i++) {
647
+ const pos = (i * sourceRate) / targetRate;
648
+ const i0 = Math.floor(pos);
649
+ const i1 = Math.min(i0 + 1, sourceSamples - 1);
650
+ const frac = pos - i0;
651
+ const s0 = pcm.readInt16LE(i0 * 2);
652
+ const s1 = pcm.readInt16LE(i1 * 2);
653
+ out.writeInt16LE(Math.round(s0 + (s1 - s0) * frac), i * 2);
654
+ }
655
+ return out;
656
+ }
325
657
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * parses tool calls from OpenAI responses.
6
6
  */
7
7
  import type { ChatCompletionTool, ChatCompletionToolChoiceOption } from 'openai/resources/chat/completions';
8
- import type { ToolDefinition, ToolCallRequest, ToolChoice } from '@llmrtc/llmrtc-core';
8
+ import type { ToolDefinition, ToolCallRequest, ToolChoice, StopReason } from '@llmrtc/llmrtc-core';
9
9
  /**
10
10
  * Convert provider-agnostic tool definitions to OpenAI format
11
11
  */
@@ -55,4 +55,4 @@ export declare function finalizeToolCalls(accumulators: Map<number, StreamingToo
55
55
  /**
56
56
  * Map stop reason from OpenAI to provider-agnostic format
57
57
  */
58
- export declare function mapStopReasonFromOpenAI(finishReason: string | null | undefined): 'end_turn' | 'tool_use' | 'max_tokens' | 'stop_sequence' | undefined;
58
+ export declare function mapStopReasonFromOpenAI(finishReason: string | null | undefined): StopReason | undefined;
@@ -124,7 +124,7 @@ export function mapStopReasonFromOpenAI(finishReason) {
124
124
  case 'length':
125
125
  return 'max_tokens';
126
126
  case 'content_filter':
127
- return 'stop_sequence';
127
+ return 'content_filter';
128
128
  default:
129
129
  return undefined;
130
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../src/tool-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-adapter.js","sourceRoot":"","sources":["../src/tool-adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@llmrtc/llmrtc-provider-openai",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "OpenAI/compatible LLM + Whisper adapters for @llmrtc/LLMRTC",
5
5
  "homepage": "https://www.llmrtc.org",
6
6
  "license": "Apache-2.0",
@@ -32,8 +32,9 @@
32
32
  "prepublishOnly": "npm run build"
33
33
  },
34
34
  "dependencies": {
35
- "@llmrtc/llmrtc-core": "^1.1.0",
36
- "openai": "^4.72.0"
35
+ "@llmrtc/llmrtc-core": "^1.2.0",
36
+ "openai": "^4.89.0",
37
+ "ws": "^8.16.0"
37
38
  },
38
39
  "exports": {
39
40
  ".": {
@@ -46,5 +47,8 @@
46
47
  "sideEffects": false,
47
48
  "engines": {
48
49
  "node": ">=20"
50
+ },
51
+ "devDependencies": {
52
+ "@types/ws": "^8.5.10"
49
53
  }
50
54
  }