Skip to main content

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

  1. Check collector is running: Look for "OTLP collector listening on port 4317" log message
  2. Verify client endpoint: Ensure Pipecat is configured to send to http://localhost:4317

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finchvox-0.0.1.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

finchvox-0.0.1-py3-none-any.whl (120.4 kB view details)

Uploaded Python 3

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

Hashes for finchvox-0.0.1.tar.gz
Algorithm Hash digest
SHA256 8fb3aeda93e8bc0ac917490921cf2648eca2641d38a1e120814af93298fc041b
MD5 dac9c3de92b9d0e130c4d18f2b5435e3
BLAKE2b-256 82fdf601ac7c1c6fe8af0d33a27e2a7db7d358cfdbc060bd5a51b19b065cf71e

See more details on using hashes here.

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

Hashes for finchvox-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2da3f4cf3e7558fd65ddcccef37efd23d9b05da47d5708f1a6125cb347455b0a
MD5 2f14775087db7d22ab3edeb03fe2e8f7
BLAKE2b-256 5eb5078fd21eb96313edb1c261b077d0c77e435d176fa6951c1694be1d339e9d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page