
Article
Qwen3-TTSとGemini TTSで九九を読ませたら, 結局Appleのsayが一番安定した
日本の九九を音声ファイルにしたかった。
やりたかったのは, 「いんいちがいち」「くくはちじゅういち」みたいな昔ながらの読み方を, 1つずつきれいに読み上げた音声を81個ぶん用意することだ。
最初は「今どきならAI TTSのほうが自然でしょ」と思って, Qwen3-TTS と Gemini TTS を試した。でも結果は意外で, 最終的に採用したのはmacOS標準の say コマンドだった。
なんというか, いちばん未来っぽくないやつが勝った。
やりたかったこと
用途としてはかなりシンプルだ。
- 九九の81パターンを個別音声にしたい
- 読み方は日本の慣用的な言い回しに寄せたい
- 子どもが聞いて違和感の少ない発音にしたい
- できれば自動生成でまとめて作りたい
普通の文章読み上げなら, いまのTTSはだいぶ優秀だ。だから最初は楽勝だと思っていた。
でも九九は, 普通の文章じゃなかった。
1. Qwen3-TTSを試した
最初に試したのはローカル実行の Qwen3-TTS。
- モデル:
mlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-bf16 - 話者:
Ono_Anna - 実行環境: Apple M4 Max +
mlx-audio
ローカルで回せるのはかなり魅力だったし, うまくいけば一番自由度が高いはずだった。
結果
正直, 惜しいところまでは行く。でも安定しない。
- instruct なしだと, 咳っぽいノイズや不自然な間が混じる
- 全体に異様にゆっくりになることがある
- 「九九の暗唱。はっきりと標準的な日本語で。」のような instruct を入れると多少マシ
- ただし, 訛りっぽさや発音の揺れは残る
- テキスト側を「いん いち が いち」とスペース区切りにしても改善は限定的
つまり, 一発だけそれっぽく読めることはあるけど, 81個を安定生成するにはつらい という感じだった。
この手の用途で欲しいのは, 芸術的な表現力より再現性だ。そこが足りなかった。
2. Gemini TTSも試した
次にクラウド側として Gemini TTS を試した。
- モデル:
gemini-2.5-flash-preview-tts - モデル:
gemini-2.5-pro-preview-tts - 話者:
Kore
こちらは「クラウドなら学習も強いだろうし, 日本語ももっと安定するかも」と期待していた。
結果
これも意外と厳しかった。
- 短いひらがな列だと生成自体が失敗しやすい
finish_reason: OTHERで落ちることがある- 「くにじゅうはち」みたいな特定フレーズは, 工夫しても生成できないケースがあった
- Proにしても状況は大きく変わらない
- 成功しても, 九九として気持ちよく聞けるかというと微妙
こっちは品質以前に, そもそも通らないフレーズがある のが痛かった。
81個を機械的に揃えたい用途で, 数個だけ頑固に落ちるのはかなり困る。
3. 最後にAppleのsayを試した
そこで試したのが, ものすごくベーシックな say コマンドだった。
- 音声:
Kyoko - ベース:
AVSpeechSynthesizer - いわゆるルールベース寄りの標準TTS
これが, いちばん派手さはない。でもいちばん壊れなかった。
良かった点
- 毎回同じ読みで安定する
- 変なノイズが混ざらない
- 破綻しない
- アプリからリアルタイムに呼んでも成立する
- 事前に81ファイルを全部生成しなくても運用できる
もちろん, 音としてはぶっきらぼうだ。AIっぽい自然さや情感は薄い。
でも九九に必要なのは, そこじゃない。
変にうまいことより, 間違えず, ぶれず, 毎回同じことのほうが大事だった。
この条件では, say が普通に勝った。
なぜAI TTSで九九が難しいのか
今回ちょっと面白かったのは, 「普通の日本語読み上げなら強いモデル」が, 九九になると急に頼りなくなったことだ。
理由はたぶんいくつかある。
1. 九九の読みは, そもそも普通の語彙ではない
「いんいちがいち」「しちは」「くくはちじゅういち」みたいな表現は, 日常会話の文章としてほぼ出てこない。
TTSモデルからすると,
- どこで区切るのか
- どこにアクセントを置くのか
- 何の文脈で発話しているのか
このあたりを推定しにくい。
2. 会話ではなく, ほぼ詠唱に近い
九九って, 意味を伝える会話ではなく, 決まったリズムで唱えるもの だ。
自然会話の読み上げに最適化されたTTSは, この「等時的で反復的な詠唱パターン」がむしろ苦手なのかもしれない。
3. 学習データに十分入っていない
これはかなりありそうだ。
英語のナレーションや日常会話は大量にあっても, 日本の九九を81パターンきれいに唱える音声データなんて, たぶんほとんど入っていない。
そりゃ強くない。
4. テキストが短すぎる
6文字とか8文字のひらがな列だけ渡されても, モデルからすると文脈が薄すぎる。
普通の文章なら前後から意味を補えるけれど, 九九はそれがない。短いのに特殊, という地味に厄介なタスクだった。
今回の結論
今回の結論はかなり明快だ。
Qwen3-TTSはローカルで試せて面白いが, 九九用途では安定性が足りないGemini TTSはクラウドでも, 短い特殊フレーズで失敗しやすかった- Appleの
sayは地味だけど, 九九にはいちばん実用的だった
AI TTSは「自然な読み上げ」が求められる場面ではたしかに強い。
でも今回みたいに,
- 決まり文句
- 特殊な読み
- リズム重視
- 全件同品質で揃えたい
みたいな条件になると, ルールベース寄りの古典的な仕組みのほうが強いことがある。
新しいものが必ず勝つわけじゃない。こういうの, けっこう好きだ。
環境メモ
- Python 3.12 + venv
mlx-audio0.4.2google-genaiSDK- 検証プロジェクト:
/Users/ogi/Develop/Qwen3-TTS-Test/


