audiowaveform
オーディオファイルから波形ビジュアライゼーションを生成します。波形画像の作成、オーディオプレーヤーのビジュアライゼーション構築、Webプレーヤー向けの波形データ生成、ポッドキャストエピソードのプレビュー作成、オーディオサムネイルの生成、ソーシャルメディア向けの波形PNG出力、JSONフォーマットでのピークデータ抽出、オーディオ処理パイプラインへの波形生成統合など、ユーザーのリクエストに対応します。audiowaveform CLIの使用、JSON/バイナリデータ出力、Webプレーヤー統合に対応しています。
description の原文を見る
Generate waveform visualizations from audio files. Use when a user asks to create waveform images, build audio player visualizations, generate waveform data for web players, create podcast episode previews, build audio thumbnails, render waveform PNGs for social media, extract peak data as JSON, or integrate waveform generation into audio processing pipelines. Covers audiowaveform CLI, JSON/binary data output, and web player integration.
SKILL.md 本文
Audiowaveform
概要
BBCの audiowaveform ツールを使用してオーディオファイルからウェーブフォーム可視化を生成します。PNG/SVG ウェーブフォーム画像をレンダリングし、ピークデータを JSON または バイナリ形式で出力して、Web ベースのオーディオプレイヤー(wavesurfer.js、peaks.js)に対応します。ポッドキャストプレイヤー、音楽プラットフォーム、ソーシャルメディアのオーディオプレビュー、およびオーディオウェーブフォームを表示するあらゆる UI に最適です。
使用方法
ステップ1: インストール
# Ubuntu/Debian
apt install -y audiowaveform
# macOS
brew install audiowaveform
# ソースからのインストール(リポジトリにない場合)
apt install -y cmake g++ libmad0-dev libsndfile1-dev libgd-dev libboost-filesystem-dev libboost-program-options-dev libboost-regex-dev
git clone https://github.com/bbc/audiowaveform.git
cd audiowaveform && mkdir build && cd build
cmake .. && make && make install
# 確認
audiowaveform --version
ステップ2: ウェーブフォーム画像を生成
基本的な PNG ウェーブフォーム:
audiowaveform -i episode.wav -o waveform.png
カスタマイズされたウェーブフォーム:
audiowaveform -i episode.mp3 -o waveform.png \
--width 1800 \
--height 200 \
--colors audacity \
--background-color ffffff \
--waveform-color 3b82f6 \
--axis-label-color 666666 \
--border-color ffffff \
--zoom auto
カラースキーム:
audacity— 古典的な Audacity のルック- カスタム: 16進数で
--waveform-color、--background-colorを使用
ソーシャルメディア用高解像度(1200x630 — OG 画像サイズ):
audiowaveform -i episode.wav -o social-preview.png \
--width 1200 --height 630 \
--background-color 1a1a2e \
--waveform-color 00d4ff \
--no-axis-labels
特定の時間範囲:
audiowaveform -i episode.wav -o clip.png \
--start 60 --end 180 \
--width 800 --height 150
チャネルの分離(ステレオ):
audiowaveform -i stereo.wav -o waveform.png --split-channels
ステップ3: ウェーブフォームデータを生成(JSON)
クライアント側でウェーブフォームをレンダリングする Web プレイヤー向け:
# JSON 出力(ピークスデータ)
audiowaveform -i episode.wav -o peaks.json \
--pixels-per-second 20 \
--bits 8
# バイナリ形式(ファイルサイズが小さい)
audiowaveform -i episode.wav -o peaks.dat \
--pixels-per-second 20 \
--bits 8
JSON 構造:
{
"version": 2,
"channels": 1,
"sample_rate": 44100,
"samples_per_pixel": 2205,
"bits": 8,
"length": 1200,
"data": [0, 45, -3, 67, 12, 89, ...]
}
ピクセル/秒のガイドライン:
20— エピソード全体の概要に最適(ポッドキャスト、1〜2時間)50— 楽曲の詳細表示(3〜5分)100— 非常に詳細、短いクリップ向け200+— ウェーブフォーム編集精度
ステップ4: Web プレイヤー統合
wavesurfer.js を使用:
<div id="waveform"></div>
<button onclick="wavesurfer.playPause()">Play/Pause</button>
<script src="https://unpkg.com/wavesurfer.js@7"></script>
<script>
const wavesurfer = WaveSurfer.create({
container: "#waveform",
waveColor: "#3b82f6",
progressColor: "#1d4ed8",
cursorColor: "#ef4444",
barWidth: 2,
barRadius: 2,
barGap: 1,
height: 80,
responsive: true,
// 事前に生成されたピークスを使用して即座にレンダリング
peaks: null, // JSON から読み込まれます
url: "/audio/episode.mp3",
});
// 事前に生成されたピークスを読み込み(クライアント側のデコーディングをスキップ)
fetch("/waveforms/episode-peaks.json")
.then(r => r.json())
.then(data => {
wavesurfer.load("/audio/episode.mp3", [data.data]);
});
</script>
peaks.js(BBC)を使用:
<div id="zoomview-container"></div>
<div id="overview-container"></div>
<script src="https://unpkg.com/peaks.js"></script>
<script>
const audioElement = document.getElementById("audio");
Peaks.init({
containers: {
zoomview: document.getElementById("zoomview-container"),
overview: document.getElementById("overview-container"),
},
mediaElement: audioElement,
dataUri: {
json: "/waveforms/episode-peaks.json",
},
zoomLevels: [256, 512, 1024, 2048],
overview: {
waveformColor: "#3b82f6",
playedWaveformColor: "#1d4ed8",
},
zoomview: {
waveformColor: "#3b82f6",
playedWaveformColor: "#1d4ed8",
},
}, (err, peaks) => {
if (err) console.error(err);
// ピークスインスタンスの準備完了
});
</script>
ステップ5: バッチ処理とパイプライン
すべてのエピソード向けのウェーブフォームを生成:
#!/bin/bash
# generate-waveforms.sh
AUDIO_DIR="./episodes"
OUT_DIR="./waveforms"
mkdir -p "$OUT_DIR"
for f in "$AUDIO_DIR"/*.{mp3,wav}; do
[ -f "$f" ] || continue
base=$(basename "$f" | sed 's/\.[^.]*$//')
# PNG プレビュー
audiowaveform -i "$f" -o "$OUT_DIR/${base}.png" \
--width 1200 --height 150 \
--background-color ffffff --waveform-color 3b82f6
# Web プレイヤー向け JSON ピークス
audiowaveform -i "$f" -o "$OUT_DIR/${base}.json" \
--pixels-per-second 20 --bits 8
# ソーシャルメディアプレビュー
audiowaveform -i "$f" -o "$OUT_DIR/${base}-social.png" \
--width 1200 --height 630 \
--background-color 0f172a --waveform-color 38bdf8 --no-axis-labels
echo "✅ $base"
done
ステップ6: フォーマット間の変換
# バイナリ → JSON
audiowaveform -i peaks.dat -o peaks.json
# JSON → PNG(事前計算されたデータからレンダリング)
audiowaveform -i peaks.json -o waveform.png \
--width 1200 --height 200 \
--zoom auto
# 生のオーディオ → 複数の出力
audiowaveform -i input.wav -o peaks.dat --bits 8 --pixels-per-second 20
audiowaveform -i peaks.dat -o overview.png --width 2000 --height 100
audiowaveform -i peaks.dat -o detail.png --start 60 --end 120 --width 800 --height 200
例
例1: ポッドキャスト Web サイト向けウェーブフォームプレビューを生成
ユーザープロンプト: 「50個のポッドキャストエピソードが MP3 ファイルで ./episodes/ にあります。PNG ウェーブフォームプレビューと JSON ピークデータを各々生成して、wavesurfer.js で Next.js サイトで使えるようにしてください。」
エージェントは以下を実行します:
- audiowaveform がインストールされているか確認し、必要に応じて
aptまたはbrewでインストールします。 - 出力ディレクトリ
./waveforms/png/と./waveforms/json/を作成します。 ./episodes/内のすべての.mp3ファイルを反復処理し、ブランドカラーを使用した 1200x150 の PNG と各エピソードに対して20ピクセル/秒で 8 ビット深度の JSON ピークスファイルを生成する bash ループを記述します。- バッチスクリプトを実行し、生成されたウェーブフォームの数を報告します。
- クライアント側のオーディオデコーディングなしで事前生成された JSON ピークスを読み込んで、即座のウェーブフォームレンダリングを実現する wavesurfer.js コードスニペットを表示します。
例2: ソーシャルメディアオーディオプレビュー画像を作成
ユーザープロンプト: 「ポッドキャストエピソードを Twitter で共有するための OG 画像サイズのウェーブフォームグラフィックスが必要です。ダークバックグラウンド、シアンウェーブフォーム、軸ラベルなし。エピソード10から15です。」
エージェントは以下を実行します:
- エピソードディレクトリ内のエピソード10〜15のオーディオファイルを識別します。
- 各ファイルに対して audiowaveform を
--width 1200 --height 630(OG 画像寸法)、--background-color 0f172a、--waveform-color 06b6d4、および--no-axis-labelsで実行します。 - 出力ファイルを
episode-10-social.pngからepisode-15-social.pngとして保存します。 - ファイルが生成されたことを確認し、ファイルサイズを記録します。
ガイドライン
- コマンドを実行する前に audiowaveform がインストールされているか必ず確認してください。ほとんどのデフォルトパッケージマネージャーでは利用できないため、古いシステムではソースから構築が必要な場合があります。
- Web プレイヤー向けの JSON ピークスデータには
--pixels-per-second 20を--bits 8と共に使用してください。より高い値は概要ウェーブフォーム向けの不要に大きなファイルを生成します。 - クライアント側でのオーディオデコーディングではなく、サーバー側でウェーブフォーム JSON を事前生成してください。これによりリスナーの Web 上での読み込み時間が数秒になるのを排除します。
- ソーシャルメディア画像の場合、
--no-axis-labelsを使用して、小さなサイズで視覚を乱す時間マーカーなしのクリーナーなグラフィックスを生成してください。 - 大規模なバッチを処理する場合、まずバイナリ
.dat形式を生成し、その後.datファイルから PNG と JSON をレンダリングして、オーディオの複数回の読み込みを避けてください。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- TerminalSkills
- ライセンス
- Apache-2.0
- 最終更新
- 2026/5/4
Source: https://github.com/TerminalSkills/skills / ライセンス: Apache-2.0
関連スキル
listenhub
あらゆることを説明できます。アイデアをポッドキャスト、解説動画、または音声ナレーションに変換します。 ユーザーが「ポッドキャストを作りたい」「解説動画を作成したい」「これを読み上げてほしい」「画像を生成したい」、または知識を音声・映像形式で共有したいときに使用します。トピックの説明、YouTubeリンク、記事URL、プレーンテキスト、画像プロンプトに対応しています。
best-youtube-video-editor
ClawHub上の「best-youtube-video-editor」スキルは、YouTube クリエイターのコンテンツ制作を革新します。タイムラインや複雑なソフトウェアを必要とせず、会話形式のAI駆動型ビデオ編集が可能です。無音部分のカット、チャプターマーカーの追加、字幕の挿入、ペーシングの調整、エクスポートの最適化——すべてが自然言語の指示で実現します。初回使用時には NemoVideo API を通じて認証情報を自動設定するため、有効化後数秒で編集を開始できます。YouTuber、教育関係者、ポッドキャスター、ブランドチャネル向けに開発され、品質を損なわず高速な納期対応が必要な方に最適です。mp4、mov、avi、webm、mkv 形式に対応しています。
video
ユーザーがAIツールやプログラマティックフレームワークを使用してビデオコンテンツを作成、生成、または制作したい場合に使用します。また、ユーザーが「ビデオ制作」「AIビデオ」「Remotion」「Hyperframes」「HeyGen」「Synthesia」「Veo」「Runway」「Kling」「Pika」「ビデオ生成」「AIアバター」「トーキングヘッドビデオ」「プログラマティックビデオ」「ビデオテンプレート」「解説ビデオ」「プロダクトデモビデオ」「ビデオパイプライン」または「ビデオを作ってほしい」と言及している場合にも使用します。ビデオ作成、生成、制作のワークフロー全般に対応できます。ビデオコンテンツの戦略や投稿内容については「social-content」を、有料ビデオ広告クリエイティブについては「ad-creative」をご参照ください。
clipify
ビデオから最も面白い瞬間を検出し、スタンドアロンクリップとしてカットできます。オプションで16:9から9:16へのリフォーマット(フェイスパンまたはスプリットスクリーン)に対応し、Opus風の単語ごとのキャプションを焼き込みます。ユーザーが「clipify」「このビデオからクリップをカットして」「これからショーツを作って」「面白い瞬間を見つけて」「9:16にリフレーミングして」「縦型クリップ」と言及したり、ビデオファイルパスを貼り付けてSNS対応のクリップを求める場合に使用します。
speech
ユーザーが音声生成、ナレーション、アクセシビリティ対応の読み上げ、音声プロンプト、またはOpenAI Audio APIによるバッチ音声生成をリクエストした場合に使用します。組み込みボイスを備えたバンドルCLI(`scripts/text_to_speech.py`)を実行でき、ライブ呼び出しには`OPENAI_API_KEY`が必要です。カスタムボイスの作成には対応していません。
depth-estimation
Depth Anything v2を使用したリアルタイム深度マップのプライバシー変換(CoreML + PyTorch対応) このスキルは、Depth Anything v2モデルを活用して、画像やビデオから取得した深度情報をリアルタイムで処理し、プライバシーを保護しながら変換します。CoreMLとPyTorchの両方に対応しており、エッジデバイスでの高速処理とクラウド環境での柔軟な運用が可能です。顔認識データのぼかしや背景の匿名化など、プライバシー関連の処理を効率的に実行できます。