Skip to content

TG SpeechBox with phoneme editor, NVDA Addon, SAPI5, Linux, Android, iOS, Mac OS, version 310 beta 8

Pre-release
Pre-release

Choose a tag to compare

@tgeczy tgeczy released this 21 Aug 08:35
· 0 commits to master since this release

TGSpeechBox v3.10 Beta 8 — the engine meets its ancestor

This cycle we gained something we've never had: a way to hold our
renders, word for word, against reference audio from the classic
commercial formant synthesizer lineage — the ETI-Eloquence sound
that shaped what a generation of screen reader users consider
"clear." Measurements of rendered audio only: no code, no data, no
tables from anyone — just spectra, timings, and a transcription
model as the referee. Everything tuned into this beta is our own
values, inspired by what those measurements taught us.

This beta is the first harvest, and it went straight at the top
Spanish complaints.

Spanish voiced consonants: events, not blurs (#95, #108, #109)

The measurements told one story everywhere we looked. Eloquence
renders Spanish intervocalic /d/ and /g/ — the lenited, "soft"
consonants in words like "cada" and "amigo" — as brief, deep energy
dips: the consonant is an event your ear can segment, about 15 dB
down for 20-30 milliseconds, with the vowel's formants ramping into
it. Ours were acoustically flat: correct phonetic category, no
event. In connected speech they simply vanished — an automated
listener transcribed our "yo digo" as "y hoy".

Three changes, all values our own, tuned against measurements of
rendered audio:

  • Intervocalic /ɣ/ and /ð/ keep their fricative category (the
    native-validated realization from earlier betas) but gain a real
    constriction contour: deeper, shorter, with formant motion.
  • Clusters like the /gl/ in "regla", "iglesia", "arreglado" get a
    dedicated tighter allophone — Eloquence gives cluster velars a
    near-closure, and now so do we [EAR-VERDICT PENDING].
  • The vowel BEFORE a consonant now announces it: a new
    vowel-to-consonant coarticulation pass ramps the vowel's end
    formants toward the consonant's place of articulation — the
    strongest place cue there is, and our pipeline only did it in the
    consonant-to-vowel direction before. Spanish opts in this beta;
    other languages are unchanged until they get their own listening
    pass.
  • A silent bug fixed along the way: language-variant allophones
    (d_es, ɣ_es and friends) never resolved their place of
    articulation, so every place-driven pass quietly skipped them.

Before/after, scored by an automatic transcriber against IBM's own
engine on the same words: "arreglado" went from unrecognizable to
perfect, "iglesia" from garble to exact, "entregado" to exact —
and on "todo" we now outscore the grandmaster. Two honest
remainders: the Spanish trill/tap needs its own cycle (#84
"regla" still leans on a weak /r/), and fast connected speech
still compresses these new consonant events harder than Eloquence
does — word-level clarity landed this beta; sentence-level
durations are the next study, with the ancestor's duration rules
as the reference.

Word-final stops, round two (en-GB and beyond)

Vsevolod's report from b7 is closed out: the burst retune that
restored en-US finals is now ported to en-GB (it had only landed in
one pack — the audit found en-GB's bursts measuring 9 dB under
target), and word-final voiced stops ("zed", "bad") get their
release cue back through an honest pack rule [CONDG/OPTION2 EAR
VERDICT PENDING] rather than the stale-ramp artifact b7 removed.

Slow-rate staircase, the other half of #98

b7 fixed transitions at slow rates; this beta fixes the steps.
Below 100% rate, the formant staircase that keeps normal-rate audio
shimmer-free now glides between waypoints instead of stepping —
smoothing without lengthening crossfades (long crossfades read as a
double voice; we tried, we listened, we rejected). At and above
100%, output is bit-identical, verified.

NVDA: the last milliseconds (#107)

The NVDA driver drained only 1 ms of audio tail after the last
frame, silently truncating word-final release bursts — the very
bursts the finals work restores (measured: real burst decay at
-16.8 dB in that final window). It now drains 50 ms. SAPI,
Android, and iOS always did this correctly; NVDA catches up.
War story, in the interest of honesty: the longer tail exposed a
latent utterance-sequencing race that briefly shipped as
"first utterance speaks, then silence" — caught within the hour by
our first tester (thanks for the fast report!), the addon asset was
pulled while we root-caused it, and the race — which predates this
beta — is now fixed for good, with the drain intact.
Also in the NVDA build: #102's capital-letter beep now lands
exactly on the letter (index callbacks fire at their true audio
position, via a new sample-accurate synthesis API), and #110's
"s#s" loop-restart artifact is fixed.

iOS: voices stop trading places

On iOS 27 betas, rapid language switching could latch the wrong
eSpeak voice for a clause. The bridge now reference-counts the
global eSpeak instance and re-asserts the language per clause.
(TestFlight build to follow — the Mac wasn't part of this desk.)

Croatian check-in (#99)

Verified this cycle: "uvod" no longer renders as silence (fixed by
intervening engine work since the original report), and the b8
listening pass put our vrat/kruh/voda/novo against eSpeak side by
side — close enough to ship as-is. The two named refinements from
Mario's session (more burst top-end on initial /k/ in clusters, the
/vr/ transition cue) stay open on #99 for a focused pass.

The voice finds its head voice

The measurement that mattered most: long-term spectra say the
classic Eloquence-lineage voice carries 4-9 dB MORE relative energy
in the 3-5.5 kHz "presence" region than ours did — head-brightness
where ours had only chest. That's the "muffled", "sore-throat"
character many of you have told us about, quantified at last.

b8 fixes it in the engine: a built-in presence stage on the
synthesizer's output path, every voice, every platform, tuned to
the measured target and validated by ear. The Spanish consonant
work was then re-balanced through the new stage (bright frication
in a short constriction can read as an /r/ — caught and trimmed).
Attached to this release: before and after renders of the same
sentence. If you've ever EQ'd TGSpeechBox to brighten it, you may
want to undo that and listen fresh — and pitch remains yours to
set, as always.

What we need from you

  • Spanish listeners (gregodejesus2, Diego, yaresDg, Leonardo —
    this one's yours): "regla", "arreglado", "iglesia", "algo",
    "cada", "duro", and most of all connected sentences. Does the
    new consonant presence sound Spanish, or does anything lean
    hyperarticulated? Both answers are data.
  • Vsevolod: "zed", "first", "percent" at your usual rate.
  • Slow-rate listeners: 25-50% rate, words with diphthongs —
    "dry", "able" — the steps should be gone, with no double-voice.
  • Everyone: nothing at normal rate should sound different outside
    Spanish and word-final stops. If it does, tell us.

Credit where due

Reports that shaped this beta: gregodejesus2 (#108, #109),
Vsevolod (finals round two), Mario (#99). The whisper-differential
harness rode on faster-whisper. And the diff shipped with a
second-model review pass: Claude (Fable 5) drove, Codex reviewed.

— Tamas + Claudeo (Fable 5)