33
Moresamplerはなにをやってます? 語ると長くなります。 詳しく返答すると信号処理についての言及が求め られるので、一部は省略します。このスライドは主 Moresamplerの処理に対する基本理解、及び、 他のResamplerとの違いに着目します。 これらの情報はMoresamplerを活用することに繋 がると思います。

Moresampler 0.2.0 に関する説明

Embed Size (px)

Citation preview

Page 1: Moresampler 0.2.0 に関する説明

Moresamplerはなにをやってます?

● 語ると長くなります。

● 詳しく返答すると信号処理についての言及が求められるので、一部は省略します。このスライドは主にMoresamplerの処理に対する基本理解、及び、他のResamplerとの違いに着目します。

● これらの情報はMoresamplerを活用することに繋がると思います。

Page 2: Moresampler 0.2.0 に関する説明

UTAUはなにをやってます?

● Moresamplerの中身を語るためには、まずは一歩引いて全体像を見る必要があります。

● このGUI(インターフェイス)の背後は、なにかどのように動いているのでしょうか?

Page 3: Moresampler 0.2.0 に関する説明

UTAUはなにをやってます?(続く)

(1) ユーザーはノートを選択して「再生」を押すと

(2) GUIは一時なスクリプトファイルを生成してコードを

書き込みます

(3) このスクリプトがResamplerとWavtoolを呼びさし

て、波形ファイルにアクセスしてノートを接続します

(4) 各ノートに対してResamplerとwavtoolは一回、もし

くは複数回呼び出され、アクセスごとに細かく短い

波形がキャッシュフォルダーへ出力されます

Page 4: Moresampler 0.2.0 に関する説明

How does UTAU work?(5) 最後に一連のWAVTOOL呼び出しで、キャッシュされた全波形ファ

イルが接続(連結)されます

(6) GUIは、この繋がれた波形を読み込み、再生します。

GUI

スクリプト

resampler

wavtool

ライブラリー

キャッシュ

波形ファイル

波形ファイル

波形ファイル

最終出力の繋げた波形

Page 5: Moresampler 0.2.0 に関する説明

How does UTAU work?

● Resamplerの役割:

● 音高をシフト、音の伸びを伸長/短縮、フラグを適用

(例えばgはジェンダー(=性別関数)をイジる)

● wavtoolの役割:

● 各波形の音量を調整、オーバーラップを考えて波

形を接続する。

Page 6: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式メソッド

● resamplerの役割を説明しましたが、広義的いうと音声を処理することです。

● 音声処理は主に二種類の処理メソッドがあります。

● 一つは、処理される音声を波形入力し、波形に対して処理を行い、それを音声として出力する方式です。

Input(waveform)

Output(waveform)

Some speechprocessing

going on here

Page 7: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式メソッド(続き)

● もう一つは、音声が入力されると、その入力音声に対して分析をし、様々な「特徴量」を抽出し、その「特徴量」に対して要求される処理を行い、その「処理をした特徴量」から出力音声を合成する方式です。

Input(waveform)

Output(waveform)Analysis Features

SynthesisSome

processinggoing on here Features

(modified)

Page 8: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式メソッド(続き)

● これらの、分析によって抽出される「特徴量」は様々です。基本周波数(音高)、スペクトログラム、エネルギーなど。

● これらの分析結果は「元音声を再現する」ための完全な情報を持っており、元音声は今後の処理で必要なくなります。。

● なんでこんな手間(分析と合成)を掛けるのか、直接音声をイジることはできないのかな?

Page 9: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式メソッド(続き)

● これが面白いところです。後ほど説明します。● 分析をしていれば、これら分析で得た「特徴量」に対して順次処理す

ることで自由度が色々上がります。逆に言うと、波形を直接処理するのはあまりにも大変すぎる。

● 一般的に、前者を非パラメトリック式、後者をパラメトリック式だと呼びます。

Page 10: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式メソッド(続き)

● 今までのresamplerはほとんど非パラメトリック式でした。

