音声入力自動化作業の構築(AIとの格闘の記録)

最近、AIを活用を始めているのですが、非常に入力文字数が増えてきたこともあり、音声入力自動化を検討してみました。

結果的にこの週末を潰す勢いでやったんですけれども、なかなか面白かったので、それをジェミニにまとめさせましたのでアップします。結果的にこの週末を潰す勢いでやったんですけれども、なかなか面白かったので、それをジェミニにまとめさせましたのでアップします。(ちなみにこの冒頭部分は音声入力しています。めっちゃ楽♪)
(画像もGeminiの画像生成を使いました。日本語が(^^;))

【最終技術報告書】思考直結型・ローカルGPU音声入力システム構築全記録

1. システム概要と達成成果

本プロジェクトは、タイピングによる肉体的負荷(腱鞘炎リスク)を排し、思考を遅延なくテキスト化することを目的とした、完全ローカル完結型の音声入力システムである。

  • 処理速度: 5秒程度の音声に対し、1秒未満でテキスト化・貼り付けを完了(RTX 4060 GPU駆動)。
  • 操作性: 特定の物理キー(ENDキー)を押している間だけ録音、離した瞬間に自動貼り付け。
  • 秘匿性: 全処理をローカルPC内で行うため、音声データやテキストが外部サーバー(Google/OpenAI等)に送信されることは一切ない。

2. 使用機材およびソフトウェア構成(Tech Stack)

ハードウェア

  • PC: NVIDIA GeForce RTX 4060 搭載機
  • マイク: Logicool H390 USBヘッドセット

ソフトウェア・ライブラリ

  • OS: Windows 11
  • 言語: Python 3.14 (最新安定版)
  • AIモデル: faster-whisper (モデルサイズ: medium)
    • 標準のWhisperより高速化されたモデルを使用。
  • 音声制御: sounddevice, scipy.io.wavfile
  • システム操作: pyperclip (クリップボード制御), pyautogui (ペースト自動化)
  • キー監視: keyboard (グローバル・ホットキー監視)
  • GPUアクセラレーション: nvidia-cublas-cu12, nvidia-cudnn-cu12

3. 具体的な構築手順(エンジニアリング・ログ)

手順1:Python環境と依存ライブラリの整備

Python 3.14環境下で、GPUを駆動させるための特殊な設定を行った。特に最新環境ゆえのDLL読み込みエラーを回避するため、コード内で直接ライブラリパスを通す処理を実装した。

Python

# NVIDIAライブラリのパスを強制的に通す(RuntimeError対策)

os.environ[“PATH”] += os.pathsep + os.path.join(sys.prefix, ‘Lib’, ‘site-packages’, ‘nvidia’, ‘cublas’, ‘bin’)

os.environ[“PATH”] += os.pathsep + os.path.join(sys.prefix, ‘Lib’, ‘site-packages’, ‘nvidia’, ‘cudnn’, ‘bin’)

手順2:ENDキー・トリガー制御の実装

「無変換キー」等のシステム標準キーはIME(ATOK等)と干渉するため、物理的に独立した「ENDキー」をトリガーに採用。keyboard.is_pressed を用いた永続ループにより、キーの状態をミリ秒単位で監視する仕組みを構築した。

手順3:解析と自動貼り付けのパイプライン

  1. キー押下:sounddevice によりメモリ上へ音声バッファを蓄積。
  2. キー解放:蓄積データをWAV出力し、即座に faster-whisper で解析。
  3. 解析完了:結果を pyperclip でクリップボードにコピーし、pyautogui で Ctrl + V を送信。

手順4:常駐化(サイレント起動)の設定

コマンドプロンプトを表示させずにバックグラウンドで動作させるため、VBScript(.vbs)を作成。Windowsの shell:startup に登録することで、OS起動時に自動で「音声入力待ち受け状態」になるよう設定。

4. 主要なトラブルシューティング記録

  • DLL不認識問題: pip で入れたはずのCUDAライブラリがPythonから見えない問題。
    • 解決策: os.environ でシステムのPATH環境変数を実行時に動的に書き換えることで解消。
  • スレッドの腐敗(AIハレーション): 構築過程でAI(ChatGPT/Gemini初期版)が文脈を失い、誤ったモデルを提案。
    • 解決策: Gemini Business Standard版へのアップグレードと、スレッドの定期的リセットにより、論理的整合性を維持。
  • キー入力の奪い合い: IMEのショートカットとPythonのキー検知が衝突。
    • 解決策: 入力文字エリア外の物理キー(END)への変更により、システム上の干渉を完全に排除。

5. 結論

本システムは、18時間の構築時間と、のべ40回以上のコード改修、そして5万字に及ぶデバッグ打鍵を経て完成した。これにより、キーボード入力という物理的制約から思考が解放され、AIとの対話成熟度は「自律的制御(レベル5)」の段階へと到達した。

なかなか面白いまとめではないでしょうか。今、小説家バージョンでまとめさせているのもあるので、できたらアップします。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です