사용자 사전을 사용하면 고유명사나 전문 용어의 읽는 법을 공식 VOICEVOX 엔진에 등록할 수 있습니다. 클라이언트 모드에서는 Laravel 측에 사전을 저장하지 않고, 연결 대상인 공식 엔진이 관리하는 사용자 사전 API를 그대로 이용합니다.
클라이언트 모드의 사용자 사전은 Voicevox 파사드에서 조작합니다. 내부에서는 공식 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 파사드의 각 메서드는 공식 엔진의 API에 대응합니다.
네이티브 모드와의 차이
주의 사항
pronunciation은 카타카나로 지정하세요. 히라가나나 한자는 사용할 수 없습니다.
- 클라이언트 모드에서는 공식 엔진 측의 사전이 업데이트됩니다. Laravel 프로젝트의
storage에는 저장되지 않습니다.
docker run --rm 등 임시 컨테이너를 매번 새로 만드는 경우, 컨테이너 종료 시에 사전이 사라집니다.
- 추가 시 반환되는 UUID는
a1b2c3d4-0000-0000-0000-000000000000 같은 하이픈 있는 형식입니다.
트러블슈팅
단어가 반영되지 않음
- 공식 VOICEVOX 엔진이 실행되고 있는지 확인하세요.
VOICEVOX_URL이 올바른 연결 대상을 가리키고 있는지 확인하세요.
- 읽는 법이 카타카나로 되어 있는지 확인하세요.
- Docker에서 다른 컨테이너를 다시 시작하고 있지 않은지 확인하세요.
사전 파일 위치를 알 수 없음
macOS 빌드판에서는 다음 위치를 확인하세요.
Docker에서는 공식 엔진의 사용자 영역(컨테이너 내)에 저장됩니다. 영속화가 필요한 경우, 컨테이너 내의 사용자 영역을 Docker volume에 마운트하세요.