Reputation: 11
I am trying to shift the pitch of a file in 20Hz, but when I do this in praat and get the mean pitch I never get the 20 Hz, just something similar.
For example I have a .85s file with "108.07459844192924 Hz (mean pitch in SELECTION)"; if I go to manipulation, get the pitch tier and shift it 20 Hz the result is a file 126.12524578822578 Hz (mean pitch in SELECTION)
I have already tried changing the time-step, minimum and maximum pitch when creating the manipulation object. That doesn't seem to be the problem
This is my script (I have tested doing it manually and have the same result):
Note: The array dur_files[] has 10 files with different lengths
for i from 0 to 10
for j from 0 to 10
selectObject: dur_files[i]
durat_mod = Get end time
manip = To Manipulation: 0.005, 10, 1000
selectObject: manip
pitch_tier = Extract pitch tier
selectObject: pitch_tier
Shift frequencies: 0, durat_mod, 3*(j-5), "Hertz"
plusObject: manip
Replace pitch tier
removeObject: pitch_tier
selectObject: manip
resynth = Get resynthesis (overlap-add)
removeObject: manip
selectObject: resynth
Rename: selected$ ("Sound") + "_pitch-" + string$(j-5))
lib_files[i,j] = selected()
lib_files_name$[i,j] = selected$()
endfor
endfor
Upvotes: 1
Views: 365
Reputation: 11
Ok after almost a year I can answer my own question:
finding the pitch (F0) of a spech recording is not an straight forward thing, the pitch ony has sense in the voiced parts of the recording (vowels)
Praat in fact, makes the shift in pitch as intended, the measurement is the thing that can have an error
Upvotes: 0