2#include "SimpleTTSBase.h"
3#include "AudioBasic/Collections/Vector.h"
19 audio_tools::Vector<const char*> &
say(
double value,
int decimals=2) {
21 number.set(value, decimals);
25 audio_tools::Vector<const char*> &
say(int64_t wholeNumber) {
27 number.set(wholeNumber);
32 audio_tools::Vector<const char*> &
say(
const char* wholeNumber,
const char* decimals=
"") {
35 LOGI(
"say(number='%s', decimal='%s')",wholeNumber, decimals);
38 if (wn.startsWith(
"-")){
46 if (Str(decimals).toLong()>0l){
47 convertDecimals(decimals);
52 callback(result, reference);
60 for (
int j=0;j<20;j++){
63 for (
int j=0;j<10;j++){
66 for (
int j=0;j<7;j++){
73 audio_tools::Vector<const char*> result;
74 const char* first[20] = {
"ZERO",
"ONE",
"TWO",
"THREE",
75 "FOUR",
"FIVE",
"SIX",
"SEVEN",
76 "EIGHT",
"NINE",
"TEN",
"ELEVEN",
77 "TWELVE",
"THIRTEEN",
"FOURTEEN",
"FIFTEEN",
78 "SIXTEEN",
"SEVENTEEN",
"EIGHTEEN",
"NINETEEN"};
80 const char* second[10] = {
"",
"TEN",
"TWENTY",
"THIRTY",
"FORTY",
81 "FIFTY",
"SIXTY",
"SEVENTY",
"EIGHTY",
"NINETY"};
83 const char* third[7] = {
"AND",
"DOT",
"MINUS",
"HUNDRED",
"THOUSAND",
"MILLION",
"BILLION"};
87 const int HUNDRED = 3;
88 const int THOUSAND = 4;
89 const int MILLION = 5;
90 const int BILLION = 6;
92 void add(
const char* str){
93 result.push_back(str);
96 void convertDecimals(
const char* decimals) {
98 if (dec.toInt()!=0.0){
99 const char* ch=decimals;
108 void convert(
const char* strValue){
109 convert(Str(strValue).toLong());
113 void convert(int64_t value){
116 }
else if (value >= 1000000000) {
117 convert(value / 1000000000);
119 int64_t remainder = value%1000000000;
120 if (remainder) convert(remainder);
121 }
else if (value >= 1000000) {
122 convert(value / 1000000);
124 int64_t remainder = value%1000000;
125 if (remainder) convert(remainder);
126 }
else if (value >= 1000) {
127 convert(value / 1000);
128 add(third[THOUSAND]);
129 int64_t remainder = value%1000;
130 if (remainder) convert(remainder);
131 }
else if (value >= 100) {
132 convert(value / 100);
134 int64_t remainder = value%100;
135 if (remainder) convert(remainder);
136 }
else if (value >= 20) {
137 add(second[value / 10]);
Convert numbers to string and provide integer and decimals.
Definition: SimpleTTSBase.h:106
const char * intValue()
provides the full number
Definition: SimpleTTSBase.h:139
const char * decValues()
provides the decimals after the .
Definition: SimpleTTSBase.h:144
Translates a number into englich words.
Definition: NumberToText.h:15
audio_tools::Vector< const char * > & say(const char *wholeNumber, const char *decimals="")
converts a number to it's text representation
Definition: NumberToText.h:32
audio_tools::Vector< const char * > & say(double value, int decimals=2)
converts a real number to it's text representation (with the indicated number of digits)
Definition: NumberToText.h:19
audio_tools::Vector< const char * > & allTexts()
provides all texts
Definition: NumberToText.h:58
Common Functionality for TTS classes.
Definition: SimpleTTSBase.h:15