Overview
HakimTTSService synthesizes speech from text using Hakim’s
Arabic-first realtime text-to-speech API. It subclasses InterruptibleTTSService
(Hakim’s realtime TTS has no mid-utterance cancel message and no word-level
timestamps, so interruption is handled by reconnecting rather than sending a cancel
frame) and opens one persistent connection to WSS /v1/audio/speech/stream — each
sentence Pipecat sends to run_tts becomes one speech.create request on the same
socket, with no new TCP/TLS handshake per utterance.
Source Repository
Source code, examples, and issues for the Hakim integration
Hakim Docs
Learn more about Hakim’s speech services
API Keys
Create and manage your Hakim API keys from the dashboard (Settings -> API keys)
Installation
This is a community-maintained package distributed separately frompipecat-ai,
built and maintained by the Hakim team. It is not yet published to PyPI, so install
it directly from GitHub:
Prerequisites
Hakim Account Setup
Before using the Hakim TTS service, you need:- Hakim Account: Sign up at tryhakim.ai
- API Key: Generate a key (format:
hk_live_...) from the dashboard (Settings -> API keys), with thetts:writescope - A voice: pick a voice id or slug from the dashboard’s Voices page
Required Environment Variables
HAKIM_API_KEY: Your Hakim API key. Falls back to this environment variable ifapi_keyis not passed to the constructor.
Configuration
Hakim voice id or slug. Required — there is no bundled default voice.
Hakim API key. Falls back to the
HAKIM_API_KEY environment variable if not
provided.One of
"hakim-fast-v1" (sub-120ms TTFB), "hakim-v2" (higher quality +
non-verbal tags), or "hakim-v3" (adds free-form voice_prompt control).Classifier-free-guidance weight,
0.0-10.0.Free-form voice-character description. Only honoured on
model="hakim-v3" —
dropped elsewhere.Pins the session to a specific regional endpoint. One of
"auto", "de",
"uae", or "ksa".Overrides the region table entirely (staging / self-hosted). Takes precedence
over
region.Settings
Runtime-updatable configuration passed via thesettings constructor argument
using HakimTTSService.Settings(...).
See the source
repository for the
authoritative, up-to-date configuration options.