*.wav to egymasmelleirt.mp3

Fórumok

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

Hozzászólások

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.

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

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

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