Szép jó estét mindenkinek!
Adott nekem vala egy könyvtáram, tele csodálatos angol szavakkal, kezdőbetűjük mind nagy, formátumuk mindnek wav.
Adott nekem egy másik könyvtáram ugyanilyen jellegű tartalommal, azzal a különbséggel, hogy magyar szavak vannak benne, fájlnevek kis betűsek, formátum wav.
Ezekből nagyon sok van.
Cél ezek bijektív leképezése oly módon, hogy minden egyes fájlhoz az egyik könyvtárból a másikra csak egyetlen fájl vonatkozzon, azaz mondjuk
./VALAMIK/Valami_022.wav
és a
./valamik/valami_022.wav
fájlokból Valami_022.wav keletkezzen.
Az algoritmus most mellékes (ha kész minden, iderakom),
a lényeg, hogy nem ismerek olyan parancssori konvertert, amely két fájlból egy darabot csinál mondjuk 1 másodperces szünettel a 2 között.
Végkimenet mp3 lenne...
Köß minden sugallatot
- 5088 megtekintés
Hozzászólások
$ sox infile1.wav infile2.wav infileN.wav outfile.wav
A szünet a kettő közt lehet akár egy pár másodperces üres wav is. :)
- A hozzászóláshoz be kell jelentkezni
Ez az, amit a sox nem tesz meg nekem. Beírja az első fájlt kétszer az utolsóba.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Ez az, amit a sox nem tesz meg nekem. Beírja az első fájlt kétszer az utolsóba.
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Nekem működik.
ii sox 14.3.1-1 Swiss army knife of sound processing
- A hozzászóláshoz be kell jelentkezni
Hiába.
sox FAIL sox: Input files must have the same sample-rate
pedig mindkettő ugyanoyan file. (alább már rájöttem, mégsem ugyanolyan)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Az utolso a kimenet.
Fogtam egy wav file-t, 32 sec hosszu volt:
A: -0.0 (unknown) of 32.0 (32.0) 0.0%
sox minta.wav minta.wav minta.wav kimenet.wav
A kimenet.wav meg 3x olyan hosszu lett (visszahallgatva stimmel):
A: 78.5 (01:18.5) of 96.0 (01:36.0) 0.0%
Esetleg probald meg megadni, hatha azon a disztron maskepp forditottak, es nem ez a default:
--combine concatenate Concatenate all input files (default for sox, rec)
(amugy ha mp3 kell, megy az is)
sox minta.wav minta.wav minta.wav kimenet.mp3
szerk: nalam is ez a verzio:
sox --version
sox: SoX v14.3.1
--
I hate conspiracy theorists. I'm sure they're all working together somehow to bring down society.
- A hozzászóláshoz be kell jelentkezni
bash-4.1# sox --version
sox: SoX v14.3.0
most veszem észre, hogy a két wav kissé más.
Ezexerint a soxnak meg kéne mondanom, milyen legyen a kimenet?
Mer' nam talájja ki...
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
--help
Igen, ha elter, akkor nem tudja magatol, hogy mi legyen a kimenet. Elvileg tud konvertalni, megadod az adott file elott ami jolesik:
sox minta.wav -b 8 -r 8000 minta2.wav (8 bit, 8kHz mintavetel)
-rw-r--r-- 1 nyos 516224 2011-09-12 16:41 minta2.wav
-rwxr-xr-x 1 nyos 5690924 2011-09-12 16:24 minta.wav*
mplayer es filemeret szerint is mas lett
--
I hate conspiracy theorists. I'm sure they're all working together somehow to bring down society.
- A hozzászóláshoz be kell jelentkezni
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. ---
---
- A hozzászóláshoz be kell jelentkezni
"go fuck out gyere ide, légy szíves"
Remélem nem így tanultad meg :D
- A hozzászóláshoz be kell jelentkezni
de :)
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni
Nalam rendesen felolvassa az ekezetes inputot. Milyen karakterkodolast hasznalsz?
Egyebkent a sed tud olyat, hogy tobb parancsot adsz meg neki:
sed -e 's/.../.../g' -e 's/.../.../g' -e 's/.../.../g'
A sox-nal az a 8 bit 8kHz csak pelda volt, inkabb nezd meg, hogy milyen formaba dolgozik a ket szovegfelolvasod, es utana valassz valami megfelelot!
Egyebkent ez a scriptgeneralas es meghivas elegge.. hmm.. ronda..
--
I hate conspiracy theorists. I'm sure they're all working together somehow to bring down society.
- A hozzászóláshoz be kell jelentkezni
a sed -e kapcsolója szép, még nem használtam, -f -fel külső fájlt hívok meg ha sok mindent akarok cserélni.
Igen, ronda, ha valaki így old meg egy scriptindítást, de néha mégis ehhez folyamodok, majd törlöm és annyi.
8 bit-nél jobb minőség ezekből nem hozható ki, ha mégis, annak örülnék, de úgy is C3PO hangja van a felolvasásnak, ergo tökmindegy.
Karakterkiosztásról semmit sem tudok, itt ülök a műszaki könyvtárban 3 linuxos könyvvel és kutatok bennük...
---
--- A gond akkor van, ha látszólag minden működik. ---
---
- A hozzászóláshoz be kell jelentkezni