This document outlines the release process for the Speechmatics Python SDK packages.
The Speechmatics Python SDK repository contains two separate packages:
speechmatics-rt- Real-Time API Clientspeechmatics-batch- Batch API Clientspeechmatics-voice- Voice Agent API Clientspeechmatics-tts- TTS API Client
Each package is released independently with its own versioning and release workflow.
Before creating a release, ensure the following steps are completed:
- All tests pass locally (
make test-all) - Linting passes (
make lint-all) - Type checking passes (
make type-check-all) - Examples work correctly with the new version
- Documentation is up to date
- Review and update README files if needed
- Verify dependencies are correct in
pyproject.toml
- Test examples with fresh installations
- Verify environment variables work correctly
- Test error handling scenarios
- Validate API compatibility
To release a new version of the RT SDK:
-
Create a Release Tag
git tag rt/v1.0.0 git push origin rt/v1.0.0
-
Automated Workflow The
release-rt.yamlworkflow will automatically:- Extract version from tag (e.g.,
rt/v1.0.0→1.0.0) - Run comprehensive tests across Python versions
- Update version in
sdk/rt/speechmatics/rt/__init__.py - Build the package
- Publish to PyPI
- Extract version from tag (e.g.,
-
Manual Steps After Release
- Verify the package is available on PyPI
- Test installation:
pip install speechmatics-rt==1.0.0 - Update GitHub release notes
- Announce the release
To release a new version of the Batch SDK:
-
Create a Release Tag
git tag batch/v1.0.0 git push origin batch/v1.0.0
-
Automated Workflow The
release-batch.yamlworkflow will automatically:- Extract version from tag (e.g.,
batch/v1.0.0→1.0.0) - Run comprehensive tests across Python versions
- Update version in
sdk/batch/speechmatics/batch/__init__.py - Build the package
- Publish to PyPI
- Extract version from tag (e.g.,
-
Manual Steps After Release
- Verify the package is available on PyPI
- Test installation:
pip install speechmatics-batch==1.0.0 - Update GitHub release notes
- Announce the release
To release a new version of the Voice Agent SDK:
-
Create a Release Tag
git tag voice/v1.0.0 git push origin voice/v1.0.0
-
Automated Workflow The
release-voice.yamlworkflow will automatically:- Extract version from tag (e.g.,
voice/v1.0.0→1.0.0) - Run comprehensive tests across Python versions
- Update version in
sdk/voice/speechmatics/voice/__init__.py - Build the package
- Publish to PyPI
- Extract version from tag (e.g.,
-
Manual Steps After Release
- Verify the package is available on PyPI
- Test installation:
pip install speechmatics-voice==1.0.0 - Update GitHub release notes
- Announce the release
To release a new version of the TTS SDK:
-
Create a Release Tag
git tag tts/v1.0.0 git push origin tts/v1.0.0
-
Automated Workflow The
release-tts.yamlworkflow will automatically:- Extract version from tag (e.g.,
tts/v1.0.0→1.0.0) - Run comprehensive tests across Python versions
- Update version in
sdk/tts/speechmatics/tts/__init__.py - Build the package
- Publish to PyPI
- Extract version from tag (e.g.,
-
Manual Steps After Release
- Verify the package is available on PyPI
- Test installation:
pip install speechmatics-tts==1.0.0 - Update GitHub release notes
- Announce the release
Both packages follow semantic versioning (SemVer):
MAJOR.MINOR.PATCH(e.g.,1.2.3)MAJOR.MINOR.PATCH-beta.Nfor beta releases (e.g.,1.2.3-beta.1)
- Development: Versions remain as
0.0.0in__init__.pyfiles - Release: GitHub Actions automatically updates the version during release
- Post-Release: The updated version remains in the repository
- RT SDK:
rt/v{version}(e.g.,rt/v1.0.0) - Batch SDK:
batch/v{version}(e.g.,batch/v1.0.0) - Voice Agent SDK:
voice/v{version}(e.g.,voice/v1.0.0) - TTS SDK:
tts/v{version}(e.g.,tts/v1.0.0)
Both packages are published to PyPI using GitHub Actions with OpenID Connect (OIDC):
- RT SDK: Uses
pypi-rtenvironment - Batch SDK: Uses
pypi-batchenvironment - Voice Agent SDK: Uses
pypi-voiceenvironment - TTS SDK: Uses
pypi-ttsenvironment
No manual secrets are required as the workflows use OIDC for PyPI authentication.
Both packages are tested against:
- Python versions: 3.9, 3.10, 3.11, 3.12, 3.13
- Operating system: Ubuntu (latest)