先日、えぬけいさんのツイートの 知らずに1.75倍速再生して居たら、なかなか気付かなかったけど音がおかしかった(概略) というのに興味を持った。それで、無謀にもポリーニのK.488を1.75倍速再生してみたら意外にも結構乗れたのだが、速いのでモーツァルトなのにリストの超絶技巧のような感じに、あるいは、むしろグールドのバッハのような感じになって、なかなかおもしろかったw

少し聴いたあとで普通の速度に戻して聴いたら やけに遅く感じられたのも、おもしろかった。

それで、確かに音(音質)がおかしかったのだが、倍速再生の割には音の高さが変わっていなさそうなことに気づき(絶対音感でないので、本当にそうかは確かではなかった)、いわゆる「時短再生」になっているのではないかと考えた。それで、YouTubeはどういう倍速処理をしているのか調べたくなった。

YouTubeのサイトを見たり、検索したりすれば分かる気はするが、趣味なので敢えて自分で考えてみたい。

それで、手始めに単純なテスト信号(YouTubeにいくつもアップロードされていた)で試してみた。具体的には、テスト信号を1.75倍速再生して、聴いた感じ(音の高さ、ブツ切れ感、音がおかしいかどうか)とスペクトラムがどうなるかを調べたら、なかなかおもしろい結果になった。

  • 1kHzの正弦波: 聴いた感じの違いや違和感はなく(全く普通の音に聞こえた)、スペクトラムも変わらなかった。
    • 440Hzも同様だった。
  • ホワイトノイズ: 聴いた感じの違いはなかった。
    • スペクトラムはランダムなので、比較しなかった。

結果を見ると、音の高さを変えないように倍速再生しているようなので、やっぱり「時短再生」しているようだ。それで、その時は、連続した音や無音を検出して途中を切って縮めているのではと考えたが、それでは処理が複雑なので、今は、音の振幅が0になる点で縮める(切って繋げる)のではないかと想像している。それなら、ある程度高い周波数の正弦波なら確実に音の高さを変えずに倍速(時短)再生できる(ただ、位相(0へのなり方)を合わせないといけないが、それはしているのだろう)。

ただ、音楽の音は まったく単純でなく、振幅が0になる点は不規則にいくらでもあるので、結構テキトーになってしまい(せいぜい、位相を合わせる程度?)、そのために音(音質)がおかしくなるのではないかと想像している。

それで、単純な信号のあとは音楽(あるいは似た音)で試して、どういう処理をしているのかを推定したいと思い、まずは以下のような実験をしようと思っているが、それなりに手間はかかる(特に音を作ってアップロードするのが面倒)うえに 寒くてなかなかモチベーション(やる気)が上がらないので保留中であるw

  • 断続音(デューティ比はとりあえず1:1)を作ってYouTubeにアップロードし、倍速再生でどう聞こえるか試す(無音部を中心に縮める? 無音とは関係ない?)。また、倍速再生された波形やスペクトラムを観察し、どういうふうに倍速化(おそらく「切り貼り」)されているかを調べる。
    • 純音: 正弦波
      • 50Hzと400Hzの断続音が見付かったので試したら、有音と無音の比率は変わらなかったので、無音部を中心に縮めている訳ではないことが分かった)
        • なお、投稿者の書いている「違いが分かる」というのはどういう意味なのだろうか? 単音でないということ?
      • また、上に挙げた1kHz(連続音)の波形を見たところ、とても滑らかで「切り貼り」の痕跡は分からなかった。また、スペクトラムは同様だった。
      • 1kHzの正弦波をYouTubeで倍速再生した波形 (上: 通常の速度, 下: 1.75倍速) 注: 開始位置を合わせていないので、位相は異なる。

    • 楽器の音(単音)
      • 周波数にゆらぎ(ビブラート)のない楽器(ピアノ)
        • ピアノの調音のビデオが見付かり、単音の断続する部分があったので試したら、やはり、有音と無音の比率は変わらなかった。また、上記の正弦波と同様に、「切り貼り」の痕跡は分からなかった。
        • Audacityのエフェクト"change tempo"(高さを変えずにテンポを変える)で試したら、同様な効果が得られた。ただし、波形は若干異なるので、全く同じ処理ではないようだ。
        • ピアノの音をYouTubeなどで倍速再生した波形 (上: 通常の速度, 中: YouTubeで1.75倍速, 下: Audacityのchange tempoでの1.75倍速)

          • 波形の包絡線(輪郭)を良く見ると、Audacityは比較的オリジナルの特徴を残しているが、YouTubeは結構いい加減な感じだ。この辺りが音質劣化に関係しているのだろうか?
      • 周波数にゆらぎ(ビブラート)のある楽器(ヴァイオリン、ギターなど)
    • ホワイトノイズなど

