/ Модель

Характеристики

Лицензия
CC BY-NC 4.0
Опубликована
5 авг 2026

stable-twi-tts

Синтез речиТекст → аудио3 профессии

Piper VITS-модель для синтеза твийской и ганской английской речи с поддержкой переключения языков в одной фразе.

23скачиваний за 30 дней0лайковвеса обновлены6 авг 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

stable-twi-tts — модель синтеза речи от Ghana NLP Community, созданная на архитектуре Piper VITS. Это дообученная версия голоса en_US/libritts_r/medium, обученная на 327 часах аудио: примерно поровну на твийском и ганском варианте английского. Модель использует фонемы IPA, общие для обоих языков, и поддерживает переключение между ними внутри фразы. Доступны 12 голосовых профилей, выбранных по измерениям разборчивости; частота дискретизации выходного аудио — 22,05 кГц.

Модель предназначена для озвучивания текста на твийском языке и смешанных твийско-английских фраз. Для переключения языков предусмотрен режим mixed, а профили twi-1 и twi-6 показали лучшие результаты соответственно для смешанной речи и текста только на твийском. По оценке на отложенных данных твийская речь заметно точнее английской; английское аудио звучит менее полно из-за исходной записи с частотой 16 кГц. Для работы с моделью требуется соответствующая карта фонем. Лицензия CC BY-NC 4.0 разрешает использование с указанием авторства, но некоммерческое.

Сценарии применения

  • озвучивание текста на твийском языке
  • синтез ганской английской речи
  • озвучивание фраз с переключением между твийским и английским
  • создание аудиоприветствий на твийском языке
  • выбор голоса для твийского текста или смешанной речи

Ограничения

Твийская речь заметно точнее английской; английское аудио менее разборчиво и ограничено по верхним частотам из-за исходной частоты записи 16 кГц. Для корректного использования требуется совместимая карта фонем IPA.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Twi / Ghanaian English TTS (IPA-driven)

A Piper VITS voice for Twi that also reads the English words Ghanaian text is full of. It is driven by IPA phonemes rather than orthography, which is what lets one model serve both languages from a shared inventory.

Warm-started from en_US/libritts_r/medium and finetuned on 327 h (164 h Twi + 164 h Ghanaian English), 22.05 kHz, 1,555 speaker embeddings.

Use it

pip install stable-twi-tts && pip install "stable-twi-tts[twi]" && apt install espeak-ng
stable-twi-tts --model . --voice twi-6 --text "Akwaaba, wo ho te sen?" --out hello.wav
stable-twi-tts --model . --language mixed --voice twi-1 \
    --text "Mepe se mesua [computer science] wo [University of Ghana]." --out mixed.wav

Code: https://github.com/GhanaNLP/stable-twi-tts

Voices are ranked by measurement, not by training hours

12 voices are exposed of 1,555 speaker embeddings. Each synthesised the same held-out text, which was re-recognised and scored for phoneme error -- Twi with ghana-speech-phoneme-asr, the English spans with KoelLabs/xlsr-english-01.

pickforbest
tiers.codeswitchtext mixing English into Twitwi-1 (59.8%)
tiers.twi_onlypure Twitwi-6 (26.8%; floor 25.9%)

The two rankings disagree sharply. twi-1 is the best code-switch voice yet 21st of 30 on pure Twi. Two of the three best Twi voices have under 3.3 h of audio each and would never have survived an hours-based shortlist. voices.json records every measurement.

Quality, honestly

Round-trip phoneme error against a real-audio floor, on held-out text:

floormodelgap
Twi25.9%33.5%+7.6
English32.2%59.5%+27.3

Twi is good; English is markedly weaker. English had a third of the utterances (43k vs 151k) at 3.5x the length, and VITS learns alignment per utterance, so English got far less practice on harder material. English audio was also 16 kHz upsampled to 22.05 kHz, so English voices are band-limited to 8 kHz and sound duller. Twi was 24 kHz and is unaffected.

Training

Warm-started from en_US/libritts_r/medium and finetuned for 10 epochs / 52,039 steps, about 21.5 hours on a single H200. Batch 32, bf16-mixed, single device, 178,833 training utterances across 1,555 speakers. The shipped weights are epoch 7.

Per-validation metrics

