3DCG屋さんの活動記録

PROFILE ★★こんな人です

3DCGを活用した映像や没入体験コンテンツの制作をしています。テクノロジーの社会実装に興味があり。テクニカルディレクター。面白いこと新しいことにワクワクする気持ちに『素直』でいつづける。

2026年1月21日水曜日

【Gemini】ローカル音源を波形で見たい!「Adobe Stock風」に閲覧するアプリを1時間で作った話


映像制作をしていると、BGMやSE(効果音)の選定で無限に時間が溶けていく。
Webのアセットサイト(Adobe Stockとか)は波形が見えてて最高に使いやすいのに、ローカルに落とした瞬間、FinderやExplorerでスペースキーを連打する苦行が始まる。。。



「ローカルでも、あの波形UIでサクサク探したい」



探しても丁度いいのがなかったので、Geminiとペアプロして自作した。
結論から言うと、ベースは5分、実用レベルへのブラッシュアップ含めても1時間で完成した。AI開発、恐るべし。


作ったもの:Local Audio Browser

  • 指定フォルダ以下の音源を再帰的にリスト化
  • Adobe Stock風の波形一覧表示
  • 波形クリック&スクラブ再生
  • Finderで表示ボタン

機能はこれだけ。だが、これが欲しかった。



開発ログ

1. 爆速のプロトタイプ(所要時間:5分)

要件をGeminiに投げる。
「ローカル音源を波形一覧表示して再生できるアプリ作って。UIはWebのアセットサイトでよくあるようなやつっぽく」

コードが吐き出される。コピペして実行。
動いた。すご!

ここまで5分。
ファイル検索、Librosaでの解析、GUI描画。これ全部自力で書いたら休日が終わるやつだが、カップ麺を作ってる間に終わってしまった。


2. 壁:読み込みが重い

プロトタイプは動いたが、ファイル数が多いとフリーズする。
音声解析の Librosa が高機能すぎて重いらしい。

  • 対策: 標準ライブラリ wave とのハイブリッド化。
    • WAVは爆速な標準ライブラリで読む。
    • MP3などだけLibrosaに投げる。
    • 描画用にデータをガッツリ間引く。

これで数百ファイルのフォルダでもサクサクになった。


3. 進化:神機能「スクラブ再生」

クリック再生だけだと、「曲のサビだけ聴きたい」みたいな時に不便。
「波形の上をマウスでなぞったら、そこを再生するようにしたい」と追加オーダー。

PyQtの mouseMoveEvent をフックして、座標から再生位置を即シークする処理が追加された。
これが入った瞬間、「ただの再生機」から「実用的な選定ツール」に化けた。


4. 配布用にダイエット

自分用に作ったが、便利なので配布することに。
PyInstaller でビルドしたら300MBを超えた。犯人はPyQt6が抱え込んだWebブラウザ機能。
不要なモジュールを exclude してダイエットさせ、最終的に50MB程度に着地。


まとめ

「欲しいツールがないなら作る」が、AIのおかげで「ランチタイムに作る」くらいの感覚になってきている。
ロジックの実装はAIに任せて、人間は「どんな体験(UI/UX)にしたいか」に集中できるのが最高に楽しい。


今後公開予定・・・

ソースコードとアプリは公開しているので、同じ悩みを持つ動画編集者やDTMerの方は使ってみてください。

0 コメント:

コメントを投稿