● 例えば、 tn_fnds は TD-PSOLA という、とっても有名なピッチシフトと時間伸縮方式で、フランス電信会社が30年前で発明された、未だにもっとも優秀な非パラメトリック式メソッドのうち1つであります。

● TD-PSOLA は波形を細かくカットして、それぞれの波形を複製、もしくは削除して、重ねて出力したい波形を作ります。

● 全体の出力波形は入力波形に完全依存しますので、非パラメトリック式に属します。

[Holmes, 2001]

Page 11: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式メソッド(続き)

● 非パラメトリック式は必ずも時間領域上(波形)で処理することを意味しているわけではありません。

● もう一つの例はphavoco, (Phase Vocoderの略) これは周波数領域でフレームごとスペクトルをいじって出力を作る。

● これも入力波形を依存するため非パラメトリック式に属すると考えられる。

Page 12: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式Resamplerは

● 森勢先生のWORLDを元にしたResamplerは二種類あります。WORLDの少し前のバージョンは非パラメトリック式でした。(FD-PSOLAという周波数領域で作動するのTD-PSOLAの変種)

● 最近のバージョンはパラメトリック式です。

● 現バージョンのWORLDが使用された特徴量は以下となります

− 基本周波数(F0)

− スペクトルエンベロープ、スペクトルを繋げた曲線(スペクトル包絡線)

− 非周期成分:音声に含まれているノイズ成分

● これらの特徴量はずべて時間変量で、数百から数千となる細かいフレームに保存されます。

Page 13: Moresampler 0.2.0 に関する説明

パラメトリック式/非パラメトリック式Resampler

● これらの特徴量を使用して、WORLD合成器は元波形を利用することなく波形を再構築します。

● パラメトリック式は有りますが、大抵のケースで、元波形から分析して、特徴量を得ることにしています。

● しかし、波形を依存せず、なにもないところから特徴量を生成して出力波形を合成することも可能です。例えば、HMMベースの合成器はHMMから特徴量を得てWORLDへ入力します。SinsyとCeVIOはこういう方式である。逆に、PSOLAは、HMMから得た特徴量から合成することは不可能です。

● これで少々パラメトリック式の強みが分かって頂けるのかと。話し逸れましたので、ここからはMoresamplerの話に戻ります。

Page 14: Moresampler 0.2.0 に関する説明

LLSM – foundation of Moresampler● Moresamplerが使用したパラメトリック式モデルはLLSM(Low

Level Speech Model)

● LLSMが音声を再現するために使用する特徴量は数多く、そのため、音質のロストをほぼ知覚出来ないレベルまで抑えています。

Page 15: Moresampler 0.2.0 に関する説明

LLSM – foundation of Moresampler● LLSMにおける一番重要な特徴量は高調波(倍音)です。

● 元々の周波数を基本波、2倍の周波数(2分の1の波長)を持つものを第2高調波(第二倍音)、さらに n 倍の周波数(n 分の1の波長)を持つものを第 n 高調波(第n倍音)と呼ぶ。 [Wikipedia]

1st Harmonic (fundamental)2nd Harmonic3rd Harmonic

4th Harmonic5th Harmonic...

Page 16: Moresampler 0.2.0 に関する説明

LLSM – foundation of Moresampler● LLSMは各倍音に対して周波数、振幅、位相変化量を取得します。

● 倍音だけでは、無論、音声の再現は出来ません。声は倍音以外の成分が多数含まれています。例えば無声子音、気音....など。

● 入力波形から倍音などの周期成分を減算すると、非周期成分が得られます。 これらのを残余成分と呼びます。

time

frequency

1s

t

2nd 3rd ...

Page 17: Moresampler 0.2.0 に関する説明

残余成分のモデリング

● 残存部は概ねノイズっぽい情報です。囁き声に似ています。● ホワイトノイズを生成し、それにフィルタリングをすることで、残余成

