<feed xmlns='http://www.w3.org/2005/Atom'>
<title>tangara-fw/src/tangara/tts, branch main</title>
<subtitle>Tangara firmware</subtitle>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/'/>
<entry>
<title>Gate playback on the existence of /.tangara-tts/.</title>
<updated>2025-02-18T12:41:46+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-18T12:39:48+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=eba8825d9f4df93e3f89010a4349c72046faa16a'/>
<id>eba8825d9f4df93e3f89010a4349c72046faa16a</id>
<content type='text'>
Also, clang-format previous changes in provider.hpp.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Also, clang-format previous changes in provider.hpp.
</pre>
</div>
</content>
</entry>
<entry>
<title>TTS: Implement and wire up a TTS toggle in Display Settings (#251)</title>
<updated>2025-02-11T00:23:35+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-11T00:23:35+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=569ed6c0cc440572b37a06200b6706badcdf8e45'/>
<id>569ed6c0cc440572b37a06200b6706badcdf8e45</id>
<content type='text'>
This change introduces the ability to enable or disable the spoken interface/TTS from the on-device settings, either via the UI or the Lua console. This closes out the implementation of issue #245.

The TTS setting is only visible in Display settings if voice samples are present in `/.tangara-tts/` on the SD card.

Playback of new TTS voice samples is inhibited when TTS is disabled. By default, the setting is enabled, as the device will only play back TTS voices if samples are present on disk.

If you need samples to test TTS on your device, feel free to grab the voice samples I have at https://codeberg.org/tursiae/tangara-tts-samples. There's about 80-85% coverage of the UI, with the remainder to be added soonish.

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/251
Co-authored-by: Tursiae &lt;git@tursiae.org&gt;
Co-committed-by: Tursiae &lt;git@tursiae.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This change introduces the ability to enable or disable the spoken interface/TTS from the on-device settings, either via the UI or the Lua console. This closes out the implementation of issue #245.

The TTS setting is only visible in Display settings if voice samples are present in `/.tangara-tts/` on the SD card.

Playback of new TTS voice samples is inhibited when TTS is disabled. By default, the setting is enabled, as the device will only play back TTS voices if samples are present on disk.

If you need samples to test TTS on your device, feel free to grab the voice samples I have at https://codeberg.org/tursiae/tangara-tts-samples. There's about 80-85% coverage of the UI, with the remainder to be added soonish.

Reviewed-on: https://codeberg.org/cool-tech-zone/tangara-fw/pulls/251
Co-authored-by: Tursiae &lt;git@tursiae.org&gt;
Co-committed-by: Tursiae &lt;git@tursiae.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>TTS: Better document the ownership and task/control flow.</title>
<updated>2025-02-10T23:44:15+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-09T13:02:57+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=167fea6b5b87a1cd97165d4e425699c2ecdb2bbf'/>
<id>167fea6b5b87a1cd97165d4e425699c2ecdb2bbf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>TTS: Avoid exhausting the WorkerPool with concurrent TTS playback.</title>
<updated>2025-02-10T23:42:43+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-09T07:25:16+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=fe7c26d27d47f6087b67af9fe740f674078b5da1'/>
<id>fe7c26d27d47f6087b67af9fe740f674078b5da1</id>
<content type='text'>
Reported in issue #258.

As of v1.2.0, if /.tangara-tts/ samples are present on the SD card, and
&gt;= 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reported in issue #258.

As of v1.2.0, if /.tangara-tts/ samples are present on the SD card, and
&gt;= 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update the docs to eliminate the mention of the Spoken Interface setting until re-added.</title>
<updated>2025-02-06T06:00:32+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-06T06:00:32+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=ffc62ee5e0b5d7f81c07aeb430a1b2566466f717'/>
<id>ffc62ee5e0b5d7f81c07aeb430a1b2566466f717</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Make the TTS playback work by assuming the file is a .wav.</title>
<updated>2025-02-06T05:53:56+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-05T13:13:40+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=2d8fdbf67f5623ec47a578f31059323ab8bb7d8f'/>
<id>2d8fdbf67f5623ec47a578f31059323ab8bb7d8f</id>
<content type='text'>
The extension is needed to trigger format detection in the tag reader.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The extension is needed to trigger format detection in the tag reader.
</pre>
</div>
</content>
</entry>
<entry>
<title>Briefly document the TTS module.</title>
<updated>2025-02-06T05:51:19+00:00</updated>
<author>
<name>Tursiae</name>
<email>git@tursiae.org</email>
</author>
<published>2025-02-05T14:24:08+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=f04945fef03db6af8b7dbeefe23b4265b0672a8b'/>
<id>f04945fef03db6af8b7dbeefe23b4265b0672a8b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up some tts logging and descriptions</title>
<updated>2024-09-12T01:44:20+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2024-09-12T01:44:20+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=d8b9e65e68214b4aa2bb24ddae3602d5788bc469'/>
<id>d8b9e65e68214b4aa2bb24ddae3602d5788bc469</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Pause and unpause the current audio output in response to TTS</title>
<updated>2024-09-12T00:44:26+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2024-09-12T00:44:26+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=c51709f99ff5456a5863ca39ff893f823a3642d4'/>
<id>c51709f99ff5456a5863ca39ff893f823a3642d4</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Play TTS files in response to TTS prompts, but it's legible now</title>
<updated>2024-09-11T02:57:04+00:00</updated>
<author>
<name>jacqueline</name>
<email>me@jacqueline.id.au</email>
</author>
<published>2024-09-11T02:57:04+00:00</published>
<link rel='alternate' type='text/html' href='https://grim.freemyip.com/cgit/tangara-fw/commit/?id=542ebc65317ac4744a4b96c3131dace5bda10314'/>
<id>542ebc65317ac4744a4b96c3131dace5bda10314</id>
<content type='text'>
 - input files are upsamples and padded to stereo before playback
 - any in-progress playback is cancelled before playing a new file
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
 - input files are upsamples and padded to stereo before playback
 - any in-progress playback is cancelled before playing a new file
</pre>
</div>
</content>
</entry>
</feed>
