2022-04-20概要スピーカーやヘッドフォンから出力されるシステム音を録音します。18.04での動作を確認しました。インストールSoundCardとSoundFileをインストールします。SoundFileドキュメントによると、LinuxでSoundFileを使うためにはlibsndfileをaptなどのパッケージマネージャーでインストールする必要があるようです。ソースコードGitHubにも置いてあります。mic:get_microphone().recorder()で録音をするインスタンスを取得します。include_loopbackをTrueにすると、スピーカーやヘッドフォンなどから録音するインスタンスを取得できます。idとして、SoundCardが定めるデバイスのID(int型)かデバイスの名前(str型)が使えます。今回は現在システム音を出力しているデバイスから録音したいので、idをシステムのデフォルトのデバイスの名前にします。mic.record(numframes=samplerate*record_sec)record()でデバイスから録音します。1秒間にsamplerateフレームだけ録音されます。今回はrecord_sec秒間だけ録音したいので、numframesをsamplerate*record_secとします。録音したデータはnumpyの配列として、変数に格納されます。samplerate=samplerate)write()を使ってnumpyの配列をwavファイルとして出力します。マルチチャンネルで保存したい場合はdata=dataとします。上手く動かない条件プログラムを開始するときに無音だと、プログラムが指定した秒数を待たずに終了してしまいます。現在、原因は不明です。追記:Windowsにおけるこのバグはmasterブランチでは取り除かれました。