Hero img
[音声から文字起こし]faster-whisperで文字起こしをしてみる

マイクで入ってきた音声の文字起こしをspeech-to-textを使ってリアルタイムで文字起こししてみる

open aiのwhisperをより高速化したfaster-whisperを使いリアルタイムで文字起こしをできるようにする


目次

  • 目標
  • 環境
  • speech-to-text
  • インストールする
  • ダウンロード
  • 起動してみる。
  • 設定
  • 検証してみた結果
  • GPU
  • PCの音を文字起こしする。
  • PCの音をマイクとして使う。
  • マイクデバイスを選ぶ
  • 起動ができなかった。
  • 原因
  • ポート使用状況の確認
  • まとめ

目標

マイクで入ってきた音声を文字起こし、または、PCの音声の文字起こしをリアルタイムでできるようにする。

環境

  • windows 10
  • RTX 2070
  • python 3.10
  • miniconda 23

speech-to-text

今回はreriiasuさんのspeech-to-textを使用します。
本家解説qiita このspeech-to-textはローカルの環境なので起動できるので、機密の音声データでも良いし、文字起こしも無料で実行が可能です。
ただ、CPUのみでもできますが、NvidiaのGPUがないと安定性と精度を確保できないので、RTX2070以上の物を用意するのがベスト。
GTX980x2,1060,1070では少しスペック不足を感じる。

インストールする

インストールに関しては、前のfaster-whisperの設定ができていればそのまま動かすことができるので細かい方法は省略します。
とりあえずminicondaで、cuda toolkit、cuDNNの設定。Pythonが使える状態まで設定してください。

ダウンロード

gitページからソースコードzipをダウンロード、解凍し、適当な場所に移動させます。

whisper-speech-to-text-download-path

その後minicondaを起動して、環境を切替、パスに移動します。

whisper-speech-to-text-conda-activate

必要なライブラリーをダウンロード

requirements.txtがあるため、次のコマンドで必要なライブラリー 一式をダウンロードできます。

pip install . 

これで終わりです。

起動してみる。

Pythonのコード1行で起動ができます。

python -m speech_to_text

設定

起動が出来たら、speech-to-textの設定は次のようにしました。

whisper-speech-to-text-setting1 whisper-speech-to-text-setting2 whisper-speech-to-text-setting3

検証してみた結果

英語、日本語を試してみました。
精度については、モデルをtniyにして

  • 英語8割
  • 日本語5割

精度

精度は個人の感覚であり、正確な情報ではありません。

large-v3

  • 英語9割
  • 日本語9割

日本語はtinyでは厳しいようです。large-v3がやっぱり凄い。これくらいの精度ならば、実運用しても問題なさそう。

GPU

GPUは1060 6gでlarge-v3モデルをしましたが、リアルタイムでは厳しかったです。
とにかく遅い。また、文字のダブりがあります。 RTX2070であれば、ギリギリストレスなくリアルタイム文字起こしとして使えそうです。

PCの音を文字起こしする。

virtual cableというものを使うとPCの音をマイクデバイスとして扱うことができます。
OBSが有能過ぎて、あまり出番がありませんでしたが、便利なのでインストールしてもいいかもしれません。
仮想デバイスをたくさん入れると、なんで音がでなくなったのかという原因の切り分けが非常に難しくなりますのでご注意ください。
virtual cableからダウンロードできます。

PCの音をマイクとして使う。

virtual cableをインストールしたら、既存のスピーカーと、既存のマイクをVoiceMeeterに設定します。

whisper-speech-to-text-open-sound whisper-speech-to-text-speaker-setting whisper-speech-to-text-mic-setting

聴くに設定

最後にVoiceMeeter Outputの聴くタブで以下の設定をします。
デバイスは既存ではなく、いつも使っているスピーカーに設定します。

whisper-speech-to-text-mic-setting-detail

マイクデバイスを選ぶ

Audio DeviceのところにVoiceMeeter Outputを選べばPCの音を文字起こししてくれます。

whisper-speech-to-text-set-voicemeeter-output

起動ができなかった。

speech-to-textを使おうとしたら、私の環境で起動ができず、次のエラーが発生していた。

PermissionError: [WinError 10013] アクセス許可で禁じられた方法でソケットにアクセスしようとしました。: ('localhost', 8000)

これはファイヤーウォール、ポートが既に使用されている可能性。その他起動する権限がない等の原因があるそうだが。これを解決するために1日かかってしまった。

原因

他のソフトでポートが使用されていた!!
8000ポートreact系でたびたび使っていたので、これだけは違うだろうと思っていたが、間違いだった。最近入れたソフトで8000ポートを使用していたことが分かった。

ポート使用状況の確認

ポートが使用されているかどうかを確認するため、管理者権限でコマンドプロンプトを開きます。

netstat -oab

そしたら、8000ポートを使用しているアプリを発見してしまった。

whisper-speech-to-text-portcheck

このアプリをタスクマネージャーのサービスから停止させて起動したら。すんなりspeech-to-textが起動できました。

まとめ

リアルタイムで文字起こしができるようになりました。精度もかなり良く、srtで字幕ファイル出力もできるようなので、動画編集時にかなり役だちます。
ローカル環境なので重要な会議、機密のものもリアルタイムで文字起こしが出来てしまいます。
あとはPCのスペックを上げないと...

関連記事

コメント

コメントを書く

質問や、間違いがありましたら、お気軽にどうぞ

※お名前とコメントの内容を入力してください。
※全てこのブログ上に公表されます。
※許可なく管理者によって修正・削除する場合がございます。 詳しくはプライバシーポリシーを参照ください