parent
9ecb79a264
commit
f04945fef0
@ -0,0 +1,47 @@ |
||||
# Text-to-speech on Tangara |
||||
|
||||
The `tangara/tts/` module implements an audio accessibility layer for the |
||||
UI, providing the ability to play back text-to-speech recordings for each |
||||
UI element focused when using Tangara. |
||||
|
||||
The code is structured in three pieces: |
||||
|
||||
- `events.hpp`, providing the on-selection-changed and on-TTS-enabled events |
||||
for the UI bindings. |
||||
- `player.cpp`, which supports TTS playback via low-memory audio decoders |
||||
(currently, only WAV files), and |
||||
- `provider.cpp`, which is responsible for finding the TTS sample on the SD |
||||
card for the focused UI element. |
||||
|
||||
## End-user Configuration |
||||
|
||||
Text-to-speech can be enabled under the Display settings on Tangara, by |
||||
enabling the _"Spoken Interface"_ setting. Please note that this will not be |
||||
a user-visible change unless TTS phrases are loaded onto the SD card under |
||||
`/.tangara-tts/`. |
||||
|
||||
## Supported Codecs |
||||
|
||||
Currently, the TTS library only supports a WAV decoder. Natively, the player |
||||
expects 48 kHz audio, mono or stereo, and will (if required) resample the |
||||
audio to 48kHz for playback. |
||||
|
||||
## Creating and enabling TTS Samples |
||||
|
||||
TTS samples should be stored on your SD card, under `/.tangara-tts/`. The |
||||
`provider` expects that the TTS samples are stored in this directory as WAV |
||||
files, with a `.wav` extension, named as the hexadecimal version of the |
||||
[KOMIHASH](https://github.com/avaneev/komihash)ed TTS string. |
||||
|
||||
For example, `Settings` hashes to `1e3e816187453bf8`. If you recorded a |
||||
short sample as a 48kHz (mono or stereo) WAV file, and stored it on the SD |
||||
card as `/.tangara-tts/1e3e816187453bf8.wav`, it would be played back when the |
||||
settings icon is highlighted. |
||||
|
||||
## Finding the KOMIHASH of UI strings |
||||
|
||||
If you connect to your Tangara via the serial console, the `provider` module |
||||
logs a `WARN`ing each time it cannot find a TTS sample. You can enable these |
||||
log messages on the console by using the command `loglevel warn`, and then |
||||
manipulating the click wheel to move through the UI to discover other missing |
||||
TTS samples. |
Loading…
Reference in new issue