summaryrefslogtreecommitdiff
path: root/src/tangara/tts
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2024-09-12 11:44:20 +1000
committerjacqueline <me@jacqueline.id.au>2024-09-12 11:44:20 +1000
commitd8b9e65e68214b4aa2bb24ddae3602d5788bc469 (patch)
tree10d2f56c9a4ad47de40e6c90a03cf87b009c357f /src/tangara/tts
parentc51709f99ff5456a5863ca39ff893f823a3642d4 (diff)
downloadtangara-fw-d8b9e65e68214b4aa2bb24ddae3602d5788bc469.tar.gz
Clean up some tts logging and descriptions
Diffstat (limited to 'src/tangara/tts')
-rw-r--r--src/tangara/tts/player.cpp15
-rw-r--r--src/tangara/tts/player.hpp4
-rw-r--r--src/tangara/tts/provider.cpp13
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);
}
}
}