Vai al contenuto principale

Cos’è il dizionario utente

Con il dizionario utente puoi far memorizzare a VOICEVOX la lettura di nomi propri e termini specialistici. Le parole registrate vengono pronunciate correttamente durante la sintesi vocale.

Panoramica

La funzionalità di dizionario utente di Laravel VOICEVOX è un’implementazione nativa che usa lo UserDict di VOICEVOX Core. I dati del dizionario vengono persistiti in formato JSON in storage/voicevox/user_dict.json.
Poiché utilizza uno storage indipendente dal VOICEVOX Engine ufficiale, le parole registrate lato Laravel non si riflettono lato engine ufficiale (e viceversa).

Configurazione

Per impostazione predefinita vengono salvate in storage/voicevox/user_dict.json. Se vuoi usare un percorso diverso, puoi cambiarlo in config/voicevox.php.
// config/voicevox.php

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

Uso di base

Aggiungere una parola

Registra una parola con add() dell’helper dict().
use function Revolution\Voicevox\dict;

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

// Viene restituito un UUID senza "-"
// Esempio: "550e8400e29b41d4a716446655440000"

Parametri

  • surface (obbligatorio): forma scritta
  • pronunciation (obbligatorio): lettura (solo katakana)
  • accentType (obbligatorio): tipo di accento (0 = piatto, 1 o più = posizione dell’accento)
  • wordType (opzionale): categoria grammaticale (COMMON_NOUN, PROPER_NOUN, VERB, ADJECTIVE, SUFFIX)
  • priority (opzionale): priorità (predefinito 5)

Tipo di accento

  • 0: accento piatto
  • 1: prima mora
  • 2: seconda mora
  • 3: terza mora

Aggiornare una parola

use function Revolution\Voicevox\dict;

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

Eliminare una parola

use function Revolution\Voicevox\dict;

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

Recuperare tutte le parole

use function Revolution\Voicevox\dict;

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

Importare un dizionario

use function Revolution\Voicevox\dict;

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

// Con override: true sovrascrive
dict()->import($json, override: true);

Esportare il dizionario

use function Revolution\Voicevox\dict;

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

Accesso tramite API Engine

Quando è avviata l’API Engine di Laravel VOICEVOX, puoi gestire il dizionario utente anche via HTTP. Non c’è fallback verso l’engine ufficiale: viene usato il dizionario nativo.

Recuperare tutte le parole

curl http://localhost:50513/user_dict

Aggiungere una parola

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

Aggiornare una parola

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

Eliminare una parola

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

Importare un dizionario

curl -X POST "http://localhost:50513/import_user_dict?override=false" \
  -H "Content-Type: application/json" \
  -d @other_dict.json
Se specifichi override=true, tutte le parole del dizionario esistente vengono eliminate prima dell’importazione.

Sintesi vocale dopo la registrazione nel dizionario

Le parole registrate nel dizionario utente vengono consultate automaticamente durante la sintesi vocale.
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');

Note

In pronunciation specifica solo katakana. Hiragana e kanji non sono ammessi.
  • Il dizionario utente della versione Laravel e quello del VOICEVOX Engine ufficiale sono gestiti separatamente.
  • Le operazioni di aggiunta, aggiornamento ed eliminazione delle parole vengono salvate immediatamente nel file JSON.
  • Se non conosci il tipo di accento, prova prima 0 (piatto).

Risoluzione dei problemi

La parola non viene applicata

  1. Controlla i permessi di scrittura sulla directory di storage
  2. Verifica che storage/voicevox/user_dict.json sia stato creato correttamente
  3. Controlla che la scrittura in katakana sia corretta

Non trovi il percorso del file del dizionario

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

Reimpostare il dizionario

rm storage/voicevox/user_dict.json
$path = config('voicevox.core.user_dict');
if (file_exists($path)) {
    unlink($path);
}
Ultima modifica il 13 luglio 2026