summaryrefslogtreecommitdiff
path: root/src/tangara/tts/player.cpp
AgeCommit message (Collapse)Author
2025-02-18Gate playback on the existence of /.tangara-tts/.Tursiae
Also, clang-format previous changes in provider.hpp.
2025-02-10TTS: Avoid exhausting the WorkerPool with concurrent TTS playback.Tursiae
Reported in issue #258. As of v1.2.0, if /.tangara-tts/ samples are present on the SD card, and >= 4 menu items with matching TTS samples are highlighted in the UI, and no audio output (headphones or BT sink) is connected, the `tts::Player`'s invocation of lambdas on the WorkerPool will result in worker task exhaustion. This is because we get stuck in state where the `drivers::PcmBuffer` is not accepting any new samples, and the inner loop in `Player::decodeToSink` that pushes to the output isn't checking to see whether playback was cancelled. So the loop never terminates, and we consume that worker slot. Repeat with another 3 menu items, and, hey, all four worker threads are consumed with TTS that will not terminate until headphones/BT are connected.
2024-09-12Clean up some tts logging and descriptionsjacqueline
2024-09-12Pause and unpause the current audio output in response to TTSjacqueline
2024-09-11Play TTS files in response to TTS prompts, but it's legible nowjacqueline
- input files are upsamples and padded to stereo before playback - any in-progress playback is cancelled before playing a new file
2024-09-09Play basic wav files in response to tts promptsjacqueline
It's currently quite limited (no stereo or sample rate conversion, multiple messages clobber each other, only plays if music is playing), but we're getting there!
2024-07-19WIP initial tts player wiringjacqueline