Pythonで音声データ加工(2)pydub、ffmpegのインストール
前回
の中で、
とさらっと書いたのですが、やっぱりこれは悔しい気がする。
※外部のサービスを使わずに自分の作成するアプリの中で一連の操作を完結させたい、という気持ちがあります。
Copilotのアドバイス
m4aファイルの処理
やっぱりpydubが必要なのか?
・・audioconverterというのも示されているけど、それも結局pydubとffmpegの組み合わせのようです。
mp3形式での出力
これも結局、pydubが必要なのか?
pydubのメンテに関して
ただ、pydubの懸念は、最近メンテナンスされていないようだ、という点なんですよね。
pydubはメンテされていないし、依存関係に含めるとやばいよ、python3.13では、audioopが削除されるから・・みたいな?
ではpozalabs-pydubは?・・何故か二つの答えが出てきた。
へえ、Snykというサービスで、パッケージがどれくらい普及しているとかわかるんですね。
それでも元祖pydubの方が高得点なのは普及率の差からくるのか。
選択
さあどうしたものか。pozalabs-pydubも信用できそうだけど、できるだけ「多数派の側」にいる方が無難だとも思える。問題が発生するのが分かっているのはpython 3.13かららしいから、python 3.12.3を使っている自分としては古くても元のpydubでいいか、などと悩んだ末、念のため
>pip list
をやってみたらリスト中に
>pydub 0.25.1
・・ありゃ、いつのまにか入っていた。
テスト1
つまり、今の当方の環境は、pydub 0.25.1は入っているが、ffmpegは入っていない、という状態。こういう場合にプログラム走らせようとするとどういうエラーが出るのか試してみます。
幸い、前回作った doremi.wavというファイルがあるので、mp3に変更するコードを。
from pydub import AudioSegment
audio = AudioSegment.from_wav("doremi.wav")
audio.export("doremi.mp3", format="mp3")
RuntimeWarning: Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work
warn("Couldn't find ffmpeg or avconv - defaulting to ffmpeg, but may not work", RuntimeWarning)
(以下略)
はい、ffmpegがありませんね。
赤い字が出ました。やっぱりありません。
ffmpegインストール
インストーラーを選ぶ
ダウンロードサイト
Windows用は2種類あるようです。
どちらを選ぶ?
よくわからんけど、
>一般的には、より多くの機能を必要とする場合はgyan.devのFullビルド
・・・とあるので、「それ」にしておきますか。
行ってみると
ようやく絞れました。
ffmpeg-7.1-essentials_build.zip ダウンロードしました。
展開すると
で、binの中身は
で、これをどうするの?
配置方法
検索したらQiitaに記事がありました。
所定の場所に保存してシステム環境変数のPATHにbinフォルダのパスを追加しました。
VSCodeは要再起動。再起動後、ターミナルで、ffmpeg -version。これでバージョン情報が表示されるようになりました。
テスト2
現状、ffmpegの公式インストーラーによるインストールは終わっていますが、pip install ffmpeg-python によるバインディングライブラリのインストールはしていません。この状態で、先ほどのテスト1と同じコードを実行してみます。
⇒問題なく実行できました。ffmpeg-python をインストールしなくてもpydubのバックエンドとしてffmpegは動作するとわかりました。
そして収穫は
昨日のdoremi.wavが172KBでしたから、ファイルサイズ1/10になっています。
よしよし。