分のスペクトログラムを近似します。● そのフィルダリングの設定値は、残余成分のメインの特徴量とするこ

とが出来ます。

Page 18: Moresampler 0.2.0 に関する説明

残余成分のモデリング(続き)

● しかし、このやり方だと、元の残余成分が持っている、時間変化のディテールが失われてしまう。

● 人間が発声するとき、声帯は高速に振動し、気道を通る空気の量を調節することで、声を作っています

● 残余成分は周期成分ではないが、エネルギー変化量なら周期成分である。これで残余成分の周期が求められる。

Page 19: Moresampler 0.2.0 に関する説明

残余成分のモデリング(続き)

● 微弱だが残余成分のエネルギー周期性が見られる

Page 20: Moresampler 0.2.0 に関する説明

残余成分のモデリング(続き)

● これをエンベロープを与えてモデリングする

● この包絡を「声の一部」として扱い、その振幅変化をもう一つのハーモニックモデルとして取り込む。

● 低周波のため少ない倍音(3~4)で十分だと考えます。

Page 21: Moresampler 0.2.0 に関する説明

残余成分のモデリング(続き)

● 更に踏み込んで、残余成分のエネルギーモデリングを複数周波数帯で構築出来ます。例えば− 0 – 3KHz− 3 – 6KHz− 6 – 12KHz− 12KHz – (サンプリング周波数の半分)

● LLSMを構成しているのは、主にこれら「メイン調波成分モデル」、「比較に小さい調波成分モデルが4つ」、「ノイズスペクトログラムが一つ」です。

Page 22: Moresampler 0.2.0 に関する説明

Works Cited● LLSMは、複数の正弦曲線モデリングテクニックを参考して構築しま

した。以下の知見をクレジットさせていただきます。

Pantazis, Yannis, and Yannis Stylianou. "Improving the modeling of the noise part in the harmonic plus noise model of speech." Acoustics, Speech and Signal Processing, 2008. ICASSP 2008. IEEE International Conference on. IEEE, 2008.

Quatieri, Thomas F., and Robert J. McAulay. "Shape invariant time-scale and pitch modification of speech." Signal Processing, IEEE Transactions on 40.3 (1992): 497-510. 1992.

Serra, Xavier. "A system for sound analysis/transformation/synthesis based on a deterministic plus stochastic decomposition." Diss. Stanford University. 1989.

Stylianou, Yannis. "Harmonic plus noise models for speech, combined with statistical methods, for speech and speaker modification." Diss. Ecole Nationale Supérieure des Télécommunications. 1996.

Page 23: Moresampler 0.2.0 に関する説明

Moresampler (resampler mode)● Moresamplerがスクリプトに呼び出されると、まずはresamplerとし

てなのか、wavtoolとしてなのかを識別する。

● まずは resamplerモードを説明します。

● 初めてMoresamplerを実行すると、Moresamperはresamplerとしてwavファイルを当たる。そこでlibllsm(というLLSMの実装)を使ってwavファイルを分析する。

● 分析結果は.wav.llsm というファイルへ書き出し、次回Moresampler実行時はwavではなくこちらを使う。これ以降wav削除しても動作しますが、現状では無論wavの削除はオススメしません。

● 以降、LLSMのパラメータ(特徴量)を操作して、スクリプトから与えられた指示通りに波形生成をする。スクリプトの指示内容はピッチ、音長、開始/終了時刻、フラグ、ピッチベンドなど。

Page 24: Moresampler 0.2.0 に関する説明

Moresampler (resampler mode)● 次はどうする?

● スクリプトは出力先を指示してきます。例えば C:\...\123_abc.wav

● Moresamplerは指示通り変更したLLSM パラメータを C:\...\123_abc.wav.llsm.tmpへ出力

● もしここで互換性オプション(resampler-compatiblity)を有効していない時は、指示された C:\...\123_abc.wav 出力されません。

Input(.wav)

Write to cache(.wav)

Analysis(libllsm)

LLSMparameters

