Windows向けオーディオビジュアライザー完全ガイド|無料&高品質&自作方法も解説!
🔹 オーディオビジュアライザーとは?
オーディオビジュアライザーは、音楽や音声の波形を視覚的に表現するツールです。音の周波数や強弱をエフェクトやグラフィックで表し、音楽をより楽しめる演出を加えます。
🎯 活用例
✅ 音楽鑑賞を視覚的に楽しむ
✅ YouTube・Twitchなどの配信・動画制作
✅ DJ・クラブイベントの演出
✅ ASMRやポッドキャストの視覚補助
🔹 無料で使えるWindows向けオーディオビジュアライザーBEST 5
無料で高品質なソフトを厳選しました!
1️⃣ Plane9|3D対応・超美麗ビジュアライザー
🔹 特徴: 250種類以上のリアルタイム3Dエフェクト
🔹 長所: 高品質な3Dアニメーション、VR対応
🔹 短所: 初期設定がやや複雑
👉 ダウンロード: https://www.plane9.com
2️⃣ VSXu|カスタマイズ性抜群!
🔹 特徴: ユーザーが自由にエフェクトを作成可能
🔹 長所: クリエイティブなビジュアライザーが作れる
🔹 短所: 少し学習コストが必要
👉 ダウンロード: https://www.vsxu.com
3️⃣ Audio Reactive Visualizer (OBS用)|配信向け
🔹 特徴: OBS Studioで使えるリアルタイムビジュアライザー
🔹 長所: 配信に最適、OBSと統合
🔹 短所: OBSが必須
👉 ダウンロード: https://obsproject.com
4️⃣ ProjectM|MilkDropの進化版!
🔹 特徴: 伝説的なWinampビジュアライザー「MilkDrop」の後継
🔹 長所: クラシックで味のあるエフェクト多数
🔹 短所: 最新技術にはやや劣る
👉 ダウンロード: https://github.com/projectM-visualizer
5️⃣ Monstercat Visualizer (Rainmeter)|デスクトップ向け
🔹 特徴: Rainmeter用の音楽ビジュアライザー
🔹 長所: 軽量で動作が軽い、デスクトップ演出に最適
🔹 短所: Rainmeterの基本知識が必要
👉 ダウンロード: https://rainmeter.net
🔹 Pythonで自作オーディオビジュアライザーを作る!
Pythonを使ってスピーカー出力・マイク入力の両方を可視化する方法を紹介します!
📌 必要なライブラリ
pip install numpy scipy matplotlib pyaudio pygame
📌 コードサンプル (リアルタイム波形 & スペクトル分析)
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
import struct
from scipy.fftpack import fft
# オーディオ設定
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
plt.ion()
fig, (ax1, ax2) = plt.subplots(2, 1)
x = np.arange(0, 2 * CHUNK, 2)
line1, = ax1.plot(x, np.random.rand(CHUNK))
line2, = ax2.plot(x, np.random.rand(CHUNK))
ax1.set_ylim(-32768, 32767)
ax1.set_xlim(0, CHUNK)
ax2.set_xlim(0, CHUNK)
while True:
data = stream.read(CHUNK, exception_on_overflow=False)
data_int = np.array(struct.unpack(str(2 * CHUNK) + 'B', data), dtype='b')[::2]
spectrum = np.abs(fft(data_int))[:CHUNK] # フーリエ変換でスペクトル分析
line1.set_ydata(data_int)
line2.set_ydata(spectrum)
plt.pause(0.01)
👨💻 ポイント:
✅ pyaudio
でリアルタイム音声入力
✅ matplotlib
で波形 & スペクトル可視化
✅ scipy.fftpack.fft
で周波数解析
👉 このコードを拡張すれば、より美しいビジュアライザーが作れます!
📌 コードサンプル (リアルタイム波形表示)
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
import struct
# オーディオ設定
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 1024
# PyAudioの初期化
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
plt.ion() # リアルタイム描画を有効化
fig, ax = plt.subplots()
x = np.arange(0, 2 * CHUNK, 2)
line, = ax.plot(x, np.random.rand(CHUNK))
ax.set_ylim(-32768, 32767)
ax.set_xlim(0, CHUNK)
while True:
data = stream.read(CHUNK, exception_on_overflow=False)
data_int = np.array(struct.unpack(str(2 * CHUNK) + 'B', data), dtype='b')[::2]
line.set_ydata(data_int)
plt.pause(0.01)
👨💻 ポイント:
✅ pyaudio
でリアルタイム音声入力
✅ matplotlib
で波形をプロット
✅ numpy
でデータ処理
Pythonで自作オーディオビジュアライザーを実行した場合、リアルタイムで音声の波形(振幅)をグラフとして描画 できます。以下に、実行時の詳細な動作や結果について解説します。
🔹 実行結果のイメージ
- リアルタイムで動作
- 実際にマイク入力を受け取り、その音声データを即座にグラフに反映します。
- 波形が動的に変化し、音に応じて上下に揺れるラインが表示されます。
- 表示されるグラフ
- X軸: 時間 (短いスパンでのデータ点)
- Y軸: 音の振幅 (音量の大小)
- 動作の流れ
- マイクで音を拾う
- 音声データを数値(振幅データ)に変換
matplotlib
を使用して波形をリアルタイム描画- 音が鳴ると波形が上下に変化
- 無音状態だとほぼフラットな波形
🔹 実行時の様子
📌 実際の実行GIFイメージ
(実際には以下のような動きのある波形が表示されます)
📈 [リアルタイム波形表示]
------------------------------------------------
| 🎶 |
| /\ /\ /\ /\ |
| / \ /\ / \ /\ / \ /\ / \ |
| / \/ \_/ \/ \_/ \/ \_/ \ |
|------------------------------------------------|
✅ 音量が大きいと振幅が増す
✅ リズムに応じて波形が変化
✅ 無音だとフラットな直線
🔹 Pythonコードの詳細
import numpy as np
import pyaudio
import matplotlib.pyplot as plt
import struct
# オーディオ設定
FORMAT = pyaudio.paInt16 # 16ビット音声
CHANNELS = 1 # モノラル
RATE = 44100 # サンプリングレート (CD音質)
CHUNK = 1024 # フレームサイズ
# PyAudioの初期化
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
# Matplotlibでのリアルタイムプロット設定
plt.ion() # インタラクティブモード(リアルタイム更新)
fig, ax = plt.subplots()
x = np.arange(0, 2 * CHUNK, 2)
line, = ax.plot(x, np.random.rand(CHUNK)) # 初期の空波形を設定
ax.set_ylim(-32768, 32767) # 16ビット整数の音声振幅範囲
ax.set_xlim(0, CHUNK)
print("🎤 マイク入力を可視化中... (CTRL+Cで終了)")
# 無限ループでリアルタイム更新
while True:
try:
# 音声データを取得
data = stream.read(CHUNK, exception_on_overflow=False)
# バイナリデータを整数に変換
data_int = np.array(struct.unpack(str(2 * CHUNK) + 'B', data), dtype='b')[::2]
# グラフを更新
line.set_ydata(data_int)
plt.pause(0.01) # 10ms間隔で更新
except KeyboardInterrupt:
print("\n🛑 停止しました")
break
# 終了処理
stream.stop_stream()
stream.close()
audio.terminate()
plt.ioff() # インタラクティブモード終了
plt.show()
🔹 コードのポイント解説
1️⃣ pyaudio
でリアルタイム音声取得
pyaudio.PyAudio()
でオーディオストリームを開くstream.read(CHUNK)
で一定間隔ごとに音声を取得CHUNK = 1024
でバッファサイズを設定し、遅延を最小化
2️⃣ struct.unpack()
でバイナリデータを数値化
stream.read(CHUNK)
はバイナリデータ(0/1の羅列)として音声を取得するstruct.unpack()
でint16
(-32768 〜 32767)に変換し、波形を数値化
3️⃣ matplotlib
でリアルタイム描画
plt.ion()
でリアルタイム更新モードを有効化plt.pause(0.01)
で 10ms ごとにグラフを更新line.set_ydata(data_int)
で取得した音声データを反映
🔹 実行時の注意点
✅ マイク入力が必要(スピーカー音を可視化したい場合は「仮想オーディオデバイス」を利用)
✅ サンプリングレート (RATE
) の変更で音質調整可能
✅ グラフが止まる場合、matplotlibのバージョンを確認 (pip install -U matplotlib
)
🔹 応用編|より進化したビジュアライザーを作る!
💡 アイデア集
- 波形を3D化 →
matplotlib
のplot_surface()
を使う - 周波数ごとの強弱を可視化 →
numpy.fft.fft()
でスペクトラム分析 - 光るバーエフェクトを追加 →
pygame
でビジュアライズ - OBS配信用にする →
cv2.imshow()
を使い、画面キャプチャ可能に
✅ Pythonのシンプルなライブラリで構築
✅ 自由にカスタマイズして美しいエフェクトを追加
🎶 音楽と映像を組み合わせて、より楽しい体験を実現しましょう!
🎶 スピーカー出力 & マイク入力の両方を可視化するオーディオビジュアライザー 🎶
Pythonを使って、スピーカー出力(PCの再生音)とマイク入力(リアルの音声)の両方をリアルタイムで可視化するオーディオビジュアライザーを作成します。
これにより、音楽や動画の音(スピーカー出力)、**話している声(マイク入力)**の両方を同時にビジュアライズできます!
🛠 方法
- スピーカー出力を取得
- Windowsなら
loopback
(仮想オーディオデバイス)を使用 sounddevice
ライブラリを活用
- Windowsなら
- マイク入力を取得
pyaudio
を使用してマイクのデータを取得
- リアルタイムで波形表示
matplotlib
で 2つの波形を同時に描画
📌 Python コード
import numpy as np
import sounddevice as sd
import pyaudio
import matplotlib.pyplot as plt
import struct
# 🎧 オーディオ設定
FORMAT = pyaudio.paInt16 # 16bit 音声
CHANNELS = 1 # モノラル
RATE = 44100 # サンプリングレート
CHUNK = 1024 # フレームサイズ
# 🎙️ PyAudioでマイク入力を取得
audio = pyaudio.PyAudio()
stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=CHUNK)
# 🎵 sounddeviceでスピーカー出力を取得
def callback(outdata, frames, time, status):
global speaker_data
if status:
print(status)
speaker_data = np.copy(outdata[:, 0])
# スピーカー出力のストリーム開始
speaker_data = np.zeros(CHUNK)
stream_speaker = sd.InputStream(device=None, channels=1, samplerate=RATE, blocksize=CHUNK, callback=callback)
stream_speaker.start()
# 🎨 Matplotlib 設定
plt.ion()
fig, ax = plt.subplots()
x = np.arange(0, CHUNK)
line_mic, = ax.plot(x, np.random.rand(CHUNK), label="Mic Input", color='blue')
line_speaker, = ax.plot(x, np.random.rand(CHUNK), label="Speaker Output", color='red')
ax.set_ylim(-1, 1)
ax.set_xlim(0, CHUNK)
ax.legend()
plt.title("Audio Visualization - Mic & Speaker")
print("🎤🎧 マイク & スピーカーの波形をリアルタイム表示中... (CTRL+Cで停止)")
# 🎶 リアルタイム更新
while True:
try:
# 🎙️ マイクの音を取得
mic_data = stream.read(CHUNK, exception_on_overflow=False)
mic_data_int = np.array(struct.unpack(str(CHUNK) + 'h', mic_data)) / 32768.0 # 正規化
# 🎵 スピーカーのデータを取得(すでにcallbackで取得)
spk_data = speaker_data[:CHUNK]
# 🎨 グラフ更新
line_mic.set_ydata(mic_data_int)
line_speaker.set_ydata(spk_data)
plt.pause(0.01)
except KeyboardInterrupt:
print("\n🛑 停止しました")
break
# 🔚 クリーンアップ
stream.stop_stream()
stream.close()
audio.terminate()
stream_speaker.stop()
stream_speaker.close()
plt.ioff()
plt.show()
📝 実行結果
✅ 青い波形:マイクの入力(リアルタイムの音)
✅ 赤い波形:スピーカーの出力(PCで再生中の音)
✅ 音の大きさ・リズムに応じて波形が変化
📈 [リアルタイム波形表示]
------------------------------------------------
| 🎙️ Mic: /\ /\ /\ 🎵 Speaker: /\ /\ |
| / \ / \ / \ / \ / \ |
| / \_/ \_/ \ / \_/ \ |
|------------------------------------------------|
🔹 マイクに話しかけると波形が変化
🔹 スピーカーの音楽に合わせて波形が動く
🔹 音がないと波形はほぼフラット
🔹 仕組みの解説
1️⃣ スピーカー出力を取得 (sounddevice
ライブラリ)
sounddevice.InputStream(callback=callback)
を使用callback()
でスピーカー音を取得し、リアルタイムで配列に格納blocksize=CHUNK
で遅延を最小化
2️⃣ マイク入力を取得 (pyaudio
ライブラリ)
pyaudio.open(input=True)
でマイクからリアルタイムでデータ取得struct.unpack()
でバイナリを 整数(-32768 〜 32767) に変換
3️⃣ matplotlib
でリアルタイム描画
line_mic.set_ydata(mic_data_int)
→ マイク波形更新line_speaker.set_ydata(spk_data)
→ スピーカー波形更新plt.pause(0.01)
で毎秒100回の描画更新
⚠️ 実行時の注意点
✅ Windowsの場合、スピーカー出力を取得するには「ステレオミキサー」または「仮想オーディオデバイス」を有効化
✅ Mac/Linuxでは sounddevice
がそのまま使える
✅ スピーカーとマイクの遅延差を考慮し、細かいチューニングも可能
📌 応用アイデア
💡 より進化したビジュアライザーを作る!
- スペクトラム表示(FFT解析)
numpy.fft.fft()
を使って周波数ごとに可視化
- 3Dビジュアライザー
matplotlib
のplot_surface()
を使う
- 光るバーエフェクトを追加
pygame
でよりダイナミックな演出
- OBS配信用にする
cv2.imshow()
を使い、動画配信向けのUIに
🎯 自作オーディオビジュアライザー解説
✅ Pythonでマイクとスピーカーの両方を可視化可能!
✅ リアルタイムで音声の動きを波形として表示!
✅ さらに進化させれば本格的なオーディオビジュアライザーが作れる!
Pythonならではの柔軟性を活かし、自作のオーディオビジュアライザーを作ってみてください! 🎶🔥
Q1. ビジュアライザーが音を認識しない場合は?
✅ 仮想オーディオデバイス(VB-Audioなど)を設定
✅ マイクの入力レベルを確認
✅ 使用ソフトの設定を再確認
Q2. どんなPCスペックが必要?
✅ GPUなしでも動作するが、リアルタイム処理には GPU搭載PC推奨
✅ メモリ 8GB以上推奨
✅ OBSやVSXuは グラフィック性能が重要
Q3. 配信・録画時に遅延を減らす方法は?
✅ OBSの ビットレート最適化
✅ 仮想オーディオドライバの バッファサイズ調整
✅ ビジュアライザーの FPS設定を最適化
🔹 まとめ|無料で高品質なビジュアライザーを楽しもう!
✅ 手軽に導入するなら: Rainmeter + Monstercat Visualizer
✅ 配信や動画向けなら: OBS + Audio Reactive Visualizer
✅ オリジナルエフェクトを作りたいなら: VSXu
✅ Pythonで自作するなら: pyaudio
+ matplotlib
を活用
🎶 音楽をもっと楽しく、視覚的に楽しもう!
📢 この記事が役立ったらシェアをお願いします!
💬 あなたのおすすめビジュアライザーは?コメントで教えてください!
コメント