Pipecat Integration Overview
Add automatic tracing to Pipecat voice pipelines with Noveum Trace
Noveum Trace adds automatic tracing to your Pipecat voice pipeline in minutes. Every conversation is recorded as a structured trace with per-turn spans for STT, LLM, and TTS; tool/function-call details are attached to the LLM span as attributes (when available), along with latency and token usage.
Prerequisites
- Python 3.11+
- A working Pipecat pipeline (
pipecat-ai) - A Noveum API key (get one at noveum.ai)
Installation
Quick Start
You only need three changes:
- Initialize
noveum_traceonce at startup. - Create a
NoveumTraceObserver. - Attach the observer to your
PipelineTask(and ensure turn tracking wiring happens before the runner starts).
Traces are flushed automatically when the pipeline ends (EndFrame / CancelFrame).
What Gets Traced
Each pipeline session produces one conversation trace containing a turn span per conversational exchange. Each turn has child spans for STT, LLM, and TTS. When record_audio=True and an AudioBufferProcessor is present, a full-conversation recording span is also created at the root.
Configuration Options
Common tweaks:
- Turn off
capture_textif you want less text stored in spans. - Set
capture_function_calls=Falseif your LLM never emits function-call frames. record_audio=Truedoes two things:- Uploads per-span audio and adds
stt.audio_uuid/tts.audio_uuidattributes. - Captures a full stereo conversation WAV as a
pipecat.full_conversationspan. This requiresAudioBufferProcessor(num_channels=2)to be present in your pipeline (see the basic example).
- Uploads per-span audio and adds
You can also use the convenience factory instead of constructing NoveumTraceObserver directly:
Troubleshooting
No traces appearing
- Verify
noveum_trace.init()is called before the pipeline starts. - Confirm
await trace_obs.attach_to_task(task)is called (from async code) afterPipelineTaskis constructed and beforerunner.run(task). - Confirm your API key and the
projectname match what you configured in the Noveum dashboard.
Turn spans missing or not splitting correctly
await trace_obs.attach_to_task(task)is required for accurate turn boundaries.- Ensure turn tracking is enabled in your Pipecat version so
attach_to_task()can wire external boundaries.
LLM token counts not appearing
- Confirm
PipelineParams(enable_metrics=True, enable_usage_metrics=True)is set on yourPipelineTaskβ Pipecat only emitsMetricsFramewhen metrics are enabled. - Token counts come from Pipecat's
MetricsFrame. Most standard Pipecat LLM services emit them when metrics are enabled.
Function call spans missing
- Set
capture_function_calls=True. - Confirm your LLM processor emits
FunctionCallInProgressFrame/FunctionCallResultFrame.
Next Steps
- Explore a complete example: Basic Pipecat Voice Pipeline
Get Early Access to Noveum.ai Platform
Be the first one to get notified when we open Noveum Platform to more users. All users get access to Observability suite for free, early users get free eval jobs and premium support for the first year.