AI・機械学習
Show HN: Qwen Scribe – Apple Silicon向けのローカル文字起こしと音声入力
Show HN: Qwen Scribe – local transcription and dictation for Apple Silicon (github.com)
要約
Qwen Scribeは、Apple Silicon Mac上で動作するプライベートでローカルな音声・動画文字起こしおよびシステム全体の音声入力ツールです。Qwen3-ASRモデルをMacのMetal GPUで実行し、アカウントやクラウドサービスは不要で、データはローカルに保存されます。ドラッグ&ドロップでの文字起こし、ローカルでの履歴管理、右Commandキーを使った音声入力機能などを備えています。
全文翻訳
Qwen Scribe プライベート、ローカルな文字起こしとシステム全体の音声入力(Apple Silicon向け)。Qwen Scribeは、MacのMetal GPU上でmlx-qwen3-asrを介して実行されるQwen3-ASRを使用して、音声と動画を文字起こしします。アカウント、APIキー、Qwen Scribeクラウドサービスはありません。音声と文字起こしのテキストはMac上に留まります。
プロジェクトステータス: v0.1.0-beta.1。コアとなる文字起こし、履歴、音声入力機能は動作します。リリースは現時点ではソースコードのみです。アプリビルドはまだDeveloper IDで署名されておらず、公証も受けていないため、make appでローカルにビルドする必要があります。署名および公証済みのバイナリはv0.2で計画されています。詳細はROADMAP.mdを参照してください。フィードバックと慎重なテストを歓迎します。上記のインターフェースはデモ用の合成テキストを使用しており、プライベートな録音や文字起こしは表示されていません。
ハイライト
集中型のローカルWebインターフェースでの音声・動画のドラッグ&ドロップ文字起こし
高精度なQwen3-ASR 1.7Bまたは高速な0.6Bモデル
自動言語検出、オプションの強制言語設定、語彙ヒント、単語タイムスタンプ、SRTエクスポート
再オープン、個別の削除、すべて削除が可能な自動ローカル文字起こし履歴
任意のテキストフィールドで右Commandキーを押したまま話し、離すとローカルで文字起こししてカーソル位置に貼り付け
リスニング、文字起こし、成功、失敗の状態を示す、フォーカスを奪わないHUD
ホストとブラウザオリジンチェック付きのローカルホスト専用API
要件
Apple Silicon Mac
現在のMLXリリースで必要とされるmacOS 14以降
requirements-lock.txtでピン留めされたNumPyで必要とされるネイティブPython 3.12以降
WAV以外のオーディオおよびビデオ用のffmpeg: brew install ffmpeg
ソースからアプリをビルドするためのApple Command Line Tools: xcode-select --install
1.7Bモデルは約3.4 GBのユニファイドメモリを必要とし、0.6Bモデルは約1.2 GBを必要とします。これに通常のアプリケーションオーバーヘッドが加わります。モデルの重みはこのリポジトリには含まれていません。
Macアプリのビルドと実行
ダウンロードまたはクローンしたソースディレクトリから:
make app
open "dist/Qwen Scribe.app"
生成されたアプリは、Python依存関係とモデルの重みを除いて自己完結型です。これらは初回使用時にインストールまたはダウンロードされます。ビルド後、両方のアプリをdist/から/Applicationsに移動できます。
Qwen Scribe.appはサーバーとデスクトップ音声入力ヘルパーを起動します。Stop Qwen Scribe.appはQwen Scribeによって開始されたプロセスのみを停止します。
ローカルでビルドされたアプリはアドホック署名されています。Gatekeeperがダウンロードされたビルドをブロックする場合、右クリックして「一度開く」を選択してください。安定した公開バイナリはApple Developer IDで署名され、公証されるべきです。詳細はROADMAP.mdを参照してください。
サーバーログは~/Library/Logs/QwenScribe.logに書き込まれます。
ターミナル代替
./run.sh
その後、http://127.0.0.1:8990 を開きます。
最初の文字起こしで選択したモデルが一度ダウンロードされます。依存関係と重みがキャッシュされると、後続の使用はオフラインで機能します。
デスクトップ音声入力の権限
デスクトップ音声入力はMacアプリと共に開始されます。初回起動時に、System Settings → Privacy & Security でQwen Scribeに以下の権限を付与してください:
Microphone — 右Commandキーが押されている間、録音します
Input Monitoring — 他のアプリがアクティブな間に修飾キーを検出します
Accessibility — フォーカスされたフィールドに完了したテキストを貼り付けます
Input Monitoring または Accessibility を変更した後は、Qwen Scribeを停止して再起動してください。
これらのオプションの権限が付与されていない場合でも、ファイル文字起こしは利用可能です。
ヘルパーは修飾キーの変更イベントを監視し、右Commandキーのみに反応します。ペーストボードをメモリにスナップショットし、文字起こしを貼り付け、変更されていない場合は前のペーストボードを復元します。Accessibilityへのアクセスがない場合、テキストを挿入することは全くできないため、文字起こしをクリップボードに残し、成功を主張する代わりに失敗を報告します。完全なデータと権限の動作については、PRIVACY.mdを参照してください。
ローカルファイルと削除
データ
デフォルトの場所
保存された文字起こし: ~/Library/Application Support/Qwen Scribe/transcripts
プライベートランタイム: ~/Library/Application Support/Qwen Scribe/runtime
診断ログ: ~/Library/Logs/QwenScribe.log
ダウンロードされたモデル: ~/.cache/huggingface/hub
保存された文字起こしは、読み取り可能で暗号化されていないJSONです。削除するには、履歴コントロールを使用して1つまたはすべてを削除してください。通常のファイルシステムでの削除は安全な消去ではなく、ローカルバックアップにはコピーが保持される可能性があります。
環境変数
これらはserver.pyによって読み取られるため、./run.shおよびMacアプリが起動するサーバーに適用されます:
Variable Default Purpose
QWEN_SCRIBE_DATA_DIR ~/Library/Application Support/Qwen Scribe 文字起こし履歴が保存される場所
QWEN_SCRIBE_MODEL_DIR ./models ローカルで量子化されたモデルが検索される場所
QWEN_SCRIBE_PORT 8990 ローカルサーバーのポート
QWEN_SCRIBE_PORTは、./run.shでサーバーを自分で起動した場合にのみ適用されます。Macアプリとデスクトップ音声入力ヘルパーは両方とも127.0.0.1:8990に直接アドレス指定するため、音声入力は別のポートのサーバーを見つけることができません。
開発
make setup # .venvを作成し、レビュー済みの依存関係ロックをインストールします
make test # モデルの重みなしで軽量なAPI/履歴テストを実行します
make check # テスト、ソースコンパイル、公開の衛生状態を確認します
make app # dist/にアドホック署名されたアプリバンドルをビルドします
make package # dist/にベータリリースzipを作成します
make app は native/DictationHelper.m を arm64 バンドル実行可能ファイルとしてコンパイルし、サーバーランチャーと追跡ソースを署名済みリソースとして埋め込み、プロパティリストを検証し、署名し、結果を検証します。プライバシーに関わるレコーダーをバンドル実行可能ファイルとして保持することで、macOSにAccessibility、Input Monitoring、Microphoneアクセス用の安定したアプリIDを提供します。リリースビルドにはCODESIGN_IDENTITYをDeveloper ID IDに設定してください。公証は意図的に別のリリースオーナーのステップです。
オプションの8ビット変換
ソースベースの使用の場合、ローカルの8ビット変換によりデコードレイテンシを削減できます:
source .venv/bin/activate
python quantize_8bit.py
python compare_models.py path/to/representative-recording.m4a
これにより、Gitで意図的に無視されるマルチギガバイトのmodels/ディレクトリが作成されます。量子化モデルに依存する前に、代表的な録音のファイル名と数値を検証してください。
アーキテクチャ
ブラウザUI ──localhost──> FastAPI ジョブキュー ──> MLX / Qwen3-ASR
│ └──> ローカルJSON文字起こし履歴
右Command ──> ネイティブmacOSヘルパー ──> 一時WAV ──> 同じジョブキュー
フォーカスされたアプリ <── リストアされたクリップボード + Command-V <── 文字起こし
APIはメモリ競合を避けるためにGPUジョブをシリアライズします。メディアはランダムな一時ファイル名の下にステージングされ、処理が完了すると削除されます。
貢献とセキュリティ
変更を提案する前にCONTRIBUTING.mdをお読みください。脆弱性は、公開された問題ではなく、SECURITY.mdに従って報告してください。計画されているリリースシーケンスはROADMAP.mdに文書化されています。プロジェクトソースと課題追跡はVladUZH/qwen-scribeにあります。
ライセンスとプロジェクトアイデンティティ
Qwen ScribeはApache-2.0ライセンスの下でライセンスされています。サードパーティのライセンスと帰属表示はTHIRD_PARTY_NOTICES.mdに記載されています。Qwen Scribeは独立したコミュニティプロジェクトです。Alibaba Cloud、Qwenチーム、またはApple Inc.とは提携、承認、またはスポンサーされていません。Qwenおよびその他の名称は、それぞれの所有者の商標である場合があります。