supertonicsynth
A flat-layout Python synthesis package for Supertonic-3. OnnxVoice owns catalog resolution, managed asset installation and integrity, ONNX Runtime sessions, providers, and inference. SupertonicSynth owns text synthesis, language selection, voice styles, chunking, static voice-level calibration, output gain, and synthesis metadata.
Install
pip install "supertonicsynth[cpu]"
The project uses dynamic VCS versioning through setuptools_scm. Model weights are not included in the wheel.
SupertonicSynth 0.1.1 requires OnnxVoice >=0.2.0,<0.3. The 0.2.x line provides the Supertonic catalog, semantic voice refs, managed installation, local-open, and runtime APIs used by this package.
Python usage
from supertonicsynth import (
SupertonicRuntime,
SynthesisConfig,
VoiceLevelConfig,
)
config = SynthesisConfig(
voice_level=VoiceLevelConfig(mode="calibrated"),
)
with SupertonicRuntime.from_pretrained("supertonic-3") as tts:
result = tts.synthesize_text(
"A prepared German sentence.",
voice="F1",
language="de",
config=config,
)
result.write_wav("output.wav")
print(result.metadata["voice_ref"])
print(result.metadata["voice_level"]["calibration_key"])
result.pcm16() and result.write_wav(path) use the same finite-audio validation and clipping policy.
CLI
supertonicsynth synthesize \
"A prepared German sentence." \
--model supertonic-3 \
--voice F1 \
--language de \
--voice-level calibrated \
--no-normalize-audio \
--output-gain 1.0 \
-o output.wav
Use --voice-gain-db FLOAT for an explicit static dB override. That override takes precedence over the catalog and works for local or custom styles. --output-gain FLOAT is a separate request-level linear gain. Final output is clipped to [-1, 1] for safety.
List voices
supertonicsynth voices --model supertonic-3
This opens the selected bundle and installs/downloads it if it is not available locally. It is not a metadata-only query.
Voice identity and language
OnnxVoice semantic voice refs are the canonical voice identity. A managed F1 style from supertonic-3 has the voice ref supertonic:supertonic-3/F1. Language remains a separate synthesis condition. Calibration therefore uses a pair such as (supertonic:supertonic-3/F1, de), serialized as supertonic:supertonic-3/F1@de. The @de suffix belongs to the calibration key, not the voice ref.
Automatic catalog calibration applies only to managed OnnxVoice installations and catalog-backed string styles. Local bundles and caller-created VoiceStyle values do not receive calibration by matching their directory or style name. They remain unchanged unless an explicit voice_level.gain_db override is provided.
Loudness calibration and output gain
Calibration is an offline, reviewed static correction. The benchmark measures prepared speech and the promotion tool stores measured gain against the canonical voice ref and synthesis language. Normal synthesis performs no LUFS measurement and does not contact a network service for calibration. Missing identity or missing calibration leaves the audio unchanged.
VoiceLevelConfig(mode="off") is the default. mode="calibrated" opts into the packaged catalog. normalize_audio is a separate deterministic peak-normalization control. output_gain is a separate linear user-requested gain. Neither feature performs final program mastering, which remains an external responsibility.
The package ships 252 reviewed, statistically eligible voice/language calibrations from the Supertonic-3 counting benchmark. Coverage is partial, not the full 310-key matrix: 48 completed but high-variability identities and all 10 Croatian (hr) identities are intentionally absent because a Croatian counting stimulus could not be prepared. Missing entries remain unchanged at runtime (0 dB). The na unknown-language sentinel is excluded because it is not a spoken calibration language. See the benchmark and promotion guide.
Further documentation
Local bundle
with SupertonicRuntime.from_local("/models/supertonic-3") as tts:
result = tts.synthesize_text("Hello.", voice="F1", language="en")
Local bundles are unmanaged and do not claim a canonical OnnxVoice voice ref for automatic calibration.
Repository layout
The package deliberately has no src/ layer:
supertonicsynth/
tests/
examples/
benchmarks/
pyproject.toml
Licensing
SupertonicSynth project code is Apache-2.0. Portions of the frontend and text behavior are derived from the archived MIT-licensed supertone-oss-archive/supertonic-py; the upstream MIT notice is preserved under licenses/SUPERTONIC-PY-MIT.txt and in NOTICE.
Supertonic-3 model assets are not included in this package and retain their upstream OpenRAIL-M model license.
Metadata
Release files for supertonicsynth 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| supertonicsynth-0.1.1.tar.gz | 168.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| supertonicsynth-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 208.7 kB
Release files / supertonicsynth-0.1.1.tar.gz
| Download URL | supertonicsynth-0.1.1.tar.gz |
|---|---|
| Size | 168.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f7b4dd4620e4af25c06de097d5597fe08a44ec6a29cf13905fcd18503671e76
|
|
BLAKE2b-256 checksum How to use checksums |
09d14171bdac8d4ba80bffca3f254623f8f14cf6bc2a0aed26aec53d0b305f28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Release files / supertonicsynth-0.1.1-py3-none-any.whl
| Download URL | supertonicsynth-0.1.1-py3-none-any.whl |
|---|---|
| Size | 40.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
337381d2b78464c9bb5c2d199e61c5736a685dc2af5a2dccac34c591ef5f0e12
|
|
BLAKE2b-256 checksum How to use checksums |
818ce2d9f2acb7a5f7cf3acad2098be6e3be69776e7da05f94577569cdc9a241
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|