Praat Tutorial
Total Page:16
File Type:pdf, Size:1020Kb
Számítógépes beszédfeldolgozás Bevezetés a Praat program használatába Oktatási segédanyag1 Nyomtatási verzió Készült: 2013/12/31 Utolsó módosítás: 2014/09/15 * Szekrényes István DE BTK Általános és Alkalmazott Nyelvészeti Tanszék 1 Tartalom 1. Bevezetés 3 2. Hozzáférés, telepítés és vezérlés 4 3. Grafikus kezelőfelület 5 3.1. Praat Objects ablak 5 3.2. Praat Picture ablak 7 3.3. Szerkesztő ablakok 8 3.4. Praat Info ablak 9 4. Funkciók 10 4.1. Beszédakusztikai elemzés 10 4.2. Annotáció 11 4.3. Tanuló algoritmusok 11 4.4. Grafikonok, ábrák készítése 12 4.5. Beszédszintetizálás 12 4.6. Kísérletek készítése 13 4.7. Beszédmanipuláció 13 4.8. Statisztikai elemzés 14 5. Praat szkript 15 5.1. A Praat mint programozási nyelv 15 5.2. A szkriptek futtatása 15 5.3. Utasítások használata 16 5.4. Objektumok kezelése 17 5.5. Nyelvi elemek és használatuk 18 5.6. Vezérlés 19 6. Hivatkozások 22 2 1. Bevezetés Az alábbi jegyzet elsősorban a Digitális bölcsészet mesterképzés (MA) Számítógépes nyelvészet szakirányának gyakorlati kurzusain történő felhasználás céljából készült, de hasznos segédanyagként szolgálhat bármely, a számítógépes beszédfeldolgozás területén tevékenykedő, a Praat2 program használatával most vagy eddig csak felületesen ismerkedő kutató számára is. A jegyzetnek nem célja átfogó képet adni a számítógépes beszédfeldolgozás általános módszereiről és alapfogalmairól, hanem előfeltételezve azok legszükségesebb részének ismeretét, gyakorlati és alkalmazás-specifikus irányban igyekszik útmutatóul szolgálni. A Praat program funkcióinak rövid tárgyalásán és felhasználói felület bemutatásán kívül sor kerül az alkalmazás rendkívül kreatívan kihasználható programozási lehetőségeinek taglalására is. A jegyzet HTML verziójában3 a tartalomjegyzék, a kereszthivatkozások és a jegyzetszámok a könnyebb navigációt szolgálandó hiperhivatkozásként funkcionálnak. 3 2. Hozzáférés, telepítés és vezérlés A Praat program egy teljesen ingyenesen és szabadon letölthető4, nyílt forráskódú, folyamatos fejlesztés és CC BY-SA licenc (Creative Commons Attribution ShareAlike5) alatt álló alkalmazás, amely az alábbi platformok mindegyikén elérhető: Windows Macintosh Linux FreeBSD SGI Solaris HPUX Telepítést nem igényel (Windows, Macintosh, Linux), a hivatalos weboldalról letöltött csomagból kitömörített bináris állomány bárhonnan futtatható, a merevlemezen pedig mindössze néhány MB memóriát foglal el. A forráskód letöltése és fordítása, csak bizonyos rendszerek (FreeBSD, SGI, Solaris, HPUX) illetve abban az esetben szükséges, ha a felhasználó további módosításokkal és lehetőségekkel is élni kíván (pl. az alapértelmezett nyelv mellet Python szkripteket is szeretne használni a beépített programozási felületen5). A program indítása és vezérlése többféle módon lehetséges: 1. Grafikus interfész indítása (Praat Objects és Praat Picture ablak) 2. Praat szkriptek futtatása parancssorból (Praatcon) 3. Külső vezérlés (Sendpraat) Az első esetben a kitömörített bináris állomány futtatásával (Windows: Praat.exe, MacOS X: Praat.app, Linux: praat) a 3. fejezetben ismertetésre kerülő Praat Objects és Praat Picture ablak grafikus felületén tudjuk megkezdeni a munkát. Unix és MacOS X rendszerek alatt parancssorból is indíthatunk Praat szkripteket a parancs argumentumában megadott paraméterekkel (Windows rendszer alatt ez csak a Praatcon7 segédprogrammal valósítható meg). A harmadik alternatívaként említett külső vezérlésre a Senpraat8 nevezetű (a hivatalos weboldalról szintén letölthető) segédprogram szolgál, amellyel a Praat egy már elindított példányának tudunk parancssorból (vagy akár egy másik alkalmazásból) üzeneteket elküldeni és azokkal vezérelni a program működését. Az üzeneteket a következő szintaxis szerint kell továbbítanunk: sendpraat [időlimit] praat|als üzenet Ahol az üzenet rész tartalmazza az elküldendő utasítást vagy utasításokat. A vezérléshez használható parancsok előre definiáltak. Az alábbi "Quit" parancsszót tartalmazó üzenet például leállítja a Praat programot: ./sendpraat 0 praat Quit A következő példa már valamivel komplikáltabb, mivel több, egymás után végrehajtandó utasítást is tartalmaz, melyek közül az első egy argumentummal (a beolvasandó hangfájl elérési útjával) is el van látva: ./sendpraat 1000 praat "Read from file: hangok/hello.wav" "Play reverse" "Remove" Az üzenet hatására a Praat program először a hangok könyvtárból beolvassa a hello.wav fájt, majd visszafelé lejátssza azt, végül eltávolítja a listából. A példából az is látható, hogy a szóközökkel és argumentumokkal ellátott utasításokat idézőjelek között kell megadni, hogy az szóköz utáni rész ne új utasításként értelmeződjön. A parancssori utasítások szerkesztésével és használatával a Praat szkriptekről szóló 5. fejezet foglalkozik majd részletesebben, mivel főként a feldolgozási folyamatok automatizálásánál illetve komplikáltabb feladatok megvalósításához lesznek hasznosak. A programmal funkcióival való elsődleges ismerkedést egyszerűbb és átláthatóbb a grafikus interfész használatával elkezdeni. 4 3. Grafikus kezelőfelület A grafikus kezelőfelület a program (Windows: Praat.exe, MacOS X: Praat.app, Linux: praat) indítása után két külön egységre, a Praat Objects és a Praat Picture ablakra tagolódik. A Praat Objects ablak a Praatban használt különféle objektumok (pl. a feldolgozandó hangfájlok) általános kezelésére, a Praat Picture pedig az objektumok vizuális megjelenítésére szolgál. 3.1. Praat Objects ablak 1. ábra - Praat objects ablak (MacOS X) Az 1. ábrán látható Praat Objects ablak funkcióit tekintve négy különböző részre tagolható tovább: 1. Statikus menü (Praat, New, Open, Save) 2. Dinamikus menü (kijelölt objektumok függvényében változik) 3. Objektumok listája (a beolvasott/létrehozott objektumok függvényében változik) 4. Kezelőgombok (Rename, Copy, Inspect, Info, Remove) A statikus menü (az ablak fölső részén, horizontális elrendezésben) és a kezelőgombok (az objektumokat tartalmazó lista alatt) a program használata során folyamatosan és változatlan lehetőségekkel elérhetők (megjegyzés: MacOS X rendszereknél a statikus menü Praat menüje a fölső tálcán található meg). Az objektumok listája az objektumok kezelése (beolvasás, létrehozás, eltávolítás) során értelemszerűen megváltozhat, a dinamikus menü (az ablak jobb oldalán, vertikális elrendezésben) pedig mindig az aktuálisan kijelölt objektum(ok) típusának megfelelően ajánl fel további kezelési lehetőségeket (az 1. ábrán kijelölt objektum esetében ez a Sound Help, View & Edit, Play stb. utasítások lesznek). A statikus menü Save menüje a dinamikus menü utasításaihoz hasonlóan szintén az aktuálisan kijelölt objektum típusának megfelelő formátumokat kínál fel a merevlemezre történő kiíráshoz. A listában szereplő minden objektum három alapvető tulajdonsággal rendelkezik: 5 1. Azonosító: beolvasás/létrehozás után minden objektum automatikusan kap egy egyedi sorszámot 2. Típus: az objektum típusának függvénye (az elérhető típusok teljes listája felelhető a Praat hivatalos oldalán9) 3. Név: tetszőleges elnevezés (beolvasáskor a beolvasott fájl nevét kapja meg) Az 1. ábra listájában található objektumok esetében ezek a tulajdonságok az 1. táblázatban látható értékeket veszik fel: Azonosító Típus Név 1 Sound hang1 2 Sound hang2 3 Sound hang3 4 Pitch hang3 5 Intensity hang3 1. táblázat - Az objektumok táblázatos megjelenítése A lista alatt található kezelőgombokkal a lista elemein különféle műveleteket hajthatunk végre. Az aktuálisan kijelölt objektumokat például a Remove gombbal tudjuk eltávolítani, míg a Copy gombbal egy másolatot készíthetünk róla (ha másolat nevét nem változtatjuk meg, akkor az így keletkező és az eredeti objektum csak azonosító számukban fognak különbözni). A statikus menü legfontosabb funkciói: 1. Objektumok létrehozása (New menü) 2. Objektumok beolvasása a merevlemezről (Open menü - korábbi verziókban: Read) 3. Objektumok kiíratása a merevlemezre (Save menü - korábbi verziókban: Write) 4. Praat szkriptek megnyitása és futtatása (Praat menü) 5. Beállítások és általános információk lekérdezése (Praat menü) A listában beolvasott vagy létrehozott objektumok a számítógép fizikai memóriájába töltődve közvetlenül hozzáférhetők, ezért a számítógép memóriakapacitásának függvénye, hogy egyszerre mennyi és milyen méretű objektumot tudunk a listába helyezni. A fájlok beolvasására általános esetben az Open menü "Read from file..." utasítása szolgál. Használatakor a beolvasott fájl formátumát a Praat automatikusan azonosítja (amennyiben a formátum támogatott), és a listába bekerülő objektumot hozzárendeli egy a fájl formátumának megfelelő típushoz. Az 1. ábrán látható lista első három objektuma például a "Sound" típushoz kerültek hozzárendelésre. Az Open menüben található egyéb alternatívákkal a beolvasandó fájl formátumát és a belőle létrehozandó objektum típusát tudjuk előre specifikálni. Az "Open long sound file..." utasítás például nem "Sound", hanem "LongSound" típusú objektumokat fog létrehozni a beolvasott hangfájlokból. Új objektumokat a New menüben tudunk létrehozni párbeszédpanelek segítségével. A párbeszédpanelek az objektum típusának és a létrehozás módjának megfelelően paraméterezhetők. 6 2. ábra - Hanghullám generálása formulából A 2. ábrán látható párbeszédpanel a New menü "Create Sound from formula..." utasítása után ugrik elő. Az utasítás végén szereplő "..." karakterek jelzik, hogy az utasítás további paramétereket ("Name", "Number of channels", "Start time", "End time" stb.) vár, amelyeket a párbeszédpanel vonatkozó mezőiben tudunk megadni, majd az "OK" gombra kattintva jóváhagyni. A dinamikus menü bizonyos utasításának