ふくふくHukuhuku LLC
EP.90Toolbox 12分公開:

Kitten-TTS 2で日本語をローカル音声合成:4つの声とMac導入、商用利用の注意点

10月22日の音声更新で確認した日本語プリセット4種を解説。normalize=Falseの意味、Apple Silicon向けMLX導入、CPU実行との違い、コードとモデルのライセンス条件を整理し、業務原稿の評価手順を紹介します。

#Kitten-TTS 2#音声合成#ローカルLLM#日本語#MLX
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

動画の仮ナレーションや、受付の案内文を、まず手元のMacで音にして確認したい。Kitten-TTS 2は、文章から音声を生成するローカル向けのモデルです。2026年10月22日の音声プリセット更新を受け、日本語の声の選び方と、Macで試すときの設定を整理しました。

最初に:日本語の生成と、日本語の品質保証は別です

日本語では normalize=False を指定するよう、公式モデルカードが案内しています。日本語の声も収録されていますが、固有名詞・数字・自然なアクセントが必ず正しくなる保証ではありません。また、PythonコードはApache 2.0、モデル重みは独自のCommunity Licenseです。商用利用には登録などの条件があります。

確認日:2026年10月23日。対象は kittenml 0.9.6 と、モデルの固定版(リビジョン 1f00fee525c7)です。音声ファイル更新履歴の「Change voices」は10月22日04:39:24 UTC、日本時間13:39:24。この記事では、音声構成が更新された版で使える日本語プリセットを確認しています。日本語4声の初追加日時までは確認できていません。モデル全体が10月22日に初公開された、という意味ではありません。

ローカルLLMの観点では、どこが面白いのか

TTSはText-to-Speech、文字から音声を作る技術です。Kitten-TTS 2は約17億パラメーターのspeech language model(音声の並びを扱う言語モデル)で、文章を受けて音声トークンを生成し、デコーダーが実際の波形へ変換します。質問に文章で答えるチャット用LLMとは役割が違いますが、手元の端末でモデルを動かす、重みの表現を小さくする、用途ごとにモデルを組み合わせる、という設計は共通しています。

公式READMEが掲げる特徴は、主要な重みを3値で表すternary方式です。3通りの値を表す情報量 log₂(3) ≈ 1.58 が「1.58-bit」の由来です。ただし、モデルを構成する全ファイルや、実行中のメモリが一律1.58ビットになるわけではありません。埋め込み・音声デコーダー・実行用の領域なども必要です。配布ファイルのサイズだけで「この容量のメモリがあれば動く」とは判断できません。

ローカル構成では、文章を作るLLMと、読み上げるTTSを別々に選べます。例えば「説明文をLLMで下書きする → 人が内容と読み方を直す → TTSで仮音声を作る」という順番です。TTS自体に事実確認や原稿の正しさの判断を任せるものではありません。

項目確認した仕様・注意点
モデルKitten-TTS 2。約1.7Bパラメーターの音声生成モデル
音声出力24kHzの波形。PythonからWAVなどへ保存できる
標準の実行方法Pythonパッケージ kittenml。0.9.6のパッケージ要件はPython 3.10以上
Apple Silicon MacMLXバックエンドを明示して試せる。GPUも使う構成
Intel MacMLXバックエンドの対象外。Apple Siliconの結果を流用できない
CPUでの利用PyTorchや別のC++実装などの経路がある。速度はCPU・実装・設定で変わる
インターネット初回のパッケージ・重み取得に必要。本記事では完全オフライン状態の通信遮断試験は未実施

実行経路はMLXの公式ガイドを参照しました。提供元の「CPUで動く」という説明と、「今回のMacでMLXを使う」ことは分けて読みます。MLXを使った生成時間を、CPUだけの性能として紹介することはできません。

日本語の声は4種類。声数は、どの版を見たかを残す

固定したvoices.jsonを確認すると、全体で115のプリセットがあり、そのうち名前と参照音声が日本語のものは次の4種類でした。モデルカードの多言語対応という説明だけでなく、実際に指定できる声の名前を確認するのが導入の出発点です。

voiceに渡す名前プリセット名から分かる題材試すときの注意
JapaneseTrainConductor電車の案内放送店内・受付の案内文との相性を短文で確認
JapaneseAnimeHeroineアニメのヒロイン風通常の業務説明で演技が強すぎないか確認
JapaneseGrandma祖母の話し方速さや聞き取りやすさを対象読者に確認
JapaneseSalarymanApology会社員の謝罪場面普通の説明に使っても適切な調子になるか確認

これらはプリセットの名称であり、ふくふくが各用途への適合を保証したものではありません。同じ日本語でも、話し方や参照音声との相性で結果が変わり得ます。まず同じ文章を複数の声で比較してください。

