자체 화자 학습
배포 전에 저작권을 꼭 확인하세요
학습한 모델을 공개하거나, 합성한 음성을 외부에 배포·업로드할 계획이라면 원본 목소리의 저작권·퍼블리시티권을 반드시 먼저 확인하세요.
유튜브·애니메이션·게임·상업 성우 녹음 등 타인의 음성으로 만든 모델을 공개하면 저작권, 초상권, 퍼블리시티권 침해로 이어질 수 있습니다.
배포까지 염두에 둔다면 본인 목소리, 명시적으로 동의를 받은 목소리, 또는 배포를 허용하는 프리 코퍼스를 사용하세요.
배포까지 자유롭게 쓸 수 있는 일본어 코퍼스 예시
- つくよみちゃんコーパス — 크레딧 표기 조건으로 상업·비상업 이용 가능.
- あみたろの声素材工房 — 개인·상업 이용 가능 (규약 확인 필요).
- ずんだもん 등 VOICEVOX 캐릭터의 ITA/ROHAN 코퍼스 — 캐릭터별 이용 규약 확인 필요.
각 코퍼스마다 크레딧 표기, 상업 이용 가능 여부, 2차 창작 범위가 다릅니다. 배포 전 반드시 공식 규약을 다시 한 번 확인하세요.
HayaKoe는 목소리가 있는 동영상 파일만 준비하면, 학습까지의 전 플로우를 지원합니다.
데이터 준비부터 배포까지는 두 개의 도구로 나뉘어 있습니다.
dev-tools/preprocess/ — 브라우저 GUI (데이터 전처리)
영상·오디오 파일을 업로드하면, 학습용 데이터셋이 나올 때까지의 단계를 GUI 위에서 순서대로 따라갈 수 있습니다.
- 오디오 추출 (Audio Extraction, 자동) — 영상에서 오디오 트랙만 뽑아냅니다.
- 배경음 제거 (Source Separation, 자동) — audio-separator 라이브러리로 BGM·효과음 같은 배경 소리를 걷어내고, 목소리만 남깁니다.
- 문장 분리 (VAD, 자동) — 긴 녹음을 무음 구간 기준으로, 말하는 부분만 짧게 잘라냅니다.
- 분류 (Classification,
직접) — 잘라낸 음성을 어떤 화자의 목소리인지 분류하고, 쓸 수 없는 부분은 버립니다. - 전사 (Transcription, 자동) — 잘라낸 음성 하나하나에 음성 인식 모델 (Whisper) 로 음성에 맞는 텍스트 데이터를 자동으로 생성합니다.
- 검토 (Review,
직접, 생략 가능) — 잘못 전사된 부분을 브라우저에서 직접 수정합니다. - 데이터셋 생성 (Dataset Export, 자동) — 학습 가능한 형태로 데이터를 내보냅니다.
dev-tools/cli/ — 인터랙티브 CLI
GUI 로 만든 데이터셋을 받아 학습부터 배포까지 이어갑니다.
- 전처리 (Preprocessing, 자동) — 학습에 필요한 G2P, BERT 임베딩, 스타일 벡터를 미리 계산합니다.
- 학습 (Training, 자동) — 사전학습된 데이터를 바탕으로, 우리가 준비한 데이터를 파인튜닝합니다.
- 품질 리포트 (Quality Report, 자동) — 학습 중간중간 저장한 모델들로 음성을 일괄 추론하여, 어떤 모델이 가장 좋은 소리를 내는지 확인합니다.
- 배포 (Publish, 자동) — ONNX(추론에 최적화된 모델) 변환부터 HuggingFace / S3 / 로컬 모델 다운로드까지 수행합니다.
두 도구는 같은 data/ 폴더를 공유하므로, GUI 로 만든 데이터셋이 CLI 에 자동으로 인식됩니다.
전체 흐름
학습시키고 싶은 화자의 영상에서 학습용 음성 데이터셋을 만듭니다.
영상에서 오디오를 뽑고, 배경음과 효과음을 걷어내 목소리만 남긴 뒤, 무음 구간을 기준으로 짧은 문장 단위로 자릅니다.
잘라낸 조각은 화자별로 분류하고, Whisper로 텍스트를 자동 생성한 다음 필요한 부분만 직접 다듬어 학습 가능한 형태로 내보냅니다.
만들어 둔 데이터셋으로 일본어 TTS 모델을 파인튜닝합니다.
학습에 필요한 G2P(발음 변환), BERT 임베딩, 스타일 벡터를 미리 계산한 뒤, 사전학습된 Style-Bert-VITS2 JP-Extra 위에 우리 데이터를 얹어 화자에 맞춰 학습을 돌립니다.
중간 체크포인트는 일정 간격으로 계속 저장되어, 다음 단계에서 비교에 쓰입니다.
학습은 오래 돌린다고 무조건 좋아지는 게 아니라, 어느 시점을 지나면 오히려 음질이나 화자 톤이 무너지기도 합니다.
그래서 학습 도중에 저장된 여러 체크포인트로 같은 문장을 일괄 추론해, 어떤 시점의 모델이 가장 좋은 소리를 내는지 비교합니다.
결과는 HTML 한 장에 정리되어 브라우저에서 직접 들어볼 수 있고, 마음에 드는 체크포인트를 골라 다음 단계로 넘어갑니다.
골라낸 체크포인트를 ONNX 형식으로 변환합니다.
ONNX는 CPU 추론에 최적화된 모델 포맷이라, GPU 없는 일반 노트북에서도 가볍게 돌릴 수 있습니다.
변환한 모델은 HuggingFace·S3 같은 클라우드 저장소나 로컬 디렉토리 중 원하는 곳에 올려 둡니다.
한 번 올려 두면 hayakoe 패키지에서 화자 이름만으로 바로 불러와 사용할 수 있습니다.
데이터 준비(①)·학습(②)은 GPU 필수
두 단계 모두 내부에서 모델(배경음 제거·Whisper·VITS2)을 돌리므로, GPU 없이는 사실상 불가능합니다.
품질 리포트(③)·배포(④)는 GPU 없이도 동작합니다. CPU 노트북에서 학습을 돌리는 것은 권장하지 않습니다.
준비하기
이 가이드는 hayakoe 레포를 직접 클론해서 진행합니다.
Linux 환경을 가정합니다
학습 도구는 현재 Linux 환경에서만 동작을 보장합니다.
Windows 는 WSL2 위에서 Linux 가이드를 그대로 따라가는 걸 권장합니다.
1. 레포 클론
git clone https://github.com/LemonDouble/hayakoe.git
cd hayakoe2. uv 설치
uv 는 빠른 Python 패키지·환경 매니저입니다.
curl -LsSf https://astral.sh/uv/install.sh | sh자세한 설치 방법은 uv 공식 가이드 를 참고하세요.
설치가 끝나면 버전이 출력되어야 합니다.
uv --version3. 개발 의존성 설치
이후 명령은 모두 1단계에서 클론한 레포 루트(hayakoe/) 에서 실행합니다.
uv sync전처리 GUI 와 학습 CLI 에 필요한 라이브러리(FastAPI, Whisper, audio-separator, torchaudio 등)가 한 번에 설치됩니다.
4. GPU(CUDA) PyTorch 설치
데이터 준비(①)·학습(②) 단계는 내부에서 ML 모델을 돌리기 때문에 NVIDIA GPU 가 필수입니다.
먼저 드라이버가 정상 설치되어 있는지 확인합니다.
nvidia-smi정상 설치되어 있다면 다음과 같은 출력을 볼 수 있습니다.
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 580.126.09 Driver Version: 580.126.09 CUDA Version: 13.0 |
+-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce RTX 3090 Off | 00000000:06:00.0 Off | N/A |
| 53% 33C P8 38W / 390W | 1468MiB / 24576MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+출력 첫 줄 우측의 CUDA Version 이 본인 드라이버가 지원하는 최대 CUDA 버전 입니다 (위 예시라면 13.0).
그 이하 버전의 PyTorch 빌드를 골라 설치하세요 (아래 예시는 CUDA 12.6 기준).
uv pip install torch --index-url https://download.pytorch.org/whl/cu126다른 CUDA 버전을 쓸 때는 cu126 자리에 본인에게 맞는 버전(cu118, cu121, cu124, cu128 등)을 넣으세요.
설치 확인:
uv run python -c "import torch; print(torch.cuda.is_available())"
# True 가 나오면 OK여기까지 끝나면 아래 각 단계 상세 순서대로 따라가세요.
각 단계 상세
준비가 끝났다면, 아래 순서대로 한 페이지씩 따라가세요.
