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 agents —
NullInput+ LLM +NullOutput= ChatGPT-style text interface - Voice-in, text-out —
MicrophoneInput+ 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
- AudioOutputProvider for the interface contract
- BrowserAudioOutput for the browser-side counterpart
- BufferInput for the server-side input counterpart
Implements
Constructors
Constructor
new NullOutput(): NullOutput;
Returns
NullOutput
Properties
| Property | Modifier | Type | Default value | Description | Defined in |
|---|---|---|---|---|---|
roles | readonly | readonly ProviderRole[] | undefined | Pipeline 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 |
type | readonly | ProviderType | '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:195
Configure the output format. No-op — audio is discarded.
Parameters
| Parameter | Type | Description |
|---|---|---|
_metadata | AudioMetadata | Ignored. |
Returns
void
Implementation of
connect()
connect(): Promise<void>;
Defined in: src/providers/output/NullOutput.ts:159
No-op — nothing to connect.
Returns
Promise<void>
disconnect()
disconnect(): Promise<void>;
Defined in: src/providers/output/NullOutput.ts:169
No-op — nothing to disconnect.
Returns
Promise<void>
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
enqueue()
enqueue(_chunk): void;
Defined in: src/providers/output/NullOutput.ts:204
Enqueue an audio chunk. No-op — audio is discarded.
Parameters
| Parameter | Type | Description |
|---|---|---|
_chunk | AudioChunk | Ignored. |
Returns
void
Implementation of
finalize()
finalize(): Promise<void>;
Defined in: src/providers/output/NullOutput.ts:154
No-op — nothing to finalize.
Returns
Promise<void>
flush()
flush(): Promise<void>;
Defined in: src/providers/output/NullOutput.ts:211
Wait for playback completion. Resolves immediately — nothing to play.
Returns
Promise<void>
Implementation of
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:241
Check whether audio is playing. Always returns false.
Returns
boolean
false — NullOutput never plays audio.
Implementation of
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
onAudio()
onAudio(_callback): void;
Defined in: src/providers/output/NullOutput.ts:174
No-op — no audio will be produced.
Parameters
| Parameter | Type |
|---|---|
_callback | (chunk) => void |
Returns
void
onMetadata()
onMetadata(_callback): void;
Defined in: src/providers/output/NullOutput.ts:179
No-op — no metadata will be produced.
Parameters
| Parameter | Type |
|---|---|
_callback | (metadata) => void |
Returns
void
onPlaybackEnd()
onPlaybackEnd(_callback): void;
Defined in: src/providers/output/NullOutput.ts:259
Register a playback-end callback. No-op — playback never ends.
Parameters
| Parameter | Type | Description |
|---|---|---|
_callback | () => void | Ignored. |
Returns
void
Implementation of
AudioOutputProvider.onPlaybackEnd
onPlaybackError()
onPlaybackError(_callback): void;
Defined in: src/providers/output/NullOutput.ts:268
Register a playback-error callback. No-op — no errors can occur.
Parameters
| Parameter | Type | Description |
|---|---|---|
_callback | (error) => void | Ignored. |
Returns
void
Implementation of
AudioOutputProvider.onPlaybackError
onPlaybackStart()
onPlaybackStart(_callback): void;
Defined in: src/providers/output/NullOutput.ts:250
Register a playback-start callback. No-op — playback never starts.
Parameters
| Parameter | Type | Description |
|---|---|---|
_callback | () => void | Ignored. |
Returns
void
Implementation of
AudioOutputProvider.onPlaybackStart
pause()
pause(): void;
Defined in: src/providers/output/NullOutput.ts:225
Pause playback. No-op — nothing is playing.
Returns
void
Implementation of
processChunk()
processChunk(_text): void;
Defined in: src/providers/output/NullOutput.ts:149
No-op — text is discarded, no synthesis occurs.
Parameters
| Parameter | Type |
|---|---|
_text | string |
Returns
void
resume()
resume(): void;
Defined in: src/providers/output/NullOutput.ts:232
Resume playback. No-op — nothing is paused.
Returns
void
Implementation of
sendText()
sendText(_text): void;
Defined in: src/providers/output/NullOutput.ts:164
No-op — text is discarded.
Parameters
| Parameter | Type |
|---|---|
_text | string |
Returns
void
stop()
stop(): void;
Defined in: src/providers/output/NullOutput.ts:218
Stop playback. No-op — nothing is playing.
Returns
void
Implementation of
synthesize()
synthesize(_text): Promise<Blob>;
Defined in: src/providers/output/NullOutput.ts:184
No-op — returns empty blob.
Parameters
| Parameter | Type |
|---|---|
_text | string |
Returns
Promise<Blob>