見出し画像

pydubをめぐる試行錯誤(2)

 「pydubを使う前提」にした場合、音声データ加工や音声再生、にはどんなモジュールをどう組み合わせるのが最適解か、の検討中。

の続きです。
 pydub.playback にあるplay関数は、手軽に音を鳴らせる。(Windows環境の場合PyAudioのmoduleをインストールする必要あり。)
 GUIアプリでなく、スクリプトだけでのテスト用にはこれで良い。

 ただしGUIアプリを作る場合を考えると、あまりよろしく無さそう。
というのも、Copilot先生に
>pydub.playback でplay関数を使ってブロック再生を行っているとき、再生の途中で再生を中止して終了したくなったら手段はありますか?
と聞いたら、

pydub.playbackでは、直接停止する機能は無いそうです。
customtkinter使ったGUIアプリで使うことを考えるなら、最初からちゃんとstopコマンドが用意されているpygameなり、just_playbackなりを使うのがよさそう。


snykAdvisorのスコア比較

PyAudio

図らずもインストールしてみることになったPyAudioについて調べる

 PyAudio 0.2.14 のリリースは2023年11月7日。snykAdvisorの評価点数はあまり高くなかった。

https://snyk.io/advisor/python/pyaudio より

Similar Package ではlibrosa,やsounddeviceの評価が高い。

just-playback

ちなみに、当方が再生で使っているjust-playbackの評価を見ると

https://snyk.io/advisor/python/just-playback  より

pydubのスコア79に比べても、だいぶ低い・・。最近は、just-playbackを元にして自分のライブラリとか書いていたからちょっとがっかり。

じゃあ、なにを代替にする?

IPython.display

librosa のドキュメントには

>from IPython.display import Audio
とIPython.displayの中のAudioモジュールを使った音声再生の例が出ています。IPythonはsnykのスコアも非常に高い

https://snyk.io/advisor/python/ipython  より

ただ、これって「その環境にあるウェブブラウザの機能」を使っていることになる。そうじゃなくてスタンドアロンのtkinterアプリに機能を組み込みたい、と考えるとどうなる?

pygame

pygameのmixer.music を使うのが一つの方法。もともと、これを使っていたのでした。snykのスコアも非常に高い。

sounddevice

だそうです。そしてsounddeviceも、snykのスコアも非常に高い

https://snyk.io/advisor/python/sounddevice より

方針の見直し

音声データに関して
・加工は、librosaを基本にする。
・再生は、sounddeviceを基本にする。
・ファイルフォーマットが対応していないときにpydubを併用する。
(mp3での書き出しなど。)

ため口

なぜか、Copilot先生が急にため口になってしまいました。
質問のレベルが低いから、舐められたのでしょうか(笑)


この記事が気に入ったらサポートをしてみませんか?