10月23日に確認した時点で、公式サイトには36 voices/10 languages、GitHub READMEには47 voices/20 languagesという表記も残っていました。本記事は固定したモデルファイルの115プリセットを基準にしています。資料間の数値が一致しないため、言語数だけを見て対応品質や更新日を判断しません。

日本語で重要なのは normalize=False

モデルカードは、英語以外では normalize=False を渡すよう明記しています。正規化は、数字・金額・日付などの表記を読み上げ向けの言葉へ展開する前処理です。英語向けの処理が日本語の原稿に入ると、数字などの扱いが意図とずれる可能性があります。

ただし、この指定は「日本語の読み方を自動で全部直す設定」ではありません。前処理を止めたうえで、日本語の声を選び、原稿の読みを確かめる必要があります。最初は「10/23 15:00」のような略記を避け、「十月二十三日、午後三時」と書いて結果を確認すると、表記の解釈と声の品質を切り分けやすくなります。

Apple Silicon Macで短文を試す基本形。取得されるmainの内容は将来変わり得ます。
Python
from kittenml import KittenTTS
model = KittenTTS(    "KittenML/kitten-tts-2",    backend="mlx",       # Apple Silicon Mac向け    weights="packed",    # MLXで使う重み形式)print(model.available_voices)
model.generate_to_file(    "おはようございます。本日の受付は、午前九時からです。",    "reception-ja.wav",    voice="JapaneseTrainConductor",    normalize=False,    max_new_tokens=500,    advanced={"seed": 42},)

上のコードは既存プリセットを使います。自分や他人の録音を送る必要はありません。既定のモデル名を省略すると別世代のモデルを選ぶ可能性があるため、KittenML/kitten-tts-2 を明示します。評価結果を残す際は、パッケージの版に加え、取得したモデルのリビジョンも記録してください。

Macに導入するときの手順と、つまずきやすい条件

上のPython例をsample.pyとして保存してから実行。Apple Silicon向けPythonではarm64と表示されます。
Bash
python3 -c "import platform; print(platform.machine())"python3 -m venv .venvsource .venv/bin/activatepython -m pip install --upgrade pippython -m pip install "kittenml[mlx]==0.9.6"python sample.py

Apple SiliconのMacでも、Intel向けのPythonを使っていると、必要な依存パッケージが見つからない場合があります。今回も最初のx86_64のPython環境では、torch>=2.6の対応ホイールを解決できませんでした。arm64のPython 3.13で作り直した仮想環境では、kittenml[mlx] 0.9.6の導入が完了しています。これは「Macなら何でも同じコマンドで成功する」とは言えない具体例です。

初回は複数の重みや音声参照ファイルのダウンロードがあります。言語モデルのファイルだけでなく、デコーダーや依存ライブラリにも空き容量が必要です。初回ロード・初回生成・2回目以降の生成を分けて記録し、ダウンロード時間を推論速度に混ぜないようにします。

MLX版ではpackedの重みを利用し、別形式のemb4を指定しないでください。公式ガイドではApple Silicon向けの制約と、Metalの初回コンパイルについて説明しています。WindowsやLinuxでは、Mac向けのbackend="mlx"をそのまま使わず、公式のPyTorch等の手順を確認してください。本記事ではそれらのOSを実測していません。

今回の確認範囲:導入と生成を分けて記録する

Apple M2 Ultra・メモリ192GiB・macOS 27.0・arm64版Python 3.13.11で、kittenml 0.9.6と固定したモデルを使いました。MLX/packed/JapaneseTrainConductor/normalize=False/seed=42で短文2本を生成し、24kHzのWAV保存を確認しています。モデル初期化は約133.8秒でした。追加デコーダー重みの取得確認・取得時間を含む可能性があり、純粋なロード時間とは分離できていません。これは大容量メモリのMacでの確認であり、最低必要メモリの実測ではありません。

入力文生成処理の時間生成音声の長さ
おはようございます。本日の受付は、午前九時からです。約10.67秒4.44秒
会議は十月二十三日、午後三時から始まります。約1.58秒4.36秒

生成時間はmodel.generateの呼び出し前後を計測したもので、ファイル取得・モデルロード・WAV保存を含みません。初回はコンパイル等の影響を含み得ます。2文は内容も違うため、厳密な速度比較や平均性能を示すものではありません。今回確認したのは生成とファイル保存までで、日本語の聞き取り・アクセント・全語の一致を人が校聴する評価は未実施です。したがって、自然な日本語音声が得られたという品質評価や、業務投入できるという結論にはしていません。

業務で価値を確かめやすい3つの試用案

試用案最初に作るもの採用前に確認すること
動画制作の仮ナレーション公開前の説明原稿を短い段落ごとに音声化漢字の読み、間の長さ、字幕との一致。公開利用のライセンス条件
受付・案内の原稿点検日時・場所を含む30秒以内の案内数字・固有名詞の読み違いがないか。人の校聴を必須にする
ローカル音声アプリの試作確定した応答文をTTSで読み上げる小さな画面待ち時間、途中停止、誤読時のテキスト表示。商用サービスの条件

いずれも編集部の試用案で、導入効果を実測した事例ではありません。最初から長い原稿を一括処理するより、同じ短文で声・表記・生成時間を比較すると、採用する価値があるか判断しやすくなります。生成するたびに出力が変わり得るので、1回成功しただけで安定運用できるとは考えない方がよいでしょう。

会議のメモや書き起こしが必要な場合は別の技術が必要です。Kitten-TTS 2の中心は文字を声にするTTSで、音声を文字にするASR(音声認識)とは向きが逆です。ローカルの会議記録なら「ASRで書き起こす → LLMで要点を整理する」という構成を先に考え、読み上げが必要な場合だけTTSを加えます。

日本語の評価は「流暢に聞こえる」だけで終えない

評価用には、次のように間違いを見つけやすい原稿を用意します。これは教材用の架空文で、製品の生成結果ではありません。読みの正解を先に人が決め、数字の取り違え・語の脱落・余計な発話を確認します。

観点試す原稿の例記録すること
日時会議は十月二十三日、午後三時からです。月日・時刻が原稿と一致するか
同じ漢字の異なる読み今日は一日休みます。受付は十一月一日です。「一日」の読みを文脈で変えられるか
固有名詞担当者と施設の名前を含む短文を作る。人が確認した読みと一致するか
語尾と無音受付は終了しました。ありがとうございました。語尾の欠け、異常な無音、反復がないか

録音を音声認識に戻して原稿と比較すると、抜けの発見には役立ちます。ただし、音声認識が読み違いを補って正しい文字に直すこともあります。書き起こし一致だけで、発音やアクセントが正しいとは判定できません。日本語を聞いて評価できる人の確認も残します。この違いは発音の質をLLMで評価する記事でも整理しています。

記録表には、モデルの版/声の名前/入力文/normalizeの指定/乱数seed/生成時間/音声の長さ/誤読した箇所/採用可否を残します。速度だけなら生成時間÷音声の長さという比率も使えますが、短い音声、初回コンパイル、GPU使用の有無が違う結果をそのまま比べないでください。

「公開ウェイト」だから無条件で商用利用できる、ではない

Python実装のコードライセンスと、モデルのライセンスは別です。モデル重みにはStellon Labs Community Licenseが付いています。導入判断に関係する条件を抜き出すと次のようになります。実際の利用前には本文と、その時点で適用される条件を確認してください。

利用場面モデルライセンスで確認すべき条件
評価・テストなどの研究/非商用利用条件の範囲内でロイヤルティなしの利用を認める規定がある
商用利用規模が小さくても、所定の登録・連絡が必要
売上・調達額の基準を超える場合本人または関連会社の個別・合算の年間売上100万米ドル超、または累計調達額100万米ドル超などの条件では、別契約が必要
配布・派生物・製品やサービスへの組み込みライセンスや通知の扱い、Powered by KittenMLの表示などの条件を確認

「ローカルで動く」と「商用登録が不要」は同義ではありません。今回は評価のためのローカル試用とし、音声の商用配布は行っていません。クラウドAPIの料金体系は別サービスの条件なので、ローカル実行の費用と混ぜないようにします。ローカルでも端末・電力・保守の費用はかかります。

海外の反応と、今回の記事の立ち位置

RedditのLocalLLaMAでの議論では、開発者の告知に加えて、CPU実行、音声の品質、日本語のアクセントや漢字の読みについて利用者のコメントが見られました。これらは個別の体験談です。使った版や声が揃っていないため、今回の日本語プリセット全体の品質を示す実験結果としては扱いません。

日本語でも既に10月5日付のローカル検証記事などがあります。今回の焦点は、今回の更新時点で確認した日本語の声、英語向け正規化を止める指定、Macの実行経路、業務利用前の条件を一緒に確認することです。日本語音声を仕事に使う判断は、声の数よりも「自分の原稿を誤読せず、必要な条件で扱えるか」を基準に進めてください。

よくある質問

日本語を読み上げられますか?
確認したモデル版には日本語のプリセット4種があり、公式は英語以外でnormalize=Falseを指定するよう案内しています。数字・漢字・アクセントの正しさは、実際の原稿で別途確認してください。
Apple Silicon MacではCPUだけで動かしていますか?
MLXバックエンドを選ぶ構成はGPUを使います。CPU実行とMLX実行の速度を同じ条件の結果として扱うことはできません。
無料で自由に商用利用できますか?
コードとモデル重みのライセンスは異なります。モデルの商用利用には登録などの条件があり、売上や調達額の基準によって別契約が必要です。
会議を書き起こす用途にも使えますか?
中心機能は文章を音声にするTTSです。会議の書き起こしには、音声を文字にするASRが別途必要です。
シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp