世界を動かす技術を、日本語で。

Transcribe.cppの転写

概要

transcribe.cppは、ggmlベースの高速・高精度な音声認識ライブラリ。 16ファミリー60種以上の最新ASRモデルに対応し、Vulkan/Metal/CUDA等によるGPUアクセラレーションを実現。 各モデルは数値検証・WERテスト済みで信頼性が高い。 Python・JavaScript・Rust・ObjC/Swift向け公式バインディングを用意。 ローカル音声認識の普及と開発者体験の向上を目指すプロジェクト。

transcribe.cppの紹介

  • transcribe.cppggml ベースの最新音声認識(ASR)ライブラリ
  • Handy アプリの開発・配布経験から生まれたクロスプラットフォーム対応
  • v0.1.0 リリース段階のため、バグ報告・改善要望歓迎
  • Handy-computer HF orgで公開されたすべてのモデルを数値検証・WERテスト済み
  • GPUアクセラレーション (Vulkan/Metal/CUDA/TinyBLAS)対応
  • Mac/Windows/Linuxで動作
  • Python/JavaScript/TypeScript/Rust/ObjC/Swift 向け公式バインディング提供
  • whisper.cpp のバイナリ互換性を維持し、置き換え可能

開発の動機

  • 現行ASR推論スタック(whisper.cpp/ONNX)のクロスプラットフォーム配布の難しさ
    • Apple向けにはMLXもあるが、複数エンジン・モデル変換が必要
    • ONNXはCPUのみでパフォーマンス不足
    • 他のライブラリは信頼性や将来性が不明
  • 信頼できる推論エンジン簡単な組み込み を重視
  • ggml は活発なコミュニティと優れた配布ストーリーを持つため採用

特徴とサポート範囲

  • 16ファミリー・60以上のASRモデル 対応、今後も追加予定
  • Vulkan/Metal/CUDA/TinyBLAS による高速化
  • ストリーミング・バッチ推論 両対応
  • whisper.cpp 互換性を維持しつつ、同等のパフォーマンス
  • 数値検証WERテスト による信頼性確保
  • バインディング はRustを含む4言語で公式サポート
  • Handy の人気・ニーズを背景に今後もメンテナンス継続予定

モデル検証とベンチマーク

  • すべてのモデルを リファレンス実装 と比較し 数値検証
  • WERスイープ で出力の正確性を確認
  • ベンチマーク結果は transcribe.cppリポジトリHugging Face に公開
  • Ryzen 4750U(CPU+Vulkan)やMac M4 Maxで実測

ローカル音声認識の普及

  • ローカル推論 で高精度な音声認識を実現
  • クラウド送信不要、低スペックCPUでもリアルタイム以上の速度
  • 消費電力も少なく、将来的なローカル推論普及を見据えた設計
  • 配布の容易さ組み込みやすさ を重視

感謝と支援

  • Mozilla AI (BiRプログラム、Davide氏)による支援
  • ggml コミュニティと貢献者への感謝
  • Modal からのWERテスト・CUDA検証用クレジット提供
  • Blacksmith によるCI/CD支援
  • Hugging Face のストレージ・コミュニティ支援

AIの活用

  • ggmlベースの大規模エンジン開発に AI支援 を活用
  • 本記事の執筆は AI未使用、すべて自身の言葉で記述

今後の展望とコントリビューション呼びかけ

  • ローカルASRのさらなる普及・発展
  • 未対応ケースや要望については コントリビューション歓迎
  • オープンソースの維持・エコシステム貢献への継続的な意欲

Hackerたちの意見

その通りだね。 > 「未来を見据えると、何らかの理由でローカルでの推論がもっと行われるようになると思う。これによって、配信の話が中心に来る。ローカルで推論を実行するアプリケーションを増やすためには、推論を実行するのをもっと簡単にしなきゃね。これによって、これらのプロジェクトがもっと信頼できて、取り組みやすくなるんだ。」 > 「ここにある言葉はAIで書かれたものなの?」 いや、違うよ。俺の口や指から出た言葉だよ。

