> ## Documentation Index
> Fetch the complete documentation index at: https://kawax.biz/llms.txt
> Use this file to discover all available pages before exploring further.

# Mode natif - Dictionnaire utilisateur - VOICEVOX for Laravel

> Comment utiliser le dictionnaire utilisateur en mode natif de VOICEVOX for Laravel pour enregistrer, mettre à jour et importer la prononciation de noms propres et de termes techniques.

## 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`.

<Info>
  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).
</Info>

## 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`.

```php theme={null}
// 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.

```php theme={null}
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

```php theme={null}
use function Revolution\Voicevox\dict;

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

### Supprimer un mot

```php theme={null}
use function Revolution\Voicevox\dict;

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

### Récupérer tous les mots

```php theme={null}
use function Revolution\Voicevox\dict;

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

### Importer un dictionnaire

```php theme={null}
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

```php theme={null}
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

```bash theme={null}
curl http://localhost:50513/user_dict
```

### Ajouter un mot

```bash theme={null}
curl -X POST "http://localhost:50513/user_dict_word?surface=Laravel&pronunciation=ララベル&accent_type=0"
```

### Mettre à jour un mot

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

### Supprimer un mot

```bash theme={null}
curl -X DELETE "http://localhost:50513/user_dict_word/{uuid}"
```

### Importer un dictionnaire

```bash theme={null}
curl -X POST "http://localhost:50513/import_user_dict?override=false" \
  -H "Content-Type: application/json" \
  -d @other_dict.json
```

<Tip>
  Avec `override=true`, tout le dictionnaire existant est supprimé avant l'importation.
</Tip>

## 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.

```php theme={null}
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

<Warning>
  Spécifiez `pronunciation` uniquement en katakana. Les hiragana et les kanji ne sont pas acceptés.
</Warning>

* 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

```php theme={null}
$path = config('voicevox.core.user_dict');
echo $path;
```

### Réinitialiser le dictionnaire

```bash theme={null}
rm storage/voicevox/user_dict.json
```

```php theme={null}
$path = config('voicevox.core.user_dict');
if (file_exists($path)) {
    unlink($path);
}
```


## Related topics

- [Mode client - Dictionnaire utilisateur - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/client-user-dict.md)
- [Mode natif - Presets - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-presets.md)
- [Mode natif : Song (synthèse vocale chantée) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-song.md)
- [Mode natif : Talk (synthèse vocale de texte) - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/native-talk.md)
- [Prise en main - VOICEVOX for Laravel](/fr/packages/laravel-voicevox/getting-started.md)