Validation ran twice per epoch. val_mos is UTMOS, a learned naturalness predictor — higher is better. Everything else is a loss — lower is better.

stepepochval_lossval_melval_durval_klval_mos
1,999038.080.47921.67592.93332.563
3,999039.060.48591.67502.92372.647
7,559138.620.48511.66872.93232.658
9,559140.120.48131.67382.84892.697
13,119238.600.47381.66642.93872.746
15,119238.050.47431.67082.97912.993
18,679342.690.48211.67092.90072.695
20,679337.510.47341.66432.97412.853
24,239438.050.47741.66422.92612.809
26,239438.120.47341.66452.92652.873
29,799538.260.48151.66772.87752.977
31,799538.500.47271.66952.90642.772
35,359638.340.47431.66522.91902.795
37,359638.850.46881.66202.93682.945
40,919738.170.47411.66442.94443.018
42,919738.040.47951.66562.90472.896
46,479838.220.46861.66462.93742.761
48,479837.960.47761.66532.89992.749
52,039938.040.47321.66282.84922.879

Training losses

startbestend
loss_g (generator, total)41.0533.5037.86
loss_d (discriminator)2.001.242.15
train_mel0.52110.40470.4741

Reading these numbers

val_loss is not a quality signal here, and treating it as one would have been a mistake. It starts at 38.08 and ends at 38.04 — flat across the entire run, with a 42.69 spike at epoch 3 that means nothing. That is expected for a GAN: the generator's total loss is measured against a discriminator that is improving alongside it, so the number tracks the balance between the two, not how good the audio is. A run that looked converged at step 2,000 by val_loss in fact kept improving for another 40,000 steps.

The two signals that did carry information disagreed with each other:

  • val_mel (mel-spectrogram L1) bottomed at 0.4686 at epoch 8, having drifted down from 0.4792. A 2.2% total improvement — real, but small.
  • val_mos peaked at 3.018 at epoch 7 and never recovered: 2.90, 2.76, 2.75, 2.88 after. It is also noisy — epoch 3 swings 2.695 → 2.853 within one epoch — so no single validation is trustworthy on its own.

Epoch 7 was shipped on val_mos plus listening, not on val_mel. Epoch 8's marginally better mel did not sound better. Where a spectral distance and a naturalness predictor disagree by this little, the honest reading is that the model plateaued somewhere around epoch 6–7 and the rest is noise.

The decisive check was neither: a round-trip evaluation — synthesise held-out text, re-recognise it with a phoneme ASR, score the phoneme error against the error the ASR makes on real audio of the same text. That is the "Quality, honestly" table above, and it is the number to trust, because it measures whether the audio says the right thing rather than whether it resembles a reference spectrogram.

checkpointTwi UEREnglish UER
epoch 032.1%64.9%
epoch 131.3%63.7%
epoch 733.5%59.5%
real-audio floor25.9%32.2%

Twi was essentially converged by epoch 1; the remaining 8 epochs bought English (−4.2 points), which is the harder half. The Twi number moving up 2.2 points while listening quality clearly improved is a reminder that a 2-point UER difference is within this instrument's noise.

Training was stopped mid-epoch 9, at step 3,459 of 5,560. Nothing was still improving: val_mos had been below its epoch-7 peak for four consecutive validations, and val_mel's best was a checkpoint that sounded no better. Further epochs would have risked overfitting 1,555 pseudo-speakers without a metric able to tell us it was happening.

Finetuning

finetune/ has the Lightning checkpoint, the phoneme id map, the training command and dataset stats. The phoneme id map is required -- the weights encode "id 26 means /n/", so loading them against a different map yields nonsense. See finetune/FINETUNING.md, which also documents two traps: resize the speaker table before loading, and clear the phoneme cache or stale targets are silently reused.

Limits

  • Speakers are derived, not real identities -- pseudo-speakers from clustering unlabelled broadcast audio. One person may appear as two voices, and no voice is a consented identity.
  • Trained on broadcast speech, so it suits news-register text better than conversation.
  • Training targets came from an ASR, not human annotation, at roughly 17% phoneme error.
  • cc-by-nc-4.0: non-commercial, inherited from the Twi source audio.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Нельзя запустить

Архитектура ? неизвестна transformers в образе рантайма.

Ревизия весов
b6d4294

0 моделей