Successfully reported this slideshow.
Your SlideShare is downloading. ×

FFTライブラリを対象とした実時間Vocoderの速度比較 #ASJ2021a

FFTライブラリを対象とした実時間Vocoderの速度比較 #ASJ2021a

Download to read offline

堀部貴紀(REALITY/明治大),橋本順之(グリー),白井暁彦(REALITY),森勢将雅(明治大), 「FFT ライブラリを対象とした実時間Vocoder の速度比較」, 日本音響学会2021年秋季研究発表会(2021/9/7)
https://note.com/reality_eng/n/nb9cf59fd9825

堀部貴紀(REALITY/明治大),橋本順之(グリー),白井暁彦(REALITY),森勢将雅(明治大), 「FFT ライブラリを対象とした実時間Vocoder の速度比較」, 日本音響学会2021年秋季研究発表会(2021/9/7)
https://note.com/reality_eng/n/nb9cf59fd9825

Advertisement
Advertisement

More Related Content

More from GREE VR Studio Lab

Advertisement

FFTライブラリを対象とした実時間Vocoderの速度比較 #ASJ2021a

  1. 1. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 FFTライブラリを対象とした 実時間Vocoderの速度比較 ☆堀部貴紀 (REALITY/明治大), △橋本順之 (グリー), △白井暁彦 (REALITY), 森勢将雅 (明治大)
  2. 2. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 ● 音声分析合成方式WORLDを用いたリアルタイム声質変換処理の検討 ● 高速フーリエ変換 (以下, FFT)関数の大浦 FFT (以下, ooura)に注目 背景:iOSデバイスやサーバで リアルタイム声質変換処理の検討 2 iOSデバイス/配信サービスにおける サーバで実現したい 専用のハードウェアやソフトウェア が必要 【配信でボイスチェンジャーを利用する】
  3. 3. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 目的:実行環境と各環境に提供されている FFT関数における速度比較 3 ooura WORLDで採用 FFTW3 オープンソース Accelerate Apple 提供 大規模な数学的計算や画像処理を 高性能かつ低消費電力に最適化 Math Kernel Library (MKL) Intel 提供 演算コストの高いワークロードを 高速化する命令セットAVX512を利用
  4. 4. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 実装例:「転生こえうらない」のボイスチェンジャー処理 4 基本周波数推定 / DIO,StoneMask スペクトル包絡推定 / CheapTrick 非周期性指標推定 / D4C パラメータ加工 音声合成 / Synthesis2 音声分析 音声合成 サーバ版 vs モバイル版の比較 ● iOSデバイスによる検証 ○ ラップする形でSwiftによる実装 ● PCやサーバによる検証 ○ Core i7/Xeon向けの実装 ● 検証対象と方針 FFT:fft_execute() ○ コンパイル方法を変更 ○ コードのみを置き換え → 並列化などのコード改編 を行わない
  5. 5. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 実験環境:プロセッサとコンパイラで比較 5 ● PC (Ubuntu20.04(WSL2)) ○ Intel Core(TM) i7-10750H CPU@2.60 GHz ● Amazon Elastic Computing (c5.4xlarge, Ubuntu20.04) ○ Intel Xeon Platinum 8124M 及び 8275CL CPU@3.00 GHz ○ 8275CL:新しい世代/CPU動作周波数が高い ● iPhone XSMax (iOS) ○ A12 Bionic コンパイラ コンパイラオプション gcc-9.3 -O3 -march=native -mtune=native Intel oneAPI DPC++ Compiler 2021.2.0 -O3 -march=native -mtune=native -parallel -par-threshold0 PCとサーバ向けコンパイラ設定
  6. 6. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 実験方法 6 1. 周波数の変化によるRTF ○ {100, 200, 300, 400, 500, 600, 700, 800}[Hz]の正弦波 2. 標本化周波数の変化によるRTF ○ {16, 24, 48}[kHz]に設定された125, 250 Hzの正弦波 → 各実験環境において100回試行 ○ 計測された平均処理時間に対する Real Time Factorを用いて評価 *RTF: Real Time Factor (RTF<1の時に処理対象の音源に対して実時間処理が可能となる)
  7. 7. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 Synthesis2()におけるFFTに対するCPU使用率 gcc環境におけるoouraを使った場合のCPU FlameGraph Synthesis2におけるfft_execute()は全体の59% ⇨ FFTは高速化への寄与率が高いことを可視化できている 要した処理時間 の割合 スタックに応 じて積み上げ
  8. 8. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 結果1:周波数が100Hzごと異なる音源を用いた 各環境におけるRTF比較 8 ⇨ oouraから各環境で最適なFFT関数に置き換えることで高速化できる
  9. 9. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 結果1:周波数が100Hzごと異なる音源を用いた 各環境におけるRTF比較 9 WORLDのF0推定範囲(上限):800 Hz → 無声音として処理された constantnumbers.h#L22
  10. 10. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 結果1:PC, サーバ向けCPUの比較 10 ● PC向けCPU < サーバ向けCPU ○ シングルスレッドを重視, Turbo Boost により一時的なCPU周波数が高い ● 8124Mと8275CLの比較 ○ TurboBoostが考慮されず、CPU周波数の差が見られなかった
  11. 11. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 結果1:FFTW3の比較 (AVX512 vs OS) 11 ● CPUの仕組み SIMDを使う際にClockの周波数の切 り替えを動的に行う ● AVX512の効果は見られない原因 ○ 周波数の低下 ○ 切り替えのオーバーヘッド (注) FW3: FFTW3 OS付属 FW3A: FFTW3 AVX512
  12. 12. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 結果1:コンパイルオプションによる比較 12 ● 自動並列化オプションによる比較 ○ シングルコアに強制した場合 → 僅かながら速い ○ 自動並列化が有効化された場合 → オーバーヘッドの発生 コンパイラ コンパイラオプション gcc-9.3 -O3 -march=native -mtune=native Intel oneAPI -O3 -march=native -mtune=native -parallel - par-threshold0 PCとサーバ向けコンパイラ設定 (再掲) (注) PP0: -parallel-par-threshold0 NP: Non-parallel
  13. 13. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 結果2: 標本化周波数の変化によるRTF 13 iOSデバイス環境における各ステップRTF FFTライブラリ: (上)ooura, (下)Accelerate 関数名 FFT呼び出し回数 (回) DIO 14 StoneMask 400 CheapTrick 603 D4C 1400 (16 kHz) 1800 (24 kHz) 2200 (48 kHz) Synthesis2 865 表:WORLDを用いたボイスチェンジャー処理での 125 Hz, 1秒の信号音におけるFFT呼び出し回数 ⇨ [Accelerate] 安定な声質変換処理への期待
  14. 14. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 発表まとめ:WORLDのFFT関数に注目し, 特徴的な複数の環境において速度比較した 14 【速度比較】 ● RTF:MKL<FFTW3<Accelerate<ooura ● oouraをFFTW3や各環境に最適化されたFFTに 置き換えて得られる効果は十分にある 【コスト面】 ● サーバ:CPU 時間に対してコストが発生する ● iOS デバイス:サービス提供者のコストは発生しない → サーバ側変換の通信経路や総合的な可搬性とともに考慮する と,Accelerate Frameworkを用いて変換処理を行うことも十分に実用的
  15. 15. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 15 【実用上】 ● 多様な発話による周波数の変動から発生するオーバーヘッドを考慮 ● 総合的な高速化を期待 ○ 描画や通信,インタラクション ○ CPUのマルチスレッド化や並列処理化を検討 ● 5G通信網のような高速低遅延で環境においても, アルゴリズムの互換性とともに柔軟な設計を行うための データを取得できた 発表まとめ:WORLDのFFT関数に注目し, 特徴的な複数の環境において速度比較した
  16. 16. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 追記:リアルタイム声質変換処理に向けた速度比較 「FFTライブラリを対象とした実時間Vocoderの速度比較」 RTF最速は(チャンピオンデータ的には) PC環境における oneAPI-MKL が最速。 ○ iPhoneXS MaxでのiOS-oouraを基準とすると, 約8.41倍から12.80倍の高速化を期待できる ただし通信とCPUコスト面も考えるとiOSも効果大きい。 少なくともWORLDのFFT3化は有為。 (ライセンスが異なるので実用上はご確認ください)
  17. 17. 『FFTライブラリを対象とした実時間Vocoderの速度比較』音響学会2021秋 Web公開版 [追記]音響学会でいただいた質疑応答 Q. 大浦FFTからFFTW3などに置き換えてなぜ速くなったのか? A. FFTW3とMKLの場合、Intelが提供しているSIMD命令を使用することやIntelのコンパ イラにおいて命令セットの並びなどの最適化が高速化に寄与していると推察します。 Q. ライセンスについて A. 大浦FFTはOSSでアプリ組み込みにフリーなことから使用されています(WORLD開発 者 森勢先生談)。FFTW3やMKLはそれぞれライセンスが明記されていますのでそちらに 従っていただければ幸いです。 Q. データパッキングをしているのか?データパッキングによる高速化は考えられるか A. Accelerate Frameworkでは独自のデータパッキングを行なっています。そのため、 アプリ開発者側によるデータパッキングが高速化に寄与していると考えられます。 REALITYエンジニア ブログ参照 https://note.com/reality_eng/n/n0cd9bd157df3

