Release NVIDIA WakeWord Trainer v26

This commit is contained in:
MasterPhooey
2026-08-04 06:25:09 -05:00
parent bd71567a4f
commit cc20fa3e67
5 changed files with 20 additions and 5 deletions

View File

@@ -1 +1 @@
25 26

View File

@@ -1,2 +1 @@
- Prevented unreadable audio files from freezing sample preparation by adding a bounded FFmpeg watchdog, safe cleanup, and visible normalization progress. - Restored MOSS-TTS-Nano generation with the current voice-cloning API so all four providers contribute to the final training corpus.
- Kept primary and guided STT results visible after captures are automatically sorted into positive or negative training samples.

View File

@@ -44,7 +44,7 @@ from tts_config import ( # noqa: E402
) )
GENERATOR_VERSION = "modern-tts-v15-four-provider-direct-corpus-safe-limits" GENERATOR_VERSION = "modern-tts-v16-four-provider-direct-corpus-safe-limits"
VOICE_BANK_VERSION = "modern-tts-voice-bank-v1-native-random-qualified-single-utterance" VOICE_BANK_VERSION = "modern-tts-voice-bank-v1-native-random-qualified-single-utterance"
COMPATIBLE_VOICE_BANK_VERSIONS = { COMPATIBLE_VOICE_BANK_VERSIONS = {
VOICE_BANK_VERSION, VOICE_BANK_VERSION,

View File

@@ -69,7 +69,6 @@ def main() -> int:
text=str(item["text"]), text=str(item["text"]),
output_audio_path=str(output_path), output_audio_path=str(output_path),
mode="voice_clone", mode="voice_clone",
prompt_text=str(item["ref_text"]),
prompt_audio_path=str(item["ref_audio"]), prompt_audio_path=str(item["ref_audio"]),
reference_audio_path=None, reference_audio_path=None,
text_tokenizer_path=None, text_tokenizer_path=None,

View File

@@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
import argparse import argparse
import ast
import importlib.util import importlib.util
import json import json
import math import math
@@ -70,6 +71,22 @@ class ModernTtsTests(unittest.TestCase):
["--position_temperature", "5.0", "--class_temperature", "0.0"], ["--position_temperature", "5.0", "--class_temperature", "0.0"],
) )
def test_moss_voice_clone_uses_audio_without_disallowed_prompt_text(self) -> None:
worker_path = REPO_ROOT / "cli" / "tts_moss_worker.py"
tree = ast.parse(worker_path.read_text(encoding="utf-8"))
inference_calls = [
node
for node in ast.walk(tree)
if isinstance(node, ast.Call)
and isinstance(node.func, ast.Attribute)
and node.func.attr == "inference"
]
self.assertEqual(len(inference_calls), 1)
keywords = {keyword.arg for keyword in inference_calls[0].keywords}
self.assertIn("prompt_audio_path", keywords)
self.assertNotIn("prompt_text", keywords)
def test_omnivoice_uses_a_hidden_stable_prompt_before_short_clone(self) -> None: def test_omnivoice_uses_a_hidden_stable_prompt_before_short_clone(self) -> None:
with tempfile.TemporaryDirectory() as temp_dir: with tempfile.TemporaryDirectory() as temp_dir:
data_dir = Path(temp_dir) data_dir = Path(temp_dir)