上の結果から、どうやら単純な「切り貼り」をしている訳ではなさそうだ。もっとまともな(かつ、それほど複雑でない)信号処理なのだろう。もう少し考えてみたい。

きっと、そういう決まった処理があるのだろうが、僕は知らない。: 単に、サンプル(標本化された音)を倍速分間引いて、音の高さが変わらないような処理をしているのだろうか。後者はどういう処理なのだろうか? 単に、周波数を変換(= 周波数領域でシフト?)するのか。 → 自分で実装すれば、確かめられそうだ(面倒そうだがw)。

n/m倍速の場合の処理は、以下のようになりそうだ(未検証)。

入力 → LPFする。※1 → サンプルをm/nの割合で間引く。※2 → FFTする → 全体をm/nの割合で低周波側に移す。※3 → 逆FFTする。 → 出力 (n/m倍速になっているはず)

※1: 上限周波数をm/nに制限する。多くの場合では省略してもいいが、音質が劣化する可能性がある。
※2: 間引くことで高速にする。サンプル間を適宜補間することで低速にもできる。例: 1.75倍速の場合、7/4= 1.75 → n= 7, m= 4なので、7サンプルから4サンプルを取り出す。等間隔にならないので、音質が劣化するのかも知れない。
※3: 間引いて(または補間して)音が高く(または低く)なっているので、戻す。例: FFTのサンプル数をNとすれば、全体を(N/2)/(m/n)サンプルだけ0側(またはN/2側)に移す。

そういえば、FFTせずに、デジタルフィルタで(時間領域だけで、LPFも含めて)うまく処理する方法がある気がするが、すっかり忘れてしまった。その方がシンプルだし、窓関数の影響もないから良さそうだ。

(19:56) 書いたあとで、上の倍速化処理について気になったことがある。周波数領域で全体を低いほうに移動して時間領域に戻したら、また時間が長くなって倍速にならないのではないか。位相も一緒に(そうでなく、振幅と位相を求めずに実部と虚部を一緒に?)ずらせばいいのだろうか? (なんか怪しいな) 例によって一筋縄では行かなそうな気がして来た・・・

(22:29) 上記と完全に同じ処理ではないが、既にある(プログラムを作らずに済む)ものを使って実現し、音の高さを保ったまま2倍速にすることができた。以下のような処理をした。

入力普通に2倍速で再生する。※1 → 周波数を1/2にする。※2出力

※1: 上記の処理ではサンプルを1/2の割合で間引くことに相当する(実際にはAudacityでサンプリング周波数を2倍にして再生した)。
※2: 上記の処理ではFFTし、全体を1/2の割合で低周波側に移し、逆FFTすることに相当する(実際にはJACKのHigh Quality Pitch Scalerで周波数を1/2にした)。

「普通に2倍速で再生」まではAudacityで行い、それをHigh Quality Pitch Scalerに入れ、その出力をAudacityで録音した。

なお、気に入るピアノの音源が全くなかったのだが、一番近かったYoshimiのAnalog Piano2を使い、仮想鍵盤で音を出した。

入力、普通の2倍速、出力それぞれに音のファイル(MP3)をリンクしたので、音や音質はひどいものの、音の高さが(おそらく*)同じで、速さが2倍になっているのが確認できる。

*再生速度を速めたり周波数を1/2にしたりして、スペクトラムの形状(音の周波数分布)が変わってしまったためか、音の高さが違うように聞こえるが、おそらく同じ高さ(「同じ鍵盤(キー)の音」の意)なのだと思う。

