Skip to main content

pipecat-plugins-pinch

Real-time voice translation for Pipecat powered by Pinch.


Installation

pip install pipecat-plugins-pinch

Requires Python ≥ 3.10.


Prerequisites

You need a Pinch API key. Get one at the developers portal.

Set it in your environment:

export PINCH_API_KEY=pk_your_key_here

How it fits into a Pipecat pipeline

PinchTranslatorService is a drop-in FrameProcessor. It sits between your transport's input and output — receiving InputAudioRawFrame from the user and emitting OutputAudioRawFrame (translated speech) and TranscriptionFrame (transcripts) downstream.

transport.input()
      │
      ▼
PinchTranslatorService        ← translate en-US → es-ES
      │
      ├─► OutputAudioRawFrame  → transport.output()  (translated audio)
      └─► TranscriptionFrame   → your handler        (transcripts)

Usage

from pipecat.pipeline.pipeline import Pipeline
from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineParams, PipelineTask
from pipecat.plugins.pinch import PinchTranslatorService, TranslatorOptions

async def main():
    # Replace with your preferred Pipecat transport (Daily, LiveKit, WebSocket, etc.)
    # transport = DailyTransport(...)

    translator = PinchTranslatorService(
        options=TranslatorOptions(
            source_language="en-US",
            target_language="es-ES",
            voice_type="clone",   # preserves the speaker's voice
        ),
        # api_key="pk_..."  ← or set PINCH_API_KEY env var
    )

    pipeline = Pipeline([
        transport.input(),
        translator,
        transport.output(),
    ])

    task = PipelineTask(pipeline, params=PipelineParams(allow_interruptions=True))
    await PipelineRunner().run(task)

The plugin handles everything internally — calling the Pinch API, managing the translation session, resampling audio, and routing frames — so you don't need to configure anything beyond TranslatorOptions.


Configuration

TranslatorOptions

Parameter Type Default Description
source_language str required code for the speaker's language (e.g. "en-US")
target_language str required code for the output language (e.g. "es-ES")
voice_type str "clone" Voice used for translated output: "clone", "female", or "male"

PinchTranslatorService

Parameter Type Default Description
options TranslatorOptions required Language and voice configuration
api_key str | None None Pinch API key. Falls back to PINCH_API_KEY env var

Supported languages

Full list of language codes: supported languages


Transcript frames

The plugin emits standard Pipecat transcript frames for both the original and translated speech. You can consume these in any downstream FrameProcessor.

from pipecat.frames.frames import TranscriptionFrame, InterimTranscriptionFrame
from pipecat.processors.frame_processor import FrameProcessor, FrameDirection

class MyTranscriptHandler(FrameProcessor):
    async def process_frame(self, frame, direction):
        await super().process_frame(frame, direction)

        if isinstance(frame, TranscriptionFrame) and frame.user_id == "":
            print(f"Translated: {frame.text}")

        await self.push_frame(frame, direction)

Links


License

Apache 2.0 — see LICENSE.

Metadata

Release files for pipecat-plugins-pinch 0.1.0

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

Source distribution (sdist)

Source distribution for pipecat-plugins-pinch 0.1.0
File Size Uploaded
pipecat_plugins_pinch-0.1.0.tar.gz 168.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pipecat-plugins-pinch 0.1.0
File Interpreter ABI Platform
pipecat_plugins_pinch-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 181.6 kB

Release files / pipecat_plugins_pinch-0.1.0.tar.gz

Download URL pipecat_plugins_pinch-0.1.0.tar.gz
Size 168.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5455f14f96a51987956a18bb6457fc19f556f26cd0cbdaa67a169c1eff994fed
BLAKE2b-256 checksum
How to use checksums
89cbe35864050ae87ead53f11575a56cec9b14d59cf1a64854b0ccf9f946a754
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 2, 2026.

Transparency log

Release files / pipecat_plugins_pinch-0.1.0-py3-none-any.whl

Download URL pipecat_plugins_pinch-0.1.0-py3-none-any.whl
Size 13.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
775ee1ef547a183f77bfbccaf31454400bf13cb1812380487a58bebb8676f7f5
BLAKE2b-256 checksum
How to use checksums
cfe3fd0b5f1a6224d4271b20a5de8c7c176b3c0dd0d13f3516c9231c0b598952
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

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