Skip to main content
Community-maintained integration. This service is built and maintained by SaidwireLLC. Pipecat does not test or officially support it. Please report issues and request changes on the source repository. Learn more about community integrations.

Overview

SaidwireSTTService provides real-time English speech-to-text through Saidwire. It extends Pipecat’s WebsocketSTTService, so connection management, reconnection, keepalive and metrics follow the same patterns as the built-in services. Interim results are pushed as InterimTranscriptionFrame and finals as TranscriptionFrame. When a VADUserStoppedSpeakingFrame arrives, the service sends Finalize, and Saidwire answers right away with the final transcript of everything heard so far. That final is pushed with finalized=True, so turn-taking doesn’t wait on a server-side pause.

Source Repository

Source code, README, changelog and issues

Example

A voice agent that hears the user through Saidwire

Saidwire API Docs

Streaming protocol, parameters, limits and error codes

PyPI Package

The pipecat-saidwire package on PyPI

Installation

This is a community-maintained package distributed separately from pipecat-ai:

Prerequisites

Saidwire Account Setup

Before using the Saidwire STT service, you need:
  1. Saidwire Account: Sign up at saidwire.com/dev
  2. API Key: Create a key from your dashboard

Required Environment Variables

  • SAIDWIRE_API_KEY: Your Saidwire API key

Configuration

str
default:"None"
Saidwire API key. Defaults to the SAIDWIRE_API_KEY environment variable.
str
default:"wss://api.saidwire.com/v1/listen"
Streaming endpoint.
int
default:"None"
Sample rate of the incoming audio in Hz (8000 to 48000). If None, uses the pipeline’s input sample rate.
bool
default:"True"
Send Finalize when a VADUserStoppedSpeakingFrame arrives, so the final transcript comes back right away.
float
default:"300.0"
Seconds to keep retrying while the service answers “starting up” or “busy” (HTTP 503 or 429) before reporting a permanent error.
SaidwireSTTService.Settings
default:"None"
Runtime-updatable settings. See Settings below.
float
default:"0.30"
P99 latency from speech end to final transcript, in seconds, used by turn strategies. Measure your own deployment with stt-benchmark and pass the result.

Settings

Runtime-configurable settings passed via the settings constructor argument using SaidwireSTTService.Settings(...). They can be updated mid-conversation with STTUpdateSettingsFrame; a change reconnects the stream between user turns.

Usage

Basic Setup

With Early Words

Notes

  • Audio format: The service sends 16-bit mono PCM at the pipeline’s input rate.
  • Idle connections: While no audio flows (for example, while the user is muted), the service sends KeepAlive messages instead of silent audio.
  • Errors: A bad or revoked key, or used-up credit, is reported once as a permanent error, with no retry loop.
  • Language: English only.

Compatibility

Tested with Pipecat 1.15.0 and Python 3.12. See the source repository for the latest tested version and changelog.