Editor's Notes

  • WORLD で使用されている高速フーリエ変換(以下,
    FFT)関数の大浦 FFT [5](以下,ooura)に注目した. ooura と
    オープンソース化されたFFTライブラリの中でスタンダードに用いられる FFTW3 [6]
    Apple が提供している大規模な数学的計算や画像処理を高性能かつ低消費電力に最適化して行う Accelerate Framework [7] (以下,Accelerate)
    Intel が提供している演算コストの高いワークロードを高速化する命令セット AVX512 を利用した Math Kernel Library (以下,MKL)のように
  • これらの要因を特定し、音声変換サービスの改善を目指すには、
    声優や音声データベースなどの収録環境の定められたものではなく、実際の利用者の自由な発話に対して分析する必要があります。
    本研究では、Webブラウザだけで利用できる無料のボイスチェンジャーサービスの開発と公開実験を通じて、 不特定多数の利用者による収録音声をサーバに保存し、統計解析ができるようにしました。 今回使用したサービス「転声こえうらない」は GREE VRStudioが提供している Webブラウザのみで利用できる無料ボイチェンジャーサービスです。

    変換した音声はTwitterでシェアすることができます。
    なりたい声のタイプは、左の図にある13種類です。
    13種類のタイプに変換できることによって、タイプに応じて声質が劣化しやすいか計測できるようになります。
    声のタイプに対応した、声の高さとフォルマントからなるプリセットを使用し、
    WebAudio経由で保存した10秒間の音声をボコーダーに渡してサーバ上で変換します。

    「転声こえうらない」
    https://vr.gree.net/lab/vc

    この図は「転生こえうらない」におけるボイスチェンジャー処理をWORLD内での関数で表現したものです
    WORLDを用いたボイスチェンジャー処理の一例として理解していただければ幸いです。
    サーバ版 vs モバイル版の比較

    iOSデバイスによる検証
    ラップする形でSwiftによる実装
    PCやサーバによる検証
    Core i7/Xeon向けの実装

    検証対象と方針 FFT:fft_execute()
    コンパイル方法を変更
    コードのみを置き換え → 並列化などのコード改編を行わない

  • 実験環境:プロセッサとコンパイラで比較
    PC (Ubuntu20.04(WSL2))
    Intel Core(TM) i7-10750H CPU@2.60 GHz
    Amazon Elastic Computing (c5.4xlarge, Ubuntu20.04)
    Intel Xeon Platinum 8124M 及び 8275CL CPU@3.00 GHz
    8275CL:新しい世代/CPU動作周波数が高い
    iPhone XSMax (iOS)
    A12 Bionic
    PCとサーバ向けコンパイラ設定
  • 実験方法
    周波数の変化によるRTF
    {100, 200, 300, 400, 500, 600, 700, 800}[Hz]の正弦波
    標本化周波数の変化によるRTF
    {16, 24, 48}[kHz]に設定された125, 250 Hzの正弦波

    → 各実験環境において100回試行
    計測された平均処理時間に対する Real Time Factorを用いて評価
    *RTF: Real Time Factor (RTF<1の時に処理対象の音源に対して実時間処理が可能となる)
  • Synthesis2()におけるFFTに対するCPU使用率
    gcc環境におけるoouraを使った場合のCPU FlameGraph

    Synthesis2におけるfft_execute()は全体の59%
    ⇨ FFTは高速化への寄与率が高いことを可視化できている
  • 結果1:周波数が100Hzごと異なる音源を用いた各環境におけるRTF比較

    ⇨ oouraから各環境で最適なFFT関数に置き換えることで高速化できる
  • 結果1:周波数が100Hzごと異なる音源を用いた各環
    境におけるRTF比較

    WORLDのF0推定範囲(上限):800 Hz → 無声音として処理された
    constantnumbers.h#L22
    https://github.com/mmorise/World/blob/master/src/world/constantnumbers.h#L22
  • 結果1:PC, サーバ向けCPUの比較
    PC向けCPU < サーバ向けCPU
    シングルスレッドを重視, Turbo Boost により一時的なCPU周波数が高い
    https://www.intel.co.jp/content/www/jp/ja/gaming/resources/turbo-boost.html

    8124Mと8275CLの比較
    TurboBoostが考慮されず、CPU周波数の差が見られなかった
  • 結果1:FFTW3の比較 (AVX512 vs OS)
    CPUの仕組み SIMDを使う際にClockの周波数の切り替えを動的に行う
    AVX512の効果は見られない原因
    周波数の低下
    切り替えのオーバーヘッド
    (注) FW3: FFTW3 OS付属
    FW3A: FFTW3 AVX512
  • 結果1:コンパイルオプションによる比較
    自動並列化オプションによる比較
    シングルコアに強制した場合 → 僅かながら速い
    自動並列化が有効化された場合 → オーバーヘッドの発生
    (注) PP0: -parallel-par-threshold0
    NP: Non-parallel
  • 結果2:標本化周波数の変化によるRTF
    表:125 Hz, 1秒の信号音におけるFFT呼び出し回数
    iOSデバイス環境における各ステップRTF
    FFTライブラリ: (上)ooura, (下)Accelerate

    表:WORLDを用いたボイスチェンジャー処理での125 Hz, 1秒の信号音におけるFFT呼び出し回数

  • 発表まとめ:WORLDのFFT関数に注目し,特徴的な複数の環境において速度比較した
    【速度比較】
    RTF:MKL<FFTW3<Accelerate<ooura
    oouraをFFTW3や各環境に最適化されたFFTに 置き換えて得られる効果は十分にある
    【コスト面】
    サーバ:CPU 時間に対してコストが発生する
    iOS デバイス:サービス提供者のコストは発生しない
    サーバ側変換の通信経路や総合的な可搬性とともに考慮すると,Accelerate Frameworkを用いて変換処理を行うことも十分に実用的
  • 発表まとめ:WORLDのFFT関数に注目し,特徴的な複数の環境において速度比較した
    【実用上】
    多様な発話による周波数の変動から発生するオーバーヘッドを考慮
    総合的な高速化を期待
    描画や通信,インタラクション
    CPUのマルチスレッド化や並列処理化を検討
    5G通信網のような高速低遅延で環境においても, アルゴリズムの互換性とともに柔軟な設計を行うための データを取得できた
  • 「FFTライブラリを対象とした実時間Vocoderの速度比較」
    RTF最速は…PC環境における oneAPI-MKL
    iOS-oouraを基準とすると, 約8.41倍から12.80倍の高速化を期待できる
    コスト面も考えるとiOSもすごい

    少なくともWORLDのFFT3化は有為。

  • [追記]音響学会でいただいた質疑応答

    Q. 大浦FFTからFFTW3などに置き換えてなぜ速くなったのか? A. FFTW3とMKLの場合、Intelが提供しているSIMD命令を使用することやIntelのコンパイラにおいて命令セットの並びなどの最適化が高速化に寄与していると推察します。 Q. ライセンスについて A. 大浦FFTはOSSでアプリ組み込みにフリーなことから使用されています(WORLD開発者 森勢先生談)。FFTW3やMKLはそれぞれライセンスが明記されていますのでそちらに従っていただければ幸いです。 Q. データパッキングをしているのか?データパッキングによる高速化は考えられるか A. Accelerate Frameworkでは独自のデータパッキングを行なっています。そのため、アプリ開発者側によるデータパッキングが高速化に寄与していると考えられます。
    REALITYエンジニア ブログ参照 https://note.com/reality_eng/n/n0cd9bd157df3

×