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

Show HN: OWhisper – リアルタイム音声認識のためのOllama

概要

OWhisper は、 OllamaのSTT版 として設計された音声認識ツール。 ローカル試作大規模モデルの独自運用 の両方に対応。 Hyprnote 開発経験から生まれたニーズ対応。 カスタムSTTエンドポイント の接続も目指す。 GPLv3ライセンス 下で公開、将来的にMIT化も検討。

OWhisperとは何か

  • OWhisper は、 Ollama のような使い勝手で Speech-to-Text(STT) を実現するツール
  • リアルタイムバッチ処理 両対応の音声認識モデル運用基盤
  • Hyprnote 開発時、ユーザーから カスタムSTTエンドポイント 接続要望が多発
  • OpenAI互換LLMエンドポイント のように、 独自STTエンドポイント をHyprnoteに接続可能にする構想
  • 2つの主要用途
    • 軽量モデルをローカルで簡単に試作・個人利用
    • 大規模モデルやクラウドホストモデルを 自前インフラ で運用

OWhisperの特徴と使い方

  • ローカルでの手軽なモデル実行 に特化

  • CLI(コマンドラインインターフェース) による直感的な操作性

  • brew コマンドでのインストールサポート

  • WhisperMoonshine など、複数STTモデルの切り替え対応

  • カスタムSTTエンドポイント接続機能 は開発中(WIP)

  • ドキュメント 充実、導入イメージが把握しやすい設計

    • インストール例
      • brew tap fastrepl/hyprnote && brew install owhisper
      • owhisper pull whisper-cpp-base-q8-en
      • owhisper run whisper-cpp-base-q8-en
    • Moonshine モデルの利用例
      • owhisper pull moonshine-onnx-base-q8

ライセンスとソースコード

  • OWhisperのソースコードGitHub で公開
  • 現時点ではGPLv3ライセンス を採用
  • 将来的にMITライセンス への変更を検討中
    • Hyprnote由来のGPLコード 依存があるため、現状はGPLv3
  • 最新情報やソースコード公式リポジトリ 参照

よくある質問(FAQ)

  • ソースコード入手先
    • GitHubリポジトリ で公開
  • ライセンスの種類
    • 現在はGPLv3、将来的には MIT も視野
  • 導入方法や詳細ドキュメント
    • https://docs.hyprnote.com/owhisper/cli/get-started 参照
  • モデルの追加・切り替え
    • WhisperMoonshine など複数モデル対応

Hyprnoteチームからのメッセージ

  • Hyprnoteチーム (Yujongより)の公式コメント
  • OWhisper開発理由
    • オンデバイスリアルタイムSTT 運用に適したツールが存在しなかった課題
    • カスタムSTTエンドポイント をHyprnoteで利用したいという要望対応
  • カスタムSTTエンドポイント機能 は開発中
  • 今すぐローカルSTT体験可能 (Whisper・Moonshine両対応)
  • フィードバック歓迎、ユーザー参加型開発推進

Hackerたちの意見

これを使って、複数人の会議の議事録を作成したいんだけど、どうやってこのプログラムを使えばいいかな?

会議用なら、https://github.com/fastrepl/hyprnote がオススメだよ。OWhisperはそれのヘッドレス版みたいな感じ。

会議のメモを文字起こししたいなら、whisperはあんまり向いてないよ。スピーカーごとに分けてくれないからね。他にもそういうツールはあるけど、どれが一番いいローカルオプションかは分からないな。GoogleのクラウドSTTを使って、ダイアリゼーションオプションで「スピーカーN」を後から手動で名前変更したことがあるよ。

