🎤 KoeMojiAuto

音声文字起こしシステム アーキテクチャ

🛠️ 技術スタック

🐍 Python 3.8+

メイン開発言語。非同期処理、ファイル操作、システム統合に使用

🎧 faster-whisper

OpenAI Whisperの高速実装。音声認識のコアエンジン(INT8量子化対応)

⚡ psutil

システムリソース監視。CPU使用率制御とプロセス管理

🧵 threading

並行処理制御。ファイル監視と処理の分離

🏗️ システムアーキテクチャ

📁 INPUT フォルダ
音声・動画ファイル配置
🔍 ファイル監視
定期スキャン(30分間隔)
📋 処理キュー
ファイルリスト管理
🤖 Whisper エンジン
音声認識処理(INT8/FP16)
📄 OUTPUT フォルダ
テキスト結果出力
🗃️ ARCHIVE フォルダ
処理済みファイル保管

⚙️ 主要コンポーネント

👁️ファイル監視システム

scan_and_queue_files()

• 定期的な入力フォルダスキャン

• 対応形式フィルタリング

• 重複処理防止

📊キュー管理

processing_queue

• FIFO方式のファイル処理

• メタデータ付きキューイング

• 同時処理数制御

🎤音声認識エンジン

transcribe_audio()

• Whisperモデル管理

• 日本語音声認識

• セグメント単位処理

🔧リソース管理

wait_for_resources()

• CPU使用率監視

• メモリ効率化

• グレースフルシャットダウン

🛡️エラーハンドリング

cleanup_on_exit()

• 段階的例外処理

• ログベース状態追跡

• 自動復旧機能

💻CLIインターフェース

display_cli()

• シンプルメニュー

• リアルタイムログ表示

• 対話的操作

⚙️ 設定ファイル(config.json)

{ "input_folder": "input", "output_folder": "output", "archive_folder": "archive", "whisper_model": "large", "compute_type": "int8", // int8(高速)またはfp16(高精度)またはauto(GPU自動選択) "language": "ja", "max_concurrent_files": 3, "max_cpu_percent": 95, "scan_interval": 30 // 分単位 }

compute_type設定

int8: CPU処理に最適化、メモリ効率的
fp16: より高精度、GPU使用時推奨
auto: システムに応じて最適な設定を自動選択

whisper_model設定

large: 最高精度(推奨)
medium/small: 高速処理優先時

🎯 採用された設計パターン

📤 Producer-Consumer パターン

ファイル監視(Producer)と処理実行(Consumer)の分離

🔄 State Machine パターン

ファイル処理状態の管理(待機→処理中→完了→アーカイブ)

🎛️ Strategy パターン

設定ファイルによる動作カスタマイズ(compute_type、モデルサイズ等)

🔒 Singleton パターン

Whisperモデルの単一インスタンス管理

🌐 クロスプラットフォーム対応

🪟 Windows

• バッチファイル(.bat)による簡易セットアップ

• ショートカット作成スクリプト

• Windows 10/11完全対応

🍎 macOS

• Homebrewを使用したPython管理

• zshエイリアス設定スクリプト

• Apple Siliconネイティブ対応

🐧 Linux

• 各ディストリビューション対応

• シェルスクリプトによる柔軟な設定

• Dockerコンテナ化対応(予定)