How does Moresampler work? (Japanese)

33
Moresampler ははははははははははははははははははははははははははははははははははははははははははははは ははははは 、一 はは ははははははははは Moresampler ははははははははははははは はは Resampler ははははははははははははははははは Moresampler はははははははははははははははは

Transcript of How does Moresampler work? (Japanese)

Page 1: How does Moresampler work? (Japanese)

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

Page 2: How does Moresampler work? (Japanese)

UTAUはなにをやってます?● Moresamplerの中身を語るためには、まずは一歩引いて全体像を見る必要があります。● この GUI(インターフェイス)の背後は、なにかどのように動いているのでしょうか?

Page 3: How does Moresampler work? (Japanese)

UTAUはなにをやってます?(続く)(1)ユーザーはノートを選択して「再生」を押すと(2)GUIは一時なスクリプトファイルを生成してコードを書き込みます(3)このスクリプトがResamplerとWavtoolを呼びさして、波形ファイルにアクセスしてノートを接続します(4)各ノートに対してResamplerとwavtoolは一回、もしくは複数回呼び出され、アクセスごとに細かく短い波形がキャッシュフォルダーへ出力されます

Page 4: How does Moresampler work? (Japanese)

How does UTAU work?

(5)最後に一連のWAVTOOL呼び出しで、キャッシュされた全波形ファイルが接続(連結)されます(6)GUIは、この繋がれた波形を読み込み、再生します。

GUI

スクリプトresampler

wavtool

ライブラリー

キャッシュ

波形ファイル波形ファイル

波形ファイル最終出力の繋げた波形

Page 5: How does Moresampler work? (Japanese)

How does UTAU work?

Resamplerの役割:音高をシフト、音の伸びを伸長 /短縮、フラグを適用(例えば gはジェンダー(=性別関数)をイジる)wavtoolの役割:各波形の音量を調整、オーバーラップを考えて波形を接続する。

Page 6: How does Moresampler work? (Japanese)

パラメトリック式 /非パラメトリック式メソッド● resamplerの役割を説明しましたが、広義的いうと音声を処理することです。● 音声処理は主に二種類の処理メソッドがあります。● 一つは、処理される音声を波形入力し、波形に対して処理を行い、それを音声として出力する方式です。

Input(waveform)

Output(waveform)

Some speechprocessing

going on here

Page 7: How does Moresampler work? (Japanese)

パラメトリック式 /非パラメトリック式メソッド(続き)● もう一つは、音声が入力されると、その入力音声に対して分析をし、様々な「特徴量」を抽出し、その「特徴量」に対して要求される処理を行い、その「処理をした特徴量」から出力音声を合成する方式です。

Input(waveform)

Output(waveform)Analysis Features

SynthesisSome

processinggoing on here Features

(modified)

Page 8: How does Moresampler work? (Japanese)

パラメトリック式 /非パラメトリック式メソッド(続き)● これらの、分析によって抽出される「特徴量」は様々です。基本周波数(音高)、スペクトログラム、エネルギーなど。● これらの分析結果は「元音声を再現する」ための完全な情報を持っており、元音声は今後の処理で必要なくなります。。● なんでこんな手間(分析と合成)を掛けるのか、直接音声をイジることはできないのかな?

Page 9: How does Moresampler work? (Japanese)

パラメトリック式 /非パラメトリック式メソッド(続き)● これが面白いところです。後ほど説明します。● 分析をしていれば、これら分析で得た「特徴量」に対して順次処理することで自由度が色々上がります。逆に言うと、波形を直接処理するのはあまりにも大変すぎる。● 一般的に、前者を非パラメトリック式、後者をパラメトリック式だと呼びます。

Page 10: How does Moresampler work? (Japanese)

パラメトリック式 /非パラメトリック式メソッド(続き)● 今までの resamplerはほとんど非パラメトリック式でした。● 例えば、 tn_fnds は TD-PSOLA という、とっても有名なピッチシフトと時間伸縮方式で、フランス電信会社が 30年前で発明された、未だにもっとも優秀な非パラメトリック式メソッドのうち 1つであります。● TD-PSOLA は波形を細かくカットして、それぞれの波形を複製、もしくは削除して、重ねて出力したい波形を作ります。● 全体の出力波形は入力波形に完全依存しますので、非パラメトリック式に属します。

