Whistle:16.9 MB で音声からテキストへ変換

2026/10/09 1:59

Whistle:16.9 MB で音声からテキストへ変換

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Whistle は、スマートフォン、ウェアラブル機器、ロボット、スマートホームシステム、車載ユニット、マイクロコントローラーといったエッジデバイスに特化して設計されたオープンソースの音声認識モデルです。2026 年 10 月 2 日にリリースされ、その最大の特徴は外部依存関係なしに完全にオンデバイスで動作することであり、高いプライバシー保護と低レイテンシーを実現するとともに、Needle フレームワークと同じ C++ エンジン内にはまる単一の 16.9 MB のファイルで済み、その利点を活かしています。モデルは英語、ドイツ語、フランス語、スペイン語、イタリア語、オランダ語、ポーランド語の 7 か国語をサポートし、CPU 上で最大 30 秒間のオーディオを瞬時に処理します。

アーキテクチャ的には、Whistle は Needle と同じエンコーダーおよびデコーダ用の Simple Attention ブロックを共有しており、エンコーダーでは 18,432 スロットを持つエングラムと Monarch Hadamard MLP を採用し、デコーダではクリップごとエンコーダーを一度だけ読み取るゲート付きクロス・アテンションを備えています。Apple M4 Pro CPU におけるベンチマーク結果はその効率性を示しており、最初のトークン生成までにかかる時間は 11 ms で、デコード速度は 1,319 トークン/秒に達し、Whisper base(73.2 ms / 266/s)や Moonshine tiny v2(22.8 ms)を大幅に上回っています。この効率性により、書き起こしや単語の時間スタンプ付けから、音声埋め込み、そして音声コマンドに基づくスマートホームアクションのトリガー(「set_lights」など)に至る多様なアプリケーションに対応できます。

.cact
ファイルを用いた
needle
ツールとの統合を通じて実現します。モデルには、特定の音量閾値未満の断片ではビームサーチに入らず空の文字起こしを返す沈黙検出機能も含まれており、リソース制約のある環境向けに軽量かつ高性能なソリューションとなっています。

本文

Whistle: 軽量音声認識モデルのリリース

🚀 モデル概要

  • 名前:Whistle
  • エンジン:Needle(C++ エンジン、同一コンテナ、同等の量化)
  • 形式:単一ファイル (16.9MB)
  • 依存関係:不要 (CPU 動作)
  • 公開日:2026 年 10 月 2 日
  • 特徴
    • 7 つの言語に対応
    • 最初のトークン出力まで:約 11ms(直ちにツール呼び出しへ)
    • デバイス内完結(データが外部に流出しない)

💻 機能と仕様

Whistle はデバイス上で以下の 3 つの機能をすべて実行します。

基本動作

  • マイク入力:ボタン押下で最大 30 秒の音声処理可能。
    • ダウンロード後、録音データはデバイス外へ送信されません。
  • 自動言語検出:言語を指定しない場合、システムが自動判別します。

主要機能

  1. 書き起こし(Transcription)

    • 対応フォーマット:16kHz モノラル音声
    • 処理時間:最大 30 秒
    • 検出言語:英語、ドイツ語、フランス語、スペイン語、イタリア語、オランダ語、ポーランド語
  2. 単語ごとのタイムスタンプ(Word Timestamps)

    • デコーダーの注意力機構に基づき生成。
    • 各単語について開始時間・終了時間・確率値を付与。
  3. 音声エンベッディング(Speech Embedding)

    • トランスクリプトを生成せず、エンコーダー出力のみ提供。
    • フォーマット:80ms ごとに 1 ライン(フレーム単位)。

⚙️ アーキテクチャ詳細

エンコーダー (ENCODER)

  • 波形処理
    • ロギメルスペクトログラム生成:80 バイン、25ms ウィンドウ、10ms ヒップ。
    • 帯域制限:250-3500Hz / チャネルごとの正規化。
    • フレーム数:3,000 フレーム(480,000 サンプル)
  • 畳み込みステム(Convolutional stem)
    • 128 チャンネル、カーネルサイズ 9 で 3 回減算処理。
    • 収束結果:375 フレーム(各 80ms が 1 フレーム)
  • 単純な注意ブロック × 8
    • Needle と共有する構成。
    • 自己注意力計算と 4mHC レーン採用。
    • Monarch Hadamard MLP を FFN に代用。

デコーダー (DECODER)

  • クロスマモリー(Cross Memory)
    • K と V は一度だけ投影(375 フレーム×8 レイヤーでビーム間共有)。
  • 階段状の単純な注意ブロック × 8
    • Needle と共有する構成。
    • GQA 8q : 2kv 構成(48 次元 Q/K, 64 次元 V)。
    • 3 タップのカウzal コンボリューション適用。
    • レイヤー 3・7 で幅 512 のエングラム検索。
  • ゲート付きクロスアテンション
    • 各レイヤーがエンコーダーを読み取る:$x \leftarrow x + \sigma(g) \cdot \text{softmax}(\hat{q}\hat{K}^T/\sqrt{d}) V$
  • ビームサーチ × 5
    • 長さに正規化した対数確率を使用。
    • Aho-Corasick オートマトンによるキーワードバイアス適用。
  • トランスクリプト出力
    • テキストパーツ:8,192 + 7 つの言語トークン(最大 320 トークン)。
    • 検出された言語もトークンとして出力。

