dvgateway-adapters 1.2.7 → 1.2.9

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.
@@ -2,4 +2,6 @@ export { DeepgramAdapter } from './deepgram.js';
2
2
  export type { DeepgramAdapterOptions } from './deepgram.js';
3
3
  export { GoogleChirp3Adapter } from './google-chirp3.js';
4
4
  export type { GoogleChirp3AdapterOptions } from './google-chirp3.js';
5
+ export { OpenAISttAdapter } from './openai-stt.js';
6
+ export type { OpenAISttAdapterOptions } from './openai-stt.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,YAAY,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,YAAY,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/stt/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // STT (Speech-to-Text) adapters
2
2
  export { DeepgramAdapter } from './deepgram.js';
3
3
  export { GoogleChirp3Adapter } from './google-chirp3.js';
4
+ export { OpenAISttAdapter } from './openai-stt.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/stt/index.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * OpenAI STT Adapter
3
+ *
4
+ * Streams 16kHz slin16 PCM audio to OpenAI's Realtime Transcription API
5
+ * and fires onTranscript callbacks for final transcription results.
6
+ *
7
+ * Features:
8
+ * - gpt-4o-transcribe model (default — best multilingual accuracy)
9
+ * - Server-side VAD with configurable threshold/silence/prefix
10
+ * - Automatic base64 PCM encoding for the WebSocket protocol
11
+ * - Clean telephony audio optimization (aggressive VAD defaults)
12
+ *
13
+ * Protocol:
14
+ * Connect to wss://api.openai.com/v1/realtime?intent=transcription
15
+ * Send transcription_session.update with model/language/VAD config
16
+ * Send input_audio_buffer.append with base64 PCM chunks
17
+ * Receive conversation.item.input_audio_transcription.completed events
18
+ *
19
+ * API Endpoint: wss://api.openai.com/v1/realtime?intent=transcription
20
+ * Docs: https://platform.openai.com/docs/guides/realtime-transcription
21
+ */
22
+ import type { SttAdapter, AudioChunk, TranscriptResult } from 'dvgateway-sdk';
23
+ export interface OpenAISttAdapterOptions {
24
+ apiKey: string;
25
+ /** Language code, e.g. "ko", "en" (default: "ko") */
26
+ language?: string;
27
+ /**
28
+ * OpenAI transcription model (default: "gpt-4o-transcribe")
29
+ * Options: gpt-4o-transcribe, gpt-4o-mini-transcribe
30
+ */
31
+ model?: string;
32
+ /**
33
+ * Enable server-side VAD (default: true).
34
+ * When true, sends turn_detection config with server_vad mode.
35
+ * When false, no turn detection is configured.
36
+ */
37
+ vadEnabled?: boolean;
38
+ /**
39
+ * VAD threshold — speech detection sensitivity (0.0–1.0, default: 0.4).
40
+ * Lower = more sensitive. Optimized for clean snoop audio.
41
+ */
42
+ vadThreshold?: number;
43
+ /**
44
+ * Silence duration (ms) to trigger utterance end (default: 200).
45
+ * Aggressive for clean dedicated media with minimal background noise.
46
+ */
47
+ silenceDurationMs?: number;
48
+ /**
49
+ * Audio to include before speech start (ms, default: 200).
50
+ * Less padding needed for clean dedicated media.
51
+ */
52
+ prefixPaddingMs?: number;
53
+ }
54
+ export declare class OpenAISttAdapter implements SttAdapter {
55
+ private readonly opts;
56
+ private transcriptHandler;
57
+ private ws;
58
+ private stopped;
59
+ constructor(opts: OpenAISttAdapterOptions);
60
+ onTranscript(handler: (result: TranscriptResult) => void): void;
61
+ startStream(linkedId: string, audioStream: AsyncIterable<AudioChunk>): Promise<void>;
62
+ stop(): Promise<void>;
63
+ private connect;
64
+ private sendSessionConfig;
65
+ private pipeAudio;
66
+ private handleEvent;
67
+ }
68
+ //# sourceMappingURL=openai-stt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-stt.d.ts","sourceRoot":"","sources":["../../src/stt/openai-stt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAG9E,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAMf;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAaD,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IACzD,OAAO,CAAC,iBAAiB,CAAqD;IAC9E,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,uBAAuB;IAYzC,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAIzD,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBpF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQb,OAAO;IAgCrB,OAAO,CAAC,iBAAiB;YA2BX,SAAS;IAiCvB,OAAO,CAAC,WAAW;CA+CpB"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * OpenAI STT Adapter
3
+ *
4
+ * Streams 16kHz slin16 PCM audio to OpenAI's Realtime Transcription API
5
+ * and fires onTranscript callbacks for final transcription results.
6
+ *
7
+ * Features:
8
+ * - gpt-4o-transcribe model (default — best multilingual accuracy)
9
+ * - Server-side VAD with configurable threshold/silence/prefix
10
+ * - Automatic base64 PCM encoding for the WebSocket protocol
11
+ * - Clean telephony audio optimization (aggressive VAD defaults)
12
+ *
13
+ * Protocol:
14
+ * Connect to wss://api.openai.com/v1/realtime?intent=transcription
15
+ * Send transcription_session.update with model/language/VAD config
16
+ * Send input_audio_buffer.append with base64 PCM chunks
17
+ * Receive conversation.item.input_audio_transcription.completed events
18
+ *
19
+ * API Endpoint: wss://api.openai.com/v1/realtime?intent=transcription
20
+ * Docs: https://platform.openai.com/docs/guides/realtime-transcription
21
+ */
22
+ import WebSocket from 'ws';
23
+ import { float32ToSlin16 } from 'dvgateway-sdk';
24
+ export class OpenAISttAdapter {
25
+ opts;
26
+ transcriptHandler = null;
27
+ ws = null;
28
+ stopped = false;
29
+ constructor(opts) {
30
+ this.opts = {
31
+ apiKey: opts.apiKey,
32
+ language: opts.language ?? 'ko',
33
+ model: opts.model ?? 'gpt-4o-transcribe',
34
+ vadEnabled: opts.vadEnabled ?? true,
35
+ vadThreshold: opts.vadThreshold ?? 0.4,
36
+ silenceDurationMs: opts.silenceDurationMs ?? 200,
37
+ prefixPaddingMs: opts.prefixPaddingMs ?? 200,
38
+ };
39
+ }
40
+ onTranscript(handler) {
41
+ this.transcriptHandler = handler;
42
+ }
43
+ async startStream(linkedId, audioStream) {
44
+ this.stopped = false;
45
+ this.ws = await this.connect();
46
+ // Send session configuration
47
+ this.sendSessionConfig();
48
+ // Pipe audio frames
49
+ void this.pipeAudio(audioStream);
50
+ // Keep the promise alive until stream ends
51
+ await new Promise((resolve) => {
52
+ this.ws?.once('close', () => resolve());
53
+ const checkStopped = setInterval(() => {
54
+ if (this.stopped) {
55
+ clearInterval(checkStopped);
56
+ this.ws?.close(1000, 'stream ended');
57
+ resolve();
58
+ }
59
+ }, 100);
60
+ });
61
+ }
62
+ async stop() {
63
+ this.stopped = true;
64
+ if (this.ws && this.ws.readyState === WebSocket.OPEN) {
65
+ this.ws.close(1000, 'stop');
66
+ }
67
+ this.ws = null;
68
+ }
69
+ async connect() {
70
+ const url = 'wss://api.openai.com/v1/realtime?intent=transcription';
71
+ const ws = new WebSocket(url, {
72
+ headers: {
73
+ 'Authorization': `Bearer ${this.opts.apiKey}`,
74
+ 'OpenAI-Beta': 'realtime=v1',
75
+ },
76
+ });
77
+ ws.on('message', (data) => {
78
+ try {
79
+ const event = JSON.parse(data.toString());
80
+ this.handleEvent(event);
81
+ }
82
+ catch {
83
+ // Ignore malformed JSON
84
+ }
85
+ });
86
+ ws.on('error', (err) => {
87
+ process.stderr.write(`[OpenAISttAdapter] WebSocket error: ${err.message}\n`);
88
+ });
89
+ // Wait for connection
90
+ await new Promise((resolve, reject) => {
91
+ ws.once('open', resolve);
92
+ ws.once('error', reject);
93
+ });
94
+ return ws;
95
+ }
96
+ sendSessionConfig() {
97
+ if (!this.ws || this.ws.readyState !== WebSocket.OPEN)
98
+ return;
99
+ const session = {
100
+ input_audio_format: 'pcm16',
101
+ input_audio_transcription: {
102
+ model: this.opts.model,
103
+ language: this.opts.language,
104
+ },
105
+ };
106
+ if (this.opts.vadEnabled) {
107
+ session.turn_detection = {
108
+ type: 'server_vad',
109
+ threshold: this.opts.vadThreshold,
110
+ prefix_padding_ms: this.opts.prefixPaddingMs,
111
+ silence_duration_ms: this.opts.silenceDurationMs,
112
+ };
113
+ }
114
+ const msg = JSON.stringify({
115
+ type: 'transcription_session.update',
116
+ session,
117
+ });
118
+ this.ws.send(msg);
119
+ }
120
+ async pipeAudio(audioStream) {
121
+ // OpenAI expects 100ms chunks (3200 bytes at 16kHz s16le)
122
+ const CHUNK_SIZE = 3200;
123
+ let buffer = Buffer.alloc(0);
124
+ for await (const chunk of audioStream) {
125
+ if (this.stopped || !this.ws || this.ws.readyState !== WebSocket.OPEN)
126
+ break;
127
+ const pcm = float32ToSlin16(chunk.samples);
128
+ buffer = Buffer.concat([buffer, pcm]);
129
+ // Send in optimal chunk size
130
+ while (buffer.length >= CHUNK_SIZE) {
131
+ const frame = buffer.subarray(0, CHUNK_SIZE);
132
+ const msg = JSON.stringify({
133
+ type: 'input_audio_buffer.append',
134
+ audio: frame.toString('base64'),
135
+ });
136
+ this.ws.send(msg);
137
+ buffer = buffer.subarray(CHUNK_SIZE);
138
+ }
139
+ }
140
+ // Flush remaining buffer
141
+ if (buffer.length > 0 && this.ws && this.ws.readyState === WebSocket.OPEN) {
142
+ const msg = JSON.stringify({
143
+ type: 'input_audio_buffer.append',
144
+ audio: buffer.toString('base64'),
145
+ });
146
+ this.ws.send(msg);
147
+ }
148
+ }
149
+ handleEvent(event) {
150
+ switch (event.type) {
151
+ case 'conversation.item.input_audio_transcription.completed':
152
+ if (event.transcript) {
153
+ const result = {
154
+ linkedId: '',
155
+ text: event.transcript,
156
+ isFinal: true,
157
+ confidence: 1.0,
158
+ language: this.opts.language,
159
+ timestampMs: Date.now(),
160
+ };
161
+ this.transcriptHandler?.(result);
162
+ }
163
+ break;
164
+ case 'conversation.item.input_audio_transcription.failed':
165
+ if (event.error) {
166
+ process.stderr.write(`[OpenAISttAdapter] transcription failed: ${event.error.code} - ${event.error.message}\n`);
167
+ }
168
+ break;
169
+ case 'error':
170
+ if (event.error) {
171
+ process.stderr.write(`[OpenAISttAdapter] error: ${event.error.code} - ${event.error.message}\n`);
172
+ }
173
+ break;
174
+ // Known control events — no action needed
175
+ case 'transcription_session.created':
176
+ case 'transcription_session.updated':
177
+ case 'input_audio_buffer.speech_started':
178
+ case 'input_audio_buffer.speech_stopped':
179
+ case 'input_audio_buffer.committed':
180
+ case 'input_audio_buffer.cleared':
181
+ case 'conversation.item.created':
182
+ case 'conversation.item.input_audio_transcription.delta':
183
+ break;
184
+ default:
185
+ break;
186
+ }
187
+ }
188
+ }
189
+ //# sourceMappingURL=openai-stt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-stt.js","sourceRoot":"","sources":["../../src/stt/openai-stt.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dvgateway-adapters",
3
- "version": "1.2.7",
3
+ "version": "1.2.9",
4
4
  "description": "AI service adapters for DVGateway SDK (Deepgram, ElevenLabs, Anthropic, OpenAI, OpenAI Realtime)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",