Advertisement
maeblythe

Textgrid to CVVC UST With Intensity

Mar 16th, 2024
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | Source Code | 0 0
  1. # select TextGrid with one interval tier with phonemes
  2. # and corresponding Pitch object
  3. # and corresponding intensity object
  4. # run this script
  5. # a file "praat.ust" will be created where this script is
  6. # stolen from Hataori-P
  7.  
  8. grid = selected: "TextGrid", 1
  9. pitch = selected: "Pitch", 1
  10. intensity = selected: "Intensity", 1
  11.  
  12. selectObject: grid
  13.  
  14. gNumTiers = Get number of tiers
  15. if gNumTiers <> 1
  16. exitScript: "TextGrid doesn't have only 1 tier"
  17. endif
  18.  
  19. gIsInterval = Is interval tier: 1
  20. if not gIsInterval
  21. exitScript: "TextGrid's tier is not Interval Tier"
  22. endif
  23.  
  24. gNumInts = Get number of intervals: 1
  25.  
  26. deleteFile: "praat.ust"
  27. appendFileLine: "praat.ust", "[#VERSION]"
  28. appendFileLine: "praat.ust", "UST Version1.2"
  29. appendFileLine: "praat.ust", "[#SETTING]"
  30. appendFileLine: "praat.ust", "Tempo=360.00"
  31. appendFileLine: "praat.ust", "Tracks=1"
  32. appendFileLine: "praat.ust", "ProjectName=Praat"
  33. appendFileLine: "praat.ust", "VoiceDir="
  34. appendFileLine: "praat.ust", "OutFile="
  35. appendFileLine: "praat.ust", "CacheDir=empty.cache"
  36. appendFileLine: "praat.ust", "Tool1=wavtool.exe"
  37. appendFileLine: "praat.ust", "Tool2=fresamp14.exe"
  38. appendFileLine: "praat.ust", "Mode2=True"
  39.  
  40. prevLbl$ = "-"
  41.  
  42. for .i to gNumInts
  43. selectObject: grid
  44. ts = Get start time of interval: 1, .i
  45. te = Get end time of interval: 1, .i
  46. lbl$ = Get label of interval: 1, .i
  47.  
  48. if lbl$ = ""
  49. lbl$ = "R"
  50. prevLbl$ = "-"
  51. endif
  52.  
  53. if lbl$ = "_"
  54. lbl$ = "R"
  55. prevLbl$ = "-"
  56. endif
  57.  
  58. if lbl$ = "R"
  59. prevLbl$ = "-"
  60. endif
  61.  
  62.  
  63. len = te - ts
  64. qlen = round(len * 960) * 3
  65.  
  66.  
  67. if lbl$ <> "R"
  68. selectObject: pitch
  69. semi = Get quantile: ts, te, 0.5, "semitones re 440 Hz"
  70. semi = round(semi) + 69
  71. else
  72. semi = 60
  73. endif
  74.  
  75. if lbl$ <> "R"
  76. selectObject: intensity
  77. intens = Get quantile: ts, te, 0.50
  78. intens = round(intens * 1.15)
  79. else
  80. intens = 60
  81. endif
  82.  
  83.  
  84.  
  85. appendFileLine: "praat.ust", "[#", .i, "]"
  86. appendFileLine: "praat.ust", "Length=", qlen
  87. appendFileLine: "praat.ust", "Lyric=", prevLbl$, " ", lbl$
  88. if semi > 0
  89. appendFileLine: "praat.ust", "NoteNum=", semi
  90. else
  91. appendFileLine: "praat.ust", "NoteNum=60"
  92. endif
  93. appendFileLine: "praat.ust", "PreUtterance="
  94. appendFileLine: "praat.ust", "Intensity=", intens
  95. appendFileLine: "praat.ust", "Modulation=0"
  96.  
  97. if lbl$ <> "R"
  98. prevLbl$ = lbl$
  99. else
  100. prevLbl$ = "-"
  101. endif
  102.  
  103. endfor
  104.  
  105. appendFileLine: "praat.ust", "[#TRACKEND]"
  106.  
  107. plusObject: pitch
  108.  
  109. writeInfoLine: "File Praat.ust created"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement