Skip to content

NullOutput

No-op audio output provider that discards all audio.

Defined in: src/providers/output/NullOutput.ts:91

No-op audio output provider that discards all audio.

Remarks

NullOutput implements the Null Object pattern for the 'tts' + 'output' pipeline roles. Every method is a no-op, making it safe to use wherever an AudioOutputProvider is required but audio playback is not needed.

Common use cases:

  • Text-only agentsNullInput + LLM + NullOutput = ChatGPT-style text interface
  • Voice-in, text-outMicrophoneInput + STT + LLM + NullOutput = user speaks, agent replies with text only
  • Server-side pipelines where only the transcription/LLM response matters
  • Testing pipelines without audio playback side-effects
  • Headless environments without audio hardware

Example

import { NullOutput, CompositeVoice, BufferInput, DeepgramSTT, AnthropicLLM } from 'composite-voice';

// Minimal server-side pipeline
const voice = new CompositeVoice({
  providers: [
    new BufferInput({ sampleRate: 16000, encoding: 'linear16', channels: 1 }),
    new DeepgramSTT({ apiKey: '...' }),
    new AnthropicLLM({ apiKey: '...', model: 'claude-haiku-4-5' }),
    new NullOutput(),
  ],
});

// Audio from TTS is silently discarded
await voice.initialize();

See

Implements

Constructors

Constructor

new NullOutput(): NullOutput;

Returns

NullOutput

Properties

PropertyModifierTypeDefault valueDescriptionDefined in
rolesreadonlyreadonly ProviderRole[]undefinedPipeline roles covered by this provider. Remarks NullOutput covers both 'tts' and 'output', so no separate TTS provider is needed. LLM text is still emitted via llm.chunk and llm.complete events — it just isn’t synthesized into speech.src/providers/output/NullOutput.ts:108
typereadonlyProviderType'rest'Communication type for this provider. Remarks NullOutput uses 'rest' because it does not maintain any connection.src/providers/output/NullOutput.ts:98

Methods

configure()

configure(_metadata): void;

Defined in: src/providers/output/NullOutput.ts:249

Configure the output format. No-op — audio is discarded.

Parameters

ParameterTypeDescription
_metadataAudioMetadataIgnored.

Returns

void

Implementation of

AudioOutputProvider.configure


connect()

connect(): Promise<void>;

Defined in: src/providers/output/NullOutput.ts:177

No-op — nothing to connect.

Returns

Promise<void>

Remarks

There is no TTS WebSocket or service to connect to in text-only mode.


disconnect()

disconnect(): Promise<void>;

Defined in: src/providers/output/NullOutput.ts:199

No-op — nothing to disconnect.

Returns

Promise<void>

Remarks

No TTS connection was established, so there is nothing to close.


dispose()

dispose(): Promise<void>;

Defined in: src/providers/output/NullOutput.ts:132

Dispose of the provider.

Returns

Promise<void>

Remarks

Clears the initialized flag. No resources need to be released.

Implementation of

AudioOutputProvider.dispose


enqueue()

enqueue(_chunk): void;

Defined in: src/providers/output/NullOutput.ts:258

Enqueue an audio chunk. No-op — audio is discarded.

Parameters

ParameterTypeDescription
_chunkAudioChunkIgnored.

Returns

void

Implementation of

AudioOutputProvider.enqueue


finalize()

finalize(): Promise<void>;

Defined in: src/providers/output/NullOutput.ts:167

No-op — nothing to finalize.

Returns

Promise<void>

Remarks

There is no TTS engine with buffered state, so finalization is a no-op.


flush()

flush(): Promise<void>;

Defined in: src/providers/output/NullOutput.ts:265

Wait for playback completion. Resolves immediately — nothing to play.

Returns

Promise<void>

Implementation of

AudioOutputProvider.flush


initialize()

initialize(): Promise<void>;

Defined in: src/providers/output/NullOutput.ts:122

Initialize the provider.

Returns

Promise<void>

Remarks

