janhqが公開するIchigoは、「ローカルでリアルタイムに動く音声AI(Local realtime voice AI)」を掲げるオープンソースの音声パッケージだ。音声の文字起こしから、テキストLLMに「耳」を生やす実験的な音声言語モデルまでを、pip install 一発と数行のPythonで扱えるようにまとめている。「api ichigo」「asr llm」「local asr」のようにAPI連携やローカル完結を探す検索が多いため、本稿はAPIの使い方とアーキテクチャに重点を置いて整理する。GitHubのスター数は約2,491(2026年8月時点)。

Ichigo(いちご)のブランドビジュアル — 音声AIパッケージのロゴ
Ichigo のブランドビジュアル(出典:公式リポジトリ janhq/ichigo README)

この記事のポイント(30秒で理解するIchigo)

何者か:janhq製のローカル音声AIパッケージ。pip install ichigo で導入でき、ASR(文字起こし)・音声LLM・TTS(近日)の3機能を1つにまとめる
核となる発想:音声を「連続的な埋め込み」ではなく「離散トークン」に変換し、テキストLLMと同じ土俵に乗せる。これによりLlama 3に直接「聞く」能力を与えられる
APIの実体:同梱のFastAPIサーバーはOpenAI互換の/v1/audio/transcriptionsを含む3エンドポイント(S2T/S2R/R2T)を持つ
実力と注意:多言語WER(viVoice 11.68)でベースのWhisperを上回る一方、純英語ではベースに及ばない。Ichigo-LLMは実験段階で、リポジトリにLICENSEファイルがなく商用利用は要確認

Ichigo-LLMが土台にしているLlama 3を含め、LLMそのものの仕組みや量子化・ローカル実行の基礎を先に押さえたい場合は、LLMとは?仕組み・主要モデル比較・ローカル実行・量子化を一気にまとめる2026年版が参考になる。

要点まとめ — Ichigoは結局何をするパッケージか

Ichigoは「音声技術の急速な進化が求める、シンプルで統一された解」を標榜するローカル音声AIパッケージだ。本稿は①Ichigoの正体と3コンポーネント、②なぜ離散トークン化なのかという設計思想、③インストールとAPI(S2T/S2R/R2T)の使い方、④早期融合アーキテクチャとベンチマーク、⑤Whisper・Qwen2-Audio等の類似OSSとの違い、⑥実務での向き不向きと制限、の6点を公式README・技術論文・開発元公式解説だけを根拠に整理する。READMEに記載のない数値や挙動は「公式未記載」として扱い、推測を事実として書かない。

graph TD A["Ichigo"] --> B["①正体と3コンポーネント"] A --> C["②離散トークン化という発想"] A --> D["③インストールとAPI"] A --> E["④早期融合とベンチマーク"] A --> F["⑤類似OSSとの違い"] A --> G["⑥向き不向きと制限"]

背景と文脈 — なぜ音声を「離散トークン」にするのか

開発元のjanhqは、ローカルでLLMを動かすデスクトップアプリ「Jan」やローカル推論エンジン群を手がけるチームで、Ichigoはその音声側を担うコンポーネントにあたる。音声処理の煩雑な前処理を肩代わりし、開発者が「モデルを動かして改善する」ことに集中できる状態を目指している。

今日の多くの音声モデルは、1タスク向けにエンドツーエンドで学習されたモノリシックな構成になっている。しかしIchigoのチームは、ASRとTTSの部品は本来共有・再利用できると考え、音声タスクを単一の表現フレームワークへ統一する設計を選んだ。この設計の利点は明快で、READMEは「ASRのファインチューニングがTTSの事前学習になり得る」と説明し、限られた学習データでもモデルをブートストラップできるとする。

Ichigo-LLM側の中核は「早期融合(early fusion)」だ。音声を離散トークンに変換し、テキストと同じ語彙空間へ混ぜ込んでから、単一のTransformerで両モダリティをまとめて推論する。アダプタを後付けするのではなく、入力段階で融合する点が特徴で、Metaの「チャメレオン(Chameleon)」論文の混合モーダル早期融合の考え方に着想を得ている。

