@@ -49,6 +49,9 @@ def tdpsola(x, sr, src_f0, tgt_f0=None, alpha=1, beta=None,
4949 elif beta is None :
5050 beta = 1
5151
52+ min_f0 = src_f0 [np .nonzero (src_f0 )].min ()
53+ pad_len = int (np .ceil (sr / min_f0 ))
54+
5255 n_chan = x .shape [0 ]
5356 output_length = int (np .ceil (x .shape [1 ] * alpha ))
5457 y = np .zeros ((n_chan , output_length ))
@@ -80,9 +83,9 @@ def tdpsola(x, sr, src_f0, tgt_f0=None, alpha=1, beta=None,
8083
8184 output_length = int (np .ceil (x_chan .size * alpha ))
8285
83- pad = int (np .ceil (sr / 100 ))
84- x_chan = np .pad (x_chan , (pad , pad ), 'constant' )
85- y_chan = np .zeros (output_length + 2 * pad ) # output signal
86+ # pad = int(np.ceil(sr / 100))
87+ x_chan = np .pad (x_chan , (pad_len , pad_len ), 'constant' )
88+ y_chan = np .zeros (output_length + 2 * pad_len ) # output signal
8689
8790 tk = pitch_period [0 ] + 1 # output pitch mark
8891 ow = np .zeros (y_chan .shape )
@@ -97,10 +100,10 @@ def tdpsola(x, sr, src_f0, tgt_f0=None, alpha=1, beta=None,
97100 st = pm_chan [i ] - pit
98101 en = pm_chan [i ] + pit
99102
100- gr = x_chan [st + pad : en + pad + 1 ] * win
103+ gr = x_chan [st + pad_len : en + pad_len + 1 ] * win
101104
102- ini_gr = int (round (tk )) - pit + pad
103- end_gr = int (round (tk )) + pit + pad
105+ ini_gr = int (round (tk )) - pit + pad_len
106+ end_gr = int (round (tk )) + pit + pad_len
104107
105108 y_chan [ini_gr : end_gr + 1 ] = y_chan [ini_gr : end_gr + 1 ] + gr
106109 ow [ini_gr : end_gr + 1 ] = ow [ini_gr : end_gr + 1 ] + win
@@ -109,7 +112,7 @@ def tdpsola(x, sr, src_f0, tgt_f0=None, alpha=1, beta=None,
109112 ow [ow < 1e-3 ] = 1
110113
111114 y_chan = y_chan / ow
112- y_chan = y_chan [pad :]
115+ y_chan = y_chan [pad_len :]
113116 y_chan = y_chan [: output_length ]
114117 y [c , :] = y_chan
115118
@@ -167,11 +170,11 @@ def _find_pitch_marks(x, sr, f0, hop_size, win_size):
167170 sample rate of the input audio sequence.
168171 f0 : numpy.ndarray [shape=(num_freqs)]
169172 the fundamental frequency contour of the input audio sequence.
170- p_hop_size : int > 0 [scalar]
173+ hop_size : int > 0 [scalar]
171174 the hop size of f0 contour (in samples).
172- p_win_size : int > 0 [scalar]
173- the window size of pitch tracking algorithm
174- you used. (in samples).
175+ win_size : int > 0 [scalar]
176+ the window size of pitch tracking algorithm
177+ you used. (in samples).
175178
176179 Returns
177180 -------
0 commit comments