FP Perception 0.1.2
Loading...
Searching...
No Matches
speech_pipeline.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4
9
10namespace fp_perception
11{
12
14{
16 bool success = false;
17 bool used_device_audio = false;
18};
19
21{
22public:
23 SpeechPipeline(std::shared_ptr<SpeechSynthesisDriver> speech_driver,
24 std::shared_ptr<AudioSinkDriver> speaker_driver = nullptr)
25 : speech_driver_(std::move(speech_driver)), speaker_driver_(std::move(speaker_driver))
26 {
27 }
28
29 speech_pipeline_result run(const text_data& input, bool use_device_audio)
30 {
31 if (!speech_driver_)
32 throw fp_perception_exception("Speech driver is not loaded.");
33
35 result.audio = speech_driver_->synthesize(input);
36 result.success = !result.audio.samples.empty();
37 result.used_device_audio = use_device_audio;
38
39 if (!result.success)
40 return result;
41
42 if (use_device_audio)
43 {
44 if (!speaker_driver_)
45 throw fp_perception_exception("Speaker driver is not loaded.");
46
47 speaker_driver_->play(result.audio);
48 }
49
50 return result;
51 }
52
53private:
54 std::shared_ptr<SpeechSynthesisDriver> speech_driver_;
55 std::shared_ptr<AudioSinkDriver> speaker_driver_;
56};
57
58} // namespace fp_perception
Definition speech_pipeline.hpp:21
SpeechPipeline(std::shared_ptr< SpeechSynthesisDriver > speech_driver, std::shared_ptr< AudioSinkDriver > speaker_driver=nullptr)
Definition speech_pipeline.hpp:23
std::shared_ptr< SpeechSynthesisDriver > speech_driver_
Definition speech_pipeline.hpp:54
speech_pipeline_result run(const text_data &input, bool use_device_audio)
Definition speech_pipeline.hpp:29
std::shared_ptr< AudioSinkDriver > speaker_driver_
Definition speech_pipeline.hpp:55
Definition audio_buffer.hpp:16
Struct to hold audio data.
Definition structs.hpp:16
std::vector< int16_t > samples
Audio samples.
Definition structs.hpp:17
Base class for driver exceptions.
Definition exceptions.hpp:14
Definition speech_pipeline.hpp:14
audio_data audio
Definition speech_pipeline.hpp:15
bool success
Definition speech_pipeline.hpp:16
bool used_device_audio
Definition speech_pipeline.hpp:17
Definition structs.hpp:33