SanoTTS Finnish Model

Finnish voice for sanoTTS.

This model is a compact Finnish TTS voice distilled from my Finnish Piper teacher voice:

The final release candidate was validated as a pure NumPy deployment on a Raspberry Pi Zero 2 W.

Voice package

The deployable piperlite package contains:

manifest.json
weights.fp16.bin
piper-phoneme-config.json

Model details:

  • Language: Finnish (fi)
  • eSpeak voice: fi
  • Sample rate: 22,050 Hz
  • Package format: roota.raw-fp16.v1
  • Parameters: 4,356,478
  • Weight blob: 8,712,956 bytes (~8.4 MiB)
  • Neural stack:
    • duration student
    • calibrated A20/250 acoustic student
    • A91 piperlite compact decoder

The neural package input boundary is Piper-compatible phoneme IDs. Arbitrary text synthesis uses an eSpeak/Piper-compatible Finnish frontend.

Validation

FP16 package validation

The exported weights.fp16.bin was reloaded independently from the package manifest and compared against the locked RC1 checkpoints.

Structural FP16 roundtrip: PASS

Pure NumPy kernel parity

32 held-out Finnish examples:

duration token exact fraction       1.000000
duration chunk exact fraction       1.000000

acoustic mean cosine                0.9999999999999787
decoder mean cosine                 0.9999999999998381
end-to-end mean cosine              0.9999999999994740
end-to-end mean length ratio        1.000000

Raspberry Pi Zero 2 W

Test platform:

Raspberry Pi Zero 2 W
4 x Cortex-A53 @ 1.0 GHz
64-bit Raspberry Pi OS / Debian 13
pure NumPy runtime

Measured with the final Finnish RC1 package:

Threads RTF Realtime Peak RSS
1 1.163 0.860x 176.3 MiB
2 0.943 1.060x 165.8 MiB
4 0.857 1.167x 177.9 MiB

The four-thread run reached 56.9 °C with no throttling.

RTF < 1 means faster than real time.

Python use

Download the voice package, for example with Hugging Face Hub:

hf download AsmoKoskinen/SanoTTS_Finnish_Model \
  --local-dir SanoTTS_Finnish_Model

The model was validated with the sanoTTS pure NumPy runtime.

from sanotts.engine import Synthesizer

tts = Synthesizer(voice_dir="SanoTTS_Finnish_Model")
audio = tts.synthesize("Hei maailma!")

Runtime compatibility note

This Finnish RC uses a calibrated depthwise_lowrank acoustic output adapter. The runtime used for the release also includes scalar-tensor compatibility for raw-FP16 scalar parameters.

If the current upstream sanoTTS release does not yet include these two compatibility fixes, see runtime_patches/ in this repository.

The runtime code and patches are separate from the model-weight license and follow the sanoTTS/GPLv3 code licensing requirements.

Raspberry Pi / local API

This voice has also been tested as a local systemd TTS service using:

Finnish text
  -> eSpeak/Piper frontend
  -> sanoTTS pure NumPy runtime
  -> 22.05 kHz PCM
  -> PipeWire/ALSA
  -> Bluetooth speaker

A Raspberry Pi Zero 2 W reaches real-time synthesis with four CPU threads.

Training / distillation notes

The final acoustic student was trained from a larger Finnish text coverage set and distilled against the Finnish Piper teacher. The final release does not redistribute the training corpus or intermediate training checkpoints.

The teacher voice is my own Finnish Piper voice and is available separately at:

https://huggingface.co/AsmoKoskinen/Piper_Finnish_Model

Files

README.md
manifest.json
weights.fp16.bin
piper-phoneme-config.json
SHA256SUMS
PACKAGE_VALIDATION.json          # when included
runtime-kernels.md               # package/runtime notes
runtime_patches/                 # compatibility patches, when needed
samples/                         # optional audio examples

License

Model weights

CC BY-NC 4.0

This follows the license used for the Finnish Piper teacher from which this voice was distilled.

Runtime code

sanoTTS is GPLv3:

https://github.com/Ampixa/sanoTTS

Any runtime compatibility patch files in runtime_patches/ are code rather than model weights and should be treated under the applicable GPLv3 code licensing terms.

Credits

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support