Sets the initialized flag. No resources are acquired since all operations are no-ops. If already initialized, this is a no-op.

Implementation of

AudioOutputProvider.initialize


isPlaying()

isPlaying(): boolean;

Defined in: src/providers/output/NullOutput.ts:295

Check whether audio is playing. Always returns false.

Returns

boolean

falseNullOutput never plays audio.

Implementation of

AudioOutputProvider.isPlaying


isReady()

isReady(): boolean;

Defined in: src/providers/output/NullOutput.ts:142

Check whether the provider has been initialized.

Returns

boolean

true when initialize has completed and dispose has not yet been called.

Implementation of

AudioOutputProvider.isReady


onAudio()

onAudio(_callback): void;

Defined in: src/providers/output/NullOutput.ts:212

No-op — no audio will be produced.

Parameters

ParameterTypeDescription
_callback(chunk) => voidIgnored.

Returns

void

Remarks

The callback is accepted to satisfy the interface but is never invoked because no TTS audio is synthesized in text-only mode.


onMetadata()

onMetadata(_callback): void;

Defined in: src/providers/output/NullOutput.ts:225

No-op — no metadata will be produced.

Parameters

ParameterTypeDescription
_callback(metadata) => voidIgnored.

Returns

void

Remarks

The callback is accepted to satisfy the interface but is never invoked because no TTS audio is synthesized.


onPlaybackEnd()

onPlaybackEnd(_callback): void;

Defined in: src/providers/output/NullOutput.ts:313

Register a playback-end callback. No-op — playback never ends.

Parameters

ParameterTypeDescription
_callback() => voidIgnored.

Returns

void

Implementation of

AudioOutputProvider.onPlaybackEnd


onPlaybackError()

onPlaybackError(_callback): void;

Defined in: src/providers/output/NullOutput.ts:322

Register a playback-error callback. No-op — no errors can occur.

Parameters

ParameterTypeDescription
_callback(error) => voidIgnored.

Returns

void

Implementation of

AudioOutputProvider.onPlaybackError


onPlaybackStart()

onPlaybackStart(_callback): void;

Defined in: src/providers/output/NullOutput.ts:304

Register a playback-start callback. No-op — playback never starts.

Parameters

ParameterTypeDescription
_callback() => voidIgnored.

Returns

void

Implementation of

AudioOutputProvider.onPlaybackStart


pause()

pause(): void;

Defined in: src/providers/output/NullOutput.ts:279

Pause playback. No-op — nothing is playing.

Returns

void

Implementation of

AudioOutputProvider.pause


processChunk()

processChunk(_text): void;

Defined in: src/providers/output/NullOutput.ts:157

No-op — text is discarded, no synthesis occurs.

Parameters

ParameterTypeDescription
_textstringIgnored.

Returns

void

Remarks

There is no TTS engine, so text chunks are silently discarded. This exists to satisfy the duck-type validation for the 'tts' role.


resume()

resume(): void;

Defined in: src/providers/output/NullOutput.ts:286

Resume playback. No-op — nothing is paused.

Returns

void

Implementation of

AudioOutputProvider.resume


sendText()

sendText(_text): void;

Defined in: src/providers/output/NullOutput.ts:189

No-op — text is discarded.

Parameters

ParameterTypeDescription
_textstringIgnored.

Returns

void

Remarks

There is no TTS engine to receive text for synthesis.


stop()

stop(): void;

Defined in: src/providers/output/NullOutput.ts:272

Stop playback. No-op — nothing is playing.

Returns

void

Implementation of

AudioOutputProvider.stop


synthesize()

synthesize(_text): Promise<Blob>;

Defined in: src/providers/output/NullOutput.ts:238

No-op — returns an empty blob.

Parameters

ParameterTypeDescription
_textstringIgnored.

Returns

Promise<Blob>

An empty Blob.

Remarks

There is no TTS engine, so synthesis always returns an empty Blob.

© 2026 CompositeVoice. All rights reserved.

Font size
Contrast
Motion
Transparency