メニュー 閉じる

Blog

Voskのオフライン音声認識を仮想キーボードにしてみた(クリップボード経由)

ChatGPTを音声認識で使う

最近かなりChatGPTを使い込んでいて、少しでも楽に使用するために音声認識を使い始めました(笑)
AndroidではGoogleキーボードやアプリ版ChatGPTで音声認識が簡単にできるのですが、うちのWindows10ではうまく行かなかったので別の方法を試してみました。

Voskという選択肢

音声認識自体も「できればオンラインAPIを使いたくないな」と思っていたのですが、Voskという音声認識ツールを知り、試してみることにしました。

以下の記事で紹介されていたVoskを使った音声認識のコードにGUIと仮想キーボード(クリップボード経由)を実装してみました。

元記事の筆者様には本当に感謝です。
発話区間認識機能まで用意してくださっていて、手元ではうまく動作したのでそちらのバージョンを改造しました。

GUIをつけて、仮想キーボードとして動作するようにしたソースコードはこちら。

https://gist.github.com/mikurins/f54a4fabae92c81d7e4bf763e7884d33

asr_streaming_vad.py

いくつかライブラリを使用するので、エラーメッセージが出たらpip installで準備してください。

必須のライブラリは以下です。
・vosk
・sounddevice
・numpy
・pyperclip
何か足りない場合は各自でインストールしてください。

音声モデルのダウンロード先はこちら。

https://alphacephei.com/vosk/models

ラージモデルでも動作しました。
スクリプトと同じ場所に、フォルダ名を「model」として設置してください。

動作イメージ

正常に起動すると専用スレッドで音声認識が始まります。
「クリップボード経由の自動入力を有効化」のチェックボックスをチェックしておくと、任意のアプリへの仮想キーボードとして動作させることができます。

チェックを外すとクリップボード貼り付けは停止し、GUI画面のみに出力されます。
「clear」ボタンを押すと画面クリアするだけです。

私はこれでChatGPTへの指示を爆速で入力できるようになりました。
思ったより認識精度が高くてすばらしいです。
オフラインで動作するのも安心ですね。

※Windows10のPython 3.10.6で動作確認しました。