Define speech lowering handoff
This commit is contained in:
parent
559c8e4cee
commit
e1f3226219
10 changed files with 603 additions and 0 deletions
130
docs/english-pronunciation-lowering.md
Normal file
130
docs/english-pronunciation-lowering.md
Normal file
|
|
@ -0,0 +1,130 @@
|
||||||
|
# English Pronunciation Lowering
|
||||||
|
|
||||||
|
Version: `0.1-draft`
|
||||||
|
|
||||||
|
Weksa owns the step from flavored English text to a pronunciation plan. AquaSynth
|
||||||
|
owns the later step from pronunciation intent to sound.
|
||||||
|
|
||||||
|
```text
|
||||||
|
interlingua packet
|
||||||
|
-> projected agent-local context
|
||||||
|
-> flavored English dialogue
|
||||||
|
-> English pronunciation plan
|
||||||
|
-> downstream speech system
|
||||||
|
```
|
||||||
|
|
||||||
|
This is still Weksa work because the pronunciation plan belongs to the meaning
|
||||||
|
and dialogue layer: phrase grouping, emphasis, reduced forms, and word choice are
|
||||||
|
part of the utterance Weksa just created.
|
||||||
|
|
||||||
|
The long-term primary handoff is the learned
|
||||||
|
[Line Expression Vector](./line-expression-vector.md). This pronunciation plan is
|
||||||
|
the inspectable audit/debug lane: useful for fixtures, phoneme strings, and
|
||||||
|
review, but not the only representation of delivery.
|
||||||
|
|
||||||
|
## Objective
|
||||||
|
|
||||||
|
Produce a deterministic, inspectable pronunciation plan for English output.
|
||||||
|
|
||||||
|
The plan should say:
|
||||||
|
|
||||||
|
- what text is being pronounced
|
||||||
|
- how it was normalized
|
||||||
|
- which tokens are words, punctuation, or phrase boundaries
|
||||||
|
- which pronunciation source was used for each word
|
||||||
|
- what broad IPA sequence should be sent downstream
|
||||||
|
- where phrase breaks and emphasis fall
|
||||||
|
- what remains uncertain or hand-authored
|
||||||
|
|
||||||
|
## Authority
|
||||||
|
|
||||||
|
Weksa owns:
|
||||||
|
|
||||||
|
- text normalization
|
||||||
|
- tokenization
|
||||||
|
- lexicon lookup
|
||||||
|
- OOV pronunciation choice
|
||||||
|
- ARPABET-to-IPA conversion when using CMUdict-style entries
|
||||||
|
- phrase grouping
|
||||||
|
- lexical stress preservation
|
||||||
|
- dialogue-driven emphasis
|
||||||
|
- pronunciation trace
|
||||||
|
|
||||||
|
AquaSynth owns:
|
||||||
|
|
||||||
|
- IPA parsing
|
||||||
|
- phonetic feature interpretation
|
||||||
|
- language/voice phonology profile
|
||||||
|
- timing curves
|
||||||
|
- articulatory gestures
|
||||||
|
- tract morphology
|
||||||
|
- rendered audio
|
||||||
|
|
||||||
|
## Reference Spine
|
||||||
|
|
||||||
|
Recommended first spine:
|
||||||
|
|
||||||
|
1. Use CMUdict-style ARPABET entries for known English words.
|
||||||
|
2. Preserve CMUdict stress digits on vowels.
|
||||||
|
3. Convert ARPABET to broad IPA with a documented table.
|
||||||
|
4. Add phrase breaks and emphasis from the English lowering output.
|
||||||
|
5. Mark hand-authored or uncertain pronunciations explicitly.
|
||||||
|
|
||||||
|
Useful reference tools:
|
||||||
|
|
||||||
|
- CMU Pronouncing Dictionary for English ARPABET pronunciations.
|
||||||
|
- eSpeak NG `--ipa` or phoneme output as an external checker.
|
||||||
|
- Phonetisaurus or another G2P model later for OOV words.
|
||||||
|
|
||||||
|
The first version may be hand-authored fixture data. The contract matters before
|
||||||
|
automation. Yes, this is paperwork with teeth. Annoying, but it bites the right
|
||||||
|
thing.
|
||||||
|
|
||||||
|
## Pronunciation Plan Shape
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
schema_version: weksa.english_pronunciation_plan.v0
|
||||||
|
source_output_ref:
|
||||||
|
dialect:
|
||||||
|
orthographic_text:
|
||||||
|
normalization:
|
||||||
|
text:
|
||||||
|
notes:
|
||||||
|
tokens:
|
||||||
|
- id:
|
||||||
|
text:
|
||||||
|
kind:
|
||||||
|
pronunciation_source:
|
||||||
|
arpabet:
|
||||||
|
ipa:
|
||||||
|
stress:
|
||||||
|
notes:
|
||||||
|
phrasing:
|
||||||
|
groups:
|
||||||
|
- id:
|
||||||
|
token_ids:
|
||||||
|
boundary_after:
|
||||||
|
prominence:
|
||||||
|
ipa:
|
||||||
|
broad:
|
||||||
|
with_boundaries:
|
||||||
|
trace:
|
||||||
|
decisions:
|
||||||
|
uncertainties:
|
||||||
|
```
|
||||||
|
|
||||||
|
## Minimum Pass Criteria
|
||||||
|
|
||||||
|
- Every pronounced word has a token.
|
||||||
|
- Every word token has IPA.
|
||||||
|
- Unknown or hand-authored pronunciations are labeled.
|
||||||
|
- Phrase boundaries do not contradict punctuation or intended delivery.
|
||||||
|
- Emphasis follows dialogue intent, not arbitrary prettiness.
|
||||||
|
- The plan can be consumed without reading the original prose document.
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- [CMU Pronouncing Dictionary](https://www.speech.cs.cmu.edu/cgi-bin/cmudict)
|
||||||
|
- [eSpeak command options](https://espeak.sourceforge.net/commands.html)
|
||||||
|
- [eSpeak NG documentation index](https://chromium.googlesource.com/chromiumos/third_party/espeak-ng/+/HEAD/docs/index.md)
|
||||||
|
- [Phonetisaurus overview](https://cmusphinx.github.io/2012/05/phonetisaurus-a-wfst-driven-phoneticizer-e2-80-93-framework-review/)
|
||||||
|
|
@ -130,6 +130,15 @@ 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
|
When speech work needs it, AquaSynth can consume `spoken_text` and decide how to
|
||||||
lower it into its own phonetic and articulatory contracts.
|
lower it into its own phonetic and articulatory contracts.
|
||||||
|
|
||||||
|
Weksa still owns the optional pronunciation plan for English output: tokenizing
|
||||||
|
the line, choosing word pronunciations, preserving stress, and stringing broad
|
||||||
|
IPA together. See [English Pronunciation Lowering](./english-pronunciation-lowering.md).
|
||||||
|
|
||||||
|
Weksa should also emit a learned line-expression vector when training data and
|
||||||
|
encoder support exist. That vector is the intended compact handoff for prosody,
|
||||||
|
emphasis, and character delivery pressure. See
|
||||||
|
[Line Expression Vector](./line-expression-vector.md).
|
||||||
|
|
||||||
## First Target: Nibu
|
## First Target: Nibu
|
||||||
|
|
||||||
Nibu is the first practical target because her state is live, opinionated, and
|
Nibu is the first practical target because her state is live, opinionated, and
|
||||||
|
|
|
||||||
124
docs/line-expression-vector.md
Normal file
124
docs/line-expression-vector.md
Normal file
|
|
@ -0,0 +1,124 @@
|
||||||
|
# Line Expression Vector
|
||||||
|
|
||||||
|
Version: `0.1-draft`
|
||||||
|
|
||||||
|
The line expression vector is Weksa's learned handoff from flavored English
|
||||||
|
lowering to downstream voice control.
|
||||||
|
|
||||||
|
```text
|
||||||
|
interlingua packet
|
||||||
|
-> projected agent-local context
|
||||||
|
-> flavored English line
|
||||||
|
-> Weksa line-expression encoder
|
||||||
|
-> line expression vector
|
||||||
|
-> AquaSynth synth-control decoder
|
||||||
|
```
|
||||||
|
|
||||||
|
The goal is two small learned artifacts in a tight loop:
|
||||||
|
|
||||||
|
1. Weksa learns to encode a character's line as a compact expression vector.
|
||||||
|
2. AquaSynth learns to decode that vector into synth-control intent.
|
||||||
|
|
||||||
|
No giant oracle gets to own the seam. No hidden theatrical mush. Just a line,
|
||||||
|
its meaning, its speaker context, and a learned vector with enough audit surface
|
||||||
|
to tell whether it is lying.
|
||||||
|
|
||||||
|
## Authority
|
||||||
|
|
||||||
|
Weksa owns:
|
||||||
|
|
||||||
|
- interlingua packet
|
||||||
|
- projected agent-local context
|
||||||
|
- flavored English line
|
||||||
|
- line-expression vector generation
|
||||||
|
- audit projections for meaning, emphasis, and character pressure
|
||||||
|
|
||||||
|
AquaSynth owns:
|
||||||
|
|
||||||
|
- mapping expression vectors to synthesis controls
|
||||||
|
- consuming pronunciation or IPA plans when Weksa provides them
|
||||||
|
- phonetic feature interpretation
|
||||||
|
- timing, articulation, tract, and DSP
|
||||||
|
- audio evaluation
|
||||||
|
|
||||||
|
## Vector Contract
|
||||||
|
|
||||||
|
The vector is dense and model-owned, but the packet around it must be explicit.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
schema_version: weksa.line_expression_vector.v0
|
||||||
|
source_output_ref:
|
||||||
|
speaker_agent_id:
|
||||||
|
encoder:
|
||||||
|
model_id:
|
||||||
|
version:
|
||||||
|
training_set:
|
||||||
|
text:
|
||||||
|
spoken_text:
|
||||||
|
normalized_text:
|
||||||
|
vector:
|
||||||
|
dimensionality:
|
||||||
|
values_ref:
|
||||||
|
audit_projection:
|
||||||
|
semantic_preservation:
|
||||||
|
emphasis:
|
||||||
|
prosody:
|
||||||
|
character_pressure:
|
||||||
|
delivery_shape:
|
||||||
|
training_refs:
|
||||||
|
positive_examples:
|
||||||
|
negative_examples:
|
||||||
|
trace:
|
||||||
|
notes:
|
||||||
|
uncertainties:
|
||||||
|
```
|
||||||
|
|
||||||
|
`values_ref` may point to an external binary or JSON artifact once the vector is
|
||||||
|
large. Early fixtures may inline tiny toy vectors.
|
||||||
|
|
||||||
|
## Audit Projection
|
||||||
|
|
||||||
|
The audit projection is not the vector. It is a human-readable probe of what the
|
||||||
|
vector is supposed to contain.
|
||||||
|
|
||||||
|
Useful audit families:
|
||||||
|
|
||||||
|
- `semantic_preservation`: what source meaning must remain audible.
|
||||||
|
- `emphasis`: which words or spans carry prominence.
|
||||||
|
- `prosody`: clipped, rising, flat, hesitant, compressed, etc.
|
||||||
|
- `character_pressure`: active state pressures shaping delivery.
|
||||||
|
- `delivery_shape`: pace, pause pattern, intensity, warmth, contempt, tenderness,
|
||||||
|
threat, or play.
|
||||||
|
|
||||||
|
These are labels for review and training. The learned vector is allowed to find
|
||||||
|
better internal dimensions, but it does not get to skip accountability.
|
||||||
|
|
||||||
|
## Training Loop
|
||||||
|
|
||||||
|
First loop:
|
||||||
|
|
||||||
|
1. Author or generate an interlingua packet.
|
||||||
|
2. Project agent-local context.
|
||||||
|
3. Lower to English.
|
||||||
|
4. Human-review whether the line preserves meaning and voice.
|
||||||
|
5. Encode the reviewed line into a line-expression vector.
|
||||||
|
6. AquaSynth decodes the vector into synth-control intent.
|
||||||
|
7. Compare rendered speech against human notes and reference takes when present.
|
||||||
|
8. Feed corrections back into the Weksa encoder and AquaSynth decoder.
|
||||||
|
|
||||||
|
The same fixture can carry:
|
||||||
|
|
||||||
|
- accepted line
|
||||||
|
- rejected line
|
||||||
|
- why the rejected line failed
|
||||||
|
- audit projection
|
||||||
|
- vector artifact
|
||||||
|
- downstream AquaSynth evaluation pointer
|
||||||
|
|
||||||
|
## Non-Goals
|
||||||
|
|
||||||
|
- Do not make Weksa emit raw vocal-tract controls.
|
||||||
|
- Do not make AquaSynth infer character psychology from prose.
|
||||||
|
- Do not treat named audit axes as the true latent space.
|
||||||
|
- Do not make realtime neural voice output the authority.
|
||||||
|
- Do not hide bad semantic preservation behind pleasant delivery.
|
||||||
|
|
@ -16,6 +16,10 @@
|
||||||
|
|
||||||
- Validate one minimal interlingua packet.
|
- Validate one minimal interlingua packet.
|
||||||
- Lower one packet through Nibu's projected agent state into flavored English.
|
- Lower one packet through Nibu's projected agent state into flavored English.
|
||||||
|
- Add one English pronunciation plan that strings the lowered line into broad
|
||||||
|
IPA.
|
||||||
|
- Add one toy line-expression vector fixture, then replace hand-authored values
|
||||||
|
with a learned encoder.
|
||||||
- Preserve the first lowering proof as fixture data under
|
- Preserve the first lowering proof as fixture data under
|
||||||
`examples/english-lowering/`.
|
`examples/english-lowering/`.
|
||||||
- Parse or load one language project definition.
|
- Parse or load one language project definition.
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,66 @@
|
||||||
|
schema_version: weksa.line_expression_vector.v0
|
||||||
|
source_output_ref: examples/english-lowering/nibu-proof-001/lowered-output.yaml
|
||||||
|
speaker_agent_id: nibu
|
||||||
|
encoder:
|
||||||
|
model_id: weksa-line-expression-toy
|
||||||
|
version: 0.0-hand-authored-fixture
|
||||||
|
training_set: none
|
||||||
|
text:
|
||||||
|
spoken_text: Take your hand off that control unless you want your nervous system to become my least useful circuit diagram.
|
||||||
|
normalized_text: take your hand off that control unless you want your nervous system to become my least useful circuit diagram
|
||||||
|
vector:
|
||||||
|
dimensionality: 12
|
||||||
|
values:
|
||||||
|
- 0.92
|
||||||
|
- 0.78
|
||||||
|
- 0.84
|
||||||
|
- 0.18
|
||||||
|
- 0.71
|
||||||
|
- 0.66
|
||||||
|
- 0.22
|
||||||
|
- 0.88
|
||||||
|
- 0.74
|
||||||
|
- 0.31
|
||||||
|
- 0.69
|
||||||
|
- 0.57
|
||||||
|
notes:
|
||||||
|
- Toy vector is hand-authored only to exercise the contract.
|
||||||
|
- Real vectors should come from a learned Weksa encoder.
|
||||||
|
audit_projection:
|
||||||
|
semantic_preservation:
|
||||||
|
must_preserve:
|
||||||
|
- player must stop touching the control
|
||||||
|
- control is dangerous
|
||||||
|
- Nibu is the warning source
|
||||||
|
status: preserved
|
||||||
|
emphasis:
|
||||||
|
prominent_spans:
|
||||||
|
- take your hand off
|
||||||
|
- that control
|
||||||
|
- least useful circuit diagram
|
||||||
|
prosody:
|
||||||
|
pace: clipped_fast
|
||||||
|
phrase_breaks:
|
||||||
|
- after control
|
||||||
|
contour: sharp_command_then_dry_threat
|
||||||
|
character_pressure:
|
||||||
|
precise_abrasive_warning: high
|
||||||
|
irritated_protection: high
|
||||||
|
generic_cruelty: low
|
||||||
|
customer_service_politeness: absent
|
||||||
|
delivery_shape:
|
||||||
|
warmth: low
|
||||||
|
contempt: medium_high
|
||||||
|
threat: medium
|
||||||
|
technical_specificity: high
|
||||||
|
training_refs:
|
||||||
|
positive_examples:
|
||||||
|
- examples/english-lowering/nibu-proof-001/lowered-output.yaml
|
||||||
|
negative_examples: []
|
||||||
|
trace:
|
||||||
|
notes:
|
||||||
|
- First fixture for learned line-expression vector contract.
|
||||||
|
- Values are placeholders, not calibrated latent dimensions.
|
||||||
|
uncertainties:
|
||||||
|
- Need real encoder dimensionality.
|
||||||
|
- Need paired AquaSynth decoder target format.
|
||||||
182
examples/english-lowering/nibu-proof-001/pronunciation-plan.yaml
Normal file
182
examples/english-lowering/nibu-proof-001/pronunciation-plan.yaml
Normal file
|
|
@ -0,0 +1,182 @@
|
||||||
|
schema_version: weksa.english_pronunciation_plan.v0
|
||||||
|
source_output_ref: examples/english-lowering/nibu-proof-001/lowered-output.yaml
|
||||||
|
dialect: en-US-general
|
||||||
|
orthographic_text: Take your hand off that control unless you want your nervous system to become my least useful circuit diagram.
|
||||||
|
normalization:
|
||||||
|
text: take your hand off that control unless you want your nervous system to become my least useful circuit diagram
|
||||||
|
notes:
|
||||||
|
- Lowercased for lookup.
|
||||||
|
- Period removed from pronunciation token stream.
|
||||||
|
- First pass is hand-authored against CMUdict-style ARPABET expectations.
|
||||||
|
tokens:
|
||||||
|
- id: t01
|
||||||
|
text: take
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [T, EY1, K]
|
||||||
|
ipa: teɪk
|
||||||
|
stress: primary
|
||||||
|
- id: t02
|
||||||
|
text: your
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [Y, UH1, R]
|
||||||
|
ipa: jʊɹ
|
||||||
|
stress: primary
|
||||||
|
notes: Chosen unreduced form for clipped warning clarity.
|
||||||
|
- id: t03
|
||||||
|
text: hand
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [HH, AE1, N, D]
|
||||||
|
ipa: hænd
|
||||||
|
stress: primary
|
||||||
|
- id: t04
|
||||||
|
text: off
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [AO1, F]
|
||||||
|
ipa: ɔf
|
||||||
|
stress: primary
|
||||||
|
- id: t05
|
||||||
|
text: that
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [DH, AE1, T]
|
||||||
|
ipa: ðæt
|
||||||
|
stress: primary
|
||||||
|
- id: t06
|
||||||
|
text: control
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [K, AH0, N, T, R, OW1, L]
|
||||||
|
ipa: kənˈtɹoʊl
|
||||||
|
stress: final_primary
|
||||||
|
- id: b01
|
||||||
|
text: ","
|
||||||
|
kind: boundary
|
||||||
|
pronunciation_source: authored_phrase_boundary
|
||||||
|
ipa: "|"
|
||||||
|
notes: Inserted after imperative phrase.
|
||||||
|
- id: t07
|
||||||
|
text: unless
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [AH0, N, L, EH1, S]
|
||||||
|
ipa: ənˈlɛs
|
||||||
|
stress: final_primary
|
||||||
|
- id: t08
|
||||||
|
text: you
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [Y, UW1]
|
||||||
|
ipa: ju
|
||||||
|
stress: primary
|
||||||
|
- id: t09
|
||||||
|
text: want
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [W, AA1, N, T]
|
||||||
|
ipa: wɑnt
|
||||||
|
stress: primary
|
||||||
|
- id: t10
|
||||||
|
text: your
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [Y, UH1, R]
|
||||||
|
ipa: jʊɹ
|
||||||
|
stress: primary
|
||||||
|
- id: t11
|
||||||
|
text: nervous
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [N, ER1, V, AH0, S]
|
||||||
|
ipa: ˈnɝvəs
|
||||||
|
stress: initial_primary
|
||||||
|
- id: t12
|
||||||
|
text: system
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [S, IH1, S, T, AH0, M]
|
||||||
|
ipa: ˈsɪstəm
|
||||||
|
stress: initial_primary
|
||||||
|
- id: t13
|
||||||
|
text: to
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: reduced_function_word
|
||||||
|
arpabet: [T, AH0]
|
||||||
|
ipa: tə
|
||||||
|
stress: unstressed
|
||||||
|
notes: Reduced form fits fluent warning.
|
||||||
|
- id: t14
|
||||||
|
text: become
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [B, IH0, K, AH1, M]
|
||||||
|
ipa: bɪˈkʌm
|
||||||
|
stress: final_primary
|
||||||
|
- id: t15
|
||||||
|
text: my
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [M, AY1]
|
||||||
|
ipa: maɪ
|
||||||
|
stress: primary
|
||||||
|
- id: t16
|
||||||
|
text: least
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [L, IY1, S, T]
|
||||||
|
ipa: list
|
||||||
|
stress: primary
|
||||||
|
- id: t17
|
||||||
|
text: useful
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [Y, UW1, S, F, AH0, L]
|
||||||
|
ipa: ˈjusfəl
|
||||||
|
stress: initial_primary
|
||||||
|
- id: t18
|
||||||
|
text: circuit
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [S, ER1, K, AH0, T]
|
||||||
|
ipa: ˈsɝkət
|
||||||
|
stress: initial_primary
|
||||||
|
- id: t19
|
||||||
|
text: diagram
|
||||||
|
kind: word
|
||||||
|
pronunciation_source: cmudict_expected
|
||||||
|
arpabet: [D, AY1, AH0, G, R, AE2, M]
|
||||||
|
ipa: ˈdaɪəˌɡɹæm
|
||||||
|
stress: primary_secondary
|
||||||
|
phrasing:
|
||||||
|
groups:
|
||||||
|
- id: imperative
|
||||||
|
token_ids: [t01, t02, t03, t04, t05, t06]
|
||||||
|
boundary_after: short_pause
|
||||||
|
prominence:
|
||||||
|
- t01
|
||||||
|
- t03
|
||||||
|
- t06
|
||||||
|
- id: threat_consequence
|
||||||
|
token_ids: [t07, t08, t09, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19]
|
||||||
|
boundary_after: final
|
||||||
|
prominence:
|
||||||
|
- t09
|
||||||
|
- t16
|
||||||
|
- t18
|
||||||
|
- t19
|
||||||
|
ipa:
|
||||||
|
broad: teɪk jʊɹ hænd ɔf ðæt kənˈtɹoʊl ənˈlɛs ju wɑnt jʊɹ ˈnɝvəs ˈsɪstəm tə bɪˈkʌm maɪ list ˈjusfəl ˈsɝkət ˈdaɪəˌɡɹæm
|
||||||
|
with_boundaries: teɪk jʊɹ hænd ɔf ðæt kənˈtɹoʊl | ənˈlɛs ju wɑnt jʊɹ ˈnɝvəs ˈsɪstəm tə bɪˈkʌm maɪ list ˈjusfəl ˈsɝkət ˈdaɪəˌɡɹæm
|
||||||
|
trace:
|
||||||
|
decisions:
|
||||||
|
- Used broad General American IPA.
|
||||||
|
- Kept first "your" unreduced for command clarity.
|
||||||
|
- Reduced "to" to schwa in the consequence clause.
|
||||||
|
- Inserted phrase boundary after "control" to match warning delivery.
|
||||||
|
uncertainties:
|
||||||
|
- "off" may be /ɑf/ for some General American speakers.
|
||||||
|
- "your" may reduce toward /jɚ/ depending on voice profile.
|
||||||
|
- "diagram" stress varies; this pass keeps CMUdict-style first primary stress with later secondary stress.
|
||||||
|
|
@ -18,6 +18,11 @@ steer the machine, describe its authority here.
|
||||||
contract between clients, authoring tools, and language projects.
|
contract between clients, authoring tools, and language projects.
|
||||||
- [english-lowering-packet.md](./english-lowering-packet.md): packet contract
|
- [english-lowering-packet.md](./english-lowering-packet.md): packet contract
|
||||||
for projecting interlingua through agent state into flavored English.
|
for projecting interlingua through agent state into flavored English.
|
||||||
|
- [english-pronunciation-plan.md](./english-pronunciation-plan.md): plan for
|
||||||
|
stringing flavored English into IPA/phoneme sequences before downstream speech.
|
||||||
|
- [line-expression-vector.md](./line-expression-vector.md): learned vector
|
||||||
|
contract for handing prosody, emphasis, and character pressure to downstream
|
||||||
|
synth control.
|
||||||
|
|
||||||
## Source Of Truth
|
## Source Of Truth
|
||||||
|
|
||||||
|
|
|
||||||
37
schemas/english-pronunciation-plan.md
Normal file
37
schemas/english-pronunciation-plan.md
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
# English Pronunciation Plan Contract
|
||||||
|
|
||||||
|
This is the human-facing schema receipt for English pronunciation plans.
|
||||||
|
|
||||||
|
The plan sits after flavored-English lowering and before downstream speech
|
||||||
|
systems such as AquaSynth.
|
||||||
|
|
||||||
|
## Required Fields
|
||||||
|
|
||||||
|
- `schema_version`: currently `weksa.english_pronunciation_plan.v0`.
|
||||||
|
- `source_output_ref`: file or packet reference for the lowered English output.
|
||||||
|
- `dialect`: pronunciation target such as `en-US-general`.
|
||||||
|
- `orthographic_text`: final English text being pronounced.
|
||||||
|
- `tokens`: token-level pronunciation records.
|
||||||
|
- `ipa`: broad IPA output.
|
||||||
|
- `trace`: decisions and uncertainties.
|
||||||
|
|
||||||
|
## Token Records
|
||||||
|
|
||||||
|
Each token should include:
|
||||||
|
|
||||||
|
- `id`
|
||||||
|
- `text`
|
||||||
|
- `kind`: `word`, `punctuation`, `boundary`, or `symbol`
|
||||||
|
- `pronunciation_source`
|
||||||
|
- `arpabet`
|
||||||
|
- `ipa`
|
||||||
|
- `stress`
|
||||||
|
- `notes`
|
||||||
|
|
||||||
|
`arpabet` may be omitted for punctuation and non-CMUdict sources.
|
||||||
|
|
||||||
|
## Boundary
|
||||||
|
|
||||||
|
This contract does not define phonetic features, articulatory gestures, tract
|
||||||
|
morphology, or audio. It only defines the pronunciation string and the trace that
|
||||||
|
explains where it came from.
|
||||||
32
schemas/line-expression-vector.md
Normal file
32
schemas/line-expression-vector.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Line Expression Vector Contract
|
||||||
|
|
||||||
|
This is the human-facing schema receipt for Weksa line-expression vectors.
|
||||||
|
|
||||||
|
The vector sits after flavored-English lowering and before AquaSynth synth
|
||||||
|
control. It is the learned representation of a character's line: meaning,
|
||||||
|
emphasis, prosody, and delivery pressure in one compact artifact.
|
||||||
|
|
||||||
|
## Required Fields
|
||||||
|
|
||||||
|
- `schema_version`: currently `weksa.line_expression_vector.v0`.
|
||||||
|
- `source_output_ref`: lowered English output reference.
|
||||||
|
- `speaker_agent_id`: speaker identity.
|
||||||
|
- `encoder`: model ID and version metadata.
|
||||||
|
- `text`: spoken and normalized text.
|
||||||
|
- `vector`: dimensionality and either inline values or `values_ref`.
|
||||||
|
- `audit_projection`: human-readable probe of what the vector is intended to
|
||||||
|
preserve.
|
||||||
|
- `trace`: notes and uncertainties.
|
||||||
|
|
||||||
|
## Boundary
|
||||||
|
|
||||||
|
The vector is not canonical character state. It is a derived runtime/training
|
||||||
|
artifact.
|
||||||
|
|
||||||
|
The audit projection is not the true latent space. It is a review surface for
|
||||||
|
humans, tests, and training data.
|
||||||
|
|
||||||
|
## Downstream
|
||||||
|
|
||||||
|
AquaSynth may consume the vector through its own decoder. Weksa does not define
|
||||||
|
the synth-control schema here.
|
||||||
|
|
@ -39,6 +39,10 @@ constraints:
|
||||||
internals must not leak into generated dialogue.
|
internals must not leak into generated dialogue.
|
||||||
- AquaSynth owns IPA, phoneme, reference-synth, vocal-tract, and speech parity
|
- AquaSynth owns IPA, phoneme, reference-synth, vocal-tract, and speech parity
|
||||||
work. Weksa owns interlingua-to-English projection.
|
work. Weksa owns interlingua-to-English projection.
|
||||||
|
- Weksa still owns English pronunciation planning: tokenization, word
|
||||||
|
pronunciations, phrase grouping, stress, and broad IPA stringing.
|
||||||
|
- Long-term speech handoff should use learned line-expression vectors from
|
||||||
|
Weksa and learned synth-control decoding in AquaSynth.
|
||||||
|
|
||||||
invariants:
|
invariants:
|
||||||
- Ontology owns meaning.
|
- Ontology owns meaning.
|
||||||
|
|
@ -63,6 +67,9 @@ data_flow:
|
||||||
- accept or decompose source into a Weksa interlingua packet
|
- accept or decompose source into a Weksa interlingua packet
|
||||||
- optionally project the packet through an agent-local state context
|
- optionally project the packet through an agent-local state context
|
||||||
- lower projected meaning into flavored English dialogue
|
- lower projected meaning into flavored English dialogue
|
||||||
|
- optionally produce an English pronunciation plan for the lowered dialogue
|
||||||
|
- optionally encode the line as a learned expression vector for downstream
|
||||||
|
synth control
|
||||||
- apply alien ontology and cultural salience
|
- apply alien ontology and cultural salience
|
||||||
- select grammatical commitments
|
- select grammatical commitments
|
||||||
- derive morphology and lexical families
|
- derive morphology and lexical families
|
||||||
|
|
@ -194,6 +201,11 @@ open_questions:
|
||||||
agent state for English lowering?
|
agent state for English lowering?
|
||||||
- What exact pass/fail rubric proves a Nibu-flavored English line preserves
|
- What exact pass/fail rubric proves a Nibu-flavored English line preserves
|
||||||
interlingua meaning instead of merely sounding sharp?
|
interlingua meaning instead of merely sounding sharp?
|
||||||
|
- What English G2P path should become executable first: CMUdict lookup plus
|
||||||
|
ARPABET-to-IPA conversion, eSpeak NG oracle comparison, or a trained OOV
|
||||||
|
model?
|
||||||
|
- What dimensionality and training corpus should the first Weksa
|
||||||
|
line-expression encoder use?
|
||||||
|
|
||||||
landed_baseline:
|
landed_baseline:
|
||||||
- Language-neutral state spine.
|
- Language-neutral state spine.
|
||||||
|
|
@ -206,4 +218,6 @@ landed_baseline:
|
||||||
- Draft Weksa interlingua standard and packet schema receipt.
|
- Draft Weksa interlingua standard and packet schema receipt.
|
||||||
- Draft flavored-English lowering contract.
|
- Draft flavored-English lowering contract.
|
||||||
- Nibu lowering target note.
|
- Nibu lowering target note.
|
||||||
|
- First English pronunciation plan fixture for Nibu proof output.
|
||||||
|
- First toy line-expression vector fixture for Nibu proof output.
|
||||||
- First Nibu interlingua-to-English lowering fixture.
|
- First Nibu interlingua-to-English lowering fixture.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue