Skip to main content

SpeechFoundry for Python

Thin PyO3 bindings over the same native Rust engine. Model loading, voice extraction, synthesis, and resampling release the Python interpreter lock. Concurrent operations on one Engine are serialized; create separate engines when independent inference state is needed.

CosyVoice3 is experimental: full-Flow numerical parity remains unresolved, and reported output artifacts include an unrelated leading sound and elongated endings. See the project validation status before using that model. The binding uses the same model implementation as Rust.

python -m pip install speechfoundry
import json
from speechfoundry import Engine

engine = Engine.load("/models/Qwen3-TTS-12Hz-0.6B-Base", "qwen3", "cpu")
# reference_pcm is mono float32 PCM; pass the actual recording sample rate.
voice = engine.extract_voice(reference_pcm, 24000, "Reference transcript.")
audio = engine.synthesize("Hello.", voice, json.dumps({"seed": 42}))
samples, sample_rate = audio.samples, audio.sample_rate

voice is model-specific conditioning, not a universal biometric identity or a newly trained voice model. Keep its model and schema fields intact when storing it. options_json uses the shared Rust synthesis options and defaults.

Audio(samples, sample_rate) validates finite PCM samples. Accessing .samples copies them to a Python list; no NumPy runtime dependency is required.

The default wheel is CPU-only. Build from source with --features cuda or --features metal for a matching toolchain and target. A feature-enabled binary does not imply a compatible accelerator exists on the current machine.

For prebuilt GPU previews, install the same-version backend wheel from GitHub Releases alongside this package. The import remains unchanged:

from speechfoundry import Engine, installed_backends

print(installed_backends())  # Installed builds, not a hardware readiness test.
gpu = Engine.load("models/qwen-base", "qwen3", "cuda:0")
# With several CUDA builds installed, add backend="cu124".
# On Apple Silicon use device="metal:0" with the matching Metal preview.

Backend distribution names identify CUDA builds, but are not application import names. Missing/ambiguous backends and version mismatches are explicit errors. CPU imports never load accelerator libraries. See the accelerator guide for installation and native runtime requirements. GPU previews remain build-verified, not GPU-parity-certified. Version 0.2 replaces the old candle_tts import; existing voice-prompt JSON retains its schema and checkpoint identity.

CosyVoice3's official frontend additionally requires the CPU ONNX Runtime shared library, API 24 or newer. Set ORT_DYLIB_PATH to its absolute path before loading a CosyVoice3 model: libonnxruntime.so on Linux, libonnxruntime.dylib on macOS, or onnxruntime.dll on Windows. Its adjacent runtime dependencies must remain available. Provision the pinned official native runtime from the repository root:

python scripts/install_onnxruntime.py --output .cache/onnxruntime

This repository development tool requires Python 3.12+ for safe archive extraction. This does not change the wheel's CPython 3.10+ requirement.

Then set the environment before constructing a CosyVoice3 engine:

import json
import os
from pathlib import Path

os.environ["ORT_DYLIB_PATH"] = json.loads(
    Path(".cache/onnxruntime/runtime.json").read_text()
)["library"]

An onnxruntime Python wheel may also contain a compatible native library, but its internal layout varies by release and platform; do not assume a fixed path. Inference itself does not call the Python implementation. The import smoke test does not verify this external runtime or execute a model. Candle's CUDA/Metal features accelerate the neural synthesis backend; the ONNX frontend currently stays on CPU.

Prompt JSON is limited to 16 MiB and options JSON to 64 KiB before decoding.

CPython 3.10+ uses the stable abi3 ABI; free-threaded CPython wheels are not included in this distribution. Model support and numerical validation status are documented in the repository root.

Build from source

python -m pip install 'maturin>=1.12,<2'
python -m maturin develop --release --manifest-path bindings/python/Cargo.toml
python -m unittest discover -s bindings/python/tests -p '*.py'

Metadata

Release files for speechfoundry 0.2.0

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

Built distributions (wheels)

Table of built distributions (wheels) for speechfoundry 0.2.0
File Interpreter ABI Platform
speechfoundry-0.2.0-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
speechfoundry-0.2.0-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
speechfoundry-0.2.0-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 12.5 MB

Release files / speechfoundry-0.2.0-cp310-abi3-win_amd64.whl

Download URL speechfoundry-0.2.0-cp310-abi3-win_amd64.whl
Size 4.2 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
7e0fc929ac7048de3b113bcb1ce6d8e348f90b1bde2bbd2e77fa34a29cba6209
BLAKE2b-256 checksum
How to use checksums
fad2a5243f01ef2070beb71cd72b514df78d9aee1673e719ad22dd4d02c90bbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / speechfoundry-0.2.0-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL speechfoundry-0.2.0-cp310-abi3-manylinux_2_28_x86_64.whl
Size 4.7 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
792b8ab9f4f43bd7b7939a93bb0c55a1b115b481334a8077612f647657a6645c
BLAKE2b-256 checksum
How to use checksums
df11bd9b901351af316c35d4ffc2dc35997fecbf102f6eeb5367128447e5d96f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / speechfoundry-0.2.0-cp310-abi3-macosx_11_0_arm64.whl

Download URL speechfoundry-0.2.0-cp310-abi3-macosx_11_0_arm64.whl
Size 3.6 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1628cc3154792855866878fcdb2d3a421eb8461b181a8acaf75b4b3ee7cf65be
BLAKE2b-256 checksum
How to use checksums
5776022251238c0e7c3e9ac4ac67ef625263727a8cb5b3751af326a58dc63590
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for speechfoundry 0.2.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.

Release history Release notifications | RSS feed

This release

0.2.0 This release

3 release files No provenance

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