> ## Documentation Index
> Fetch the complete documentation index at: https://daily-ms-improve-self-hosting-docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Hakim

> Speech-to-text service implementation using Hakim's Arabic-first realtime transcription API

export const CommunityMaintained = ({maintainer, maintainerUrl, repo}) => <Note>
    <strong>Community-maintained integration.</strong> This service is built and
    maintained by{" "}
    <a href={maintainerUrl} target="_blank" rel="noreferrer">
      {maintainer}
    </a>
    . Pipecat does not test or officially support it. Please report issues and
    request changes on the{" "}
    <a href={repo} target="_blank" rel="noreferrer">
      source repository
    </a>
    . Learn more about{" "}
    <a href="/api-reference/server/services/community-integrations">
      community integrations
    </a>
    .
  </Note>;

<CommunityMaintained maintainer="tryHakimAI" maintainerUrl="https://github.com/tryHakimAI" repo="https://github.com/tryHakimAI/hakim-pipecat" />

## Overview

`HakimSTTService` transcribes audio into text using [Hakim](https://tryhakim.ai)'s
Arabic-first realtime speech-to-text API. It is a `WebsocketSTTService` that opens
one persistent connection to `WSS /v1/audio/transcriptions/stream`, forwarding audio
continuously and relying on Pipecat's own VAD to signal end-of-turn — the same pattern
used by other continuous-streaming STT plugins in this framework (e.g. AssemblyAI,
Deepgram).

<CardGroup cols={2}>
  <Card title="Source Repository" icon="github" href="https://github.com/tryHakimAI/hakim-pipecat">
    Source code, examples, and issues for the Hakim integration
  </Card>

  <Card title="Hakim Docs" icon="book" href="https://tryhakim.ai/docs">
    Learn more about Hakim's speech services
  </Card>

  <Card title="API Keys" icon="key" href="https://tryhakim.ai">
    Create and manage your Hakim API keys from the dashboard (Settings -> API keys)
  </Card>
</CardGroup>

## Installation

This is a community-maintained package distributed separately from `pipecat-ai`,
built and maintained by the Hakim team. It is not yet published to PyPI, so install
it directly from GitHub:

```bash theme={null}
uv pip install git+https://github.com/tryHakimAI/hakim-pipecat.git
```

## Prerequisites

### Hakim Account Setup

Before using the Hakim STT service, you need:

1. **Hakim Account**: Sign up at [tryhakim.ai](https://tryhakim.ai)
2. **API Key**: Generate a key (format: `hk_live_...`) from the dashboard
   (Settings -> API keys), with the `stt:write` scope

### Required Environment Variables

* `HAKIM_API_KEY`: Your Hakim API key. Falls back to this environment variable if
  `api_key` is not passed to the constructor.

## Configuration

<ParamField path="api_key" type="str" default="None">
  Hakim API key. Falls back to the `HAKIM_API_KEY` environment variable if not
  provided.
</ParamField>

<ParamField path="language" type="Language" default="Language.AR">
  Language hint for transcription.
</ParamField>

<ParamField path="input_audio_format" type="str" default="pcm16">
  Audio format of the input stream. One of `"pcm16"`, `"opus"`, or `"mulaw"`.
  Pipecat's transport delivers PCM16 by default, so the default matches without
  any client-side transcoding.
</ParamField>

<ParamField path="sample_rate" type="int" default="16000">
  Must match the sample rate of audio frames actually sent to the service.
</ParamField>

<ParamField path="region" type="str" default="auto">
  Pins the session to a specific regional endpoint. One of `"auto"`, `"de"`,
  `"uae"`, or `"ksa"`. `"auto"` picks the closest healthy region.
</ParamField>

<ParamField path="base_url" type="str" default="None">
  Overrides the region table entirely (staging / self-hosted). Takes precedence
  over `region`.
</ParamField>

<ParamField path="settings" type="HakimSTTService.Settings" default="None">
  Runtime-updatable settings. See [Settings](#settings) below.
</ParamField>

### Settings

Runtime-updatable configuration passed via the `settings` constructor argument
using `HakimSTTService.Settings(...)`.

| Parameter    | Type   | Default     | Description                                                                                                                                                      |
| ------------ | ------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `timestamps` | `str`  | `"segment"` | One of `"word"`, `"segment"`, or `"none"`.                                                                                                                       |
| `diarize`    | `bool` | `False`     | Speaker diarization. Only useful for stereo audio with one speaker per channel (e.g. call recordings) -- mono `diarize=True` transcribes without speaker labels. |
| `partials`   | `bool` | `True`      | Whether to emit interim (non-final) transcripts.                                                                                                                 |

<Note>
  See the [source
  repository](https://github.com/tryHakimAI/hakim-pipecat) for the
  authoritative, up-to-date configuration options.
</Note>

## Usage

```python theme={null}
import os
from pipecat.pipeline.pipeline import Pipeline
from pipecat.transcriptions.language import Language
from hakim_pipecat import HakimSTTService

stt = HakimSTTService(
    api_key=os.getenv("HAKIM_API_KEY"),
    language=Language.AR,
)

pipeline = Pipeline([
    transport.input(),               # audio/user input
    stt,                              # Hakim STT transcription
    context_aggregator.user(),        # add user text to context
    llm,                              # LLM generates response
    tts,                               # text to speech synthesis
    transport.output(),               # stream audio back to user
    context_aggregator.assistant(),   # store assistant response
])
```

## Compatibility

Tested with Pipecat v1.5.0. Check the [source
repository](https://github.com/tryHakimAI/hakim-pipecat) for the latest tested
version and changelog.
