1# test_detectSilences.praat 2# djmw 20170808 3 4appendInfoLine: "test_detectSilences.praat" 5 6text$ [0] = "+-, +-+-, ..., +-+-+-+-+-" 7text$ [1] = "-+, -+-+, ..., -+-+-+-+-+" 8db0 = -30 9for k from 0 to 1 10 appendInfoLine: tab$, text$ [k] 11 sound [k] = Create Sound from formula: "s"+ string$(k), 1, 0, 1, 44100, "randomGauss (0,0.1)" 12 for i to 5 13 selectObject: sound [k] 14 Formula (part): (2*i-1 -k)*0.1, (2*i-k) *0.1, 1, 1, "self*10^(db0 / 20)" 15 tg = To TextGrid (silences): 100, 0, -25, 0.01, 0.01, "silent", "sounding" 16 numberOfIntervals = Get number of intervals: 1 17 numberOfIntervals2 = i * 2 + (if i < 5 then 1-k else 0 fi) 18 assert numberOfIntervals = numberOfIntervals2; 'numberOfIntervals' 'i' 'k' 19 removeObject: tg 20 endfor 21endfor 22 23appendInfoLine: tab$, "silence is +3dB or -3dB w.r.t threshold" 24db0 = -30 25for k from 0 to 1 26 for idb to 2 27 db = -27 - (idb -1) * 6; 3 db around db0 28 selectObject: sound [k] 29 tg = To TextGrid (silences): 100, 0, db, 0.01, 0.01, "silent", "sounding" 30 numberOfIntervals = Get number of intervals: 1 31 numberOfIntervals2 = if db < db0 then 1 else 10 fi 32 assert numberOfIntervals = numberOfIntervals2; 'db' 33 removeObject: tg 34 endfor 35endfor 36 37# sound [0] and sound [1] have 10 intervals 38appendInfoLine: tab$, "minimum sounding/silent interval exceeds largest interval" 39for k from 0 to 1 40 selectObject: sound [k] 41 tg = To TextGrid (silences): 100, 0, db, 0.15, 0.15, "silent", "sounding" 42 numberOfIntervals = Get number of intervals: 1 43 assert numberOfIntervals = 1 44 removeObject: sound [k], tg 45endfor 46 47# more tests... 48 49#removeObject: sound 50appendInfoLine: "test_detectSilences.praat OK" 51