diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index f6871d136..309254cca 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -135,6 +135,37 @@ const int16_t sineValues[] = }; #if defined(SDCARD) + +const char * const unitsFilenames[] = { + "", + "volt", + "amp", + "mamp", + "knot", + "mps", + "fps", + "kph", + "mph", + "meter", + "foot", + "celsius", + "fahr", + "percent", + "mamph", + "watt", + "mwatt", + "db", + "rpm", + "g", + "degree", + "radian", + "ml", + "founce", + "hour", + "minute", + "second", +}; + const char * const audioFilenames[] = { "hello", "bye", @@ -1235,6 +1266,22 @@ void audioEvent(unsigned int index) } } +#if defined(SDCARD) +void pushUnit(uint8_t unit, uint8_t idx, uint8_t id) +{ + if (unit < DIM(unitsFilenames)) { + char path[AUDIO_FILENAME_MAXLEN+1]; + char *tmp = strAppendSystemAudioPath(path); + tmp = strAppendStringWithIndex(tmp, unitsFilenames[unit], idx); + strcpy(tmp, SOUNDS_EXT); + audioQueue.playFile(path, 0, id); + } + else { + TRACE("pushUnit: out of bounds unit : %d", unit); // We should never get here, but given the nature of TTS files, this prevent segfault in case of bug there. + } +} +#endif + void pushPrompt(uint16_t prompt, uint8_t id) { #if defined(SDCARD) diff --git a/radio/src/audio_arm.h b/radio/src/audio_arm.h index 9deba69d4..4ddaf8b16 100644 --- a/radio/src/audio_arm.h +++ b/radio/src/audio_arm.h @@ -359,11 +359,13 @@ enum AutomaticPromptsEvents { }; void pushPrompt(uint16_t prompt, uint8_t id=0); +void pushUnit(uint8_t unit, uint8_t idx, uint8_t id); void playModelName(); #define I18N_PLAY_FUNCTION(lng, x, ...) void lng ## _ ## x(__VA_ARGS__, uint8_t id) #define PLAY_FUNCTION(x, ...) void x(__VA_ARGS__, uint8_t id) #define PUSH_NUMBER_PROMPT(p) pushPrompt((p), id) +#define PUSH_UNIT_PROMPT(p, i) pushUnit((p), (i), id) #define PLAY_NUMBER(n, u, a) playNumber((n), (u), (a), id) #define PLAY_DURATION(d, att) playDuration((d), (att), id) #define PLAY_DURATION_ATT , uint8_t flags diff --git a/radio/src/translations/tts_cz.cpp b/radio/src/translations/tts_cz.cpp index 1babd3d28..8885d535d 100644 --- a/radio/src/translations/tts_cz.cpp +++ b/radio/src/translations/tts_cz.cpp @@ -54,12 +54,22 @@ enum CzechPrompts { I18N_PLAY_FUNCTION(cz, pushUnitPrompt, int16_t number, uint8_t unitprompt) { +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else if (number > 1 && number < 5) + PUSH_UNIT_PROMPT(unitprompt, 1); + else + PUSH_UNIT_PROMPT(unitprompt, 2); +#else + unitprompt = CZ_PROMPT_UNITS_BASE+((unitprompt-1)*4); if (number == 1) PUSH_NUMBER_PROMPT(unitprompt); else if (number > 1 && number < 5) PUSH_NUMBER_PROMPT(unitprompt+1); else PUSH_NUMBER_PROMPT(unitprompt+2); +#endif } I18N_PLAY_FUNCTION(cz, playNumber, getvalue_t number, uint8_t unit, uint8_t att) @@ -196,7 +206,7 @@ I18N_PLAY_FUNCTION(cz, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - CZ_PUSH_UNIT_PROMPT(tmp, (CZ_PROMPT_UNITS_BASE+((unit-1)*4))); + CZ_PUSH_UNIT_PROMPT(tmp, unit); } } @@ -210,17 +220,17 @@ I18N_PLAY_FUNCTION(cz, playDuration, int seconds PLAY_DURATION_ATT) uint8_t tmp = seconds / 3600; seconds %= 3600; if (tmp > 0 || IS_PLAY_TIME()) { - PLAY_NUMBER(tmp, UNIT_HOURS+1, ZENSKY); + PLAY_NUMBER(tmp, UNIT_HOURS, ZENSKY); } tmp = seconds / 60; seconds %= 60; if (tmp > 0) { - PLAY_NUMBER(tmp, UNIT_MINUTES+1, ZENSKY); + PLAY_NUMBER(tmp, UNIT_MINUTES, ZENSKY); } if (seconds > 0) { - PLAY_NUMBER(seconds, UNIT_SECONDS+1, ZENSKY); + PLAY_NUMBER(seconds, UNIT_SECONDS, ZENSKY); } } diff --git a/radio/src/translations/tts_de.cpp b/radio/src/translations/tts_de.cpp index fb45e59a0..569afe3fa 100644 --- a/radio/src/translations/tts_de.cpp +++ b/radio/src/translations/tts_de.cpp @@ -66,6 +66,21 @@ enum GermanPrompts { }; #if defined(VOICE) +#if defined(CPUARM) + #define DE_PUSH_UNIT_PROMPT(u) de_pushUnitPrompt((u), id) +#else + #define DE_PUSH_UNIT_PROMPT(u) pushUnitPrompt((u)) +#endif + +I18N_PLAY_FUNCTION(de, pushUnitPrompt, uint8_t unitprompt) +{ +#if defined(CPUARM) + PUSH_UNIT_PROMPT(unitprompt, 0); +#else + unitprompt = DE_PROMPT_UNITS_BASE + unitprompt*2 + PUSH_NUMBER_PROMPT(unitprompt); +#endif +} I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { @@ -145,7 +160,7 @@ I18N_PLAY_FUNCTION(de, playNumber, getvalue_t number, uint8_t unit, uint8_t att) PUSH_NUMBER_PROMPT(DE_PROMPT_NULL+number); if (unit) { - PUSH_NUMBER_PROMPT(DE_PROMPT_UNITS_BASE+unit); + DE_PUSH_UNIT_PROMPT(unit); } } @@ -160,8 +175,7 @@ I18N_PLAY_FUNCTION(de, playDuration, int seconds PLAY_DURATION_ATT) uint8_t tmp = seconds / 3600; seconds %= 3600; if (tmp > 0 || IS_PLAY_TIME()) { - PLAY_NUMBER(tmp, 0, 0); - PUSH_NUMBER_PROMPT(DE_PROMPT_UHR); + PLAY_NUMBER(tmp, UNIT_HOURS, 0); } tmp = seconds / 60; @@ -169,17 +183,29 @@ I18N_PLAY_FUNCTION(de, playDuration, int seconds PLAY_DURATION_ATT) if (tmp > 0 || ore >0) { PLAY_NUMBER(tmp, 0, 0); if (tmp != 1) { +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_MINUTES, 1); + } else { + PUSH_UNIT_PROMPT(UNIT_MINUTES, 0); +#else PUSH_NUMBER_PROMPT(DE_PROMPT_MINUTEN); } else { PUSH_NUMBER_PROMPT(DE_PROMPT_MINUTE); +#endif } PUSH_NUMBER_PROMPT(DE_PROMPT_UND); } PLAY_NUMBER(seconds, 0, 0); if (seconds != 1) { +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_SECONDS, 1); + } else { + PUSH_UNIT_PROMPT(UNIT_SECONDS, 0); +#else PUSH_NUMBER_PROMPT(DE_PROMPT_SECUNDEN); } else { PUSH_NUMBER_PROMPT(DE_PROMPT_SECUNDE); +#endif } } diff --git a/radio/src/translations/tts_en.cpp b/radio/src/translations/tts_en.cpp index 7957467e2..3c57417a4 100644 --- a/radio/src/translations/tts_en.cpp +++ b/radio/src/translations/tts_en.cpp @@ -58,10 +58,18 @@ enum EnglishPrompts { I18N_PLAY_FUNCTION(en, pushUnitPrompt, int16_t number, uint8_t unitprompt) { +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else + PUSH_UNIT_PROMPT(unitprompt, 1); +#else + unitprompt = EN_PROMPT_UNITS_BASE + unitprompt*2; if (number == 1) PUSH_NUMBER_PROMPT(unitprompt); else PUSH_NUMBER_PROMPT(unitprompt+1); +#endif } I18N_PLAY_FUNCTION(en, playNumber, getvalue_t number, uint8_t unit, uint8_t att) @@ -127,7 +135,7 @@ I18N_PLAY_FUNCTION(en, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - EN_PUSH_UNIT_PROMPT(tmp, EN_PROMPT_UNITS_BASE + unit*2); + EN_PUSH_UNIT_PROMPT(tmp, unit); } } diff --git a/radio/src/translations/tts_es.cpp b/radio/src/translations/tts_es.cpp index 9305b21e4..08d48fd19 100644 --- a/radio/src/translations/tts_es.cpp +++ b/radio/src/translations/tts_es.cpp @@ -90,6 +90,21 @@ enum SpanishPrompts { }; #if defined(VOICE) +#if defined(CPUARM) + #define ES_PUSH_UNIT_PROMPT(u) es_pushUnitPrompt((u), id) +#else + #define ES_PUSH_UNIT_PROMPT(u) pushUnitPrompt((u)) +#endif + +I18N_PLAY_FUNCTION(es, pushUnitPrompt, uint8_t unitprompt) +{ +#if defined(CPUARM) + PUSH_UNIT_PROMPT(unitprompt, 0); +#else + unitprompt = ES_PROMPT_UNITS_BASE + unitprompt*2; + PUSH_NUMBER_PROMPT(unitprompt); +#endif +} I18N_PLAY_FUNCTION(es, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { @@ -173,7 +188,7 @@ I18N_PLAY_FUNCTION(es, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - PUSH_NUMBER_PROMPT(ES_PROMPT_UNITS_BASE+unit-1); + ES_PUSH_UNIT_PROMPT(unit); } } @@ -191,11 +206,19 @@ I18N_PLAY_FUNCTION(es, playDuration, int seconds PLAY_DURATION_ATT) ore = tmp; if (tmp > 1) { PLAY_NUMBER(tmp, 0, 0); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_HOURS, 1); + } + else { + PUSH_NUMBER_PROMPT(ES_PROMPT_UNA); + PUSH_UNIT_PROMPT(UNIT_HOURS, 0); +#else PUSH_NUMBER_PROMPT(ES_PROMPT_HORAS); } else { PUSH_NUMBER_PROMPT(ES_PROMPT_UNA); PUSH_NUMBER_PROMPT(ES_PROMPT_HORA); +#endif } } @@ -204,20 +227,38 @@ I18N_PLAY_FUNCTION(es, playDuration, int seconds PLAY_DURATION_ATT) if (tmp > 0 || ore >0) { if (tmp != 1) { PLAY_NUMBER(tmp, 0, 0); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_MINUTES, 1); + } + else { + PUSH_NUMBER_PROMPT(ES_PROMPT_UNA); + PUSH_UNIT_PROMPT(UNIT_MINUTES, 0); +#else PUSH_NUMBER_PROMPT(ES_PROMPT_MINUTOS); - } else { + } + else { PUSH_NUMBER_PROMPT(ES_PROMPT_UN); PUSH_NUMBER_PROMPT(ES_PROMPT_MINUTO); +#endif } PUSH_NUMBER_PROMPT(ES_PROMPT_Y); } if (seconds != 1) { PLAY_NUMBER(seconds, 0, 0); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_SECONDS, 1); + } + else { + PUSH_NUMBER_PROMPT(ES_PROMPT_UNA); + PUSH_UNIT_PROMPT(UNIT_SECONDS, 0); +#else PUSH_NUMBER_PROMPT(ES_PROMPT_SEGUNDOS); - } else { - PUSH_NUMBER_PROMPT(ES_PROMPT_UN); - PUSH_NUMBER_PROMPT(ES_PROMPT_SEGUNDO); + } + else { + PUSH_NUMBER_PROMPT(ES_PROMPT_UN); + PUSH_NUMBER_PROMPT(ES_PROMPT_SEGUNDO); +#endif } } diff --git a/radio/src/translations/tts_fr.cpp b/radio/src/translations/tts_fr.cpp index 17ff28ce5..6906364c4 100644 --- a/radio/src/translations/tts_fr.cpp +++ b/radio/src/translations/tts_fr.cpp @@ -1,187 +1,200 @@ -/* - * Authors (alphabetical order) - * - Andre Bernet - * - Bertrand Songis - * - * opentx is based on code named - * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, - * er9x by Erez Raviv: http://code.google.com/p/er9x/, - * and the original (and ongoing) project by - * Thomas Husterer, th9x: http://code.google.com/p/th9x/ - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - */ - -#include "opentx.h" - -enum FrenchPrompts { - FR_PROMPT_NUMBERS_BASE = 0, - FR_PROMPT_ZERO = FR_PROMPT_NUMBERS_BASE+0, - FR_PROMPT_CENT = FR_PROMPT_NUMBERS_BASE+100, - FR_PROMPT_DEUX_CENT = FR_PROMPT_CENT+1, - FR_PROMPT_MILLE = FR_PROMPT_CENT+9, - - FR_PROMPT_UNE = 110, - FR_PROMPT_ONZE, - FR_PROMPT_VINGT_ET_UNE, - FR_PROMPT_TRENTE_ET_UNE, - FR_PROMPT_QUARANTE_ET_UNE, - FR_PROMPT_CINQUANTE_ET_UNE, - FR_PROMPT_SOIXANTE_ET_UNE, - FR_PROMPT_SOIXANTE_ET_ONZE, - FR_PROMPT_QUATRE_VINGT_UNE, - - FR_PROMPT_VIRGULE = 119, - FR_PROMPT_ET = 120, - FR_PROMPT_MOINS = 121, - FR_PROMPT_MINUIT = 122, - FR_PROMPT_MIDI = 123, - - FR_PROMPT_UNITS_BASE = 124, - FR_PROMPT_HEURE = FR_PROMPT_UNITS_BASE+UNIT_HOURS, - FR_PROMPT_MINUTE = FR_PROMPT_UNITS_BASE+UNIT_MINUTES, - FR_PROMPT_SECONDE = FR_PROMPT_UNITS_BASE+UNIT_SECONDS, - FR_PROMPT_VIRGULE_BASE = 180, //,0 - ,9 -}; - -#if defined(VOICE) - -#define FEMININ 0x80 - -I18N_PLAY_FUNCTION(fr, playNumber, getvalue_t number, uint8_t unit, uint8_t att) -{ -/* if digit >= 1000000000: - temp_digit, digit = divmod(digit, 1000000000) - prompts.extend(self.getNumberPrompt(temp_digit)) - prompts.append(Prompt(GUIDE_00_BILLION, dir=2)) - if digit >= 1000000: - temp_digit, digit = divmod(digit, 1000000) - prompts.extend(self.getNumberPrompt(temp_digit)) - prompts.append(Prompt(GUIDE_00_MILLION, dir=2)) -*/ - - if (number < 0) { - PUSH_NUMBER_PROMPT(FR_PROMPT_MOINS); - number = -number; - } - -#if !defined(CPUARM) - if (unit) { - unit--; - convertUnit(number, unit); - if (IS_IMPERIAL_ENABLE()) { - if (unit == UNIT_DIST) { - unit = UNIT_FEET; - } - if (unit == UNIT_SPEED) { - unit = UNIT_KTS; - } - } - unit++; - } -#endif - - int8_t mode = MODE(att); - if (mode > 0) { -#if defined(CPUARM) - if (mode == 2) { - number /= 10; - } -#else - // we assume that we are PREC1 -#endif - div_t qr = div(number, 10); - if (qr.rem) { - PLAY_NUMBER(qr.quot, 0, 0); - PUSH_NUMBER_PROMPT(FR_PROMPT_VIRGULE_BASE + qr.rem); - number = -1; - } - else { - number = qr.quot; - } - } - - if (number >= 1000) { - if (number >= 2000) - PLAY_NUMBER(number / 1000, 0, 0); - PUSH_NUMBER_PROMPT(FR_PROMPT_MILLE); - number %= 1000; - if (number == 0) - number = -1; - } - if (number >= 100) { - if (number >= 200) - PUSH_NUMBER_PROMPT(FR_PROMPT_ZERO + number/100); - PUSH_NUMBER_PROMPT(FR_PROMPT_CENT); - number %= 100; - if (number == 0) - number = -1; - } - if (((number % 10) == 1) && number < 90 && (att & FEMININ)) { - PUSH_NUMBER_PROMPT(FR_PROMPT_UNE+(number/10)); - } - else if (number >= 0) { - PUSH_NUMBER_PROMPT(FR_PROMPT_ZERO+number); - } - - if (unit) { - PUSH_NUMBER_PROMPT(FR_PROMPT_UNITS_BASE+unit); - } -} - -I18N_PLAY_FUNCTION(fr, playDuration, int seconds PLAY_DURATION_ATT) -{ - if (seconds == 0) { - PLAY_NUMBER(0, 0, FEMININ); - return; - } - - if (seconds < 0) { - PUSH_NUMBER_PROMPT(FR_PROMPT_MOINS); - seconds = -seconds; - } - - uint8_t tmp = seconds / 3600; - seconds %= 3600; - if (IS_PLAY_TIME() && tmp==0) { - PUSH_NUMBER_PROMPT(FR_PROMPT_MINUIT); - } - else if (IS_PLAY_TIME() && tmp==12) { - PUSH_NUMBER_PROMPT(FR_PROMPT_MIDI); - } - else if (tmp > 0) { - PLAY_NUMBER(tmp, 0, FEMININ); - PUSH_NUMBER_PROMPT(FR_PROMPT_HEURE); - } - - tmp = seconds / 60; - seconds %= 60; - if (tmp > 0) { - if (IS_PLAY_TIME()) { - PLAY_NUMBER(tmp, 0, tmp==1 ? FEMININ : 0); - } - else { - PLAY_NUMBER(tmp, 0, FEMININ); - PUSH_NUMBER_PROMPT(FR_PROMPT_MINUTE); - if (seconds > 0) - PUSH_NUMBER_PROMPT(FR_PROMPT_ET); - } - } - - if (!IS_PLAY_TIME() && seconds > 0) { - PLAY_NUMBER(seconds, 0, FEMININ); - PUSH_NUMBER_PROMPT(FR_PROMPT_SECONDE); - } -} - -LANGUAGE_PACK_DECLARE(fr, "Francais"); - -#endif +/* + * Authors (alphabetical order) + * - Andre Bernet + * - Bertrand Songis + * + * opentx is based on code named + * gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/, + * er9x by Erez Raviv: http://code.google.com/p/er9x/, + * and the original (and ongoing) project by + * Thomas Husterer, th9x: http://code.google.com/p/th9x/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + */ + +#include "opentx.h" + +enum FrenchPrompts { + FR_PROMPT_NUMBERS_BASE = 0, + FR_PROMPT_ZERO = FR_PROMPT_NUMBERS_BASE+0, + FR_PROMPT_CENT = FR_PROMPT_NUMBERS_BASE+100, + FR_PROMPT_DEUX_CENT = FR_PROMPT_CENT+1, + FR_PROMPT_MILLE = FR_PROMPT_CENT+9, + + FR_PROMPT_UNE = 110, + FR_PROMPT_ONZE, + FR_PROMPT_VINGT_ET_UNE, + FR_PROMPT_TRENTE_ET_UNE, + FR_PROMPT_QUARANTE_ET_UNE, + FR_PROMPT_CINQUANTE_ET_UNE, + FR_PROMPT_SOIXANTE_ET_UNE, + FR_PROMPT_SOIXANTE_ET_ONZE, + FR_PROMPT_QUATRE_VINGT_UNE, + + FR_PROMPT_VIRGULE = 119, + FR_PROMPT_ET = 120, + FR_PROMPT_MOINS = 121, + FR_PROMPT_MINUIT = 122, + FR_PROMPT_MIDI = 123, + + FR_PROMPT_UNITS_BASE = 124, + FR_PROMPT_HEURE = FR_PROMPT_UNITS_BASE+UNIT_HOURS, + FR_PROMPT_MINUTE = FR_PROMPT_UNITS_BASE+UNIT_MINUTES, + FR_PROMPT_SECONDE = FR_PROMPT_UNITS_BASE+UNIT_SECONDS, + FR_PROMPT_VIRGULE_BASE = 180, //,0 - ,9 +}; + +#if defined(VOICE) + +#if defined(CPUARM) + #define FR_PUSH_UNIT_PROMPT(u) fr_pushUnitPrompt((u), id) +#else + #define FR_PUSH_UNIT_PROMPT(u) pushUnitPrompt((u)) +#endif + +I18N_PLAY_FUNCTION(fr, pushUnitPrompt, uint8_t unitprompt) +{ +#if defined(CPUARM) + PUSH_UNIT_PROMPT(unitprompt, 0); +#else + unitprompt = FR_PROMPT_UNITS_BASE + unitprompt*2; + PUSH_NUMBER_PROMPT(unitprompt); +#endif +} + +#define FEMININ 0x80 + +I18N_PLAY_FUNCTION(fr, playNumber, getvalue_t number, uint8_t unit, uint8_t att) +{ +/* if digit >= 1000000000: + temp_digit, digit = divmod(digit, 1000000000) + prompts.extend(self.getNumberPrompt(temp_digit)) + prompts.append(Prompt(GUIDE_00_BILLION, dir=2)) + if digit >= 1000000: + temp_digit, digit = divmod(digit, 1000000) + prompts.extend(self.getNumberPrompt(temp_digit)) + prompts.append(Prompt(GUIDE_00_MILLION, dir=2)) +*/ + + if (number < 0) { + PUSH_NUMBER_PROMPT(FR_PROMPT_MOINS); + number = -number; + } + +#if !defined(CPUARM) + if (unit) { + unit--; + convertUnit(number, unit); + if (IS_IMPERIAL_ENABLE()) { + if (unit == UNIT_DIST) { + unit = UNIT_FEET; + } + if (unit == UNIT_SPEED) { + unit = UNIT_KTS; + } + } + unit++; + } +#endif + + int8_t mode = MODE(att); + if (mode > 0) { +#if defined(CPUARM) + if (mode == 2) { + number /= 10; + } +#else + // we assume that we are PREC1 +#endif + div_t qr = div(number, 10); + if (qr.rem) { + PLAY_NUMBER(qr.quot, 0, 0); + PUSH_NUMBER_PROMPT(FR_PROMPT_VIRGULE_BASE + qr.rem); + number = -1; + } + else { + number = qr.quot; + } + } + + if (number >= 1000) { + if (number >= 2000) + PLAY_NUMBER(number / 1000, 0, 0); + PUSH_NUMBER_PROMPT(FR_PROMPT_MILLE); + number %= 1000; + if (number == 0) + number = -1; + } + if (number >= 100) { + if (number >= 200) + PUSH_NUMBER_PROMPT(FR_PROMPT_ZERO + number/100); + PUSH_NUMBER_PROMPT(FR_PROMPT_CENT); + number %= 100; + if (number == 0) + number = -1; + } + if (((number % 10) == 1) && number < 90 && (att & FEMININ)) { + PUSH_NUMBER_PROMPT(FR_PROMPT_UNE+(number/10)); + } + else if (number >= 0) { + PUSH_NUMBER_PROMPT(FR_PROMPT_ZERO+number); + } + + if (unit) { + FR_PUSH_UNIT_PROMPT(unit); + } +} + +I18N_PLAY_FUNCTION(fr, playDuration, int seconds PLAY_DURATION_ATT) +{ + if (seconds == 0) { + PLAY_NUMBER(0, 0, FEMININ); + return; + } + + if (seconds < 0) { + PUSH_NUMBER_PROMPT(FR_PROMPT_MOINS); + seconds = -seconds; + } + + uint8_t tmp = seconds / 3600; + seconds %= 3600; + if (IS_PLAY_TIME() && tmp==0) { + PUSH_NUMBER_PROMPT(FR_PROMPT_MINUIT); + } + else if (IS_PLAY_TIME() && tmp==12) { + PUSH_NUMBER_PROMPT(FR_PROMPT_MIDI); + } + else if (tmp > 0) { + PLAY_NUMBER(tmp, UNIT_HOURS, FEMININ); + } + + tmp = seconds / 60; + seconds %= 60; + if (tmp > 0) { + if (IS_PLAY_TIME()) { + PLAY_NUMBER(tmp, 0, tmp==1 ? FEMININ : 0); + } + else { + PLAY_NUMBER(tmp, UNIT_MINUTES, FEMININ); + if (seconds > 0) + PUSH_NUMBER_PROMPT(FR_PROMPT_ET); + } + } + + if (!IS_PLAY_TIME() && seconds > 0) { + PLAY_NUMBER(seconds, UNIT_SECONDS, FEMININ); + } +} + +LANGUAGE_PACK_DECLARE(fr, "Francais"); + +#endif diff --git a/radio/src/translations/tts_hu.cpp b/radio/src/translations/tts_hu.cpp index e775300ae..198d55a35 100644 --- a/radio/src/translations/tts_hu.cpp +++ b/radio/src/translations/tts_hu.cpp @@ -58,10 +58,18 @@ enum HungarianPrompts { I18N_PLAY_FUNCTION(hu, pushUnitPrompt, int16_t number, uint8_t unitprompt) { +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else + PUSH_UNIT_PROMPT(unitprompt, 1); +#else + unitprompt = HU_PROMPT_UNITS_BASE + unitprompt*2; if (number == 1) PUSH_NUMBER_PROMPT(unitprompt); else PUSH_NUMBER_PROMPT(unitprompt+1); +#endif } I18N_PLAY_FUNCTION(hu, playNumber, getvalue_t number, uint8_t unit, uint8_t att) @@ -127,7 +135,7 @@ I18N_PLAY_FUNCTION(hu, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - HU_PUSH_UNIT_PROMPT(tmp, HU_PROMPT_UNITS_BASE + unit*2); + HU_PUSH_UNIT_PROMPT(tmp, unit); } } diff --git a/radio/src/translations/tts_it.cpp b/radio/src/translations/tts_it.cpp index 84c823cdb..1709b0771 100644 --- a/radio/src/translations/tts_it.cpp +++ b/radio/src/translations/tts_it.cpp @@ -62,6 +62,28 @@ enum ItalianPrompts { }; #if defined(VOICE) +#if defined(CPUARM) + #define IT_PUSH_UNIT_PROMPT(p, u) it_pushUnitPrompt((p), (u), id) +#else + #define IT_PUSH_UNIT_PROMPT(p, u) pushUnitPrompt((p), (u)) +#endif + +I18N_PLAY_FUNCTION(it, pushUnitPrompt, int16_t number, uint8_t unitprompt) +{ +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else + PUSH_UNIT_PROMPT(unitprompt, 1); +#else + unitprompt = IT_PROMPT_UNITS_BASE + unitprompt*2; + if (number == 1) + PUSH_NUMBER_PROMPT(unitprompt); + else + PUSH_NUMBER_PROMPT(unitprompt+1); +#endif +} + I18N_PLAY_FUNCTION(it, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { @@ -151,11 +173,7 @@ I18N_PLAY_FUNCTION(it, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } } if (unit) { - if (orignumber == 1) { - PUSH_NUMBER_PROMPT(IT_PROMPT_UNITS_BASE+(unit*2)); - } else { - PUSH_NUMBER_PROMPT(IT_PROMPT_UNITS_BASE+(unit*2)+1); - } + IT_PUSH_UNIT_PROMPT(orignumber, unit); } } @@ -172,11 +190,15 @@ I18N_PLAY_FUNCTION(it, playDuration, int seconds PLAY_DURATION_ATT) if (tmp > 0) { ore=tmp; if (tmp > 1 || IS_PLAY_TIME()) { +#if defined(CPUARM) + PLAY_NUMBER(tmp, UNIT_HOURS, 0); +#else PLAY_NUMBER(tmp, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_ORE); } else { PUSH_NUMBER_PROMPT(IT_PROMPT_UN); PUSH_NUMBER_PROMPT(IT_PROMPT_ORA); +#endif } } if (seconds>0) { @@ -187,11 +209,15 @@ I18N_PLAY_FUNCTION(it, playDuration, int seconds PLAY_DURATION_ATT) } if (tmp > 0) { if (tmp != 1) { +#if defined(CPUARM) + PLAY_NUMBER(tmp, UNIT_MINUTES, 0); +#else PLAY_NUMBER(tmp, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_MINUTI); } else { PUSH_NUMBER_PROMPT(IT_PROMPT_UN); PUSH_NUMBER_PROMPT(IT_PROMPT_MINUTO); +#endif } } if ((tmp>0 || ore>0) && seconds>0) { @@ -200,11 +226,15 @@ I18N_PLAY_FUNCTION(it, playDuration, int seconds PLAY_DURATION_ATT) } if (seconds != 0 || (ore==0 && tmp==0)) { if (seconds != 1) { +#if defined(CPUARM) + PLAY_NUMBER(tmp, UNIT_SECONDS, 0); +#else PLAY_NUMBER(seconds, 0, 0); PUSH_NUMBER_PROMPT(IT_PROMPT_SECONDI); } else { PUSH_NUMBER_PROMPT(IT_PROMPT_UN); PUSH_NUMBER_PROMPT(IT_PROMPT_SECONDO); +#endif } } } diff --git a/radio/src/translations/tts_nl.cpp b/radio/src/translations/tts_nl.cpp index 532807dab..3e3cd7b3d 100644 --- a/radio/src/translations/tts_nl.cpp +++ b/radio/src/translations/tts_nl.cpp @@ -37,70 +37,30 @@ enum DutchPrompts { #if defined(VOICE) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - #if defined(CPUARM) #define NL_PUSH_UNIT_PROMPT(p, u) en_pushUnitPrompt((p), (u), id) #else #define NL_PUSH_UNIT_PROMPT(p, u) pushUnitPrompt((p), (u)) - - - #endif I18N_PLAY_FUNCTION(nl, pushUnitPrompt, int16_t number, uint8_t unitprompt) { +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else + PUSH_UNIT_PROMPT(unitprompt, 1); +#else + unitprompt = NL_PROMPT_UNITS_BASE + unitprompt*2; if (number == 1) PUSH_NUMBER_PROMPT(unitprompt); else PUSH_NUMBER_PROMPT(unitprompt+1); +#endif } - - - I18N_PLAY_FUNCTION(nl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { - - - - - - - - - - if (number < 0) { PUSH_NUMBER_PROMPT(NL_PROMPT_MINUS); number = -number; @@ -136,24 +96,16 @@ I18N_PLAY_FUNCTION(nl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) PLAY_NUMBER(qr.quot, 0, 0); PUSH_NUMBER_PROMPT(NL_PROMPT_POINT_BASE + qr.rem); number = -1; - - - } else { number = qr.quot; - } - } int16_t tmp = number; if (number >= 1000) { - PLAY_NUMBER(number / 1000, 0, 0); - - PUSH_NUMBER_PROMPT(NL_PROMPT_THOUSAND); number %= 1000; @@ -161,9 +113,7 @@ I18N_PLAY_FUNCTION(nl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) number = -1; } if (number >= 100) { - PUSH_NUMBER_PROMPT(NL_PROMPT_HUNDRED + (number/100)-1); - number %= 100; if (number == 0) number = -1; @@ -172,9 +122,8 @@ I18N_PLAY_FUNCTION(nl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) PUSH_NUMBER_PROMPT(NL_PROMPT_ZERO + number); } - if (unit) { - NL_PUSH_UNIT_PROMPT(tmp, NL_PROMPT_UNITS_BASE + unit*2); + NL_PUSH_UNIT_PROMPT(tmp, unit); } } @@ -190,12 +139,10 @@ I18N_PLAY_FUNCTION(nl, playDuration, int seconds PLAY_DURATION_ATT) seconds = -seconds; } - uint8_t tmp = seconds / 3600; seconds %= 3600; if (tmp > 0 || IS_PLAY_TIME()) { PLAY_NUMBER(tmp, UNIT_HOURS, 0); - } tmp = seconds / 60; @@ -203,20 +150,10 @@ I18N_PLAY_FUNCTION(nl, playDuration, int seconds PLAY_DURATION_ATT) if (tmp > 0) { PLAY_NUMBER(tmp, UNIT_MINUTES, 0); if (seconds > 0) - PUSH_NUMBER_PROMPT(NL_PROMPT_AND); - - - - } - - if (seconds > 0) { PLAY_NUMBER(seconds, UNIT_SECONDS, 0); - - - } } diff --git a/radio/src/translations/tts_pl.cpp b/radio/src/translations/tts_pl.cpp index 49c4e439c..eb0acb5b6 100644 --- a/radio/src/translations/tts_pl.cpp +++ b/radio/src/translations/tts_pl.cpp @@ -79,6 +79,23 @@ enum PolishPrompts { I18N_PLAY_FUNCTION(pl, pushUnitPrompt, int16_t number, uint8_t unitprompt) { +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else if (number > 1 && number < 5) + PUSH_UNIT_PROMPT(unitprompt, 1); + else { + int test_2 =0; + test_2 =number % 10; + int ten=0; + ten=(number - (number % 10))/10; + if ((test_2 > 1 && test_2 < 5) && ten >=2) + PUSH_UNIT_PROMPT(unitprompt, 1); + else + PUSH_UNIT_PROMPT(unitprompt, 2); + } +#else + unitprompt = PL_PROMPT_UNITS_BASE + unitprompt*4; if (number == 1) PUSH_NUMBER_PROMPT(unitprompt); else if (number > 1 && number < 5) @@ -93,6 +110,7 @@ I18N_PLAY_FUNCTION(pl, pushUnitPrompt, int16_t number, uint8_t unitprompt) else PUSH_NUMBER_PROMPT(unitprompt+2); } +#endif } I18N_PLAY_FUNCTION(pl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) @@ -190,10 +208,6 @@ I18N_PLAY_FUNCTION(pl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) number = -1; } - - - - if (number >= 1000) { if (number >= 2000) PLAY_NUMBER(number / 1000, 0, 0); @@ -229,7 +243,7 @@ I18N_PLAY_FUNCTION(pl, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - PL_PUSH_UNIT_PROMPT(tmp, (PL_PROMPT_UNITS_BASE+((unit-1)*4))); + PL_PUSH_UNIT_PROMPT(tmp, unit); } } diff --git a/radio/src/translations/tts_pt.cpp b/radio/src/translations/tts_pt.cpp index 90db9508f..e5c9e3ed2 100644 --- a/radio/src/translations/tts_pt.cpp +++ b/radio/src/translations/tts_pt.cpp @@ -85,6 +85,22 @@ enum PortuguesePrompts { #if defined(VOICE) +#if defined(CPUARM) + #define PT_PUSH_UNIT_PROMPT(u) pt_pushUnitPrompt((u), id) +#else + #define PT_PUSH_UNIT_PROMPT(u) pushUnitPrompt((u)) +#endif + +I18N_PLAY_FUNCTION(pt, pushUnitPrompt, uint8_t unitprompt) +{ +#if defined(CPUARM) + PUSH_UNIT_PROMPT(unitprompt, 0); +#else + unitprompt = PT_PROMPT_UNITS_BASE + unitprompt*2; + PUSH_NUMBER_PROMPT(unitprompt); +#endif +} + I18N_PLAY_FUNCTION(pt, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { @@ -151,7 +167,7 @@ I18N_PLAY_FUNCTION(pt, playNumber, getvalue_t number, uint8_t unit, uint8_t att) PUSH_NUMBER_PROMPT(PT_PROMPT_ZERO+number); if (unit) { - PUSH_NUMBER_PROMPT(PT_PROMPT_UNITS_BASE+unit-1); + PT_PUSH_UNIT_PROMPT(unit); } } @@ -169,13 +185,25 @@ I18N_PLAY_FUNCTION(pt, playDuration, int seconds PLAY_DURATION_ATT) ore=tmp; if (tmp > 2) { PLAY_NUMBER(tmp, 0, 0); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_HOURS, 1); +#else PUSH_NUMBER_PROMPT(PT_PROMPT_HORAS); +#endif } else if (tmp==2) { PUSH_NUMBER_PROMPT(PT_PROMPT_DUAS); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_HOURS, 1); +#else PUSH_NUMBER_PROMPT(PT_PROMPT_HORAS); - } else if (tmp==1) { +#endif + } else if (tmp==1) { PUSH_NUMBER_PROMPT(PT_PROMPT_UMA); - PUSH_NUMBER_PROMPT(PT_PROMPT_HORA); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_HOURS, 0); +#else + PUSH_NUMBER_PROMPT(PT_PROMPT_HORAS); +#endif } } @@ -184,20 +212,36 @@ I18N_PLAY_FUNCTION(pt, playDuration, int seconds PLAY_DURATION_ATT) if (tmp > 0 || ore >0) { if (tmp != 1) { PLAY_NUMBER(tmp, 0, 0); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_MINUTES, 1); +#else PUSH_NUMBER_PROMPT(PT_PROMPT_MINUTOS); +#endif } else { PUSH_NUMBER_PROMPT(PT_PROMPT_NUMBERS_BASE+1); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_MINUTES, 0); +#else PUSH_NUMBER_PROMPT(PT_PROMPT_MINUTO); +#endif } PUSH_NUMBER_PROMPT(PT_PROMPT_E); } if (seconds != 1) { PLAY_NUMBER(seconds, 0, 0); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_SECONDS, 1); +#else PUSH_NUMBER_PROMPT(PT_PROMPT_SEGUNDOS); +#endif } else { PUSH_NUMBER_PROMPT(PT_PROMPT_NUMBERS_BASE+1); +#if defined(CPUARM) + PUSH_UNIT_PROMPT(UNIT_SECONDS, 0); +#else PUSH_NUMBER_PROMPT(PT_PROMPT_SEGUNDO); +#endif } } diff --git a/radio/src/translations/tts_se.cpp b/radio/src/translations/tts_se.cpp index 8e91c2dff..e49e24a00 100644 --- a/radio/src/translations/tts_se.cpp +++ b/radio/src/translations/tts_se.cpp @@ -51,6 +51,28 @@ enum SwedishPrompts { #if defined(VOICE) +#if defined(CPUARM) + #define SE_PUSH_UNIT_PROMPT(p, u) se_pushUnitPrompt((p), (u), id) +#else + #define SE_PUSH_UNIT_PROMPT(p, u) pushUnitPrompt((p), (u)) +#endif + +I18N_PLAY_FUNCTION(se, pushUnitPrompt, int16_t number, uint8_t unitprompt) +{ +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else + PUSH_UNIT_PROMPT(unitprompt, 1); +#else + unitprompt = SE_PROMPT_UNITS_BASE + unitprompt*2; + if (number == 1) + PUSH_NUMBER_PROMPT(unitprompt); + else + PUSH_NUMBER_PROMPT(unitprompt+1); +#endif +} + I18N_PLAY_FUNCTION(se, playNumber, getvalue_t number, uint8_t unit, uint8_t att) { if (number < 0) { @@ -114,10 +136,7 @@ I18N_PLAY_FUNCTION(se, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - if (tmpNumber == 1 ) - PUSH_NUMBER_PROMPT(SE_PROMPT_UNITS_BASE+unit*2); // Singular prompts - else - PUSH_NUMBER_PROMPT(SE_PROMPT_UNITS_BASE+unit*2+1); // Plural prompts + SE_PUSH_UNIT_PROMPT(tmpNumber, unit); } } diff --git a/radio/src/translations/tts_sk.cpp b/radio/src/translations/tts_sk.cpp index 1f48c2df3..1952b0d04 100644 --- a/radio/src/translations/tts_sk.cpp +++ b/radio/src/translations/tts_sk.cpp @@ -69,12 +69,22 @@ enum SlovakPrompts { I18N_PLAY_FUNCTION(sk, pushUnitPrompt, int16_t number, uint8_t unitprompt) { +#if defined(CPUARM) + if (number == 1) + PUSH_UNIT_PROMPT(unitprompt, 0); + else if (number > 1 && number < 5) + PUSH_UNIT_PROMPT(unitprompt, 1); + else + PUSH_UNIT_PROMPT(unitprompt, 2); +#else + unitprompt = SK_PROMPT_UNITS_BASE + unitprompt*4; if (number == 1) PUSH_NUMBER_PROMPT(unitprompt); else if (number > 1 && number < 5) PUSH_NUMBER_PROMPT(unitprompt+1); else PUSH_NUMBER_PROMPT(unitprompt+2); +#endif } I18N_PLAY_FUNCTION(sk, playNumber, getvalue_t number, uint8_t unit, uint8_t att) @@ -214,7 +224,7 @@ I18N_PLAY_FUNCTION(sk, playNumber, getvalue_t number, uint8_t unit, uint8_t att) } if (unit) { - SK_PUSH_UNIT_PROMPT(tmp, (SK_PROMPT_UNITS_BASE+((unit-1)*4))); + SK_PUSH_UNIT_PROMPT(tmp, unit); } } @@ -228,17 +238,17 @@ I18N_PLAY_FUNCTION(sk, playDuration, int seconds PLAY_DURATION_ATT) uint8_t tmp = seconds / 3600; seconds %= 3600; if (tmp > 0 || IS_PLAY_TIME()) { - PLAY_NUMBER(tmp, UNIT_HOURS+1, ZENSKY); + PLAY_NUMBER(tmp, UNIT_HOURS, ZENSKY); } tmp = seconds / 60; seconds %= 60; if (tmp > 0) { - PLAY_NUMBER(tmp, UNIT_MINUTES+1, ZENSKY); + PLAY_NUMBER(tmp, UNIT_MINUTES, ZENSKY); } if (seconds > 0) { - PLAY_NUMBER(seconds, UNIT_SECONDS+1, ZENSKY); + PLAY_NUMBER(seconds, UNIT_SECONDS, ZENSKY); } } diff --git a/radio/util/tts_cz.py b/radio/util/tts_cz.py index 459831e71..a1fe100d6 100755 --- a/radio/util/tts_cz.py +++ b/radio/util/tts_cz.py @@ -17,36 +17,34 @@ for i, s in enumerate(["sto", u"dvěsta", u"třista", u"čtyřista", u"pětset", systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 100 + i))) for i, s in enumerate([u"tisíce", "jeden", "jedno", u"dvě", u"celá", u"celé", u"celých", u"mínus"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 110 + i))) - -for i, s in enumerate(["volt", "volty", u"voltů", "voltu", - u"ampér", u"ampéry", u"ampérů", u"ampéru", - u"miliampér", u"miliampéry", u"miliampérů", u"miliampéru", - u"uzel", u"uzly", u"uzlů", u"uzlu", - "metr za sekundu", "metry za sekundu", u"metrů za sekundu", "metru za sekundu", - "stopa za sekundu", "stopy za sekundu", "stop za sekundu", "stopy za sekundu", - "kilometr za hodinu", "kilometry za hodinu", u"kilometrů za hodinu", "kilometru za hodinu", - u"míle za hodinu", u"míle za hodinu", u"mil za hodinu", u"míle za hodinu", - "metr", "metry", u"metrů", "metru", - "stopa", "stopy", "stop", "stopy", - u"stupeň celsia", u"stupně celsia", u"stupňů celsia", u"stupně celsia", - u"stupeň fahrenheita", u"stupně fahrenheita", u"stupňů fahrenheita", u"stupně fahrenheita", - "procento", "procenta", "procent", "procenta", - u"miliampérhodina", u"miliampérhodiny", u"miliampérhodin", u"miliampérhodiny", - "vat", "vaty", u"vatů", "vatu", - "milivat", "milivaty", u"milivatů", "milivatu", - "decibel", "decibely", u"decibelů", "decibelu", - u"otáčka za minutu", u"otáčky za minutu", u"otáček za minutu", u"otáčky za minutu", - u"gé", u"gé", u"gé", u"gé" - u"stupeň", u"stupně", u"stupňů", u"stupně", - u"", u"", u"", u"", - u"mililitr", u"mililitry", u"mililitrů", "mililitru", - u"dutá unce", u"duté unce", u"dutých uncí", u"duté unce", - "hodina", "hodiny", "hodin", "hodiny", - "minuta", "minuty", "minut", "minuty", - "sekunda", "sekundy", "sekund", "sekundy", - ]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 118 + i))) - +for i, (s, f) in enumerate([(u"volt", u"volt0"), (u"volty", u"volt1"), (u"voltů", u"volt2"),(u"voltu", u"volt3"), + (u"ampér", "amp0"), (u"ampéry", u"amp1"), (u"ampérů", u"amp2"), (u"ampéru", u"amp3"), + (u"miliampér", "mamp0"), (u"miliampéry", u"mamp1"), (u"miliampérů", u"mamp2"), (u"miliampéru", u"mamp3"), + (u"uzel", "knot0"), (u"uzly", u"knot1"), (u"uzlů", u"knot2"), (u"uzlu", u"knot3"), + (u"metr za sekundu", "mps0"), (u"metry za sekundu", u"mps1"), (u"metrů za sekundu", u"mps2"), (u"metru za sekundu", u"mps3"), + (u"stopa za sekundu", "fps0"), (u"stopy za sekundu", u"fps1"), (u"stop za sekundu", u"fps2"), (u"stopy za sekundu", u"fps3"), + (u"kilometr za hodinu", "kph0"), (u"kilometry za hodinu", u"kph1"), (u"kilometrů za hodinu", u"kph2"), (u"kilometru za hodinu", u"kph3"), + (u"míle za hodinu", "mph0"), (u"míle za hodinu", u"mph1"), (u"mil za hodinu", u"mph2"), (u"míle za hodinu", u"mph3"), + (u"metr", "meter0"), (u"metry", u"meter1"), (u"metrů", u"meter2"), (u"metru", u"meter3"), + (u"stopa", "foot0"), (u"stopy", u"foot1"), (u"stop", u"foot2"),(u"stopy", u"foot3"), + (u"stupeň celsia", "celsius0"), (u"stupně celsia", u"celsius1"), (u"stupňů celsia", u"celsius2"), (u"stupně celsia", u"celsius3"), + (u"stupeň fahrenheita", "fahr0"), (u"stupně fahrenheita", u"fahr1"), (u"stupňů fahrenheita", u"fahr2"), (u"stupně fahrenheita", u"fahr3"), + (u"procento", "percent0"), (u"procenta", u"percent1"), (u"procent", u"percent2"), (u"procenta", u"percent3"), + (u"miliampérhodina", "mamph0"), (u"miliampérhodiny", u"mamph1"), (u"miliampérhodin", u"mamph2"), (u"miliampérhodiny", u"mamph3"), + (u"vat", "watt0"), (u"vaty", u"watt1"), (u"vatů", u"watt2"), (u"vatu", u"watt3"), + (u"milivat", "mwatt0"), (u"milivaty", u"mwatt1"), (u"milivatů", u"mwatt2"), (u"milivatu", u"mwatt3"), + (u"decibel", "db0"), (u"decibely", u"db1"), (u"decibelů", u"db2"), (u"decibelu", u"db3"), + (u"otáčka za minutu", "rpm0"), (u"otáčky za minutu", u"rpm1"), (u"otáček za minutu", u"rpm2"), (u"otáčky za minutu", u"rpm3"), + (u"gé", "g0"), (u"gé", "g1"), (u"gé", "g2"), (u"gé", "g3"), + (u"stupeň", "degree0"), (u"stupně", u"degree1"), (u"stupňů", u"degree2"), (u"stupně", u"degree3"), + (u"radián", "rad0"), (u"radiány", "rad1"), (u"radiánů", "rad2"), (u"radiánu", "rad3"), + (u"mililitr", "ml0"), (u"mililitry", u"ml1"), (u"mililitrů", u"ml2"), (u"mililitru", u"ml3"), + (u"dutá unce", "founce0"), (u"duté unce", u"founce1"), (u"dutých uncí", u"founce2"), (u"duté unce", u"founce3"), + (u"hodina", "hour0"), (u"hodiny", u"hour1"), (u"hodin", u"hour2"), (u"hodiny", u"hour3"), + (u"minuta", "minute0"), (u"minuty", u"minute1"), (u"minut", u"minute2"), (u"minuty", u"minute3"), + (u"sekunda", "second0"), (u"sekundy", u"second1"), (u"sekund", u"second2"), (u"sekundy", u"second3"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 118 + i))) for s, f, a in [(u"střed trimu", "midtrim", 495), (u"maximum trimu", "endtrim", NO_ALTERNATE), (u"baterie rádia je vybitá", "lowbatt", 485), diff --git a/radio/util/tts_de.py b/radio/util/tts_de.py index d9533b628..30e414239 100755 --- a/radio/util/tts_de.py +++ b/radio/util/tts_de.py @@ -13,13 +13,34 @@ for i in range(101): systemSounds.append(("tausend", filename(PROMPT_SYSTEM_BASE + 101))) for i, s in enumerate(["comma", "und", "minus", "uhr", "minute", "minuten", "sekunde", "sekunden"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 102 + i))) -for i, s in enumerate(["", "Volt", "Ampere", "MilliAmpere", "Knoten", - "Meter pro sekunde", "Fuesse pro sekunde", - "kilometer pro stunde", "Meilen pro Stunde", "Meter", - "Fuesse", "Grad", "Grad Fahrenheit", "Prozent", - "Milliampere pro stunde", "Watt", "Milli Watt", "db", "R P M", "g", "degree", "radians", - "Milliliter", "Unze", "Uhr", "Minuten", "Secunden"]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 110 + i))) +for i, (s, f) in enumerate([(u"Volt","volt0"), + (u"Ampere", "amp0"), + (u"MilliAmpere", "mamp0"), + (u"Knoten", "knot0"), + (u"Meter pro sekunde", "mps0"), + (u"Fuesse pro sekunde", "fps0"), + (u"kilometer pro stunde", "kph0"), + (u"Meilen pro Stunde", "mph0"), + (u"Meter", "meter0"), + (u"Fuesse", "foot0"), + (u"Grad", "celsius0"), + (u"Grad Fahrenheit", "fahr0"), + (u"Prozent", "percent0"), + (u"mMilliampere pro stunde", "mamps0"), + (u"Watt", "watt0"), + (u"Milli Watt", "mwatt0"), + (u"db", "db0"), + (u"R P M", "rpm0"), + (u"g", "g0"), + (u"degree", "degree0"), + (u"radians", "rad0"), + (u"Milliliter", "ml0"), + (u"Unze", "founce0"), + (u"Uhr", "hour0"), + (u"Minuten", "minute0"), + (u"Secunden", "second0"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 110 + i))) for s, f, a in [(u"Sender ist inaktiv,bitte Ueberpruefen Sie", "inactiv", 486), (u"Senderakku niedrig", "lowbatt", 485), (u"Gaskanal nicht Null, bitte pruefen", "thralert", 481), diff --git a/radio/util/tts_en.py b/radio/util/tts_en.py index b4858e9be..708fd946c 100755 --- a/radio/util/tts_en.py +++ b/radio/util/tts_en.py @@ -14,34 +14,34 @@ for i in range(9): systemSounds.append((str(100 * (i + 1)), filename(PROMPT_SYSTEM_BASE + 100 + i))) for i, s in enumerate(["thousand", "and", "minus", "point"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 109 + i))) -for i, s in enumerate(["volt", "volts", - "amp", "amps", - "milliamp", "milliamps", - "knot", "knots", - "meter per second", "meters per second", - "foot per second", "feet per second", - "kilometer per hour", "kilometers per hour", - "mile per hour", "miles per hour", - "meter", "meters", - "foot", "feet", - "degree celsius", "degrees celsius", - "degree fahrenheit", "degrees fahrenheit", - "percent", "percent", - "milliamp-hour", "milliamp-hours", - "watt", "watts", - "milli-watt", "milli-watts", - "db", "db", - "r p m", "r p m", - "g", "g", - "degree", "degrees", - "radian", "radians", - "milliliter", "milliliters", - "fluid ounce", "fluid ounces", - "hour", "hours", - "minute", "minutes", - "second", "seconds", - ]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 115 + i))) +for i, (s, f) in enumerate([("volt", "volt0"), ("volts", "volt1"), + ("amp", "amp0"), ("amps", "amp1"), + ("milliamp", "mamp0"), ("milliamps", "mamp1"), + ("knot", "knot0"), ("knots", "knot1"), + ("meter per second", "mps0"), ("meters per second", "mps1"), + ("foot per second", "fps0"), ("feet per second", "fps1"), + ("kilometer per hour", "kph0"), ("kilometers per hour", "kph1"), + ("mile per hour", "mph0"), ("miles per hour", "mph1"), + ("meter", "meter0"), ("meters", "meter1"), + ("foot", "foot0"), ("feet", "foot1"), + ("degree celsius", "celsius0"), ("degrees celsius", "celsius1"), + ("degree fahrenheit", "fahr0"), ("degrees fahrenheit", "fahr1"), + ("percent", "percent0"), + ("milliamp-hour", "mamph0"), ("milliamp-hours", "mamph1"), + ("watt", "watt0"), ("watts", "watt1"), + ("milli-watt", "mwatt0"), ("milli-watts", "mwatt1"), + ("db", "db0"), + ("r p m", "rpm0"), + ("g", "g0"), + ("degree", "degree0"), ("degrees", "degree1"), + ("radian", "rad0"), ("radians", "rad1"), + ("milliliter", "ml0"), ("milliliters", "ml1"), + ("fluid ounce", "founce0"), ("fluid ounces", "founce1"), + ("hour", "hour0"), ("hours", "hour1"), + ("minute", "minute0"), ("minutes", "minute1"), + ("second", "second0"), ("seconds", "second1"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 115 + i))) for i, s in enumerate(["point zero", "point one", "point two", "point three", "point four", "point five", "point six", "point seven", "point eight", "point nine"]): diff --git a/radio/util/tts_es.py b/radio/util/tts_es.py index 6b778c694..38e220617 100755 --- a/radio/util/tts_es.py +++ b/radio/util/tts_es.py @@ -22,8 +22,34 @@ systemSounds.append(("nuevecientos", filename(PROMPT_SYSTEM_BASE + 109))) systemSounds.append(("mil", filename(PROMPT_SYSTEM_BASE + 110))) for i, s in enumerate(["coma", "un", "una", "y", "meno", "hora", "horas", "minuto", "minutos", "segundo", "segundos"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 111 + i))) -for i, s in enumerate([u"Voltio", u"ampério", u"metros por segundo", u"", u"kilómetro por hora", u"metros", u"grados", u"por ciento", u"miliamperios", u"miliamperios por hora", u"vatio", u"db", u"pés", u"nós", u"horas", u"minutos", u"segundos", u"RPM", u"g", u"mililitro", u"onzas"]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 122 + i))) +for i, (s, f) in enumerate([(u"Voltio","volt0"), + (u"ampério", "amp0"), + (u"miliamperios", "mamp0"), + (u"knots", "knot0"), + (u"metros por segundo", "mps0"), + (u"pie por segundo", "fps0"), + (u"kilómetro por hora", "kph0"), + (u"millas por hora", "mph0"), + (u"metros", "meter0"), + (u"pie", "foot0"), + (u"grados", "celsius0"), + (u"fahrenheit", "fahr0"), + (u"por ciento", "percent0"), + (u"miliamperios por hora", "mamph0"), + (u"vatio", "watt0"), + (u"millivatio", "mwatt0"), + (u"db", "db0"), + (u"RPM", "rpm0"), + (u"g", "g0"), + (u"grados", "degree0"), + (u"radianes ", "rad0"), + (u"mililitro", "ml0"), + (u"onzas", "founce0"), + (u"horas", "hour0"), + (u"minutos", "minute0"), + (u"segundos", "second0"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 122 + i))) for s, f, a in [(u"me tienes abandonada", "inactiv", 486), (u"batería del transmisor baja", "lowbatt", 485), (u"El acelerador está activado, por favor, corrijalo", "thralert", 481), diff --git a/radio/util/tts_fr.py b/radio/util/tts_fr.py index 611ea3ec3..cd86c85f8 100755 --- a/radio/util/tts_fr.py +++ b/radio/util/tts_fr.py @@ -15,34 +15,34 @@ for i, s in enumerate(["une", "onze", "vingt et une", "trente et une", "quarante systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 110 + i))) for i, s in enumerate(["virgule", "et", "moins", "minuit", "midi"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 119 + i))) -for i, s in enumerate([u"volts", - u"ampères", - u"milli ampères", - u"knots", - u"mètres seconde", - u"pieds par seconde", - u"kilomètre heure", - u"miles par heure", - u"mètres", - u"pieds", - u"degrés", - u"degrés fahrenheit", - u"pourcents", - u"milli ampères / heure", - u"watt", - u"milli watt", - u"db", - u"tours minute", - u"g", - u"degrés", - u"radians", - u"millilitres", - u"onces", - u"heure", - u"minute", - u"seconde" - ]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 125 + i))) +for i, (s, f) in enumerate([(u"volts","volt0"), + (u"ampères", "amp0"), + (u"milli ampères", "mamp0"), + (u"knots", "knot0"), + (u"mètres seconde", "mps0"), + (u"pieds par seconde", "fps0"), + (u"kilomètre heure", "kph0"), + (u"miles par heure", "mph0"), + (u"mètres", "meter0"), + (u"pieds", "foot0"), + (u"degrés", "celsius0"), + (u"degrés fahr", "degf0"), + (u"pourcents", "percent0"), + (u"milli ampères heure", "mamph0"), + (u"watt", "watt0"), + (u"milli watt", "mwatt0"), + (u"db", "db0"), + (u"tours minute", "rpm0"), + (u"g", "g0"), + (u"degrés", "degree0"), + (u"radians", "rad0"), + (u"millilitres", "ml0"), + (u"onces", "founce0"), + (u"heure", "hour0"), + (u"minute", "minute0"), + (u"seconde", "second0"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 125 + i))) for i, s in enumerate(["virgule 0", "virgule 1", "virgule 2", "virgule 3", "virgule 4", "virgule 5", "virgule 6", "virgule 7", "virgule 8", "virgule 9"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 180 + i))) for s, f, a in [(u"Trim centré", "midtrim", 495), diff --git a/radio/util/tts_it.py b/radio/util/tts_it.py index 6c107b53f..3f679f6d8 100755 --- a/radio/util/tts_it.py +++ b/radio/util/tts_it.py @@ -14,29 +14,34 @@ systemSounds.append(("mila", filename(PROMPT_SYSTEM_BASE + 101))) systemSounds.append(("mille", filename(PROMPT_SYSTEM_BASE + 102))) for i, s in enumerate(["virgola", "un", "e", "meno", "ora", "ore", "minuto", "minuti", "secondo", "secondi"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 103 + i))) -for i, s in enumerate(["", "", - "volt", "volt", - "ampere", "ampere", - "milliampers", "milliampers", - "nodo", "nodi", - "metro al secondo", "metri al secondo", - "piede al secondo", "piedi al secondo", - "chilometro ora", "chilometri ora", - "miglio per ora", "miglia per ora", - "metro", "metri", - "piede", "piedi", - "grado celsius", "gradi celsius", - "grado fahrenheit", "gradi fahrenheit", - "percento", "percento", - "milliampere ora", "milliampere ora", - "watt", "watt", - "decibel", "decibel", - "R P M", "R P M", - "g", "g", - "grado", "gradi", - "millilitro", "millilitri", - "oncia", "once"]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 113 + i))) +for i, (s, f) in enumerate([(u"volt", "volt0"), + (u"ampere", "amp0"), + (u"milliampers", "mamp0"), + (u"nodo", "knot0"), ("nodi", "knot1"), + (u"metro al secondo", "mps0"), ("metri al secondo", "msp1"), + (u"piede al secondo", "fps0"), ("piedi al secondo", "fps1"), + (u"chilometro ora", "kph0"), ("kilometers per hour", "kph1"), + (u"miglio per ora", "mph0"), ("miglia per ora", "mph1"), + (u"metro", "meter0"), ("metri", "meter1"), + (u"piede", "foot0"), ("piedi", "foot1"), + (u"grado celsius", "celsius0"), ("gradi celsius", "celsius1"), + (u"grado fahrenheit", "fahr0"), ("gradi fahrenheit", "fahr1"), + (u"percento", "percent0"), + (u"milliampere ora", "mamph0"), + (u"watt", "watt0"), + (u"milli-watt", "mwatt0"), ("milli-watts", "mwatt1"), + (u"db", "db0"), + (u"r p m", "rpm0"), + (u"g", "g0"), + (u"grado", "degree0"), ("gradi", "degree1"), + (u"radian", "rad0"), ("radians", "rad1"), + (u"millilitro", "m10"), ("millilitri", "m11"), + (u"oncia", "founce0"), ("once", "founce1"), + (u"hour", "hour0"), ("hours", "hour1"), + (u"minute", "minute0"), ("minutes", "minute1"), + (u"second", "second0"), ("seconds", "second1"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 113 + i))) for s, f, a in [(u"radio inattiva controllare", "inactiv", 486), (u"batteria della radio scarica", "lowbatt", 485), (u"controllo motore non in posizione, verificare", "thralert", 481), diff --git a/radio/util/tts_pt.py b/radio/util/tts_pt.py index db93f6360..302a10759 100755 --- a/radio/util/tts_pt.py +++ b/radio/util/tts_pt.py @@ -22,8 +22,34 @@ systemSounds.append(("novecentos", filename(PROMPT_SYSTEM_BASE + 109))) systemSounds.append(("mil", filename(PROMPT_SYSTEM_BASE + 110))) for i, s in enumerate(["virgula", "uma", "duas", "e", "menos", "hora", "horas", "minuto", "minutos", "segundo", "segundos"]): systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 111 + i))) -for i, s in enumerate([u"Volt", u"ampére", u"metros por segundo", u"", u"quilômetros por hora", u"metros", u"graus", u"cento", u"miliamperes", u"miliamperes por hora", u"watt", u"db", u"pés", u"nós", u"horas", u"minutos", u"segundos", u"RPM", u"g", u"mililitri", u"onças"]): - systemSounds.append((s, filename(PROMPT_SYSTEM_BASE + 122 + i))) +for i, (s, f) in enumerate([("Volt", "volt0"), + ("ampére", "amp0"), + ("miliamperes", "mamp0"), + ("knot", "knot0"), + ("metros por segundo", "mps0"), + ("foot per second", "fps0"), + ("quilômetros por hora", "kph0"), + ("mile per hour", "mph0"), + ("metros", "meter0"), + ("foot", "foot0"), + ("degree celsius", "celsius0"), + ("degree fahrenheit", "fahr0"), + ("percent", "percent0"), + ("miliamperes por hora", "mamph0"), + ("watt", "watt0"), + ("milli-watt", "mwatt0"), + ("db", "db0"), + ("r p m", "rpm0"), + ("g", "g0"), + ("degree", "degree0"), + ("radian", "rad0"), + ("milliliter", "ml0"), + ("onças", "founce0"), + ("horas", "hour0"), + ("minutos", "minute0"), + ("segundos", "second0"), + ]): + systemSounds.append((s, filename(f, PROMPT_SYSTEM_BASE + 122 + i))) for s, f, a in [(u"atenção, o rádio foi esquecido ligado, por favor desligue-o", "inactiv", 486), (u"bateria do rádio fraca", "lowbatt", 485), (u"atenção,acelerador não está no mínimo", "thralert", 481),