Arduino FLITE
All Classes Files Functions Pages
flite_arduino.h
Go to the documentation of this file.
1 
11 #include "flite.h"
12 #include "flite_out_arduino.h"
13 
14 // Declare available voices
15 extern "C" {
16  cst_voice *register_cmu_us_kal(const char*voxdir=nullptr);
17  cst_voice *register_cmu_us_kal16(const char* voxdir=nullptr);
18  cst_voice *register_cmu_us_slt(const char *voxdir=nullptr);
19  cst_voice *register_cmu_us_rms(const char *voxdir=nullptr);
20  cst_voice *register_cmu_us_awb(const char *voxdir=nullptr);
21  cst_voice *register_cmu_time_awb(const char *voxdir=nullptr);
22 };
23 
24 // Arduino Output Driver
25 extern FliteOutputBase *arduino_output;
26 
31 class Flite {
32  public:
34  Flite(){
35  setOutput(new FlitePrintStream(Serial));
36  flite_init();
37  }
38 
40  Flite(flite_callback cb){
41  setOutput(new FliteOutputCallback(cb));
42  flite_init();
43  }
44 
46  Flite(Print &stream, bool as_text=false){
47  if (as_text){
48  setOutput(new FlitePrintStream(stream));
49  } else {
50  setOutput(new FliteOutput(stream));
51  }
52  flite_init();
53  }
54 
57  setOutput(out);
58  flite_init();
59  }
60 
61 #ifdef ESP32
63  Flite(i2s_port_t i2s_num){
64  setOutput(new FliteOutputI2S(i2s_num));
65  flite_init();
66  }
67 #endif
68 
70  void setVoice(cst_voice *voice){
71  this->voice = voice;
72  }
73 
75  void setVoice(const char* url){
76  this->voice = flite_voice_select(url);
77  }
78 
80  void say(const char* text){
81  setup();
82  flite_text_to_speech(text, voice, outtype);
83  }
84 
86  void sayPhones(const char* text){
87  setup();
88  flite_phones_to_speech(text, voice, outtype);
89  }
90 
92  void saySsml(const char* text){
93  setup();
94  flite_ssml_text_to_speech(text, voice, outtype);
95  }
96 
98  cst_wave *textToWave(const char *text){
99  setup();
100  return flite_text_to_wave(text, voice);
101  }
102 
105  return arduino_output;
106  }
107 
109  void end() {
110  delete_audio_streaming_info(asi);
111  asi = nullptr;
112 
113  delete_voice(voice);
114  voice = nullptr;
115  }
116 
117 
118  protected:
119  cst_voice *voice = nullptr;
120  const char *outtype = "play";
121  cst_audio_streaming_info *asi=nullptr;
122 
123  void setup(){
124  // setup default voice
125  if (voice==nullptr){
126  setVoice(register_cmu_us_kal());
127  //setVoice(register_cmu_us_kal16(nullptr));
128  //setVoice(register_cmu_us_slt(nullptr));
129  //setVoice(register_cmu_us_rms(nullptr));
130  //setVoice(register_cmu_us_awb(nullptr));
131  //setVoice(register_cmu_time_awb(nullptr));
132  }
133 
134  // setup streaming
135  if (asi==nullptr){
136  // setup streaming
137  asi = new_audio_streaming_info();
138  asi->asc = arduino_audio_stream_chunk;
139  feat_set(voice->features, "streaming_info", audio_streaming_info_val(asi));
140  }
141  }
142 
143  void setOutput(FliteOutputBase *out){
144  if (arduino_output!=nullptr)
145  delete arduino_output;
146  arduino_output = out;
147  }
148 
149 };
Arduino API for Flite Text to Speach Engine.
Definition: flite_arduino.h:31
void setVoice(cst_voice *voice)
Sets the voice.
Definition: flite_arduino.h:70
void saySsml(const char *text)
Process Speech Synthesis Markup Language (SSML) input.
Definition: flite_arduino.h:92
Flite(flite_callback cb)
Constructor - for output to callback.
Definition: flite_arduino.h:40
Flite(Print &stream, bool as_text=false)
Constructor - for output to a stream.
Definition: flite_arduino.h:46
cst_wave * textToWave(const char *text)
convert text to WAV
Definition: flite_arduino.h:98
Flite()
Constructor - for text output to Serial.
Definition: flite_arduino.h:34
void end()
Delete voice and cst_audio_streaming_info.
Definition: flite_arduino.h:109
void setVoice(const char *url)
Defines the voice from a file or http url.
Definition: flite_arduino.h:75
void say(const char *text)
Process text input.
Definition: flite_arduino.h:80
Flite(i2s_port_t i2s_num)
Constructor - for output to I2S.
Definition: flite_arduino.h:63
Flite(FliteOutputBase *out)
Constructor - for output with a FliteOutputBase class.
Definition: flite_arduino.h:56
FliteOutputBase * getOutput()
provides access to output information
Definition: flite_arduino.h:104
void sayPhones(const char *text)
Process Flite explicit phones.
Definition: flite_arduino.h:86
Base Output Class with common functionality.
Definition: flite_out_arduino.h:31
Output via Callback method.
Definition: flite_out_arduino.h:104
Output using Arduino Print class.
Definition: flite_out_arduino.h:247
Output to I2S for ESP32.
Definition: flite_out_arduino.h:126
Write readable string to Arduino Print class.
Definition: flite_out_arduino.h:279
int arduino_audio_stream_chunk(const cst_wave *w, int start, int size, int last, cst_audio_streaming_info_struct *user)
flite streaming callback method
Definition: flite_out_arduino.cpp:21
Arduino C++ Output Alternatives.