Spaces:
Running on Zero
Running on Zero
| import json | |
| from pathlib import Path | |
| import wave | |
| from scripts import run_local_asr_evidence | |
| def _provider_payload(path: Path) -> Path: | |
| payload = { | |
| "transcript": "Local Parakeet transcript says the patient has trouble breathing.", | |
| "suggested_fields": [ | |
| { | |
| "field": "symptoms", | |
| "draft_value": "trouble breathing", | |
| "source_snippet": "trouble breathing", | |
| } | |
| ], | |
| "missing_or_unclear_fields": ["vitals"], | |
| "provisional_red_flag_mentions": ["trouble breathing"], | |
| } | |
| path.write_text(json.dumps(payload), encoding="utf-8") | |
| return path | |
| def test_asr_evidence_without_provider_payload_records_artifact_only(tmp_path: Path, monkeypatch) -> None: | |
| artifact_path = tmp_path / "parakeet-rnnt-1.1b.nemo" | |
| artifact_path.write_bytes(b"fake parakeet") | |
| monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_PATH", artifact_path) | |
| monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_BYTES", len(b"fake parakeet")) | |
| monkeypatch.setattr( | |
| run_local_asr_evidence, | |
| "PARAKEET_NEMO_SHA256", | |
| run_local_asr_evidence._sha256(artifact_path), | |
| ) | |
| summary = run_local_asr_evidence.run_evidence(output_dir=tmp_path / "evidence") | |
| assert summary["status"] == "artifact_present_provider_payload_required" | |
| assert summary["counts_as_local_asr_artifact"] is True | |
| assert summary["counts_as_local_asr_proof"] is False | |
| assert (tmp_path / "evidence" / "artifact_metadata.json").exists() | |
| assert summary["asr_evidence_manifest_path"] == str(tmp_path / "evidence" / "asr_evidence_manifest.json") | |
| manifest = json.loads((tmp_path / "evidence" / "asr_evidence_manifest.json").read_text(encoding="utf-8")) | |
| assert manifest["proof_flags"]["counts_as_local_asr_artifact"] is True | |
| assert manifest["proof_flags"]["counts_as_local_asr_proof"] is False | |
| assert manifest["provider_payload"] is None | |
| def test_asr_evidence_provider_payload_can_pass_gated_draft_checks(tmp_path: Path, monkeypatch) -> None: | |
| artifact_path = tmp_path / "parakeet-rnnt-1.1b.nemo" | |
| artifact_path.write_bytes(b"fake parakeet") | |
| monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_PATH", artifact_path) | |
| monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_BYTES", len(b"fake parakeet")) | |
| monkeypatch.setattr( | |
| run_local_asr_evidence, | |
| "PARAKEET_NEMO_SHA256", | |
| run_local_asr_evidence._sha256(artifact_path), | |
| ) | |
| payload_path = _provider_payload(tmp_path / "provider.json") | |
| summary = run_local_asr_evidence.run_evidence( | |
| output_dir=tmp_path / "evidence", | |
| provider_payload_path=payload_path, | |
| provider_note="local adapter smoke", | |
| ) | |
| assert summary["status"] == "local_asr_proof_passed" | |
| assert summary["counts_as_local_asr_artifact"] is True | |
| assert summary["counts_as_local_asr_proof"] is True | |
| draft = json.loads((tmp_path / "evidence" / "audio_draft.json").read_text(encoding="utf-8")) | |
| assert draft["transcript_source"] == "local_parakeet_asr_provider" | |
| assert draft["raw_audio_stored"] is False | |
| manifest = json.loads((tmp_path / "evidence" / "asr_evidence_manifest.json").read_text(encoding="utf-8")) | |
| assert manifest["evidence_version"] == 1 | |
| assert manifest["provider_payload"]["sha256"] == run_local_asr_evidence._sha256(payload_path) | |
| assert manifest["draft_summary"]["transcript_hash"] | |
| assert manifest["draft_summary"]["suggested_field_count"] == 1 | |
| assert manifest["draft_checks"]["counts_as_local_asr_proof"] is True | |
| assert manifest["configured_route"]["audio_backend"] == "parakeet_nemo" | |
| assert manifest["configured_route"]["model_stack"] == "local_4b_parakeet" | |
| assert manifest["raw_audio_handling"]["raw_audio_copied_to_evidence"] is False | |
| assert manifest["raw_audio_handling"]["raw_audio_stored"] is False | |
| def test_asr_evidence_audio_metadata_hashes_without_copying_audio(tmp_path: Path, monkeypatch) -> None: | |
| artifact_path = tmp_path / "parakeet-rnnt-1.1b.nemo" | |
| artifact_path.write_bytes(b"fake parakeet") | |
| monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_PATH", artifact_path) | |
| monkeypatch.setattr(run_local_asr_evidence, "PARAKEET_NEMO_BYTES", len(b"fake parakeet")) | |
| monkeypatch.setattr( | |
| run_local_asr_evidence, | |
| "PARAKEET_NEMO_SHA256", | |
| run_local_asr_evidence._sha256(artifact_path), | |
| ) | |
| audio_path = tmp_path / "source.wav" | |
| with wave.open(str(audio_path), "wb") as wav: | |
| wav.setnchannels(1) | |
| wav.setsampwidth(2) | |
| wav.setframerate(8000) | |
| wav.writeframes(b"\0\0" * 8000) | |
| summary = run_local_asr_evidence.run_evidence(output_dir=tmp_path / "evidence", audio_path=audio_path) | |
| assert summary["counts_as_local_asr_proof"] is False | |
| audio_metadata = json.loads((tmp_path / "evidence" / "audio_metadata.json").read_text(encoding="utf-8")) | |
| assert audio_metadata["duration_seconds"] == 1.0 | |
| assert audio_metadata["raw_audio_copied_to_evidence"] is False | |
| manifest = json.loads((tmp_path / "evidence" / "asr_evidence_manifest.json").read_text(encoding="utf-8")) | |
| assert manifest["raw_audio_handling"]["audio_metadata_sha256"] == audio_metadata["sha256"] | |
| assert manifest["raw_audio_handling"]["raw_audio_copied_to_evidence"] is False | |