diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-09-12 11:44:20 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-09-12 11:44:20 +1000 |
| commit | d8b9e65e68214b4aa2bb24ddae3602d5788bc469 (patch) | |
| tree | 10d2f56c9a4ad47de40e6c90a03cf87b009c357f /src/tangara/tts | |
| parent | c51709f99ff5456a5863ca39ff893f823a3642d4 (diff) | |
| download | tangara-fw-d8b9e65e68214b4aa2bb24ddae3602d5788bc469.tar.gz | |
Clean up some tts logging and descriptions
Diffstat (limited to 'src/tangara/tts')
| -rw-r--r-- | src/tangara/tts/player.cpp | 15 | ||||
| -rw-r--r-- | src/tangara/tts/player.hpp | 4 | ||||
| -rw-r--r-- | src/tangara/tts/provider.cpp | 13 |
3 files changed, 20 insertions, 12 deletions
diff --git a/src/tangara/tts/player.cpp b/src/tangara/tts/player.cpp index a803ce57..46e8c48a 100644 --- a/src/tangara/tts/player.cpp +++ b/src/tangara/tts/player.cpp @@ -31,11 +31,9 @@ Player::Player(tasks::WorkerPool& worker, stream_playing_(false), stream_cancelled_(false) {} -auto Player::playFile(const std::string& path) -> void { - ESP_LOGI(kTag, "playing '%s'", path.c_str()); - +auto Player::playFile(const std::string& text, const std::string& file) + -> void { bg_.Dispatch<void>([=, this]() { - // Interrupt current playback { std::scoped_lock<std::mutex> lock{new_stream_mutex_}; if (stream_playing_) { @@ -46,7 +44,7 @@ auto Player::playFile(const std::string& path) -> void { stream_playing_ = true; } - openAndDecode(path); + openAndDecode(text, file); if (!stream_cancelled_) { events::Audio().Dispatch(audio::TtsPlaybackChanged{.is_playing = false}); @@ -56,10 +54,11 @@ auto Player::playFile(const std::string& path) -> void { }); } -auto Player::openAndDecode(const std::string& path) -> void { +auto Player::openAndDecode(const std::string& text, const std::string& path) + -> void { auto stream = stream_factory_.create(path); if (!stream) { - ESP_LOGE(kTag, "creating stream failed"); + ESP_LOGW(kTag, "missing '%s' for '%s'", path.c_str(), text.c_str()); return; } @@ -67,7 +66,7 @@ auto Player::openAndDecode(const std::string& path) -> void { // proper subset of 'low memory' decoders that can all be used for TTS // playback. if (stream->type() != codecs::StreamType::kWav) { - ESP_LOGE(kTag, "stream was unsupported type"); + ESP_LOGE(kTag, "'%s' has unsupported encoding", path.c_str()); return; } diff --git a/src/tangara/tts/player.hpp b/src/tangara/tts/player.hpp index 47479007..d28da474 100644 --- a/src/tangara/tts/player.hpp +++ b/src/tangara/tts/player.hpp @@ -24,7 +24,7 @@ class Player { public: Player(tasks::WorkerPool&, drivers::PcmBuffer&, audio::FatfsStreamFactory&); - auto playFile(const std::string& path) -> void; + auto playFile(const std::string& text, const std::string& path) -> void; // Not copyable or movable. Player(const Player&) = delete; @@ -39,7 +39,7 @@ class Player { std::atomic<bool> stream_playing_; std::atomic<bool> stream_cancelled_; - auto openAndDecode(const std::string& path) -> void; + auto openAndDecode(const std::string& text, const std::string& path) -> void; auto decodeToSink(const codecs::ICodec::OutputFormat&, std::unique_ptr<codecs::ICodec>) -> void; }; diff --git a/src/tangara/tts/provider.cpp b/src/tangara/tts/provider.cpp index 2b1dd4e6..d19500e0 100644 --- a/src/tangara/tts/provider.cpp +++ b/src/tangara/tts/provider.cpp @@ -49,9 +49,18 @@ auto Provider::feed(const Event& e) -> void { // ESP_LOGI(kTag, "new selection: '%s', interactive? %i", // ev.new_selection->description.value_or("").c_str(), // ev.new_selection->is_interactive); - std::string new_desc = ev.new_selection->description.value_or(""); + auto text = ev.new_selection->description; + if (!text) { + ESP_LOGW(kTag, "missing description for element"); + return; + } + auto file = textToFile(*text); + if (!file) { + return; + } + if (player_) { - player_->playFile(textToFile(new_desc).value_or("")); + player_->playFile(*text, *file); } } } |
