HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

Transcribe.cpp

Transcribe.cpp (workshop.cjpais.com)

696 pointsby sebjones144 コメント

要約

Transcribe.cppは、最新の音声認識モデルをサポートするggmlベースの音声文字起こしライブラリです。GPUアクセラレーションに対応し、多数のモデルで数値検証とWERテスト済みです。クロスプラットフォームな音声認識アプリケーションの配布における課題を解決するために開発され、Python、JavaScript、Rust、Objective-C/Swiftなどの言語バインディングも提供します。

全文翻訳

transcribe.cpp 2026年4月 - 現在 本日、transcribe.cppを公開できることを大変嬉しく思います。transcribe.cppは、最新の音声文字起こしモデルをすべてサポートするggmlベースの音声文字起こしライブラリです。handy-computer HF組織の下で公開されているすべてのモデルは、数値的に検証され、WERテストを受けており、参照実装と一致しています。あらゆる場所で高速化されています。私はHandyの作者でありメンテナーです。このライブラリは、クロスプラットフォームの音声認識アプリケーションを多くの人々に配布する際の苦労から生まれました。これはv0.1.0のライブラリであり、私一人では発見できないいくつかの未熟な点があることを意味します!それらを報告していただければ、一緒に修正していきましょう! 動機 こう言わせてください。現在のASR推論スタックでクロスプラットフォームアプリケーションを配布するのはひどいと思います。基本的にwhisper.cppとONNXしかありません。Appleデバイス向けにMLXを導入することもできますが、そうすると2つの異なるエンジンをサポートし、モデルをそれぞれにポートする必要があります。Handyに迅速にモデルサポートを組み込むためにONNXを支持してきましたが、CPUのみでは多くのパフォーマンスが失われています。多くのモデルをサポートすると主張するライブラリがいくつかありますが、私の知る限り、それらは作者不明で、テストも不明です。それらは私に多くの疑問を残します。このライブラリのメンテナンスはいつ止まるのでしょうか?作成者は、実際のデスクトップまたはモバイルアプリで使用できるバインディングを考えたのでしょうか?これは実質的にデモコードなのでしょうか?ベンチマークは取られているのでしょうか?ONNXよりも速いのでしょうか?そして、これがtranscribe.cppにつながった理由です。Handyのメンテナーとして、私は信頼できるライブラリが必要でした。ファイルをダウンロードして推論を実行できる場所。エンジン内のモデルからの推論が、参照実装と同等に良いものであることを知ることができる場所。最高のパフォーマンスを得るためには、推論はGPUで実行されるべきです。それはHandyに簡単に組み込めるものでなければならず、巨大なPyTorchライブラリであってはなりません。Mac、Windows、Linuxで動作するものでなければなりません。そしてggmlは、これまでのところ最良の方法であるように思えました。強力なコミュニティと優れた配布ストーリーを持っています。 では、何が得られるのでしょうか? 幅広いモデルサポートを備えた、高速で正確な推論エンジン。16のASRファミリー(60以上のモデル)をサポートし、さらに追加予定。Vulkan、Metal、CUDA、TinyBLASによるアクセラレーション。すべてのモデルは数値検証およびWERテスト済み。ストリーミング文字起こしをサポート。バッチ文字起こしをサポート。ほぼwhisper.cppのドロップイン代替。4言語でのメンテナーサポートバインディング:Python、JavaScript/TypeScript、Rust、ObjC/Swift。 幅広いモデルサポート 可能な限り多くの最先端の文字起こしモデルをサポートする予定です。本日現在、公開されている最新の文字起こしモデルのほとんどをサポートしています。まだいくつか欠けていますが、すぐに追加される予定です。 アクセラレーションサポート 私のトップ目標の1つは、Vulkanで任意のASRモデルを実行できるようにすることでした。私の意見では、これはローカル推論を出荷するあらゆるアプリケーションの最低限の要件です。サポートするすべてのモデルについて、Fedora上のRyzen 4750U(CPU + Vulkan)とM4 Maxでのベンチマーク実行に対応するものがあります。 数値検証済み また、transcribe.cppでの推論が正確で、参照実装に可能な限り近いことを確認したかったのです。これは主に、Hugging Faceで見つけた.onnxモデルを使用する際の推論精度の大きな不確実性から生じました。実行する推論が正しいことを保証するために、参照と比較してすべてのモデルを数値的に検証します。数値検証に加えて、参照が出力するものをすべて出力するように、完全なWERスイープを実行します。これは、すべてのモデルが数千の音声断片を通過し、参照と非常に近いか同じであることを意味します。そして、このデータの結果は、transcribe.cppリポジトリおよびHugging Faceの各モデルで公開されています。 ドロップインwhisper.cpp代替 transcribe.cppは、ほぼwhisper.cppのドロップインサポートです。主な理由は次のとおりです。Handyはwhisper.cppを使用していましたが、transcribe.cppに置き換えるアップデートをリリースする必要がありました。Handyで出荷された、非常に人気のある.binファイルとの互換性を維持する必要がありました。transcribe.cppはそれらを実行できます。まだサポートしていないフラグや機能がwhisper.cppにはいくつかあります。しかし、ほとんどのユースケースでは、私たちのwhisper実装は堅牢であり、同等のパフォーマンスでwhisper.cppを置き換えることができると考えています。 実際の配布 当初から言語バインディングを念頭に置いていました。このライブラリはC/C++で書かれていますが、Rustでバインディングが必要でした。また、ローカル文字起こしを可能な限り広く配布するためには、少なくともまともな一次サポートのバインディングが必要であることも知っていました。人々がライブラリを使用する場所をかなり代表していると思われる4つの言語を選択しました。貢献者には、プロジェクトに直接バインディングを貢献していただくことも歓迎します。ただし、それらのメンテナンスの負担を引き受ける意思があることを前提とします。そしてもちろん、最終的には、多くの決定はHandyによって推進されました。Handyが人気がある結果として、私はHandyを維持してきたのと同じように、このライブラリを維持するつもりです。私はオープンソースプロジェクトを維持し続け、可能な限りエコシステムに貢献する人物でありたいと思っています。Handyがなければこのライブラリは存在しなかったでしょう。なぜなら、さまざまなASRモデルをサポートしようとする問題がなかったからです。ASRの人々のユースケースをすべて学ぶことはなかったでしょう。最もよく耳にするユースケースをカバーするように最善を尽くしました。確かに、ライブラリには現在処理されていないケースがあります。もし私が何か見落としたことがあれば、自由にライブラリに貢献してください! ローカル音声認識をよりアクセスしやすくする transcribe.cppは、ローカルで実行されるASRをより簡単にすることに焦点を当てています。ほとんどのデバイスで文字起こしが非常に正確に実行できることはわかっており、音声をクラウドサービスに送信する必要はありません。RK3566は、その貧弱なCPUでリアルタイムよりも速くtranscribe.cpp経由でモデルを実行できます。SOTAモデルを使用したリアルタイムよりも速い文字起こしは、わずか数ワットで実行されます。それは希望や夢ではなく、事実です。将来を見据えると、何らかの理由でローカルでの推論が増えると思います。これにより、配布ストーリーが前面に出てきます。ローカルで推論を実行するアプリケーションを増やすためには、推論の実行を容易にする必要があります。確かにtranscribe.cppは全体としてこれを解決するわけではなく、まだ長い道のりがありますが、小さな一歩前進となることを願っています。確かに多くのことを学びました。 感謝 このプロジェクトをサポートしてくれたすべての人々に心から感謝しています。まず第一に、Mozilla AI、そのBiRプログラム、そしてMozilla AIのDavide氏です。このプロジェクトは、私の頭の中の大きな問題であり、彼らに持ち込んだところ、彼らは私をサポートして解決してくれることにしました。当時、transcribe.cppはまだ具体的なアイデアすらなく、Handyでのアクセラレーション配布をどのように解決するかを模索していただけでした。そのため、彼ら、彼らのサポート、そしてこのプロジェクトの誕生に貢献してくれたことに多大な感謝を捧げます。 ggml。このプロジェクトはggmlとそれに貢献したすべての人々なしには不可能でした。皆さんの仕事に心から感謝します。ggmlは、ローカル推論アプリケーションの配布を容易にし、可能にする上で驚くべき仕事をしていると思います。Modalも私にとって非常に重要な助けとなりました。彼らに連絡したところ、クレジットを提供してくれました。これらのクレジットは、WERテストの実施と、ライブラリがCUDAでうまく機能することを確認するために使用されます。作業の正確性を検証できることは、計り知れない助けとなります。Blacksmithは、transcribe.cppの一部のCI/CDを支えています。再び彼らに連絡したところ、すぐにクレジットを提供してくれました。もちろん、CI/CDは、提供されるすべてがある程度テストされていることを確認するために不可欠です。Hugging Faceは、ローカルAIコミュニティの柱であるだけでなく、handy-computer組織のプライベート