[Holmes, 2001]

Page 11: How does Moresampler work? (Japanese)

パラメトリック式 /非パラメトリック式メソッド(続き)● 非パラメトリック式は必ずも時間領域上(波形)で処理することを意味しているわけではありません。● もう一つの例は phavoco, ( Phase Vocoderの

略)これは周波数領域でフレームごとスペクトルをいじって出力を作る。● これも入力波形を依存するため非パラメトリック式に属すると考えられる。

Page 12: How does Moresampler work? (Japanese)

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

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

● 最近のバージョンはパラメトリック式です。● 現バージョンのWORLDが使用された特徴量は以下となります● 基本周波数( F0)● スペクトルエンベロープ、スペクトルを繋げた曲線(スペクトル包絡線)● 非周期成分:音声に含まれているノイズ成分● これらの特徴量はずべて時間変量で、数百から数千となる細かいフレームに保存されます。

Page 13: How does Moresampler work? (Japanese)

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

● これらの特徴量を使用して、WORLD合成器は元波形を利用することなく波形を再構築します。● パラメトリック式は有りますが、大抵のケースで、元波形から分析して、特徴量を得ることにしています。● しかし、波形を依存せず、なにもないところから特徴量を生成して出力波形を合成することも可能です。例えば、 HMMベースの合成器は HMMから特徴量を得てWORLDへ入力します。

Sinsyと CeVIOはこういう方式である。逆に、 PSOLAは、 HMMから得た特徴量から合成することは不可能です。● これで少々パラメトリック式の強みが分かって頂けるのかと。話し逸れましたので、ここからはMoresamplerの話に戻ります。

Page 14: How does Moresampler work? (Japanese)

LLSM – foundation of Moresampler

● Moresamplerが使用したパラメトリック式モデルはLLSM( Low Level Speech Model)

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

Page 15: How does Moresampler work? (Japanese)

LLSM – foundation of Moresampler

● LLSMにおける一番重要な特徴量は高調波(倍音)です。● 元々の周波数を基本波、 2倍の周波数( 2分の 1の波長)を持つものを第 2 高調波(第二倍音)、さらに n 倍の周波数( n 分の 1 の波長)を持つものを第 n 高調波(第n倍音)と呼ぶ。

[Wikipedia]1st Harmonic (fundamental)2nd Harmonic

3rd Harmonic

4th Harmonic

5th Harmonic...

Page 16: How does Moresampler work? (Japanese)

LLSM – foundation of Moresampler

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

● 倍音だけでは、無論、音声の再現は出来ません。声は倍音以外の成分が多数含まれています。例えば無声子音、気音 ....など。● 入力波形から倍音などの周期成分を減算すると、非周期成分が得られます。 これらのを残余成分と呼びます。

time

frequency

1st

2nd 3rd ...

Page 17: How does Moresampler work? (Japanese)

残余成分のモデリング

● 残存部は概ねノイズっぽい情報です。囁き声に似ています。● ホワイトノイズを生成し、それにフィルタリングをすることで、残余成分のスペクトログラムを近似します。● そのフィルダリングの設定値は、残余成分のメインの特徴量とすることが出来ます。

Page 18: How does Moresampler work? (Japanese)

残余成分のモデリング (続き)● しかし、このやり方だと、元の残余成分が持っている、時間変化のディテールが失われてしまう。● 人間が発声するとき、声帯は高速に振動し、気道を通る空気の量を調節することで、声を作っています● 残余成分は周期成分ではないが、エネルギー変化量なら周期成分である。これで残余成分の周期が求められる。

Page 19: How does Moresampler work? (Japanese)

残余成分のモデリング (続き)● 微弱だが残余成分のエネルギー周期性が見られる

Page 20: How does Moresampler work? (Japanese)

