ユーザー辞書を使うと、固有名詞や専門用語の読み方を公式 VOICEVOX エンジンに登録できます。クライアントモードでは Laravel 側に辞書を保存せず、接続先の公式エンジンが管理するユーザー辞書 API をそのまま利用します。
クライアントモードのユーザー辞書は Voicevox Facade から操作します。内部では公式 VOICEVOX エンジンの /user_dict、/user_dict_word、/import_user_dict に HTTP リクエストを送信します。
公式エンジンの辞書データは OS ごとのユーザー領域に保存されます。VOICEVOXアプリ(製品版)macOS のビルド版では通常、次の場所に保存されます。
Docker で公式エンジンを起動している場合も、コンテナ内のユーザー領域に保存されます。コンテナを再起動しても同じコンテナを使い続けている間はデータが維持されます。ただし docker run --rm のように一時コンテナを都度作成している場合は、コンテナ終了時に辞書が失われます。辞書を確実に永続化したい場合は Docker volume でコンテナ内のユーザー領域をマウントしてください。
ネイティブモードの storage/voicevox/user_dict.json とは別管理です。Laravel 側の config('voicevox.core.user_dict') はクライアントモードには使われません。
事前準備
公式 VOICEVOX エンジンを起動します。
接続先は VOICEVOX_URL で変更できます。
基本的な使い方
単語の追加
Voicevox::addWord() で単語を登録できます。
パラメータ
全単語の取得
登録されているすべての単語を取得できます。
単語の更新
追加時に返ってきた UUID を指定して更新します。
単語の削除
辞書のインポート
公式エンジンのユーザー辞書形式の配列をインポートできます。override: false(デフォルト)なら既存の単語は保持され、インポートされた単語が追加されます。
辞書をエクスポートしたい場合は Voicevox::userDict() の結果を JSON に保存します。
辞書登録後の音声合成
ユーザー辞書に登録した単語は、公式エンジンで音声合成するときに自動的に参照されます。
Engine API との対応
Voicevox Facade の各メソッドは、公式エンジンの API に対応しています。
ネイティブモードとの違い
注意事項
pronunciation はカタカナで指定してください。ひらがなや漢字は使用できません。
- クライアントモードでは公式エンジン側の辞書が更新されます。Laravel プロジェクトの
storage には保存されません。
docker run --rm など一時コンテナを都度作成している場合、コンテナ終了時に辞書が失われます。
- 追加時に返る UUID は
a1b2c3d4-0000-0000-0000-000000000000 のようなハイフンあり形式です。
トラブルシューティング
単語が反映されない
- 公式 VOICEVOX エンジンが起動しているか確認してください。
VOICEVOX_URL が正しい接続先を指しているか確認してください。
- 読み方がカタカナになっているか確認してください。
- Docker で別コンテナを起動し直していないか確認してください。
辞書ファイルの場所がわからない
macOS のビルド版では次の場所を確認してください。
Docker では公式エンジンのユーザー領域(コンテナ内)に保存されます。永続化が必要な場合は、コンテナ内のユーザー領域を Docker volume にマウントしてください。