music3lab / scripts /run_audio_continuation.py
coolpoodle's picture
code and training scripts
90884df verified
Raw
History Blame Contribute Delete
3.24 kB
#!/usr/bin/env python3
"""Run the bounded arbitrary-WAV continuous-latent continuation experiment."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
from typing import Sequence
from music3lab.editing.audio_continuation_runner import (
load_audio_continuation_config,
run_audio_continuation,
)
def _parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description=(
"Evaluate frozen continuous encoders for local arbitrary-WAV "
"continuation; this is not native AR/RVQ continuation."
)
)
commands = parser.add_subparsers(dest="command", required=True)
check = commands.add_parser("check-config")
check.add_argument("--config", type=Path, required=True)
run = commands.add_parser("run")
run.add_argument("--config", type=Path, required=True)
run.add_argument("--flow-config", type=Path, required=True)
run.add_argument("--audio", type=Path, required=True)
run.add_argument("--baseline-checkpoint", type=Path, required=True)
run.add_argument("--specialist-checkpoint", type=Path, required=True)
run.add_argument("--snapshot", type=Path, required=True)
run.add_argument("--base-manifest", type=Path, required=True)
run.add_argument("--diffusers-root", type=Path, required=True)
run.add_argument("--output-root", type=Path, required=True)
return parser
def main(argv: Sequence[str] | None = None) -> int:
arguments = _parser().parse_args(argv)
if arguments.command == "check-config":
config, file_sha256 = load_audio_continuation_config(arguments.config)
result = {
"schema_version": config.schema_version,
"config_file_sha256": file_sha256,
"capability": config.capability,
"specialist_champion_eligible": config.specialist_champion_eligible,
"native_tokens_used": False,
}
elif arguments.command == "run":
metrics = run_audio_continuation(
config_path=arguments.config,
flow_config_path=arguments.flow_config,
source_audio_path=arguments.audio,
baseline_checkpoint=arguments.baseline_checkpoint,
specialist_checkpoint=arguments.specialist_checkpoint,
snapshot=arguments.snapshot,
base_manifest=arguments.base_manifest,
diffusers_root=arguments.diffusers_root,
output_root=arguments.output_root,
)
result = {
"output_root": str(arguments.output_root.absolute()),
"status": metrics["status"],
"frozen_af2ed70_gate": metrics["encoders"]["frozen_af2ed70"][
"gate"
]["passes"],
"rejected_external_specialist_gate": metrics["encoders"][
"rejected_external_specialist"
]["gate"]["passes"],
"specialist_promoted": metrics["specialist_promoted"],
}
else:
raise AssertionError("unreachable command")
print(json.dumps(result, sort_keys=True, separators=(",", ":")))
return 0 if result.get("status", "FUNCTIONAL_PASS") == "FUNCTIONAL_PASS" else 1
if __name__ == "__main__":
raise SystemExit(main())