pipecat-gatemux
GateMux streaming STT, TTS, and LLM services in one Pipecat package. The adapters use public APIs and have no dependency on the GateMux server.
Install
Python 3.11+ and Pipecat >=1.12.0,<1.13 are required. The package is not yet published on PyPI. Install from this repository:
git clone https://github.com/emmelleai/pipecat-gatemux.git
cd pipecat-gatemux
python -m pip install -e .
# For microphone/speaker examples, install system PortAudio first:
python -m pip install -e '.[local]'
Set GATEMUX_API_KEY securely in your environment. Optional
GATEMUX_BASE_URL defaults to https://rest.gatemux.ai/v1.
HTTPS is required except for localhost. Never commit credentials.
One configuration, three services
from pipecat_gatemux import (
GateMuxConfig, GateMuxSTTService, GateMuxTTSService, GateMuxLLMService,
)
config = GateMuxConfig.from_env()
stt = GateMuxSTTService(config=config, language="zh")
llm = GateMuxLLMService(
config=config, model="gatemux/deepseek-v4-flash-ali",
settings=GateMuxLLMService.Settings(
extra={"extra_body": {"enable_thinking": False}},
),
)
tts = GateMuxTTSService(config=config, voice="Cherry", sample_rate=24000)
STT defaults to gatemux/qwen3-asr-flash and TTS to
gatemux/qwen3-tts-flash. STT uses realtime transcription with 16 kHz mono
PCM16, local VAD, and manual commits. TTS streams mono PCM16 over HTTP.
LLM extends Pipecat's OpenAI Chat Completions service, including context and
tool calls. enable_thinking is provider-specific; confirm support when
switching models. Developer-role support defaults to false for compatibility.
Local conversation
python examples/local_voice.py --check
python examples/local_voice.py
The check opens an STT session without microphone access. Conversation uses
Silero VAD, Smart Turn, and Pipecat interruption handling. Configure microphone
permissions and audio devices. Audio needs media:create; LLM needs
responses:create. Application credentials also need model permissions;
regional models may require routing consent.
Live examples call paid APIs. They read credentials from the environment and emit redacted diagnostics. Stopping playback does not undo submitted usage. There is no automatic audio replay or TTS retry; LLM SDK retries are disabled. The default TTS segment limit is 600 characters.
python examples/live_smoke.py --live --output /tmp/gatemux-live
python examples/live_pipeline.py --live \
--audio tests/audio/synthetic-zh.wav \
--report /tmp/gatemux-pipeline-report.json
The headless pipeline exercises two turns and playback interruption without
audio hardware. It limits LLM calls and has timeouts. Do not disable TLS
verification; on macOS, a trusted CA file may be configured through
SSL_CERT_FILE=/etc/ssl/cert.pem when needed.
Development and validation
python -m pip install -e '.[dev]' black ruff
black --check .
ruff check .
python -m pytest -q
python -m build
Offline tests use localhost HTTP/WebSocket servers and mock transports; external connections are blocked. Coverage includes Silero VAD, Smart Turn, delayed transcripts, slow first TTS audio, playback and LLM interruptions, resampling, context preservation, and cleanup. The baseline was verified with Python 3.12 and Pipecat 1.12.0. Opt-in live checks have validated the core headless STT/LLM/TTS pipeline; this is not a benchmark or certification.
Echo cancellation, noisy environments, accents, long sessions, WebRTC, telephony, and every Pipecat extension have not been comprehensively tested. STT's initial final-transcript wait is a conservative 3 seconds, not a measured P99; tune it for your deployment. There are no guarantees for diarization, word timestamps, confidence scores, or hotwords. This package does not implement OpenAI Realtime speech-to-speech. Caller-injected HTTP sessions remain owned by the caller.
License
Original adapter code is licensed under MIT. Dependencies retain their own licenses. This does not change the GateMux gateway license.
Metadata
Release files for pipecat-gatemux 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pipecat_gatemux-0.1.0.tar.gz | 96.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pipecat_gatemux-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 108.4 kB
Release files / pipecat_gatemux-0.1.0.tar.gz
| Download URL | pipecat_gatemux-0.1.0.tar.gz |
|---|---|
| Size | 96.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0cc66be11bfdae5c3dd618262cf8be349093d77f2bd68557fad4abda16711a69
|
|
BLAKE2b-256 checksum How to use checksums |
3bc6c5819d73fdc17aa6447c19a50bebb8a0df056b7fbc449b2ab97c602a02dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / pipecat_gatemux-0.1.0-py3-none-any.whl
| Download URL | pipecat_gatemux-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e071e11a03a3b2f731fec960280dc16e55beb4b2cc429620f5dc672f5a9965a2
|
|
BLAKE2b-256 checksum How to use checksums |
61664b2f9107fbd9ff47445da7b31ed79ffe535ad207c808415de520aad1c4fa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|