diff --git a/README.md b/README.md index 5935f42..7f71103 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ meaning-packet contract Weksa clients should target. See [Flavored English Lowering](./docs/flavored-english-lowering.md) for the first lowering target: interlingua projected through agent state into English -dialogue and AquaSynth speech intent. +dialogue. ## Implementation Status diff --git a/docs/flavored-english-lowering.md b/docs/flavored-english-lowering.md index d562984..0ceb779 100644 --- a/docs/flavored-english-lowering.md +++ b/docs/flavored-english-lowering.md @@ -11,8 +11,6 @@ middle of the machine in a language humans can judge directly: interlingua packet -> agent-state projection -> flavored English dialogue - -> phonetic intent - -> AquaSynth articulatory speech rendering ``` The point is not to make Weksa an English writing assistant. The point is to @@ -48,13 +46,6 @@ The English lowerer owns: - preserving speaker knowledge boundaries - emitting dialogue text, optional visible action, and lowering trace -AquaSynth owns: - -- phonetic intent parsing and timing -- articulatory gesture planning -- vocal tract morphology -- DSP and rendered audio - ## Ghostlight Template Ghostlight's agent-state model is the template for this boundary. @@ -108,11 +99,6 @@ outputs: private_interpretation: intended_effect: trace: -phonetic_intent_request: - enabled: - voice_profile: - prosody_hint: - ipa_policy: ``` ## Output Contract @@ -126,8 +112,6 @@ The English lowerer should emit: - `intended_effect`: what the speaker wants the line to do. - `trace`: which interlingua fields and projected context pressures shaped the output. -- `phonetic_intent_request`: enough speech-side hinting for AquaSynth to build - or request `PhoneticIntent`. The lowerer must not emit: @@ -137,132 +121,14 @@ The lowerer must not emit: - facts not available to the speaker unless clearly marked as a guess - a line that contradicts required interlingua constraints -## AquaSynth Boundary +## Speech Boundary -AquaSynth's current vocal-tract roadmap defines `PhoneticIntent` as the -inspectable Weksa-to-AquaSynth contract. It carries IPA tokens, feature bundles, -timing, and prosody. AquaSynth then owns `ArticulatoryPlan` and -`ArticulatoryConstraintReport`. +Speech synthesis belongs downstream. AquaSynth is busy proving IPA, phoneme, and +vocal-tract parity; Weksa should not duplicate that work. -Weksa should not try to synthesize sound directly. - -Weksa should produce or request: - -- text -- optional IPA or IPA-like phonetic string -- timing/prosody hints -- speaker voice profile reference -- emotional or pragmatic delivery pressure - -AquaSynth should decide how those become gestures, tract targets, Faust, and -audio. - -## Reference Synth Parity - -The first speech-lowering target should be a simple open reference synth, not a -neural realtime voice. - -This mirrors the AquaSynth reference-synth pattern: Weksa should develop its own -DSL for vocal and dialogue intent, then test whether that DSL can express enough -information to drive an existing synth target. The reference is an exercise -machine. It is not the architecture we absorb. - -Recommended first target: eSpeak NG. - -Why eSpeak NG: - -- open source -- command-line friendly -- explicitly formant-based -- supports many languages and accents -- has mature phoneme and voice machinery -- supports Klatt formant synthesis as part of its synthesis surface -- is small and inspectable enough for parity fixtures - -Initial parity loop: - -```text -interlingua packet - -> projected agent-local context - -> flavored English line - -> Weksa vocal intent DSL - -> eSpeak NG reference render - -> transcript/audio/parameter artifact - -> Weksa/AquaSynth comparison -``` - -The goal is not to copy eSpeak NG quirks. The goal is to prove that Weksa can -state enough vocal intent to produce predictable speech through a boring -formant-based target before asking AquaSynth to do harder articulatory work. - -Good first fixtures: - -- short declarative line -- sharp warning -- dry aside -- fast correction -- one line with emphasis shift -- one line with irritation but no volume spike - -Candidate lower-level references: - -- eSpeak NG formant output for whole utterance parity -- eSpeak NG phoneme output for phoneme-sequence sanity -- Klatt-style open implementations for parameter-level formant fixture work -- Praat/KlattGrid-style analysis as a diagnostic surface, not runtime authority - -This rung should produce reference artifacts, not permanent dependency doctrine. -Once Weksa's vocal intent can drive a simple synth coherently, AquaSynth can -replace the target with its own `PhoneticIntent` and tract model. - -## Realtime Voice References - -Codex/OpenAI realtime voice output can be useful, but it must not become -physical ground truth. - -Use projection-shaped prompts with realtime voice output later as: - -- perceptual reference -- style and prosody target -- dataset seed for "what this character should feel like" -- regression artifact for whether Weksa's English lowering still sounds like - the target agent -- comparison audio while AquaSynth's tract model is still learning to speak - -Do not use it as: - -- anatomical truth -- tract-area target authority -- proof that a phonetic gesture is physically possible -- replacement for `PhoneticIntent` -- hidden voice cloning objective - -The clean loop is: - -```text -interlingua packet - -> projected agent-local prompt - -> realtime voice reference output - -> transcript + audio + prompt provenance + rating notes - -> Weksa/AquaSynth tuning artifact -``` - -Those artifacts can teach us what Nibu should sound like to a human listener: -pace, bite, hesitation, emphasis, warmth or lack of it, and how her contempt -lands when spoken aloud. - -AquaSynth still owns the physical path: - -```text -spoken_text / IPA-like string - -> PhoneticIntent - -> ArticulatoryPlan - -> tract morphology and DSP - -> rendered audio -``` - -In other words: realtime voice output is a vocal acting reference, not the -skeleton. Useful. Dangerous if worshipped. The usual. +Weksa's first deliverable is the English line and traceable projection context. +When speech work needs it, AquaSynth can consume `spoken_text` and decide how to +lower it into its own phonetic and articulatory contracts. ## First Target: Nibu @@ -302,9 +168,8 @@ The first proof should be tiny: 1. Take one interlingua packet with a simple communicative intent. 2. Project it through a Nibu-flavored local context. 3. Produce one English line and visible-action note. -4. Produce a `phonetic_intent_request` for AquaSynth. -5. Check whether the line still satisfies the interlingua packet. -6. Check whether the line sounds like Nibu for the right reasons. +4. Check whether the line still satisfies the interlingua packet. +5. Check whether the line sounds like Nibu for the right reasons. If the line only sounds like generic snark, it fails. If it sounds like Nibu but does not preserve the interlingua meaning, it also fails. Cute failure is still diff --git a/docs/roadmap.md b/docs/roadmap.md index 4788616..448cf46 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -16,7 +16,6 @@ - Validate one minimal interlingua packet. - Lower one packet through Nibu's projected agent state into flavored English. -- Emit an AquaSynth `PhoneticIntent` request from that English output. - Parse or load one language project definition. - Accept a Weksa interlingua packet. - Render glossed output through grammar, morphology, phonology, and diachrony. diff --git a/schemas/english-lowering-packet.md b/schemas/english-lowering-packet.md index 754f75b..a56dff9 100644 --- a/schemas/english-lowering-packet.md +++ b/schemas/english-lowering-packet.md @@ -18,7 +18,6 @@ It combines: - one projected agent-local context - lowering controls - English output -- optional AquaSynth `PhoneticIntent` request metadata It does not replace the interlingua packet or the agent state. @@ -57,64 +56,9 @@ Do not include: `spoken_text` may be empty only when the lowerer chooses a non-speech action. -## Speech Bridge +## Downstream Speech Boundary -`phonetic_intent_request` is optional but should be present when the output is -intended for AquaSynth. +This packet may be handed to AquaSynth later, but it does not contain +phoneme-parity, vocal-tract, reference-synth, or realtime voice artifacts. -It may include: - -- `enabled` -- `voice_profile` -- `prosody_hint` -- `ipa_policy` -- `timing_hint` -- `delivery_pressure` - -This is a request to AquaSynth, not a rendered audio contract. - -## Reference Synth Artifacts - -Before AquaSynth parity, Weksa may emit reference-synth artifacts. - -Suggested fields: - -- `reference_synth.target` -- `reference_synth.input_text` -- `reference_synth.input_phonemes` -- `reference_synth.voice` -- `reference_synth.controls` -- `reference_synth.audio_ref` -- `reference_synth.diagnostics_ref` -- `reference_synth.parity_notes` - -Initial `target` should be `espeak-ng` if available. Other Klatt/formant -implementations may be added as fixture targets when they provide clearer -parameter control. - -The reference synth artifact tests Weksa's expressive surface. It is not the -source of truth for AquaSynth anatomy. - -## Reference Audio Artifacts - -Realtime voice outputs may be attached as reference artifacts for tuning. - -Suggested fields: - -- `reference_audio.provider` -- `reference_audio.voice` -- `reference_audio.prompt_ref` -- `reference_audio.transcript` -- `reference_audio.audio_ref` -- `reference_audio.rating_notes` -- `reference_audio.allowed_use` - -Allowed use should distinguish: - -- `style_reference` -- `prosody_reference` -- `regression_reference` -- `physical_ground_truth_forbidden` - -Reference audio must not replace `phonetic_intent_request` or AquaSynth's -articulatory reports. +Weksa owns the English projection. AquaSynth owns speech lowering. diff --git a/settings/aetheria/nibu.md b/settings/aetheria/nibu.md index fb07c6e..2eb590c 100644 --- a/settings/aetheria/nibu.md +++ b/settings/aetheria/nibu.md @@ -14,8 +14,6 @@ survival logic, and precise abrasive intelligence. - Ghostlight state template: `E:\Projects\Ghostlight\schemas\agent-state.schema.json` - Projection model: `E:\Projects\Ghostlight\docs\architecture\projected-local-context.md` -- AquaSynth speech bridge: - `E:\Projects\AquaSynth\docs\ipa-vocal-tract-roadmap.md` ## State Read @@ -82,19 +80,3 @@ extensions: The expected output is not a quote yet. The first deliverable is a lowering packet that can explain why the eventual line is Nibu rather than generic snark. - -## First Speech Fixture - -Nibu should not start with neural realtime voice parity. Start with a basic -formant reference synth, preferably eSpeak NG. - -The first fixture should prove: - -- the English line preserves the interlingua warning -- the line carries Nibu pressure without becoming generic abuse -- Weksa can express emphasis, pace, and clipped sharpness in a vocal intent DSL -- the reference synth can render a stable artifact for comparison -- AquaSynth can later attempt the same intent through `PhoneticIntent` - -Reference quality can be ugly. It needs to be predictable. First the machine -learns to speak through a tin can with paperwork. Beauty can wait its turn. diff --git a/state/map.yaml b/state/map.yaml index a384a53..41264db 100644 --- a/state/map.yaml +++ b/state/map.yaml @@ -13,7 +13,7 @@ objective: before runtime architecture decisions are made. current: > Define the first lowering target: project interlingua through character - agent state into flavored English dialogue and AquaSynth speech intent. + agent state into flavored English dialogue. constraints: - Runtime implementation language is undecided. @@ -37,11 +37,8 @@ constraints: until Weksa can preserve meaning through a character voice humans can judge. - Agent state is projected context, not prompt prose storage. Raw state internals must not leak into generated dialogue. - - Realtime neural voice output may be used as perceptual style/prosody - reference data, but not as physical ground truth for AquaSynth vocal-tract - tuning. - - First speech-lowering parity should target a simple open formant synth such - as eSpeak NG before realtime neural voice references. + - AquaSynth owns IPA, phoneme, reference-synth, vocal-tract, and speech parity + work. Weksa owns interlingua-to-English projection. invariants: - Ontology owns meaning. @@ -66,7 +63,6 @@ data_flow: - accept or decompose source into a Weksa interlingua packet - optionally project the packet through an agent-local state context - lower projected meaning into flavored English dialogue - - emit AquaSynth phonetic intent request for speech synthesis - apply alien ontology and cultural salience - select grammatical commitments - derive morphology and lexical families @@ -196,12 +192,8 @@ open_questions: the first real Zyphos and Rust to Dust packets? - What exact projected-context subset should Weksa accept from Ghostlight-style agent state for English lowering? - - How much phonetic intent should Weksa emit directly versus requesting from - AquaSynth after dialogue text exists? - - What capture format should store realtime voice references, transcripts, - prompt provenance, and rating notes for Nibu tuning? - - What minimal vocal intent DSL fields are needed to drive eSpeak NG parity - fixtures before AquaSynth `PhoneticIntent` parity? + - What exact pass/fail rubric proves a Nibu-flavored English line preserves + interlingua meaning instead of merely sounding sharp? landed_baseline: - Language-neutral state spine.