「これによって、これらのプロジェクトがもっと信頼できて、取り組みやすくなるんだ。」 >> 「ここにある言葉はAIで書かれたものなの?」 いや、違うよ。俺の口や指から出た言葉だよ。これにはちょっと反論したいな。俺は(かなり強く)思うんだけど、俺たちは使う道具によって形作られているんだ。テキスト読み上げのLLMはLLMだし、一般的に彼らのミスはトレーニングに内在する期待によって形作られる。これが、画面に表示される言葉を形作るんだ。定期的に使っている人は、どの単語の組み合わせが正確に転写される可能性が高いかを学ぶし、これが思考プロセスの一部になる。時間が経つにつれて、LLMが思考に絡みついてくる。AIを使うことで、たとえこのようにでも、結果として出てくる言葉が形作られることは十分にあるし、実際にそうなることが多いよ。

メタルがバルカンよりもほぼ10倍速いって見たけど、なんでそんなに差があるの?

ハードウェアによるね!M4 MaxがRyzen 4750Uの統合GPUと比較されてる!M4 Maxは多分計算能力とメモリ帯域幅が10倍くらいあるよ、ハハハ。

これを出荷したことにおめでとう!MacやスマホでSTTを使うのが好きなんだけど、ネイティブモデルのパフォーマンスが悪い時(例えば、Appleのやつはドメインに対応した言葉を誤訳することが多い)に便利だよ。初心者の質問だけど、財団からの資金についてどう考えてる?(必要かどうかは全然わからないけど、手段があるといいなと思ってる。だってハンディは素晴らしいから。)もしこのプロジェクトの維持のためにお金をもらうことを考えているなら、どんな組織に支援を求めるつもり?どうやってやるつもり?

ありがとう!素晴らしい質問だね、いい答えがあるか分からないけど。Handyが人気になったことで、偶然オープンソースのメンテナーになった感じだよ。多くの人がHandyに寄付してくれて、本当にラッキーだと思ってるし、私がやってる仕事を支援してくれる人や団体もいるからね。正直、オープンソースに貢献するのが大好きで、これからも続けていきたいんだ。だから、これをサポートしてくれる人はみんな大歓迎だよ。OSSを信じて推進してくれる団体とは特に気が合うかな。もちろん、いつでもメール(contact@handy.computer)してくれれば、もっと詳しく話せるよ。

これはコミュニティへの素晴らしい貢献だね、たった一人の人がやったの?下の方でシリーズAの資金調達の発表を期待しながら読んでたよ。いいリマインダーだね:AIを使って最大速度でスロップキャノンを撃つこともできるし、野心を拡大して、これまで以上に厳密で持続可能なものを作ることもできる。Transcribe.cppを自分が維持しているアプリに組み込みたいけど、この機能は一般的にOSに統合されるべきだし、「どこでも」ハンディみたいなアプリを通じて使えるようにすべきだと思う。

こんにちは!作者でありメンテナーです!スポンサーの支援や、Handyに寄付してくれる素晴らしいコミュニティのおかげで、なんとかここまで来ました。Mozilla AIがこのプロジェクトを始めるのにとても助けてくれました。Handyのために何かを作るのは夢みたいなもので、彼らがスポンサーになってくれたおかげで、ちゃんとこのプロジェクトに時間をかけてv0.1.0をリリースできました。これがどこにでも広がるべきだと思いますし、いつかlibtranscribeをちゃんとしたシステムライブラリとして配布できることを願っています!安定させるには時間がかかると思いますが、きっとできると思います。

これを見つけるタイミングが最高だね。最近、TTSをプロンプトツールキットに取り入れようとしている人が増えてきて、試してみたかったんだ。だらだらと頭の中の考えをドキュメントに書き出して、編集して、ロボットに送るループのアイデアが魅力的だよ。

これにスピーカーの分離を追加する最も簡単な方法は何?

やあ!実は今進行中だよ、たぶん今週中に来ると思う :)

メンテナーが4つの言語でサポートしているバインディング、いいね。Pythonのやつはこちらだよ:https://github.com/handy-computer/transcribe.cpp/tree/main/b... - 現在、依存関係が含まれたバイナリホイールとしてはPyPIでまだ利用できないみたい(今のところPyPIのライブラリはctypesを使って別にインストールしたライブラリを呼び出してる)けど、将来のリリースで計画されているよ。

Hacker Newsで議論の続きを見る