graph LR A["v0.1〜v0.2
英語のみのASR学習"] --> B["v0.3 Phase1
7言語へ多言語化
MMLU 0.69→0.42"] B --> C["v0.3 Phase2
汎用能力の回復
MMLU 0.42→0.63"] C --> D["v0.3 Phase3
マルチターン対応
非音声の拒否学習"] D --> E["2025年11月26日
直近の公式更新"]

このパッケージが担うのは次の3タスクで、いずれも推論コードのみを含む。学習用コードは同梱されず、ローカル推論のユースケースに焦点を絞っている。

Ichigo-ASR:自動音声認識(Automatic Speech Recognition)。音声をテキストや離散トークンへ変換する
Ichigo-TTS:Text to Speech。READMEでは「Coming Soon(近日公開)」とされる
Ichigo-LLM:音声言語モデル(実験的)。テキストLLMに「聞く」能力を持たせる研究プロジェクト

詳しく見ていく — インストールとAPI(S2T/S2R/R2T)の使い方

Ichigo-ASR:Whisperを離散トークン化する22Mモデル

Ichigo-ASRは、Whisper-medium モデル向けのコンパクト(22Mパラメータ)なオープンソース音声トークナイザーだ。多言語性能を高めつつ、元の英語能力への影響を最小限に抑えることを目的に設計されている。

Whisperのような一般的なモデルが連続的な埋め込みを出力するのに対し、Ichigo-ASRは音声を離散トークンへ圧縮する。これがLLMとの相性を決定的に良くする。LLMはもともと離散トークン(語彙)を扱う仕組みなので、音声も離散トークンで渡せば、画像や音声用の特別なアダプタを噛ませずに「音声をそのまま読む」ことができる。学習データは英語約400時間・ベトナム語約1,000時間で、多言語を意識した構成だ。

Ichigo-LLM:Llama 3に「耳」を与える実験

Ichigo-LLMは、テキストベースのLLMにネイティブな「聞く」能力を持たせる、進行中のオープンな研究実験だ。READMEはこれを「オープンデータ・オープンウェイトのオンデバイスSiri」と表現する。ベースはLlama 3系で、開発元の公式解説(v0.3)ではLlama 3.1 8Bを軸にした構成が示されている。

v0.3チェックポイントの公式解説(menlo.ai)では、実用上重要な4つの改良が挙げられている。

多言語化:英語のみからMultilingual LibriSpeechを用いた7言語データセットへ拡張
汎用能力の回復:MMLUがPhase 1後の0.42から0.63まで回復し、劣化を約10%に抑制
非音声の扱い:聞き取れない入力に対する「拒否(refusal)」挙動を実装
マルチターン対応:会話のターンをまたいだ文脈理解を強化(Phase 3は15万サンプル。うち90%が2ターン、10%が4ターン以上)

非音声の扱いは設計が面白い。WhisperVQのコードブックにある513個の音トークンを「似たパターンの並び」にランダム生成し、合成の「聞き取れないデータ」を作る。意味のある音声は513の50乗という膨大な並びのごく一部にすぎない——だからこそ、混沌としたトークン列を「非音声」と判別し、「I cannot hear(聞き取れません)」と応答できるようになる、という発想だ。Ichigo-TTSは前述のとおりREADME上で「Coming Soon」のままで、現時点では未提供である。

インストールと基本的な使い方

導入はパッケージのインストール1行から始まる。

pip install ichigo

単一ファイルの文字起こしは、transcribe をワンライナーで呼ぶだけだ。同じフォルダに transcription.txt も書き出される。フォルダを渡せばバッチ処理になり、各ファイルの結果がサブフォルダ内に保存される。

# 単一ファイル / フォルダ単位のバッチ文字起こし
from ichigo.asr import transcribe
results = transcribe("path/to/your/file")     # 単一ファイル
results = transcribe("path/to/your/folder")   # フォルダ(バッチ)

API — OpenAI互換エンドポイント(/v1/audio/transcriptions)とLM Studio連携の現状

フロントエンド連携には、同梱のFastAPIサーバーを使う。バッチ処理に対応する一方、ストリーミングは現時点で未対応である。

# Uvicornで起動(または docker compose up -d)
cd api && uvicorn asr:app --host 0.0.0.0 --port 8000

APIは3種類のエンドポイントを持つ。S2T(音声→テキスト)に加え、Ichigoらしい S2R(音声→表現=音トークン列)と R2T(音トークン列→テキスト)が分かれているのが特徴だ。離散トークンを中間表現として外に出せるため、LLMへの受け渡しを自前で組める。

# S2T: 音声を文字起こし(OpenAI Whisper APIと同じパス形式)
curl "http://localhost:8000/v1/audio/transcriptions" \
  -H "accept: application/json" \
  -H "Content-Type: multipart/form-data" \
  -F "file=@sample.wav" -F "model=ichigo"

S2Rエンドポイント(/s2r)は音声を離散トークン列に変換するだけで、テキストへは変換しない。返ってくるのは<|sound_start|><|sound_end|>で挟まれた音トークンの並びで、これをR2Tエンドポイント(/r2t)に渡すとテキストへ復号される。この2段構成のおかげで、音声そのものを外部へ送らずトークン化された中間表現だけを別システムへ渡す、といった設計も組める。

# S2R → R2T の2段構成(音声をトークンとして中間保持する例)
curl "http://localhost:8000/s2r" -F "file=@sample.wav"
# => {"tokens": "<|sound_start|><|sound_1012|><|sound_1508|> ... <|sound_end|>"}

curl "http://localhost:8000/r2t" -X POST \
  -H "Content-Type: application/json" \
  --data '{"tokens":"<|sound_start|><|sound_1012|><|sound_1508|> ... <|sound_end|>"}'
# => {"text": "(文字起こし結果)"}
graph LR A["音声ファイル"] -->|"POST /v1/audio/transcriptions"| B["S2T
音声→テキスト"] A -->|"POST /s2r"| C["S2R
音声→音トークン"] C -->|"POST /r2t"| D["R2T
音トークン→テキスト"] B --> E["文字起こし結果"] D --> E

S2Tのパスは/v1/audio/transcriptionsで、OpenAIのWhisper文字起こしAPIと同じ形式を踏襲している。 このため、OpenAI互換のASRエンドポイントを受け付けられる自作スクリプトやツールへ、Whisperの代わりとして組み込みやすい。

「lmstudio 音声入力」のような検索が示すとおり、LM Studioに音声で直接指示したいというニーズは存在する。しかしLM Studio自体には本稿執筆時点(2026年8月)で音声入力を受け付ける公式機能が無く、外部ASRサーバーへ処理を委譲する/audio/transcriptions相当のサーバーエンドポイントも実装されていない。LM Studio公式リポジトリ(lmstudio-ai/lms)には、まさにこの機能を求めるIssue #320「Server endpoint /audio/transcriptions for Speech-To-Text (STT)」が2025年9月12日に立てられ、本稿執筆時点でも未解決(open)のまま残っている。 実際に音声でLM Studioを操作している例は、Whisperベースの外部音声認識スクリプトで文字起こしした結果をLM Studioのチャット欄へ流し込む、という別プロセス経由の構成がほとんどだ。Ichigoの/v1/audio/transcriptionsエンドポイントも、こうした「外部でSTTだけ済ませてからLM Studioへテキストを渡す」DIY構成のSTT部分として使える可能性はあるが、LM Studio側にIchigoとの連携を公式にサポートする機能は無い点に注意したい。 APIドキュメントは起動後 http://localhost:8000/docs で確認できる。

アーキテクチャと仕組み — Ichigoの早期融合(early fusion)とベンチマーク

下の図はREADMEに掲載された俯瞰図で、Ichigoが「あなたのおじいちゃんの音声パッケージではない(Not your grandfather’s speech package)」と称する理由を示している。ASRとTTSをモジュール化し、共通コンポーネントを共有させることで、両者が同じ表現言語を話すようにしている。

Ichigo のアーキテクチャ概念図 — ASRとTTSがコンポーネントを共有し同じ表現を話す
Ichigo のアーキテクチャ概念図。ASR/TTSをモジュール化し共通表現で結ぶ(出典:公式リポジトリ janhq/ichigo README)
graph LR A["音声入力
(WAVなど)"] --> B["Ichigo-ASR
Whisper-medium ベースの
22M音声トークナイザー"] B --> C["離散・音トークン列
<|sound_1012|> ..."] C --> D["早期融合
テキストと同じ語彙空間へ"] D --> E["Llama 3
単一Transformerで推論"] E --> F["テキスト応答
(オンデバイスSiri相当)"] C -.S2T.-> G["文字起こしテキスト"]

論文「Ichigo: Mixed-Modal Early-Fusion Realtime Voice Assistant」(Dao, Vu, Ha, 2024)によれば、この早期融合構成はアダプタを使わずにモダリティ横断の推論・生成を実現し、最初のトークン生成まで111msと、既存モデルより大幅に低いレイテンシを報告している。音声質問応答(speech QA)ベンチマークでは、オープンソースの音声言語モデルを上回り、カスケード型システムに匹敵する性能を示したとされる。

まずIchigo-ASRの音声認識精度(WER=単語誤り率、低いほど良い)。READMEの公式表をそのまま再現する。比較対象は同系統のwhispervq、およびベースとなるOpenAIのwhisper medium.enだ。

モデル LS Clean LS Other Earnings22 LargeScaleASR viVoice(多言語)
ichigo-asr-2501-en 4.28 9.35 35.55 16.09 11.68
whispervq-2405-en 9.79 14.40 38.45 18.38
whisper medium.en 2.88 6.04 16.64 8.21 18.30

この表は正直に読む必要がある。純粋な英語(LibriSpeech Clean/Other、Earnings22)では、ベースのmedium.enがなお最良で、Ichigo-ASRは及ばない。一方で多言語のviVoiceでは、Ichigo-ASRの11.68がmedium.enの18.30を明確に上回る。つまりIchigo-ASRの価値は「英語で最高精度を出すこと」ではなく、「離散トークン化でLLM連携を可能にしつつ、多言語で素のWhisperを上回る」点にある。

次にIchigo-LLMの音声理解。AudioBench(GPT-4oを審査者とする0〜5スコア、高いほど良い)の公称値が公式解説に示されている。

モデル Open-Hermes Alpaca
Ichigo v0.3-phase3 3.64 3.68
Ichigo v0.2 3.45 3.53
Qwen2-Audio-7B 2.63 2.24

ベンチマークの読み方(注意)

・WERは低いほど良い、AudioBenchは高いほど良い。指標の向きが逆なので混同しない
・いずれも開発元による公称値で、第三者の独立検証ではない
・英語単体の精度を最優先するなら素のWhisperが堅実。Ichigoの強みは「離散トークン化によるLLM連携」と「多言語」にある

他の選択肢との比較 — Whisper・WhisperSpeech・Qwen2-Audioとの違い

音声をLLMにつなぐOSSは増えている。Ichigoのポジションを、代表的なプロジェクトと並べて整理する。

プロジェクト 主な役割 LLM連携の方式 特徴
Ichigo(janhq) ASR+音声LLM+TTS(近日) 早期融合・離散トークン 音声を離散トークン化しLlama 3に直接融合。ローカル完結志向
OpenAI Whisper ASR(文字起こし) 連続埋め込み 英語精度が高く定番。LLM連携は別途実装が必要
WhisperSpeech TTS(音声合成) Whisper反転 Ichigoが合成音声生成・謝辞で参照する基盤の一つ
Qwen2-Audio 音声理解LLM 音声エンコーダ+LLM 汎用の音声対話。AudioBenchでIchigo v0.3が上回ると報告

Ichigoの差別化点は、音声を「LLMが読める離散トークン」に変換する設計を中核に据えていることだ。Whisperが「文字起こしまで」を担うのに対し、Ichigoは文字起こし(S2T)に加えて、音声→トークン(S2R)とトークン→テキスト(R2T)を分離して提供し、その上でLLMへの早期融合まで一気通貫で扱おうとする。

graph TD R["音声 × LLM のOSS地図"] --> A["文字起こし重視
OpenAI Whisper"] R --> B["音声合成
WhisperSpeech"] R --> C["音声理解LLM
Qwen2-Audio"] R --> D["離散トークンで早期融合
Ichigo (janhq)"] D --> D1["S2T: 文字起こし"] D --> D2["S2R / R2T: 音トークンを外出し"] D --> D3["Llama 3 にネイティブな聴覚"]

実務への影響 — 向いているユースケースと制限・注意点

Ichigoが向くのは、クラウドの音声APIに頼らずローカル完結で音声を扱いたい場面だ。FastAPIサーバーはuvicornでの直接起動に加えてdocker compose up -dにも対応しており、コンテナ環境へそのまま組み込める。既存のマイクロサービス構成にASRサーバーを1つ追加する形で導入できるため、社内ツールや検証環境への組み込みハードルは比較的低い。

ローカル文字起こしの組み込みpip install とワンライナーで、議事録・インタビュー・録音メモのバッチ文字起こしを自前アプリへ組み込む
OpenAI互換API経由の音声入力/v1/audio/transcriptionsをローカルのWhisper代替として、既存ツールへ組み込む
プライバシー重視の音声処理:音声を外部送信せず、オンプレ/端末内で完結させたいケース
音声対応LLMの研究・試作:早期融合でテキストLLMに「聞く」能力を足す実験。離散トークン(S2R/R2T)を中間表現として取り出し、独自パイプラインを組める
多言語の音声認識:英語以外(ベトナム語など)を含む環境で、素のWhisperより誤りを減らしたい場合

逆に、英語のみで最高精度を求める用途や、リアルタイムのストリーミング文字起こしが必須の用途では、現時点のIchigoは最適解になりにくい。

「クラウドに頼らずローカルだけで動かす」という設計思想はIchigo単体の特徴ではない。CPUだけで1ビットLLM推論を実現するbitnet.cpp(BitNet)や、複数の家庭用デバイスを繋いでLLM推論を分散させるDistributed Llamaも、同じ「ローカル完結」を軸にした設計のOSSで、Ichigoと組み合わせて音声入力からローカルLLM推論までをオンプレミスで完結させる構成も考えられる。

導入前に押さえておきたい制約を、READMEと公式解説の記載ベースで挙げる。

ライセンスが明示されていない:2026年8月時点でリポジトリにLICENSEファイルがなく、GitHub APIでもライセンスは未検出。商用利用・再配布の前に、Hugging Face(homebrewltd配下)の各モデル表記とベースのLlama 3条件を必ず確認する
Ichigo-LLMは実験段階:READMEは「ongoing research experiment」「すべて進行中(work in progress)」と明記。本番採用には慎重な検証が要る
ストリーミング未対応:FastAPIはバッチ処理対応だが、逐次ストリーミングはサポートされない
TTSは未提供:Ichigo-TTSは「Coming Soon」。現状はASRと音声LLMが中心
英語単体ではベースに及ばない:純英語のWERはwhisper medium.enが上。Ichigoの優位は多言語とLLM連携にある
更新状況:リポジトリの最終更新は2025年11月26日(pushed)。活発な日次更新が続くフェーズかは導入時に確認したい

graph TD A["ローカル音声AIを
探している"] --> B{"英語単体の
最高精度が必要?"} B -->|"はい"| C["素のWhisperが堅実"] B -->|"いいえ"| D{"LLM連携や
多言語が必要?"} D -->|"はい"| E["Ichigo-ASR / Ichigo-LLM"] D -->|"いいえ"| F["用途次第で
他ASRも検討"] E --> G{"ストリーミングが
必須?"} G -->|"はい"| H["現時点のIchigoは非対応"] G -->|"いいえ"| I["バッチ処理・API連携で活用"]

公称ベンチマークはいずれも開発元の自己申告であり、自分のデータ・言語・録音環境での実測が最終的な判断材料になる。まずはIchigo-ASRをバッチ文字起こしで試し、要件に合えばS2R/R2TやIchigo-LLMへ踏み込む、という順序が現実的だ。

まとめ

Ichigoは、「音声をLLMが読める離散トークンに変える」という一点に賭けたローカル音声AIパッケージだ。pip install ichigo とワンライナーで多言語のバッチ文字起こしが動き、OpenAI互換の/v1/audio/transcriptionsを含むFastAPIサーバーで既存ツールへの組み込みもねらえる。その先には早期融合でLlama 3に「耳」を与えるIchigo-LLM、そしてASR/TTSが部品を共有する統一フレームワークの構想が広がる。

実力は領域で割れる。純英語の文字起こし精度では素のWhisperに譲るが、多言語WER(viVoice 11.68)とLLM連携のしやすさ、最初のトークンまで111msという低レイテンシは明確な武器だ。一方でライセンス未明示・実験段階・ストリーミング未対応といった制約もあり、用途を選ぶ。クラウドに音声を出さずローカルで音声AIを試したい開発者にとって、まず触ってみる価値のあるOSSである。

導入の第一歩としては、まずpip install ichigoで単一ファイルの文字起こしを試し、精度が要件を満たすかを自分のデータで確認するのが現実的だ。要件に合えばFastAPIサーバーを起動してAPI経由の組み込みへ進み、余力があればS2R/R2TエンドポイントやIchigo-LLMの早期融合まで踏み込む、という段階的な検証がリスクを抑えやすい。

参照ソース

参考

・本文中の数値・挙動は、上記の公式リポジトリREADME・arXiv論文・開発元公式解説(menlo.ai)に記載のもののみを採用した。READMEに記載のないレイテンシ・ライセンス・運用挙動は本文中で「公式未記載」「要確認」と明示している
・LM Studioとの組み合わせについては、LM Studio自体に音声入力を受け付ける公式機能・外部ASR委譲機能が無いことをgh api repos/lmstudio-ai/lms/issues/320で実測確認(2025年9月12日作成・本稿執筆時点でopen)した上で、Ichigoのエンドポイントは「外部でSTTを済ませてから渡すDIY構成の一部として使える可能性がある」という正確な位置づけで記載している
・GitHubスター数(約2,491)・最終更新(2025年11月26日)・LICENSE未検出はGitHub API実測値(2026年8月時点、gh api repos/janhq/ichigoで確認)