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

uute märgenduskihtide lisamise skriptid

parent adebd27d
File added
#######################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kõne foneetiline korpus #
###########SÕNAD AUTOMAATSEST KÕNETUVASTUSEST##########
# Lase wav fail läbi KüBI automaatsest transkribeerijast: http://bark.phon.ioc.ee/webtrans/
# Salvesta saadud .cmt fail korpuse kataloogi alamkataloogi /asr/
# Loeb CMT failist sõnad ja nende alguse ja lõpuajad ja teeb sellest TextGridi
#
# Pärtel Lippus, 4.06.2015
#######################################################
form kõnetuvastusest TextGridile ilma filleritata
comment Lase wav fail läbi KüBI automaatsest transkribeerijast:
comment http://bark.phon.ioc.ee/webtrans/
comment Salvesta saadud .cmt fail korpuse alamkataloogi /asr/
word fail SKK000-000_M
endform
# cmt failidest on ka võimalik leida täidetud pauside tuvastatud märgendeid, aga seda võimalust kasutame kunagi hiljem, praegu lähvad need vaikimisi vaikseteks pausideks
ilma_taidetud_pausideta = 1
clearinfo
kontrolliTegevus = 0
# Loeme seadete kataloogist korpuse kataloogi
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
kaust$ = readFile$: seaded$ + "korpuse_kataloog.txt"
wav_path$ = kaust$ + left$(fail$, 4) +"/"
asr_path$ = kaust$ + "asr/"
# kontrollime, et CTM ja WAV failid oleks olemas
asr_olemas = fileReadable: asr_path$ + fail$ + ".ctm"
if not asr_olemas
exitScript: "Ei leia kõnetuvastuse faili " + asr_path$ + fail$ + ".ctm"
endif
wav_olemas = fileReadable: wav_path$ + fail$ + ".wav"
if not wav_olemas
exitScript: "Ei leia helifaili " + wav_path$ + fail$ + ".wav"
endif
# kontrollime, kas TextGrid on juba olemas
tg_olemas = fileReadable: wav_path$ + fail$ + ".TextGrid"
if tg_olemas
beginPause: "TextGrid olemas"
comment: "Fail on juba märgendatud: " + wav_path$ + fail$ + ".TextGrid"
comment: "Jätkates tehakse .cmt faili põhjal uus TextGrid objekt."
comment: "Faili automaatselt üle ei kirjutata."
kontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
if kontrolliTegevus = 1
goto END
endif
endif
# teisendame cmt faili tabeliks
asr$ = readFile$: asr_path$ + fail$ + ".ctm"
tabel$ = replace$(asr$, " ", tab$, 0)
writeFile: asr_path$ + fail$ + ".Table", "fail" + tab$ + "x" + tab$ + "alg" + tab$ + "kest" + tab$ + "sona" + tab$ + "y" + newline$
appendFile: asr_path$ + fail$ + ".Table", tabel$
Read from file: asr_path$ + fail$ + ".Table"
# eemaldame täidetud pauside read tabelist
if ilma_taidetud_pausideta = 1
selectObject: "Table " + fail$
int = Get number of rows
rida = 1
if rida < int
repeat
lab$ = Get value: rida, "sona"
if lab$ = "" or left$(lab$,2) = "++"; or lab$ = "<#s>"
Remove row: rida
else
rida += 1
endif
int = Get number of rows
until rida >= int
endif
endif
# loeme wav faili LongSound objektiks ja tekitame TextGridi sõnakihiga
Open long sound file: wav_path$ + fail$ + ".wav"
To TextGrid: "sõnad", ""
selectObject: "Table " + fail$
int = Get number of rows
eel_lop = 0
for i to int
selectObject: "Table " + fail$
algus = Get value: i, "alg"
kest = Get value: i, "kest"
sona$ = Get value: i, "sona"
selectObject: "TextGrid " + fail$
if eel_lop < algus
nocheck Insert boundary: 1, algus
endif
x = Get number of intervals: 1
Set interval text: 1, x, sona$
if kest > 0
nocheck Insert boundary: 1, algus+kest
endif
eel_lop = algus+kest
endfor
# asendame ++ märgendiga algavad intervallid pausidega #
selectObject: "TextGrid " + fail$
int = Get number of intervals: 1
for i to int
sona$ = Get label of interval: 1, i
if sona$ = "" or left$(sona$, 2) = "++"
Set interval text: 1, i, "#"
endif
endfor
# asendame täpitähed, mis kuskil mingi kodeeringujama tõttu on äkki sassi läinud
select TextGrid 'fail$'
Replace interval text... 1 0 0 ÃŒ ü Literals
Replace interval text... 1 0 0 À ä Literals
Replace interval text... 1 0 0 õ õ Literals
Replace interval text... 1 0 0 ö ö Literals
Replace interval text... 1 0 0 [sil] # Literals
# eemaldame lühemad kui 10ms pausid ja järjestikused pausid
int = Get number of intervals: 1
i = 2
while i < int
int_e$ = Get label of interval: 1, i-1
int$ = Get label of interval: 1, i
int_j$ = Get label of interval: 1, i+1
if int_e$ <> "#" and int$ = "#" and int_j$ <> "#"
# lühem kui 10 ms
intA = Get start point: 1, i
intL = Get end point: 1, i
if intL - intA < 0.010
Set interval text: 1, i, ""
Remove left boundary: 1, i
endif
elsif int_e$ = "#" and int$ = "#"
# kaks pausi järjest
Set interval text: 1, i, ""
Remove left boundary: 1, i
endif
i += 1
int = Get number of intervals: 1
endwhile
label END
if kontrolliTegevus = 1
appendInfoLine: "Midagi uut ei tehtud, fail on juba märgendatud: " + wav_path$ + fail$ + ".TextGrid"
elsif kontrolliTegevus <> 1 and ilma_taidetud_pausideta = 1
appendInfoLine: fail$ + " loodi kõnetuvastuse põhjal uus TextGrid, sõnatasand " + newline$ + "---kontrolli üle ja salvesta---"
elsif kontrolliTegevus <> 1 and ilma_taidetud_pausideta = 0
appendInfoLine: fail$ + " loodi kõnetuvastuse põhjal uus TextGrid, sõnatasand täidetud pausidega" + newline$ + "---kontrolli üle ja salvesta---"
endif
\ No newline at end of file
######################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kıne foneetiline korpus #
#
# see skript sorteerib sõnad pausidevahelisteks ja lisab segmendinumbri täägi
# siis tuleks lasta fail läbi morfanalüsaatori, tulemus ühestatakse
# Pärtel Lippus, 2.12.2014
# Täiendatud 8.06.2015
######################################################
form sõnad TextGridilt estmorfile
comment Skript avab faili. Kui on lahti, vaata, et oleks salvestatud!
sentence fail_(või_alamkorpus) SKK001-001_M
positive pausi_lavi_(sek) 0.5
choice tahan 1
button üks fail
button kogu kaust
comment Fail/id kirjutatakse EKSKFK/temp/morfimiseks/lausungid_morfile
comment Failidega mine frogger.at.mt.ut.ee & sh yhestatud_morf.sh
endform
Text writing preferences: "UTF-8"
clearinfo
# Loeme seadete kataloogist korpuse kataloogi
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
path$ = readFile$: seaded$ + "korpuse_kataloog.txt"
sihtkaust$ = path$ + "temp/morfimiseks/lausungid_morfile/"
subkorp$ = left$(fail$, 4)
# teeme failinimekirja ja ühtasi kontrollime, et nimekirjas mõni fail ka oleks
if tahan = 1
temp = Create Strings as file list: "temp", path$ + subkorp$ + "/" + fail$ + "*.TextGrid"
faile = Get number of strings
if faile = 0
exitScript: "Seda faili ei leitud: " + path$ + subkorp$ + "/" + fail$ + ".TextGrid"
endif
elsif tahan = 2
temp = Create Strings as file list: "temp", path$ + subkorp$ + "/*.TextGrid"
faile = Get number of strings
if faile = 0
exitScript: "Ühtegi faili ei leitud kaustast: " + path$ + subkorp$ + "/"
endif
endif
# tyhjendame sihtkausta
tyhjenda = Create Strings as file list: "tyhjend", sihtkaust$ + "*"
faile = Get number of strings
if faile > 0
for f to faile
selectObject: tyhjenda
faily$ = Get string: f
deleteFile: sihtkaust$ + faily$
endfor
endif
selectObject: tyhjenda
Remove
#
selectObject: temp
faile = Get number of strings
for f to faile
selectObject: temp
tg$ = Get string: f
failx$ = tg$ - ".TextGrid"
Read from file: path$ + subkorp$ + "/" + tg$
morfimisele$ = ""
selectObject: "TextGrid " + failx$
kihte = Get number of tiers
if kihte > 1
sonu = Get number of intervals: 1
eels$ = "#"
s = 1
repeat
sona$ = Get label of interval: 1, s
# kui on leksikaalne sõna, eemaldame lisamärgid, liitsõnaplussi ja takerduse kriipsu
if sona$ <> "#" and left$(sona$, 1) <> "."
sona$ = if index(sona$, "/") > 0 then left$(sona$, index(sona$, "/")-1) else sona$ fi
sona$ = replace$(sona$, "+", "", 0)
# kui sõnas on takerdus
if index(sona$, "-") > 0
sona$ = replace$(sona$, "-", "", 0)
taker = 1
else
taker = 0
endif
# ja kui pole lex sõna, siis nimetame kõik #-ks
else
sona$ = "#"
endif
# järgmine sõna:
if s < sonu
jargs = s+1
jargs$ = Get label of interval: 1, jargs
# kui on sõna, siis eemaldame lisamärgid
if jargs$ <> "#" and left$(jargs$, 1) <> "."
jargs$ = if index(jargs$, "/") > 0 then left$(jargs$, index(jargs$, "/")-1) else jargs$ fi
jargs$ = replace$(jargs$, "+", "", 0)
else
# kui on paus
s_alg = Get start point: 1, jargs
h_int = Get interval at time: 2, s_alg
h_alg = Get start point: 2, h_int
h_lop = Get end point: 2, h_int
#siis kui on pikem kui pausilävi, on paus
if h_lop - h_alg > pausi_lavi
jargs$ = "#"
# kui jääb alla pausi läve, otsime järgmise sõna peale pausi
else
jargs = Get interval at time: 1, h_lop
jargs$ = Get label of interval: 1, jargs
jargs$ = if index(jargs$, "/") > 0 then left$(jargs$, index(jargs$, "/")-1) else jargs$ fi
jargs$ = replace$(jargs$, "+", "", 0)
endif
endif
# kui on viimane sõna, siis järgmiseks #
else
jargs$ = "#"
endif
# kui eelmine on paus ja järgmine sõna, siis lause alguse tääg
if eels$ = "#" and sona$ <> "#"
if morfimisele$ = "" or right$(morfimisele$, 5) = "</s>" + newline$
morfimisele$ = morfimisele$ + "<s> "
endif
endif
# kui see on sõna ja järgmine ka,
if sona$ <> "#" and jargs$ <> "#"
# kui on takerdus, siis oletame, et taheti järgmist sõna öelda
if taker = 1 and index(jargs$, sona$) >0 and length(sona$) > 3
sona$ = jargs$
endif
# kui järgmine kordab eelmist, siis tag <kordus>
if sona$ = jargs$
morfimisele$ = morfimisele$ + "<" + string$(s) + "><kord>"
else
morfimisele$ = morfimisele$ + "<" + string$(s) + ">" + sona$ + " "
endif
# kui on sõna ja järgmine #, prindime sõna ja lõputäägi
elsif sona$ <> "#" and jargs$ = "#"
morfimisele$ = morfimisele$ + "<" + string$(s) + ">" + sona$ + " </s>" + newline$
endif
s = jargs
until s = sonu
if mid$(morfimisele$, rindex(morfimisele$, "<"), 4) <>"</s>"
morfimisele$ = morfimisele$ + " </s>"
endif
writeFile: sihtkaust$ + failx$ + ".txt", morfimisele$
appendInfoLine: failx$ + " valmis!"
else
appendInfoLine: failx$ + " märgendamata!"
endif
selectObject: "TextGrid " + failx$
Remove
endfor
selectObject: temp
Remove
## Skripti lõpp
\ No newline at end of file
#######################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kıne foneetiline korpus #
#
# see skript lisab ühestatud morfanalüüsi textgridile
# iga märgendatud sõna peaks olema eraldi real, sõnatasandi intervallinumbrid täägides
# Pärtel Lippus, 2.12.2014
# Täiendatud 8.06.2015
#######################################################
form Ühestatud morfi lisamine TextGridile
word fail SKK001-001_M
boolean ava_fail 0
boolean salvesta 0
comment morfitud failid on kaustas ...EKSKFK/temp/morfimiseks/morfyhestatud/
endform
clearinfo
logi$ = ""
# Loeme seadete kataloogist korpuse kataloogi
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
path$ = readFile$ (seaded$ + "korpuse_kataloog.txt")
morf_folder$ = path$ + "temp/morfimiseks/morfyhestatud/"
# kontrollime morf folderit
beginPause: "Morfmärgendus on kaustas"
word: "morf_folder", morf_folder$
kontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
if kontrolliTegevus = 1
goto END
endif
# kas mofmärgendatud fail on olemas?
if not fileReadable: morf_folder$ + fail$ + ".txt"
exitScript: fail$ + " morfitud faili ei leitud!"
endif
if ava_fail = 1
Read from file: path$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
endif
# lisatakse morf kiht taktikihi ja lausungikihi vahele
selectObject: "TextGrid " + fail$
mitu_kihti = Get number of tiers
morf_kiht = mitu_kihti+1
for k to mitu_kihti
kihinimi$ = Get tier name: k
if kihinimi$ = "morf"
beginPause: "Morf kiht " + string$(k) + " on juba olemas! Jätkates kirjutame üle!"
kontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
if kontrolliTegevus = 1
goto END
endif
morf_kiht = k
morfe = Get number of intervals: k
logi$ = logi$ + "Vanal morfkihil oli " + string$(morfe) + " segmenti." + newline$
Remove tier: morf_kiht
mitu_kihti -= 1
elsif kihinimi$ = "CV" or kihinimi$ = "silbid" or kihinimi$ = "taktid"
morf_kiht = k+1
endif
endfor
# Lisame morfkihi ja lisame märgenduse
@suleEditor
Insert interval tier: morf_kiht, "morf"
morf$ = readFile$ (morf_folder$ + fail$ + ".txt")
repeat
rida$ = left$(morf$, index(morf$, newline$)-1)
morf$ = mid$(morf$, index(morf$, newline$) +1, length(morf$) )
if rida$ <> "<s>" and rida$ <> "</s>"
morfmark$ = mid$ (rida$, index(rida$, " ")+4, length(rida$) )
rida$ = rida$ - morfmark$
#kui on korduvad sõnad, siis eelmistele märk külge
if index(rida$, "<kord>") > 0
repeat
segm = number(mid$(rida$, index(rida$, "<")+1, index(rida$, ">")-1) )
@lisaMorf: segm, segm
rida$ = mid$ (rida$, index(rida$, "<kord>")+length("<kord>"), length(rida$) )
until index(rida$, "<kord>") = 0
endif
# kui on üks sõna ja üks segment
if index(rida$, "<") = rindex(rida$, "<") and index (rida$, ">") = rindex(rida$, ">")
segm = number(mid$(rida$, index(rida$, "<")+1, index(rida$, ">")-1) )
@lisaMorf: segm, segm
# kui on mitme segmendi peale, nt New York
else
segm1 = number(mid$(rida$, index(rida$, "<")+1, index(rida$, ">")-1) )
segm2 = number(mid$(rida$, rindex(rida$, "<")+1, rindex(rida$, ">")-1) )
@lisaMorf: segm1, segm2
endif
endif
until morf$ = "</s>" or morf$ = ""
# Soovi korral salvestame faili, aga enne ei hoiata!
if salvesta = 1
Save as text file: path$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
logi$ = logi$ + "fail salvestati: " + path$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
endif
morfe = Get number of intervals: morf_kiht
label END
if kontrolliTegevus = 1
appendInfoLine: fail$ + ": morfmärgendust ei lisatud, skript katkestati!"
else
appendInfoLine: fail$ + " morfkiht nr " + string$(morf_kiht) + " valmis, lisati " + string$(morfe) + " morftasandi segmenti." + newline$ + logi$
endif
# protseduur, mis lisab TextGridile morfmärgendi
procedure lisaMorf: .algS, .lopS
selectObject: "TextGrid " + fail$
algAeg = Get start point: 1, .algS
lopAeg = Get end point: 1, .lopS
nocheck Insert boundary: morf_kiht, algAeg
nocheck Insert boundary: morf_kiht, lopAeg
m_int = Get interval at time: morf_kiht, algAeg
Set interval text: morf_kiht, m_int, morfmark$
endproc
# protseduur, mis paneb avatud Editori aknad kinni, et skript graafika tõttu aeglaseks ei jääks
procedure suleEditor
repeat
nocheck editor: "TextGrid " + fail$
info$ = nocheck Editor info
return = if info$ = "" then 0 else 1 fi
if return
Close
endif
nocheck endeditor
until return = 0
endproc
#skripti lõpp
\ No newline at end of file
#######################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kıne foneetiline korpus #
#
# Teisendab TextGridi sõnatasandi sõnade kaupa tabeliks
# Siis on Heiki-Jaani shelli skript, millega need ära morfida
# Failidega mine frogger.at.mt.ut.ee ja käivita sh tabelid_2_morfitud.sh
# Pärtel Lippus, 10.09.2013
#######################################################
form sõnad TextGridilt estmorfile
comment Skript avab faili. Kui on lahti, vaata, et oleks salvestatud!
sentence fail_(või_kaust) SKK001-001_M
choice tahan 1
button üks fail
button kogu kaust
comment Fail/id kirjutatakse EKSKFK/temp/morfimiseks/tabelid
comment Failidega mine frogger.at.mt.ut.ee & sh tabelid_2_morfitud.sh
endform
# failid peavad olema UTF-8 kodeeringus, et estmorf neid sööks (st ei tohi olla UTF-16, nagu Praat tahaks vaikimisi salvestada)
Text writing preferences... UTF-8
clearinfo
# Loeme seadete kataloogist võimalikud SAMPA sümbolid
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
path$ = readFile$: seaded$ + "korpuse_kataloog.txt"
subkorp$ = left$(fail$, 4)
# tyhjendame
tyhjenda = Create Strings as file list: "tyhjend", path$ + "temp/morfimiseks/tabelid/*"
faile = Get number of strings
if faile > 0
for f to faile
selectObject: tyhjenda
faily$ = Get string: f
deleteFile: path$ + "temp/morfimiseks/tabelid/" + faily$
endfor
endif
selectObject: tyhjenda
Remove
if tahan = 1
temp = Create Strings as file list: "temp", path$ + subkorp$ + "/" + fail$ + "*.TextGrid"
elsif tahan = 2
temp = Create Strings as file list: "temp", path$ + subkorp$ + "/*.TextGrid"
endif
select Strings temp
faile = Get number of strings
for f to faile
select Strings temp
tg$ = Get string: f
failx$ = tg$ - ".TextGrid"
Read from file: path$ + subkorp$ + "/" + tg$
tulem$ = ""
selectObject: "TextGrid " + failx$
sonad = Get number of intervals: 1
for sona to sonad
sona$ = Get label of interval: 1, sona
if left$ (sona$, 1) = "."
elsif sona$ = "#"
else
komm = index (sona$,"/")
ilmaKommita$ = if komm = 0 then sona$ else left$ (sona$,komm-1) fi
kysim = index (ilmaKommita$,"?")
sona$ = if kysim = 0 then ilmaKommita$ else left$ (ilmaKommita$,kysim-1) fi
tulem$ = tulem$ + failx$ + " " + string$(sona) + " """ + sona$ + """ " + newline$
endif
endfor
appendFile: path$ + "temp/morfimiseks/tabelid/" + failx$ + ".txt", tulem$
Remove
endfor
selectObject: temp
Remove
# Skripti lõpp
\ No newline at end of file
# Lisab ühestamata morfmärgenduse, mis on tabelis sõnade kaupa ridadel
#
# Pärtel Lippus, 30.11.2011
form Morfmärgenduse lisamine TextGridile
comment TextGrid peab olema objektiakans, parem kui editor on kinni!
word fail SKK001-001_M
comment morfitud failid on kaustas ...EKSKFK/temp/morfimiseks/morfitud/
endform
path$ = readFile$ (preferencesDirectory$ + "/plugin_KorpuseHaldus/korpuse_kataloog.txt")
morf_folder$ = path$ + "temp/morfimiseks/morfitud/"
pause 'morf_folder$'
# kas mofmärgendatud fail on olemas?
x=fileReadable("'morf_folder$''fail$'.txt")
if x = 1
vead$ = ""
# lisatakse morf kiht taktikihi ja lausungikihi vahele
select TextGrid 'fail$'
mitu_kihti = Get number of tiers
morf_kiht = mitu_kihti+1
for k to mitu_kihti
kihinimi$ = Get tier name... k
if kihinimi$ = "morf"
pause Morf kiht 'k' on juba olemas! Jätkates kirjutame üle!
morf_kiht = k
morfe = Get number of intervals... k
vead$ = "Vanal morfkihil oli 'morfe' segmenti.'newline$'"
Remove tier... morf_kiht
mitu_kihti -= 1
elsif kihinimi$ = "CV" or kihinimi$ = "silbid" or kihinimi$ = "taktid"
morf_kiht = k+1
endif
endfor
Insert interval tier... morf_kiht morf
sonu_s = Get number of intervals... 1
# loeme morfmärgendid ja käime rida-realt läbi
morf$ < 'morf_folder$''fail$'.txt
repeat
c$ = left$(morf$,index (morf$, newline$))
morf$ = replace$(morf$,c$,"",1)
segm_m$ = left$(replace$(c$,"'fail$' ","",1),index( replace$(c$,"'fail$' ","",1), " ")-1)
sona_m$ = mid$(replace$(c$,"'fail$' 'segm_m$' ","",1), 2, index( replace$(c$,"'fail$' 'segm_m$' ","",1), " ")- 3 )
morf_m$ = mid$ (c$, index(c$, " ")+4, index(c$,newline$))-newline$
segm_m = number (segm_m$)
#paneme märgendid TextGridile
if index (morf_m$,mid$(fail$,4,length(fail$))) = 0
select TextGrid 'fail$'
sona_s$ = Get label of interval... 1 segm_m
sona_m$ = if index(sona_m$,"/") = 0 then sona_m$ else left$ (sona_m$,index(sona_m$,"/")-1) fi
sona_s$ = if index(sona_s$,"/") = 0 then sona_s$ else left$ (sona_s$,index(sona_s$,"/")-1) fi
if replace$(sona_m$,"?","",0) = replace$(sona_s$,"?","",0)
sAlg = Get start point... 1 segm_m
sLop = Get end point... 1 segm_m
nocheck Insert boundary... morf_kiht sAlg
nocheck Insert boundary... morf_kiht sLop
segm = Get interval at time... morf_kiht sAlg
Set interval text... morf_kiht segm 'morf_m$'
else
pause segmendid on vahepeal paigast nihkunud?
vead$ = "'vead$'Segm 'segm_m' ei klapi: 'sona_m$' <mf||TG> 'sona_s$''newline$'"
endif
endif
until morf$ = ""
morfe = Get number of intervals... morf_kiht
echo 'fail$' morfkiht nr 'morf_kiht' valmis, lisati 'morfe' morftasandi segmenti.'newline$''vead$'
else
echo Morfitud fail pole loetav!
endif
\ No newline at end of file
#######################################################
# _____ _ __ ___ _ __ _____ _ __ #
# | ___| | |/ / / __| | |/ / | ___| | |/ / #
# | |___ | / | /_ | / | |___ | / #
# | ___| | < \_ \ | < | ___| | < #
# | |___ | \ __| | | \ | | | \ #
# |_____| |_|\_\ |___/ |_|\_\ |_| |_|\_\ #
# TÜ eesti keele spontaanse kıne foneetiline korpus #
#
# Kõnetuvastusest saadud sõnatasandi märgendusest dialoogides
# eemaldab sõnamärgendid sealt, kus signaali intensiivsuse põhjal
# võiks arvata, et räägib teine kõneleja (kui kanalid on veidi üle kostnud)
#
# Pärtel Lippus, 3.01.2014
# Muudetud 4.06.2015
#######################################################
form Eemalda SP2 tekst kõnetuvastatud märgendusest
comment SP1 ja SP2 TG ja LongSound olgu objektiaknas! Määra intensiivuse tase,
comment millest kõrgem on kindlasti SP1 jutt ja baastase, millest vaiksem on kindlasti vaikus.
word fail SKK000-000_N
word fail2 SKK000-000_N
boolean avan_failid 0
integer int_level_(dB) 50
integer int_floor_(dB) 20
endform
clearinfo
kontrolliTegevus = 0
# Loeme seadete kataloogist korpuse kataloogi
seaded$ = preferencesDirectory$ + "/plugin_PhonCorpTools/seaded/"
kaust$ = readFile$: seaded$ + "korpuse_kataloog.txt"
# otsime faile korpuse kataloogist
if avan_failid = 1
# kas failid on loetavad
if not fileReadable: kaust$ + left$(fail$, 4) + "/" + fail$ + ".wav"
exitScript: "Faili pole: " + kaust$ + left$(fail$, 4) + "/" + fail$ + ".wav"
elsif not fileReadable: kaust$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
exitScript: "Faili pole: " + kaust$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
elsif not fileReadable: kaust$ + left$(fail2$, 4) + "/" + fail2$ + ".wav"
exitScript: "Faili pole: " + kaust$ + left$(fail2$, 4) + "/" + fail2$ + ".wav"
elsif not fileReadable: kaust$ + left$(fail2$, 4) + "/" + fail2$ + ".TextGrid"
exitScript: "Faili pole: " + kaust$ + left$(fail2$, 4) + "/" + fail2$ + ".TextGrid"
endif
Open long sound file: kaust$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
Read from file: kaust$ + left$(fail$, 4) + "/" + fail$ + ".TextGrid"
Open long sound file: kaust$ + left$(fail2$, 4) + "/" + fail2$ + ".TextGrid"
Read from file: kaust$ + left$(fail2$, 4) + "/" + fail2$ + ".TextGrid"
endif
# kontrollime, kas on vajalikud märgenduskihid
selectObject: "TextGrid "+ fail$
kihte = Get number of tiers
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
exitScript: selected$ ("TextGrid") + " sõnakihti ei leitud!"
endif
# kontrollime, ega häälikutasandit pole märgendatud juba?
if hKiht > 0
beginPause: "Leiti häälikukiht"
comment: fail$ + " on juba häälikutasandil märgendatud!"
comment: "Oled sa kindel, et tahad jätkata?"
kontrolliTegevus = endPause: "Katkesta", "Edasi", 2,1
if kontrolliTegevus = 1
goto END
endif
endif
# Editoriaknad kinni ja hakkab SP2 jutu eemaldamine
@suleEditor
selectObject: "TextGrid " + fail$
intd = Get number of intervals: sonaKiht
for i to intd
selectObject: "TextGrid " + fail$
alg = Get start point: sonaKiht, i
lop = Get end point: sonaKiht, i
selectObject: "LongSound " + fail$
temp = Extract part: alg, lop, "yes"
int1 = Get intensity (dB)
Remove
selectObject: "LongSound " + fail2$
temp = Extract part: alg, lop, "yes"
int2 = Get intensity (dB)
Remove
selectObject: "TextGrid " + fail$
if int1 < int_floor
Set interval text: sonaKiht, i, "#"
elsif int1 < int_level and int2 > int_floor and int2 > int1
Set interval text: sonaKiht, i, "#"
endif
endfor
# koondame kõrvutised pausisegmendid
selectObject: "TextGrid " + fail$
i = 1
repeat
lab1$ = Get label of interval: sonaKiht, i
if lab1$ = "#"
lab2$ = Get label of interval: sonaKiht, i+1
if lab2$ = "#"
Remove right boundary: sonaKiht, i
Set interval text: sonaKiht, i, "#"