#音声合成#TTS#機械学習#MLOps

音声モデルを量産して分かった18のこと — 拡散TTSの声設計から、学習コーパス製造、品質ゲートの落とし穴まで


キャプション1行から声を設計し、学習コーパスを自動で作り、役割専用ボイス12本(ナレーター/カウンセラー/営業/プレゼンター/オペレーター/MC の男女)を全数検収に通すまでの記録です。約1か月の実作業で踏んだ失敗を、18本の記事に分けて書きました。この記事はその目次です。

先に結論

声の設計と、声の製造と、声の運用は、別の技術で別の失敗をする。

  • 設計は拡散TTS。キャプションと乱数種で声が決まり、完全に再現する
  • 製造はコーパス生成が本体。品質ゲートの設計が、そのまま声の品質になる
  • 運用は軽量な学習済みモデル。拡散TTSは会話には遅すぎる(同一GPUで2.5倍)

そして最大の教訓は一点に尽きます。品質ゲートは「あること」と「効いていること」が別。この18本のうち6本は、ゲートが存在したのに効いていなかった話です。

読む順

設計 → 製造 → 検査 → 運用 の順に並べています。上から読むと、1本の声が生まれて工場に乗るまでを辿れます。

第1章 設計 — 声をどう決めるか

  1. 音質で選んだTTSが、会話には遅すぎた RTF実測2.5倍差。「声の設計は拡散TTS、喋らせるのは学習済みモデル」という二段構えに落ち着くまで。
  2. 声をガチャで引く キャプション+乱数種で声は決まる。設計値を台帳に残せば、モデルを失っても声は焼き直せる。
  3. 「ナレーターっぽい声」を24候補から機械に選ばせる 全候補を聴くのは続かない。話速・抑揚・安定性を自動計測して、上位だけ聴く。指標の限界で男性候補が全滅した話も。

第2章 製造 — コーパスの品質が、そのまま声になる

  1. 品質ゲートを厳しくするほど、棒読みが生き残る 感情つきコーパスが全部棒読みになった原因は、品質ゲートそのものだった。このシリーズの中心にある話
  2. 学習後に話速は変えられない 語尾の癖も話速もコーパスに焼き付く。合成時のパラメータでは戻せない。
  3. 生成するたび「録音場所」が変わるTTS 同じモデル・同じ話者でも、クリップごとに周波数特性が違う。揃えないとスタイル切り替えで音質が飛ぶ。
  4. クリップ1本の粗さが、スタイル全体を嗄れさせる 5本中1本が粗いと、そのスタイル全部が嗄れる。平均への希釈は効かない。

第3章 検査 — ゲートは「あること」と「効いていること」が別

  1. AIが「こんにちわー」と伸ばす癖は、どこで身についたのか 検証がかな正規化で長音を捨てるため、原理的に検出できなかった欠陥。
  2. 「少々」が「しょも」になる モデルもパラメータも正常で、入力テキストだけが壊れていた。記号の除去リストが「々」「〆」「髙」を落としていた。
  3. ハルシネーション対策のコードが、ハルシネーションの時だけ動かなかった 1行のバグで、ガードが「必要な場面でだけ無効」になっていた。
  4. 品質ゲートが許した「3文字」が、モデルの口癖になった ゲートを通り抜けたサイズと、モデルが再現した音のサイズが一致していた。
  5. 治せる欠陥で候補を落としていた その指標は、製品の性質を測っているのか、工程の状態を測っているのか。
  6. 文字起こしでは見つからない欠陥がある STTだけの検査は、無音を挟んだ0.1秒の付加音を全部見落とす。波形包絡で獲る。

第4章 運用 — 工場として回す

  1. 70分かけた学習素材が、ネットワークの一瞬の瞬きで消えた 接続断1回で205本がやり直し。リトライの無い箇所の見つけ方と、冪等なレジューム設計。
  2. “ja” を “JP” と書いて喃語モデルができるまで 言語コードの大文字小文字で喃語モデルが完走する。踏んだ罠のカタログ。
  3. 登録経路が4つ、管理画面が0 資産カタログが管理不能になるまで。棚卸しAPIを作って初めて全体が見えた。
  4. デプロイのたびに互いの成果を消していた 並行する2つの作業系が、順番に相手の変更を本番から消した。ブランチ確認では防げず、稼働Podとのsha256突合で初めて止まった。
  5. 測れていないものを閾値で追い込むと、必ず失敗する 指標の0件を「対象が無い証拠」と読み、閾値を絞り続ける。そもそも観測できていないことに最後まで気づかない。

時間がない人向けの3本

  • 品質ゲートの設計に興味があるなら → 4番(選択バイアス)→ 11番(3文字)→ 13番(STTで見えない欠陥)。この3本で「ゲートがあるのに効かない」の型が一通り揃います。
  • これから音声モデルを学習させるなら → 15番(罠カタログ)→ 9番(入力が壊れる)→ 5番(話体はコーパスに焼き付く)。
  • MLOps・製造の話として読むなら → 12番(工程の欠陥と製品の性質)→ 14番(冪等なレジューム)→ 18番(測れていないものを追わない)。

この18本に共通していること

失敗の大半は、モデルでもGPUでもなく、検査の設計で起きていました。ゲートが緩すぎたのではなく、ゲートが測っていないものが製品に焼き付く。しかも音声は、テキストと違って「通ってしまった欠陥」が耳で聞くまで分かりません。

だから最終的に効いたのは、賢いモデルを探すことではなく、何を測っていないかを一つずつ潰すことでした。

知見の元になった作業ノートは 拡散TTSから実用ボイスを量産する製造パイプライン にまとめてあります。

← 記事一覧へ