Synthesis(libllsm)

Someprocessing

going on here

Read/Write file(.wav.llsm)

Write to cache(.wav.llsm.tmp)

Page 25: Moresampler 0.2.0 に関する説明

セグメントを繋ぐ

● なぜ合成を直接resamplerでやらないのか。

● wavtoolモードで生成されたwavの波形を見ましょう。

● 境界でグリッチノイズなどの欠陥が発生することを避けるため、クロスフェードが必要される。(区間は概ねイメージとおり)

Page 26: Moresampler 0.2.0 に関する説明

セグメントを繋ぐ(続く)

● 問題:山と谷がズレてる。相殺されることもある。● そのまま合わせると声が干渉する

Page 27: Moresampler 0.2.0 に関する説明

セグメントを繋ぐ(続く)

● 干渉を低減する方式の一つは maximum cross-correlation(極値相関), 山と、谷のピークピークをそれぞれずらして合わせる(add)

Shift and add

Page 28: Moresampler 0.2.0 に関する説明

セグメントを繋ぐ(続く)

● これが全部うまく合わせられることは、まずありません。周波数もしくは位相がちょっと変わると、またズレていく

ここ合わせたけど ここがずれた....

Page 29: Moresampler 0.2.0 に関する説明

セグメントを繋ぐ(続く)

● 基本周波数をfとすると、波形を t 秒ずらしたら、第

n倍音の位相は2πnftずれる(正弦波は y(t) = sin(2πft))

● もし位相がうまく合わない場合、誤差は高域でどん

どん大きくなる。最初の倍音がうまく合わせても高

域倍音が大きくズレる場合があります。

Page 30: Moresampler 0.2.0 に関する説明

クロスフェーディングのためのパラメトリックなソリューション

● よって、波形ではなくLLSMパラメータの方クロスフェードすることで

解決する。

● これらのパラメータ(基本周波数、倍音、ノイズスペクトログラム)は

全部フレームと同期*してるので、干渉は発生しません。

● これを內插と呼ぶ。

* (かなり説明を簡略化してます。パラメトリック化は內插可能であることを確保してるわけではありません。倍音位相內插の詳細はかなり複雑ですが、幸い Quatieri教授と McAulay教授1992年の知見があり、LLSMはそれを元に改良しています。

Page 31: Moresampler 0.2.0 に関する説明

Moresampler (wavtool mode)● LLSMのパラメータレベルでクロースフェイドするため、LLSMモデル

ファイルを受け付けるwavtoolが必要となる。

● これがMoresamplerがresamplerとwavtool両方の機能を備えた理

由となります。こうすることで、2つの違うプロジェクトをメンテする必

要もなくなる。

● LLSMはそれなりにサイズが大きいので、書き出しによるHDD(SSD)の摩耗や空き容量圧迫を低減するため、全体の流れをなんらかの工夫を加える必要が出てくる。

Page 32: Moresampler 0.2.0 に関する説明

Moresampler (wavtool mode)● Moresamplerが最初にwavtoolとして呼び出せる時、一つの.wav

ファイルを生成する。それは、パスとファイル名指定なければtemp.wavとなります。

● Moresamplerはtemp.wavに波形を書き込みません。単にコマンドラインの内容を次々とtemp.wavに追記するだけです。(indexとして使う)

Page 33: Moresampler 0.2.0 に関する説明

Moresampler (wavtool mode)● 終わりに、Moresamplerはスクリプトからの最後の呼び出しであるこ

とを検知したら(スクリプトを開いてファイル名とマッチするかをチェック)、そこでtemp.wavに書きだした内容を読み込み、一時ファイルとして書きだしたLLSMファイルを全部繋ぎます。続いてlibllsmを呼び出して合成し、temp.wavを出力結果に書き換えます。

temp.wav

Script

Moresampler(wavtool mode)

.llsm.tmp(produced by

resampler mode)

Synthesis(libllsm)

arguments

LLSMsegments(final call)

waveform