発表資料 - 森勢将雅 Homepage Masanori Morise 山梨大学

目指せ音声分析合成マスター!
「よくわからない」から「ちょっとわかる」
へのチュートリアル
山梨大学工学部コンピュータ理工学科・特任助教
森勢将雅
注意
• この資料は2015/11/14の招待講演で使用した
ものです.
• 一部の未公開データや音声データについては
省いておりますのでご了承ください
1
本日の概要
• 音声分析合成技術(Channel vocoder)全体に
通ずる話題
– STRAIGHT関連の技術を中心に
• 各パラメータが合成時にどう使われるか?
• 音声変換について良く受けた質問と回答
– サンプルコードとともに(森勢将雅でGoogle検索し
,トップページから)
2
STRAIGHTの構成
F0
スペクトル包絡
非周期性指標
入力
分析
合成音
合成
• 音声を構成する3つの要素を抽出し再合成
– 各要素は独立して制御可能
3
各パラメータについて
スペクトル包絡
基本周期
声帯振動
時間
周波数
• 声帯振動の揺らぎや雑音混入による影響
– 非周期性指標
4
STRAIGHTの系譜
• STRAIGHT:和歌山大学などの成果(特許も問題あり)
• WORLD:森勢の成果(自由に使える)
1999
2005
2007
2010
2015
WORLD
LegacySTRAIGHT
DIO
TEMPO
TANDEMSTRAIGHT
相補的時間窓
STAR
CheapTrick
XSX
NDF
D4C
ZFF
5
STRAIGHT→WORLD
• TANDEM-STRAIGHTの特許が鬱陶しくなった(
直球)
– Legacyはさらに複雑
• WORLDの開発?
– 2010年のエイプリルフールネタ
• STARを閃き本格的な開発をスタート
– 以後,Platinum,CheapTrick,D4Cを提案
6
品質について(非公式資料)
• 品質はWORLD≧Legacy>TANDEM
7
現在までに把握している特徴
• Legacy-STRAIGHT
– F0の分析は一番正確で品質も良い
– 特許の扱いが一番面倒
• TANDEM-STRAIGHT
– 品質はイマイチだが特許の扱いはまだマシ
• WORLD
– SNRが高ければ品質はLegacy並み
– 完全フリー(プログラムも修正BSD)
8
音声分析の手順
各ソフトウェアの入手方法
• Legacy-STRAIGHT
– 河原先生に連絡して入手(Matlab版のみ)
• TANDEM-STRAIGHT
– Matlab版は河原先生に連絡して入手
– C言語版ライブラリは「STRAIGHT Library 音声」
で検索して入手
• WORLD
– Matlab版,C++版をWebでダウンロード可能
– 「WORLD 音声」で検索して入手
本発表ではMatlab版WORLDで説明
10
正確な手順(全方法共通)
波形のみから推定
音声
F0分析
波形とF0から推定
スぺクトル包
絡推定
波形とF0から推定
非周期性
指標推定
• F0(および有声音・無声音の判定)の精度が品
質に直結
11
F0分析のポイント(1/2)
• F0分析には「探索範囲」が存在
Legacy: 40-800 Hz
TANDEM: 32-650 Hz
WORLD: 71-800 Hz
範囲が広いほど
誤推定率が向上
12
F0分析のポイント(2/2)
• 予測可能な範囲で探索範囲を制限
– 1回分析してから範囲を絞って再度分析も有効
• 低域の雑音を除去(ハイパスフィルタ等)
– 空調雑音や電気雑音に効果的
• 分析後に手動で調整(後述)
万能な分析法は今のところ無い
13
スペクトル包絡と非周期性指標
• 分析時のパラメータは調整済
• FFT長はfsとF0の下限値により決定
– F0に同期した窓関数を利用(F0が低い=基本周期
が長い)
F0が適切に求められていれば残り2
パラメータは無調整で推定可能
14
音声合成の概要
有声音
*
フィルタA
フィルタはスペクト
ル包絡と非周期性
指標から計算
+
無声音
*
合成音声
フィルタB
ポイント
・有声音(パルス列の生成)
・フィルタA, Bの設計
15
有声音の合成(1/3)
F0軌跡
無声音区間のF0は
500 Hzと仮定
縦軸が2π変化するの
に要した時間を計算
F0軌跡の時間積分
全体の声帯振動発
生時刻を計算可能
16
有声音の合成(2/3)
スペクトル包絡
非周期性指標
フィルタA
フィルタB
ポイント
2つのフィルタはスペクトル包絡と非
周期性指標の積で計算
17
有声音の合成(3/3)
入力音声
• 各フィルタのパワ
ーはスペクトル包
絡から計算可能
• 位相は最小位相
応答を利用
合成音声
最小位相
波形のエンベロープが変
化(影響は後述)
18
余談(Legacy-STRAIGHT)
• Legacy-STRAIGHTのみ群遅延の
制御を実施
– 高域の非周期性指標を
見かけ上増加
• 高域まで周期性成分の
強い音声の品質は劣化
品質に与える影響は一長一短
19
音声分析に関するまとめ
• 品質に与える影響の大半はF0の推定ミス
– 特に有声音を無声音と誤推定する場合致命的
元音声
下限を100に設定
無声化の影響に
より品質が低下
20
音声分析時の注意点
WORLDを例に
一通りの分析の流れ
> [x, fs] = audioread(’vaiueo2d.wav’);
> r = Dio(x, fs);
> f = CheapTrick(x, fs, r);
> q = D4C(x, fs, r);
> y = Synthesis(q, f);
ポイント
・スペクトル包絡,非周期性指標は
どちらを先に分析しても良い
・分析完了まで音声変換してはならない
22
F0分析で良くある失敗例
真値の倍や
半分に誤推定
有声無声のミス
分析ミスはある程度調整可能
23
F0のレンジの調整
> [x, fs] = audioread(’vaiueo2d.wav’);
> op.f0_floor = 70; 下限の調整
> op.f0_ceil = 200; 上限の調整
> r = Dio(x, fs, op);
この範囲のみ探索
24
その他のパラメータ
• op.frame_period: 分析シフト幅(ms)
– デフォルトは5 ms
• op.channels_in_octave: フィルタ数
– 大きいほど精密な分析が可能(デフォルトは2)
• op.target_fs: ダウンサンプリング処理
– 低いほど速度が向上するがF0が400 Hz以上の際に
振動成分が混在(デフォルトは4000)
TANDEMにも類似パラメータが存在
(変数名は微妙に異なるので注意)
25
WORLD固有のオプション
• op.arrowed_range:有声無声の判定に関するパ
ラメータ
– 0の場合厳しく大きいほど緩い
– デフォルトは0.1だが,frame_shiftに応じて動的に変
更することも有効.経験則として0.02~0.2を推奨
26
手動の調整
この値を前後の値の平
均で置き換え
無声と誤判定されたも
のを手動で延長
最後の手段だが,割と効果的
27
音声変換の例
話速変換
• q.temporal_positionsを制御
> q.temporal_positions =
q.temporal_positions * 2;
> y = Synthesis(q, f);
再生時間が2倍に
(原稿の「話速」は間違
いです.申し訳ありま
せん)
非線形伸縮も可能だが
temporal_positionsは単調増加であ
ることが条件
29
声道伸縮(スペクトル伸縮)
声道長を0.8倍に
伸縮する処理
• スペクトルの伸縮=フォルマントの移動
– 声道長の伸縮と概ね一致
30
スペクトル伸縮の手順
> f1 = CheapTrick(x, fs, r);
> fft_size = (size(f1.spectrogram, 1) - 1) * 2;
> w = (0 : fft_size - 1) * fs / fft_size;
> w2 = w * 0.8; % ここに声道長伸縮率を入れる
> for i = 1 : size(f1.spectrogram, 2)
> tmp = log(f1.spectrogram(:, i));
> tmp = [tmp(:); tmp(end - 1 : -1 : 2)];
> tmp2 = interp1(w, tmp, w2, 'linear');
> f1.spectrogram(:, i) = exp(tmp2(1:fft_size/2+1));
> end;
• 0.8~1.2程度が自然性を保つ限界
31
スペクトル制御のコツ
• 対数スペクトルで行うこと
– フォルマントピークが鈍るのを防止
– パワーの非負値を保証
共鳴周波数が変化
声道長の線形伸縮とフォルマント
シフトには対応関係
32
その他の変換法
• 音声モーフィング
– 音素時刻・フォルマントにラベル付けを行い,時間・
周波数伸縮によりモーフィング
– F0はスカラ値なので重み付き加算
• 声道断面積関数制御
– 口の開き方を直接制御可能なので直感的
33
非周期性指標の制御について
滑らかな形状でOK
周期性・非周期性スペ
クトルでモデリングした
ほうが良い?
34
HMM音声合成での利用例
高道ら,ASJ2015秋(1-Q-27)より引用
35
残された課題
エンベロープが品質に影響?
• 結論:F0が低い場
合は影響する可
能性が高い
• エンベロープを制
御する位相(群遅
延)の制御法が必
要
37
今後の展望
• GUIなどのツール化
– 河原先生が色々作っているものの高速版
• ご要望がありましたらお願いします.
WORLDは2015年中にGitHubに移行
38
39