fast-whisperで手軽に文字起こしできるCLIツールを作った
手軽な文字起こしツール
欲しかったので作ってみました。fast-whisperを使用するので、API登録やGPU不要で、一般的なパソコンで動きます。ただ文字起こしにはある程度時間がかかります。
uvを使う想定です。uvに関してはこちらの記事を参照ください。
勢い余ってPyPIにも登録したので、uvがインストールされていれば以下コマンドで文字起こしできます。
$ uvx transcriber_tool transcribe <filename>
テスト用のファイルもリポジトリにアップしているので、以下コマンドを実行すれば一瞬で文字起こしできると思います。
$ curl -o test_audio.mp3 https://raw.githubusercontent.com/karaage0703/transcriber-tool/main/test_audio.mp3
$ uvx transcriber_tool transcribe test_audio.mp3
文字起こし結果はデフォルトだとoutput
フォルダにテキストで格納されます(書き出すファイルを指定もできます)。以下書き起こしの結果です。
これはテスト用の音声ファイルです。 文字を越しが正しく機能するかを確認します。
誤字が気になる場合は、largeモデルを選択します。
$ uvx transcriber_tool transcribe -m large test_audio.mp3
書き起こし結果。ばっちりですね。
これはテスト用の音声ファイルです。文字起こしが正しく機能するかを確認します。
他の使い方はリポジトリのREADME参照ください。
文字起こしのMCPサーバ
実は、話題のMCPサーバも作ってみました。
これは便利に違いない!と思って作ってみたのですが、使ってみたら長い音声ファイルを文字起こしすると、そこでスタックしてしまい、タイムアウトになってしまうのであんまり実用的でないなと感じました。
タイムアウト自体は、タイムアウト設定を変えたり、MCPサーバがとりあえずレスポンス返してバックグラウンドで文字起こしするとか、対策のしようはあるのですが、そもそも時間がかかることが多い処理をMCPサーバで実施するのは、あんまり筋がよくないなと感じました。もしLLMと組み合わせて使うなら、普通にtranscriber-toolの使い方を教えて処理してもらうのが効率良いのかなと思いました。
まとめ
文字起こしのCLIツールを作ってみました。以前、DockerでWhisperを使って文字起こしする環境は作ったことあったのですが、結局面倒くさくて使わなくなってしまいました。こちらなら、わりと使い勝手よいのではないかなと思います。
といいつつ、NotebookLMの方が手軽だし、速かったりするんですけどね。
とはいえ、大量のファイルを扱いたいときや動画の音声を文字起こししたいとき、NotebookLMがサービス終了したときなど使い道はあるのじゃないかなと思います。
関連記事
Discussion