TranscriptionManager handles all transcription-related functionality within a user session. It provides provider abstraction for multiple transcription services (Azure and Soniox), manages stream lifecycle, handles multi-language support, implements VAD (Voice Activity Detection) audio buffering, and maintains transcript history.File: packages/cloud/src/services/session/transcription/TranscriptionManager.ts
feedAudio(audioData: ArrayBuffer): void { // Buffer if VAD is starting up if (this.isBufferingForVAD) { this.vadAudioBuffer.push(audioData); // Prevent buffer overflow if (this.vadAudioBuffer.length > this.vadBufferMaxSize) { this.vadAudioBuffer.shift(); } return; } // Normal feeding to streams this.feedAudioToStreams(audioData);}
finalizePendingTokens(): void { // Called when VAD stops - forces providers to send final transcriptions for (const [subscription, stream] of this.streams) { if (stream.provider.name === "soniox") { // Soniox buffers tokens - force finalization if ("forceFinalizePendingTokens" in stream) { (stream as any).forceFinalizePendingTokens(); } } // Azure sends final results immediately }}