Speechmatics Real-Time API Client
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 keySPEECHMATICS_RT_URL: Custom API endpoint URL (optional)
Metadata
Release files for speechmatics-rt 1.3.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 | Provenance | Actions |
|---|---|---|---|---|
| speechmatics_rt-1.3.0.tar.gz | 30.6 kB | Without provenance | Details for speechmatics_rt-1.3.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| speechmatics_rt-1.3.0-py3-none-any.whl | Python 3 | none | any | Details for speechmatics_rt-1.3.0-py3-none-any.whl |
Total release size: 67.2 kB
Release files / speechmatics_rt-1.3.0.tar.gz
| Download URL | speechmatics_rt-1.3.0.tar.gz |
|---|---|
| Size | 30.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85fb0db8cdf525094440bda3200079bb71dcdaf39d3079a50731b5a0fee99133
|
|
BLAKE2b-256 checksum How to use checksums |
fc7a740e4f85cdd79e11e3d21954d19228730318aa701a6beebe28be7db76b72
|
| 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.3.0-py3-none-any.whl
| Download URL | speechmatics_rt-1.3.0-py3-none-any.whl |
|---|---|
| Size | 36.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b9591b9a2a225399e6db9831f7bf7076facf172d44d828aed04f6e4ecf9f9ebc
|
|
BLAKE2b-256 checksum How to use checksums |
3a21fcf0e8336715dfaa3d3aca9d4da3341659e97930f76ce3abc50f24654ce9
|
| 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.3.0
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.