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

Overview

RTZRSTTService provides streaming speech-to-text through RTZR (Return Zero) VITO, a Korean speech recognition API. Its sommers_ko model is tuned for Korean telephone audio, which suits call-center voice agents. The service extends Pipecat’s WebsocketSTTService and pushes InterimTranscriptionFrame and TranscriptionFrame results into the pipeline. When the VAD reports the end of speech it sends Finalize, so the utterance closes right away instead of waiting for RTZR’s own end-point detection.

Source Repository

Source code, README, and issues for the RTZR integration

Example

A Korean voice bot with RTZR STT

RTZR Streaming STT Reference

Endpoint, parameters, and messages

RTZR Developers

Create a client ID and secret

PyPI Package

The pipecat-rtzr package on PyPI

Installation

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

Prerequisites

RTZR Account Setup

Before using the RTZR STT service, you need:
  1. RTZR Account: Sign up at the RTZR Developers Console
  2. Client ID and Secret: Create a client in the console

Required Environment Variables

  • RTZR_CLIENT_ID: Your RTZR client ID
  • RTZR_CLIENT_SECRET: Your RTZR client secret
The service exchanges them for an access token, caches it, and refreshes it before it expires.

Configuration

str
default:"None"
RTZR client ID. Defaults to the RTZR_CLIENT_ID environment variable.
str
default:"None"
RTZR client secret. Defaults to the RTZR_CLIENT_SECRET environment variable.
str
default:"https://openapi.vito.ai"
Base URL of the RTZR OpenAPI. The WebSocket URL is derived from it.
int
default:"None"
Sample rate of the incoming audio in Hz (8000 to 48000). If None, uses the pipeline’s input sample rate. 8 kHz is the native telephony rate.
bool
default:"True"
Send Finalize when the VAD reports the end of speech. Without it, an utterance cut off mid-speech is not finalized until the stream ends.
float
default:"2.0"
Seconds to wait for the last transcript after EOS on shutdown, when an utterance is still open. 0 closes right after sending EOS.
RTZRSTTService.Settings
default:"None"
Runtime-updatable settings. See Settings below.
float
default:"None"
P99 latency from speech end to final transcript, in seconds, used by turn strategies. This value has not been measured for Pipecat, so Pipecat’s default applies if None. Measure your deployment with stt-benchmark and pass the result.

Settings

Runtime-configurable settings passed via the settings constructor argument using RTZRSTTService.Settings(...). These can be updated mid-conversation with STTUpdateSettingsFrame; a change reconnects the stream, because RTZR reads them from the connection URL.

Usage

Basic Setup

With Punctuation and Keyword Boosting

Notes

  • Audio format: The service sends 16-bit mono PCM (LINEAR16).
  • Reconnects: If the socket drops, the service reconnects automatically. The utterance in progress when it dropped is lost, because audio is not replayed.
  • Idle connections: RTZR can close a connection that receives no audio for 60 seconds, so the service sends silent audio as a keepalive.
  • Concurrency: Streaming channels are limited by your RTZR plan.

Compatibility

Tested with Pipecat 1.13.0 and Python 3.11 and 3.12.