Phoneme Injector

The Operator node that works out how each word should be pronounced in context — so the Pronunciation validator knows what “correct” is.

Family: Operator · type: operator_phoneme_injector · canvas name “Phoneme Injector” · beta

The Phoneme Injector works out how each word should be pronounced in context, so the Pronunciation validator has something to grade against. Without it, that check has to judge pronunciation unaided; with it, the check knows what the name was supposed to sound like.

It reads the whole script in one pass, names the words worth looking up — proper nouns, brands, terms — along with the spans they occupy, and queries Onepin’s built-in pronunciation reference for all of them at once. The per-word pronunciations ride along with each line to the check downstream.

English-only, and no CJK. Because it exists to feed the Pronunciation validator, and that check only scores US and British English, this node is usable only on en-us / en-gb Generator branches. Separately, the built-in reference carries no Korean, Japanese, or Chinese data, so a CJK branch is rejected for that reason too.

Where it goes

Immediately before a Pronunciation validator — every one of its outgoing lines edges must go there, because nothing else reads the pronunciations it attaches. Wiring it to a Generator, to Export, or to a different check is rejected.

Its input must already carry generated audio, since the check it feeds scores audio. So a Generator, or any validator’s pass or fail port, may feed it — a Normalizer or the Script source may not. That also rules out placing it before the Generator.

Generator ──▶ Phoneme Injector ──▶ Pronunciation ──pass──▶ Export

Config

Config keyDefaultMeaning
exclude_address_rowstrueSkip street-address records in the reference, so a capitalised run like “Thompson Corner Road” isn’t annotated with a pronunciation nobody asked for
node["config"] = {"exclude_address_rows": True}

max_ngram and llm_candidate_filter are still accepted so that workflows saved before the 2026-08 redesign keep loading, but they are inert — they no longer select anything. Everything else about this node (placement, language coverage, and where the pronunciations come from) is fixed by the graph rules rather than configurable, and an unrecognized config key is a 422 rather than a silent no-op.

What it costs

Billed per input character, at the rate in the live catalog. Use onepin workflows preview-run <WORKFLOW_ID> for a run’s actual estimate.

Inspect this node

client.nodes.get_node_detail(node_type="operator_phoneme_injector").data