mirror of
https://github.com/opentx/opentx.git
synced 2025-07-24 00:35:18 +03:00
More TTS work:
French numbers now ok with gender. 200ms removed at the start and the end of all prompts
This commit is contained in:
parent
17945fc24f
commit
7ca6a733c8
3 changed files with 72 additions and 51 deletions
56
util/tts.py
56
util/tts.py
|
@ -13,10 +13,6 @@
|
|||
# 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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import os, sys, shutil, platform, subprocess, wave, zipfile
|
||||
|
||||
def generate(str, idx):
|
||||
|
@ -31,7 +27,23 @@ def generate(str, idx):
|
|||
else:
|
||||
result = idx + ".wav"
|
||||
print result, str
|
||||
tts.SpeakToWave(result, str)
|
||||
|
||||
temp = "_" + result
|
||||
tts.SpeakToWave(temp, str)
|
||||
|
||||
i = wave.open(temp, "r")
|
||||
n = i.getnframes()
|
||||
f = i.readframes(n)
|
||||
i.close()
|
||||
o = wave.open(result, "w")
|
||||
o.setnchannels(i.getnchannels())
|
||||
o.setsampwidth(i.getsampwidth())
|
||||
o.setframerate(i.getframerate())
|
||||
o.writeframes(f[6400:-6400])
|
||||
o.close()
|
||||
|
||||
os.remove(temp)
|
||||
|
||||
else:
|
||||
subprocess.Popen(["C:\Program Files\eSpeak\command_line\espeak.exe", "-z", "-w", "%04d.wav" % idx, str], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
if not "speak" in sys.argv:
|
||||
|
@ -39,13 +51,9 @@ def generate(str, idx):
|
|||
subprocess.Popen(["D:\Perso\workspace\companion9x\AD4CONVERTER.EXE", "-E4", result], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
result = result.replace(".wav", ".ad4")
|
||||
else:
|
||||
try:
|
||||
os.remove("_"+result)
|
||||
except:
|
||||
pass
|
||||
os.rename(result, "_"+result)
|
||||
subprocess.Popen(["C:/Programs/ffmpeg/bin/ffmpeg.exe", "-y", "-i", "_"+result, "-acodec", "pcm_alaw", result], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
os.remove("_"+result)
|
||||
os.rename(result, temp)
|
||||
subprocess.Popen(["C:/Programs/ffmpeg/bin/ffmpeg.exe", "-y", "-i", temp, "-acodec", "pcm_alaw", "-ar", "16000", result], stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
|
||||
os.remove(temp)
|
||||
|
||||
if result:
|
||||
return [result]
|
||||
|
@ -60,9 +68,9 @@ if __name__ == "__main__":
|
|||
if "sapi" in sys.argv:
|
||||
import pyTTS
|
||||
tts = pyTTS.Create()
|
||||
tts.SetOutputFormat(16, 16, 1)
|
||||
# tts.SetOutputFormat(16, 16, 1)
|
||||
# tts.Volume = 40
|
||||
tts.SetRate(1)
|
||||
# tts.SetRate(1)
|
||||
if "list" in sys.argv:
|
||||
print tts.GetVoiceNames()
|
||||
|
||||
|
@ -85,22 +93,20 @@ if __name__ == "__main__":
|
|||
if "sapi" in sys.argv:
|
||||
tts.SetVoiceByName("ScanSoftVirginie_Full_22kHz")
|
||||
voice = "french"
|
||||
for i in range(20):
|
||||
for i in range(101):
|
||||
systemSounds.extend(generate(str(i), i))
|
||||
for i in range(20, 100, 10):
|
||||
systemSounds.extend(generate(str(i), 20+(i-20)/10))
|
||||
systemSounds.extend(generate("cent", 28))
|
||||
systemSounds.extend(generate("mille", 29))
|
||||
for i, s in enumerate(["heure", "minute", "seconde", "", "", "", "", "et", "moins"]):
|
||||
systemSounds.extend(generate(s, 40+i))
|
||||
|
||||
systemSounds.extend(generate("1000", 101))
|
||||
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.extend(generate(s, 102+i))
|
||||
for i, s in enumerate(["et", "moins"]):
|
||||
systemSounds.extend(generate(s, 117+i))
|
||||
for i, s in enumerate(["timer", "", "tension", "tension", "émission", u"réception", "altitude", "moteur",
|
||||
"essence", u"température", "température", "vitesse", "distance", "altitude", "élément lipo",
|
||||
"total lipo", "tension", "courant", "consommation", "puissance", "accelération X", "accelération Y", "accelération Z",
|
||||
"orientation", "vario"]):
|
||||
systemSounds.extend(generate(s, 101+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", "", "pieds", "knotts"]):
|
||||
systemSounds.extend(generate(s, 50+i))
|
||||
systemSounds.extend(generate(s, 141+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", "", "pieds", "knotts", "heure", "minute", "seconde"]):
|
||||
systemSounds.extend(generate(s, 120+i))
|
||||
for s, f in [(u"train rentré", "gearup"),
|
||||
(u"train sorti", "geardn"),
|
||||
(u"volets rentrés", "flapup"),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue