Skip to content

Bring back the Speech engine reading control next to Voice profile - #191

Merged
trypsynth merged 3 commits into
trypsynth:masterfrom
aaron-gh:speech-engine-control-pr
Oct 15, 2026
Merged

trypsynth merged 3 commits into
trypsynth:masterfrom
aaron-gh:speech-engine-control-pr

Conversation

@aaron-gh

Copy link
Copy Markdown
Contributor

Users asked for the old Speech engine reading control back. Voice profiles (#111) replaced it, and both controls used one setting.

The Speech engine reading control switches between the installed speech engines when you swipe up or down, as it did before voice profiles. It is off by default, so it can be turned on in Reading controls next to Voice profile. The two controls are separate and can be used together.

Voice profile moves to a setting of its own. The first time Backtalk starts after updating, a user who has a voice profile and had the shared setting on gets Voice profile on, keeps Speech engine on, and keeps Voice profile selected if it was. This is because the shared setting meant Speech engine before voice profiles and Voice profile after, so it can't say which control a user meant.

Limitations:

  • Speech engine changes the engine of Backtalk default. While a voice profile is in use it says "Speech engine unavailable while using a voice profile", as Spoken language does.
  • A user with no voice profile keeps Speech engine only, even if they had turned on Voice profile before making a profile. They have to turn it on again.
  • A user who only wanted Voice profile gets Speech engine as well, and can turn it off in Reading controls.
  • The Choose, Previous and Next voice profile gestures and keyboard shortcuts and the Voice profile menu item have their own settings and are unchanged.

Changes:

  • SWITCH_TTS_ENGINE returns to the reading controls with its original setting, value, title, summary and Czech strings, restored from before Add voice profiles #111.
  • SWITCH_VOICE_PROFILE gets its own setting, pref_selector_voice_profile_key.
  • VoiceProfiles.moveReadingControl does the one-time move and reads damaged settings as off.
  • The new "Speech engine unavailable while using a voice profile" string has a lint-baseline.xml entry.
  • differences.md describes both controls.
  • Unit tests cover keeping both controls, keeping another selected reading control, no profile, the setting off, moving only once, and damaged settings.

Tested on an Android 16 emulator. Both controls toggle on their own and Speech engine cycles through the engines. Under a voice profile, Speech engine says it is unavailable. Upgrading from the previous build with a profile, the shared setting on and Voice profile selected leaves Speech engine and Voice profile both on, with Voice profile still selected and working. Not tested on a watch.

The Speech engine reading control switches between the installed speech
engines when you swipe up or down. It is the control that Voice profiles
replaced, restored with its own setting in Reading controls, off by
default, so Voice profile and Speech engine can be used separately or
together. Anyone who had Speech engine on before voice profiles has it
on again.

Limitations: the Speech engine control changes the engine of Backtalk
default, so while a voice profile is in use it says "Speech engine
unavailable while using a voice profile". Anyone who turned on Voice
profile since voice profiles were added has to turn it on again, as it
has a setting of its own now.

- SWITCH_TTS_ENGINE returns to the reading controls, with its original
  setting, value, title, summary and Czech strings.
- SWITCH_VOICE_PROFILE gets its own setting, pref_selector_voice_profile_key.
- Differences from TalkBack describes both controls.
…mes back

Voice profile and Speech engine shared one setting, so the Speech engine
control returning would have turned Voice profile off for anyone who
had it on. The setting can't say which control a user meant: it was
Speech engine before voice profiles and Voice profile after. At
start-up, once, anyone with a voice profile whose shared setting is on
gets Voice profile on, with a setting of its own, and keeps Speech
engine on. Voice profile stays the selected reading control if it was.

Limitations: anyone with no voice profile keeps Speech engine only,
even if they turned on Voice profile before making a profile. Anyone
who only wanted Voice profile gets Speech engine too, and can turn it
off in Reading controls. The Choose, Previous and Next voice profile
gestures and keyboard shortcuts and the Voice profile menu item have
their own settings and are unchanged.

- VoiceProfiles.moveReadingControl sets Voice profile's setting, once,
  and reads damaged settings as off.
- Unit tests for keeping both, keeping another selected control, no
  profile, off, once only and damaged settings.
Bringing back the Speech engine reading control re-added
title_selector_switch_tts_engine and summary_selector_switch_tts_engine,
which have no translations, and the baseline entry for
speech_engine_unavailable_with_profile didn't match what lint reports,
so CI lint failed on all three. The entries come from the lint report.
@trypsynth
trypsynth merged commit a2ee2ce into trypsynth:master Oct 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants