Untrack the 15.7 MB reference chain; keep the matrix and fix RESTORE.md
Same reasoning as the lab renders: the WAVs are copies of files that live in ~/Documents/Audacity4/ and are mirrored at ~/.umbra/library/author_voice_matrix/20261009T191636Z/. Git does not need a third copy to be safe. What stays is the part that is not duplicated anywhere else in a form git can restore: author_v2.pt and author_v1.pt, 62 KB, the actual voice identity. manifest.json keeps a SHA-256 for each WAV, so any copy can be verified against what was captured rather than trusted. RESTORE.md was wrong after this change and is fixed. It listed the WAVs as files of the backup and told you to `cp BDMurphy_Voice_NOBG_v2.wav` from that directory, which no longer works. It now states the WAVs are untracked and where they actually are, and adds the verified matrix->WAV decode as a first-class restore path, because that is the point: the WAV is derived from the matrix, not a prerequisite for it. Note the asymmetry this leaves in place, deliberately. Loss of the matrix means losing the captured voice, and no WAV in existence could reconstruct the exact one. Loss of the WAVs costs nothing, because they can be rebuilt from the matrix. So the durable, unreproducible artifact is the thing that stays tracked.
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,8 +12,21 @@ the voice never drifts between takes.
|
||||
|---|---|
|
||||
| `author_v2.pt` | **The live matrix.** Use this one. |
|
||||
| `author_v1.pt` | Superseded first capture, kept for rollback. |
|
||||
| `BDMurphy_Voice*.wav` | The reference chain the matrix was captured from. |
|
||||
| `manifest.json` | SHA-256, provenance, ref_code shape for every file. |
|
||||
| `BDMurphy_Voice*.wav` | The reference chain. **Git-ignored** — see below. |
|
||||
|
||||
## The reference WAVs are not in git
|
||||
|
||||
The six `BDMurphy_Voice*.wav` files (15.7 MB) are deliberately untracked. Each
|
||||
SHA-256 is recorded in `manifest.json` under `reference_chain`, so any copy can
|
||||
be verified, but git holds only the hashes, not the audio. Copies exist at:
|
||||
|
||||
- `~/Documents/Audacity4/` — the working originals
|
||||
- `~/.umbra/library/author_voice_matrix/20261009T191636Z/` — backup mirror
|
||||
|
||||
The one thing git *does* carry is the thing that cannot be re-recorded from thin
|
||||
air. The WAVs can be rebuilt from the matrix (see below); the matrix cannot be
|
||||
rebuilt without them.
|
||||
|
||||
## Restore
|
||||
|
||||
@@ -22,9 +35,27 @@ the voice never drifts between takes.
|
||||
cp author_v2.pt <project>/.umbra/voice_prompts/author.pt
|
||||
|
||||
# Reference WAV -> a project's approved-reference dir:
|
||||
cp BDMurphy_Voice_NOBG_v2.wav <project>/.umbra/voices/author_ref.wav
|
||||
cp ~/Documents/Audacity4/BDMurphy_Voice_NOBG_v2.wav <project>/.umbra/voices/author_ref.wav
|
||||
```
|
||||
|
||||
Or rebuild the reference from the matrix alone, with no WAV needed:
|
||||
|
||||
```python
|
||||
# verified 2026-10-09: 34.32 s @ 24 kHz, median F0 129.4 Hz (reference: 129.4 Hz),
|
||||
# LTAS within 0.55 dB RMS across 80 Hz-12 kHz.
|
||||
from qwen_tts import Qwen3TTSTokenizer
|
||||
import soundfile as sf, torch
|
||||
|
||||
tok = Qwen3TTSTokenizer.from_pretrained(
|
||||
"models/Qwen3-TTS-12Hz-1.7B-Base/speech_tokenizer", device_map="cpu")
|
||||
ref_code = torch.load("author_v2.pt", weights_only=False)["items"][0]["ref_code"]
|
||||
wavs, sr = tok.decode({"audio_codes": ref_code.cpu()})
|
||||
sf.write("author_ref.wav", wavs[0], sr, subtype="PCM_16")
|
||||
```
|
||||
|
||||
This is the matrix being the source of truth rather than a copy of it: the WAV
|
||||
is derived, not required.
|
||||
|
||||
The capture call that produced this matrix (re-run ONLY if you are deliberately
|
||||
changing the voice — it is not needed to use it):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user