Commit adebd27d authored by Pärtel Lippus's avatar Pärtel Lippus

lisatud kontrollskriptid

parent 69659bcb
##################################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kõne foneetiline korpus #
# #
# Otsib segmendid, kus
# 1) segmendid sisaldavad seadetes määratud keelatud sümboleid ja reavahetusi
# 2) tühikuid (väljaarvatud morf ja lausungi kihil)
# 3) CV tasandil on muid sümboleid kui "C" ja "V"
# 4) häälelaaditasandil on muid sümboleid kui "kärin"
# #
# Pärtel Lippus, 23.03.2009
# Täiendatud 12.09.2014
# Täiendatud 18.02.2015
# Täiendatud 26.05.2015
##################################################################
form Kontroll 1: sümbolid
comment Otsib kõigilt tasanditelt kahtlaseid sümboleid.
sentence fail SKK001-001_M
endform
clearinfo
vealogi$ = fail$ + " Sümbolite kontrolli logi:"+newline$
nimeKontrolliTegevus = 0
segmKontrolliTegevus = 0
# Loeme seadete kataloogist valemärkide nimekirja
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
valemargid$ = readFile$: seaded$ + "valemargid.txt"
# Loeme seadete kataloogist kihinimed
margenduskihid$ = readFile$: seaded$+"margenduskihid.txt"
nkihinimed = extractNumber(margenduskihid$, "nkihte:")
for kihinimi to nkihinimed
kiht$ [kihinimi] = extractLine$(margenduskihid$, "kiht" + string$(kihinimi) + ":")
endfor
# Käime läbi TextGridi kihtide kaupa
selectObject: "TextGrid " + fail$
kihte = Get number of tiers
for k to kihte
#kontrollime üle kihti nime
k_nimi$ = Get tier name: k
k_nimekontroll = 1
for kihinimi to nkihinimed
if k_nimi$ = kiht$ [kihinimi]
k_nimekontroll = 0
endif
endfor
if k_nimekontroll
beginPause: "Kihi nimi"
comment: string$(k) + ". kihil veider nimi: " + k_nimi$
word: "kihi_uus_nimi", k_nimi$
nimeKontrolliTegevus = endPause: "Katkesta", "Edasi", "Muuda", 2, 1
vealogi$ = vealogi$ + string$(k) + ". kihil veider nimi: " + k_nimi$ + newline$
# kui katkestati, lähme skripti lõppu, kui nimi muudeti, vahetame kihi nime ära
if nimeKontrolliTegevus = 1
goto END
elsif nimeKontrolliTegevus = 3
selectObject: "TextGrid " + fail$
Set tier name: k, kihi_uus_nimi$
k_nimi$ = kihi_uus_nimi$
endif
endif
#otsime kõigilt kihtidelt veidraid sümboleid
selectObject: "TextGrid " +fail$
intrKiht = Is interval tier: k
if intrKiht = 1
intervalle = Get number of intervals: k
j = 1
repeat
selectObject: "TextGrid " + fail$
segm$ = Get label of interval: k, j
if index(segm$, " ") > 0 and k_nimi$ <> "morf" and k_nimi$ <> "lausungid"
viga$ = "tühik"
@kontrolliTextGridi
elsif index(segm$, newline$) > 0
viga$ = "reavahetus"
@kontrolliTextGridi
elsif index(segm$, tab$) > 0
viga$ = "tabulatsioon"
@kontrolliTextGridi
endif
# kontrollime erinevaid krõnks-sümboleid, mida ei peaks TG-l olema
# valemargid.txt on kirjas korpuseHaldus plugina seadetes
for vvv to length(valemargid$)
viga$ = mid$(valemargid$, vvv, 1)
if index(segm$, viga$) > 0
@kontrolliTextGridi
endif
endfor
# CV-tasandil oleks ainult C ja V
if k_nimi$ = "CV"
if segm$ <> "" and segm$ <> "C" and segm$ <> "V"
viga$ = segm$
@kontrolliTextGridi
endif
endif
# häälelaadil ainult kärinad
if k_nimi$ = "häälelaad"
if segm$ <> "kärin" and segm$ <> ""
viga$ = segm$
@kontrolliTextGridi
endif
# häälelaadil ei oleks järjest sama sisuga segmente
if j < intervalle
segm_jargmine$ = Get label of interval: k, j+1
if segm$ = segm_jargmine$
viga$ = "kaks sama intervalli järjest"
@kontrolliTextGridi
endif
endif
endif
j += 1
intervalle = Get number of intervals: k
until j > intervalle
endif
endfor
label END
appendInfo: vealogi$
if segmKontrolliTegevus = 1 or nimeKontrolliTegevus = 1
appendInfoLine: "Sümbolite kontrollskript katkestatud."
else
appendInfoLine: "---KÕIK---"
endif
# Protseduur, mis suumib sümboli vea puhul editoriaknas
procedure kontrolliTextGridi
selectObject: "TextGrid " + fail$
.sAlg = Get starting point: k, j
.sLop = Get end point: k, j
@avaEditor
editor: "TextGrid " + fail$
Select: .sAlg, .sLop
Zoom: .sAlg-0.020, .sLop+0.020
beginPause: "Probleem " + string$(k) + ". kihil"
comment: k_nimi$ + " segm " + string$(j) + " sisaldab: "+ viga$
segmKontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
endeditor
vealogi$ = vealogi$ + k_nimi$ + " segm " + string$(j) + " sisaldab: "+ viga$ + newline$
if segmKontrolliTegevus = 1
goto END
endif
endproc
# protseduur, mis kontrollib, et editor oleks lahti ja kui pole, siis avab
procedure avaEditor
nocheck editor: "TextGrid " + fail$
.info$ = nocheck Editor info
.return = if .info$ = "" then 1 else 0 fi
nocheck endeditor
if .return
selectObject: "TextGrid " + fail$
nocheck plusObject: "Sound " + fail$
nocheck plusObject: "LongSound " + fail$
if numberOfSelected() = 3
minusObject: "LongSound " + fail$
endif
View & Edit
endif
endproc
##################################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kıne foneetiline korpus #
# #
# Otsib segmendid, kus #
# sõna algus või lõpp ei lange kokku häälikutasandi piiridega
# häälikutasandi piirid ei lange kokku CV tasandiga
# ja silbitasandi piirid ei lange kokku häälikutasandi piiridega
# #
# Pärtel Lippus, 23.03.2009 #
# Täiendatud 23.02.2015
# Täiendatud 27.05.2015
##################################################################
form Kontroll 2: joonda eri tasandite piirid
comment Kontrollib, et eri tasandite segmendipiirid oleks joondatud.
sentence fail SKK001-001_M
endform
clearinfo
vealogi$ = fail$ + " segmendipiiride kontrolli logi:"+newline$
nimeKontrolliTegevus = 0
segmKontrolliTegevus = 0
# Loeme seadete kataloogist valemärkide nimekirja
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
valemargid$ = readFile$: seaded$ + "valemargid.txt"
# kontrollime, kas on vajalikud märgenduskihid
selectObject: "TextGrid "+ fail$
kihte = Get number of tiers
if kihte < 2
exitScript: "Fail sisaldab ainult üht märgenduskihti"
endif
sonaKiht = 0
hKiht = 0
cvKiht = 0
sylKiht = 0
for k to kihte
k$ = Get tier name: k
if k$ = "sõnad"
sonaKiht = k
elsif k$ = "häälikud"
hKiht = k
elsif k$ = "CV"
cvKiht = k
elsif k$ = "silbid"
sylKiht = k
endif
endfor
if sonaKiht = 0 or hKiht = 0
exitScript: "Sõnakihti või häälikukihti ei leitud"
endif
# sõnade algused ja lõpud häälikutasandiga
vealogi$ = vealogi$ + "kontrolliti sõnapiire häälikute suhtes" + newline$
selectObject: "TextGrid "+ fail$
nSonu = Get number of intervals: sonaKiht
iSona = 1
repeat
selectObject: "TextGrid "+ fail$
sona$ = Get label of interval: sonaKiht, iSona
if left$(sona$,1) <> "#" and left$(sona$,1) <> "."
# kontrollime sõna alguspiiri
sAlg = Get starting point: sonaKiht, iSona
hAlg = Get interval at time: hKiht, sAlg
hApiir = Get start point: hKiht, hAlg
if hApiir <> sAlg
@kontrolliTextGridi: "algus"
endif
# kontrollime sõna lõpupiiri
sLop = Get end point: sonaKiht, iSona
hAlg = Get interval at time: hKiht, sLop
hApiir = Get start point: hKiht, hAlg
if hApiir <> sLop
@kontrolliTextGridi: "lõpp"
endif
endif
iSona +=1
nSonu = Get number of intervals: sonaKiht
until iSona > nSonu
#kui CV-kiht on olemas, kontrollime et häälikud ja CV-d klapiks
if cvKiht > 0
vealogi$ = vealogi$ + "kontrolliti hääliku ja CV piire" + newline$
# häälikud ja CVd kohakuti
selectObject: "TextGrid "+ fail$
nHaal = Get number of intervals: hKiht
iHaal = 1
repeat
selectObject: "TextGrid "+ fail$
hAlg = Get starting point: hKiht, iHaal
cvAlg = Get starting point: cvKiht, iHaal
if hAlg <> cvAlg
h$ = Get label of interval: hKiht, iHaal
iSona = Get interval at time: sonaKiht, hAlg
sona$ = Get label of interval: sonaKiht, iSona
@kontrolliTextGridi: "häälik<>CV -" + h$ + "-"
endif
iHaal += 1
nHaal = Get number of intervals: hKiht
until iHaal > nHaal
# CVd ja häälikud kohakuti
selectObject: "TextGrid "+ fail$
nHaal = Get number of intervals: cvKiht
iHaal = 1
repeat
selectObject: "TextGrid "+ fail$
cvAlg = Get starting point: cvKiht, iHaal
hAlg = Get starting point: hKiht, iHaal
if hAlg <> cvAlg
h$ = Get label of interval: hKiht, iHaal
iSona = Get interval at time: sonaKiht, hAlg
sona$ = Get label of interval: sonaKiht, iSona
@kontrolliTextGridi: "CV<>häälik -" + h$ + "-"
endif
iHaal += 1
nHaal = Get number of intervals: cvKiht
until iHaal > nHaal
endif
# silbi algused ja lõpud häälikutasandiga
if sylKiht > 0
vealogi$ = vealogi$ + "kontrolliti silbipiire häälikute suhtes" + newline$
selectObject: "TextGrid "+ fail$
nSyl = Get number of intervals: sylKiht
iSyl = 1
repeat
selectObject: "TextGrid "+ fail$
sylAlg = Get starting point: sylKiht, iSyl
h = Get interval at time: hKiht, sylAlg
hAlg = Get starting point: hKiht, h
if hAlg <> sylAlg
syl$ = Get label of interval: sylKiht, iSyl
iSona = Get interval at time: sonaKiht, sylAlg
sona$ = Get label of interval: sonaKiht, iSona
@kontrolliTextGridi: "silbipiir -" + syl$ + "-"
endif
iSyl += 1
nSyl = Get number of intervals: sylKiht
until iSyl > nSyl
endif
label END
writeInfo: vealogi$
if segmKontrolliTegevus = 1
appendInfoLine: "---skript katkestati---"
else
appendInfoLine: "---kõik---"
endif
# Protseduur, mis suumib sümboli vea puhul editoriaknas
procedure kontrolliTextGridi: .mis$
selectObject: "TextGrid " + fail$
.sAlg = Get starting point: sonaKiht, iSona
.sLop = Get end point: sonaKiht, iSona
@avaEditor
editor: "TextGrid " + fail$
Select: .sAlg, .sLop
Zoom: .sAlg-0.020, .sLop+0.020
beginPause: "Piirid nihkes"
comment: string$(iSona) + ". " + sona$ + " " + .mis$ + " pole kohakuti!"
segmKontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
endeditor
vealogi$ = vealogi$ + string$(iSona) + ". " + sona$ + " " + .mis$ + " pole kohakuti!" + newline$
if segmKontrolliTegevus = 1
goto END
endif
endproc
# protseduur, mis kontrollib, et editor oleks lahti ja kui pole, siis avab
procedure avaEditor
nocheck editor: "TextGrid " + fail$
.info$ = nocheck Editor info
.return = if .info$ = "" then 1 else 0 fi
nocheck endeditor
if .return
selectObject: "TextGrid " + fail$
nocheck plusObject: "Sound " + fail$
nocheck plusObject: "LongSound " + fail$
if numberOfSelected() = 3
minusObject: "LongSound " + fail$
endif
View & Edit
endif
endproc
##################################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kõne foneetiline korpus #
# #
# Kontrollib, et 1. kihil oleks pausid märgitud # ja . märkidega #
# ja mis ei ole pausid, oleksid 2. kihil märgendatud #
# Pärtel Lippus 24.04.2008 #
##################################################################
form Kontroll 3: sõna-pausi vastavus
comment Kontrollib, et leksikaalsed sõnad oleksid häälikutasandil märgendatud
comment ja et häälikutasandil märgendatu ei oleks sõnatasandil paus
word fail SKK001-001_M
comment Pausiks loetakse trellidega (#) ja punktiga algavaid (.xxx), muu on sõnad:
boolean kontrolli_sonu 1
boolean kontrolli_pause 1
endform
clearinfo
vealogi$ = fail$ + " Sõna-pausi vastavuse häälikutasandiga kontrolli logi:"+newline$
segmKontrolliTegevus = 0
selectObject: "TextGrid " + fail$
kihte = Get number of tiers
if kihte < 2
exitScript: "Fail sisaldab ainult üht märgenduskihti"
endif
sonaKiht = 0
hKiht = 0
for k to kihte
k$ = Get tier name: k
if k$ = "sõnad"
sonaKiht = k
elsif k$ = "häälikud"
hKiht = k
endif
endfor
if sonaKiht = 0 or hKiht = 0
exitScript: "Sõnakihti või häälikukihti ei leitud"
endif
# käime läbi sõnatasandi ja kontrollime, mis toimub samal ajal häälikutasandil
label START
selectObject: "TextGrid " + fail$
nSonu = Get number of intervals: sonaKiht
iSona = 1
repeat
selectObject: "TextGrid " + fail$
sona$ = Get label of interval: sonaKiht, iSona
if sona$ = "#" or left$ (sona$, 1) = "."
if kontrolli_pause = 1
# kontrollime, et sõnatasandil pausiks märgitud EI oleks häälikutasandil märgendatud
sAlg = Get start point: sonaKiht, iSona
sLop = Get end point: sonaKiht, iSona
hAlg = Get high interval at time: hKiht, sAlg
hLop = Get low interval at time: hKiht, sLop
for h from hAlg to hLop
h$ = Get label of interval: hKiht, h
if not h$ = ""
@kontrolliTextGridi: "PAUS märgendatud häälikutasandil"
goto START
endif
endfor
endif
else
if kontrolli_sonu = 1
# kontrollime, et leksikaalseks sõnaks märgitud sõnad oleksid ka häälikutasandil märgendatud
sAlg = Get start point: sonaKiht, iSona
sLop = Get end point: sonaKiht, iSona
hAlg = Get high interval at time: hKiht, sAlg
hLop = Get low interval at time: hKiht, sLop
for h from hAlg to hLop
h$ = Get label of interval: hKiht, h
if h$ = ""
@kontrolliTextGridi: "SÕNA häälikutasandil märgendamata"
goto START
endif
endfor
endif
endif
iSona += 1
nSonu = Get number of intervals: sonaKiht
until iSona > nSonu
###
label END
writeInfo: vealogi$
if segmKontrolliTegevus = 1
appendInfoLine: "---skript katkestati---"
else
appendInfoLine: "---kõik---"
endif
# Protseduur, mis suumib sümboli vea puhul editoriaknas
procedure kontrolliTextGridi: .mis$
selectObject: "TextGrid " + fail$
.sAlg = Get starting point: sonaKiht, iSona
.sLop = Get end point: sonaKiht, iSona
@avaEditor
editor: "TextGrid " + fail$
Select: .sAlg, .sLop
Zoom: .sAlg-0.020, .sLop+0.020
beginPause: "Sõna-pausi vastavus"
comment: string$(iSona) + ". " + sona$ + ": " + .mis$
segmKontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
endeditor
vealogi$ = vealogi$ + string$(iSona) + ". " + sona$ + ": " + .mis$ + newline$
if segmKontrolliTegevus = 1
goto END
endif
selectObject: "TextGrid " + fail$
endproc
# protseduur, mis kontrollib, et editor oleks lahti ja kui pole, siis avab
procedure avaEditor
nocheck editor: "TextGrid " + fail$
.info$ = nocheck Editor info
.return = if .info$ = "" then 1 else 0 fi
nocheck endeditor
if .return
selectObject: "TextGrid " + fail$
nocheck plusObject: "Sound " + fail$
nocheck plusObject: "LongSound " + fail$
if numberOfSelected() = 3
minusObject: "LongSound " + fail$
endif
View & Edit
endif
endproc
##################################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kõne foneetiline korpus #
# #
# #
# Kontrollib häälikutasandi sümboleid #
# ja nende järjekorda #
# #
# Pärtel Lippus, 10.04.2013 #
# Täiend 23.02.2015
# Täiendatud 28.05.2015
##################################################################
form Kontroll 4: häälikutasand
sentence fail SKK001-001_N
boolean symbolite_kontroll 1
boolean jarjekorra_kontroll 1
endform
clearinfo
vealogi$ = fail$ + " häälikutasandi kontroll"+newline$
segmKontrolliTegevus = 0
# Loeme seadete kataloogist võimalikud SAMPA sümbolid
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
vokaalid$ = readFile$: seaded$ + "SAMPA_vokaalid.txt"
konsonandid$ = readFile$: seaded$ + "SAMPA_konsonandid.txt"
kvaliteet$ = readFile$: seaded$ + "SAMPA_kvaliteet.txt"
# kontrollime, kas on vajalikud märgenduskihid
selectObject: "TextGrid "+ fail$
kihte = Get number of tiers
hKiht = 0
for k to kihte
k$ = Get tier name: k
if k$ = "häälikud"
hKiht = k
endif
endfor
if hKiht = 0
exitScript: "Häälikukihti ei leitud!"
endif
intrKiht = Is interval tier: hKiht
if intrKiht = 0
exitScript: "Häälikukiht peab olema intervallikiht!"
endif
### Esimene osa: sümbolite kontroll
if symbolite_kontroll = 1
vealogi$ = vealogi$ + "sümbolite kontrolli logi:"+newline$
selectObject: "TextGrid " + fail$
intervalle = Get number of intervals: hKiht
j = 1
repeat
selectObject: "TextGrid " + fail$
s2$ = "" ; tühjendame muutuja, et eelmisest segmendist ei jääks mälestust
segm$ = Get label of interval: hKiht, j
# hakkab symbolite järjekorra kontroll
if length (segm$) > 0
s1$ = left$(segm$,1)
if index(vokaalid$, s1$) = 0 and index(konsonandid$, s1$) = 0
@kontrolliTextGridi: 11, "pole vokaal ega konsonant"
else
segm_b$ = replace$ (segm$, s1$, "", 1)
if segm_b$ <> "" ; kui segment pole ühetäheline
s2$ = left$(segm_b$,1)
if index("_:'",s2$) = 0 ; kui järgnev pole lisamärk
if s2$ = s1$ and index(vokaalid$, s1$)=0
@kontrolliTextGridi: 21, "pikk märgi C:, geminaat poolita!"
elsif s2$ = s1$ and index(vokaalid$, s1$)>0 ; pikk vokaal, lubatud
segm_b$ = replace$ (segm_b$, s2$, "", 1)
s2$ = left$(segm_b$,1)
else
@kontrolliTextGridi: 22, "mingi vale märk ['s2$']"
endif
elsif s2$ = "'" ; kui järgnev on palatalisatsioon
if index(konsonandid$, s1$)>0
segm_b$ = replace$ (segm_b$, s2$, "", 1)
s2$ = left$(segm_b$,1)
else
@kontrolliTextGridi: 23, "vokaalid ei saa olla palataliseeritud!"
endif
endif
endif
repeat
if s2$ = "_" ; kui on lisakvaliteet
segm_b$ = replace$ (segm_b$, s2$, "", 1)
s2$ = left$(segm_b$, 1)
if segm_b$ = ""
@kontrolliTextGridi: 31, "lisakvaliteedimärk puudu"
else
s2$ = left$(segm_b$, 1)
if index(kvaliteet$, s2$) = 0
@kontrolliTextGridi: 32, "vale lisakvaliteedimärk ['s2$']"
elsif index(segm_b$, "'") > 0 ; kui siin veel on mõni palatalisatsioonimärk
@kontrolliTextGridi: 33, "palatalisatsioonimärk peab olema enne lisakvaliteeti!"
else ; kui lisakvaliteedimärk on õige, vaatame edasi
segm_b$ = replace$ (segm_b$, s2$, "", 1)
s2$ = left$(segm_b$, 1)
endif
endif
until s2$ <> "_" ; kordame kuni järgnev pole enam lisakvaliteedimärk
elsif s2$ = ":" ; kui lisakvaliteeti pole ja on pikendus
if segm_b$ <> ":" and segm_b$ <> "::"
@kontrolliTextGridi: 34, "pikendusmärk käib kõige lõpus"
endif
endif
endif
endif
intervalle = Get number of intervals: hKiht
j += 1
until j > intervalle
endif
## lõpp symbolite kontroll
### Teine osa: järjekorra kontroll
####!!!! KOGU TEINE OSA VAATA ÜLE !!!
if jarjekorra_kontroll = 1
vealogi$ = vealogi$ + "--------" + newline$ + "lisakvaliteedimärkide järjekorra korrastus:" + newline$
#segm$ = "Ak_k_-_~::"
# Järjekord on selline:
# 0. ' palatalisatsioon
# 1. + eespoolne
# 2. - tagapoolne
# 3. r kõrgem
# 4. o madalam
# 5. ~ nasaalne
# 6. v heliline
# 7. 0 helitu
# 8. k kärisev
# 9. t kähisev
#10. = silbiline
# 11. : pikendus (:: venitus)
# käime läbi häälikukihi ja kontrollime lisamärkide järjekorda
# võtame iga hääliku tükkideks lahti ja pärast paneme tükid kokku tagasi
intervalle = Get number of intervals... hKiht
for j to intervalle
selectObject: "TextGrid " + fail$
segm$ = Get label of interval: hKiht, j
# pikendusmärgid
if index(segm$, "::") > 0
pikkus$ = "::"
elsif index(segm$, ":") > 0
pikkus$ = ":"
elsif index(segm$, ":") = 0
pikkus$ = ""
endif
# palatalisatsioon
palat$ = if index(segm$, "'") > 0 then "'" else "" fi
# eemaldame pikendused ja palatalisatsiooni, et nad pärast panna õige koha peale tagasi
segm_vahe$ = replace$ (segm$, ":", "", 0)
segm_vahe$ = replace$ (segm_vahe$, "'", "", 0)
# eemaldame hääliku põhimärgi
esim = index(segm_vahe$, "_")
algus$ = if esim > 0 then left$(segm_vahe$, esim-1) else segm_vahe$ fi
kv2$ = ""
if esim > 0 ; kas on üldse lisakvaliteedimärki?
pikkus = length (segm_vahe$)
kval$ = mid$(segm_vahe$, esim, pikkus)
kv1$ = replace$(kval$, "_", "", 0)
# kontrollitakse üle, kas lisakvaliteedimärgid on olemas SAMPA_kvaliteet.txt
mitu = length(kv1$)
for m to mitu
m$ = mid$(kv1$,m,1)
if index(kvaliteet$, m$) = 0
@kontrolliTextGridi: 99, "'j'. vale lisamärk: 'm$'"
endif
endfor
# kvaliteedimärgid õigesse järjekorrda
for i to 10
if index(kv1$, mid$(kvaliteet$,i,1)) > 0
kv2$ = kv2$+"_"+mid$(kvaliteet$,i,1)
endif
endfor
endif
# paneme märgendi jälle juppidest kokku
segm_uus$ = algus$ + palat$ + kv2$ + pikkus$
if segm_uus$ <> segm$ ; kui uus järjekord on vanast erinev, muudame TG-l
Set interval text: hKiht, j, segm_uus$
vealogi$ = vealogi$ + string$(j) + ". " + segm$ + " >>> " + segm_uus$ + newline$
endif
endfor
vealogi$ = vealogi$ + "NB! vaata järjekorramuutuste logi hoolega üle, enne kui salvestad!" + newline$
endif
## lõpp järjekorra kontroll
label END
writeInfo: vealogi$
if segmKontrolliTegevus = 1
appendInfoLine: "---skript katkestati---"
else
appendInfoLine: "---kõik---"
endif
# Protseduur, mis suumib sümboli vea puhul editoriaknas
procedure kontrolliTextGridi: .viga, .mis$
selectObject: "TextGrid " + fail$
.sAlg = Get starting point: hKiht, j
.sLop = Get end point: hKiht, j
@avaEditor
editor: "TextGrid " + fail$
Select: .sAlg, .sLop
Zoom: .sAlg-0.050, .sLop+0.050
beginPause: "Häälikutasandi kontroll"
comment: "§" + string$(.viga) + " SEGM "+string$(j) + " ---" + segm$ + "---" + .mis$ + "!"
segmKontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
endeditor
vealogi$ = vealogi$ + "§" + string$(.viga) + " SEGM "+string$(j) + " ---" + segm$ + "---" + .mis$ + "!" + newline$
if segmKontrolliTegevus = 1
goto END
endif
endproc
# protseduur, mis kontrollib, et editor oleks lahti ja kui pole, siis avab
procedure avaEditor
nocheck editor: "TextGrid " + fail$
.info$ = nocheck Editor info
.return = if .info$ = "" then 1 else 0 fi
nocheck endeditor
if .return
selectObject: "TextGrid " + fail$
nocheck plusObject: "Sound " + fail$
nocheck plusObject: "LongSound " + fail$
if numberOfSelected() = 3
minusObject: "LongSound " + fail$
endif