残余成分のモデリング (続き)● これをエンベロープを与えてモデリングする

● この包絡を「声の一部」として扱い、その振幅変化をもう一つのハーモニックモデルとして取り込む。● 低周波のため少ない倍音(3 ~4)で十分だと考えます。

Page 21: How does Moresampler work? (Japanese)

残余成分のモデリング (続き)● 更に踏み込んで、残余成分のエネルギーモデリングを複数周波数帯で構築出来ます。例えば

− 0 – 3KHz− 3 – 6KHz− 6 – 12KHz− 12KHz – (サンプリング周波数の半分)

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

Page 22: How does Moresampler work? (Japanese)

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: How does Moresampler work? (Japanese)

Moresampler (resampler mode)

● Moresamplerがスクリプトに呼び出されると、まずは resamplerとしてなのか、 wavtoolとしてなのかを識別する。● まずは resamplerモードを説明します。● 初めてMoresamplerを実行すると、Moresamperは resamplerとして wavファイルを当たる。そこで libllsm(という LLSMの実装)を使って wavファイルを分析する。● 分析結果は .wav.llsm というファイルへ書き出し、次回

Moresampler実行時は wavではなくこちらを使う。これ以降wav削除しても動作しますが、現状では無論 wavの削除はオススメしません。

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

Page 24: How does Moresampler work? (Japanese)

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: How does Moresampler work? (Japanese)

セグメントを繋ぐ● なぜ合成を直接 resamplerでやらないのか。● wavtoolモードで生成された wavの波形を見ましょう。● 境界でグリッチノイズなどの欠陥が発生することを避けるため、クロスフェードが必要される。(区間は概ねイメージとおり)

Page 26: How does Moresampler work? (Japanese)

セグメントを繋ぐ(続く)● 問題:山と谷がズレてる。相殺されることもある。● そのまま合わせると声が干渉する

Page 27: How does Moresampler work? (Japanese)

セグメントを繋ぐ(続く)● 干渉を低減する方式の一つは maximum cross-

correlation(極値相関) , 山と、谷のピークピークをそれぞれずらして合わせる (add)

Shift and add

Page 28: How does Moresampler work? (Japanese)

セグメントを繋ぐ(続く)● これが全部うまく合わせられることは、まずありません。周波数もしくは位相がちょっと変わると、またズレていく

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

Page 29: How does Moresampler work? (Japanese)

セグメントを繋ぐ(続く)● 基本周波数を f とすると、波形を t 秒ずらしたら、第 n倍音の位相は 2πnft ずれる(正弦波は

y(t) = sin(2πft))● もし位相がうまく合わない場合、誤差は高域でどんどん大きくなる。最初の倍音がうまく合わせても高域倍音が大きくズレる場合があります。

Page 30: How does Moresampler work? (Japanese)

クロスフェーディングのためのパラメトリックなソリューション● よって、波形ではなく LLSMパラメータの方クロスフェードすることで解決する。● これらのパラメータ(基本周波数、倍音、ノイズスペクトログラム)は全部フレームと同期 *してるので、干渉は発生しません。● これを內插と呼ぶ。

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

1992年の知見があり、 LLSMはそれを元に改良しています。

Page 31: How does Moresampler work? (Japanese)

Moresampler (wavtool mode)

● LLSMのパラメータレベルでクロースフェイドするため、 LLSMモデルファイルを受け付ける wavtoolが必要となる。● これがMoresamplerが resamplerと wavtool両方の機能を備えた理由となります。こうすることで、 2つの違うプロジェクトをメンテする必要もなくなる。

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

Page 32: How does Moresampler work? (Japanese)

Moresampler (wavtool mode)

● Moresamplerが最初に wavtoolとして呼び出せる時、一つの .wavファイルを生成する。それは、パスとファイル名指定なければ temp.wavとなります。● Moresamplerは temp.wavに波形を書き込みません。単にコマンドラインの内容を次々と temp.wavに追記するだけです。( indexとして使う)

Page 33: How does Moresampler work? (Japanese)

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