test_spectrogramTypes.praat 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. # test_spectrogramTypes.praat
  2. # djmw 20161014
  3. appendInfoLine: "test_spectrogramTypes.praat"
  4. appendInfoLine: tab$ + "read old type ""MelFilter"" and convert"
  5. melf = Read from file: "old_type.MelFilter"
  6. mels = To MelSpectrogram
  7. removeObject: melf, mels
  8. startTime = 0
  9. endTime = 0.5
  10. @testMelSpectrogramInterface
  11. appendInfoLine: "test test_spectrogramTypes.praat OK"
  12. procedure testMelSpectrogramInterface
  13. .tone = Create Sound as pure tone: "t", 1, startTime, endTime, 44100, 440, 0.5, 0.01, 0.01
  14. .mels = To MelSpectrogram: 0.015, 0.005, 100, 100, 0
  15. #
  16. # Draw
  17. #
  18. Erase all
  19. Select outer viewport: 0, 4, 0, 3
  20. Draw frequency scale: 0, 0, 0, 0, "yes"
  21. Select outer viewport: 4, 8, 0, 3
  22. Paint image: 0, 0, 0, 0, 0, 0, "yes"
  23. Select outer viewport: 0, 4, 3, 6
  24. Draw triangular filter functions: 0, 0, "Mel", 0, 0, "no", 0, 0, "yes"
  25. Select outer viewport: 4, 8, 3, 6
  26. Draw spectrum at nearest time slice: (startTime + endTime)/2, 0, 0, 0, 0, "yes"
  27. #
  28. # query
  29. #
  30. @queryTimeDomain
  31. @queryTimeSampling
  32. @queryCommons
  33. Equalize intensities: 80
  34. .mfcc = To MFCC: 12
  35. selectObject: .mels
  36. .intensity = To Intensity
  37. selectObject: .mels
  38. .matrix = To Matrix: "yes"
  39. removeObject: .matrix, .intensity, .mfcc, .mels, .tone
  40. endproc
  41. procedure queryCommons
  42. .lowestFrequency = Get lowest frequency
  43. .highestFrequency = Get highest frequency
  44. assert .lowestFrequency < .highestFrequency; '.lowestFrequency' < '.highestFrequency'
  45. .numberOfFrequencies = Get number of frequencies
  46. .frequencyDistance = Get frequency distance
  47. .fim1 = 0
  48. for .i to .numberOfFrequencies
  49. .fi = Get frequency from row: .i
  50. assert .fim1 < .fi; '.fim1' < '.fi'
  51. .fim1 = .fi
  52. endfor
  53. for .i to 100
  54. .value = Get value in cell: randomUniform (startTime, endTime), randomInteger (1, .numberOfFrequencies)
  55. endfor
  56. endproc
  57. procedure queryTimeDomain
  58. .startTime = Get start time
  59. .endTime = Get end time
  60. .duration = Get total duration
  61. endproc
  62. procedure queryTimeSampling
  63. .numberOfFrames = Get number of frames
  64. .timeStep = Get time step
  65. .previousTime = startTime
  66. for .i to .numberOfFrames
  67. .time = Get time from frame number: .i
  68. assert .time > .previousTime; '.time' > '.previousTime'
  69. .previousTime = .time
  70. endfor
  71. for .i to .numberOfFrames / 10
  72. .frameNumber = Get frame number from time: randomUniform (startTime, endTime)
  73. endfor
  74. endproc