Speechmatics Real-Time API Client
Project description
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)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file speechmatics_rt-0.5.2.tar.gz.
File metadata
- Download URL: speechmatics_rt-0.5.2.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9385b64c816efdc97e5beb3bbbc0f5657c9db01df8647358f4f35e4debcbd36b
|
|
| MD5 |
0eb784c7298073bb5eb02ff543eb8b3b
|
|
| BLAKE2b-256 |
a8e0fca2dac84e60222bd11aee6d204e4fd8088a2621dbfee55b8eda99372f09
|
File details
Details for the file speechmatics_rt-0.5.2-py3-none-any.whl.
File metadata
- Download URL: speechmatics_rt-0.5.2-py3-none-any.whl
- Upload date:
- Size: 33.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
829b77b9b228ec2f27d5d2ef43fd44e3ff265e1261fdea2cf331f52048c9b177
|
|
| MD5 |
9112223f6e1b9854d81a012cafb8c9f9
|
|
| BLAKE2b-256 |
7c73861e9130f26d979445f396256af3824a48ea93be095a5135949acacf6d48
|