Skip to main content
The user dictionary lets you register custom readings for proper nouns and technical terms with the official VOICEVOX engine. In client mode, the dictionary is managed entirely by the connected official engine — Laravel does not store dictionary data locally.

Overview

The client mode user dictionary is operated through the Voicevox facade. Internally it sends HTTP requests to the official VOICEVOX engine endpoints /user_dict, /user_dict_word, and /import_user_dict. The official engine stores dictionary data in the OS user area. On macOS (VOICEVOX app product build), the default path is:
When running the official engine via Docker, data is stored inside the container’s user area. Data persists across container restarts as long as you reuse the same container. However, when creating a temporary container each time with docker run --rm, the dictionary is lost when the container stops. Use a Docker volume to mount the container’s user area if you need persistence. This is separate from the native mode storage/voicevox/user_dict.json. The Laravel config('voicevox.core.user_dict') setting is not used in client mode.

Prerequisites

Start the official VOICEVOX engine.
The connection URL can be changed with VOICEVOX_URL.

Basic usage

Add a word

Use Voicevox::addWord() to register a word.

Parameters

Get all words

Update a word

Specify the UUID returned when the word was added.

Delete a word

Import dictionary data

Import an array in the official engine user dictionary format. With override: false (default), existing words are kept and imported words are added.
To export the dictionary, save the result of Voicevox::userDict() as JSON.

Synthesize after dictionary registration

Words registered in the user dictionary are referenced automatically during synthesis.

Engine API mapping

Each Voicevox facade method maps to an official engine API endpoint.

Differences from native mode

Notes

Set pronunciation in Katakana only. Hiragana and Kanji are not supported.
  • In client mode, the official engine dictionary is updated. Nothing is stored in your Laravel project’s storage.
  • With docker run --rm, the dictionary is lost when the container exits.
  • The UUID returned on add uses the hyphenated format: a1b2c3d4-0000-0000-0000-000000000000.

Troubleshooting

Word updates are not reflected

  1. Confirm the official VOICEVOX engine is running.
  2. Check that VOICEVOX_URL points to the correct engine.
  3. Verify that the reading is in Katakana.
  4. Check whether a different Docker container was started.

Check dictionary file path

On the macOS product build, check:
In Docker, the dictionary is inside the container’s user area. Mount that path as a Docker volume if persistence is required.
Last modified on May 26, 2026