# Arvutab TextGridi intervallikihile märgitud segmintide kestused # Kasuta kaht segmendikihti: esimesele märgi laused/sõnad ja nende piirid, # iga lause esimesel kihil, mille kestusi mõõdetakse peaks algama kaksisveega, nt 'w lähen sauna" # ja laused, kus on midagi valesti, nii et ei peaks mõõtma, võib märkida tärniga, nt '* lähen sauna - ütleb lähen SANNA' # Teisele kihile märgi segmentide kestused, märgenda ainult neid intervalle, mille kestusi mõõdetakse. # Kirjutab tulemused txt-faili # Juba olemasolevat faili üle ei kirjuta, vaid lisab andmed sinna lõppu # TextGrid peab olema avatud, Sound tingimata ei pea # Pärtel Lippus, 29. november 2005 # form-endform vahel on kõik, mis on dialoogiaknas, kui skripti jooksutada # siin määratakse failinimed jms, mis igal skripti jooksutamisel muutub # muutujate nimed kirjutatakse siin ilma $-märgita ja võib suurt algustähte kasutada form Kestuste mõõtmine comment Mis on TextGridi nimi? Kirjuta see ilma faililaiendita. word Failinimi pikad_SP03 comment Kuhu salvestatakse tulemused? Anna täisaadress. text tulemused C:\Documents and Settings\partel\Desktop\pikad\kestused.txt comment Kui fail on juba olemas, EI kirjutata seda üle vaid uued andmed listakse lõppu. endform # kuupäev ja kellaaeg, et kirjutada tulemusfaili andmete juurde nn ajatempel. see on hea selleks, kui sama failiga kasutada sama skripti mitu korda ja teine kord on andmed muutunud, et leida, millised on õiged andmed kuupaev$ = date$ () # Järgmised kaks rida kirjutavad tulemusfaili päise fileappend "'tulemused$'" 'failinimi$' kestused (millisekundites)'newline$' fileappend "'tulemused$'" Praegu on 'kuupaev$' # järgimsed kolm rida leiavad, mitu intervalli on lausete (1.) kihis ja häälikute (2.) kihis select TextGrid 'failinimi$' intervallidL = Get number of intervals... 1 intervallidF = Get number of intervals... 2 # for-endfor konstruktsiooniga saab sama asja teha määratud arv kordi # muutuja 'intervall' väärtus muutub iga korraga, 'intervallid' on see, mitu korda tehakse # esimene for-endfor otsib esimeselt kihilt lauseid # kui segmendi nime esimene vasakpoolne märk on "w", siis kirjutatakse tulemusfaili reavahetus, failinimi ja segmendi nimi. Igale reale on hea failinimi kirjutada selleks, et kui pärast exelis andmeid ringi tõsta, siis on igal real ka KJ märge ja ei lähe sassi. # Kui aga segmendi nimi algab millegi muuga, jäetakse see segment vahele ja minnakse edasi # Järgmine for-endfor konstruktsioon otsib teiselt kihilt segmente. # Käsuga (if nimi$ <> "") kontrollitakse, kas segmendil on nimi. # kui segmendil ei ole nime, siis see jäätakse kõrvale, kui on, kirjutatakse tulemusfaili segmendi kestus. # kuna Praat annab kestused sekundites, on see korrutatud läbi 1000-ga, et saada kestused millisekundites. for intervallL to intervallidL select TextGrid 'failinimi$' nimiL$ = Get label of interval... 1 intervallL algusL = Get starting point... 1 intervallL otsL = Get end point... 1 intervallL if left$ (nimiL$, 1) = "w" fileappend "'tulemused$'" 'newline$''failinimi$' 'nimiL$' for intervallF to intervallidF algusF = Get starting point... 2 intervallF otsF = Get end point... 2 intervallF nimiF$ = Get label of interval... 2 intervallF if algusF > algusL and otsF < otsL if nimiF$ <> "" kestusSek = otsF - algusF kestus = kestusSek * 1000 fileappend "'tulemused$'" 'kestus' endif endif endfor endif endfor # Nüüd tehakse kõik sama läbi nende sõnade/lausetega, mis esimesel kihil olid märgitud tärniga. # Esimene rida kirjutab tulemusfaili, et nüüd tulevad teistmoodi hääldatud sõnad. fileappend "'tulemused$'" 'newline$'Kui failis oli ka kirjasolevast teistmoodi hääldatud sõnu, siis siin nad on: for intervallL to intervallidL select TextGrid 'failinimi$' nimiL$ = Get label of interval... 1 intervallL algusL = Get starting point... 1 intervallL otsL = Get end point... 1 intervallL if left$ (nimiL$, 1) = "*" fileappend "'tulemused$'" 'newline$''failinimi$' 'nimiL$' for intervallF to intervallidF algusF = Get starting point... 2 intervallF otsF = Get end point... 2 intervallF nimiF$ = Get label of interval... 2 intervallF if algusF > algusL and otsF < otsL if nimiF$ <> "" kestusSek = otsF - algusF kestus = kestusSek * 1000 fileappend "'tulemused$'" 'kestus' endif endif endfor endif endfor # tulemusfaili kirjutatakse, et siin on selle faili lõpp ja paar tühja rida, sest järgmise faili andmed, kui just tulemusfailile teist nime ei anna, tulevad kohe siia otsa, ja nii on lihtsam eristada. fileappend "'tulemused$'" 'newline$'----Faili 'failinimi$' lõpp----'newline$''newline$'