-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
現時点での各モジュールの責務
- Model
- htsvoiceをパースする(parser)
- モデルを表現するstruct群/関数群を提供する
- morphingを行う
- 決定木に従ったパラメータ決定を行う
- Label
- Label列をパースする
- SStream
- ModelとLabelからパラメータ(mean, vari)を取ってくる
- 各Stateの長さを決定する
- PStream
- 無声区間を決定する
- 無声区間を無視しながら,各Streamのmean/ivarのベクトルを生成する
- 自然につながるよう行列計算を行う
- GStream
- PStreamで無視された無声区間を埋め戻しながら,パラメータ列を生成する
- Vocoderを呼び出して音声合成を行う
計画
方針
- 決定木によるパラメータ取得と計算を近づけ,中間のVecを不要にする
- パラメータ取得(決定木)とモーフィングはそれぞれ抽象化する
- パラメータ生成の各段階を分離し,人間が介入する余地を作る
- ラベルにjlabelをそのまま突っ込めるようにする
- 音素継続長の供給を抽象化し,ラベル中の時刻列から取得するか,ラベルを用いた推定で取得するかを選択する
手順
パラメータ取得
Modeltrait- htsvoiceのパーサー等が実装する
- Interporatorも実装する(内部に複数のModelをもつ)
- 要求に応じて決定木やパラメータを(必要なら構築して)返す
DecisionTreestruct- 決定木の構造を保持し,Walkを実装する
ProbabilityDistributionstrait- 確率密度関数列
- IDをとってmeanとvariを返す
- MSDもこの一種(ただしvari=0)として実装する
- Interporatorはここで重みづけを行う
ラベルファイルのパース(utilの類)
LabelParserstruct
パラメータ推定・合成
DurationEstimatorstruct- 音素長を推定する
- 指定された時刻がある場合と,ない場合がある
- 話速を供給する
MlpgAdjuststructVec<(mean: f64, vari: f64, msd: bool)>をとり,Mlpgで調整してVec<f64>を返す- GVも行う(パラメータをどう渡すかは検討中)
- 無声区間を抜いてからMlpgに渡し,無声区間を埋め戻すところまで行う
Vocoderstruct
ピッチ調整は呼び出し側(Engine)の責務とする.
Streamを番号で指定するのはやめ,MCP, LF0, LPFのいずれかの名称を使う(ところでMCPって何?).
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels