【逆変換】画像から音を作り、ステレオグラムに表示させる方法【ARSS,使い方】

音楽
スポンサーリンク

はじめに

今回は画像から音を作る方法を紹介します。
The ARSSというツールを使います。

有料ならPhotosounderというソフトがおすすめ。(110$)

Photosounder
Photosounder, Photosounder plugin, buy Photosounder, download Photosounder trial, Photosounder Photosounder

また、この処理はどうしても画像の細部が崩れたり、歪みます。
綺麗に作っても表示ソフト側の問題で歪みます。

細かな表現に向かないことを前提に進めてください。

下準備

こちらのページにアクセス。

The Analysis & Resynthesis Sound Spectrograph

使ってるOSを選択。(ここではWindows)

5秒待つとDLが始まります。
※The ARSS = Analysis-Resynthesis Sound Spectrographの略

zipを展開。
→ INSTALL.txtを確認。

すると、「動かすにはCMakeが必要、こちらのURLよりダウンロード」と書かれてます。

このページにアクセス。

403 Forbidden

使ってるOSに合わせたCMakeを選択してダウンロード → インストール。

これで下準備が完了です。

利用規約の確認

先ほどDLしたページの名前をクリック。

もしくは、こちらのページにアクセス。

Analysis-Resynthesis Sound Spectrograph
Download Analysis-Resynthesis Sound Spectrograph for free. The Analysis & Resynthesis Sound Spectrograph analyses a sound file into a spectrogram and is able t...

下の方を見ます。
すると、利用規約が書かれてます。

GPLv2は、無料で商業利用OK。
使用した素材の創作物などの制作、販売も可能。

3DCGツールで有名なBlenderと同じライセンスです。(GPL v2)
VRChat界隈を中心に、Blenderを使った商品が出回ってます。
それと同じような扱いができると思ってください。

詳細はこちらでまとめてます。

これで、利用規約の確認が完了です。

画像の用意

The ARSSは「.bmp」形式の画像しか使えません。
また、小さな画像を使う必要があります。(200px前後が理想)

後の設定で、1:1の200pxが重要になってきます。
慣れないうちは、全く同じサイズで作る事を推奨します。

ここでは、無料のKritaを使用して.bmp画像を作成します。
こちらのページよりDL。

Krita

できれば1:1の画像をドラッグ&ドロップで読み込み。
画像 → 画像を新しいサイズにスケールを選択。

画像の大きさを200×200px
フィルタをバイリニアなどに設定。
OKで確定。

ファイル → エクスポートを選択。

ファイルの種類を.bmpに設定。
任意のアルファベットだけで出来た名前を付けて保存。

日本語のファイル名はエラーの原因になる可能性があるので避けました。
これで、画像生成が完了です。

画像から音生成

先ほどThe ARSSをDLしたファイルを開きます。
arss.exeを実行。

Input file:に使いたい画像をドラッグ&ドロップ。

パス名が出て来たら、エンターで確定。

Output file : 「任意の出力先パス」と「\ファイル名.wav」を入力し、エンターで確定。
⚠.wavが最後に無いと動きません。

Modeの所で、数字の2を入力。
エンターで確定。

Bit/samleとSample rateを空白の状態でエンターで確定。
min. frequencyを100に設定 → エンターで確定。

低音部分はスペクトログラムで表示エラーが起こりやすいです。
なのでmin. frequencyを100に設定しました。

Bands per octaveを26.25に設定 → エンターで確定。
すると、自動でMax. frequencyが設定されます。

多くのスペクトログラムは20000が最大値です。
ここに収まるようにします。

Max. frequencyの計算は「Bands per octaveの値」と「ピクセル数」が影響してます。
が、具体的な数字の計算は…正直よくわからないです。

【 Max. frequencyを減らす処理 】
・Bands per octaveを大きくする
・ピクセル数を下げる

【 Max. frequencyを増やす処理 】
・ピクセル数を増やす
・Bands per octaveを小さくする

試しに、1024×1024pxの画像を読み込ませました。
すると、とんでもない数値になりました。

これが、画像を200×200pxにした理由です。

任意の画像を使いたい方や、細かく調整をしたい方は、毎回wavファイルを消して1から実行。
「Bands per octaveの値」と「ピクセル数」を変えてMax. frequencyを調整してください。

次に、Pixels per secondです。
これは「ピクセル数÷任意の値=秒」という計算式。

ここでは50に設定して、4秒の音を作ります。

エンターで確定。
すると、サウンドファイルが生成されます。

これで、画像から音生成が完了です。

ステレオグラムに表示させる

何でもいいので表示ソフトを用意します。
DAWに読み込ませて、有料ツールの「Insight 2」と「MMultiAnalyzer」で表示させました。

すると… ツールの違いで歪みます。(Hz幅の取り方、秒の刻み方、など)
こればかりは、仕方ないです。

