Python入門トップページ


フォルダ監視により,音声ファイルから文字起こしと議事録生成を自動化しよう

はじめに

このセクションでは,あるフォルダを監視し,フォルダに新たなファイルが設置されたら自動的にそのファイルを処理するシステムを構築します.最終的には,監視用 watch フォルダに設置された音声ファイルについて,WhisperX で文字起こしを行います.さらに,文字起こし結果からローカルの生成AIを用いて議事録を作成するところまでが目標です.

より具体的には,監視用 watch フォルダに設置された音声ファイルは,一旦待ち行列用の queue フォルダに移動されそこで処理の開始を待ちます.処理待ちのファイル群の中から1つのファイルが作業用 working フォルダに取り出され,そこで文字起こしと生成AIによる議事録作成が行われます.処理を終えたファイルとその結果は done フォルダに格納されます.あるファイルの処理が終わればまた次のファイルが待ち行列フォルダから作業用フォルダに移動され処理されます.こうした一連の処理は,待ち行列フォルダが空になるまで続き,監視用フォルダに新たなファイルが設置されたら再び同じ処理が自動的に行われます.

以降のページでは,フォルダを監視するところから順を追って機能を作成していきます.なお,Windows での実行例を示しますが,macOS でもほぼ同じように動作するようにコードを作成していきます.

目次

  1. 仮想環境を構築し,watchdog をインストールする
  2. Watchdog でフォルダを監視する
  3. 新しいファイルを検知する
  4. 検知した新しいファイルを待ち行列フォルダに移動する
  5. 文字起こし処理用のワーカープログラムのひな形を作成する
  6. ワーカープログラムを常駐化する
  7. フォルダ監視とワーカープログラムでパイプライン処理する
  8. 処理用フォルダを設置してそこで処理を行う
  9. ファイルサイズの変化を監視する
  10. サイズの大きなファイルのコピーに対応する
  11. タイムスタンプを表示する
  12. Subprocess で外部コマンドを起動する
  13. WhisperX の設定を行う
  14. ワーカープログラムで音声データからの文字起こしを実行する
  15. 文字起こし結果を完了用フォルダに移動する
  16. ログを保存し例外を処理する
  17. サブフォルダに結果を格納する
  18. Ollama をインストールする
  19. Python から Ollama にプロンプトを送る
  20. Ollama 処理を関数化する
  21. 文字起こしデータから議事録を作成する
  22. サイズの大きなテキストファイルにも対応する
  23. ワーカープログラムで文字起こし結果から議事録を生成する
  24. 議事録をマークダウンファイルに出力する
  25. 文字コードを強制的に指定する