Voice AI observability dev tool for Pipecat
Project description
Finchvox - elevated debuggability for Voice AI apps
Do your eyes bleed like a Vecna victim watching Pipecat logs fly by? Do OpenTelemetry traces look impressive … yet explain nothing? If so, meet Finchvox, a local debuggability tool purpose-built for Voice AI apps.
Finchvox unifies conversation audio and traces in a single UI, highlighting voice-specific problems like interruptions and high user <-> bot latency. Good luck convincing DataDog to add that!
Table of Contents
Prerequisites
- Python 3.10 or higher
- A Pipecat Voice AI application
Installation
# uv
uv add finchvox "pipecat-ai[tracing]"
# Or with pip
pip install finchvox "pipecat-ai[tracing]"
Usage - Finchvox server
uv run finchvox start
For the list of available options, run:
uv run finchvox --help
Setup
✨ Let your AI coding agent do the work!
Try this starter prompt:
Follow the "Setup" instructions at https://github.com/itsderek23/finchvox/blob/main/README.md to setup tracing and audio recording for finchvox.
Step 1 - Enable Tracing in Your Pipecat Application
import os
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from pipecat.utils.tracing.setup import setup_tracing
# Step 1: Initialize OpenTelemetry with your chosen exporter
exporter = OTLPSpanExporter(
endpoint="http://localhost:4317",
insecure=True,
)
setup_tracing(
service_name="my-voice-app",
exporter=exporter,
)
# Step 2: Enable tracing in your PipelineTask
task = PipelineTask(
pipeline,
params=PipelineParams(
enable_metrics=True
),
enable_tracing=True,
enable_turn_tracking=True
)
For the full list of OpenTelemetry setup options, see the Pipecat OpenTelemetry docs.
Step 2 - Enable Audio Recording
Import the audio recorder and add it to your pipeline:
from finchvox.audio_recorder import ConversationAudioRecorder
audio_recorder = ConversationAudioRecorder()
pipeline = Pipeline(
[
# Other processors, like STT, LLM, TTS, etc.
audio_recorder.get_processor(),
# context_aggregator.assistant(),
]
)
Start and stop recording on client connect/disconnect events:
@transport.event_handler("on_client_connected")
async def on_client_connected(transport, client):
await audio_recorder.start_recording()
# Other initialization logic...
@transport.event_handler("on_client_disconnected")
async def on_client_disconnected(transport, client):
await audio_recorder.stop_recording()
# Other cleanup logic...
Troubleshooting
Port already in use
If port 4317 is already occupied:
# Find process using port
lsof -i :4317
# Kill the process
kill -9 <PID>
No spans being written
- Check collector is running: Look for "OTLP collector listening on port 4317" log message
- Verify client endpoint: Ensure Pipecat is configured to send to
http://localhost:4317
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file finchvox-0.0.1.tar.gz.
File metadata
- Download URL: finchvox-0.0.1.tar.gz
- Upload date:
- Size: 1.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8fb3aeda93e8bc0ac917490921cf2648eca2641d38a1e120814af93298fc041b
|
|
| MD5 |
dac9c3de92b9d0e130c4d18f2b5435e3
|
|
| BLAKE2b-256 |
82fdf601ac7c1c6fe8af0d33a27e2a7db7d358cfdbc060bd5a51b19b065cf71e
|
File details
Details for the file finchvox-0.0.1-py3-none-any.whl.
File metadata
- Download URL: finchvox-0.0.1-py3-none-any.whl
- Upload date:
- Size: 120.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2da3f4cf3e7558fd65ddcccef37efd23d9b05da47d5708f1a6125cb347455b0a
|
|
| MD5 |
2f14775087db7d22ab3edeb03fe2e8f7
|
|
| BLAKE2b-256 |
5eb5078fd21eb96313edb1c261b077d0c77e435d176fa6951c1694be1d339e9d
|