フロントエンド処理フロー

  1. 入力:16kHz モノラル音声(25ms ウィンドウ、10ms ヒップ)。
  2. 変換:80 バインのロギメルスペクトログラムに変換し正規化。
  3. 畳み込み:Convolutional Stem で処理し、80ms ごとのフレームへ収束。
  4. 出力:Embed モデルはフレームごとに一行を返す形式。

※ 注意点: 「共有」とマークされたブロックは Needle のコードそのものです(コピーではありません)。

--audio-depth
でデコーダーレイヤーを選択可能ですが、エンコーダーは常に全 8 レイヤーを実行します。

📊 性能比較

Whistle は同等の品質を維持しつつ、サイズとレイテンシにおいて優位性を示します。

メトリックWhistleWhisper baseMoonshine tiny v2備考
サイズ16.9 MB145.3 MB41.9 MBWhistle が圧倒的に軽量
レイテンシ (最初のトークン)11.1 ms73.2 ms22.8 msCPU 環境でも高速
デコード速度 (Apple M4 Pro CPU)1,319 tokens/s266 tokens/s262 tokens/sストリーミング対応で高速
WER (単語誤り率)最良特定分野で優位良好LibriSpeech, SPEGISpeech 等で先行

レイテンシの特性

  • Whisper: すべての入力を 30 秒にパディングするため、クリップ長に関わらずレイテンシは一定(73.2ms)。
  • Whistle: クリップを追跡するため、入力時間に応じて最適化されます。
    • 5 秒分:約 5.9ms
    • 10 秒分:約 11.1ms
    • 30 秒分:約 36.3ms

テスト環境について

  • 測定はテストセットにトレーニング/検証データが含まれていないことを確認済み。
  • WER は Whisper の正規化器を使用(公平性の確保のため)。
  • Whistle の数値は 86,174 の発話に基づく独自のベンチマークです。

💡 使用例と統合

Needle を経由した実行

needle_load
は
.cact
ファイルを読み込み、同じバイナリで音声処理・テキスト処理・両方を同時実行できます。

コマンドライン操作

# 音声を書き起こす
needle --model whistle.cact --audio clip.wav

# テキストプロンプトでツールを呼び出す
needle --model needle3.cact --tools tools.json --prompt "kitchen lights を消す"

# 音声をトリガーとしたツールの呼び出し(組み合わせ)
needle --model needle3.cact --model whistle.cact --tools tools.json --audio clip.wav
  • 3 行目の
    needle_complete
    は、エンジン内の書き起こしを直接処理します。
  • JSON レスポンス例:
    {
      "function_calls": [
        {
          "name": "set_lights",
          "arguments": {
            "room": "kitchen",
            "on": false
          }
        }
      ],
      "confidence": 0.94,
      "audio_text": "turn off the kitchen lights",
      "audio_language": "en"
    }
    

Python API (
cactus-needle
)

pip install cactus-needle
import needle

# 簡易書き起こし
print(needle.transcribe("clip.wav")["text"])
# 出力:kitchen lights を消す

オプションパラメータ

  • word_timestamps=True
    : 各単語の時間と確率を付与。
  • keywords=["Siobhan", "Krzysztof"]
    : キーワード検出時の対数確率引き上げ。
  • language="de"
    : 言語を自動検出ではなく強制指定。

プレイグラウンドコマンド

# ターミナルからマイク入力で書き起こし
needle whistle playground

# 並走比較(Whistle, Whisper, Moonshine のタイミング表示)
needle whistle compare

🛠️ インストールとプラットフォーム

システム要件とライブラリ

  • 16kHz WAV: ベースインストールのみで十分。
  • 他サンプリングレート/マイクキャプチャ:
    [mic]
    パッケージ追加が必要(soxr, sounddevice を含む)。

サポートプラットフォーム (17 ターゲット)

  • macOS, Linux, Android, iOS, watchOS
  • Windows on ARM, RISC-V, MIPS
  • ブラウザ、WASI コンポーネント

各プラットフォーム向けに事前構築済みバイナリ、

libneedle.a
,
needle.h
が提供されます。

入手方法

ウェイトは Hugging Face にあり、エンジンとプラットフォームフォルダは

Cactus-Compute/needle3
に配置されています。

# プラットフォーム固有のバイナリをダウンロード (例: macOS ARM)
needle download macos-arm64

# Whistle モデルをダウンロード
needle download whistle

