Skip to content

tiger-speech 0.7.4

Choose a tag to compare

@tgeczy tgeczy released this 18 Aug 16:00
· 191 commits to main since this release

Faster, more expressive, and a sentence no longer falls apart because someone typed a curly apostrophe.

Rate boost

The engine was never the limit — 400 wpm was a constant we picked. Measured, it honours whatever it is asked for and stays perfectly stable well past anything useful:

asked Alex delivers
400 wpm 429
800 wpm 853
1500 wpm 1598, without a stumble

So Voice settings → Rate boost takes the top of the slider from 400 to 1200 wpm.

It is a switch rather than a wider slider on purpose. Widening the slider would have made everyone's existing setting faster without asking — the same mistake as a volume control that arrives at half. It is off by default, and there is a test for that as well as for the boost reaching the engine rather than only the arithmetic.

Inflection

New slider, and it is the engine's own pmod — which turns out to be a percentage, not the 0-to-2 value its name suggests.

It reaches the two engine families quite differently. On the concatenative voices it opens the voice right up: Vicki's pitch wander runs from 7.1 to 31.2 across the range, Alex's from 8.6 to 22.5. On formant voices like Fred the wander barely moves (24.2 to 28.8) and the pitch itself climbs instead, 101.4 Hz to 125.9. Both directions are useful; neither is a bug.

Nothing at all is sent at the halfway point, because "no command" is not quite the same as pmod 100, and the default has to be the engine exactly as it comes.

A curly apostrophe is an apostrophe

Reported as the speech "breaking up" mid-sentence at points with no punctuation. Rendered as one utterance, with no splitting of any kind, the break was still there — so it was never about where the sequence was divided.

MacRoman has the typographic apostrophe, at 0xD5. But 0xD5 is the right single quotation mark, and the engine's front end treats it as one and breaks the phrase. Apple's 2007 front end never expected web text, where every apostrophe is curly. Measured on one reported sentence, apostrophes the only difference:

curly     7.68 s, with a 250 ms pause inside the word "Canopy's"
straight  6.11 s, and no such pause

Curly double quotes are deliberately left alone: those really are quotation marks, and the engine is right about them.

Pauses at line breaks

An index marks a position; it does not end an utterance. NVDA puts one at the start of every line during say-all, and it has already decided those lines belong together — sayAll speaks through speakWithoutPauses, which buffers lines until one contains a natural pause. Splitting there handed the engine a fragment ending in nothing, which it reads as a sentence ending. With word wrap on that is heard as a full stop in the middle of a sentence.

The audio stays whole now, and the indexes are still all reported.

Also

The driver logs the exact string it hands the engine when NVDA's debug logging is on. Three separate "it pauses oddly" reports have now had three different causes, and reconstructing the text from a truncated log is guesswork.

If the embedded-commands option seems to do nothing, that is NVDA rather than the add-on: symbols.dic lists [ and ] at punctuation level most, so at that level or higher NVDA rewrites the brackets into "left bracket" before the synthesizer sees them, and no command can survive. Set punctuation to some or lower and they work.