Saltar al contenido principal

Qué es el diccionario de usuario

Con el diccionario de usuario puedes enseñar a VOICEVOX cómo leer nombres propios y términos técnicos. Las palabras registradas se pronunciarán correctamente al sintetizar el audio.

Resumen

La funcionalidad de diccionario de usuario de Laravel VOICEVOX es una implementación nativa que usa el UserDict de VOICEVOX Core. Los datos del diccionario se persisten en formato JSON en storage/voicevox/user_dict.json.
Como usa un almacenamiento independiente del motor oficial de VOICEVOX, las palabras registradas en Laravel no se reflejan en el motor oficial (y viceversa).

Configuración

Por defecto se guarda en storage/voicevox/user_dict.json. Si quieres usar otra ruta, puedes cambiarla en config/voicevox.php.
// config/voicevox.php

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

Uso básico

Añadir una palabra

Registra palabras con add() del helper dict().
use function Revolution\Voicevox\dict;

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

// Se devuelve un UUID sin "-"
// Ejemplo: "550e8400e29b41d4a716446655440000"

Parámetros

  • surface (obligatorio): forma
  • pronunciation (obligatorio): lectura (solo katakana)
  • accentType (obligatorio): tipo de acento (0 = plano, 1 o más = posición del acento)
  • wordType (opcional): clase gramatical (COMMON_NOUN, PROPER_NOUN, VERB, ADJECTIVE, SUFFIX)
  • priority (opcional): prioridad (por defecto 5)

Tipo de acento

  • 0: acento plano
  • 1: primer mora
  • 2: segundo mora
  • 3: tercer mora

Actualizar una palabra

use function Revolution\Voicevox\dict;

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

Eliminar una palabra

use function Revolution\Voicevox\dict;

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

Obtener todas las palabras

use function Revolution\Voicevox\dict;

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

Importar un diccionario

use function Revolution\Voicevox\dict;

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

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

Exportar el diccionario

use function Revolution\Voicevox\dict;

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

Acceso vía Engine API

Si tienes arrancada la Engine API de Laravel VOICEVOX, puedes manipular el diccionario de usuario también por HTTP. No hace fallback al motor oficial; usa el diccionario nativo.

Obtener todas las palabras

curl http://localhost:50513/user_dict

Añadir una palabra

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

Actualizar una palabra

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

Eliminar una palabra

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

Importar un diccionario

curl -X POST "http://localhost:50513/import_user_dict?override=false" \
  -H "Content-Type: application/json" \
  -d @other_dict.json
Si indicas override=true, se elimina todo el diccionario existente antes de importar.

Síntesis de voz tras registrar el diccionario

Las palabras registradas en el diccionario de usuario se consultan automáticamente al sintetizar el audio.
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');

Notas importantes

En pronunciation indica solo katakana. No se pueden usar hiragana ni kanji.
  • El diccionario de usuario de la versión Laravel y el del motor oficial de VOICEVOX se gestionan por separado.
  • Añadir, actualizar y eliminar palabras se guarda inmediatamente en el archivo JSON.
  • Si no sabes qué tipo de acento poner, prueba primero con 0 (plano).

Solución de problemas

La palabra no se refleja

  1. Comprueba los permisos de escritura del directorio de storage.
  2. Comprueba que storage/voicevox/user_dict.json se ha creado correctamente.
  3. Comprueba que la escritura en katakana sea correcta.

No sé dónde está el archivo del diccionario

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

Quiero resetear el diccionario

rm storage/voicevox/user_dict.json
$path = config('voicevox.core.user_dict');
if (file_exists($path)) {
    unlink($path);
}
Última modificación el 13 de julio de 2026