Commit Graph

100 Commits

Author SHA1 Message Date
Nolan Darilek d8f2b3fb00 I'll do my own queuing, MediaPlaybackList is either the wrong tool for the job or way too buggy. 2020-12-07 21:35:07 -06:00
Nolan Darilek a905439d9c Add strategic backoff in WinRT backend to (hopefully) eliminate a deadlock. 2020-12-07 14:58:59 -06:00
Nolan Darilek ad67682235 Implement Send and Sync for UtteranceId on most platforms. 2020-12-03 13:21:24 -06:00
Nolan Darilek 0bdf0fcfd3 Account for macOS 11. 2020-11-25 10:13:17 -06:00
Nolan Darilek f4952ad132 UWP tweaks and optimizations.
* Initialized TTS `MediaPlayer` in real-time mode.
* Set media category to speech.
* More aggressively drop locks to prevent deadlocks.
* Remove checks of queued items that are no longer necessary.
* Made `is_speaking` check both media player state and queued item count.
* Return eagerly from `stop` if speech isn't in progress, thus eliminating more locks.
2020-11-25 10:07:28 -06:00
Nolan Darilek 669c94af36 We don't need autoplay. 2020-11-23 17:20:55 -06:00
Nolan Darilek d97796fff7 Eliminate a Clippy warning. 2020-11-17 16:03:03 -06:00
Nolan Darilek 590d6369fb Remove debugging printlns. 2020-11-17 10:25:21 -06:00
Nolan Darilek 6a706f36ab Fix double-speaking bug for good, hopefully. 2020-11-11 10:27:03 -06:00
Nolan Darilek 031e0ff23f Fix more queuing issues under WinRT. 2020-11-03 12:02:16 -06:00
Nolan Darilek 6b74afe503 Remove unused variable. 2020-11-03 11:24:09 -06:00
Nolan Darilek 289a35dc83 Don't double-speak previous item when not flushing queue. 2020-11-03 11:20:02 -06:00
Nolan Darilek 9c98026978 Don't re-initialize a player, just clear the item list. 2020-11-03 11:11:49 -06:00
Nolan Darilek d3e05b5a7a Revert "Pass TTS instance as first argument to utterance callbacks."
This appears to break callbacks, and is of limited utility.

This reverts commit 29c0a8463e.
2020-11-03 11:03:55 -06:00
Nolan Darilek 29c0a8463e Pass TTS instance as first argument to utterance callbacks. 2020-11-02 22:40:30 -06:00
Nolan Darilek cf0ad2221e Derive Debug. 2020-11-02 21:44:47 -06:00
Nolan Darilek 551bb1292e Make `TTS` clonable.
Also, add other possibly useful derives.
2020-11-02 21:27:13 -06:00
Nolan Darilek 565aa6d654 Fix issue where is_speaking always returns true under WinRT, and bump version. 2020-11-02 13:30:39 -06:00
Nolan Darilek 5feede0b8f Remove unnecessary debug logs. 2020-11-02 10:11:53 -06:00
Nolan Darilek 0bbda0a90f Remove WinRT code for handling paused player state, which caused issues with queued speech. 2020-10-30 10:23:24 -05:00
Nolan Darilek e66b8403aa Remove unnecessary full module names. 2020-10-14 03:54:53 -05:00
Nolan Darilek a281d74e5c Whitespace fix. 2020-10-14 03:51:08 -05:00
Nolan Darilek 51837a51bf Document feature. 2020-10-08 19:08:18 -05:00
Nolan Darilek fa216a534e Gate Tolk behind use_tolk feature to support compilation on UWP. 2020-10-08 19:07:07 -05:00
Nolan Darilek 88ec7db075 Eliminate accidental deadlock. 2020-10-08 09:44:46 -05:00
Nolan Darilek 0c13c43a77 Fix incorrect error code name. 2020-10-08 08:16:01 -05:00
Nolan Darilek 6f12974ce4 Implement stop callback on MacOS. 2020-10-08 08:07:33 -05:00
Nolan Darilek 8c783205c3 Implement utterance_stop callback on most platforms. 2020-10-08 07:56:45 -05:00
Nolan Darilek 174011bbb4 Make `UtteranceId` use `u64` on most platforms, and add additional derives. 2020-10-08 07:16:10 -05:00
Nolan Darilek c2bbc5ac04 Eliminate more Clippy warnings. 2020-09-26 12:47:18 -05:00
Nolan Darilek dbac8a3fe0 Eliminate some Clippy warnings. 2020-09-26 12:43:16 -05:00
Nolan Darilek ace5d2fd1f Make compatible with newly-released speech-dispatcher-rs. 2020-09-25 11:33:49 -05:00
Nolan Darilek 589c613bbe Implement FnMut callbacks on AV Foundation, and fix warnings. 2020-09-25 11:14:26 -05:00
Nolan Darilek 1f22843086 Refactor Linux, Windows, and Wasm platforms to use FnMut for callbacks, and bump version. 2020-09-25 11:08:19 -05:00
Nolan Darilek 96e5d21e24 Implement callbacks for WinRT. 2020-09-24 17:56:46 -05:00
Nolan Darilek a22242af50 Implement callbacks for web backend. 2020-09-24 14:26:30 -05:00
Nolan Darilek 532d5d9b58 Tighten up access. 2020-09-23 12:23:46 -05:00
Nolan Darilek 251fb8d8c1 Implement callbacks on AVFoundation. 2020-09-23 12:21:05 -05:00
Nolan Darilek bd57075d53 Implement unused framework for AVFoundation callbacks. 2020-09-23 11:28:56 -05:00
Nolan Darilek 36a12597de Merge branch 'v0.7' of https://github.com/ndarilek/tts-rs into v0.7 2020-09-23 11:00:41 -05:00
Nolan Darilek 6788277a4d Implement framework for utterance callbacks in Windows backends, though they aren't currently called. 2020-09-23 10:31:21 -05:00
Nolan Darilek 61522610cd Implement utterance begin/end callback framework, and set up for Speech-Dispatcher. 2020-09-23 10:12:51 -05:00
Nolan Darilek f5f11b7cdf Switch to using MediaPlaybackItem as WinRT utterance ID. 2020-09-22 14:51:59 -05:00
Nolan Darilek 017aa8863b Remove unused import and fix i~~OS builds. 2020-09-22 14:30:17 -05:00
Nolan Darilek 6b023c3071 Add AV Foundation support for returning utterance IDs. 2020-09-22 14:08:19 -05:00
Nolan Darilek 4816ec575c Make speak calls return an utterance ID, where possible. 2020-09-22 12:40:03 -05:00
Nolan Darilek d6508edd12 Remove workaround for incorrect Tolk string handling, pin minimum working version, and bump version. 2020-09-21 15:13:22 -05:00
Nolan Darilek 665013fdff Split text sent to Tolk backend to account for some sort of length limit.
Tolk seems to fail on strings larger than 325 characters in length. Here we:
* Send any strings with 300 or fewer characters through directly.
* For larger strings, split on whitespace boundaries, then create and send buffers of 300 or fewer characters.

This may not handle internationalized text, and may not handle someone bombarding TTS with a giant word. PRs for either welcome.
2020-09-02 11:40:08 -05:00
Nolan Darilek 6c091f3284 Switch Speech-dispatcher initialization to threaded mode so callbacks work and `is_speaking` is correct. 2020-08-25 11:50:25 -05:00
Nolan Darilek d3ffd5078f cargo fmt 2020-08-24 16:46:57 -05:00