Na.
Múködik!
Gondotam hálám jeléül leírom, mit hoztam ki mindebből, mert csak.
-----------
Adott egy szöveges file, üres sorok nélkül, bal oldalt angol szavak vagy mondatok, jobb oldalt magyar szavak vagy mondatok, a két oldalt szigorúan TAB választja el egymástól, és soron belül csak egyetlen tabulátor van. Csak betűk vagy számok szerepelhetnek a sorokban.
szavak.txt tehát így fest:
door ajtó
window ablak
go fuck out gyere ide, légy szíves
telephone telefon
ennyi a példafile.
Most ráeresztünk erre egy scriptet, mely nem ellenőrzi, hogy megvannak-e a hozzá szükséges programok { apt-get install festival sox espeak }.
ez a script így fest:
#!/bin/bash
cat $1 | awk 'BEGIN {FS=" "}{print "angolwav.sh \"" $1"\"", "\""$2"\""}'>ggggg.temp
# az elozo sorban az FS mezoelvalaszonal az idezojel kozott TAB van !!!
sh ggggg.temp
rm -f ggggg.temp
ls -l
ezt elmentettem mondjuk gen.sh néven, és emigyen indítható a fenti két file:
gen.sh szavak.txt
Rögtön felmerül a kérdés, mi is az az angolwav.sh, mert azt indítja a gen.sh.
az angolwav.sh így fest:
#!/bin/bash
if [ $# -lt 2 ]; then
echo "Usage (hasznalat):"
echo " `basename $0` \"angol mondat\" \"magyar mondat\" " 1>&2
exit 1
fi
Valami=`echo $1 | sed "s/ /_/g"`
valami=`echo $2 | sed "s/ /_/g"`
fajlnev=`echo $Valami---$valami |\
sed "s/?//g" |\
sed "s/,/_/g" |\
sed "s/ó/o/g" |\
sed "s/ü/u/g" |\
sed "s/ö/o/g" |\
sed "s/ű/u/g" |\
sed "s/ú/u/g" |\
sed "s/ő/o/g" |\
sed "s/á/a/g" |\
sed "s/é/e/g" |\
sed "s/í/i/g"`
echo $Valami
echo $valami
# az angol szoveg
echo $1 | text2wave -o "/home/a/mp3/$Valami.wav"
sox /home/a/mp3/$Valami.wav -b 8 -r 8000 /home/a/mp3/_$Valami.wav
rm -f /home/a/mp3/$Valami.wav
# a magyar szoveg
#espeak -vhu -x "$2" -w /home/a/mp3/$valami.wav
espeak -v hu -p 40 -s 165 -k 10 -x "$2" -w /home/a/mp3/$valami.wav
sox /home/a/mp3/$valami.wav -b 8 -r 8000 /home/a/mp3/_$valami.wav
rm -f /home/a/mp3/$valami.wav
sox /home/a/mp3/_$Valami.wav /home/a/mp3/_$valami.wav "/home/a/mp3/$fajlnev.wav"
rm -f /home/a/mp3/_$valami.wav
rm -f /home/a/mp3/_$Valami.wav
sox "/home/a/mp3/$fajlnev.wav" "/home/a/mp3/$fajlnev.ogg"
rm -f "/home/a/mp3/$fajlnev.wav"
#play *.ogg
# itt ertelemszeruen atirhato a /home/a/mp3/ könyvtarnev barmire...
ui:
az *.sh kiterjesztesu fajlokat termeszetesen futtathatova kell tenni, kulonben semmi sem tortenik.
-----------
Szóval mit is művel mindez, amit ennyire bonyolultan írtam ide?
Egy szöveges file sorait soronként felolvassa (az angolt a festivallal, a magyart az espeak-kel), majd kis wav file-ba mentve kiírja nekünk.
Ezután
play *.wav
kiadva a könyvtárban, és fáraszthajtuk környezetünket egy C3PO-hangú szómagolással, ha van elég nagy erősítőnk, a fél utca is hallhatja.
function meg egyéb szép cuccokkal szebbé tehetjük a fentieket, de minek...?
Egyedül azt nem értem, hogy az espeak mi a fenéért nem bírkózik meg az ékezetes karakterekkel a magyar kiejtésnél.
---
--- A gond akkor van, ha látszólag minden működik. ---
---