CoolFace
Modelpublic

AsmoKoskinen/SanoTTS_Finnish_Model

sourceHugging Facecc-by-nc-4.0updated 5d agoView on Hugging Face
1likes
Model Card

SanoTTS Finnish Model

Finnish voice for sanoTTS.

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

  • —Teacher: https://huggingface.co/AsmoKoskinen/PiperFinnishModel
  • —Related Finnish F5-TTS work: https://huggingface.co/AsmoKoskinen/F5-TTSFinnishModel
  • —sanoTTS project: https://github.com/Ampixa/sanoTTS

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:

text
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:

text
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:

text
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:

ThreadsRTFRealtimePeak RSS
11.1630.860x176.3 MiB
20.9431.060x165.8 MiB
40.8571.167x177.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:

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

The model was validated with the sanoTTS pure NumPy runtime.

python
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:

text
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/PiperFinnishModel

Files

text
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.

Arduino Nano ESP32

The ESP32-S3 / Arduino Nano ESP32 deployment is maintained separately:

https://huggingface.co/AsmoKoskinen/SanoTTSFinnishArduinoNanoESP32

Credits

  • —sanoTTS: Ampixa — https://github.com/Ampixa/sanoTTS
  • —Finnish Piper teacher: https://huggingface.co/AsmoKoskinen/PiperFinnishModel
  • —Finnish F5-TTS model: https://huggingface.co/AsmoKoskinen/F5-TTSFinnishModel