Skip to main content

Overview

pipecat-rumik provides Pipecat text-to-speech services backed by Rumik AI’s TTS APIs. It exposes RumikTTSService for WebSocket-based synthesis in interactive voice pipelines and RumikHttpTTSService for HTTP request/response synthesis. Both services emit raw PCM audio frames (TTSAudioRawFrame).

Source Repository

Source code, examples, and issues for the Rumik AI integration

PyPI Package

The pipecat-rumik package on PyPI

Rumik AI

Learn more about Rumik AI

API Keys

Create and manage your Rumik AI API keys

Installation

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

Prerequisites

Rumik AI Account Setup

Before using either service, you need:
  1. API Key: Create API keys from the Rumik AI dashboard
  2. Gateway URL: Use the gateway URL provided for your Rumik AI deployment

Required Environment Variables

  • RUMIK_API_KEY: Your Rumik AI API key
  • RUMIK_GATEWAY_URL: Your Rumik AI gateway base URL

Configuration

RumikTTSService

api_key
str
required
Rumik AI API key.
gateway_url
str
required
Rumik AI gateway base URL.
settings
RumikTTSService.Settings
default:"None"
Runtime-configurable TTS settings. See Settings below.
sample_rate
int
default:"24000"
Output audio sample rate. Rumik currently returns 24 kHz PCM.
full_response_aggregation
bool
default:"True"
When true, buffer a complete LLM response before sending text to Rumik instead of creating a separate TTS request for every sentence.

RumikHttpTTSService

api_key
str
required
Rumik AI API key.
gateway_url
str
required
Rumik AI gateway base URL.
aiohttp_session
aiohttp.ClientSession
required
Caller-owned HTTP session used for Rumik API requests.
settings
RumikHttpTTSService.Settings
default:"None"
Runtime-configurable TTS settings. See Settings below.
sample_rate
int
default:"24000"
Output audio sample rate. Rumik currently returns 24 kHz PCM.

Settings

Both services use Pipecat’s service settings pattern. RumikTTSService.Settings and RumikHttpTTSService.Settings are aliases of RumikTTSSettings.
ParameterTypeDefaultDescription
modelstr | None"muga"Rumik model identifier.
voicestr | NoneNonePreset speaker voice. Sent to Rumik as speaker.
languageLanguage | str | NoneNoneReserved for Pipecat provider compatibility.
descriptionstr | NoneNoneNatural-language voice/style description for expressive models.
f0_up_keyint | NoneNonePitch shift in semitones for preset speaker voices.
temperaturefloat | NoneNoneSampling temperature. When omitted, Rumik uses its API default.
top_pfloat | NoneNoneNucleus sampling value. When omitted, Rumik uses its API default.
top_kint | NoneNoneTop-k sampling value. When omitted, Rumik uses its API default.
repetition_penaltyfloat | NoneNonePenalty applied to repeated tokens. When omitted, Rumik uses default.
max_new_tokensint | NoneNoneMaximum generated audio tokens. When omitted, Rumik uses its default.
See the source repository for the authoritative, up-to-date list of settings.

Usage

WebSocket Service

import os

from pipecat_rumik import RumikTTSService

tts = RumikTTSService(
    api_key=os.environ["RUMIK_API_KEY"],
    gateway_url=os.environ["RUMIK_GATEWAY_URL"],
    settings=RumikTTSService.Settings(
        model="muga",
    ),
)
For expressive models, use the voice setting for preset speaker voices. The service sends it to Rumik as speaker.
tts = RumikTTSService(
    api_key=os.environ["RUMIK_API_KEY"],
    gateway_url=os.environ["RUMIK_GATEWAY_URL"],
    settings=RumikTTSService.Settings(
        model="mulberry",
        voice="speaker_1",
        description=(
            "warm expressive Indian woman with clear Hinglish diction, natural "
            "pauses, gentle energy, and a friendly conversational delivery"
        ),
        f0_up_key=3,
    ),
)

HTTP Service

import asyncio
import os

import aiohttp

from pipecat_rumik import RumikHttpTTSService


async def main():
    async with aiohttp.ClientSession() as session:
        tts = RumikHttpTTSService(
            api_key=os.environ["RUMIK_API_KEY"],
            gateway_url=os.environ["RUMIK_GATEWAY_URL"],
            aiohttp_session=session,
            settings=RumikHttpTTSService.Settings(
                model="mulberry",
                voice="speaker_2",
                description="calm female narrator",
            ),
        )


asyncio.run(main())

Compatibility

Tested with Pipecat v1.3.0 and supports Pipecat >=1.0.0,<2. Check the source repository for the latest tested version and changelog.