Skip to content

fix: ゼロショットTTSのプロンプト音声キャッシュ問題を修正#2

Merged
ayutaz merged 1 commit intomainfrom
fix/audio-prefix-issue
Jan 15, 2026
Merged

fix: ゼロショットTTSのプロンプト音声キャッシュ問題を修正#2
ayutaz merged 1 commit intomainfrom
fix/audio-prefix-issue

Conversation

@ayutaz
Copy link
Copy Markdown
Owner

@ayutaz ayutaz commented Jan 15, 2026

概要

  • TTSDemoでプロンプト音声を毎回再読み込みするように修正(キャッシュが空/無効になる問題を解決)
  • 抽出した音声データのバリデーションを追加

問題

ゼロショットTTSがボイスクローニングなしの基本合成にフォールバックしていた。

症状:

  • ログに [Flow] Tokens: promptLen=0 と表示(ゼロショットでは0以外であるべき)
  • 出力音声が参照音声の声をクローンしていない

原因

_promptAudio がTTSDemoでキャッシュされていたが、Unity Editorのドメインリロード等の条件下でキャッシュされた配列が空または無効になることがあった。その結果、SynthesizeWithPromptpromptAudio16k == null || promptAudio16k.Length == 0 のチェックにより Synthesize にフォールバックしていた。

変更内容

  1. TTSDemo.cs: キャッシュを使わず、毎回AudioClipからプロンプト音声を再読み込み
  2. TTSDemo.cs: 抽出した音声が有効かどうかのバリデーションを追加

テスト

  • ゼロショットTTSが promptLen > 0 で正しく動作することを確認
  • Python ONNX版との出力を比較(両方とも正常な音声を生成)
  • 全120テストが合格

@ayutaz ayutaz changed the title fix: Resolve zero-shot TTS prompt audio caching issue fix: ゼロショットTTSのプロンプト音声キャッシュ問題を修正 Jan 15, 2026
- Fix TTSDemo to always reload prompt audio instead of using cached data
  that could be empty/invalid after Editor domain reload
- Add validation for extracted prompt audio

The issue was that _promptAudio was being cached but could become
invalid, causing SynthesizeWithPrompt to fall back to basic Synthesize
(without voice cloning).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@ayutaz ayutaz force-pushed the fix/audio-prefix-issue branch from 64111b1 to 2d812e1 Compare January 15, 2026 08:05
@ayutaz ayutaz merged commit 1446fb0 into main Jan 15, 2026
2 checks passed
@ayutaz ayutaz deleted the fix/audio-prefix-issue branch January 15, 2026 08:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant