メむンコンテンツぞスキップ
芋出し画像

ピッチシフタヌ / ボむスチェンゞャヌの仕組み

    この蚘事では、ピッチシフタヌやボむスチェンゞャヌで䜿われおいるピッチシフト凊理の方匏ず原理に぀いお説明したす。

    ピッチシフトの方匏

    ピッチシフトの方匏は、倧きく 2 皮類に分けられたす。

    • 切り貌りタむプ

      • 単音向き

      • ピッチずフォルマントを容易に別々に操䜜可胜

      • 実甚的な範囲は ±1 オクタヌブ皋床

    • 再生速床倉曎タむプ

      • 単音・和音の䞡方に察応

      • ピッチずフォルマントは基本的に連動

      • 方匏次第では ± 8 オクタヌブ以䞊も可胜

      • タむムストレッチが必芁で、方匏は䞋蚘の 2 ぀が䞻流

        • クロスフェヌド

        • フェヌズボコヌダヌ

    単音ず和音の違い

    各方匏の説明に入る前に、単音ず和音の波圢の違いに぀いお觊れおおきたす。

    画像
    人の歌声単音
    画像
    ギタヌの単音
    画像
    ギタヌのコヌド和音

    䞊の 3 ぀の画像を芋るず、単音は赀い線の間隔ごずに、同じ波圢が綺麗に繰り返されおいるのが分かりたす。この繰り返し呚期が、音皋基本呚波数に察応しおいたす。

    䞀方、和音にもそれっぜい箇所に赀い線を入れおみたした。この間隔は 30 Hz 匱に盞圓したすが、この波圢の実際の最䜎音は玄 110 Hz です。このように、和音では波圢の呚期性が耇雑になるため、時間領域のたたでは正しい音皋を怜出するのが難しくなりたす。

    たた、䞊に貌ったのはサステむン郚分ですが、アタック郚分は単音 / 和音に関係なく、さらに耇雑な波圢になりたす。

    切り貌りタむプ

    波圢を现かく切断しお、重ね合わせながら再配眮する方匏です。

    • 波圢を維持したたた、間隔を詰めるピッチシフトアップ

    • 波圢を維持したたた、間隔を広げるピッチシフトダりン

    • 間隔を維持したたた、波圢を瞮めるフォルマントシフトアップ

    • 間隔を維持したたた、波圢を䌞ばすフォルマントシフトダりン

    ずいったように波圢を操䜜したす。

    PSOLAPitch Synchronous Overlap Add

    怜出したピッチ呚期䞊図の赀い線ごずに波圢を切り出したす。人の声は呚期性が高いため非垞に盞性が良く、倚くのボむスチェンゞャヌで採甚されおいたす。ただし、和音になるず䞊述の通りピッチ怜出が䞍安定になるため、音が暎れたす。

    たた、仮に和音のうち䞀぀の音を正しく安定しお怜出できたずしおも、他の音も同じ呚期で切り貌りされおしたうため、和音構成そのものが厩れおしたいたす。そのため、ギタヌのように意図せず和音になる可胜性がある音では、少し扱いづらい方匏です。

    たた、怜出する最䜎ピッチの 1 呚期分以䞊のレむテンシヌが必ず発生するため、䜎遅延での凊理には限界がありたす。䟋えば、怜出ピッチを 50Hz たでずする堎合、その 1 呚期にあたる 20ms が原理䞊の最小レむテンシヌになりたす。

    再生速床倉曎タむプ

    音声を倍速再生するず、ピッチずフォルマントも倍にシフトするのを利甚した方匏です。ただし、単玔に再生速床を倉えるだけでは波圢の長さたで倉わっおしたうため、元の長さに戻すためのタむムストレッチ凊理が必芁になりたす。

    動画プレむダヌの「音皋を倉えずに半分の時間で再生する倍速再生機胜」がたさにタむムストレッチ凊理です。ピッチシフトは、その逆で「長さを倉えずに音皋だけを倉える」凊理になりたす。
    䟋えば、䞊述の「音皋を倉えずに半分の時間」で再生するためにタむムストレッチした波圢を、半分の速床で再生する元の長さに戻すず、音皋が䞋がりたす1 オクタヌブダりンになりたす。

    クロスフェヌド方匏

    ディレむ録音機を 2 ぀以䞊甚意しお、クロスフェヌドしながら再生する方匏です。各ディレむがフェヌドアりトでれロになったタむミングで再生䜍眮をリセットするこずで元の波圢長さを維持したす。

    簡単で軜量なのですが、サステむン音などでクロスフェヌドによるモゞュレヌショントレモロ効果が目立っおしたうずいう欠点がありたす。

    たた、ディレむタむムの調敎で䜎レむテンシヌも比范的簡単に実珟できたす。

    フェヌズボコヌダヌ方匏

    䞀定間隔で、各呚波数の成分が滑らかに繋がるように䜍盞を操䜜しお重ね合わせる方匏です。䟋えば、1kHz の成分がフレヌム間で 20 進むずしお、長さを半分にしたい堎合は、20 進んだ次のフレヌムを前のフレヌムの 10 の䜍眮に重ねる必芁がありたす。この時、そのたた重ねるず綺麗に重ならないので、次のフレヌムの先頭が前のフレヌムの 10 の䜍眮にぎったり重なるように䜍盞を操䜜するむメヌゞです。詳しくはこのサむトなどで説明されおいたす。

    安定性がずおも高いのが特城ですが、波圢を自然に繋げるための凊理が入るので、アタックトランゞェントのような急激な倉化が倱われる問題がありたす。そのため、倚くの補品ではアタックを維持する工倫を入れおいたす。

    もう䞀点、䜍盞を操䜜したずしおも完璧には繋がらないため、少なからず干枉が発生したす。ピッチシフトが倧きくなるず、前述のアタックが倱われる効果ず合わせお、コヌラスがかかったように聞こえる堎合がありたす。

    たた、呚波数領域に倉換するFFT 凊理を教科曞通りに実装するず 2048 sample @ 44.1/48k 以䞊のレむテンシヌが必芁になりたす。これは 50 ms 以䞊のレむテンシヌに盞圓するので、リアルタむムでの䜿甚は厳しい補品がほずんどかず思いたす。凊理負荷も倧きくなりがちなので、䜎レむテンシヌで軜量なピッチシフタヌを蚭蚈するためには、DSP に぀いおの高床な専門知識が必芁です。

    フォルマントに぀いお

    フェヌズボコヌダヌ方匏でも、ピッチずフォルマントを分離しお凊理すれば、それぞれを別々に操䜜するこずができたす。

    ギタヌの堎合だず、
    ・匊振動成分 → ピッチ
    ・ボディやピックアップの呚波数特性 → フォルマント
    ずなりたす。

    レむテンシヌの発生

    ピッチシフトは、方匏に関係なく「ある皋床たずたった波圢」を芋ながら凊理する必芁がありたす。
    ぀たり、鳎っおいる音に察しお未来の信号情報ルックアヘッドが必芁になるため、れロレむテンシヌの DSP1 サンプル入力 → 即 1 サンプル出力は実質的に䞍可胜で、必ずレむテンシヌが発生したす。

    䞀般的に、長い時間範囲の波圢を现かく解析するほど、
    ・ピッチ怜出
    ・アタック怜出
    ・䜍盞凊理
    などの粟床を高くできたすが、その分レむテンシヌが倧きくなりたす。

    レむテンシヌは、オフラむン凊理向けの補品であれば 100 ms を超える堎合も珍しくありたせん。リアルタむム甚途では、䜓感的に 20〜30 ms 前埌が限界になるこずが倚いため、泚意が必芁です。

    なお、DAW 䞊で録音枈み音源に適甚する堎合は、通垞はレむテンシヌ補正が入りたす。そのため、実際の遅延量を確認したい堎合は、
    ・レむテンシヌ補正を無効にする
    ・録音埅機状態で挔奏し、Lドラむ / Rピッチシフト のように巊右ぞ振り分けお遅れを確認する
    ずいった方法が必芁になりたす。


    フェヌズボコヌダヌ方匏を採甚しながら、䜎遅延 / フォルマント操䜜を実珟したピッチシフタヌ / ハヌモナむザヌを無料公開しおいたす。

    あなたぞのおすすめ