ちょっと待って、これすごいね。先週、選択肢を調べてたところで(特にM1用に!)、OLlamaがLLMのために提供しているような、標準的でフルサービスの(ライブ)文字起こしサーバーが欲しいなって思ってたんだ。これを試してみるのが楽しみだし、APIも見てみたいな(openaiがリアルタイムの文字起こしサービスを持ってないから、ここに隙間があるみたいで、ちょっと残念だよね)。編集:どうやらDeepgram APIをエミュレートしてるみたいだね(https://developers.deepgram.com/reference/speech-to-text-api...)、これはいい選択肢だと思う。ここで標準が出てくるのを見てみたいな。

その通り。Deepgram互換については、https://docs.hyprnote.com/owhisper/deepgram-compatibility だよ。どうなったか教えてね!

スピーカーダイアリゼーションを追加する方法を見つけて、スピーカーを記憶できるようにしてほしいな。pyannoteを使えばできるし、各スピーカーのベクトル埋め込みを取得して音声サンプル間で比較できるんだけど、もう1年前のことだから、今はもっといい選択肢があるはず!

うん、それはロードマップに入ってるよ!

いいね!実は、hyprnoteのHNスレッドでヘッドレスモードを求めてた一人なんだ!昨日、いくつかのwhisperツールを統合してたところで、ストリーミングレスポンスを取得する方法があるか気になってたんだ。できるなら嬉しいな。今はLinuxを使ってるから、oWhisperを試すことはできないと思うけど、そういうことは可能なの?それと、owhisper runコマンドは出力をTUIとして表示するみたいだけど、他のプログラムにパイプできるようにプレーンテキストのレスポンスオプションはあるのかな?(録音を止めて言葉を確定させるために、killCTRL+Cでできればいいな)。ストリーミングについても同じ質問なんだけど、oWhisperからストリーミングテキスト出力を取得する方法はある?(Deepgram互換のAPIを作ってるって言ってたけど、APIドキュメントをざっと見た感じ、簡単に接続して話しながらいいストリーミングテキストを取得できるかは分からないな)。あ、ダイアリゼーション(フラグで利用可能?)があれば最高なんだけど、今見つけられる一番簡単に実行できるものにはそれが欠けてるんだよね。

あ、待って、もしかしてowhisperのLinuxサポートしてるのかな? https://github.com/fastrepl/homebrew-hyprnote/blob/main/Form... どこに作ったコードがあるか教えてくれない?GitHubではフォルダは見えるんだけど、CLIのコードが見当たらないんだよね。目が悪いのかな? [0] https://github.com/fastrepl/hyprnote/tree/main/owhisper

「Linux使ってるけど、まだテストしてないよ。でもLinuxビルドはあるよ。」 http://owhisper.hyprnote.com/download/latest/linux-x86_64 > 「それに、owhisper runコマンドはTUIとして出力するみたい。プレーンテキストのオプションはあるのかな?owhisper runは試すにはいい方法だけど、パイプ処理は絶対にうまくいくはず。」 > 「ストリーミングについても同じ質問だけど、owhisperからストリーミングテキスト出力を得る方法はある?Deepgramクライアントを使ってowhisper serveに話しかけることができるよ。」 (https://docs.hyprnote.com/owhisper/deepgram-compatibility) 「だから、最適なリソースはDeepgramクライアントSDKのドキュメントかも。」 > 「ダイアリゼーションは、ロードマップに入ってるよ。」

何かを作って共有してくれてありがとう。でも、これを使う利点は、リアルタイム変換もできるwhisper.cppストリームと比べて何なの? https://github.com/ggml-org/whisper.cpp/tree/master/examples...

それだけじゃないよ。 - 他のモデル、例えばmoonshineもサポートしてる。 - クラウドモデルプロバイダーのプロキシとしても機能する。 - ローカルモデルをDeepgram互換のAPIサーバーとして公開できる。

すごくクールだね。いろんなスレッドを読んでたよ。AIダンジョンマスターにSTTとTTSを追加するプロジェクトに取り組んでるんだ。個人的な楽しみのためのプロジェクトで、今は冒険部分を作ってるところ。これが役立ちそう。コマンドでダンジョンナビゲーションは動いてたけど、やり直して、スリムなバージョンで1つのファイルにまとめる準備ができたところ。DMと話して、声やアクションで返事してくれるのは楽しそうだね。みんなが同時に会話してるのを聞き取れるストリームを作れたら、ダイアリゼーションがすごく役立つと思う。でも、まずは一歩ずつ。キャラクターを作ってパーティーに入れたら、全体のキャンペーンを動かすのに取り組むつもりだよ :)

同じようなことを考えて、ローカルLLMとWhisperを組み合わせたら、テーブルトークRPGをグループでプレイする時に音楽を流しながら聞き取るのがすごくうまくいったよ。興味があったら見てみてね: https://github.com/sean-public/conductor

リアルタイムで話してる内容を把握できるものを探してるんだけど、数分間ぼーっとしてたら、何を見逃したかとか、何かを明確にしてもらえることってできる?これでできるかな?できないなら、何か知ってる人いる?

音声からテキストへの出力ができるLLMを使ったらどう?

なんでOpenAIのAPIエンドポイントを自由に使えないの?

どういう意味?この使い方はLLMじゃなくて、リアルタイムのSTTだよ。それに、参考までに - https://docs.hyprnote.com/owhisper/configuration/providers/o...

https://api.deepgram.com(他のウェブエンドポイントも)を使ってるみたいで、APIキーが必要らしいから、実際にはローカルじゃないよね。なんで完全にローカルで動くollamaと比べられてるの?

WhisperとMoonshineのモデルはローカルで動かせるし、他のAPIプロバイダーも使えるよ。ドキュメント読んでみて、もしくはこの投稿だけでも。

ollamaに対する評価がこんな感じになってるから、これが賢いマーケティング戦略かは疑問だな :D

これについては聞いたことないな。もう少し詳しく教えてくれる?