日本語の声は、どこまで本物か。KOEとElevenLabsを80文で測った。
要点
- 10言語80文で、自然さ(NISQA)は KOE 3.77 対 ElevenLabs 4.74。差は有意(n=56, p=8.0e-11)。
- 日本語8文に限ると、読みの誤り(CER)は 0.019 対 0.014 で差なし(p=0.50)。8文のうち6文は両者とも誤りゼロだった。
- 中国語は参照音声を日本語話者のまま使っていて崩壊していた。CER 0.548 → 中国語ネイティブ参照に差し替えて 0.013。
- 合成の待ち時間は、同じ文の2回目以降が中央値0.38〜0.59秒、初回が6.8〜12.3秒。差はほぼ上流GPUの順番待ちだった。
日本語のボイスクローンは、もう「使えない」とは言えない水準に来ています。ただし、自然さではまだ負けています。どこで負けて、どこで互角なのか。10言語80文の合成音声と、同じ文を繰り返したときの待ち時間を実測しました。
比較対象は ElevenLabs の eleven_v4(voice=Matilda)、KOE は本番の koe.live 出力そのままです。どちらもラウドネスを -23 LUFS に揃え、48kHz モノラルにしてから採点しました。採点に使った音声と元ファイルはすべて公開しています。
測定は KOE を運営する側によるものです。独立した第三者評価ではありません。ElevenLabs 側は無料枠の文字数上限に当たり、ポルトガル語1文・イタリア語7文・ロシア語8文が未生成です。そのため集計は両方の音声が揃った文だけのペア比較(n=56、中国語を除く)で行い、検定は Wilcoxon 符号付順位検定(両側)です。
結果:自然さで負け、読みでは互角
5つの指標で並べました。NISQA は自然さの主観MOS予測(1〜5)、CER は音声認識で書き起こしたときの文字誤り率(低いほど正しく読めている)、HumanVoice は「人間の声らしさ」の判定確率(低いほど合成と見抜かれる)、帯域と高域は声の明るさに関わる物理量です。
| 指標 | KOE | ElevenLabs | 差 | p | どちらが良いか |
|---|---|---|---|---|---|
| NISQA(自然さ・1〜5) | 3.771 | 4.738 | −0.967 | 8.0e-11 | ElevenLabs |
| CER(読みの誤り・低いほど良い) | 0.083 | 0.012 | +0.071 | 6.3e-07 | ElevenLabs |
| HumanVoice(人間らしさ・低いほど合成と判定) | 0.050 | 0.300 | −0.250 | 1.7e-11 | KOE(合成と見抜かれにくい) |
| 帯域 99.9%ロールオフ (Hz) | 7,856 | 11,386 | −3,530 | 4.7e-12 | ElevenLabs(ただし下記の注意) |
| 高域 8kHz以上の相対量 (dB) | −22.97 | −19.17 | −3.80 | 1.1e-09 | ElevenLabs |
HumanVoice は低いほうが「人間と判定されにくい」=合成だと見抜かれやすい、という意味です。この指標では KOE のほうが合成と見抜かれます。自然さと人間らしさは別物で、ここが今回いちばん素直に負けた点です。
言語別に割ると、差の出方がはっきり分かれます。日本語・韓国語・中国語は読みの誤りが小さく、ドイツ語・フランス語・英語は大きい。KOE の音声合成は日本語で作った参照音声を他言語にも使い回しているので、ラテン系の言語で綴りと発音の対応が崩れます。これは能力の限界として、そのまま書いておきます。
| 言語 | KOE CER | ElevenLabs CER | KOE NISQA | ElevenLabs NISQA |
|---|---|---|---|---|
| 日本語 ja | 0.019 | 0.014 | 4.187 | 4.655 |
| 韓国語 ko | 0.011 | 0.006 | 3.784 | 4.730 |
| 中国語 zh | 0.013 | 0.016 | 3.897 | 4.790 |
| スペイン語 es | 0.041 | 0.011 | 3.865 | 4.651 |
| イタリア語 it | 0.040 | 0.000 | 3.877 | 4.484 |
| ポルトガル語 pt | 0.040 | 0.017 | 3.685 | 4.804 |
| 英語 en | 0.102 | 0.025 | 3.905 | 4.763 |
| フランス語 fr | 0.146 | 0.006 | 3.443 | 4.704 |
| ドイツ語 de | 0.289 | 0.006 | 3.506 | 4.898 |
| ロシア語 ru | — | — | — | — |
ロシア語は比較側が未生成のため測定なし。中国語のNISQAは下記の理由で参考値です。
日本語8文:自然さは負け、読みは互角
日本語だけを取り出すと、景色が変わります。NISQA は 4.187 対 4.655 で 0.47 ポイント負け(p=0.016)。一方で CER は 0.019 対 0.014 で、統計的な差はありませんでした(p=0.50)。8文のうち6文は両者とも誤りゼロで、差が出たのは2文だけです。
つまり「日本語として何を言っているか伝わるか」では、この8文の範囲では差がついていません。負けているのは「声として自然に聞こえるか」のほうです。実務で言えば、読み上げの内容が重要な場面(ナビゲーション、読み上げ通知、社内の音声メモ)では十分に使え、声の質感そのものが商品になる場面(広告、ブランドボイス)ではまだ届かない、という切り分けになります。
| 文 | 種別 | KOE NISQA | ElevenLabs NISQA | KOE CER | ElevenLabs CER |
|---|---|---|---|---|---|
| ja-1 | 会話 | 3.575 | 4.858 | 0.000 | 0.000 |
| ja-2 | 会話 | 3.887 | 4.307 | 0.044 | 0.029 |
| ja-3 | 朗読 | 4.532 | 4.487 | 0.108 | 0.081 |
| ja-4 | 朗読 | 4.437 | 4.539 | 0.000 | 0.000 |
| ja-5 | ニュース | 3.861 | 4.454 | 0.000 | 0.000 |
| ja-6 | ニュース | 4.406 | 4.898 | 0.000 | 0.000 |
| ja-7 | 固有名詞 | 4.202 | 4.722 | 0.000 | 0.000 |
| ja-8 | 固有名詞 | 4.593 | 4.973 | 0.000 | 0.000 |
数字だけでは伝わらないので、同じ文を両方の音声で置いておきます。聞き比べてみてください。文は「えっ、本当にあの店が来月閉店するの?子どもの頃からずっと通ってたから、なんだか寂しいなあ。」です。
音声は koe.live/bench で公開している比較用ファイル(-23 LUFS 正規化済み)です。元の出力そのままのファイルも同じ場所に置いています。
帯域の罠:数字は負けているが、声は暗くない
帯域(99.9%ロールオフ)は KOE 7,856Hz 対 ElevenLabs 11,386Hz で、はっきり負けています。ここだけ見ると「KOE の声はこもっている」と結論したくなります。ですが、この指標は低域の強さに引っ張られます。KOE は 100〜300Hz が実録音より約 +7dB 強く、そのぶん累積エネルギーが早く100%に達して、数値が低く出ます。
基準を変えて -70dB まで見ると、KOE 15.2kHz 対 ElevenLabs 14.9kHz で、KOE のほうが広いという結果になります。8kHz 以上の相対量も、実録音(VCTK 48kHz 40本の平均)が −24.0dB なのに対して KOE は −22.3dB、ElevenLabs は −19.2dB です。つまり KOE は実録音よりは高域が残っていて、ElevenLabs ほどではない、という関係です。
この節の結論:帯域の数値だけで音質の優劣を語ってはいけない、というのが今回のいちばん実用的な学びでした。同じ音声でも、基準を 99.9% から -70dB に変えると勝敗が入れ替わります。指標を1つだけ見て「こもっている」と判断していたら、間違った改善をしていたはずです。
崩壊した中国語:参照音声を間違えると、声は壊れる
これは失敗の記録です。中国語の8文を、日本語話者の参照音声(voice=yuki)のまま合成していました。結果は CER 0.548。同じ言葉を繰り返す「反復崩壊」が起きて、意味が通らない音声になっていました。
中国語ネイティブの参照音声(AISHELL-1 の S0002)に差し替えると、CER は 0.008 まで下がりました。さらに参照を広帯域の録音(AISHELL-3、44.1kHz)に替えて、CER 0.013・8kHz 以上 −27.8dB・ロールオフ 8,274Hz。他言語の −22.9dB との差は大きく縮みました。参照音声の帯域は、生成される声の帯域をそのまま決めます。16kHz の参照を使えば、出力も 8kHz 以上が −45.6dB まで落ちます。
そして、NISQA は中国語で嘘をつく
ここが今回いちばん危なかった点です。中国語ネイティブの実録音そのものが NISQA 1.90、崩壊していた旧音声が 3.56、正常に直した音声が 2.26 でした。完全に逆転しています。NISQA をそのまま信じていたら、壊れた音声のほうを高く評価して、直した音声を「改悪」と判断していたはずです。
中国語の品質は CER と帯域で判断し、NISQA は参考値に留める。全体の NISQA 集計からも中国語を外しました(n=56)。自動指標は、言語をまたぐと平気で意味を失います。これは KOE の話ではなく、音声評価全般の罠です。
待ち時間:2回目は0.4秒、初回は7〜12秒
2026-11-04 に、本番の koe.live/api/speak を直接叩いて待ち時間を測りました。同じ文を繰り返すと速く、新しい文は遅い。この差がどこから来るのかを、レスポンスヘッダの内訳で追いました。
| 条件 | 中央値 | 最小 | 最大 | n |
|---|---|---|---|---|
| 同じ文の2回目以降(約110字) | 0.38s | 0.37s | 0.38s | 2 |
| 同じ文の2回目以降(約50字) | 0.59s | 0.53s | 0.69s | 3 |
| 初回・短文(10〜12字) | 7.28s | 6.79s | 7.70s | 3 |
| 初回・約50字 | 8.46s | 8.28s | 9.04s | 3 |
| 初回・約110字 | 11.69s | 11.58s | 12.25s | 3 |
初回の内訳はこうです。エッジでの前処理(gate + pre)が 0.12〜0.41秒、キャッシュ確認(r2)が 0.10〜0.16秒、上流の GPU 呼び出し(up)が 1.5〜8.2秒。合計が 6.7〜12.3秒なので、上流呼び出しの外側にさらに数秒の待ちがあります。これはキューでの順番待ちです。短文でも 7秒かかるのは、文字数ではなく順番待ちが支配しているからです。
正直に書いておきます。この計測の途中で HTTP 429(レート制限)が1回返りました。同じ条件で連続して叩きすぎたためです。429 が出た時点で計測を止め、再試行はしていません。上の表は 429 の前に取れた分だけです。サンプル数が2〜3と少ないので、中央値は目安として読んでください。
実務的な意味ははっきりしています。定型文(挨拶、通知、よく使うフレーズ)はキャッシュで 0.4秒、初出の文は 7〜12秒。対話で使うなら、初回の遅さをどう隠すかが設計の中心になります。先に短い相槌を返して、本文は後から流す。あるいは長文を分割して先頭から順に再生する。どちらも、この数字を見てから決めるべきことです。
構成と料金
KOE は2つのエンジンを言語で振り分けています。Qwen3-TTS が 10言語(日本語・英語・中国語・韓国語・スペイン語・ポルトガル語・フランス語・ドイツ語・イタリア語・ロシア語)、Chatterbox が残りの 12言語(ヒンディー語・トルコ語・アラビア語・オランダ語・ポーランド語・スウェーデン語・デンマーク語・ノルウェー語・ギリシャ語・マレー語・スワヒリ語・フィンランド語)。合計22言語です。
生成は RTX 3090 Ti の1台で回しています。API は koe.live が無料枠(匿名 1日10回/IP、個人キー 1日100回)を持ち、超過分は teai の従量課金に流れます。teai 経由の合成は 15クレジット、1円=6クレジットなので約2.5円です。声の持ち主への還元は teai 経由の利用だけが対象で、80%が記帳されます。koe.live 直の無料枠は還元なしの「お試し」です。
1台のGPUで回していることが、そのまま初回7〜12秒の原因です。台数を増やせば速くなりますが、原価も増えます。この記事の数字は、そのトレードオフをどう決めるかの材料として出しています。
実務で使うなら、この3つを先に決める
1. 声の質感が商品か、内容が商品か。 内容が商品なら、日本語の読みはもう十分です。質感が商品なら、現時点では ElevenLabs が上です。この記事の数字は、その線をどこに引くかの材料になります。
2. 初回の遅さを、どこで吸収するか。 定型文をキャッシュに寄せる、長文を分割する、先に相槌を返す。どれも実装は簡単ですが、やらないと「7秒待たされるアプリ」になります。
3. 指標を1つだけ信じない。 帯域は基準を変えると勝敗が入れ替わり、NISQA は中国語で完全に逆転しました。耳で聞く作業を、自動指標で置き換えないことです。
記録を確かめる
KOE 多言語音声ベンチマーク(80文の採点・音声・原本141本・スペクトル)
採点データの控え(JSON・全80サンプルのNISQA/CER/帯域/高域と生成条件)
音声はすべて koe.live/bench/audio/ に置いてあります。比較用(-23 LUFS 正規化)と、元の出力そのまま(raw_koe_* / raw_el_*)の両方です。採点に使ったファイルと公開ファイルの MD5 は一致を確認済みです。
待ち時間の計測は 2026-11-04 JST、本番 https://koe.live/api/speak に対して行いました。レスポンスヘッダ X-Koe-Timing の内訳(gate/pre/r2/up/total)をそのまま記録しています。ElevenLabs 側の音声は 2026-11-01 に生成したものです。
この計測を、毎日やる人を探しています
この記事に書いたようなことを、日々やる仕事です。数字を測り、おかしい数字を見つけ、原因を切り分け、直して、また測る。KOE の運営スタッフを募集しています。
| 職種 | KOE 運営スタッフ(サービス運営・サポート・改善) |
| 雇用形態 | 業務委託(まず3か月の試行)/正社員は双方合意のうえで相談 |
| 勤務地 | リモート(日本国内)+ 週1〜2回、自社民泊施設・NOT A HOTEL / NOTA のレンタルスペース・提携カフェ等で集まる(場所は選定中) |
| 勤務時間 | フレックスタイム。週20時間から応相談。平日11:00〜16:00のうち、打ち合わせができる2時間程度の重なりだけお願いします |
| 報酬 | 経験・稼働に応じて応相談(月額または時間単価)。レンジは応募前にメールでお伝えします |
| 必須 | 公開する前に一次情報で確かめる習慣。問い合わせとドキュメントを扱うため日本語。音声プロダクトの経験は不問です |
| 歓迎 | Cloudflare Workers・Python・音声合成APIのいずれかを触ったことがある方。カスタマーサポートや運営を回した経験がある方 |
| 選考 | 書類(メール)→ オンライン面談1回 → 小さな実務課題(1〜2時間程度)→ 条件提示 |
応募はメールで3点だけです。①これまで何をしてきたか(200字程度)②KOE を触ってみて気づいたこと(良い点でも直した方がいい点でも)③週に何時間くらい関われそうか。
報酬額・募集人数・応募締切は最終確定前です。応募前に必ず最新の条件をご確認ください。応募の情報は採用目的にのみ使用します。