Upgrade to Pro — share decks privately, control downloads, hide ads and more …

オーディオ処理入門 ボイスチェンジャーを作ろう

Avatar for hotwatermorning hotwatermorning
July 19, 2025
790

オーディオ処理入門 ボイスチェンジャーを作ろう

C++ MIX #15 (https://cppmix.connpass.com/event/359098/) 登壇資料

Avatar for hotwatermorning

hotwatermorning

July 19, 2025
Tweet

Transcript

  1. オーディオ処理の基礎 • 音量を操作するのに整数のままだと扱いにくい ◦ 細かい変化を表現できない • なので float や double

    に変換して処理する ◦ OS やライブラリが提供している関数から float の配列が渡されてき て、それを読み書きする
  2. リアルタイム処理とマルチスレッド • 例)48000Hz の信号を 256 サンプルずつのブロックで処 理するように設定している場合、1ブロックが表す音の長さ → 256 /

    48000 = 0.0053… (約5.3ミリ秒) • マイクからの信号を受け取って処理し、スピーカーに返すと いう処理を毎回この時間内に完了させる必要がある
  3. リアルタイム処理とマルチスレッド • 参考になる動画 ◦ CppCon 2015: Timur Doumler “C++ in

    the Audio Industry” ◦ Dave Rowland & Fabian Renn-Giles - Real-time 101 - Part II: The real-time audio developer’s toolbox
  4. どんなライブラリが使われるか • JUCE (https://juce.com/) ◦ C++のマルチメディアアプリケーション用のフレームワーク ◦ オーディオデバイス/DSP/UIあたりまで手広くカバーしている • PortAudio

    (https://www.portaudio.com/) ◦ オーディオデバイスを扱うための軽量なライブラリ • ゲームエンジン ◦ ゲームエンジンが用意しているオーディオ処理のライブラリを利用すること もある
  5. JUCEを使ったオーディオ処理 • JUCE 独自のプロジェクト管理ツール(Projucer)か、 CMake でのプロジェクト生成をサポートしている • JUCE を組み込んだプロジェクトを生成し、それを Visual

    Studio や Xcode で開いてアプリケーションをビルドできる • オーディオデバイスを扱う処理をデフォルトで JUCE が用意 してくれている
  6. ⾳声信号とフーリエ変換 • 複雑に見える音声信号に対して、その波形にはどんな周波 数の音がどれくらい含まれているかを解析して、さらにそれ を操作できれば音声を変化させられる • ここで使われるのがフーリエ変換 ◦ 一般的にはデジタル信号処理用に高速に処理できるように改良された FFT

    (Fast Fourier Transform) というのが使われる 余談:このフーリエ変換は、 18世紀にフランス人のフーリエが発見したフーリエ級数が元になっている。フーリ エ級数はやがてフーリエ級数で表せる関数ってどんなものだろう、そもそも関数ってなんだろうという問題を提 起して、現代の数学の基礎になった集合論にまで発展する。
  7. フーリエ変換の性質 • フーリエ変換で得られた周波数のデータをもう一度フーリエ 変換処理すると、音声信号に戻る • これを逆フーリエ変換という ◦ FFT に対して IFFT

    (Inverse Fast Fourier Transofrm) という • つまり、FFT したあとの周波数のデータをいじって IFFT す れば元の音を改変した音声波形が得られる
  8. フォルマントシフトとピッチシフトとの違い • ピッチシフトは音の長さを変化させずに音の高さを変える処 理を表す ◦ レコードの早回しみたいにならないようにしながら音の高さを変える ◦ TD-PSOLA や Phase

    Vocoder などの手法がある • フォルマントシフトは音の高さを変えずに、そのスペクトル包 絡のみを伸縮させる ◦ 音の高さは変わらないのに声の聞こえ方が変わる
  9. 参考⽂献 • プログラム101付き 音声信号処理 • サウンドプログラミング入門 • 言語情報処理論 2007-11-21 •

    音・声の認識技術とその応用 • やさしく音声分析法を学ぶ: ケプストラム分析とLPC分析 | PDF • 「音響学入門ペディア」作成に向けて Q4: ケプストラムって要するに何ですか ?