An Occitan Voice for OVOS

JarbasAl

JarbasAl

OVOS Contributor

An Occitan Voice for OVOS

We've written before about building TTS voices for Asturian and Aragonese by cloning a donor voice onto a large multi-speaker ASR dataset. The same approach has a third result: two voices for Occitan, a Romance language spoken across southern France, parts of Italy and Spain's Val d'Aran, with far less speech-technology support than the languages around it.

Miro and Dii, in Occitan

The two voices are phoonnx_oc_miro_unicode (male) and phoonnx_oc_dii_unicode (female), the same donor-voice pair used for the Asturian and Aragonese releases. Instead of training from scratch, each was fine-tuned from the matching Aragonese model (phoonnx_an_miro_unicode and phoonnx_an_dii_unicode), Aragonese being the closest available language to Occitan among our existing voices. The training data, tts_vc_mcv-scripted-v23.0_oc_miro and tts_vc_mcv-scripted-v23.0_oc_dii, is not public; the model cards name it. It was built the same way as the Asturian/Aragonese sets: Mozilla Common Voice scripted-speech recordings revoiced onto a single consistent donor voice through zero-shot cloning, then used to train a phoonnx VITS model exported to ONNX for CPU inference. Both models are trained directly on graphemes. There is no Occitan phonemizer to plug in, so pronunciation comes from the model alone rather than from an IPA front end.

Both voices are published under CC BY-NC-ND 4.0: Miro and Dii are the recorded voices of two real people and the voice identities belong to TigreGótico, so the models are for non-commercial use, unmodified, with attribution.

Try it yourself

Install phoonnx (pip install --pre phoonnx; the run below is 1.91.2a1) and run:

import wave
from huggingface_hub import hf_hub_download
from phoonnx.config import SynthesisConfig
from phoonnx.voice import TTSVoice

repo = "OpenVoiceOS/phoonnx_oc_miro_unicode"
voice = TTSVoice.load(hf_hub_download(repo, "miro_oc.onnx"),
                      hf_hub_download(repo, "miro_oc.json"))
synthesis_config = SynthesisConfig(noise_scale=0.667, length_scale=1.0, noise_w_scale=0.8)

with wave.open("output.wav", "wb") as wav_file:
    voice.synthesize_wav("bon jorn, cossí vas?", wav_file, synthesis_config)
output.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 22050 Hz

Write the input in lowercase: the unicode vocabulary of these models holds no capital letters, and a capital B is logged as out of vocabulary and dropped.

Or point the ovos-tts-plugin-phoonnx plugin, which ships inside the phoonnx package, at either model by name in mycroft.conf:

{
  "tts": {
    "module": "ovos-tts-plugin-phoonnx",
    "ovos-tts-plugin-phoonnx": {
      "voice": "OpenVoiceOS/phoonnx_oc_dii_unicode"
    }
  }
}

There is no hosted demo for these voices; the public TTS server at tts.openvoiceos.pt serves en-US only. Both HuggingFace repos ship a sample.wav to listen to before downloading the model, and the snippet above is the way to hear the voice say your own text.

Build your own

The training path is repeatable for other under-resourced languages. The phoonnx repository documents training a VITS voice from a paired text and audio dataset through to the ONNX file, and the Asturian and Aragonese post describes the dataset method.

As with Asturian and Aragonese, these results are a first, imperfect step, meant to prove the approach rather than to sound polished. If you speak Occitan and have pronunciation feedback, lexicon data, or want to help build a phonemizer for it, open an issue on phoonnx.


This work is part of the OpenVoiceOS From Beta to Breakthrough milestone, funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429. Additional funding is made available by the Swiss State Secretariat for Education, Research and Innovation (SERI).


Help Us Build Voice for Everyone

OpenVoiceOS is more than software, it's a mission. If you believe voice assistants should be open, inclusive, and user-controlled, here's how you can help:

  • 💸 Donate: Help us fund development, infrastructure, and legal protection.
  • 📣 Contribute Open Data: Share voice samples and transcriptions under open licenses.
  • 🌍 Translate: Help make OVOS accessible in every language.

We're not building this for profit. We're building it for people. With your support, we can keep voice tech transparent, private, and community-owned.

👉 Support the project here

JarbasAl

JarbasAl