An emoji can require fallback from a voice such as Eloquence. Naming transforms
speech text before engine selection: Forecast ๐ฎ becomes Forecast crystal
ball, while source text stays intact. This can keep the preferred voice when
the remaining text is compatible; normal repertoire checks still decide.
Naming is enabled by default. Use M-x customize-group RET emacsvox-emoji RET.
Disable emacsvox-emoji-naming-enabled globally or only in a source buffer:
(setq-local emacsvox-emoji-naming-enabled nil)
For Org buffers in your configuration:
(add-hook 'org-mode-hook
(lambda () (setq-local emacsvox-emoji-naming-enabled nil)))
All four options support buffer-local values, which override global defaults. Aural previews use the remembered source policy, and contextual previews its captured policy. Changes during playback do not change an already submitted sample.
emacsvox-emoji-approved-sequences defaults to t for every exact name in
Emacs’s emoji table, including seedling ๐ฑ, flags, keycaps, and joined emoji.
You need not approve each separately; an explicit list restricts eligible
complete sequences. Unknown joined sequences remain intact even if a component
is named.
Arrows and harpoons also receive names in all directions, including diagonal,
double, and curved forms. โ โ โ โ becomes left arrow up arrow right arrow
down arrow. Symbols such as โ and โถ outside the emoji table use Unicode
names. Text/emoji selectors are supported; unknown joined or accented sequences
remain unchanged. Box-drawing characters use Unicode names too: โ becomes
box drawings light vertical. Light, heavy, double, rounded, dashed, and
junction forms follow the same naming settings and limits; custom names can
shorten frequent ones. Foreign-language letters and unrelated symbols retain
normal fallback, and exact character inspection is unchanged.
emacsvox-emoji-maximum-count defaults to 64 occurrences, counting repetition.
๐คDinner? ๐๐๐ becomes thinking face Dinner? pizza pizza pizza without
fallback caused by those four emoji. Above the limit, naming is skipped for
the whole item. One captured presentation can contain several voice runs;
a standalone preview is one item. Transport chunk sizes do not change this
limit. Sequences crossing style or positioned-cue boundaries remain unchanged.
Names come from Emacs’s bundled emoji/Unicode data and may vary with its version. Arrows prefer emoji names where available; the four plain arrows share their emoji equivalents’ names. Missing data leaves the sequence to normal fallback; nothing is downloaded. Names are English and apply even to engines capable of speaking the original.
Explicit pronunciation entries take precedence. For eligible sequences,
emacsvox-emoji-custom-names overrides a bundled name:
(setq-local emacsvox-emoji-custom-names '(("๐ฎ" . "prediction")))
Custom names must contain 1โ80 characters with no control characters. Empty names are invalid; use explicit pronunciation to omit content. Restriction and custom-name lists allow at most 64 entries, with sequences up to 32 characters; full-table mode has no entry limit. The occurrence limit accepts 0โ64. Invalid settings skip automatic naming with an explanation rather than stop speech.
Feedback Details (C-e E) shows original sequences and names or reasons for skipping. Voice-editor playback details report sample substitutions. These are prepared-text evidence, not confirmation of what you heard. Play original retains captured speech text after settings change. Rule proposals change presentation while retaining that text; capture new source feedback to try another naming policy.