resamp module
- class resamp.Resamp(input_path: str, output_path: str, target_tone: str, velocity: 100, flag_value: str = '', offset: float = 0, target_ms: float = 0, fixed_ms: float = 0, end_ms: float = 0, volume: int = 100, modulation: int = 0, tempo: str = '!120', pitchbend: str = '')
ベースクラス:
object
伸縮機の実際の動作を規定します。処理の順序は下記の通りフラグをパース
入力ファイルのworldパラメータを取得
wavファイルの読み込み
harvestでf0取得
stonemaskでf0補正
cheaptrickでスペクトル包絡取得
d4cで非周期性指標取得
worldパラメータの伸縮(長さ)
音高・モジュレーションの適用(ピッチ)
ピッチの適用(tフラグもここで適用)
worldパラメーター用の加工処理
f0に影響するフラグ
スペクトル包絡に影響するフラグ(gフラグ)
非周期性指標に影響するフラグ(Bフラグ)
音声合成
wav波形の加工処理
音量に関するフラグ(Pフラグ)
音量の適用
wavファイルの出力
- input_path
原音のファイル名
- Type
str
- input_data
wavから読み込んだ波形データ
- Type
np.ndarray of float64
- framerate
wavのサンプリング周波数
- Type
int
- f0
- wavのf0(音高)データの1次元配列。settings.PYWORLD_PERIOD(デフォルト5ms)毎に生成される。
- Type
np.ndarray of float64
- t
- 各フレームの時間的位置(sec)settings.PYWORLD_PERIOD(デフォルト5ms)毎に生成される。例えば、settings.PYWORLD_PERIOD=5のとき、t[100]=0.5
- Type
np.ndarray of float64
- sp
- wavのスペクトル包絡(声質)データの2次元配列。1次元目は時間軸で、settings.PYWORLD_PERIOD(デフォルト5ms)毎に生成される。2次元目は周波数軸で、fft_sizeに基づき決定する。
- Type
np.ndarray of float64
- ap
- wavの非周期性指標データの2次元配列。1次元目は時間軸で、settings.PYWORLD_PERIOD(デフォルト5ms)毎に生成される。2次元目は周波数軸で、fft_sizeに基づき決定する。
- Type
np.ndarray of float64
- output_data
worldのパラメータから合成した波形データ
- Type
np.ndarray of float64
- output_path
wavファイルの出力先パス
- Type
str
- target_tone
- 音高名(A4=440Hz)。半角上げは#もしくは♯半角下げはbもしくは♭で与えられます。
- Type
str
- target_frq
音高の周波数
- Type
float
- velocity
子音速度
- Type
int
- flag_value
フラグ(省略可)
- Type
str, default ""
- flags
入力されたフラグをパースしたもの
- Type
flags.Flags, default settings.FLAGS
- offset
入力ファイルの読み込み開始位置(ms)
- Type
float, default 0
- target_ms
- 出力ファイルの長さ(ms)UTAUでは通常50ms単位に丸めた値が渡される。
- Type
float, default 0
- target_frames
target_msをworld仕様のフレーム数に変換したもの
- Type
int
- fixed_ms
offsetからみて通常伸縮しない長さ(ms)
- Type
float, default 0
- fixed_frames
worldパラメータのうち、前から何フレームが固定範囲に入るか?
- Type
int
- end_ms
- 入力ファイルの読み込み終了位置(ms)(省略可 default:0)正の数の場合、ファイル末尾からの時間負の数の場合、offsetからの時間
- Type
float, default 0
- volume
音量。0~200(省略可)
- Type
int, default 100
- modulation
モジュレーション。0~200(省略可)
- Type
int, default 0
- tempo
- ピッチのテンポ数字の頭に!がついた文字列
- Type
str, default "!120"
- pitchbend
- ピッチベンド。(省略可)-2048~2047までの12bitの2進数をbase64で2文字の文字列に変換し、同じ数字が続く場合ランレングス圧縮したもの
- Type
str, default ""
- pitches
- 与えられたピッチ配列を数値配列に変換したもの
- Type
np.ndarray of float64
- adjustVolume()
- self._volumeを使用して、self._output_dataを更新します。また、settings.OUT_WAVE_EFFECTSも適用します。
メモ
音声合成後のフラグ処理を変更したい場合、このメソッドをオーバーライドしてください。
- property ap: numpy.ndarray
- applyPitch()
- self._target_ms, self._tempo, self._framerate, self,_pitchbendを使用して、self._pitches, self._f0を更新します。
メモ
ピッチの適用およびピッチに関するフラグの処理を変更したい場合、このメソッドをオーバーライドしてください。メモ
UTAUのピッチ数列および、tフラグは1cent単位で与えられます。100cent = 半音のため、1オクターブは1200cent1オクターブ上がると周波数が2倍になることから、音程を1cent上げる処理は、元の周波数 * 2^(1/1200)- 例外
ValueError -- toneの書式が適正でない場合
ValueError -- tempoに有効な文字列が渡されなかったとき
- property end_ms: float
- property f0: numpy.ndarray
- property fixed_frames: int
- property fixed_ms: float
- property flag_value: str
- property flags: flags.Flags
- property framerate: int
- getInputData(f0_floor: float = 71.0, f0_ceil: float = 800.0, frame_period: float = 5.0, q1: float = - 0.15, threshold: float = 0)
入力された音声データからworldパラメータを取得し、self._input_data, self._framerate, self._f0, self._sp, self._apを更新します。
メモ
音声データの取得方法を変更したい場合、このメソッドをオーバーライドしてください。オーバーライドする際、self._input_dataはこれ以降の処理で使用しないため、更新しなくても問題ありません。- パラメータ
f0_floor (float, default settings.PYWORLD_F0_FLOOR) --
worldでの分析するf0の下限デフォルトでは71.0f0_ceil (float, default settings.PYWORLD_F0_CEIL) --
worldでの分析するf0の上限デフォルトでは800.0frame_period (float, default settings.PYWORLD_PERIOD) --
worldデータの1フレーム当たりの時間(ms)初期設定では5.0q1 (float, default settings.PYWORLD_Q1) --
worldでスペクトル包絡抽出時の補正値通常は変更不要初期設定では-15.0threshold (float, default settings.PYWORLD_THRESHOLD) --
worldで非周期性指標抽出時に、有声/無声を決定する閾値(0 ~ 1)値が0の場合、音声のあるフレームを全て有声と判定します。値が0超の場合、一部のフレームを無声音として判断します。初期値0.85はharvestと組み合わせる前提で調整されています。
- 例外
FileNotFoundError -- input_pathにファイルがなかったとき
TypeError -- input_pathで指定したファイルがwavではなかったとき
- property input_data: numpy.ndarray
- property input_path: str
- property modulation: int
- property offset: float
- output()
- self._output_dataをself._output_pathに書き出します。
- property output_data: numpy.ndarray
- property output_path: str
- parseFlags()
与えられたフラグをパースし、self.flagsを更新します。
メモ
フラグの取得方法を変更したい場合、このメソッドをオーバーライドしてください。
- pitchShift()
- self._target_tone, self._modulationを使用して、self._target_frq,self._f0を更新します。
メモ
ノートの音程およびモジュレーションに関する処理を変更したい場合、このメソッドをオーバーライドしてください。オーバーライドする際、self._target_frqはこれ以降の処理で使用しないため、更新しなくても問題ありません。- 例外
ValueError -- toneの書式が適正でない場合
- property pitchbend: str
- property pitches: numpy.ndarray
- resamp()
- UTAUのresamplerに求められる処理をすべて順番に実行します。実行の順番はモジュールの説明に記載のある通りです。
- property sp: numpy.ndarray
- stretch()
- self._target_ms, self._fixed_ms, self._velocityに基づいて、self._f0,self._sp,self._apを更新します。計算途中結果のうち、後ほど活用できそうなself._target_framesとself._fixed_framesも記憶します。
メモ
音声の伸縮方法を変更したい場合、このメソッドをオーバーライドしてください。
- synthesize()
- self._f0, self._sp, self._ap, self._fs, settings.PYWORLD_PERIODを使用して、self._output_dataを更新します。また、合成処理前に適用されるフラグについても適用します。
メモ
音声合成前のフラグ処理を変更したい場合、このメソッドをオーバーライドしてください。
- property t: numpy.ndarray
- property target_frames: int
- property target_frq: float
- property target_ms: float
- property tempo: str
- property velocity: int
- property volume: int