Spaces:
Running
Running
Download scripts/test_debug_bundle.py from jasonmdong/notepilot: direct link, hf CLI and curl.
- Browser
- Download file 2.53 kB
-
https://huggingface.co/spaces/jasonmdong/notepilot/resolve/main/scripts/test_debug_bundle.py
- Command line
-
hf download hf://spaces/jasonmdong/notepilot/scripts/test_debug_bundle.py
-
curl -L -o test_debug_bundle.py https://huggingface.co/spaces/jasonmdong/notepilot/resolve/main/scripts/test_debug_bundle.py
2.53 kB
| #!/usr/bin/env python3 | |
| """Regression: a portable bundle validates and reconstructs its WebM bytes.""" | |
| import base64 | |
| import json | |
| import subprocess | |
| import sys | |
| import tempfile | |
| from pathlib import Path | |
| root = Path(__file__).resolve().parents[1] | |
| webm = b'\x1a\x45\xdf\xa3\x93\x42\x82\x84webm' # minimal EBML signature for bundle transport validation | |
| bundle = { | |
| 'version': 2, 'schema': 'notepilot.debug-bundle/v2', 'meta': { | |
| 'score': 'test', 'inputMode': 'mic', 'userAgent': 'test', | |
| 'scoreEvents': {'solo': [{'scoreEventId': 0}], 'accompaniment': []}, | |
| 'follower': {'options': {'test': True}}, 'micEngine': 'follower', 'latency': {'effectiveMs': 1}, | |
| }, | |
| 'clocks': {'master': 'sessionTimeMs'}, | |
| 'schemaDocumentation': {'sal': 'test'}, | |
| 'events': [ | |
| {'type': 'session.start', 'sessionTimeMs': 0}, | |
| {'type': 'mic.gateCalibration', 'sessionTimeMs': 1}, | |
| {'type': 'blind.pitch', 'sessionTimeMs': 2, 'blindPitch': {'valid': True}}, | |
| {'type': 'tracker', 'sessionTimeMs': 3}, | |
| {'type': 'mic.gate', 'sessionTimeMs': 3.5, 'state': 'open'}, | |
| {'type': 'follow.frame', 'sessionTimeMs': 4, 'db': -20}, | |
| ], 'diagnostics': {'timeline': [{'tMs': 4, 'db': -20, 'gateOpen': True, 'onsetValue': 1, 'blindMidi': 60, 'expectedMidi': 60, 'posterior': .9, 'wrongProbability': .01, 'noiseFloorDb': -40, 'committedPosterior': .8, 'evidenceNats': 2, 'attack': True}]}, | |
| 'analysis': {'attempts': [], 'falseAdvances': [], 'autoSkips': [], 'resyncs': [], 'hostRejections': [], 'missedAttempts': []}, | |
| 'audio': {'microphone': {'codec': 'audio/webm;codecs=opus', 'sampleRate': 48000, 'channels': 1, 'durationMs': 4, 'captureStartSessionMs': 0, 'captureEndSessionMs': 4, 'bytes': len(webm), 'base64': base64.b64encode(webm).decode()}, | |
| 'digitalOutput': {'kind': 'EXACT_EVENT_MANIFEST', 'events': 'audio.note', 'captured': False}}, | |
| } | |
| with tempfile.TemporaryDirectory() as td: | |
| path = Path(td) / 'bundle.json'; path.write_text(json.dumps(bundle)) | |
| subprocess.run([sys.executable, root / 'scripts/validate_debug_bundle.py', path], check=True) | |
| out = Path(td) / 'audio' | |
| subprocess.run([sys.executable, root / 'scripts/extract_debug_audio.py', path, out], check=True) | |
| assert (out / 'mic.webm').read_bytes() == webm | |
| plots = Path(td) / 'plots' | |
| subprocess.run([sys.executable, root / 'scripts/plot_debug_bundle.py', path, plots], check=True) | |
| assert len(list(plots.glob('*.svg'))) == 4 | |
| print('PASS: debug bundle validation and audio extraction') | |