用手機錄音,用您的聲音訓練專屬TTS語音引擎
用手機錄音,訓練專屬 Home Assistant Piper 語音
手機唸出畫面上的句子,電腦用 GPU 自動訓練,最後得到能放進 Home Assistant 的 .onnx 語音檔。全程雙擊一個檔案就能啟動,不需要手動安裝任何東西。
實測環境:Windows 11 ・ Intel 13600K ・ RTX 3070 8GB ・ piper-tts 1.8
📱手機開網頁
唸句子錄音
➜唸句子錄音
💻電腦伺服器
接收錄音
➜接收錄音
🧠GPU 訓練
Piper VITS
➜Piper VITS
📦匯出
.onnx + .json
➜.onnx + .json
🏠放進 HA
語音助理使用
語音助理使用
0準備
把下面 5 個檔案放進同一個資料夾(例如 TTS claude):
TTS claude/
├─ start.bat ← 雙擊這個
├─ start.py 自動安裝環境並啟動
├─ train_server.py 接收錄音、呼叫訓練與匯出
├─ monotonic_core.py 免編譯器的對齊模組
└─ piper_recorder.html 手機錄音網頁
- 需要 Windows 11、NVIDIA 顯示卡(含驅動)、手機與電腦連同一個 Wi-Fi。
- 沒有 Python 也沒關係,
start.bat會用 winget 自動安裝 Python 3.12。
1啟動伺服器
雙擊 start.bat。第一次會自動建環境、安裝 CUDA 版 PyTorch 與 piper(約 3GB,10~30 分鐘),之後秒開。
Windows 防火牆第一次會詢問,請按「允許」。手機瀏覽器必須用 https 才能使用麥克風。
2用手機錄音
手機開 https://電腦IP:8766。畫面會顯示一句話,按「錄音」唸完再按一次停止,可試聽、重錄,再按「下一句」。內建 30 句,也可在「自訂句子」貼上自己的稿(每行一句)。
- 在安靜環境、固定的嘴巴與麥克風距離、固定音量下錄。
- 錄音會在瀏覽器內轉成 22050Hz 單聲道 WAV,並產生
metadata.csv,跟 Piper 訓練格式一致。 - 使用伺服器提供的網頁時不需要匯出 ZIP,訓練時會自動上傳;「匯出 ZIP」只用於備份。
3訓練
展開頁面下方「🧠 本機訓練」,設定保持預設,按「上傳並訓練」。
| 設定 | 說明 |
|---|---|
| batch size 8 | RTX 3070 8GB 的安全值;若出現 out of memory 改成 4 |
| epochs | 錄音越多,每個 epoch 步數越多。資料少時建議調高(例如 1000 以上) |
| 基底模型 | 留空會自動下載官方中文模型(約 850MB),只借用聲碼器部分;失敗時自動退回從零訓練 |
第一次會等比較久:除了 850MB 基底模型,還會下載約 392MB 的音質評分模型,網速慢可能要半小時。下載完會快取,之後不用再等。
4匯出 .onnx
訓練跑完會自動匯出。如果只想用現有的 checkpoint 重新匯出,按「只匯出」即可(不用重訓)。狀態變成 done 後,頁面下方出現下載連結,檔案也在電腦的 work\out\。
work/out/
├─ myvoice.onnx
└─ myvoice.onnx.json
5放進 Home Assistant
- 把兩個檔案改名為
zh_CN-myvoice-medium.onnx與zh_CN-myvoice-medium.onnx.json(兩者名稱必須對應)。 - 放進 HA 的
/share/piper/(可用 Samba 或 File editor;若你的 Piper add-on 提供上傳功能也可直接上傳)。 - 到「設定 → 裝置與服務」,找到 Wyoming 的 Piper 整合,按「重新載入」。
- 到「設定 → 語音助理」,編輯助理,在「文字轉語音」選擇你的語音。
/share/
└─ piper/
├─ zh_CN-myvoice-medium.onnx
└─ zh_CN-myvoice-medium.onnx.json
自訂語音通常不會出現在 add-on 設定頁的下拉選單,只要在語音助理裡選,或呼叫 TTS 服務時手動指定
voice: zh_CN-myvoice-medium 即可。6讓聲音更好
30 句只能驗證流程(我們實測 val_mos 只有 1.286),聲音會含糊不清。要能用的聲音:
- 錄到 200 句以上,句子涵蓋不同長度、數字、疑問句。
- 把 epochs 提高(1000 以上),訓練中可隨時「停止並匯出」試聽。
- 錄音品質一致:同一支麥克風、同一個房間、避免爆音。
7疑難排解
| 症狀 | 原因與處理 |
|---|---|
| 手機打不開網頁 | 先用 http 網址測試;防火牆允許 python.exe(私人網路);手機與電腦需同一個 Wi-Fi、非訪客網路 |
黑色視窗狂噴 CERTIFICATE_UNKNOWN | 手機拒絕自簽憑證的無害雜訊;換用最新版 train_server.py 會自動忽略 |
第一個 epoch 後當掉,提到 val_mos | 缺少 torchaudio;新版 start.py 會自動補裝 |
匯出:No module named onnxscript | 新版 PyTorch 匯出需要它;新版 start.py 會自動補裝 |
| 匯出:Could not guard on data-dependent… | 新匯出器不相容;新版 train_server.py 改用傳統匯出器 |
| CUDA out of memory | batch size 改成 4 |
| HA 看不到語音 / INVALID_PROTOBUF | 檢查兩個檔案同名、放在 /share/piper/,重新複製後重新載入整合 |
本流程基於 OHF-Voice/piper1-gpl 的訓練文件;中文使用 pinyin 音素模式。
留言
張貼留言