Passer au contenu principal

Qu’est-ce que le dictionnaire utilisateur

Le dictionnaire utilisateur permet de faire mémoriser à VOICEVOX la prononciation de noms propres et de termes techniques. Les mots enregistrés sont lus avec la bonne prononciation lors de la synthèse.

Vue d’ensemble

La fonctionnalité de dictionnaire utilisateur de Laravel VOICEVOX est une implémentation native utilisant le UserDict de VOICEVOX Core. Les données de dictionnaire sont persistées au format JSON dans storage/voicevox/user_dict.json.
Comme un stockage indépendant du moteur officiel VOICEVOX est utilisé, les mots enregistrés côté Laravel ne sont pas répercutés côté moteur officiel (et inversement).

Configuration

Par défaut, les données sont stockées dans storage/voicevox/user_dict.json. Pour utiliser un autre chemin, modifiez config/voicevox.php.
// config/voicevox.php

return [
    'core' => [
        'user_dict' => storage_path('voicevox/user_dict.json'),
    ],
];

Utilisation de base

Ajouter un mot

Utilisez add() du helper dict() pour enregistrer un mot.
use function Revolution\Voicevox\dict;

$uuid = dict()->add(
    surface: 'Laravel',
    pronunciation: 'ララベル',
    accentType: 0,
);

// Un UUID sans "-" est retourné
// exemple : "550e8400e29b41d4a716446655440000"

Paramètres

  • surface (requis) : forme écrite
  • pronunciation (requis) : prononciation (katakana uniquement)
  • accentType (requis) : type d’accent (0 = plat, 1 ou plus = position de l’accent)
  • wordType (facultatif) : nature grammaticale (COMMON_NOUN, PROPER_NOUN, VERB, ADJECTIVE, SUFFIX)
  • priority (facultatif) : priorité (par défaut 5)

Type d’accent

  • 0 : accent plat
  • 1 : première more
  • 2 : deuxième more
  • 3 : troisième more

Mettre à jour un mot

use function Revolution\Voicevox\dict;

dict()->update(
    wordUuid: '550e8400-e29b-41d4-a716-446655440000',
    surface: 'Laravel',
    pronunciation: 'ラレベル',
    accentType: 1,
);

Supprimer un mot

use function Revolution\Voicevox\dict;

dict()->delete('550e8400-e29b-41d4-a716-446655440000');

Récupérer tous les mots

use function Revolution\Voicevox\dict;

$words = dict()->all();
// ou
$words = dict()->toArray();

Importer un dictionnaire

use function Revolution\Voicevox\dict;

$json = file_get_contents('other_user_dict.json');
dict()->import($json, override: false);

// Avec override: true, le dictionnaire est écrasé
dict()->import($json, override: true);

Exporter un dictionnaire

use function Revolution\Voicevox\dict;

$json = dict()->toJson();
file_put_contents('exported_dict.json', $json);

Accès via l’Engine API

Si l’API du moteur Laravel VOICEVOX est démarrée, vous pouvez également manipuler le dictionnaire utilisateur en HTTP. Il n’y a pas de fallback vers le moteur officiel : c’est bien le dictionnaire natif qui est utilisé.

Récupérer tous les mots

curl http://localhost:50513/user_dict

Ajouter un mot

curl -X POST "http://localhost:50513/user_dict_word?surface=Laravel&pronunciation=ララベル&accent_type=0"

Mettre à jour un mot

curl -X PUT "http://localhost:50513/user_dict_word/{uuid}?surface=Laravel&pronunciation=ラレベル&accent_type=1"

Supprimer un mot

curl -X DELETE "http://localhost:50513/user_dict_word/{uuid}"

Importer un dictionnaire

curl -X POST "http://localhost:50513/import_user_dict?override=false" \
  -H "Content-Type: application/json" \
  -d @other_dict.json
Avec override=true, tout le dictionnaire existant est supprimé avant l’importation.

Synthèse vocale après enregistrement au dictionnaire

Les mots enregistrés dans le dictionnaire utilisateur sont automatiquement pris en compte lors de la synthèse.
use function Revolution\Voicevox\{dict, talk};

dict()->add(
    surface: 'Laravel',
    pronunciation: 'ララベル',
    accentType: 0,
);

$response = talk('Laravelで開発するのは楽しいです', id: 1)->generate(id: 1);
$response->storeAs('native', 'laravel.wav');

Précautions

Spécifiez pronunciation uniquement en katakana. Les hiragana et les kanji ne sont pas acceptés.
  • Le dictionnaire utilisateur de la version Laravel et celui du moteur officiel VOICEVOX sont gérés séparément.
  • Les ajouts, mises à jour et suppressions de mots sont immédiatement écrits dans le fichier JSON.
  • Si le type d’accent est inconnu, commencez par essayer 0 (plat).

Dépannage

Les mots ne sont pas pris en compte

  1. Vérifiez les droits d’écriture sur le dossier de storage.
  2. Vérifiez que storage/voicevox/user_dict.json est bien créé.
  3. Vérifiez que la notation en katakana est correcte.

L’emplacement du fichier de dictionnaire est inconnu

$path = config('voicevox.core.user_dict');
echo $path;

Réinitialiser le dictionnaire

rm storage/voicevox/user_dict.json
$path = config('voicevox.core.user_dict');
if (file_exists($path)) {
    unlink($path);
}
Dernière modification le 13 juillet 2026