[BugFix] Fix MOSS-TTS codec v1/v2 detection and align vendored tokenizer with upstream (#5635)

Signed-off-by: Wallbreazzz <110282866+Wallbreazzz@users.noreply.github.com>
This commit is contained in:
Wallbreazzz authored and GitHub committed 2026-08-05 08:24:32 +00:00
1 parent ae7bee0c43
commit 740cb35a59
2 files changed
+18 -14

No files matched your search

@@ -354,12 +354,11 @@ class _ProjectedTransformer(nn.Module):
) -> None:
super().__init__()
self.downsample_ratio: int = 1
# Upstream always materializes a learned Linear here regardless of
# whether input_dimension == d_model — substituting Identity when
# the dims happen to match silently drops a trained projection.
self.in_proj = nn.Linear(input_dimension, d_model, bias=False)
self.in_proj = nn.Linear(input_dimension, d_model, bias=False) if input_dimension != d_model else nn.Identity()
self.transformer = _Transformer(d_model=d_model, **kwargs)
self.out_proj = nn.Linear(d_model, output_dimension, bias=False)
self.out_proj = (
nn.Linear(d_model, output_dimension, bias=False) if output_dimension != d_model else nn.Identity()
)
def forward(self, x: torch.Tensor, lengths: torch.Tensor) -> tuple[torch.Tensor, torch.Tensor]:
x = self.in_proj(x.transpose(1, 2)) # (B, D, T) → (B, T, d_model)
@@ -793,18 +793,23 @@ class MossTTSCodecDecoder(nn.Module):
return {f"_codec.{name}" for name, _ in codec.named_parameters()}
def _build_codec(self, codec_path: str) -> tuple[Any, nn.Module]:
try:
codec_cfg = MossAudioTokenizerV2Config.from_pretrained(codec_path)
codec = MossAudioTokenizerV2Model(codec_cfg)
logger.info("Using vendored MOSS Audio Tokenizer v2 classes from %s", codec_path)
return codec_cfg, codec
except Exception:
logger.exception(
"Failed to instantiate vendored MOSS Audio Tokenizer v2; falling back to legacy vendored codec."
)
config_dict, _ = MossAudioTokenizerV2Config.get_config_dict(codec_path)
is_v2 = config_dict.get("number_channels", 1) >= 2
if is_v2:
try:
codec_cfg = MossAudioTokenizerV2Config.from_pretrained(codec_path)
codec = MossAudioTokenizerV2Model(codec_cfg)
logger.info("Using vendored MOSS Audio Tokenizer v2 classes from %s", codec_path)
return codec_cfg, codec
except Exception:
logger.exception(
"Failed to instantiate vendored MOSS Audio Tokenizer v2; falling back to legacy vendored codec."
)
codec_cfg = MossAudioTokenizerConfig.from_pretrained(codec_path)
codec = MossAudioTokenizerModel(codec_cfg)
logger.info("Using vendored MOSS Audio Tokenizer v1 classes from %s", codec_path)
return codec_cfg, codec
def _configure_decoder_cudagraph(self, device: torch.device) -> None: