observe/transcribe: split parakeet into platform dispatcher + linux arm
Renames the Mac-only parakeet backend to _parakeet_coreml and introduces
_parakeet_nemo for Linux x86_64 (nvidia/parakeet-tdt-0.6b-v{2,3} via
nemo_toolkit[asr] + torch). The public observe.transcribe.parakeet
module becomes a thin dispatcher that routes on sys.platform +
platform.machine(); BACKEND_REGISTRY and callers are unchanged.
NeMo does not expose per-word confidence on the timestamps=True path,
so the Linux arm emits probability=1.0 as a sentinel and reports
per_word_confidence=False in model metadata.
make install now branches by OS: Darwin runs make parakeet-helper, Linux
runs uv sync --extra parakeet-nemo. Either failure mode prints
"parakeet backend unavailable: ..." to stderr and exits 0 so the rest
of the install completes.
Test-env fix included: conftest.py's cv2 and sklearn stubs now carry a
ModuleSpec, because pulling transformers into the venv via the NeMo
extra causes importlib.util.find_spec(...) probes that crash on stub
modules with __spec__ is None. The settings/transcribe API baseline is
refreshed for the new parakeet metadata.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>