def f0transform(self, x, completion=False):
"""Transform F0 of given waveform signals using
Parameters
---------
x : array, shape ('len(x)')
array of waveform sequence
completion : bool, optional
Completion of high frequency range of F0 transformed wavform based on
unvoiced analysis/synthesis voice of given voice and high-pass filter.
This is due to loose the high frequency range caused by resampling
when F0ratio setting to smaller than 1.0.
Returns
---------
transformed : array, shape (`len(x)`)
Array of F0 transformed waveform sequence
"""
self.xlen = len(x)
# WSOLA
wsolaed = self.wsola.duration_modification(x)
# resampling
transformed = resample(wsolaed, self.xlen)
# Frequency completion when decrease F0 of wavform
if completion:
if self.f0rate > 1.0:
raise ValueError("Do not enable completion if f0rate > 1.")
transformed = self._high_frequency_completion(x, transformed)
return transformed
评论列表
文章目录