> For the complete documentation index, see [llms.txt](https://docs.mikopbx.com/mikopbx/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mikopbx.com/mikopbx/english/modules/miko/module-local-speech-to-text.md).

# Local Transcription

Local call transcription in MikoPBX: recordings remain within the PBX, recognition runs on a Mac worker, and completed transcripts are available in the module interface and through the API.

The **Local Speech To Text** module recognizes speech in recorded MikoPBX calls and saves the completed transcript as a conversation. Audio files are not sent to external cloud services: the PBX creates a job queue, while a separate **Local STT Worker** application downloads the assigned recording, recognizes it locally with the Parakeet or WhisperKit engine selected in MikoPBX, and returns the result to MikoPBX.

{% hint style="info" %}
The PBX module runs inside MikoPBX. The separate Local STT Worker application is available for Apple silicon Macs. See [Local STT Worker](/mikopbx/english/modules/miko/module-local-speech-to-text/miko-ai-worker.md) for a detailed description of the application.
{% endhint %}

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2FItlGBI0PiFDfAho0HKAv%2F0110STTModuleTranscript.png?alt=media&amp;token=3919b546-cac0-4c40-8d8b-e4f6d8dbc3d6" alt=""><figcaption><p>Example of transcription result</p></figcaption></figure>

### How processing works

1. A call ends, and MikoPBX saves the call recording.
2. The module's background process finds the recording and creates a job.
3. Local STT Worker acquires a lease for the job.
4. The PBX provides the assigned recording file to that worker.
5. The worker prepares the audio, starts the engine and Core ML model specified in the job, and produces transcript segments.
6. The module filters the result, saves the transcript, and publishes an event for integrations.

If the worker stops renewing its lease, the job returns to the queue. Each job gets up to three processing attempts, after which it moves to the **Errors** status.

### Requirements and compatibility

* MikoPBX **2025.1.1** or later.
* macOS **14.0** or later on a Mac with Apple silicon.
* Call recording enabled for the required routes, queues, or extensions.
* Network access from the Mac to the MikoPBX web interface. Open the web interface over HTTPS: over HTTP, a newly created access key is not displayed.
* Internet access for the first download of the selected model and its supporting files. After the model has been downloaded, the worker only needs access to the PBX for processing.

### Installing the module

1. Open the MikoPBX web interface.
2. Go to **Modules** → **Module marketplace**.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2Fgit-blob-077c6ead7c0da0da965a81334a88a7d27f7b4532%2FMikoPBXModuleMarketplace.png?alt=media" alt=""><figcaption><p>Module marketplace</p></figcaption></figure>

3. Find **Local Speech To Text** and install it.
4. Open the **Installed modules** tab and enable the module.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2Fgit-blob-077b38438ef15d93da435d874a349c7e0eb709f6%2FSTTModuleInstalledModulesSection.png?alt=media" alt=""><figcaption><p>Enabling the module</p></figcaption></figure>

5. Click the settings button to the right of the module version.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2Fgit-blob-bff0f5af9e68d73e3db472618be79c22447b9513%2FSTTModuleOpen.png?alt=media" alt=""><figcaption><p>Opening the module page</p></figcaption></figure>

### Settings tab

| Setting                         | Default                     | Purpose                                                                                                                |
| ------------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Default language**            | Auto - detect automatically | Language hint for the recognition engine. In automatic mode, the call language is detected during recognition.         |
| **Recording processing window** | `30 days`                   | How far back to search for completed calls with recordings: 1, 7, 30, or 90 days, 6 months, 1 year, or all recordings. |
| **Transcript retention**        | `1 year`                    | When transcription results are deleted: after 30, 90, or 180 days, 1 year, or unlimited.                               |
| **Recognition terms**           | Empty                       | Company, product, and system names, plus other words used as recognition hints.                                        |

The recording processing window cannot exceed the transcript retention period: on a conflict, the module shows a warning and does not let you save the settings. Retention starts when recognition completes; CDR records and source audio recordings are not deleted.

The list of languages depends on the model selected on the **Model marketplace** tab: for Parakeet, only the languages it supports are available.

{% hint style="info" %}
Changing the recording processing window resets the scan cursor so that the module reviews call history within the new range.
{% endhint %}

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2FrsAtXY8VaWUZPx8HCKdC%2F0110STTModuleSettings.png?alt=media&amp;token=7f4782eb-bc1c-4c51-8f4e-d130e450f217" alt=""><figcaption><p>Module settings</p></figcaption></figure>

### Model marketplace tab

This tab selects the model that the PBX includes in new jobs. The selection applies centrally to all workers and appears in the worker after its settings synchronize.

The platform switch above the model list selects the worker type whose models are shown. Each worker type has its own set of models; their descriptions, languages and recommendations are in the **Models** section of the worker article:

* **macOS (Apple Silicon)** - Parakeet and Whisper on Core ML: [Local STT Worker](/mikopbx/english/modules/miko/module-local-speech-to-text/miko-ai-worker.md);
* **Linux (Docker)** - GigaAM, T-one, Parakeet and Whisper on the CPU: [Docker worker (Linux)](/mikopbx/english/modules/miko/module-local-speech-to-text/docker-worker.md).

After selecting a model, click **Save model**.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2FgV41a1lZhIbZdYjitpJl%2FSTTNEWModelMarketplace4EN.png?alt=media&amp;token=2681125e-880f-459c-9c9e-6dfeb8c58a90" alt=""><figcaption><p>Selecting a recognition model</p></figcaption></figure>

### Queue tab

The **Processing state** block shows the number of recordings in each status and the time of the last event.

| Status                         | Meaning                                                                 |
| ------------------------------ | ----------------------------------------------------------------------- |
| **Pending**                    | The job is waiting for an available worker.                             |
| **Processing**                 | The job is assigned to a worker under an active lease.                  |
| **Done today**                 | Jobs completed during the current day.                                  |
| **Errors**                     | Failed jobs that can be returned to the queue.                          |
| **Waiting for recording file** | A CDR record was found, but the file has not appeared or is unreadable. |
| **Skipped recordings**         | Recordings that will not be processed unless the conditions change.     |

The **Retry failed recordings** button returns all jobs in the **Errors** status to the queue.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2Fgit-blob-a056ad866e78d1d4294696a330e0b4eba6187b8b%2FSTTWorkerQueue.png?alt=media" alt=""><figcaption><p>Queue in the module interface</p></figcaption></figure>

### Workers tab

Use this tab to download the macOS application, create access keys, and view registered Macs.

#### Worker application

The **Download for macOS** button at the top of the tab downloads Local STT Worker for Apple silicon Macs from `releases.mikopbx.com`.

#### Worker API keys

The **Create API key** button generates a new key. It is shown only once after it is created, so copy it immediately.

A single key cannot be bound to multiple `worker_uid` values at the same time; create a separate key for each Mac.

#### Registered workers

The worker table shows the name, UID, IP address, model selected in MikoPBX, application version, status, and last activity. An incompatible worker appears offline. Until the first worker is registered, a three-step **How to connect a worker** hint is displayed above the table.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2FEs8a5dlaLcfE0m93ZToh%2F0110STTModuleWorkers-QS.png?alt=media&amp;token=95c96fa8-ae26-4d20-b550-af522156d728" alt=""><figcaption><p>Workers tab</p></figcaption></figure>

### Transcripts tab

You can filter the list by call date range and search the transcript text. Clicking a row opens the conversation.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2Fdl8hHjptPgntM2FgXAOW%2F0110STTModuleTransripts.png?alt=media&amp;token=62ecb523-1773-4d3c-bad9-8edb71db71e7" alt=""><figcaption><p>Transcript list</p></figcaption></figure>

#### Transcript card

Clicking a turn or the timeline moves the player to the corresponding point in the recording.

The actions menu offers **Download TXT**, **Download JSON**, and **Delete transcript**. Deletion requires confirmation: the transcript and related module data are removed, while the MikoPBX CDR record and the source call recording are kept.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2FItlGBI0PiFDfAho0HKAv%2F0110STTModuleTranscript.png?alt=media&amp;token=3919b546-cac0-4c40-8d8b-e4f6d8dbc3d6" alt=""><figcaption><p>Transcript conversation view</p></figcaption></figure>

### Transcript in call history

The module adds a **Show transcript** button to the MikoPBX **Call Detail Records** section for calls with a completed transcript.

<figure><img src="https://835495363-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsZ8acWnNlSalIHQjMFu1%2Fuploads%2Fgdl3uPB5jswGsX1sH4yH%2F0110TranscriptInCDR.png?alt=media&amp;token=9fc5305f-10ac-4e07-b6f2-5712b0636567" alt=""><figcaption><p>Button to open the transcript from the CDR log</p></figcaption></figure>

### Logging tab

The log contains structured technical events from the module and workers, without transcripts, audio recordings, or secrets.

### Access rights

When the user access management module (ModuleUsersUI) is used, separate permissions are available for Local Speech To Text:

| Permission                                        | What it opens                                                                           |
| ------------------------------------------------- | --------------------------------------------------------------------------------------- |
| **View transcripts and call recordings**          | The **Transcripts** tab, conversation view, export, and the transcript in call history. |
| **Delete transcripts**                            | The **Delete transcript** action in the conversation view.                              |
| **Manage module settings**                        | The **Settings** and **Model marketplace** tabs.                                        |
| **Connect workers and manage the queue and logs** | The **Queue**, **Workers**, and **Logging** tabs.                                       |

Tabs the user has no permission for are not displayed. These permissions do not grant access to the module's REST API.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mikopbx.com/mikopbx/english/modules/miko/module-local-speech-to-text.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
