Skip to content

自訂說話人訓練

部署前請務必確認版權

如果計劃公開學習好的模型或對外發佈/上傳合成的語音,請務必先確認原始聲音的版權與肖像權。

使用 YouTube、動畫、遊戲、商業配音等他人聲音訓練的模型公開發佈可能構成版權、肖像權、公開權侵權。

如果考慮部署,請使用本人聲音、已獲得明確授權的聲音或允許發佈的免費語料庫。


可自由使用至部署的日語語料庫範例

  • つくよみちゃんコーパス — 標註署名條件下商業、非商業均可使用。
  • あみたろの声素材工房 — 個人、商業使用均可(需確認使用條款)。
  • ずんだもん 等 VOICEVOX 角色的 ITA/ROHAN 語料庫 — 需確認各角色使用條款。

各語料庫的署名標註、商業使用可否、二次創作範圍各不相同。部署前請務必再次確認官方條款。

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 自動識別。

全流程

GUIGPU 必需
資料準備

從想要訓練的說話人的影片中製作學習用語音資料集。

從影片中擷取音訊,去除背景音與音效只留人聲,然後按靜音區間分割成短句。

將分割出的片段按說話人分類,用 Whisper 自動生成文字,必要時手動修正後匯出為可訓練的格式。

準備影片音訊擷取背景音去除句子分割說話人分類轉錄審核資料集匯出
CLIGPU 必需
前處理 & 訓練

用準備好的資料集微調日語 TTS 模型。

預先計算訓練所需的 G2P(發音轉換)、BERT 嵌入、風格向量後,在預訓練的 Style-Bert-VITS2 JP-Extra 基礎上載入我們的資料針對說話人進行訓練。

中間檢查點會按一定間隔持續儲存,在下一步驟中用於比較。

G2P·BERT 計算風格嵌入微調檢查點儲存
CLI
品質報告

訓練並非跑得越久越好,過了某個點後音質或說話人音色反而可能崩壞。

因此使用訓練期間儲存的多個檢查點對同一句話進行批次推論,比較哪個時間點的模型發出最好的聲音。

結果整理在一張 HTML 中,可在瀏覽器中直接試聽,選擇滿意的檢查點進入下一步。

批次推論HTML 報告檢查點選擇
CLI
部署

將選定的檢查點轉換為 ONNX 格式。

ONNX 是針對 CPU 推論最佳化的模型格式,即使在沒有 GPU 的普通筆電上也能輕量執行。

轉換後的模型可以上傳到 HuggingFace、S3 等雲端儲存或本地目錄。

上傳一次後,hayakoe 套件可以直接透過說話人名稱載入使用。

ONNX 轉換HuggingFaceS3本地

資料準備(①)、訓練(②)需要 GPU

兩個步驟內部都執行模型(背景音去除、Whisper、VITS2),沒有 GPU 實際上無法進行。

品質報告(③)、部署(④)不需要 GPU 也能執行。不建議在 CPU 筆電上進行訓練。

準備工作

本指南需要直接 clone hayakoe 儲存庫來進行。

假設 Linux 環境

訓練工具目前僅保證在 Linux 環境下執行。

Windows 建議在 WSL2 上按照 Linux 指南操作。

1. Clone 儲存庫

bash
git clone https://github.com/LemonDouble/hayakoe.git
cd hayakoe

2. 安裝 uv

uv 是一個快速的 Python 套件、環境管理器。

bash
curl -LsSf https://astral.sh/uv/install.sh | sh

詳細安裝方法請參考 uv 官方指南

安裝完成後應該能看到版本輸出。

bash
uv --version

3. 安裝開發相依套件

之後的指令全部在第 1 步 clone 的 儲存庫根目錄(hayakoe/) 下執行。

bash
uv sync

前處理 GUI 與訓練 CLI 所需的函式庫(FastAPI、Whisper、audio-separator、torchaudio 等)會一次性安裝完成。

4. 安裝 GPU (CUDA) PyTorch

資料準備(①)、訓練(②)步驟內部執行 ML 模型,因此 NVIDIA GPU 是必需的。

首先確認驅動程式是否正常安裝。

bash
nvidia-smi

正常安裝的話可以看到如下輸出。

text
+-----------------------------------------------------------------------------------------+
| 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)。

bash
uv pip install torch --index-url https://download.pytorch.org/whl/cu126

使用其他 CUDA 版本時,將 cu126 替換為適合您的版本(cu118cu121cu124cu128 等)。

安裝驗證:

bash
uv run python -c "import torch; print(torch.cuda.is_available())"
# 輸出 True 即可

完成後按照下方 各步驟詳解 的順序操作。

各步驟詳解

準備完成後,請按以下順序逐頁操作。