Mac用のオフライン文字起こしアプリ「FFTrans」を作りました。
最近ブログをサボりがちだったのはこれを作っていたせいでした。(小説ばっかり書いてたのもあるけど)
pyannote.audioによる話者分離とmlx-whisperによる高速文字起こしを組み合わせて、SRTファイルを自動生成する流れです。
完全オフラインで動作するので情報漏洩の心配がないのと、サブスクではなく買い切り方式なのが売りでしょうか。
ちなみに最初はApp Store登録を目指していましたが、pyannote.audioがPython限定なこともあり、どうしてもAppleの壁をクリアできないので、自前で配布する形にしました。
PyQtだとGPLになるのでPySideに変更するとか、FFmpegがあるとダメだからAVFoundationで動画や音声を変換、ダウンサンプリングしたり、Apple謹製のはずのmlx whisperがバリバリ内部でFFmpeg読んでる部分を書き換えたりもしたんですけどね。
そのおかげで体験版やライセンス認証も完全オフラインで実装できたので、結果的にはこっちのほうが良かったかも。
Appleの公証でもネットワークの使用をFalseにし、Sandbox動作にしてあるので、その点でもセキュリティは万全を期しています。
どちらもMPSで実行されるので、それなりに高速に文字起こし可能です。
マシンや使用モデルにもよりますが、large-v3モデルでも実時間の3-4倍速で処理可能です。
最近出たlarge-turboだとさらに速くなるのですが、実際の文字起こしされた文章の精度を見るとどうもmedium以下なので採用は見送りました。
ちなみにmediumならメインメモリ8GBでもギリギリ動作しますが、largeだと16GB推奨です。
あとでダウンロード(オンライン)になるのを避けるため、モデルを同梱しているのでアプリのサイズはlargeだと5GB近くになります。
当然、Apple Developerにも登録したので署名やStapleはしてあるのですが、初回起動時はOS側のチェックが走るのでちょっと起動や最初の文字起こしに時間がかかりますね。
2回目以降はもう平気ですけど。
音声ファイルは1分ほどオーバーラップして適宜分割するので、2時間を超えるような長時間の動画や音声ファイルでも安定して文字起こし可能です。
pyannote.audioが30分以上の長時間音声だとメモリを異常に消費したり、話者分離がおかしくなりやすいのに配慮したのもありますが、なにより長時間の文字起こしが事前処理なしでできるのが重要ですからね。
Whisperは予想以上にハルシネーションが多めで、「ご清聴ありがとうございました」とか意味不明な繰り返しが起こるのでそれを除外する処理もかなり力を入れてあります。
単に固定の文字列で除外しても多言語対応では意味がないので、手法としては3種類くらいを使ってあくまでロジックで除外する形にしてあります。
音声を話者分離して文字起こしするのはもちろん、話者特徴量を記憶することで2回目以降は話者認識もして自動で名前も入ります。
話者分離の精度が日本語や音質が悪いケースなどでどうしてもまだ完全ではないですけど、それでも自分やいつものメンツくらいは登録してあるとずいぶん後作業が楽になります。
欠点とすればWhisperの弱点でもあるカスタム辞書でしょうか。
initial_promptはあるので、それで優先単語を指定できるようにはしてありますが、これも良し悪しで上手く指定しないとハルシネーションの原因になってしまうことがあります。
将来的にはmlx whisper自体を改造して擬似的なカスタム辞書を搭載しようと思いますが、そのためにはまず通常バージョンが売れてくれないと…。
あるいはクラウドファンディングで擬似カスタム辞書やノイズ除去、日本語話者分離精度の向上などをやって「FFTrans Pro」を作りたいところです。
オープンソースのライセンスも徹底してチェックしてライセンス一覧を作ってあるので、会社の法務部門のチェックもクリアしやすいはずです。
もちろんGPLライセンスのものは一切使用していません。
なんだかんだ言っても実際に体験してもらうのが一番だと思います。
mediumモデルで1回の文字起こし20分までの体験版を用意していますので、お気軽にお声掛けください。
[ 体験版と製品版の違い ]
・文字起こしモデル:medium-v3(製品版はlarge-v3搭載)
・オフライン英語翻訳:体験版では利用不可(製品版は利用可)
・最大文字起こし時間:1回あたり20分まで(製品版は分割利用で実質無制限)
・コピーライト表示:生成した字幕の最後に3秒ほどコピーライト表示が挿入されます
・有効期限:2025年12月31日まで
また、レビューしてくださる方には有効期限だけ制限した製品版そのものもご用意できます。
なお、現在のBasicなFFTransはlargeモデル使用で、1マシンライセンスで10,000円(税込)です。
月々の料金などは一切不要なので、サブスク系のものよりは割安感があるはずです。
そもそも現状だと話者分離まで可能なオフラインのアプリはMacにはほぼないですし。
また、体験版をご利用いただいた方には20%ディスカウントクーポンもご提供しますので、ぜひこの機会に。
体験版のリンクも貼りたいところですが、mediumモデルの体験版でも圧縮して2GB、展開すると3GB超なので、ご連絡いただいた方にお知らせする形で申し訳ありません。