Encoding
Ordinary encoding uses the configured voice map and preserves Piper’s framing:
BOS, PAD, (phoneme IDs, PAD)*, EOS
A map value may contain multiple IDs. The loaded voice’s phoneme_id_map is authoritative; there is no universal symbol vocabulary. PhonemizeResult.token_ids is a flattened convenience view. For Piper inference, use each sentence’s IDs separately.
Missing symbols
A produced phoneme absent from the configured map is recorded in EncodeResult and sentence/result data. The missing policy controls whether processing stops, warns, or continues silently:
from piperg2p import MissingPhonemePolicy, phonemize_prepared
result = phonemize_prepared(
"Hello world",
language="en-us",
config="voice.onnx.json",
missing=MissingPhonemePolicy.WARN,
)
print(result.missing_phonemes)
Policy |
Behavior |
|---|---|
|
Raise |
|
Emit |
|
Skip the unmapped symbol silently |
With WARN and IGNORE, the absent symbol remains recorded in result data even though encoding continues.