Directory transmitter renamed to radio
This commit is contained in:
@@ -0,0 +1,234 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import os, sys, shutil, platform, getpass, subprocess, zipfile, ftplib, httplib, threading
|
||||
|
||||
BINARY_DIR = "../build/"
|
||||
|
||||
options_stock = [[("", "EXT=STD"), ("frsky", "EXT=FRSKY"), ("jeti", "EXT=JETI"), ("ardupilot", "EXT=ARDUPILOT"), ("nmea", "EXT=NMEA")],
|
||||
[("", "HELI=NO"), ("heli", "HELI=YES")],
|
||||
[("", "TEMPLATES=NO"), ("templates", "TEMPLATES=YES")],
|
||||
[("", ""), ("nosplash", "SPLASH=NO")],
|
||||
[("", ""), ("nofp", "FLIGHT_PHASES=NO")],
|
||||
[("", "AUDIO=NO"), ("audio", "AUDIO=YES")],
|
||||
[("", "HAPTIC=NO"), ("haptic", "HAPTIC=YES")],
|
||||
[("", "PXX=NO"), ("PXX", "PXX=YES")],
|
||||
[("", "DSM2=NO"), ("DSM2", "DSM2=PPM")],
|
||||
[("", ""), ("ppmca", "PPM_CENTER_ADJUSTABLE=YES")],
|
||||
[("", "NAVIGATION=NO"), ("potscroll", "NAVIGATION=POTS")],
|
||||
[("", ""), ("autoswitch", "AUTOSWITCH=YES")],
|
||||
[("", ""), ("pgbar", "EEPROM_PROGRESS_BAR=YES")],
|
||||
[("", "UNITS=METRIC"), ("imperial", "UNITS=IMPERIAL")],
|
||||
]
|
||||
|
||||
options_v4 = [[("", "EXT=FRSKY")],
|
||||
[("", "HELI=NO"), ("heli", "HELI=YES")],
|
||||
[("", "TEMPLATES=NO"), ("templates", "TEMPLATES=YES")],
|
||||
[("", ""), ("nofp", "FLIGHT_PHASES=NO")],
|
||||
[("", "SDCARD=NO"), ("sdcard", "SDCARD=YES")],
|
||||
[("", "SOMO=NO"), ("SOMO", "SOMO=YES")],
|
||||
[("", ""), ("ppmca", "PPM_CENTER_ADJUSTABLE=YES")],
|
||||
[("", ""), ("autoswitch", "AUTOSWITCH=YES")],
|
||||
[("", ""), ("pgbar", "EEPROM_PROGRESS_BAR=YES")],
|
||||
[("", "UNITS=METRIC"), ("imperial", "UNITS=IMPERIAL")],
|
||||
]
|
||||
|
||||
options_arm = [[("", "EXT=FRSKY")],
|
||||
[("", "HELI=NO"), ("heli", "HELI=YES")],
|
||||
[("", "TEMPLATES=NO"), ("templates", "TEMPLATES=YES")],
|
||||
[("", ""), ("nofp", "FLIGHT_PHASES=NO")],
|
||||
[("", ""), ("autoswitch", "AUTOSWITCH=YES")],
|
||||
[("", "UNITS=METRIC"), ("imperial", "UNITS=IMPERIAL")],
|
||||
]
|
||||
|
||||
languages = ["en", "fr", "se"]
|
||||
|
||||
#ftp_host = "ftpperso.free.fr"
|
||||
#ftp_user = "open9x"
|
||||
ftp_host = "open9x.freehosting.com"
|
||||
ftp_user = "openxfre"
|
||||
ftp_directory = "public_html/binaries/"
|
||||
|
||||
def upload(binaries, ext, stamp):
|
||||
if not ftp:
|
||||
return
|
||||
|
||||
print "Zip creation..."
|
||||
zip_name = "release.zip"
|
||||
zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)
|
||||
for bin in binaries:
|
||||
zip.write(BINARY_DIR + bin + "." + ext, bin + "." + ext)
|
||||
zip.write(BINARY_DIR + stamp, stamp)
|
||||
zip.close()
|
||||
|
||||
print "FTP transfer..."
|
||||
ftp_connection = ftplib.FTP(ftp_host, ftp_user, ftp_password)
|
||||
try:
|
||||
ftp_connection.delete(ftp_directory + zip_name)
|
||||
except:
|
||||
pass
|
||||
f = open(zip_name, 'rb')
|
||||
ftp_connection.storbinary('STOR ' + ftp_directory + zip_name, f)
|
||||
f.close()
|
||||
ftp_connection.quit()
|
||||
|
||||
print "ZIP extraction...",
|
||||
http_connection = httplib.HTTPConnection("open9x.freehosting.com")
|
||||
http_connection.request("GET", "/binaries/uncompress.php")
|
||||
response = http_connection.getresponse()
|
||||
print response.status, response.reason
|
||||
os.remove(zip_name)
|
||||
|
||||
global_current = 0
|
||||
global_count = 0
|
||||
def generate(hex, arg, extension, options, languages, maxsize):
|
||||
global global_current
|
||||
global global_count
|
||||
|
||||
result = []
|
||||
states = [0] * len(options)
|
||||
|
||||
count = len(languages)
|
||||
for option in options:
|
||||
count *= len(option)
|
||||
global_count += count
|
||||
|
||||
while 1:
|
||||
# print index, states
|
||||
|
||||
for language in languages:
|
||||
hex_file = hex
|
||||
make_args = ["make", arg]
|
||||
for i, option in enumerate(options):
|
||||
state = states[len(options) - 1 - i]
|
||||
if option[state][0]:
|
||||
hex_file += "-" + option[state][0]
|
||||
make_args.append(option[state][1])
|
||||
hex_file += "-" + language
|
||||
make_args.append("TRANSLATIONS=" + language.upper())
|
||||
if mt:
|
||||
cwd = language
|
||||
else:
|
||||
cwd = "."
|
||||
|
||||
size = 0
|
||||
if compile:
|
||||
subprocess.Popen(["make", "clean", arg], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd).wait()
|
||||
p = subprocess.Popen(make_args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd)
|
||||
ret = p.wait()
|
||||
stderr = p.stderr.read()
|
||||
global_current += 1
|
||||
print "[%d/%d]" % (global_current, global_count), hex_file
|
||||
if ret or "error" in stderr:
|
||||
print stderr
|
||||
exit()
|
||||
for line in stderr.split("\n"):
|
||||
if "warning" in line:
|
||||
print " ", line
|
||||
for line in p.stdout.readlines():
|
||||
if line.startswith("Program:"):
|
||||
parts = line.split(" ")
|
||||
while "" in parts:
|
||||
parts.remove("")
|
||||
size = int(parts[1])
|
||||
if size > maxsize:
|
||||
print " ", line[:-1], "[NOT RELEASED]"
|
||||
else:
|
||||
print " ", line,
|
||||
if line.startswith("Data:"):
|
||||
print " ", line,
|
||||
|
||||
if size <= maxsize:
|
||||
binary_name = hex_file + "." + extension
|
||||
if compile:
|
||||
shutil.copyfile(cwd + "/open9x." + extension, BINARY_DIR + binary_name)
|
||||
result.append(hex_file)
|
||||
|
||||
for index, state in enumerate(states):
|
||||
if state < len(options[len(options) - 1 - index]) - 1:
|
||||
for i in range(index):
|
||||
states[i] = 0
|
||||
states[index] += 1
|
||||
break
|
||||
else:
|
||||
break
|
||||
|
||||
# stamp
|
||||
stamp = "stamp-open9x-%s.txt" % hex.split("-")[1]
|
||||
subprocess.Popen(["make", hex.split("-")[1] + "-stamp"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd="../src").wait()
|
||||
shutil.copyfile("../src/" + stamp, BINARY_DIR + stamp)
|
||||
|
||||
return result, stamp
|
||||
|
||||
class GenerateThread(threading.Thread):
|
||||
def __init__ (self, hex, arg, extension, options, language, maxsize):
|
||||
threading.Thread.__init__(self)
|
||||
self.hex = hex
|
||||
self.arg = arg
|
||||
self.extension = extension
|
||||
self.options = options
|
||||
self.language = language
|
||||
self.maxsize = maxsize
|
||||
|
||||
def run(self):
|
||||
self.hexes, self.stamp = generate(self.hex, self.arg, self.extension, self.options, [self.language], self.maxsize)
|
||||
|
||||
def multithread_generate(hex, arg, extension, options, languages, maxsize):
|
||||
if mt:
|
||||
result = []
|
||||
threads = []
|
||||
for language in languages:
|
||||
thread = GenerateThread(hex, arg, extension, options, language, maxsize)
|
||||
threads.append(thread)
|
||||
thread.start()
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
result.extend(thread.hexes)
|
||||
stamp = thread.stamp
|
||||
return result, stamp
|
||||
else:
|
||||
return generate(hex, arg, extension, options, languages, maxsize)
|
||||
|
||||
|
||||
def generate_c9x_list(filename, hexes, board):
|
||||
f = open(filename, "w")
|
||||
f.write("const char *open9x_%s_binaries[] = {\n" % board)
|
||||
for hex in hexes:
|
||||
f.write('"%s",\n' % hex)
|
||||
f.write("0\n};\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
ftp = "ftp" in sys.argv
|
||||
mt = "mt" in sys.argv and platform.system() != "Windows"
|
||||
compile = not "nc" in sys.argv
|
||||
|
||||
if ftp:
|
||||
ftp_password = getpass.getpass()
|
||||
|
||||
if mt:
|
||||
shutil.rmtree("util", True)
|
||||
shutil.copytree("../util", "util")
|
||||
for lang in languages:
|
||||
print "Directory %s creation..." % lang
|
||||
shutil.rmtree(lang, True)
|
||||
shutil.copytree("../src", lang)
|
||||
|
||||
if platform.system() == "Windows":
|
||||
# arm board
|
||||
hexes, stamp = generate("open9x-arm", "PCB=ARM", "bin", options_arm, languages, 262000)
|
||||
generate_c9x_list("../../companion9x/src/open9x-arm-binaries.cpp", hexes, "arm")
|
||||
upload(hexes, "bin", stamp)
|
||||
|
||||
else:
|
||||
# stock board
|
||||
if not "v4" in sys.argv:
|
||||
hexes, stamp = multithread_generate("open9x-stock", "PCB=STD", "hex", options_stock, languages, 65530)
|
||||
generate_c9x_list("../../companion9x/src/open9x-stock-binaries.cpp", hexes, "stock")
|
||||
upload(hexes, "hex", stamp)
|
||||
|
||||
# v4 board
|
||||
if not "stock" in sys.argv:
|
||||
hexes, stamp = multithread_generate("open9x-v4", "PCB=V4", "hex", options_v4, languages, 262000)
|
||||
generate_c9x_list("../../companion9x/src/open9x-v4-binaries.cpp", hexes, "v4")
|
||||
upload(hexes, "hex", stamp)
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
BITLEN_DSM2 = 16
|
||||
|
||||
def sendByteDsm2(b):
|
||||
print "%02x:" % b,
|
||||
lev = 0
|
||||
len = BITLEN_DSM2
|
||||
for i in range(9):
|
||||
nlev = b & 1
|
||||
if (lev == nlev):
|
||||
len += BITLEN_DSM2
|
||||
else:
|
||||
print len,
|
||||
# _send_1(nlev ? len-5 : len+3);
|
||||
len = BITLEN_DSM2
|
||||
lev = nlev
|
||||
b = (b>>1) | 0x80
|
||||
# _send_1(len+BITLEN_DSM2+3); // 2 stop bits
|
||||
print len+BITLEN_DSM2
|
||||
|
||||
sendByteDsm2(24)
|
||||
sendByteDsm2(17)
|
||||
sendByteDsm2(2)
|
||||
sendByteDsm2(0x00)
|
||||
sendByteDsm2(0x06)
|
||||
sendByteDsm2(0)
|
||||
sendByteDsm2(10)
|
||||
sendByteDsm2(0)
|
||||
sendByteDsm2(14)
|
||||
sendByteDsm2(0)
|
||||
sendByteDsm2(18)
|
||||
sendByteDsm2(0)
|
||||
sendByteDsm2(22)
|
||||
sendByteDsm2(0)
|
||||
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
from PyQt4 import Qt, QtGui
|
||||
|
||||
image = QtGui.QImage(sys.argv[1])
|
||||
width, height = image.size().width(), image.size().height()
|
||||
|
||||
f = open(sys.argv[2], "w")
|
||||
|
||||
if len(sys.argv) > 3:
|
||||
what = sys.argv[3]
|
||||
else:
|
||||
for s in ("03x05", "04x06", "05x07", "08x10", "10x14"):
|
||||
if s in sys.argv[2]:
|
||||
what = s
|
||||
break
|
||||
|
||||
if what == "largimg":
|
||||
rows = 1
|
||||
if len(sys.argv) > 4:
|
||||
rows = int(sys.argv[4])
|
||||
f.write("255,%d, %d,\n" % (width-255, height/rows))
|
||||
for y in range(0, height, 8):
|
||||
for x in range(width):
|
||||
value = 0
|
||||
for z in range(8):
|
||||
if y+z < height and image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "img":
|
||||
rows = 1
|
||||
if len(sys.argv) > 4:
|
||||
rows = int(sys.argv[4])
|
||||
f.write("%d,%d,\n" % (width, height/rows))
|
||||
for y in range(0, height, 8):
|
||||
for x in range(width):
|
||||
value = 0
|
||||
for z in range(8):
|
||||
if y+z < height and image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "bmp":
|
||||
rows = 1
|
||||
colors = []
|
||||
if len(sys.argv) > 4:
|
||||
rows = int(sys.argv[4])
|
||||
f.write("%d,%d,\n" % (width, height/rows))
|
||||
for y in range(0, height, 8):
|
||||
for x in range(width):
|
||||
values = [255, 255, 255, 255]
|
||||
for z in range(8):
|
||||
if y+z < height:
|
||||
gray = Qt.qGray(image.pixel(x, y+z))
|
||||
for i in range(4):
|
||||
if (gray & (1<<(4+i))):
|
||||
values[i] -= 1 << z
|
||||
for value in values:
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "03x05":
|
||||
for y in range(0, height, 5):
|
||||
for x in range(width):
|
||||
value = 0
|
||||
for z in range(5):
|
||||
if image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "04x06":
|
||||
for y in range(0, height, 7):
|
||||
for x in range(width):
|
||||
value = 0
|
||||
for z in range(7):
|
||||
if image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "05x07":
|
||||
for y in range(0, height, 8):
|
||||
for x in range(width):
|
||||
value = 0
|
||||
for z in range(8):
|
||||
if image.pixel(x, y+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "08x10":
|
||||
for y in range(0, height, 12):
|
||||
for x in range(width):
|
||||
for l in range(0, 12, 8):
|
||||
value = 0
|
||||
for z in range(8):
|
||||
if l+z < 12 and image.pixel(x, y+l+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
elif what == "10x14":
|
||||
for y in range(0, height, 16):
|
||||
for x in range(width):
|
||||
for l in range(0, 16, 8):
|
||||
value = 0
|
||||
for z in range(8):
|
||||
if image.pixel(x, y+l+z) == Qt.qRgb(0, 0, 0):
|
||||
value += 1 << z
|
||||
f.write("0x%02x," % value)
|
||||
f.write("\n")
|
||||
else:
|
||||
print("wrong argument", sys.argv[3])
|
||||
@@ -0,0 +1,16 @@
|
||||
echo off
|
||||
|
||||
|
||||
echo Getting max amplitude..
|
||||
sox %1.wav -n stat -v 2> %1_apl.txt
|
||||
Set /P apl_value= < %1_apl.txt
|
||||
|
||||
echo Normalizing audio.. gain: %apl_value%
|
||||
sox --show-progress -v %apl_value% %1.wav %1_norm.wav
|
||||
|
||||
copy %1_norm.wav %1.wav
|
||||
|
||||
echo Cleaning..
|
||||
del %1_norm.wav
|
||||
del %1_apl.txt
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
|
||||
filename = sys.argv[1]
|
||||
print filename
|
||||
fr = open(filename)
|
||||
fw = open(filename+".new", "w")
|
||||
ew = open(filename+".en", "w")
|
||||
hw = open(filename+".stringsh", "w")
|
||||
cw = open(filename+".stringsc", "w")
|
||||
|
||||
replacements = {}
|
||||
|
||||
for line in fr.readlines():
|
||||
pos_pstr = line.find("PSTR(\"")
|
||||
MENU = False
|
||||
if pos_pstr < 0:
|
||||
pos_pstr = line.find("MENU(\"")
|
||||
MENU = True
|
||||
while pos_pstr >= 0:
|
||||
# print line,
|
||||
if MENU:
|
||||
pos_endparenthesis = line.find('"', pos_pstr+7)
|
||||
else:
|
||||
pos_endparenthesis = line.find("\")", pos_pstr)
|
||||
str = line[pos_pstr+6:pos_endparenthesis]
|
||||
|
||||
str_rep = "STR_"+str.upper()
|
||||
for s in (" ", ".", "[", "]", "-", "!", "/", ")", "(", "%", "+", ":"):
|
||||
str_rep = str_rep.replace(s, "")
|
||||
|
||||
if "14" in str or "32" in str or "@" in str or len(str_rep) <= 5:
|
||||
pos_pstr = -1
|
||||
else:
|
||||
if MENU:
|
||||
glob_str = line[pos_pstr+5:pos_endparenthesis+1]
|
||||
str_rep = "STR_MENU"+str.upper()
|
||||
else:
|
||||
glob_str = line[pos_pstr:pos_endparenthesis+2]
|
||||
str_rep = "STR_"+str.upper()
|
||||
for s in (" ", ".", "[", "]", "-", "!", "/", ")", "(", "%", "+", ":"):
|
||||
str_rep = str_rep.replace(s, "")
|
||||
|
||||
line = line.replace(glob_str, str_rep)
|
||||
|
||||
if str_rep in replacements.keys():
|
||||
if replacements[str_rep] != str:
|
||||
print "!!!!! NON !!!!!"
|
||||
else:
|
||||
replacements[str_rep] = str
|
||||
print glob_str, "=>", str, str_rep
|
||||
ew.write("#define " + str_rep[1:] + " "*(17-len(str_rep)) + '"%s"\n' % str)
|
||||
hw.write("extern const PROGMEM char %s[];\n" % str_rep)
|
||||
cw.write("const prog_char APM %s[] = %s;\n" % (str_rep, str_rep[1:]))
|
||||
|
||||
pos_pstr = line.find("PSTR(\"")
|
||||
|
||||
fw.write(line)
|
||||
|
||||
fw.close()
|
||||
ew.close()
|
||||
hw.close()
|
||||
cw.close()
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Imports
|
||||
import argparse
|
||||
import os
|
||||
import os.path
|
||||
import codecs
|
||||
|
||||
translations = {'cz': [('\\200', u'á'),
|
||||
('\\201', u'č'),
|
||||
('\\201', u'Č'),
|
||||
('\\202', u'é'),
|
||||
('\\203', u'ě'),
|
||||
('\\203', u'Ě'),
|
||||
('\\204', u'í'),
|
||||
('\\205', u'ó'),
|
||||
('\\206', u'ř'),
|
||||
('\\207', u'š'),
|
||||
('\\207', u'Š'),
|
||||
('\\210', u'ú'),
|
||||
('\\211', u'ů'),
|
||||
('\\212', u'ý'),
|
||||
('\\213', u'Á'),
|
||||
('\\214', u'Í'),
|
||||
('\\215', u'Ř'),
|
||||
('\\216', u'Ý'),
|
||||
('\\217', u'ž'),
|
||||
('\\217', u'Ž'),
|
||||
('\\220', u'É')],
|
||||
|
||||
'de': [('\\200', u'Ä'),
|
||||
('\\201', u'ä'),
|
||||
('\\202', u'Ö'),
|
||||
('\\203', u'ö'),
|
||||
('\\204', u'Ü'),
|
||||
('\\205', u'ü'),
|
||||
('\\206', u'ß')],
|
||||
|
||||
'es': [('\\200', u'Ñ'),
|
||||
('\\201', u'ñ')],
|
||||
|
||||
'fr': [('\\200', u'é'),
|
||||
('\\201', u'è'),
|
||||
('\\202', u'à'),
|
||||
('\\203', u'î'),
|
||||
('\\204', u'ç')],
|
||||
|
||||
'it': [('\\200', u'à'),
|
||||
('\\201', u'ù')],
|
||||
|
||||
'pl': [('\\200', u'ą'),
|
||||
('\\201', u'ć'),
|
||||
('\\202', u'ę'),
|
||||
('\\203', u'ł'),
|
||||
('\\204', u'ń'),
|
||||
('\\205', u'ó'),
|
||||
('\\206', u'ś'),
|
||||
('\\207', u'ż'),
|
||||
('\\210', u'ź'),
|
||||
('\\211', u'Ą'),
|
||||
('\\212', u'Ć'),
|
||||
('\\213', u'Ę'),
|
||||
('\\214', u'Ł'),
|
||||
('\\215', u'Ń'),
|
||||
('\\216', u'Ó'),
|
||||
('\\217', u'Ś'),
|
||||
('\\220', u'Ż'),
|
||||
('\\221', u'Ź')],
|
||||
|
||||
'pt': [('\\200', u'Á'),
|
||||
('\\201', u'á'),
|
||||
('\\202', u'Â'),
|
||||
('\\203', u'â'),
|
||||
('\\204', u'Ã'),
|
||||
('\\205', u'ã'),
|
||||
('\\206', u'À'),
|
||||
('\\207', u'à'),
|
||||
('\\210', u'Ç'),
|
||||
('\\211', u'ç'),
|
||||
('\\212', u'É'),
|
||||
('\\213', u'é'),
|
||||
('\\214', u'Ê'),
|
||||
('\\215', u'ê'),
|
||||
('\\216', u'Í'),
|
||||
('\\217', u'í'),
|
||||
('\\218', u'Ó'),
|
||||
('\\219', u'ó'),
|
||||
('\\220', u'Ô'),
|
||||
('\\221', u'ô'),
|
||||
('\\222', u'Õ'),
|
||||
('\\223', u'õ'),
|
||||
('\\224', u'Ú'),
|
||||
('\\225', u'ú'),],
|
||||
|
||||
'se': [('\\200', u'å'),
|
||||
('\\201', u'ä'),
|
||||
('\\202', u'ö'),
|
||||
('\\203', u'Å'),
|
||||
('\\204', u'Ä'),
|
||||
('\\205', u'Ö')],
|
||||
}
|
||||
|
||||
# Take care of command line options
|
||||
parser = argparse.ArgumentParser(description='Encoder for open9x translations')
|
||||
parser.add_argument('input', action="store", help="Input file name")
|
||||
parser.add_argument('output', action="store", help="Output file name")
|
||||
parser.add_argument('language', action="store", help="Two letter language identifier")
|
||||
parser.add_argument("--reverse", help="Reversed char conversion (from number to char)", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.language not in translations:
|
||||
parser.error(args.language + ' is not a supported language. Try one of the supported ones: ' + str(translations.keys()))
|
||||
system.exit()
|
||||
|
||||
# Read the input file into a buffer
|
||||
in_file = codecs.open( args.input, "r", "utf-8" )
|
||||
text = in_file.read()
|
||||
in_file.close()
|
||||
|
||||
# Do the replacements
|
||||
for before, after in translations[args.language]:
|
||||
if args.reverse:
|
||||
text = text.replace(before, after)
|
||||
else:
|
||||
text = text.replace(after, before)
|
||||
|
||||
# Write the result to a temporary file
|
||||
out_file = codecs.open(args.output, 'w', 'utf-8')
|
||||
out_file.write( text )
|
||||
out_file.close()
|
||||
|
||||
|
||||
@@ -0,0 +1,847 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
# To use this script you need the following installed within python
|
||||
# Python 2.5 http://www.python.org/download/releases/2.5.4/
|
||||
# Python 2.7 http://www.python.org/download/releases/2.7.3/
|
||||
# PyTTS http://pypi.python.org/pypi/pyTTS
|
||||
# PyWin32 http://sourceforge.net/projects/pywin32/files/pywin32/
|
||||
#
|
||||
# Note
|
||||
# At the moment, pyTTS is only available for Python 2.3, 2.4 and 2.5. To use it for later versions without having to
|
||||
# recompile it, a quick and dirty solution is to:
|
||||
# copy the entire pyTTS directory from Python25\Lib\site-packages to Python26 or Python27
|
||||
# replace TTSFast.py with an empty file. This way the version-dependent pyd file isn't loaded.
|
||||
|
||||
# in addition you will need some tools.
|
||||
# ffmpeg, sox, adconvertor ttscmd (2cnd speach centre)
|
||||
# have fun!
|
||||
# Sound pack maintainers (incomplete list) by language alphabetical order
|
||||
# Czech : Martin Hotar
|
||||
# French : Bertrand Songis & André Bernet
|
||||
# English : Rob Thompson & Martin Hotar
|
||||
# German : Romolo Manfredini (Some corrections by Peer)
|
||||
# Italian : Romolo Manfredini
|
||||
# Portuguese : Romolo Manfredini
|
||||
# Spanish : Romolo Manfredini (With the help of Jose Moreno)
|
||||
|
||||
import os, sys, shutil, platform, subprocess, wave, zipfile, httplib, urllib
|
||||
|
||||
NO_ALTERNATE = 1024
|
||||
|
||||
def filename(idx, alternate=0):
|
||||
if "gruvin9x" in sys.argv:
|
||||
ext = ".ad4"
|
||||
else:
|
||||
ext = ".wav"
|
||||
if isinstance(idx, int):
|
||||
result = "%04d%s" % (idx, ext)
|
||||
elif board in ('sky9x', 'taranis'):
|
||||
result = idx + ext
|
||||
else:
|
||||
if alternate >= NO_ALTERNATE:
|
||||
return None
|
||||
result = "%04d%s" % (alternate, ext)
|
||||
return result
|
||||
|
||||
def wavstrip(filename):
|
||||
output = "_" + filename
|
||||
subprocess.Popen(["sox", filename, output, "silence", "1", "0.1", "0.1%", "reverse", "silence", "1", "0.1", "0.1%", "reverse"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
os.remove(filename)
|
||||
os.rename(output, filename)
|
||||
|
||||
|
||||
def generate(str, filename):
|
||||
print filename, str
|
||||
|
||||
if not str:
|
||||
str = " !" #this is so blank wav files never exist!
|
||||
|
||||
if "speak" in sys.argv:
|
||||
if "sapi" in sys.argv:
|
||||
tts.Speak(str)
|
||||
elif "espeak" in sys.argv:
|
||||
subprocess.Popen(["espeak", "-v", espeakVoice, "-s", espeakspeed, "-z", str.encode("utf-8")], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
elif "google" in sys.argv:
|
||||
"speak not implemented with google tts engine"
|
||||
exit()
|
||||
else:
|
||||
print "which speach engine?"
|
||||
exit()
|
||||
else:
|
||||
if "sapi" in sys.argv:
|
||||
ttsfilename = "ttsfile.wav"
|
||||
tts.SpeakToWave(ttsfilename, str)
|
||||
elif "sapi2" in sys.argv:
|
||||
ttsfilename = "ttsfile.wav"
|
||||
subprocess.Popen(["ttscmd", "/ttw", str.encode("utf-8"), ttsfilename, "-v", voiceID, "-b", "32","-s", "\"-3\"","-w","32","-f","47"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
elif "espeak" in sys.argv:
|
||||
ttsfilename = "ttsfile.wav"
|
||||
subprocess.Popen(["espeak", "-v", espeakVoice, "-s", espeakspeed, "-z", "-w", ttsfilename, str.encode("utf-8")], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
elif "google" in sys.argv:
|
||||
ttsmp3 = "ttsfile.mp3"
|
||||
ttsfilename = "ttsfile.wav"
|
||||
conn = httplib.HTTPConnection("translate.google.com")
|
||||
params = urllib.urlencode({'ie': "UTF-8", 'tl': directory, 'q': str.encode("utf-8")})
|
||||
headers = {"User-Agent": "Mozilla"}
|
||||
conn.request("GET", u"/translate_tts?%s" % params, headers=headers)
|
||||
# conn.request("GET", "/translate_tts?ie=UTF-8&tl=%s&q=%s" % (directory, urllib.urlencode(str)), headers={"User-Agent": "Mozilla"})
|
||||
resp = conn.getresponse()
|
||||
file(ttsmp3, "wb").write(resp.read())
|
||||
subprocess.Popen(["ffmpeg", "-y", "-i", ttsmp3, "-acodec", "pcm_s16le", ttsfilename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
conn.close()
|
||||
|
||||
else:
|
||||
print "which speach engine?"
|
||||
exit()
|
||||
|
||||
wavstrip(ttsfilename)
|
||||
|
||||
if board in ('sky9x', 'taranis'):
|
||||
if 'sox' in sys.argv:
|
||||
maxvolume = subprocess.Popen(["sox", ttsfilename, "-n", "stat", "-v"], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[1]
|
||||
if "not sound" in maxvolume:
|
||||
subprocess.Popen(["sox", "--show-progress", filename, ttsfilename], stdout=subprocess.PIPE).communicate()[0];
|
||||
else:
|
||||
subprocess.Popen(["sox", "--show-progress","-v", maxvolume, filename, ttsfilename], stdout=subprocess.PIPE).communicate()[0];
|
||||
if board == 'sky9x':
|
||||
subprocess.Popen(["sox", "-twav", ttsfilename, "-b1600", "-c1", "-e", "a-law", filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
else:
|
||||
subprocess.Popen(["sox", "-twav", ttsfilename, "-b32000", "-c1", "-e", "a-law", filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
else:
|
||||
if board == 'sky9x':
|
||||
subprocess.Popen(["ffmpeg", "-y", "-i", ttsfilename, "-acodec", defaultcodec, "-ar", "16000", filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
else:
|
||||
subprocess.Popen(["ffmpeg", "-y", "-i", ttsfilename, "-acodec", defaultcodec, "-ar", "32000", filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
elif board == 'gruvin9x':
|
||||
subprocess.Popen(["AD4CONVERTER", "-E4", ttsfilename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
os.rename(ttsfilename.replace(".wav", ".ad4"), filename)
|
||||
else:
|
||||
subprocess.Popen(["ffmpeg", "-y", "-i", ttsfilename, "-acodec", "pcm_u8", "-ar", "16000", filename], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
os.remove(ttsfilename)
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsEn():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i in range(100):
|
||||
systemSounds.append((str(i), filename(PROMPT_SYSTEM_BASE+i)))
|
||||
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",
|
||||
"meter per second", "meters per second",
|
||||
"", "",
|
||||
"kilometer per hour","kilometers per hour",
|
||||
"meter", "meters",
|
||||
"degree", "degrees",
|
||||
"percent", "percent",
|
||||
"milliamp", "milliamps",
|
||||
"milliamp-hour", "milliamp-hours",
|
||||
"watt", "watts",
|
||||
"db", "db",
|
||||
"foot", "feet",
|
||||
"knot", "knots",
|
||||
"hour", "hours",
|
||||
"minute", "minutes",
|
||||
"second", "seconds",
|
||||
"r p m", "r p m",
|
||||
"g", "g"]):
|
||||
systemSounds.append((s, filename(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"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+160+i)))
|
||||
for s, f, a in [(u"trim center", "midtrim", 495),
|
||||
(u"maximum trim reached", "endtrim", NO_ALTERNATE),
|
||||
(u"transmitter battery low", "lowbatt", 485),
|
||||
(u"inactivity alarm", "inactiv", 486),
|
||||
(u"throttle warning", "thralert", 481),
|
||||
(u"switch warning", "swalert", 482),
|
||||
(u"bad eeprom", "eebad", 483),
|
||||
(u"Welcome to open tea ex!", "tada", 480),
|
||||
(u"twenty. seconds", "timer20", 500),
|
||||
(u"thirty. seconds", "timer30", 501),
|
||||
(u"10. seconds", "timer10", NO_ALTERNATE),
|
||||
(u"time up!", "timerlt3", NO_ALTERNATE),
|
||||
(u"A1,low", "a1_org", NO_ALTERNATE),
|
||||
(u"A1,critical", "a1_red", NO_ALTERNATE),
|
||||
(u"A2,low", "a2_org", NO_ALTERNATE),
|
||||
(u"A2,critical", "a2_red", NO_ALTERNATE),
|
||||
(u"RF signal, low", "rssi_org", NO_ALTERNATE),
|
||||
(u"RF signal, critical", "rssi_red", NO_ALTERNATE),
|
||||
(u"radio antenna defective", "swr_red", NO_ALTERNATE),
|
||||
(u"telemetry lost", "telemko", NO_ALTERNATE),
|
||||
(u"telemetry recovered", "telemok", NO_ALTERNATE),
|
||||
]:
|
||||
systemSounds.append((s, filename(f, a)))
|
||||
for i, (s, f) in enumerate([
|
||||
(u"gear!, up!", "gearup"),
|
||||
(u"gear!, down!", "geardn"),
|
||||
(u"flaps!, up!", "flapup"),
|
||||
(u"flaps!, down!", "flapdn"),
|
||||
(u"spoiler!, up!", "splrup"),
|
||||
(u"spoiler!, down!", "splrdn"),
|
||||
(u"trainer!, on!", "trnon"),
|
||||
(u"trainer!, off!", "trnoff"),
|
||||
(u"engine!, off!", "engoff"),
|
||||
(u"too. high!", "tohigh"),
|
||||
(u"too. low!", "tolow"),
|
||||
(u"low. battery!", "lowbat"),
|
||||
(u"crow!, on!", "crowon"),
|
||||
(u"crow!, off!", "crowof"),
|
||||
(u"rf. signal!, low!", "siglow"),
|
||||
(u"rf. signal!, critical!", "sigcrt"),
|
||||
(u"high. speed. mode!, active", "spdmod"),
|
||||
(u"thermal. mode!, on", "thmmod"),
|
||||
(u"normal. mode!, on", "nrmmod"),
|
||||
(u"landing. mode!, on", "lnding"),
|
||||
(u"acro. mode!, on", "acro"),
|
||||
(u"flight. mode!, one", "fm-1"),
|
||||
(u"flight. mode!, two", "fm-2"),
|
||||
(u"flight. mode!, three", "fm-3"),
|
||||
(u"flight. mode!, four", "fm-4"),
|
||||
(u"flight. mode!, five", "fm-5"),
|
||||
(u"flight. mode!, six", "fm-6"),
|
||||
(u"flight. mode!, seven", "fm-7"),
|
||||
(u"flight. mode!, eight", "fm-8"),
|
||||
(u"vario!, on", "vrion"),
|
||||
(u"vario!, off", "vrioff"),
|
||||
(u"flight mode!, power", "fm-pwr"),
|
||||
(u"flight mode!, land", "fm-lnd"),
|
||||
(u"flight mode!, float", "fm-flt"),
|
||||
(u"flight mode!, speed", "fm-spd"),
|
||||
(u"flight mode!, fast", "fm-fst"),
|
||||
(u"flight mode!, normal", "fm-nrm"),
|
||||
(u"flight mode!, cruise", "fm-crs"),
|
||||
(u"flight mode!, acro", "fm-acr"),
|
||||
(u"flight mode!, race", "fm-rce"),
|
||||
(u"flight mode!, launch", "fm-lch"),
|
||||
(u"flight mode!, ping", "fm-png"),
|
||||
(u"flight mode!, thermal", "fm-thm"),
|
||||
(u"flight mode!, thermal left", "fm-thml"),
|
||||
(u"flight mode!, thermal right", "fm-thmr"),
|
||||
]):
|
||||
sounds.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsFr():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i in range(100):
|
||||
systemSounds.append((str(i), filename(PROMPT_SYSTEM_BASE+i)))
|
||||
for i in range(10):
|
||||
systemSounds.append((str(100*(i+1)), filename(PROMPT_SYSTEM_BASE+100+i)))
|
||||
for i, s in enumerate(["une", "onze", "vingt et une", "trente et une", "quarante et une", "cinquante et une", "soixante et une", "soixante et onze", "quatre vingt une"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+110+i)))
|
||||
for i, s in enumerate(["virgule", "et", "moins"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+119+i)))
|
||||
for i, s in enumerate(["volts", u"ampères", u"mètres seconde", "", "km heure", u"mètres", u"degrés", "pourcents", u"milli ampères", u"milli ampères / heure", "watt", "db", "pieds", "knotts", "heure", "minute", "seconde", "tours par minute", "g"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+125+i)))
|
||||
for i, s in enumerate(["timer", "", "tension", "tension", u"émission", u"réception", "altitude", "moteur",
|
||||
"essence", u"température", u"température", "vitesse", "distance", "altitude", u"élément lipo",
|
||||
"total lipo", "tension", "courant", "consommation", "puissance", u"accelération X", u"accelération Y", u"accelération Z",
|
||||
"orientation", "vario"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+146+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 i, (s, f) in enumerate([
|
||||
(u"train rentré", "gearup"),
|
||||
(u"train sorti", "geardn"),
|
||||
(u"volets rentrés", "flapup"),
|
||||
(u"volets sortis", "flapdn"),
|
||||
(u"atterrissage", "attero"),
|
||||
(u"écolage", "trnon"),
|
||||
(u"fin écolage", "trnoff"),
|
||||
(u"moteur coupé", "engoff"),
|
||||
]):
|
||||
sounds.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsIt():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i in range(101):
|
||||
systemSounds.append((str(i), filename(PROMPT_SYSTEM_BASE+i)))
|
||||
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", "ampere", "metri per secondo", "", "chilometri/ora", "metri", "gradi", "percento", "milliampere", "milliampere/ora", "watt", "db", "piedi", "nodi", "ore", "minuti", "secondi", "R P M", "g"]):
|
||||
systemSounds.append((s, filename(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),
|
||||
(u"interruttori non in posizione, verificare", "swalert", 482),
|
||||
(u"eeprom corrotta", "eebad", NO_ALTERNATE),
|
||||
(u"formattazone eeprom in corso", "eeformat", NO_ALTERNATE),
|
||||
(u"errore", "error", NO_ALTERNATE),
|
||||
(u"trim centrato", "midtrim", 495),
|
||||
(u"potenziometro centrato", "midpot", 496),
|
||||
(u"massimo trim raggiunto", "endtrim", NO_ALTERNATE),
|
||||
(u"venti secondi", "timer20", 500),
|
||||
(u"trenta secondi", "timer30", 501),
|
||||
(u"assorbimento elevato", "highmah", NO_ALTERNATE),
|
||||
(u"temperatura elevata", "hightemp", NO_ALTERNATE),
|
||||
(u"A1 in allarme", "a1_org", NO_ALTERNATE),
|
||||
(u"A1 critico", "a1_red", NO_ALTERNATE),
|
||||
(u"A2 in allarme", "a2_org", NO_ALTERNATE),
|
||||
(u"A2 critico", "a2_red", NO_ALTERNATE),
|
||||
(u"Segnale radio basso", "rssi_org", NO_ALTERNATE),
|
||||
(u"Segnale radio critico", "rssi_red", NO_ALTERNATE),
|
||||
(u"Problema all'antenna della radio", "swr_red", NO_ALTERNATE),
|
||||
(u"Telemetria assente", "telemko", NO_ALTERNATE),
|
||||
(u"Telemetria disponibile", "telemok", NO_ALTERNATE),
|
||||
]:
|
||||
systemSounds.append((s, filename(f, a)))
|
||||
for i, s in enumerate([u"timer", u"timer", u"trasmissione", u"ricezione", u"A1", u"A2", u"altitudine", u"motore",
|
||||
u"carburante", u"temperatura", u"temperatura", u"velocità", "distanza", u"altitudine", u"cella lipo",
|
||||
u"totale lipo", u"tensione", u"corrente", u"consumo", u"potenza", u"accellerazione X", u"accellerazione Y", u"accellerazione Z",
|
||||
u"direzione", u"variometro",u"minimo",u"massimo"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+132+i)))
|
||||
for i, (s, f) in enumerate([
|
||||
(u"carrello chiuso", "gearup"),
|
||||
(u"carrello aperto", "geardn"),
|
||||
(u"flap rientrati", "flapup"),
|
||||
(u"flap estesi", "flapdn"),
|
||||
(u"atterraggiio", "attero"),
|
||||
(u"modalità maestro attiva", "trnon"),
|
||||
(u"modalità maestro disattiva", "trnoff"),
|
||||
(u"motore spento", "engoff"),
|
||||
(u"troppo alto", "tohigh"),
|
||||
(u"troppo basso", "tolow"),
|
||||
(u"batteria scarica", "lowbat"),
|
||||
(u"crow on", "crowon"),
|
||||
(u"crow off", "crowof"),
|
||||
(u"modo velocità", "spdmod"),
|
||||
(u"modo termica", "thmmod"),
|
||||
(u"modo volo normale", "nrmmod"),
|
||||
(u"fase di volo 1", "fltmd1"),
|
||||
(u"fase di volo 2", "fltmd2"),
|
||||
(u"fase di volo 3", "fltmd3"),
|
||||
(u"fase di volo 4", "fltmd4"),
|
||||
(u"fase di volo 5", "fltmd5"),
|
||||
(u"fase di volo 6", "fltmd6"),
|
||||
(u"fase di volo 7", "fltmd7"),
|
||||
(u"fase di volo 8", "fltmd8"),
|
||||
(u"fase di volo 9", "fltmd9"),
|
||||
]):
|
||||
sounds.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsPt():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i in range(101):
|
||||
systemSounds.append((str(i), filename(PROMPT_SYSTEM_BASE+i)))
|
||||
systemSounds.append(("cento", filename(PROMPT_SYSTEM_BASE+101)))
|
||||
systemSounds.append(("duzentos", filename(PROMPT_SYSTEM_BASE+102)))
|
||||
systemSounds.append(("trezentos", filename(PROMPT_SYSTEM_BASE+103)))
|
||||
systemSounds.append(("quatrocentos", filename(PROMPT_SYSTEM_BASE+104)))
|
||||
systemSounds.append(("quinhentos", filename(PROMPT_SYSTEM_BASE+105)))
|
||||
systemSounds.append(("seiscentos", filename(PROMPT_SYSTEM_BASE+106)))
|
||||
systemSounds.append(("setecentos", filename(PROMPT_SYSTEM_BASE+107)))
|
||||
systemSounds.append(("oitocentos", filename(PROMPT_SYSTEM_BASE+108)))
|
||||
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"]):
|
||||
systemSounds.append((s, filename(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),
|
||||
(u"atenção, certifique-se que os interruptores estão na posição certa", "swalert", 482),
|
||||
(u"eeprom corrompida", "eebad", NO_ALTERNATE),
|
||||
(u"formatação da eeprom em curso", "eeformat", NO_ALTERNATE),
|
||||
(u"erro", "error", NO_ALTERNATE),
|
||||
(u"trim centrado", "midtrim", 495),
|
||||
(u"potenciómetro centrado", "midpot", 496),
|
||||
(u"trim no máximo", "endtrim", NO_ALTERNATE),
|
||||
(u"20 segundos", "timer20", 500),
|
||||
(u"30 segundos", "timer30", 501),
|
||||
(u"assorbimento elevato", "highmah", NO_ALTERNATE),
|
||||
(u"temperatura elevata", "hightemp", NO_ALTERNATE),
|
||||
(u"Alarme A1", "a1_org", NO_ALTERNATE),
|
||||
(u"A1 critica", "a1_red", NO_ALTERNATE),
|
||||
(u"Alarme A2", "a2_org", NO_ALTERNATE),
|
||||
(u"A2 critica", "a2_red", NO_ALTERNATE),
|
||||
(u"recepção de sinal muito baixa", "rssi_org", NO_ALTERNATE),
|
||||
(u"recepção de sinal crítica", "rssi_red", NO_ALTERNATE),
|
||||
(u"Problema com a antena do transmissor", "swr_red", NO_ALTERNATE),
|
||||
]:
|
||||
systemSounds.append((s, filename(f, a)))
|
||||
for i, s in enumerate([u"cronómetro", u"cronómetro", u"transmissão", u"recepção", u"A1", u"A2", u"altitude", u"motor",
|
||||
u"combustível", u"temperatura", u"temperatura", u"velocidade", u"distância", u"altitude", u"célula lipo",
|
||||
u"Total lipo", u"tensão", u"corrente", u"consumo", u"potência", u"aceleração X", u"aceleração Y", u"aceleração Z",
|
||||
u"Direcção", u"variómetro", u"mínimo", u"máximo"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+141+i)))
|
||||
for i, (s, f) in enumerate([
|
||||
(u"trem, em cima.", "gearup"),
|
||||
(u"trem, em baixo.", "geardn"),
|
||||
(u"flaps recolhidos", "flapup"),
|
||||
(u"flaps estendidos", "flapdn"),
|
||||
(u"aterragem", "attero"),
|
||||
(u"modo de treino ligado", "trnon"),
|
||||
(u"modo de treino desligado", "trnoff"),
|
||||
(u"motor desligado", "engoff"),
|
||||
(u"muito alto", "tohigh"),
|
||||
(u"muito baixo", "tolow"),
|
||||
(u"bateria fraca", "lowbat"),
|
||||
(u"crou, activo", "crowon"),
|
||||
(u"crou, desligado", "crowof"),
|
||||
(u"modo de velocidade", "spdmod"),
|
||||
(u"modo de térmica", "thmmod"),
|
||||
(u"modo de voo normal", "nrmmod"),
|
||||
(u"fase de voo 1", "fltmd1"),
|
||||
(u"fase de voo 2", "fltmd2"),
|
||||
(u"fase de voo 3", "fltmd3"),
|
||||
(u"fase de voo 4", "fltmd4"),
|
||||
(u"fase de voo 5", "fltmd5"),
|
||||
(u"fase de vôo 6", "fltmd6"),
|
||||
(u"fase de voo 7", "fltmd7"),
|
||||
(u"fase de voo 8", "fltmd8"),
|
||||
(u"fase de voo 9", "fltmd9"),
|
||||
]):
|
||||
sounds.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsEs():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i in range(101):
|
||||
systemSounds.append((str(i), filename(PROMPT_SYSTEM_BASE+i)))
|
||||
systemSounds.append(("ciento", filename(PROMPT_SYSTEM_BASE+101)))
|
||||
systemSounds.append(("doscientos", filename(PROMPT_SYSTEM_BASE+102)))
|
||||
systemSounds.append(("trescientos", filename(PROMPT_SYSTEM_BASE+103)))
|
||||
systemSounds.append(("cuatrocientos", filename(PROMPT_SYSTEM_BASE+104)))
|
||||
systemSounds.append(("quinientos", filename(PROMPT_SYSTEM_BASE+105)))
|
||||
systemSounds.append(("sescientos", filename(PROMPT_SYSTEM_BASE+106)))
|
||||
systemSounds.append(("setecientos", filename(PROMPT_SYSTEM_BASE+107)))
|
||||
systemSounds.append(("ochocientos", filename(PROMPT_SYSTEM_BASE+108)))
|
||||
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"]):
|
||||
systemSounds.append((s, filename(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),
|
||||
(u"Los interruptores no están en la posición correcta, por favor corrijalo", "swalert", 482),
|
||||
(u"eeprom corrompida", "eebad", NO_ALTERNATE),
|
||||
(u"Formateo de eeprom en curso", "eeformat", NO_ALTERNATE),
|
||||
(u"error", "error", NO_ALTERNATE),
|
||||
(u"trim centrado", "midtrim", 495),
|
||||
(u"potenciómetro centrado", "midpot", 496),
|
||||
(u"trim al máximo", "endtrim", NO_ALTERNATE),
|
||||
(u"20 segundos", "timer20", 500),
|
||||
(u"30 segundos", "timer30", 501),
|
||||
(u"assorbimiento elevado", "highmah", NO_ALTERNATE),
|
||||
(u"temperatura elevada", "hightemp", NO_ALTERNATE),
|
||||
(u"Alarma A1", "a1_org", NO_ALTERNATE),
|
||||
(u"A1 crítica", "a1_red", NO_ALTERNATE),
|
||||
(u"Alarma A2", "a2_org", NO_ALTERNATE),
|
||||
(u"A2 crítica", "a2_red", NO_ALTERNATE),
|
||||
(u"recepcion de señal baja", "rssi_org", NO_ALTERNATE),
|
||||
(u"recepción de señal crítica", "rssi_red", NO_ALTERNATE),
|
||||
(u"Problemas con la antena del transmisor", "swr_red", NO_ALTERNATE),
|
||||
(u"Sin telemetría", "telemko", NO_ALTERNATE),
|
||||
(u"Telemetría disponible", "telemok", NO_ALTERNATE),
|
||||
]:
|
||||
systemSounds.append((s, filename(f, a)))
|
||||
for i, s in enumerate([u"cronómetro", u"cronómetro", u"transmisión", u"recepción", u"A1", u"A2", u"altitud", u"motor",
|
||||
u"combustible", u"temperatura", u"temperatura", u"velocidad", u"distancia", u"altitude", u"célula lipo",
|
||||
u"Total lipo", u"voltaje", u"corriente", u"consumo", u"potencia", u"aceleración X", u"aceleración Y", u"aceleración Z",
|
||||
u"dirección", u"variómetro", u"minimo", u"máximo"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+141+i)))
|
||||
for i, (s, f) in enumerate([
|
||||
(u"tren arriba.", "gearup"),
|
||||
(u"tren abajo.", "geardn"),
|
||||
(u"flaps arriba", "flapup"),
|
||||
(u"flaps abajo", "flapdn"),
|
||||
(u"aterrizaje", "attero"),
|
||||
(u"modo de entrenamiento activado", "trnon"),
|
||||
(u"modo de entrenamiento deshabilitado", "trnoff"),
|
||||
(u"motor apagado", "engoff"),
|
||||
(u"muy alto", "tohigh"),
|
||||
(u"muy bajo", "tolow"),
|
||||
(u"bateria baja", "lowbat"),
|
||||
(u"crou, activo", "crowon"),
|
||||
(u"crou, desligado", "crowof"),
|
||||
(u"modo de velocidad", "spdmod"),
|
||||
(u"modo de térmica", "thmmod"),
|
||||
(u"modo de vuelo normal", "nrmmod"),
|
||||
(u"fase de vuelo 1", "fltmd1"),
|
||||
(u"fase de vuelo 2", "fltmd2"),
|
||||
(u"fase de vuelo 3", "fltmd3"),
|
||||
(u"fase de vuelo 4", "fltmd4"),
|
||||
(u"fase de vuelo 5", "fltmd5"),
|
||||
(u"fase de vuelo 6", "fltmd6"),
|
||||
(u"fase de vuelo 7", "fltmd7"),
|
||||
(u"fase de vuelo 8", "fltmd8"),
|
||||
(u"fase de vuelo 9", "fltmd9"),
|
||||
]):
|
||||
sounds.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsDe():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i in range(101):
|
||||
systemSounds.append((str(i), filename(PROMPT_SYSTEM_BASE+i)))
|
||||
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", "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.append((s, filename(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),
|
||||
(u"Schalten fehlpositioniert, bitte pruefen", "swalert", 482),
|
||||
(u"Das EEPROM ist fehlerhaft", "eebad", NO_ALTERNATE),
|
||||
(u"Das EEPROM ist immer formatiert", "eeformat", NO_ALTERNATE),
|
||||
(u"fehler", "error", NO_ALTERNATE),
|
||||
(u"Trim zentriert", "midtrim", 495),
|
||||
(u"Poti zentriert", "midpot", 496),
|
||||
(u"Maximale trimmung erreicht", "endtrim", NO_ALTERNATE),
|
||||
(u"20 sekunden", "timer20", 500),
|
||||
(u"30 sekunden", "timer30", 501),
|
||||
(u"Senderstrom ist zu hoch!", "highmah", NO_ALTERNATE),
|
||||
(u"Sendertemperatur ist zu hoch!", "hightemp", NO_ALTERNATE),
|
||||
(u"A1 schlecht!", "a1_org", NO_ALTERNATE),
|
||||
(u"A1 kritisch!", "a1_red", NO_ALTERNATE),
|
||||
(u"A2 schlecht!", "a2_org", NO_ALTERNATE),
|
||||
(u"A2 kritisch!", "a2_red", NO_ALTERNATE),
|
||||
(u"Funksignal schlecht!", "rssi_org", NO_ALTERNATE),
|
||||
(u"Funksignal kritisch!", "rssi_red", NO_ALTERNATE),
|
||||
(u"Problem mit der sender Antenna", "swr_red", NO_ALTERNATE),
|
||||
]:
|
||||
systemSounds.append((s, filename(f, a)))
|
||||
for i, s in enumerate(["Timer", "Timer", "Sendung", "Empfang", "A1", "A2", "Hoehe", "Motor",
|
||||
"Treibstoff", "Temperatur", "Temperatur", "Geschwindigkeit", "Ferne", "Hoehe", "Lipo-Zelle",
|
||||
"Zellen gesamt", "Spannung", "Strom", "Verbrauch", "Power", "Beschleunigung X", "Beschleunigung Y", "Beschleunigung Z",
|
||||
"Richtung", "Variometer","Minimum","Maximum"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+129+i)))
|
||||
for i, (s, f) in enumerate([
|
||||
(u"Fahrwerk eingezogen", "gearup"),
|
||||
(u"Fahrwerk ausgefahren", "geardn"),
|
||||
(u"Klappen eingefahren", "flapup"),
|
||||
(u"Klappen ausgefahren", "flapdn"),
|
||||
(u"Landung", "attero"),
|
||||
(u"Trainer-Modus ein", "trnon"),
|
||||
(u"Trainer-Modus aus", "trnoff"),
|
||||
(u"Motor aus", "engoff"),
|
||||
(u"zu hoch", "tohigh"),
|
||||
(u"zu niedrig", "tolow"),
|
||||
(u"Batterie schwach", "lowbat"),
|
||||
(u"crow ein", "crowon"),
|
||||
(u"crow aus", "crowof"),
|
||||
(u"Schnell-Modus ist aktiviert", "spdmod"),
|
||||
(u"Thermik-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.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
def ttsCz():
|
||||
systemSounds = []
|
||||
sounds = []
|
||||
|
||||
for i, s in enumerate(["nula", "jedna", "dva"]):
|
||||
systemSounds.append((s, filename(PROMPT_SYSTEM_BASE+i)))
|
||||
for i in range(97):
|
||||
systemSounds.append((str(3+i), filename(PROMPT_SYSTEM_BASE+3+i)))
|
||||
for i, s in enumerate(["sto", u"dvěsta", u"třista", u"čtyřista", u"pětset", u"šestset", "sedmset", "osmset",
|
||||
u"devětset", u"tisíc"]):
|
||||
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",
|
||||
"metr za sekundu", "metry za sekundu", u"metrů za sekundu", "metru za sekundu",
|
||||
"jednotka", "jednotky", "jednotek", "jednotky",
|
||||
"kilometr za hodinu", "kilometry za hodinu", u"kilometrů za hodinu", "kilometru za hodinu",
|
||||
"metr", "metry", u"metrů", "metru",
|
||||
u"stupeň", u"stupně", u"stupňů", u"stupně",
|
||||
"procento", "procenta", "procento", "procenta",
|
||||
u"miliampér", u"miliampéry", u"miliampérů", u"miliampéru",
|
||||
u"miliampérhodina", u"miliampérhodiny", u"miliampérhodin", u"miliampérhodiny",
|
||||
"vat", "vaty", u"vatů", "vatu",
|
||||
"decibel", "decibely", u"decibelů", "decibelu",
|
||||
"stopa", "stopy", "stop", "stopy",
|
||||
"uzel", "uzly", u"uzlů", "uzlu",
|
||||
"hodina", "hodiny", "hodin", "hodiny",
|
||||
"minuta", "minuty", "minut", "minuty",
|
||||
"sekunda", "sekundy", "sekund", "sekundy",
|
||||
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é"]):
|
||||
systemSounds.append((s, filename(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),
|
||||
(u"zapoměl jsi na mě!", "inactiv", 486),
|
||||
(u"plyn není na nule", "thralert", 481),
|
||||
(u"přepínače nejsou ve výchozí poloze", "swalert", 482),
|
||||
(u"neplatná eeprom", "eebad", 483),
|
||||
(u"Oupn najn iks", "tada", 480),
|
||||
(u"dvacet sekund", "timer20", 500),
|
||||
(u"třicet sekund", "timer30", 501),
|
||||
(u"deset sekund", "timer10", NO_ALTERNATE),
|
||||
(u"time up!", "timerlt3", NO_ALTERNATE),
|
||||
(u"A1,nízká", "a1_org", NO_ALTERNATE),
|
||||
(u"A1,kritická", "a1_red", NO_ALTERNATE),
|
||||
(u"A2,nízká", "a2_org", NO_ALTERNATE),
|
||||
(u"A2,kritická", "a2_red", NO_ALTERNATE),
|
||||
(u"nízký RF signál", "rssi_org", NO_ALTERNATE),
|
||||
(u"kritický RF signál", "rssi_red", NO_ALTERNATE),
|
||||
(u"problém s anténou rádia", "swr_red", NO_ALTERNATE),
|
||||
(u"telemetrie ztracena", "telemko", NO_ALTERNATE),
|
||||
(u"telemetrie je funkční", "telemok", NO_ALTERNATE),
|
||||
]:
|
||||
systemSounds.append((s, filename(f, a)))
|
||||
for i, (s, f) in enumerate([
|
||||
(u"podvozek je zasunut", "podvozek0"),
|
||||
(u"podvozek je vysunut", "podvozek1"),
|
||||
(u"klapky jsou zapnuty", "klapky1"),
|
||||
(u"klapky jsou vypnuty", "klapky0"),
|
||||
(u"trenér je zapnut", "trener1"),
|
||||
(u"trenér je vypnutý", "trener0"),
|
||||
(u"motor je vypnut", "motor0"),
|
||||
(u"motor je aktivován", "motor1"),
|
||||
(u"jsi příliš vysoko", "vysoko"),
|
||||
(u"jsi příliš nízko", "nizko"),
|
||||
(u"baterie modelu je vybitá", "bytvybita"),
|
||||
(u"dochází palivo", "palivo"),
|
||||
(u"nízký signál!", "nsignal"),
|
||||
(u"kritický signál!", "ksignal"),
|
||||
(u"rychlý režim aktivován", "r_rychly"),
|
||||
(u"termický režim aktivován", "r_termik"),
|
||||
(u"normální režim aktivován", "r_norm"),
|
||||
(u"režim start aktivován", "r_start"),
|
||||
(u"režim přistání aktivován", "r_pristani"),
|
||||
(u"vario je zapnuto", "vario0"),
|
||||
(u"vario je vypnuto", "vario1"),
|
||||
(u"start povolen", "stpovolen"),
|
||||
]):
|
||||
sounds.append((s, filename(f, PROMPT_CUSTOM_BASE+i)))
|
||||
return systemSounds, sounds
|
||||
|
||||
################################################################
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
if "sky9x" in sys.argv:
|
||||
board = "sky9x"
|
||||
PROMPT_CUSTOM_BASE = 256
|
||||
PROMPT_SYSTEM_BASE = 0
|
||||
elif "taranis" in sys.argv:
|
||||
board = "taranis"
|
||||
PROMPT_CUSTOM_BASE = 256
|
||||
PROMPT_SYSTEM_BASE = 0
|
||||
elif "gruvin9x" in sys.argv:
|
||||
board = "gruvin9x"
|
||||
PROMPT_CUSTOM_BASE = 0
|
||||
PROMPT_SYSTEM_BASE = 256
|
||||
else:
|
||||
board = "stock"
|
||||
PROMPT_CUSTOM_BASE = 0
|
||||
PROMPT_SYSTEM_BASE = 256
|
||||
|
||||
if "sapi" in sys.argv:
|
||||
import pyTTS
|
||||
tts = pyTTS.Create()
|
||||
# tts.SetOutputFormat(16, 16, 1)
|
||||
# tts.Volume = 40
|
||||
# tts.SetRate(1)
|
||||
if "list" in sys.argv:
|
||||
print tts.GetVoiceNames()
|
||||
exit()
|
||||
|
||||
if "mulaw" in sys.argv:
|
||||
defaultcodec = "pcm_mulaw"
|
||||
else:
|
||||
defaultcodec = "pcm_alaw"
|
||||
|
||||
if "en" in sys.argv:
|
||||
directory = "en"
|
||||
voice = "english"
|
||||
if "sapi" in sys.argv:
|
||||
if "scottish" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftFiona_Full_22kHz")
|
||||
voice = "english-scottish"
|
||||
elif "american" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftJennifer_Full_22kHz")
|
||||
voice = "english-american"
|
||||
elif "australian" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftKaren_Full_22kHz")
|
||||
voice = "english-australian"
|
||||
elif "irish" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftMoira_Full_22kHz")
|
||||
voice = "english-irish"
|
||||
else:
|
||||
tts.SetVoiceByName("ScanSoftFiona_Full_22kHz")
|
||||
voice = "english-english"
|
||||
elif "sapi2" in sys.argv:
|
||||
if "scottish" in sys.argv:
|
||||
voiceID = "17"
|
||||
voice = "english-scottish"
|
||||
elif "american" in sys.argv:
|
||||
voiceID = "18"
|
||||
voice = "english-american"
|
||||
elif "australian" in sys.argv:
|
||||
voiceID = "20"
|
||||
voice = "english-australian"
|
||||
elif "irish" in sys.argv:
|
||||
voiceID = "21"
|
||||
voice = "english-irish"
|
||||
elif "french" in sys.argv:
|
||||
voiceID = "19"
|
||||
voice = "english-french"
|
||||
elif "german" in sys.argv:
|
||||
voiceID = "22"
|
||||
voice = "english-german"
|
||||
else:
|
||||
voiceID = "17"
|
||||
voice = "english-english"
|
||||
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-us1"
|
||||
espeakspeed = "150"
|
||||
systemSounds, sounds = ttsEn()
|
||||
|
||||
elif "fr" in sys.argv:
|
||||
directory = "fr"
|
||||
voice = "french"
|
||||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-fr4+f4"
|
||||
espeakspeed = "140"
|
||||
systemSounds, sounds = ttsFr()
|
||||
|
||||
elif "it" in sys.argv:
|
||||
directory = "it"
|
||||
voice = "italian"
|
||||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-it4"
|
||||
espeakspeed = "160"
|
||||
systemSounds, sounds = ttsIt()
|
||||
|
||||
elif "de" in sys.argv:
|
||||
directory = "de"
|
||||
voice = "german"
|
||||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-de4"
|
||||
espeakspeed = "160"
|
||||
systemSounds, sounds = ttsDe()
|
||||
|
||||
elif "pt" in sys.argv:
|
||||
directory = "pt"
|
||||
voice = "portuguese"
|
||||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-pt1+f1"
|
||||
espeakspeed = "160"
|
||||
systemSounds, sounds = ttsPt()
|
||||
|
||||
elif "es" in sys.argv:
|
||||
directory = "es"
|
||||
voice = "spanish"
|
||||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-es1+f1"
|
||||
espeakspeed = "160"
|
||||
systemSounds, sounds = ttsEs()
|
||||
|
||||
elif "cz" in sys.argv:
|
||||
directory = "cz"
|
||||
voice = "czech"
|
||||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftZuzana_Full_22kHz")
|
||||
elif "espeak" in sys.argv:
|
||||
espeakVoice = "mb-cz2"
|
||||
espeakspeed = "150"
|
||||
systemSounds, sounds = ttsCz()
|
||||
|
||||
else:
|
||||
print "which language?"
|
||||
exit()
|
||||
|
||||
if "csv" in sys.argv:
|
||||
csvFile = open("%s-%s.csv" % (voice, board), "w")
|
||||
for s, f in systemSounds:
|
||||
if s and f:
|
||||
l = u""
|
||||
if board in ("sky9x", "taranis"):
|
||||
l += u"SOUNDS/%s/SYSTEM;" % directory
|
||||
l += f + u";" + s + u"\n"
|
||||
csvFile.write(l.encode("utf-8"))
|
||||
for s, f in sounds:
|
||||
if s and f:
|
||||
l = u""
|
||||
if board in ("sky9x", "taranis"):
|
||||
l += u"SOUNDS/%s;" % directory
|
||||
l += f + u";" + s + u"\n"
|
||||
csvFile.write(l.encode("utf-8"))
|
||||
csvFile.close()
|
||||
|
||||
if "zip" in sys.argv:
|
||||
zip_name = "%s-%s.zip" % (voice, board)
|
||||
zip = zipfile.ZipFile(zip_name, "w", zipfile.ZIP_DEFLATED)
|
||||
for s, f in systemSounds:
|
||||
if s and f:
|
||||
generate(s, f)
|
||||
if board in ("sky9x", "taranis"):
|
||||
zip.write(f, "SOUNDS/%s/SYSTEM/" % directory + f)
|
||||
else:
|
||||
zip.write(f, f)
|
||||
os.remove(f)
|
||||
for s, f in sounds:
|
||||
if s and f:
|
||||
generate(s, f)
|
||||
if board in ("sky9x", "taranis"):
|
||||
zip.write(f, "SOUNDS/%s/" % directory + f)
|
||||
else:
|
||||
zip.write(f, f)
|
||||
os.remove(f)
|
||||
zip.close()
|
||||
Reference in New Issue
Block a user