Correct acoustic graph proprioception direction
This commit is contained in:
parent
677c543c91
commit
d335d30e98
6 changed files with 188 additions and 128 deletions
|
|
@ -441,8 +441,8 @@ Cut or replace these before piling on more tuning:
|
|||
1. Unowned segment contact-loss constant `0.02`.
|
||||
2. Turbulence/release scalar constants without a named pressure-flow model.
|
||||
3. Nearest-node source attachment as the only interior source placement model.
|
||||
4. Any new vocal feature added before the baby-word vowel-body witness in
|
||||
`docs/acoustic-graph-proprioception.md`.
|
||||
4. Any new vocal feature added before the primitive-collapse and flow-probe
|
||||
plan in `docs/acoustic-graph-proprioception.md`.
|
||||
|
||||
Cut in the 2026-05-28 N-port pass:
|
||||
|
||||
|
|
|
|||
|
|
@ -2,162 +2,219 @@
|
|||
|
||||
Date: 2026-05-29
|
||||
|
||||
The failure is not lack of research. The failure is that research vocabulary
|
||||
outpaced owner contracts. The graph can name sources, contacts, radiation,
|
||||
area, losses, branches, and wave clocks, but the baby-word witness still says
|
||||
the machine does not own an open vowel, a nasal vowel transition, or a shaped
|
||||
plosive as audible speech.
|
||||
This pass corrects the direction of the rebuild. The failure is not that the
|
||||
graph lacks one more utterance target. The failure is that AquaSynth has been
|
||||
letting a large discrete PT-shaped graph survive as the working body while
|
||||
adding compensators around it. That is Jenga.
|
||||
|
||||
The live objective is to collapse the graph into a small set of physical
|
||||
modeling primitives, instrument those primitives directly, and compare their
|
||||
sample/flow behavior against serious reference implementations: especially
|
||||
VocalTractLab, ArtiSynth, Story/TubeTalker, Smith-style waveguides, and only
|
||||
then PT/SndKit as a compact stress fixture.
|
||||
|
||||
Baby words remain end-to-end witnesses. They are not the rebuild owner.
|
||||
|
||||
## Objective
|
||||
|
||||
Make AquaSynth's graph voice able to say first words before adding more vocal
|
||||
machinery. `mama` and `papa` are not toy cases; they are the smallest useful
|
||||
truth test for vowel body, lip closure/opening, nasal/oral coupling, source
|
||||
continuity, and radiation color.
|
||||
Replace the monstrous discrete graph with as few faithful physical primitives
|
||||
as possible:
|
||||
|
||||
- continuous tract geometry and area functions;
|
||||
- source primitives coupled to tract load;
|
||||
- branch/coupling primitives;
|
||||
- radiation/load primitives;
|
||||
- delay-line propagation and scattering primitives;
|
||||
- contact/constriction primitives;
|
||||
- graph instrumentation that exposes wave/sample flow at those owners.
|
||||
|
||||
The target is not a better audio golf loop. The target is an acoustic machine
|
||||
whose internal behavior can be inspected and compared to reference simulators.
|
||||
|
||||
## Research Authority Map
|
||||
|
||||
### VocalTractLab / Birkholz
|
||||
|
||||
Owner lesson: separate anatomy, gestures, vocal-fold/source models, acoustic
|
||||
simulation, and copy-synthesis controls.
|
||||
|
||||
Pressure on Aqua: `tract` should not lower into many little terminal records
|
||||
that become the de facto anatomy. It should lower into continuous morphology
|
||||
and explicit primitive controls that a gesture layer can drive and diagnostics
|
||||
can observe.
|
||||
|
||||
### Story / TubeTalker
|
||||
|
||||
Owner lesson: continuous area functions and tract length are the compact bridge
|
||||
between anatomy and acoustics. Formants are derived evidence.
|
||||
|
||||
Pressure on Aqua: emitted sections, sample delays, and source/contact sample
|
||||
points are lowering choices. They must not become the authoring truth.
|
||||
|
||||
### Julius Smith / Digital Waveguides / Faust Primitives
|
||||
|
||||
Owner lesson: bidirectional delay lines, scattering junctions, loss filters,
|
||||
fractional delay, and passive boundaries are the cheap realtime substrate.
|
||||
|
||||
Pressure on Aqua: generated Faust should use compact waveguide and delay
|
||||
primitives where they preserve the owner contract. If custom emitted scattering
|
||||
is needed for differentiable controls, it should still look like a small
|
||||
physical primitive, not hundreds of section-local expressions.
|
||||
|
||||
### ArtiSynth / Fels and Lloyd
|
||||
|
||||
Owner lesson: body geometry, mechanical contacts, airflow/acoustics, timeline
|
||||
controls, and diagnostics are separate organs in an integrated simulation.
|
||||
|
||||
Pressure on Aqua: instrumentation is not optional. We need probes that observe
|
||||
geometry, contact state, pressure/flow, wave variables, source load, radiation,
|
||||
and timeline transitions at the layer where the primitive claims authority.
|
||||
|
||||
### Pink Trombone / SndKit
|
||||
|
||||
Owner lesson: PT is a compact Kelly-Lochbaum stress case with oral tube, nasal
|
||||
branch, source injection, obstruction history, and radiation.
|
||||
|
||||
Pressure on Aqua: use PT to compare behavior and catch regressions, but do not
|
||||
let PT's cell grid or utterance sketches become the architecture.
|
||||
|
||||
## Current Mechanism
|
||||
|
||||
`tract` authoring builds a high-resolution morphology surface:
|
||||
`tract` authoring still preserves a high-resolution morphology surface through
|
||||
`VocalTract.Sections` and `AcousticPath.AreaControl`.
|
||||
|
||||
- `VocalTract.Sections` owns section/index semantics.
|
||||
- `AcousticPath.AreaControl` owns live area expressions from tongue,
|
||||
constriction, lip, and velum controls.
|
||||
- `tract_motion` parses motor-intent slew and obstruction parameters, but graph
|
||||
area and delay lowering do not yet own those slew laws.
|
||||
Generated tract lowering now compacts the Faust graph to:
|
||||
|
||||
Generated tract lowering then compacts that morphology into a Faust-sized graph:
|
||||
|
||||
- up to ten oral area terminals,
|
||||
- up to eight moving injection source ports,
|
||||
- up to four contact terminals,
|
||||
- up to ten oral area terminals;
|
||||
- up to eight moving injection source ports;
|
||||
- up to four contact terminals;
|
||||
- one lip radiation port and optional nasal branch/radiation.
|
||||
|
||||
`FaustExport` lowers the typed graph into bidirectional segment state:
|
||||
|
||||
- segment delay and area reflection own propagation,
|
||||
- sources inject pressure/flow into nodes,
|
||||
- contact terminals store and release scalar pressure,
|
||||
- radiation ports read boundary flow and emit output,
|
||||
- probes observe selected source/contact/radiation internals.
|
||||
|
||||
The latest artifact is
|
||||
`artifacts/parity/pink-trombone-utterance-logmel/20260529T141822464`.
|
||||
It improved the `papa` drum-hit failure after lip radiation started following
|
||||
live lip opening, but `mama` still reads as closed-mouth humming and
|
||||
`thrombosis` remains mostly absent.
|
||||
That was a necessary compile-pressure cut, but it is still a discrete
|
||||
approximation pretending to be the machine. Source placement, contacts, area
|
||||
sampling, and radiation are represented as records distributed over a generated
|
||||
graph rather than as a small set of reusable physical primitives with explicit
|
||||
instrumentation.
|
||||
|
||||
## Invariants
|
||||
|
||||
- Typed `AcousticPortNetwork` is the only vocal audio authority. Do not restore
|
||||
the old proxy tract renderer.
|
||||
- Declared morphology resolution and compiled Faust graph density are separate
|
||||
truths. More tract sections must not imply more Faust terminals.
|
||||
- The mouth has one owner. Lip opening owns path-end geometry and radiation
|
||||
aperture together.
|
||||
- Source placement over a compact graph must be continuous enough for moving
|
||||
articulation. Do not restore one source terminal per tract cell by default.
|
||||
- Contact state must describe a pressure/flow event in the tract, not an output
|
||||
click or plosive gain rescue.
|
||||
- Listening verdicts override proxy metrics. A high cosine that cannot say
|
||||
`a` is evidence against the witness, not evidence for the voice.
|
||||
- `AcousticPortNetwork` owns vocal acoustics. The old proxy renderer stays dead.
|
||||
- Continuous morphology owns tract shape and length. Generated section/terminal
|
||||
count is backend approximation, not anatomy.
|
||||
- Faust output must be compact and inspectable enough to compile, probe, and
|
||||
compare.
|
||||
- Primitives must state what physical quantity they own: area, pressure, flow,
|
||||
wave variable, delay, coupling, contact, source load, or radiation.
|
||||
- Instrumentation must observe primitive internals, not only final audio or
|
||||
final metrics.
|
||||
- PT utterances are witnesses after the primitive behavior is legible, not the
|
||||
steering authority.
|
||||
|
||||
## Jenga Findings
|
||||
|
||||
### Research Names Outpaced Owner Tests
|
||||
### The Discrete Graph Is Still Too Much Body
|
||||
|
||||
The code has acquired real terms from the literature: source impedance, contact
|
||||
pressure, radiation load, fractional delay, area scattering. Those names are
|
||||
useful only when each has a falsifiable owner test. Right now the graph can
|
||||
pass structural checks while failing the smallest speech task.
|
||||
The graph was reduced enough for Faust to compile, but its shape is still
|
||||
section-bank driven: area terminals, source terminals, contact terminals, and
|
||||
node-local expressions. This keeps pushing us toward local fixes because every
|
||||
generated component looks like a place to add one more rule.
|
||||
|
||||
### The Model Has Too Many Local Truths
|
||||
### We Need Primitive Flow Probes, Not Just Audio Reports
|
||||
|
||||
Source, contact, area, loss, radiation, and output balance each implement part
|
||||
of a pressure/flow story. They are not all wrong, but they can each be locally
|
||||
reasonable while the whole graph says "buzz", "hum", or silence. The lip
|
||||
radiation bug was the clean example: path geometry knew the mouth opened, while
|
||||
radiation aperture did not.
|
||||
Current probes can show selected source/contact/radiation values, but they do
|
||||
not yet provide a full primitive timeline: incoming/outgoing wave variables,
|
||||
segment delay states, scattering inputs/outputs, source load pressure/flow,
|
||||
contact opening/pressure, branch admittance, and radiation impedance over time.
|
||||
|
||||
### The Vowel Body Has No Gate
|
||||
Without that, comparing to VTL/ArtiSynth/PT is mostly listening plus aggregate
|
||||
spectral evidence. That is not enough.
|
||||
|
||||
The current parity lane can render utterance WAVs and report log-mel,
|
||||
articulation, band ratios, and silence mismatch. It does not yet have a hard
|
||||
vowel-body gate that says: before plosives, before fricatives, before
|
||||
`thrombosis`, the compact graph must sustain an open `a` and a nasal/open
|
||||
`ma` transition with audible oral vowel body.
|
||||
### Motion And Contact Are In The Wrong Shape
|
||||
|
||||
That missing gate let complexity accumulate around the wrong failure surface.
|
||||
`tract_motion` parses gesture intent, but graph area/delay lowering does not
|
||||
own motion/passivity as a primitive. Contact release exists, but it is still a
|
||||
scalar reservoir pulse instead of a contact/constriction flow primitive that
|
||||
can be inspected as pressure, opening, resistance, and released flow.
|
||||
|
||||
### Discrete Components Are Carrying Continuous Work
|
||||
### Faust Compile Pressure Is Architectural Evidence
|
||||
|
||||
The compacting pass fixed the worst Faust compile pressure, but the graph still
|
||||
uses sparse banks of area terminals, source ports, and contact terminals as a
|
||||
compiled approximation of continuous articulation. That may be acceptable as a
|
||||
backend lowering choice, but the source/contact laws must become continuous
|
||||
heuristics over that compact bank. Adding density is the expensive answer and
|
||||
already proved toxic.
|
||||
When Faust refuses to compile or becomes slow enough that three toy utterances
|
||||
are painful, that is not tooling bad luck. It means the lowering is asking
|
||||
Faust to carry too many discrete local expressions. The correct response is to
|
||||
collapse into primitives, not to tune around the generated graph.
|
||||
|
||||
### Contact Release Is Not Yet Speech Mechanics
|
||||
## Primitive Collapse Plan
|
||||
|
||||
Graph contact release now reaches lip radiation. That was a real ownership cut.
|
||||
It is still a scalar closure/reservoir/release pulse, with directional weights
|
||||
and decay constants. A baby's `p` is a constrained-flow history through a
|
||||
changing tract aperture, not a drum trigger. The latest `papa` improvement came
|
||||
from fixing mouth ownership, not from adding release force.
|
||||
### 1. Define The Minimal Primitive Set
|
||||
|
||||
### Motion Is Authored Outside The Acoustic Owner
|
||||
Create or document the target primitives before adding another acoustic law:
|
||||
|
||||
`tract_motion` exists, and fixture curves smooth controls, but graph area and
|
||||
delay semantics do not own motor smoothing/passivity. Abrupt morphology changes
|
||||
can still enter fractional delay and area reflection directly. That leaves
|
||||
gesture realism outside the organ that emits sound.
|
||||
- `AreaFunction`: continuous length/area geometry with live deformation.
|
||||
- `WaveguidePath`: compact bidirectional propagation over that area function.
|
||||
- `ScatterJunction`: two-port and N-port passive scattering over admittance.
|
||||
- `SourcePort`: pressure/flow source with load coupling.
|
||||
- `ConstrictionContact`: opening, resistance, stored pressure, and released
|
||||
flow.
|
||||
- `BranchPort`: side-port admittance and coupling.
|
||||
- `RadiationLoad`: boundary reflection, aperture, impedance, and radiated flow.
|
||||
- `ProbeTimeline`: dev/test-only sampling of the primitive state above.
|
||||
|
||||
### The Probes Do Not Yet Watch The Missing Vowel
|
||||
If an existing record cannot be mapped onto one of these owners, it should be
|
||||
deleted, demoted to authoring sugar, or kept only as a compatibility shim that
|
||||
delegates to a primitive.
|
||||
|
||||
Source/contact/radiation probes proved the graph is alive upstream. They do not
|
||||
yet report a vowel-body witness: formant/body energy, open-mouth radiation
|
||||
state, nasal/oral balance, and per-phone windows for `mama`/`papa`. We are
|
||||
observing the machine's organs, but not the baby-word invariant at the layer
|
||||
where the user hears the failure.
|
||||
### 2. Compare Primitive Behavior Against References
|
||||
|
||||
### Verification Health Is Part Of The Machine
|
||||
Reference comparison should look at internal behavior, not only waveform
|
||||
similarity:
|
||||
|
||||
The native Faust render path is slow and has needed process cleanup and larger
|
||||
timeouts. That pressure is not incidental. A graph that takes minutes to render
|
||||
three toy words and previously overflowed debug compilation is already telling
|
||||
us the implementation surface is too discrete and too costly.
|
||||
- VTL/Birkholz: gesture-to-tract/source separation and copy-synthesis control
|
||||
surfaces.
|
||||
- ArtiSynth: body/contact/acoustic/timeline diagnostic separation.
|
||||
- Story/TubeTalker: continuous area-function parameterization and formant
|
||||
consequences.
|
||||
- Smith/Faust: delay-line/scatter/loss/radiation primitive economics and
|
||||
passivity.
|
||||
- PT/SndKit: compact oral/nasal KL behavior, obstruction history, and radiation
|
||||
under known fixtures.
|
||||
|
||||
### 3. Instrument Sample Flow Through The Graph
|
||||
|
||||
Add a dev/test probe path that can write per-block or per-window timelines:
|
||||
|
||||
- path area and delay samples;
|
||||
- incoming/outgoing wave variables at selected scatter sites;
|
||||
- source load pressure, source flow, and injected wave contribution;
|
||||
- contact opening/resistance/reservoir/released flow;
|
||||
- branch admittance and exchanged flow;
|
||||
- radiation boundary reflection, flow, and emitted output;
|
||||
- derived energy/passivity checks.
|
||||
|
||||
This is the layer that lets us say "the tract behaves like the reference" or
|
||||
"this primitive is lying" before touching the final utterance.
|
||||
|
||||
### 4. Collapse Generated PT Lowering
|
||||
|
||||
Generated PT-style tract lowering should become an authoring adapter over the
|
||||
primitive set. It may preserve PT-shaped controls for fixtures, but it should
|
||||
not decide the physical model by emitting banks of terminals where a continuous
|
||||
primitive can own the same behavior.
|
||||
|
||||
## Cut Line
|
||||
|
||||
Stop adding acoustic features until the graph passes a vowel-body proof.
|
||||
Cut any new feature whose main evidence is that it improves `mama`, `papa`, or
|
||||
`thrombosis` without making the primitive flow more legible.
|
||||
|
||||
Before the next physics addition, add a focused witness for:
|
||||
Cut any generated component that cannot explain which primitive owner it
|
||||
serves.
|
||||
|
||||
1. sustained open `a`,
|
||||
2. `ma` as nasal closure into open vowel,
|
||||
3. `pa` as lip closure/release into open vowel,
|
||||
4. the same windows in the accepted utterance artifacts.
|
||||
|
||||
The witness should write listening WAVs plus a short report of active vowel
|
||||
body, speech-band energy, mouth/radiation opening, and nasal/oral balance. It
|
||||
should fail loudly when the result is closed-mouth humming, a drum hit, or
|
||||
silence.
|
||||
|
||||
Candidate simplifications after that witness exists:
|
||||
|
||||
- demote contact release constants into a simpler aperture-shaped constrained
|
||||
flow primitive, or cut the scalar reservoir if it cannot prove speech value;
|
||||
- move `tract_motion` slew into graph-owned area/delay expressions;
|
||||
- replace nearest-node source attachment pressure with a continuous
|
||||
interpolated injection primitive over adjacent segment nodes;
|
||||
- use Faust physical-modeling/delay primitives where they collapse generated
|
||||
graph bulk without hiding owner contracts;
|
||||
- keep compact generated terminal counts unless a failed witness proves a
|
||||
specific missing sample point.
|
||||
Cut any probe that observes final audio while leaving source/load/contact/path
|
||||
flow hidden.
|
||||
|
||||
## Next Work
|
||||
|
||||
The next implementation pass should be a baby-word gate, not another graph
|
||||
feature. Once sustained `a`, `ma`, and `pa` are visibly and audibly wrong or
|
||||
right, the graph will have a clean target for cuts. Without that gate, every
|
||||
new coefficient is just another little brick in the stack.
|
||||
The next implementation pass should map current records and Faust locals onto
|
||||
the primitive set above, then add the first `ProbeTimeline` witness for one
|
||||
compact tract. After that, compare the primitive timelines against PT/SndKit
|
||||
and the VTL/ArtiSynth authority split before further tuning. Words can return
|
||||
as downstream witnesses once the tract body is observable.
|
||||
|
|
|
|||
|
|
@ -225,3 +225,4 @@
|
|||
{"date":"2026-05-29","area":"acoustic-graph","summary":"Moving tract injection source placement now uses a raised-cosine kernel over the compact source bank instead of a hard triangular weight. This keeps graph size fixed while making source ownership more continuous and DSP-friendly. The latest accepted utterance diagnostic still fails articulation, but thrombosis moves in the right direction: active ratio 0.1598->0.1826, silence mismatch 0.7811->0.7643, and speech-band ratio 0.2537->0.2704.","evidence":"docs/acoustic-graph-dsp-audit.md; artifacts/parity/pink-trombone-graph-thrombosis-probes/20260529T135910192; artifacts/parity/pink-trombone-utterance-logmel/20260529T140038717"}
|
||||
{"date":"2026-05-29","area":"acoustic-graph","summary":"Generated lip radiation now mirrors live tract lip opening into the radiation port opening. This fixes split ownership where path-end geometry followed /pink/lip/opening but radiation aperture stayed at its default. Latest accepted utterance artifact improves papa in the exact listening-failure direction: RMS ratio 0.3242->0.8369, cosine 0.7725->0.7996, and motor-band ratio 0.5238->0.0555, reducing the drum-hit plosive signature. Mama and thrombosis still fail, so remaining work is vowel body/radiation color and fricative continuity, not more plosive gain.","evidence":"docs/acoustic-graph-dsp-audit.md; artifacts/parity/pink-trombone-utterance-logmel/20260529T141822464"}
|
||||
{"date":"2026-05-29","area":"acoustic-graph","summary":"Proprioception pass confirmed the Jenga smell: research vocabulary and named graph components outpaced baby-word owner tests. The live cut line is now to stop adding graph-vocal physics until a focused vowel-body witness proves sustained open `a`, `ma`, and `pa` with listening-aligned reports. The likely missing owners are vowel body/radiation color, graph-owned tract motion, continuous source/contact heuristics over the compact graph, and probes that observe the word-level failure instead of only organ internals.","evidence":"docs/acoustic-graph-proprioception.md; docs/acoustic-graph-dsp-audit.md; artifacts/parity/pink-trombone-utterance-logmel/20260529T141822464"}
|
||||
{"date":"2026-05-29","area":"acoustic-graph","summary":"Corrected the proprioception cut line after user pushback: baby words are downstream witnesses, not the architecture owner. The live rebuild direction is primitive collapse plus instrumentation: reduce generated graph-vocal lowering to AreaFunction, WaveguidePath, ScatterJunction, SourcePort, ConstrictionContact, BranchPort, RadiationLoad, and ProbeTimeline; compare primitive/sample-flow behavior against VocalTractLab, ArtiSynth, Story/TubeTalker, Smith/Faust, and PT/SndKit before more utterance golf.","evidence":"docs/acoustic-graph-proprioception.md; docs/acoustic-graph-flow-audit.md; research/physical-voice-modeling/PEOPLE.md; research/physical-voice-modeling/talks/TALKS.md"}
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
"Surge XT for modern hybrid synth modulation",
|
||||
"Cardinal/VCV-style patches for modular cable/rate semantics"
|
||||
],
|
||||
"rule": "For speech, add schema fields and learned-control lanes only when the parity harness has a loss surface that can exercise them. For reference synths, add DSL abstractions only when rebuilds prove the missing invariant. Parsing alone is inventory, not evidence of expressivity. Pink Trombone should be decomposed into reusable low-level Aqua primitives before audio golf, not copied as a bespoke clone or inflated into PT-shaped modules. After the 2026-05-29 proprioception pass, do not add more graph-vocal physics until a baby-word vowel-body witness proves sustained open `a`, `ma`, and `pa`."
|
||||
"rule": "For speech, add schema fields and learned-control lanes only when the parity harness has a loss surface that can exercise them. For reference synths, add DSL abstractions only when rebuilds prove the missing invariant. Parsing alone is inventory, not evidence of expressivity. Pink Trombone should be decomposed into reusable low-level Aqua primitives before audio golf, not copied as a bespoke clone or inflated into PT-shaped modules. After the 2026-05-29 proprioception correction, collapse graph-vocal lowering into a small set of instrumented physical primitives before more utterance golf."
|
||||
},
|
||||
"ipa_vocal_tract_path": {
|
||||
"status": "This is now the active project center. Roadmap and research notes align the curriculum around structured utterance metadata -> learned utterance embedding -> learned synth automation -> vocal tract/envelope/LFO/filter/spectral controls -> rendered audio loss. The first Core contracts still defend the boundary: PhoneticIntent is the Weksa/language-owned handoff, ArticulatoryPlan is the AquaSynth realization layer, VocalTractMorphology declares anatomy capabilities, ArticulatoryConstraintReport is the host-visible veto surface, and VocalTractPlanResult is the tiny end-to-end proof artifact for host branching. IPA is an authoring input only: tokenization and feature mapping lower into language phonology profiles, timed articulatory gestures, morphology-specific tract/excitation curves, and Faust DSP. The staged support plan starts with tokenization and vowels, then core pulmonic consonants, expanded human IPA, airstream/phonation, and Weksa/alien morphologies. Optional eSpeak NG tests provide the first generated speech workout when ESPEAK_NG or espeak-ng is installed; eSpeak is intelligibility/timing/log-mel pressure, not anatomy truth. AquaSynth owns the learned utterance embedding encoder and synth driver: speech text embeddings plus prosody/emphasis hints plus Ghostlight/Epiphany-shaped character state vectors compress into utterance embeddings, and phonetic features plus that embedding feed a packed-buffer native C# backprop/Adam mapper that predicts tract, AM/FM, LFO, filter, and mel spectral-envelope controls. SpeechBackpropagationPipeline chains the two models: synth-driver target loss returns gradients with respect to its input, slices the utterance-embedding gradient, and updates the utterance encoder from downstream speech loss. The generated ground-truth training fixture renders eSpeak syllables, extracts log-mel evidence, and trains that chained pipeline toward eSpeak-seeded mel/control targets. CultMesh speech training now has payload manifests, peer/lease admission receipts, worker assignment, result collection, and central checkpoint application; workers do not own model updates. Real remote artifact chunk transfer and process supervision remain CultMesh infrastructure surfaces, not AquaSynth workaround territory.",
|
||||
|
|
|
|||
|
|
@ -2,13 +2,15 @@
|
|||
|
||||
Current slice:
|
||||
|
||||
- Proprioception pass after user called Jenga on the graph voice. Diagnosis is
|
||||
now durable in `docs/acoustic-graph-proprioception.md`: research vocabulary
|
||||
and named graph components outpaced baby-word owner tests. Do not add more
|
||||
graph-vocal physics until a focused vowel-body witness proves sustained open
|
||||
`a`, `ma`, and `pa` with listening-aligned reports. Next implementation pass
|
||||
should add that witness, then simplify contact/motion/source placement from
|
||||
the evidence instead of adding another coefficient.
|
||||
- Proprioception correction after user rejected baby-word golf as the rebuild
|
||||
owner. Diagnosis is now durable in
|
||||
`docs/acoustic-graph-proprioception.md`: collapse generated graph-vocal
|
||||
lowering into a small set of instrumented physical primitives, compare
|
||||
primitive/sample-flow behavior against VTL, ArtiSynth, Story/TubeTalker,
|
||||
Smith/Faust, and PT/SndKit, then return to utterances as downstream
|
||||
witnesses. Next implementation pass should map current records/Faust locals
|
||||
onto `AreaFunction`, `WaveguidePath`, `ScatterJunction`, `SourcePort`,
|
||||
`ConstrictionContact`, `BranchPort`, `RadiationLoad`, and `ProbeTimeline`.
|
||||
|
||||
- Implemented the first graph-owned closure reservoir cut. Contact terminals no
|
||||
longer contribute through the generic node source sum. Ordinary two-port path
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ live_invariants:
|
|||
- Generated PT-style `tract` lowering now compacts the Faust graph without changing user-facing morphology resolution: `VocalTract.Sections` and `AcousticPath.AreaFunction.Sections` still preserve the declared tract grid, but generated oral area terminals are capped at 10, generated moving injection source ports at 8, and generated contacts at 4. Source position weighting widens to the compact source spacing so the source bank approximates continuous placement instead of restoring one port per cell. Latest debug evidence `artifacts/parity/pink-trombone-graph-thrombosis-probes/20260529T125048965` drops generated debug DSP size from 1652 to 532 lines, with source graph lines 687->162 and next-state lines 89->27; accepted utterance artifact `artifacts/parity/pink-trombone-utterance-logmel/20260529T125227926` still fails articulation, so this is backend coherence/speed, not parity victory.
|
||||
- Moving tract injection placement now uses a raised-cosine kernel over the compact source bank instead of a hard triangular source-position weight. Keep this direction: smoother continuous heuristics over fewer generated ports, not more discrete source terminals. Artifact `artifacts/parity/pink-trombone-utterance-logmel/20260529T140038717` still fails articulation but improves thrombosis active ratio/silence/speech-band slightly without increasing graph size.
|
||||
- Generated lip radiation opening must mirror live tract lip opening. The path-end geometry and radiation aperture are one mouth owner, not separate truths. Artifact `artifacts/parity/pink-trombone-utterance-logmel/20260529T141822464` improves papa's plosive failure sharply (RMS 0.8369, motor-band ratio 0.0555), but mama still sounds vowel-poor and thrombosis is still mostly absent; next pressure is vowel body/radiation color and fricative continuity.
|
||||
- Proprioception pass says the current speech graph failed by letting research vocabulary outpace baby-word owner tests. Stop adding vocal features until a focused vowel-body witness proves sustained open `a`, `ma`, and `pa` windows against listening-aligned reports. `docs/acoustic-graph-proprioception.md` owns this cut line.
|
||||
- Proprioception correction says baby words are downstream witnesses, not the rebuild owner. The live cut is to collapse generated graph-vocal lowering into a small set of instrumented physical primitives, compare primitive/sample-flow behavior against VTL, ArtiSynth, Story/TubeTalker, Smith/Faust, and PT/SndKit, then return to utterances once the tract body is observable. `docs/acoustic-graph-proprioception.md` owns this cut line.
|
||||
- TurbulenceJet now includes a release-timed burst-noise component in addition to the deterministic pressure pulse, but a stronger trial barely moved papa; the source is not the main remaining articulation bottleneck. Graph radiation now mixes 30% raw boundary flow with 70% high-passed flow after local admittance weighting, down from the over-bright 15/85 blend. Latest radiation/source artifact under `artifacts/parity/pink-trombone-utterance-logmel/20260527T174236049`: mama/papa/thrombosis cosine 0.6578/0.7692/0.5585, rmsRatio 3.0006/2.6153/2.3488, articulation 0.1437/0.1173/0.1191. Static `closure-release` under `artifacts/parity/pink-trombone-logmel/20260527T174139661` has rmsRatio 0.9900 and speechBandRatio 0.0842. This is still not speaking; next pressure is true tract resonance/passive scattering and pressure storage, not more burst gain.
|
||||
- Same-path two-port area discontinuities now emit `graph_area_energy_in_*` and `graph_area_energy_out_*` probes alongside the three-port branch `graph_connection_energy_*` probes. Use these to inspect passivity and formant-body failures at the scatter sites rather than judging only final output loudness.
|
||||
- `FaustExportOptions.DebugProbeUi` wraps graph probe signals in Faust `vbargraph` UI controls under `/debug/...` without changing audio output arity. Native streaming Faust patches now separate writable controls from read-only probe zones and can read/snapshot probe values after `ProcessBlock`; use this for acoustic graph passivity/radiation inspection, leave it off for normal parity renders.
|
||||
|
|
@ -945,5 +945,5 @@ cut_line:
|
|||
- "Cut voice-field sprawl when a target needs topology."
|
||||
- "Cut any design that requires recompiling a patch to move an exposed musical parameter."
|
||||
- "Split a lower-level graph DSL if Faust/Cardinal-style references make the voice DSL lie."
|
||||
- "Cut any new graph-vocal feature that lands before the baby-word vowel-body witness can prove open `a`, `ma`, and `pa`."
|
||||
- "Cut any new graph-vocal feature that lands before primitive-collapse and flow-probe instrumentation make the tract body's sample/flow behavior observable."
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue