open aiのwhisperをより高速化したfaster-whisperを使いリアルタイムで文字起こしをできるようにする
マイクで入ってきた音声を文字起こし、または、PCの音声の文字起こしをリアルタイムでできるようにする。
今回はreriiasuさんのspeech-to-textを使用します。
本家解説qiita
このspeech-to-textはローカルの環境なので起動できるので、機密の音声データでも良いし、文字起こしも無料で実行が可能です。
ただ、CPUのみでもできますが、NvidiaのGPUがないと安定性と精度を確保できないので、RTX2070以上の物を用意するのがベスト。
GTX980x2,1060,1070では少しスペック不足を感じる。
インストールに関しては、前のfaster-whisperの設定ができていればそのまま動かすことができるので細かい方法は省略します。
とりあえずminicondaで、cuda toolkit、cuDNNの設定。Pythonが使える状態まで設定してください。
gitページからソースコードzipをダウンロード、解凍し、適当な場所に移動させます。
その後minicondaを起動して、環境を切替、パスに移動します。
requirements.txtがあるため、次のコマンドで必要なライブラリー 一式をダウンロードできます。
pip install .
これで終わりです。
Pythonのコード1行で起動ができます。
python -m speech_to_text
起動が出来たら、speech-to-textの設定は次のようにしました。
英語、日本語を試してみました。
精度については、モデルをtniyにして
精度は個人の感覚であり、正確な情報ではありません。
large-v3
日本語はtinyでは厳しいようです。large-v3がやっぱり凄い。これくらいの精度ならば、実運用しても問題なさそう。
GPUは1060 6gでlarge-v3モデルをしましたが、リアルタイムでは厳しかったです。
とにかく遅い。また、文字のダブりがあります。
RTX2070であれば、ギリギリストレスなくリアルタイム文字起こしとして使えそうです。
virtual cableというものを使うとPCの音をマイクデバイスとして扱うことができます。
OBSが有能過ぎて、あまり出番がありませんでしたが、便利なのでインストールしてもいいかもしれません。
仮想デバイスをたくさん入れると、なんで音がでなくなったのかという原因の切り分けが非常に難しくなりますのでご注意ください。
virtual cableからダウンロードできます。
virtual cableをインストールしたら、既存のスピーカーと、既存のマイクをVoiceMeeterに設定します。
最後にVoiceMeeter Outputの聴くタブで以下の設定をします。
デバイスは既存ではなく、いつも使っているスピーカーに設定します。
Audio DeviceのところにVoiceMeeter Outputを選べばPCの音を文字起こししてくれます。
speech-to-textを使おうとしたら、私の環境で起動ができず、次のエラーが発生していた。
PermissionError: [WinError 10013] アクセス許可で禁じられた方法でソケットにアクセスしようとしました。: ('localhost', 8000)
これはファイヤーウォール、ポートが既に使用されている可能性。その他起動する権限がない等の原因があるそうだが。これを解決するために1日かかってしまった。
他のソフトでポートが使用されていた!!
8000ポートreact系でたびたび使っていたので、これだけは違うだろうと思っていたが、間違いだった。最近入れたソフトで8000ポートを使用していたことが分かった。
ポートが使用されているかどうかを確認するため、管理者権限でコマンドプロンプトを開きます。
netstat -oab
そしたら、8000ポートを使用しているアプリを発見してしまった。
このアプリをタスクマネージャーのサービスから停止させて起動したら。すんなりspeech-to-textが起動できました。
リアルタイムで文字起こしができるようになりました。精度もかなり良く、srtで字幕ファイル出力もできるようなので、動画編集時にかなり役だちます。
ローカル環境なので重要な会議、機密のものもリアルタイムで文字起こしが出来てしまいます。
あとはPCのスペックを上げないと...
質問や、間違いがありましたら、お気軽にどうぞ
※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください