Skip to main content

parlant-pipecat

Build intelligent voice agents on Parlant using Pipecat

License Python 3.10+

Parlant-Pipecat is a seamless integration that combines Parlant's powerful conversational AI capabilities with Pipecat's flexible voice pipeline framework. Build production-ready voice agents with natural conversations, advanced turn-taking, and enterprise-grade reliability.


✨ Key Features

  • Drop-in Replacement: ParlantService replaces any LLM service in your Pipecat pipeline - no context aggregator needed
  • Natural Conversations: Leverage Parlant's stateful conversation management for coherent, context-aware interactions
  • Typing Indicators & Filler Phrases: Keep conversations engaging with audio feedback during processing
  • Production Ready: Built on enterprise-tested components with full async support

🚀 Quick Start

Prerequisites

Ensure you have a Parlant server running on http://localhost:8800 (or configure a custom URL). Visit the Parlant documentation to get started with Parlant.

Installation

For production use:

pip install parlant-pipecat

For development or running examples:

  1. Clone this repository:

    git clone https://github.com/emcie-co/parlant-pipecat.git
    cd parlant-pipecat
    
  2. Install with Poetry:

    poetry install
    
  3. Set up environment variables: Create a .env file with your service credentials:

    CARTESIA_API_KEY=your_cartesia_api_key
    # Add other service keys as needed
    

Running the Example

Run the live agent example with office ambience:

poetry run python examples/live_agent_with_office_ambience.py

This example demonstrates a fully-featured voice agent with:

  • Real-time speech-to-text (Cartesia STT)
  • Parlant conversational AI
  • Text-to-speech output (Cartesia TTS)
  • Background office ambience mixing
  • Smart turn detection and VAD

💡 Pro Tip: Configure your Parlant agent with VoiceOptimizedPerceivedPerformancePolicy for the best voice experience. This policy optimizes response timing and reduces perceived latency in voice conversations.


🏗️ Integration Guide

Basic Pipeline Setup

ParlantService integrates seamlessly into your Pipecat pipeline. Here's the basic structure:

from parlant.contrib.pipecat import ParlantService
from pipecat.pipeline.pipeline import Pipeline

# Initialize Parlant service
parlant = ParlantService()

# Build your pipeline
pipeline = Pipeline([
    transport.input(),
    rtvi,
    stt,                  # Your STT service
    parlant,              # Replaces LLM service - no context aggregator needed!
    tts,                  # Your TTS service
    transport.output(),
])

Key Differences from Standard LLM Pipelines:

  •  ParlantService goes where you'd typically use an LLMService
  •  No context aggregator required - Parlant manages conversation state internally
  •  Works with any Pipecat-compatible STT/TTS services

Full Example

See examples/live_agent_with_office_ambience.py for a complete implementation including:

  • WebRTC transport configuration
  • VAD (Voice Activity Detection) setup
  • Turn analyzer integration
  • Audio mixing for background ambience
  • RTVI processor integration

⚙️ Configuration

ParlantService Parameters

parlant_config: ParlantConfig

Configure connection to your Parlant server:

from parlant.contrib.pipecat import ParlantConfig, ParlantService

config = ParlantConfig(
    agent_id="your-agent-id",           # Optional: ID of Parlant agent (defaults to first agent)
    customer_id_provider=async_fn,      # Optional: Async function returning customer ID
    url="http://localhost:8800",        # Parlant server URL
    client=custom_client,               # Optional: Pre-configured AsyncParlantClient
)

parlant = ParlantService(parlant_config=config)

ParlantConfig Fields:

  • agent_id (str | None): The ID of the Parlant agent to use. If not provided, defaults to the first available agent.
  • customer_id_provider (Callable[[], Awaitable[str | None]] | None): Async function that returns the customer ID for session tracking. If not provided, uses Parlant's guest customer.
  • url (str): Base URL of your Parlant server. Default: "http://localhost:8800"
  • client (AsyncParlantClient | None): Pre-configured Parlant client. If provided, url is ignored.

agent_greeting: str | None

Initial message the agent speaks when a session starts:

parlant = ParlantService(
    agent_greeting="Hello! I'm here to help. What can I do for you?"
)

Set to None to disable the greeting. Default: "Hi, I'm an AI assistant. Please bear with me as I may take a few seconds to process your speech. How can I help you today?"

filler_phrase_provider: Callable

Customize what the agent says during longer processing delays:

async def custom_filler_provider(
    params: FillerPhraseProviderParams
) -> str:
    return "Thinking about that..."

parlant = ParlantService(
    filler_phrase_provider=custom_filler_provider
)

The provider receives FillerPhraseProviderParams with context about the session, agent, customer, and recent messages. Return None to skip filler phrases.

Default phrases include: "Just a sec.", "One moment please.", etc.

typing_track_config: TypingTrackConfig

Configure typing sound effects played during processing:

from parlant.contrib.pipecat import TypingTrackConfig

typing_config = TypingTrackConfig(
    use_typing_track=True,                      # Enable/disable typing sounds
    typing_track_filename="/path/to/sound.wav", # Custom sound file (mono WAV)
    typing_track_sample_rate=16000,             # Sample rate in Hz
)

parlant = ParlantService(typing_track_config=typing_config)

TypingTrackConfig Fields:

  • use_typing_track (bool): Enable typing sound effects. Default: True
  • typing_track_filename (str): Path to typing sound WAV file (must be mono/1-channel). Default: included typing.wav
  • typing_track_sample_rate (int): Sample rate of the typing track. Default: 16000

🤝 Contributing

We welcome contributions! Whether it's:

  • 🐛 Bug reports and fixes
  • 💡 Feature requests and implementations
  • 📚 Documentation improvements
  • 🧪 Test coverage enhancements
  • 💬 Examples and use cases

Getting Started:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Please ensure your code follows the existing style and includes appropriate tests.


📄 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.


🔗 Links


Built with ❤️ by the Parlant team

Metadata

Release files for parlant-pipecat 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parlant-pipecat 0.1.1
File Size Uploaded
parlant_pipecat-0.1.1.tar.gz 76.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for parlant-pipecat 0.1.1
File Interpreter ABI Platform
parlant_pipecat-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 149.8 kB

Release files / parlant_pipecat-0.1.1.tar.gz

Download URL parlant_pipecat-0.1.1.tar.gz
Size 76.1 kB
Tags Source
SHA-256 checksum
How to use checksums
52daca8ab2a6bec7a7c1de6c2adccf203764e1ffbe84d40be019ece7fcdf6dc7
BLAKE2b-256 checksum
How to use checksums
44f9d5fe547006e2b507c31473aca7fc380753fe813129b6ee179093fce2c549
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.10.5 Darwin/25.0.0

Release files / parlant_pipecat-0.1.1-py3-none-any.whl

Download URL parlant_pipecat-0.1.1-py3-none-any.whl
Size 73.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7491839f0f8eb1abbad4c2e7fb6074e94b205f6be93c7a5ec3063035adfad182
BLAKE2b-256 checksum
How to use checksums
b84216a5a722126ac73a0138a2eda75ed2fe70e0f1d31db0a15bc16a92c2d4bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.10.5 Darwin/25.0.0

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page