Skip to content

AudioOutputProvider

Audio output provider interface for the 'output' pipeline role.

Defined in: src/core/types/providers.ts:1367

Audio output provider interface for the 'output' pipeline role.

Remarks

An AudioOutputProvider receives synthesized audio from the TTS stage and plays it through a destination (e.g. speakers, file, null sink). It is the last stage of the 5-role pipeline:

[AudioInputProvider] -> InputQueue -> [STT] -> [LLM] -> [TTS] -> OutputQueue -> [AudioOutputProvider]
                                                                                 ^^^^^^^^^^^^^^^^^^^

Providers implementing this interface must set roles to include 'output'. Multi-role providers (e.g. NativeTTS) may also include 'tts' when the underlying API handles both synthesis and playback internally.

Lifecycle: initialize() -> configure(metadata) -> enqueue(chunk) (repeated) -> flush() -> stop() -> dispose()

Example

import type { AudioOutputProvider, AudioChunk, AudioMetadata } from 'composite-voice';

class MySpeakerOutput implements AudioOutputProvider {
  readonly type = 'websocket';
  readonly roles = ['output'] as const;

  async initialize() { /* set up AudioContext */ }
  async dispose() { /* close AudioContext */ }
  isReady() { return true; }

  configure(metadata: AudioMetadata) { /* configure playback format */ }
  enqueue(chunk: AudioChunk) { /* buffer chunk for playback */ }
  async flush() { /* wait for all queued audio to finish playing */ }
  stop() { /* stop playback immediately */ }
  pause() { /* pause playback */ }
  resume() { /* resume playback */ }
  isPlaying() { return false; }

  onPlaybackStart(callback: () => void) { /* ... */ }
  onPlaybackEnd(callback: () => void) { /* ... */ }
  onPlaybackError(callback: (error: Error) => void) { /* ... */ }
}

See

Extends

Properties

PropertyModifierTypeDefault valueDescriptionInherited fromDefined in
rolesreadonlyreadonly ProviderRole[][]Pipeline roles this provider covers. Remarks Each provider declares which stages of the 5-role audio pipeline it can fulfil. Single-role providers list one role (e.g. ['stt']); multi-role providers list every role they handle (e.g. ['input', 'stt'] for NativeSTT, which manages its own microphone access). The provider resolution algorithm reads this property to assign providers to pipeline slots. Base provider classes set sensible defaults: - BaseSTTProvider: ['stt'] - BaseLLMProvider: ['llm'] - BaseTTSProvider: ['tts'] See - ProviderRole for the possible role values - ResolvedPipeline for the resolved pipeline slotsBaseProvider.rolessrc/core/types/providers.ts:166
typereadonlyProviderTypeundefinedThe communication type this provider uses. See ProviderTypeBaseProvider.typesrc/core/types/providers.ts:144

Methods

configure()

configure(metadata): void;

Defined in: src/core/types/providers.ts:1380

Configure the output with the audio format metadata from the TTS provider.

Parameters

ParameterTypeDescription
metadataAudioMetadataFormat description for the incoming audio

Returns

void

Remarks

Called when the TTS provider emits metadata describing the format of incoming audio chunks. The output provider uses this to configure its playback pipeline (e.g. AudioContext sample rate).

See

AudioMetadata


dispose()

dispose(): Promise<void>;

Defined in: src/core/types/providers.ts:186

Clean up resources and dispose of the provider.

Returns

Promise<void>

Remarks

Called by CompositeVoice during agent shutdown. The provider should close any open connections, clear buffers, and release resources.

Inherited from

BaseProvider.dispose


enqueue()

enqueue(chunk): void;

Defined in: src/core/types/providers.ts:1393

Enqueue an audio chunk for playback.

Parameters

ParameterTypeDescription
chunkAudioChunkAudio data to play

Returns

void

Remarks

Called for each audio chunk received from the TTS provider (via the output queue). Chunks are played in the order they are enqueued.

See

AudioChunk


flush()

flush(): Promise<void>;

Defined in: src/core/types/providers.ts:1402

Wait for all enqueued audio to finish playing.

Returns

Promise<void>

Remarks

Called after the TTS provider signals that all text has been synthesized. Resolves when the last enqueued chunk has finished playing.


initialize()

initialize(): Promise<void>;

Defined in: src/core/types/providers.ts:177

Initialize the provider and allocate any required resources.

Returns

Promise<void>

Remarks

Called by CompositeVoice during agent startup. The provider should be ready to process requests after this method resolves.

Throws

Error if initialization fails (e.g., invalid API key, network error)

Inherited from

BaseProvider.initialize


isPlaying()

isPlaying(): boolean;

Defined in: src/core/types/providers.ts:1429

Check whether audio is currently playing.

Returns

boolean

true when audio is actively being played


isReady()

isReady(): boolean;

Defined in: src/core/types/providers.ts:193

Check if the provider is initialized and ready to process requests.

Returns

boolean

true if the provider has been initialized and is operational

Inherited from

BaseProvider.isReady


onPlaybackEnd()

onPlaybackEnd(callback): void;

Defined in: src/core/types/providers.ts:1443

Register a callback invoked when all audio has finished playing.

Parameters

ParameterTypeDescription
callback() => voidFunction called when playback ends

Returns

void


onPlaybackError()

onPlaybackError(callback): void;

Defined in: src/core/types/providers.ts:1450

Register a callback invoked when a playback error occurs.

Parameters

ParameterTypeDescription
callback(error) => voidFunction called with the error

Returns

void


onPlaybackStart()

onPlaybackStart(callback): void;

Defined in: src/core/types/providers.ts:1436

Register a callback invoked when audio playback begins.

Parameters

ParameterTypeDescription
callback() => voidFunction called when playback starts

Returns

void


pause()

pause(): void;

Defined in: src/core/types/providers.ts:1415

Temporarily pause playback.

Returns

void

Remarks

Playback can be resumed with resume.


resume()

resume(): void;

Defined in: src/core/types/providers.ts:1422

Resume playback after a pause.

Returns

void

See

pause


stop()

stop(): void;

Defined in: src/core/types/providers.ts:1407

Stop playback immediately and clear any buffered audio.

Returns

void

© 2026 CompositeVoice. All rights reserved.

Font size
Contrast
Motion
Transparency