German tts (first commit)

This commit is contained in:
romolo.manfredini@gmail.com
2012-11-11 14:10:23 +00:00
parent 50a6b2645a
commit e25c54e83e
2 changed files with 260 additions and 3 deletions
+188
View File
@@ -0,0 +1,188 @@
/*
* Authors (alphabetical order)
* - Bertrand Songis <bsongis@gmail.com>
* - Bryan J. Rentoul (Gruvin) <gruvin@gmail.com>
* - Cameron Weeks <th9xer@gmail.com>
* - Erez Raviv
* - Jean-Pierre Parisy
* - Karl Szmutny <shadow@privy.de>
* - Michael Blandford
* - Michal Hlavinka
* - Pat Mackenzie
* - Philip Moss
* - Rob Thomson
* - Romolo Manfredini <romolo.manfredini@gmail.com>
* - Thomas Husterer
*
* open9x 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 "../open9x.h"
enum GermanPrompts {
PROMPT_NUMBERS_BASE = 0,
PROMPT_NULL = PROMPT_NUMBERS_BASE+0,
PROMPT_HUNDERT = PROMPT_NUMBERS_BASE+100,
PROMPT_TAUSEND = PROMPT_NUMBERS_BASE+101,
PROMPT_COMMA = 102,
PROMPT_UND,
PROMPT_MINUS,
PROMPT_UHR,
PROMPT_MINUTE,
PROMPT_MINUTEN,
PROMPT_SECUNDE,
PROMPT_SECUNDEN,
PROMPT_UNITS_BASE = 109,
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,
PROMPT_LABELS_BASE = 122,
PROMPT_TIMER1 = PROMPT_LABELS_BASE+TELEM_TM1,
PROMPT_TIMER2 = PROMPT_LABELS_BASE+TELEM_TM2,
PROMPT_RSSI_TX = PROMPT_LABELS_BASE+TELEM_RSSI_TX,
PROMPT_RSSI_RX = PROMPT_LABELS_BASE+TELEM_RSSI_RX,
PROMPT_A1 = PROMPT_LABELS_BASE+TELEM_A1,
PROMPT_A2 = PROMPT_LABELS_BASE+TELEM_A2,
PROMPT_ALTITUDE = PROMPT_LABELS_BASE+TELEM_ALT,
PROMPT_RPM = PROMPT_LABELS_BASE+TELEM_RPM,
PROMPT_ESSENCE = PROMPT_LABELS_BASE+TELEM_FUEL,
PROMPT_T1 = PROMPT_LABELS_BASE+TELEM_T1,
PROMPT_T2 = PROMPT_LABELS_BASE+TELEM_T2,
PROMPT_VITESSE = PROMPT_LABELS_BASE+TELEM_SPEED,
PROMPT_DISTANCE = PROMPT_LABELS_BASE+TELEM_DIST,
PROMPT_GPSALTITUDE = PROMPT_LABELS_BASE+TELEM_GPSALT,
PROMPT_ELEMENTS_LIPO = PROMPT_LABELS_BASE+TELEM_CELL,
PROMPT_TOTAL_LIPO = PROMPT_LABELS_BASE+TELEM_CELLS_SUM,
PROMPT_VFAS = PROMPT_LABELS_BASE+TELEM_VFAS,
PROMPT_COURANT = PROMPT_LABELS_BASE+TELEM_CURRENT,
PROMPT_CONSOMMATION = PROMPT_LABELS_BASE+TELEM_CONSUMPTION,
PROMPT_PUISSANCE = PROMPT_LABELS_BASE+TELEM_POWER,
PROMPT_ACCELx = PROMPT_LABELS_BASE+TELEM_ACCx,
PROMPT_ACCELy = PROMPT_LABELS_BASE+TELEM_ACCy,
PROMPT_ACCELz = PROMPT_LABELS_BASE+TELEM_ACCz,
PROMPT_HDG = PROMPT_LABELS_BASE+TELEM_HDG,
PROMPT_VARIO = PROMPT_LABELS_BASE+TELEM_VSPD,
};
#if defined(VOICE)
PLAY_FUNCTION(playNumber, int16_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_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 > 0) {
PLAY_NUMBER(qr.quot, 0, 0);
PUSH_PROMPT(PROMPT_COMMA);
if (mode==2 && qr.rem < 10)
PUSH_PROMPT(PROMPT_NULL);
PLAY_NUMBER(qr.rem, unit, 0);
}
else {
PLAY_NUMBER(qr.quot, unit, 0);
}
return;
}
if (number >= 1000) {
if (number >= 1100) {
PLAY_NUMBER(number / 1000, 0, 0);
PUSH_PROMPT(PROMPT_TAUSEND);
} else {
PUSH_PROMPT(PROMPT_TAUSEND);
}
number %= 1000;
if (number == 0)
number = -1;
}
if (number >= 100) {
if (number >= 200)
PUSH_PROMPT(PROMPT_NULL + number/100);
PUSH_PROMPT(PROMPT_HUNDERT);
number %= 100;
if (number == 0)
number = -1;
}
PUSH_PROMPT(PROMPT_NULL+number);
if (unit) {
PUSH_PROMPT(PROMPT_UNITS_BASE+unit-1);
}
}
PLAY_FUNCTION(playDuration, int16_t seconds)
{
if (seconds < 0) {
PUSH_PROMPT(PROMPT_MINUS);
seconds = -seconds;
}
uint8_t ore = 0;
uint8_t tmp = seconds / 3600;
seconds %= 3600;
if (tmp > 0) {
PLAY_NUMBER(tmp, 0, 0);
PUSH_PROMPT(PROMPT_UHR);
}
tmp = seconds / 60;
seconds %= 60;
if (tmp > 0 || ore >0) {
PLAY_NUMBER(tmp, 0, 0);
if (tmp != 1) {
PUSH_PROMPT(PROMPT_MINUTEN);
} else {
PUSH_PROMPT(PROMPT_MINUTE);
}
PUSH_PROMPT(PROMPT_UND);
}
PLAY_NUMBER(seconds, 0, 0);
if (seconds != 1) {
PUSH_PROMPT(PROMPT_SECUNDEN);
} else {
PUSH_PROMPT(PROMPT_SECUNDE);
}
}
#endif
+72 -3
View File
@@ -300,11 +300,11 @@ if __name__ == "__main__":
(u"trenta secondi", "timer30", 253),
]:
systemSounds.extend(generate(s, f, a))
for i, s in enumerate(["timer", "", "tensione", "tensione", "trasmissione", "ricezione", "altitudine", "motore",
for i, s in enumerate(["timer", "", "trasmissione", "ricezione", "A1", "A2", "altitudine", "motore",
"carburante", "temperatura", "temperatura", "velocita'", "distanza", "altitudine", "cella lipo",
"totale lipo", "tensione", "corrente", "consumo", "potenza", "accelerazione X", "accellerazione Y", "accelerazione Z",
"direzione", "variometro"]):
systemSounds.extend(generate(s, 132+i))
"direzione", "variometro","minimo","massimo"]):
systemSounds.extend(generate(s, 132+i))
for i, (s, f) in enumerate([
(u"carrello chiuso", "gearup"),
(u"carrello aperto", "geardn"),
@@ -335,6 +335,75 @@ if __name__ == "__main__":
(u"fase di volo 9", "fltmd9"),
]):
sounds.extend(generate(s, f, 256+i))
elif "de" in sys.argv:
if "sapi" in sys.argv:
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
voice = "german"
else:
espeakVoice = "mb-de4"
espeakspeed = "160"
voice = "german"
for i in range(101):
systemSounds.extend(generate(str(i), i))
systemSounds.extend(generate("tausend", 101))
for i, s in enumerate(["comma", "und", "minus", "uhr", "minute", "minuten", "sekunde", "sekunden"]):
systemSounds.extend(generate(s, 102+i))
for i, s in enumerate(["Volt", "Ampere", "Meter pro sekunde", "", "kilometer pro stunde", "Meter", "Grad", "Prozent", "Milliampere", "Milliampere pro stunde", "Watt", "db", "Fuesse", "Knoten", "Uhr", "Minuten", "Secunden", "R P M", "g"]):
systemSounds.extend(generate(s, 110+i))
for s, f, a in [(u"Sender inaktiv ist, überprüfen Sie bitte", "inactiv", 230),
(u"Senderakku niedrig", "lowbatt", 231),
(u"Motorsteuerung fehlpositioniert, überprüfen Sie bitte", "thralert", 232),
(u"Schalten fehlpositioniert, überprüfen Sie bitte", "swalert", 233),
(u"Das EEPROM ist fehlerhaft", "eebad", 0),
(u"Das EEPROM ist immer formatiert", "eeformat", 0),
(u"fehler", "error", 0),
(u"Trim zentriert", "midtrim", 244),
(u"tada", "tada", 245),
(u"Potentiometer zentriert", "midpot", 246),
(u"Maximale trim erreicht", "endtrim", 0),
(u"Noch drei sekunden", "timerlt3", 250),
(u"10 sekunden", "timer10", 251),
(u"20 sekunden", "timer20", 252),
(u"30 sekunden", "timer30", 253),
]:
systemSounds.extend(generate(s, f, a))
for i, s in enumerate(["Timer", "", "Sendung", "Empfang", "A1", "A2", "Hoehe", "Motor",
"Treibstoff", "Temperatur", "Temperatur", "Geschwindigkeit", "Ferne", "Hoehe", "Lipo-Zelle",
"Zellen insgesamt", "Spannung", "Strom", "Verbrauch", "Power", "Beschleunigung X", "Beschleunigung Y", "Beschleunigung Z",
"Richtung", "Variometer","Minimum","Maximum"]):
systemSounds.extend(generate(s, 132+i))
for i, (s, f) in enumerate([
(u"Fahrwerk geschlossen", "gearup"),
(u"Fahrwerk offen", "geardn"),
(u"Klappen eingefahren", "flapup"),
(u"Klappen ausgefahren", "flapdn"),
(u"Landung", "attero"),
(u"Trainer-Modus auf", "trnon"),
(u"Trainer-Modus aus", "trnoff"),
(u"Motor aus", "engoff"),
(u"zu hoch", "tohigh"),
(u"zu niedrig", "tolow"),
(u"Schwache Batterie", "lowbat"),
(u"crow auf", "crowon"),
(u"crow aus", "crowof"),
(u"nidrieg Funksignal!", "siglow"),
(u"kritish Funksignal!", "sigcrt"),
(u"Schnell-Modus ist aktiviert", "spdmod"),
(u"Thermische-Modus ist aktiviert", "thmmod"),
(u"Normal-Modus ist aktiviert", "nrmmod"),
(u"Regime 1", "fltmd1"),
(u"Regime 2", "fltmd2"),
(u"Regime 3", "fltmd3"),
(u"Regime 4", "fltmd4"),
(u"Regime 5", "fltmd5"),
(u"Regime 6", "fltmd6"),
(u"Regime 7", "fltmd7"),
(u"Regime 8", "fltmd8"),
(u"Regime 9", "fltmd9"),
]):
sounds.extend(generate(s, f, 256+i))
elif "cz" in sys.argv:
if "sapi" in sys.argv: