Retain isolated number retry evidence and Korean voice register

This commit is contained in:
NINI
2026-10-05 01:24:19 +09:00
parent 1572ddda19
commit 906b467510
5 changed files with 124 additions and 30 deletions
+6 -4
View File
@@ -147,17 +147,18 @@ def reusable_entries(root, catalog, profile):
return result
def generate(catalog, profile, root, ids=None, synthesize=None, environment=None):
def generate(catalog, profile, root, ids=None, synthesize=None, environment=None, regenerate=False):
validate_inputs(catalog, profile)
selected = select_clips(catalog, ids)
root = Path(root)
previous = reusable_entries(root, catalog, profile)
previous = {} if regenerate else reusable_entries(root, catalog, profile)
run_id = datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%S%fZ_') + uuid.uuid4().hex[:8]
run_dir = root / 'generated' / run_id
run_dir.mkdir(parents=True)
manifest = {'schemaVersion': 1, 'runId': run_id, 'createdUtc': datetime.now(timezone.utc).isoformat(),
'modelRevision': profile['modelRevision'], 'catalogHash': digest(catalog),
'profileHash': digest(profile), 'scope': 'selected' if ids else 'all',
'regenerateRequested': regenerate,
'requestedIds': [c['id'] for c in selected], 'environment': environment or {}, 'clips': []}
try:
for clip in selected:
@@ -236,6 +237,7 @@ def main():
parser.add_argument('--ids', help='comma separated IDs; absent means all catalog clips')
parser.add_argument('--validate-only', action='store_true')
parser.add_argument('--manifest', type=Path)
parser.add_argument('--regenerate', action='store_true', help='create a new take for selected IDs, preserving original runs')
args = parser.parse_args()
ids = args.ids.split(',') if args.ids else None
try:
@@ -250,8 +252,8 @@ def main():
else:
selected = select_clips(catalog, ids)
reusable = reusable_entries(root, catalog, profile)
synthesize, environment = (None, {'modelLoad': 'not_needed'}) if all(c['id'] in reusable for c in selected) else load_synthesizer(profile)
manifest = generate(catalog, profile, root, ids, synthesize, environment)
synthesize, environment = (None, {'modelLoad': 'not_needed'}) if not args.regenerate and all(c['id'] in reusable for c in selected) else load_synthesizer(profile)
manifest = generate(catalog, profile, root, ids, synthesize, environment, args.regenerate)
print('Manifest: ' + str(root / 'generated' / manifest['runId'] / 'manifest.json'))
errors = validate_manifest(manifest, catalog, profile, root, ids)
print(json.dumps({'validationScope': 'selected' if ids else 'all_required', 'ids': ids,