Open3

Fletでビルド可能な録音ライブラリ(デスクトップ限定)

MatsuSpringMatsuSpring

Fletでマイクからの入力を録音するアプリを作りたくなったので、それに使用できそうなライブラリ探しをします。
目標はネイティブデスクトップアプリとしてビルドすることなので、最低限の機能でそこが可能かだけ調査します。
まずはWindows、それで問題なければUbuntuも調査します。(Macは持ってないので今回は未調査…)
Webやモバイルアプリは今回は視野に入れません。

環境

  • Windows 11
  • uv 0.5.11
  • Python 3.13.5
  • Flet[all] 0.28.3
  • Flutter 3.29.2
MatsuSpringMatsuSpring

SoundCard

依存ライブラリが少なくて第一候補だった。
PortAudioにも非依存でどんな環境でも一発で動きそう。

バージョン

  • SoundCard 0.4.4
  • SoundFile 0.13.1
  • NumPy 2.2.6

NumPyのバージョンについて
SoundCardがValueError: The binary mode of fromstring is removed, use frombuffer insteadというエラーを吐いたため、最新からダウングレードしてる。
どうやら、最新のNumPyではfromstringメソッドが削除されているようだったので、まだ使用できるバージョンまで落とした。

結果:微妙

ビルドしたexeを実行しても、画面上に
FileNotFoundError: [Errno 2] No such file or directory: 'C:\[プロジェクトフォルダ]\record_audio_test\build\windows\site-packages\\soundcard\mediafoundation.py.h'
というエラーが表示されて、そのままでは実行できなかった。
解決のために.venv\Lib\site-packages\soundcardに存在する(uvで環境構築した場合)mediafoundation.py.hを、build\windows\site-packages\soundcardにコピペしてみると動いてくれた。

しかし、buildコマンドを打つだけでは解決しないので却下。

ちなみに他にもsoundcardに関わる.py.hファイルは存在し、録音以外の機能を使おうと思ったら追加でコピペしないと行けない可能性もある。

しかし、numpy配列⇛音声ファイルの保存に使用したSoundFileは問題なく動いたので、これは嬉しい。

MatsuSpringMatsuSpring

sounddevice

これも依存ライブラリが少ない。
ただし、PortAudioに依存しているようで環境によっては一発で動かないかも。

バージョン

  • sounddevuce 0.5.2

結果:Windowsではいい感じ

Windonwsではflet buildコマンド一発でビルド完了・動作も問題なし。

ただし、Ubuntuではflet runすら通らず。
エラーはraise OSError('PortAudio library not found')なので、やはりPortAudioが必要なようだ。
今回は追加ソフトウェアの利用は避けたいので却下。