TTS_EN - floats and units added. New EN wavs required!

This commit is contained in:
mhotar@gmail.com
2012-09-04 20:57:55 +00:00
parent 6e3152633b
commit a24a8736b1
2 changed files with 99 additions and 57 deletions
+74 -48
View File
@@ -35,43 +35,52 @@
enum EnglishPrompts {
PROMPT_NUMBERS_BASE = 0,
PROMPT_ZERO = PROMPT_NUMBERS_BASE+0,
/* ... */
PROMPT_TWENTY = PROMPT_NUMBERS_BASE+20,
PROMPT_THIRTY = PROMPT_NUMBERS_BASE+21,
/* ... */
PROMPT_NINETY = PROMPT_NUMBERS_BASE+27,
PROMPT_HUNDRED = PROMPT_NUMBERS_BASE+28,
PROMPT_THOUSAND = PROMPT_NUMBERS_BASE+29,
PROMPT_ZERO = PROMPT_NUMBERS_BASE+0, //02-99
PROMPT_HUNDRED = PROMPT_NUMBERS_BASE+100, //100,200 .. 900
PROMPT_THOUSAND = PROMPT_NUMBERS_BASE+109, //1000
PROMPT_AND = PROMPT_NUMBERS_BASE+110,
PROMPT_MINUS = PROMPT_NUMBERS_BASE+111,
PROMPT_POINT = PROMPT_NUMBERS_BASE+112,
PROMPT_HOUR = 40,
PROMPT_HOURS = 41,
PROMPT_MINUTE = 42,
PROMPT_MINUTES = 43,
PROMPT_SECOND = 44,
PROMPT_SECONDS = 45,
PROMPT_UNITS_BASE = 115,
PROMPT_VOLTS = PROMPT_UNITS_BASE+UNIT_VOLTS, //(one)volt,(two)volts
PROMPT_AMPS = PROMPT_UNITS_BASE+(UNIT_AMPS*2),
PROMPT_METERS_PER_SECOND = PROMPT_UNITS_BASE+(UNIT_METERS_PER_SECOND*2),
PROMPT_SPARE1 = PROMPT_UNITS_BASE+(UNIT_RAW*2),
PROMPT_KMH = PROMPT_UNITS_BASE+(UNIT_KMH*2),
PROMPT_METERS = PROMPT_UNITS_BASE+(UNIT_METERS*2),
PROMPT_DEGREES = PROMPT_UNITS_BASE+(UNIT_DEGREES*2),
PROMPT_PERCENT = PROMPT_UNITS_BASE+(UNIT_PERCENT*2),
PROMPT_MILLIAMPS = PROMPT_UNITS_BASE+(UNIT_MILLIAMPS*2),
PROMPT_MAH = PROMPT_UNITS_BASE+(UNIT_MAH*2),
PROMPT_WATTS = PROMPT_UNITS_BASE+(UNIT_WATTS*2),
PROMPT_DB = PROMPT_UNITS_BASE+(UNIT_DBM*2),
PROMPT_FEET = PROMPT_UNITS_BASE+(UNIT_FEET*2),
PROMPT_KTS = PROMPT_UNITS_BASE+(UNIT_KTS*2),
PROMPT_HOURS = PROMPT_UNITS_BASE+(UNIT_HOURS*2),
PROMPT_MINUTES = PROMPT_UNITS_BASE+(UNIT_MINUTES*2),
PROMPT_SECONDS = PROMPT_UNITS_BASE+(UNIT_SECONDS*2),
PROMPT_RPMS = PROMPT_UNITS_BASE+(UNIT_RPMS*2),
PROMPT_G = PROMPT_UNITS_BASE+(UNIT_G*2),
PROMPT_AND = 47,
PROMPT_MINUS = 48,
PROMPT_UNITS_BASE = 50,
PROMPT_VOLTS = PROMPT_UNITS_BASE+UNIT_VOLTS,
PROMPT_AMPS = PROMPT_UNITS_BASE+UNIT_AMPS,
PROMPT_METERS_PER_SECOND = PROMPT_UNITS_BASE+UNIT_METERS_PER_SECOND,
PROMPT_SPARE1 = PROMPT_UNITS_BASE+UNIT_RAW,
PROMPT_KMH = PROMPT_UNITS_BASE+UNIT_KMH,
PROMPT_METERS = PROMPT_UNITS_BASE+UNIT_METERS,
PROMPT_DEGREES = PROMPT_UNITS_BASE+UNIT_DEGREES,
PROMPT_PERCENT = PROMPT_UNITS_BASE+UNIT_PERCENT,
PROMPT_MILLIAMPS = PROMPT_UNITS_BASE+UNIT_MILLIAMPS,
PROMPT_MAH = PROMPT_UNITS_BASE+UNIT_MAH,
PROMPT_WATTS = PROMPT_UNITS_BASE+UNIT_WATTS,
PROMPT_FEET = PROMPT_UNITS_BASE+UNIT_FEET,
PROMPT_KTS = PROMPT_UNITS_BASE+UNIT_KTS,
};
#if defined(VOICE)
#if defined(PCBSTD)
#define PUSH_UNIT_PROMPT(p, u) pushUnitPrompt((p), (u))
#else
#define PUSH_UNIT_PROMPT(p, u) pushUnitPrompt((p), (u), id)
#endif
PLAY_FUNCTION(pushUnitPrompt, int16_t number, uint8_t unitprompt)
{
if (number == 1)
PUSH_PROMPT(unitprompt);
else
PUSH_PROMPT(unitprompt+1);
}
PLAY_FUNCTION(playNumber, int16_t number, uint8_t unit, uint8_t att)
{
/* if digit >= 1000000000:
@@ -88,6 +97,33 @@ PLAY_FUNCTION(playNumber, int16_t number, uint8_t unit, uint8_t att)
PUSH_PROMPT(PROMPT_MINUS);
number = -number;
}
int8_t mode = MODE(att);
if (mode > 0) {
div_t qr = div(number, (mode == 1 ? 10 : 100));
if (qr.rem) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_PROMPT(PROMPT_POINT);
if (mode == 2 ) {
if (qr.rem < 10)
PUSH_PROMPT(PROMPT_ZERO);
else
PLAY_NUMBER(qr.rem/10, 0, 0);
qr.rem %= 10;
if (qr.rem)
PLAY_NUMBER(qr.rem, 0, 0);
}
else {
PLAY_NUMBER(qr.rem, 0, 0);
}
PUSH_PROMPT(PROMPT_UNITS_BASE+((unit-1)*2)+1);
}
else
PLAY_NUMBER(qr.quot, unit, 0);
return;
}
int16_t tmp = number;
if (number >= 1000) {
PLAY_NUMBER(number / 1000, 0, 0);
@@ -97,24 +133,17 @@ PLAY_FUNCTION(playNumber, int16_t number, uint8_t unit, uint8_t att)
number = -1;
}
if (number >= 100) {
PUSH_PROMPT(PROMPT_ZERO + number/100);
PUSH_PROMPT(PROMPT_HUNDRED);
PUSH_PROMPT(PROMPT_HUNDRED + (number/100)-1);
number %= 100;
if (number == 0)
number = -1;
}
if (number >= 20) {
PUSH_PROMPT(PROMPT_TWENTY + (number-20)/10);
number %= 10;
if (number == 0)
number = -1;
}
if (number >= 0) {
PUSH_PROMPT(PROMPT_ZERO+number);
PUSH_PROMPT(PROMPT_ZERO + number);
}
if (unit) {
PUSH_PROMPT(PROMPT_UNITS_BASE+unit-1);
PUSH_UNIT_PROMPT(tmp, (PROMPT_UNITS_BASE+((unit-1)*2)));
}
}
@@ -128,22 +157,19 @@ PLAY_FUNCTION(playDuration, int16_t seconds)
uint8_t tmp = seconds / 3600;
seconds %= 3600;
if (tmp > 0) {
PLAY_NUMBER(tmp, 0, 0);
PUSH_PROMPT(tmp == 1 ? PROMPT_HOUR : PROMPT_HOURS);
PLAY_NUMBER(tmp, UNIT_HOURS+1 , 0);
}
tmp = seconds / 60;
seconds %= 60;
if (tmp > 0) {
PLAY_NUMBER(tmp, 0, 0);
PUSH_PROMPT(tmp == 1 ? PROMPT_MINUTE : PROMPT_MINUTES);
PLAY_NUMBER(tmp, UNIT_MINUTES+1 , 0);
if (seconds > 0)
PUSH_PROMPT(PROMPT_AND);
}
if (seconds > 0) {
PLAY_NUMBER(seconds, 0, 0);
PUSH_PROMPT(tmp == 1 ? PROMPT_SECOND : PROMPT_SECONDS);
PLAY_NUMBER(seconds, UNIT_SECONDS+1 , 0);
}
}
+25 -9
View File
@@ -136,16 +136,32 @@ if __name__ == "__main__":
espeakspeed = "150"
voice = "english"
for i in range(20):
for i in range(100):
systemSounds.extend(generate(str(i), i))
for i in range(20, 100, 10):
systemSounds.extend(generate(str(i), 20+(i-20)/10))
systemSounds.extend(generate("hundred", 28))
systemSounds.extend(generate("thousand", 29))
for i, s in enumerate(["hour", "hours", "minute", "minutes", "second", "seconds", "", "and", "minus"]):
systemSounds.extend(generate(s, 40+i))
for i, s in enumerate(["volts", "amps", "meters per second", "", "km per hour", "meters", "degrees", "percent", "milliamps", "milliamps per hour", "watts", "db", "feet", "knots", "hour", "minute", "second", "r p m", "g"]):
systemSounds.extend(generate(s, 50+i))
for i in range(9):
systemSounds.extend(generate(str(100*(i+1)), 100+i))
for i, s in enumerate(["thousand", "and", "minus", "point"]):
systemSounds.extend(generate(s, 109+i))
for i, s in enumerate(["volt", "volts",
"amp", "amps",
"meter per second", "meters per second",
"", "",
"kilometer per hour","kilometers per hour",
"meter", "meters",
"degree", "degrees",
"percent", "percent",
"milliamp", "milliamps",
"milliamp per hour", "milliamps per hour",
"watt", "watts",
"db", "db",
"feet", "feets",
"knot", "knots",
"hour", "hours",
"minute", "minutes",
"second", "seconds",
"r p m", "r p m",
"g", "g"]):
systemSounds.extend(generate(s, 115+i))
for s, f, a in [(u"trim center", "midtrim", 244),
(u"maximum trim reached", "endtrim", 0),
(u"transmitter battery low", "lowbatt", 231),