Informace o TextGridu

Pro posun na další strany použijte kurzorové šipky

Ⓒ Tomáš Bořil
borilt@gmail.com, 9. 3. 2021

Zadání

Vytvořte skript, který

  • Načte soubor .TextGrid (předpoklad: má alespoň 2 vrstvy), priklad_data.zip (milanek.TextGrid)
  • Vypíše počet vrstev (tiers)
  • Napíše jméno druhé vrstvy
  • Řekne počet intervalů druhé vrstvy
  • V jednom řádku uvede (pro Vámi vybraný interval)
    • label, počáteční čas, konečný čas (na 2 desetinná místa)

Vytvoření skriptu

  1. Vytvořte nový skript, smažte historii.
  2. Načtěte soubor .TextGrid a podívejte se na možnosti tlačítka Query.

Vrstvy textgridů mohou být interval tier (label má začátek a konec) a point tier (label přiřazen jen určitém časovému okamžiku, vhodné např. pro anotování událostí jako úder metronomu).

Proveďte funkce pro

  1. Počet vrstev (tiers)
  2. Jméno druhé vrstvy
  3. Počet intervalů druhé vrstvy
  4. Pro vybraný interval: label, počáteční a koncový čas

Do skriptu vložte historii, upravte ho a uložte.

Úprava skriptu

Skript doplníme o proměnné, jejich výpis a zaokrouhlení na 2 desetinná místa.

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2 = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab', start: 't1:2', end: 't2:2'

Původní skript vytvořený z historie.

Úprava skriptu

Skript spustíme a vidíme, že nedělá to, co bychom chtěli.

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2 = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab', start: 't1:2', end: 't2:2'

Problém je s texty: jméno 2. vrstvy a label intervalu. Aby Praat odlišil číselné proměnné s hodnotami, se kterými jde dále počítat, od pouhých textů, používá tzv. řetězcové proměnné. Ty mají za názvem navíc znak $, tedy např. nazev$.

Upravme ve skriptu proměnné na jmeno2$ a lab$ (vždy na dvou místech ve skriptu).

Fungující skript

clearinfo                                          <==
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"          <==

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers                  <==
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2                         <==
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2       <==
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5                 <==
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5                         <==
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:
t1: 0.25089602

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5                           <==

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:
t1: 0.25089602
t2: 0.42007790

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'              <==
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:
t1: 0.25089602
t2: 0.42007790

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'                   <==
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:
t1: 0.25089602
t2: 0.42007790

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'       <==
printline 'lab$', start: 't1:2', end: 't2:2'

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:
t1: 0.25089602
t2: 0.42007790

Fungující skript

clearinfo
Read from file: "D:\AKU\milanek.TextGrid"

pocetVrstev = Get number of tiers
jmeno2$ = Get tier name: 2
pocetIntervalu2 = Get number of intervals: 2
lab$ = Get label of interval: 2, 5
t1 = Get start point: 2, 5
t2 = Get end point: 2, 5

printline Počet vrstev: 'pocetVrstev'
printline Jméno druhé: 'jmeno2$'
printline Počet intervalů: 'pocetIntervalu2'
printline 'lab$', start: 't1:2', end: 't2:2'       <==

Označený objekt: TextGrid

pocetVrstev: 2
jmeno2$: segment
pocetIntervalu2: 9
lab$: a:
t1: 0.25089602
t2: 0.42007790

Relativní cesty

Všimněme si, že v příkazu pro načtení souboru je uvedena celá cesta k souboru (disk, dvojtečka, složky oddělené lomítkem). Je to tak v pořádku, ale v momentě, kdy by se skript s TextGridem přesunul do jiné složky, budeme muset cestu k souboru ve skriptu opravit.

Read from file: "D:\AKU\milanek.TextGrid"

Naštěstí lze používat i tzv. relativní cestu, která se odvíjí od aktuálního umístění souboru se skriptem. Můžeme tedy ručně celou cestu smazat a ponechat jen název souboru a Praat bude soubor hledat vždy ve složce se skriptem. Výhodou je, že pokud takový program někomu pošleme a on si ho uloží do své složky, nemusí editovat cesty k souborům ve skriptu.

Read from file: "milanek.TextGrid"

Pozn. toto mimochodem platí i pro načítání zvuků v předchozí kapitole a lze používat obecně i pro další typy souborů v Praatu.

A jsme hotovi.