मैं इसी लहजे के साथ सिलेबल्स को एक साथ निकालना चाहता हूं। यदि किसी शब्दांश में उच्चारण नहीं है, तो उच्चारण भाग पर "नहीं" होगा।

मेरा कोडिंग उदाहरण इस तरह दिखता है:

writeInfo: ""

selectObject: "TextGrid example"

# syllable tier is 1
# accent tier is 2
number = Get number of intervals: 1
for i from 1 to number
syllable$ = Get label of intervals: 1, i 
# It seems to be not possible to get time of interval
# I want to get the time of the whole interval, like it's done with points
syllable_time = Get time of interval: 1, i
accent = Get point at time: 2, syllable_time
accent$ = Get label of point: 2, accent
    #if no accent$
    #appendInfoLine syllable$, "      ", "no"
    #elif accent$ <> "-" and accent$ <> "%"
    #appendInfoLine syllable$, "      ", accent$
    #endif
endfor

परिणाम इस तरह दिखना चाहिए:

"de:6       no
I           no
"Ra:n       H*L
"vIl        no
"an         no
"zaI        no
n@m         no
a:          no
"tOm        H*

जोड़ना

परतें 1 और 2:

enter image description here

0
dgr379 7 जिंदा 2018, 15:25

2 जवाब

सबसे बढ़िया उत्तर

आप इसे कुछ ही चरणों में कर सकते हैं। सबसे पहले, परत 2 में एक अतिरिक्त 'no' जोड़ें:

#Select TexGrid
selectObject: 1

number = Get number of intervals: 1

for i from 1 to number
time_start = Get start point: 1, i
#time_end = Get end point: 1, i
name$ = Get label of interval: 1, i
point$ = Get label of point: 2, i

Insert point: 2, time_start, "no"
endfor

फिर, परत 2 से जानकारी निकालें और इसे एक फ़ाइल में सहेजें:

#Select TextGrid
selectObject: 1

number = Get number of points: 2
for n from 1 to number
accent_time = Get time of point: 2, n
syllable = Get interval at time: 1, accent_time 
syllable$ = Get label of interval: 1, syllable
accent$ = Get label of point: 2, n

writeFileLine: "myFile.txt", accent$

endfor

अंतिम चरण के रूप में, आपको अपने परिणाम से उन अतिरिक्त 'no' को निकालना होगा। आइए इसे पायथन में करें (आपके पास मौजूद सभी पिच आकृतियों का उल्लेख करें, इसलिए प्रोग्राम जानता है कि आप किन लाइनों से छुटकारा पाना चाहते हैं):

fo = open("myFile.txt", "r")
st = fo.read();
lis = st.split()
fo.close()


for i, choice in enumerate(lis):
    if choice == 'H*L' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'H*' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*H' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L%' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'H%' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '!H*L' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '!H*' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'H*L?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '..L' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*HL' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '*?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*H?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'H*?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '..H' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '!H' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'H!' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'HH*L' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '!H*L?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == '.L' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*!H' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'L*HL?' and lis[i-1] == 'no':
        lis.pop(i-1)
    elif choice == 'LH*L' and lis[i-1] == 'no':
        lis.pop(i-1)


with open("output.txt", "w") as my_file:
    for i in lis:
        my_file.write(i + "\n")
0
dgr379 6 जून 2018, 12:46

ओह, इसे पहले टियर 2 के लिए अंतराल स्तर के रूप में किया था। अब बिंदु स्तर के रूप में:

objName$ = selected$ ("Sound")
select TextGrid 'objName$'

intervals_1 = Get number of intervals: 1
intervals_2 = Get number of points: 2

for i from 1 to intervals_1
 syl_1$ = Get label of interval: 1, i
 start_1 = Get start point: 1, i
 end_1 = Get end point: 1, i
 for j from 1 to intervals_2
  syl_2$ = Get label of point: 2, j
  time = Get time of point: 2, j
  if syl_1$ != "" and syl_2$ != "" and time > start_1 and time < end_1
   printline 'syl_1$' 'syl_2$'
  endif
 endfor
endfor
0
acousticwug 7 जून 2018, 00:01