無料で一番綺麗に表示できるソフトがAudacityです。(ただ、落ちやすいなどの問題あり)
こちらにサウンドファイルをドラッグ&ドロップ。

Soundの所 → スペクトログラム(S)を選択。

もう一度sound → スペクトログラム設定(P)を選択。

スケールを対数に設定。
最小周波数を100、最大周波数を20000に設定。
OKで確定。

表示する大きさなどを調整。

以上がステレオグラムに表示させる方法です。

歪みを減らすコツ

ツールによって歪むのは仕方ないです。

その上で出来る事、シンプルな図形の場合、なるべく低い周波数を使わない事。
つまり、画像で言うと下の余白を大きくとる事です。

これで、Insight 2でもややマシな表示になりました。

元の画像を比べるとこの通り。

キャライラストで音生成

AIで生成したキャラを表示させたのが下図。
この場合、なぜかInsight 2の方が綺麗に出てます。
MMultiAnalyzerでは、顔の部分で線が途切れ、胸しか映ってません。

Audacityで表示させるとこのような感じでした。
こちらも、顔(5000Hz)より上で線が出てきてしまいます。
また400Hz以下もマシですが…ノイズが強い。

コツまとめ

以上より、考えられるコツは下記。

・綺麗に見せたい物はなるべく中央。
・上と下は使わない
・どうしても上下に跨ぐ場合はシンプルな図形なら下の方を空ける
・絵などは上の方を空ける
・そもそも歪みが気にならない図形を使う
・一部の表示ツールで歪むことを諦める

その他の画像 → 音生成方法

$110課金できるなら「Photosounder」を強くお勧めします。
このARSSのシステムを組み込んで拡張した1つのソフトです。

Photosounder
Photosounder, Photosounder plugin, buy Photosounder, download Photosounder trial, Photosounder Photosounder

簡単に、画像から音が作れるようです。

また、曲の低音と高音を入れ替えたり、ボコーダー、ノイズ除去、コーラスなどができます。
前衛的な技法で、音楽を制作したいにおすすめ。

⚠vstプラグインではなく、スタンドアローンのソフトです。

また、他にも下記のような生成ツールがあります。
 ・Wolfram言語 
 ・Image to Audio, Spectrogram Player
 ・ Coagula …など

が、下記のような問題があり解説を避けました。
 ・これ目的にWolfram言語に課金するならPhotosounderを買った方が良い
 ・フリーソフトは精度がやや低い
 ・利用規約が明確でないものがある …など

【おまけ:Wolfram言語での生成方法】
Wolfram cloudに登録
 → in1~3をコピペ
 → 任意の画像をドラッグ&ドロップで差し替えて
 → 動作させてOBSやオーディオインターフェースなどで録音。

興味ある方は、こちらも試してみてください。

まとめ

今回は画像から音を作り、ステレオグラムに表示させる方法を紹介します。
また、先ほど紹介した音の表示ツールの使い方はこちらで解説。

ぜひ、こちらもご覧ください。

コメント

  1. たなか より:

    初めまして。
    The ARSSのパラメーター「bands per octave」辺りの仕様について、以下が参考になるかもしれません。

    このbands per octave というのは、「画像の1ピクセルを1メモリとする」という前提があるようです。
    つまり、200pxの画像の場合、200目盛りであることがその時点で決定していて、
    その1メモリで何を表すか、を使用者が設定することになります。

    max周波数は、以下のようになっていそうです。

    ーーーーーー

    max = min×2^(P/B)

    ・B→bands per octave
     オクターブ(周波数二倍)を何分割するか(対数で)

    ・P→ピクセル数-1
     目盛りのmaxで、0からmax-1まで。px数個

    ・1目盛りが2^(1/B)になります。

    ーーーーーー

    画像の高さ1024px、min Hzが100とすれば、
    max = 100 * 2^((1024-1)/36)
    ≒35831834494.1106…
    と、この記事にある値の通りになりました。(画像では最後の桁で四捨五入されて、末尾は「.111」)

    一応、maxを20000hzにおさめるために、画像の高さ(px)に対してbands per octaveをいくつにすればよいか、
    計算式を置いておきます

    ーーーーーー

    B = P/log2(20000/min)

    ・B→bands per octave
     オクターブ(周波数二倍)を何分割するか(対数で)

    ーーーーーー

    適当なパラメータを入れて確認してみます。
    ・画像の高さが1024px →Pが1023(= 画像の高さpx -1)
    ・minが100

    B = 1023/log2(20000/100)
    ≒133.83

    この値をbands per octaveに入力すると、
    Max frequencyは20002.353Hzと、大方狙い通りの値になりました。

    つまり、画像の高さpxが多いなら、目盛りを細かくすることができて、
    より精密に音を再現できる、ということになります。

    調べものをしていて辿り着きましたこちらのページが、大変参考になりました。ありがとうございました。
    もうこのソフトについて興味はないかもしれませんが、これが有用な情報となっていれば幸いです。

タイトルとURLをコピーしました