本当は、最初に想定した条件の1.75倍速で試したかったのだが、今ひとつ音が悪くて効果が確認しにくかったので、2倍速にした。

それから19:56の懸念については、今回はPitch Scalerという中身の不明なエフェクタを使って周波数をずらしたため、当初考えた方法でうまく行くかは分からない。ただ、どうにかして周波数をずらせばできることは分かった。

そして、「普通に倍速で再生する」のは普通にできるし(ただし、入力が蓄積されていることが条件)、周波数をずらすのはアナログ処理でもできそう(昔、声の高さを変えるエフェクタ(ヴォコーダー)があった)なので、分かってみれば意外に容易な感じだ。

 

なお、コメントに書いた時短ビデオでこの方法が使えるかだが、ビデオと音声を2倍速で再生でき、音の周波数を下げる処理ができるのなら可能だろう。ただ、この方式を使っているかは分からない。無音部分を圧縮しているのかも知れない(が、その場合、音楽ビデオのように無音がない時はどうするのだろうか?)。

 

PS. やっぱり、JACKは僕には欠かせない(遊び)道具だ^^

  •  2
  •  0

3件のコメント

  1. naoki:

    僕が確か高校入学で買ってもらったコンポで、倍速でCDをカセットテープに録音できる機能があったのを思い出しました(スキャンした取説によると「CCRS倍速録音」だそうです)。これはテープも倍速で回ってるわけですから、きっと録音時は周波数も2倍でCDから再生されてたのでしょうね。

    同じような頃に、確か2倍速で再生できるVHSビデオデッキのCMを見ました。所ジョージが出ていた気が。倍速だから音声も高音になるのかと思いきや、音の高さはそのままっぽかったので驚いた記憶があります。(YouTubeにありました。懐かしいです。 https://www.youtube.com/watch?v=LMe5I07CiD0 )

    それにしても、波形とか見ちゃうんですね。凄いです……。

    •  2
    •  0
  2. れんと:

    ●おお、倍速ダビング、懐かしいです。僕の頃はカセットテープ間だけでしたが、CDからもできたんですね。確かに、当時でもCDは音飛び防止のために2倍で回転していたので、その信号が使えたのかも知れません。

    どうでもいい細かい話ですが、倍速ダビングをすると、高音が弱まる可能性があります。というのは、倍速再生時は音の一番高い周波数(例: 20kHz)が2倍になるので、ラジカセがそこまで対応していないと欠けてしまうのです。仮にラジカセが20kHzまで対応していたとすると、倍速ダビング時は10kHzまでしか出ないことになります。が、ラジカセなので気にする領域ではないです^^

    そして、僕が今回「時短再生」でずっとイメージしていたのはそのVHSビデオなんです! 確かサンヨーだったと思ってましたが、やっぱりそうでした。ぞれにしても、随分音が綺麗ですね(製品もそうかは不明ですが)。

    当時もデジタル信号処理をしていたか怪しいので、全部アナログでやっていたのかも知れず、僕は当時からずっと「どうやっているんだろう?」と、謎でした。

    なので、今回上で考えた方法ができれば、デジタルだった場合の謎は解けるのです。でも、アナログでやったとしたら、作った人は凄いです。

    波形を見たりいじるのは好きですねー。まあ、大昔取った杵柄とでもいいますかwww

    •  1
    •  1
  3. れんと:

    ●ちなみに、その時短ビデオのAnHoShinという方のコメントに「−時短VCRは2倍速で再生するときもデジタル技術を駆使して,無音部を適宜,音のある部分にあてはめて,定速時と同様の音声の再生ができる機能を搭載しており−」とあって、僕が最初に想像した方式で、本文に書いたように、YouTubeがそうしていることを確認しようとしたのですが、(YouTubeは)そうではなさそうです。

    あと、これ、本当にデジタルだったのかなぁ・・・ でも、無音カットなら、当時でもできた気はします。

    •  1
    •  0

コメントを書く

名前    

メール 

URL