Skip to main content

Speechmatics Real-Time API Client

PyPI PythonSupport

Async Python client for the Speechmatics Real-Time API.

Features

  • Async-first design with simpler interface
  • Multi-channel transcription - Simultaneous processing of multiple audio sources
  • Single-stream transcription - Optimized client for single audio source
  • Comprehensive error handling with detailed error messages
  • Type hints throughout for excellent IDE support and code safety
  • Environment variable support for secure credential management
  • Event-driven architecture for real-time transcript processing
  • Simple connection management with clear error reporting

Installation

pip install speechmatics-rt

Quick Start

import asyncio
from speechmatics.rt import AsyncClient, ServerMessageType


async def main():
    # Create a client using environment variable SPEECHMATICS_API_KEY
    async with AsyncClient() as client:
        # Register event handlers
        @client.on(ServerMessageType.ADD_TRANSCRIPT)
        def handle_final_transcript(msg):
            print(f"Final: {msg['metadata']['transcript']}")

        # Transcribe audio file
        with open("audio.wav", "rb") as audio_file:
            await client.transcribe(audio_file)

# Run the async function
asyncio.run(main())

Multi-Channel Transcription

import asyncio
from speechmatics.rt import AsyncMultiChannelClient, ServerMessageType, TranscriptionConfig

async def main():
    # Prepare multiple audio sources
    sources = {
        "left": open("left.wav", "rb"),
        "right": open("right.wav", "rb"),
    }

    try:
        async with AsyncMultiChannelClient() as client:
            # Handle transcripts with channel identification
            @client.on(ServerMessageType.ADD_TRANSCRIPT)
            def handle_transcript(msg):
                channel = msg["results"][0]["channel"]
                transcript = msg["metadata"]["transcript"]
                print(f"[{channel}]: {transcript}")

            # Start multi-channel transcription
            await client.transcribe(
                sources,
                transcription_config=TranscriptionConfig(
                    language="en",
                    diarization="channel",
                    channel_diarization_labels=list(sources.keys()),
                )
            )
    finally:
        # Ensure all files are closed
        for source in sources.values():
            source.close()

asyncio.run(main())

JWT Authentication

For enhanced security, use temporary JWT tokens instead of static API keys. JWTs are short-lived (60 seconds by default).

from speechmatics.rt import AsyncClient, JWTAuth

# Create JWT auth (requires: pip install 'speechmatics-rt[jwt]')
auth = JWTAuth("your-api-key", ttl=60)

async with AsyncClient(auth=auth) as client:
    pass

Ideal for browser applications or when minimizing API key exposure. See the authentication documentation for more details.

Logging

The client supports logging with job id tracing for debugging. To increase logging verbosity, set DEBUG level in your example code:

import logging
import sys

logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.StreamHandler(sys.stdout)
    ]
)

Environment Variables

The client supports the following environment variables:

  • SPEECHMATICS_API_KEY: Your Speechmatics API key
  • SPEECHMATICS_RT_URL: Custom API endpoint URL (optional)

Metadata

Release files for speechmatics-rt 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for speechmatics-rt 1.2.2
File Size Uploaded Provenance Actions
speechmatics_rt-1.2.2.tar.gz 30.7 kB Without provenance Details for speechmatics_rt-1.2.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for speechmatics-rt 1.2.2
File Interpreter ABI Platform Actions
speechmatics_rt-1.2.2-py3-none-any.whl Python 3 none any Details for speechmatics_rt-1.2.2-py3-none-any.whl

Total release size: 67.2 kB

Release files / speechmatics_rt-1.2.2.tar.gz

Download URL speechmatics_rt-1.2.2.tar.gz
Size 30.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4b82f14facacef3f052e96f765573cddc102bcf5de6c512678eea83957d68f6f
BLAKE2b-256 checksum
How to use checksums
ca61ef22ac1a862b3a906a8d929df879780111c752ac5790752729e472de0ea9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / speechmatics_rt-1.2.2-py3-none-any.whl

Download URL speechmatics_rt-1.2.2-py3-none-any.whl
Size 36.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae61cad4fb4be2f9f3b503042b893667b616b2b4b34b86c37392e0fa5164881c
BLAKE2b-256 checksum
How to use checksums
d7436a3f28b181b1c8048f9904cbc1c9dd2d22ec495a85d0a29e5487a2360e7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for speechmatics-rt 1.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page