目指せ音声分析合成マスター! 「よくわからない」から「ちょっとわかる」 へのチュートリアル 山梨大学工学部コンピュータ理工学科・特任助教 森勢将雅 注意 • この資料は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
© Copyright 2025 ExpyDoc