( bzs | 2011. 09. 13., k – 16:00 )

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. ---
---