# 実行
./macos-arm64/needle --model whistle.cact --audio clip.wav --audio-word-timestamps

API の特徴

  • needle_load
    ,
    needle_transcribe
    ,
    needle_embed
    が音声 C API の主要機能です。
  • 環境変数不要: 動作はコンパイル済みデフォルトまたは明示的なフラグで制御されます。
  • 重みは Hugging Face に公開されており、ソースコードは GitHub で利用可能です。

同じ日のほかのニュース

一覧に戻る →

2026/10/09 2:51

Theranos の世界

## Japanese Translation: 午前 9 時 41 分に、システムはユーザーが「ログイン」をクリックするか、Return キーまたはスペースキーを押すことを要求します。この操作にはパスワードの入力并不需要がありません。この簡素化されたフローにより、対話完了後、ユーザーは直ちにパーソナルダッシュボードに移動できます。 ## Text to translate : At 9:41 AM, the system requires a user to click "Log In" or press the Return or Space key. The interface does not require a password for this action. This streamlined flow allows users to proceed directly to their personal dashboard once the interaction is completed.

2026/10/08 9:14

DeepSeek 4.1 Flash が業界で騒がれていないのはなぜか?

## 日本語訳: DeepSeek 4.1 Flash は、高価な「フロンティア」モデルである Opus などに対し、コーディングタスクのほとんどにおいて非常に効率的かつ費用対効果の高い代替案を提供することで、人工知能における変革的な転換を表しています。従来のバージョンと比較してメモリ使用量を約 437 倍削減する KV キャッシュ最適化を採用することにより、標準セッションではトップティアモデルとの間に性能差がほぼ生じず、高品質で無人実行に適合しています。この効率性は、ユーザーが Opus 5.5 のようなプレミアムリソースを、エッジケース検出が不可欠な重要な最終レビューだけに限定して確保することを可能にします。 核心となるメッセージは、「十分である」とされるモデルを優先することで、実用的な性能を損なうことなく運用コストと環境への影響を大幅に削減できる点にあります。例えば、月額 10 ドル未満のサブスクリプションで無制限の使用が可能であり、セッションあたりのコストが 0.003 ドルほどになる場合があり、これは主要技術企業が高额的な財務的および環境コストにもかかわらず最先端モデルへの多額の投資を続ける業界の傾向に挑戦するものです。現時点ではハードウェア費用の観点から自己ホストは経済的に実現可能ではありませんが、将来のローカルキャッシュ最適化により実用的になると考えられます。 究極的には、この戦略の採用は、財務的な障壁を下げることで高知能へのアクセスを民主化し、水や電力の使用量を削減します。企業はルーチンタスクを効率的なモデルに委ねる一方で、プレミアム容量をエッジケース検出のために留保することで、実用的な性能で「十分である」場合でも最新の前線モデルを追いかけるという罠から回避できます。著者は同様の能力が GLM その他の中国モデルにも存在する可能性を示唆し、より詳細なパフォーマンスデータについては外部ベンチマークへの参照を推奨しています。

2026/10/09 4:04

要点に達さないことの価値(2015)

## Japanese Translation: 元の要約は非常に優れています。13 つの個別の箇条書きを、ニュアンスを損なわずに整合的な物語へと効果的に統合しています。元のテキストを再採用することを推奨します。 ## 要約: 核心となるメッセージは、世間話や食事といった社会的な食事が、言語のもつ本質的な不正確さと人間の脆弱性に対する不可欠な緩衝帯(バッファー)を創造するため、些細な distraction でない本質的な儀礼であるとすることです。これら「会話ウォームアップ」が欠如すると、信頼関係を構築したり複雑な感情を表出したりする前に、個人は敏感な話題に対峙することを余儀なくされます著者は、自分の娘が直接の会話が即座に行われると不安になる様子に気づいた後、このことに気付きました。これは、唐突な問題提起ではなく、家族間でトランプ氏など無関係な事柄について idle chit-chat を行うようなカジュアルな会話を通じて自然に見られる半時間の移行期間と対照的です。人々は何十年もの間直感的にこれらのニュアンスを理解してきていますが、Twitter などのプラットフォームは、即座に要点を述べねばならない厳格な文字数制限によって問題を悪化させ、安全な感情的移転に必要な時間を奪っています。その結果、オンライン上の相互作用は、段階的な信頼関係構築の安心感がない状態でユーザーが未加減な対立や不整合な議論に直面する緊張した環境となることが多く、文化が進化する時間があったオフラインの生活よりも多くの摩擦を生み出します。これを是正するためには、デザイナーや企業が対話文化を進化させ、真摯な問題や脆弱性の高い話題へと突入する前に、ゆっくりとした信頼に基づく導入を促すという人間の自然な必要に応えるよう、直接的さを強要する枠組みを超え、他の人々が直感的に理解している真実を明確に認識する必要があります。

Whistle:16.9 MB で音声からテキストへ変換 | そっか~ニュース