Discordの通話をいい感じに録音して保存する

Tags: Discord Python 便利 FFmpeg

文脈

ある時、仲間内でお遊びとしてポッドキャストを取ろうという話になったが、いざ録音しようとすると、「始めるぞと思って録音すると気が張る」「録音してる人が自由に作業できない」あたりの問題が出てきてしまったので、その辺を解決して”いい感じ”に録音する仕組みを作った。

方針

通話にBotを参加させて、各自の音声を録音させればいい。これのメリットは割と多くて

  • マイクに載せた音だけ拾える(録音者の載せたくない音は特に設定せずとも乗らない)
  • でっかい遅延がない(誰か特定の人がローカルで通話音声を録ると、録ってる人の音だけ早くなっちゃう)
  • コマンドで秘密裏に録音可能 (DiscordのBotのコマンドには実行者以外に実行が秘匿されるオプションが設定できる) 以上のことから即決した。ただ、課題がいっぱいあって
  • あまりファイルサイズを大きくしすぎると扱いにくい(理想は10MB以内でDiscordに送受信できればいい)
  • 送信されてくる音声ストリームを直接取得する関係上、それらをちゃんと統合する必要がある。
  • かといって、適当に統合すると、一人だけ喋るのが早すぎる・空白が詰められる、みたいな不具合が出る。 とかとか、色々出てきたけどとりあえず実用に耐える程度には全てを解決した。

使用例

まだ作ってない、パッケージ化できてない。FFmpegあたりをどうやってセットアップしようかなぁ~~~~~~~~ githubのリポジトリ