Kaggle menyebutkan dasar 30 jam per minggu, yang dapat lebih tinggi tergantung permintaan dan sumber daya yang tersedia. Kuota diatur ulang pada hari Sabtu pukul 00:00 UTC.
PANDUAN PRAKTIS · PIPER TTS
Dari rekaman
menjadi suara.
Langkah-langkah penting untuk menyiapkan data suara Anda dan melatih model Piper. Batas Kaggle dapat berubah: periksa kuota Anda sebelum pelatihan yang lama.
Membuat dataset LJSpeech untuk Piper TTS
LJSpeech adalah format standar yang diharapkan Piper. Setiap kalimat adalah file WAV terpisah, dipasangkan dengan transkripsinya di metadata.csv.
data.zip
├── metadata.csv # nom_du_fichier|transcription
└── wavs/
├── 000001.wav
└── ...- 01
Mengumpulkan file audio
Gunakan rekaman yang boleh Anda proses dan distribusikan ulang. Sumbernya dapat berupa wiki game, media yang Anda miliki, atau dataset publik.
Mencari dataset LJSpeech di Hugging Face ↗Mengunduh sumber video dengan yt-dlp - 02
Memotong audio menjadi kalimat
Siapkan 1 file WAV per kalimat. Untuk pemotongan otomatis atau penjajaran, Anda dapat menggunakan:
- audiosplitter · pemotongan otomatis
- Montreal Forced Aligner (MFA) · penjajaran paksa
- faster-whisper + VAD · transkripsi dan penanda waktu
- Audacity · pemotongan manual untuk volume kecil
- 03
Membuat metadata.csv
1 baris per file. Pemisahnya adalah garis vertikal; nama harus sama persis dengan file di folder wavs/.
000001.wav|Ini adalah kalimat contoh. 000002.wav|Ini kalimat lain untuk pelatihan. - 04
Mengompres arsip
Letakkan metadata.csv dan folder wavs/ di akar arsip.
zip -r data.zip metadata.csv wavs/ - 05
Mengunggah ke Hugging Face
Buat repositori dataset, misalnya user/wheatley-english-ljspeech. Tambahkan data.zip dan README.md berisi konfigurasi:
--- configs: - config_name: default data_files: - split: train path: data.zip --- - 06
Mempublikasikan di forum Piper
Buat utas di kanal dataset dan pelatihan dengan tautan Hugging Face dan tag yang sesuai.
Membuka kanal Discord ↗
Melatih suara di Kaggle
Kuota GPU diberikan oleh Kaggle ke akun dan dapat bervariasi menurut ketersediaan. Periksa penghitung sebelum memulai sesi yang lama.
Dokumentasi Kaggle menyebutkan batas berkelanjutan 12 jam untuk sesi CPU dan GPU. Notebook CPU tidak memakai kuota GPU, tetapi durasi sesinya tetap terbatas.
Kaggle telah menghapus Tesla P100 pada 15 September 2026. T4 x2 tetap tersedia di notebook; pilih itu untuk pelatihan Piper daripada mengikuti panduan lama P100.
Melanjutkan setelah terputus
Pelatihan penuh sering melebihi 12 jam dalam satu sesi. Notebook Piper proyek ini melanjutkan dari checkpoint Hugging Face: setelah terputus atau kuota habis, jalankan ulang untuk melanjutkan dari checkpoint terakhir yang tersimpan.
Sebelum pelatihan yang lama
- Periksa sisa kuota di pengaturan notebook, profil Anda, atau halaman penggunaan akselerator.
- Hentikan sesi GPU saat tidak digunakan.
- Gunakan T4 x2; P100 tidak lagi tersedia di Kaggle.
Kuota, akselerator, dan antarmuka Kaggle dapat berubah. Selalu periksa informasi yang ditampilkan di akun Anda sebelum pelatihan.
Menggunakan suara Piper
Instal Piper, ambil 2 file suara pilihan, lalu hasilkan WAV secara lokal. Perintah di bawah menggunakan versi yang dikelola oleh Open Home Foundation.
- 01
Menginstal Piper
Piper didistribusikan sebagai paket Python. Panduan lama yang menggunakan repositori rhasspy/piper atau arsip binernya merujuk pada versi historis.
python -m pip install piper-ttspython -m piper.download_voices en_US-lessac-medium - 02
Mengunduh suara
Pilih suara di katalog lalu unduh model ONNX dan file konfigurasi JSON pasangannya. Simpan kedua file bersama; jalur JSON adalah jalur model diikuti .json.
voice.onnx
voice.onnx.json - 03
Menghasilkan file WAV
Unduh dulu suara dari katalog Piper, atau ganti nama di bawah dengan jalur file .onnx Anda.
python -m piper -m ./voice.onnx -f output.wav -- "Bonjour, ceci est un test." - 04
Membaca teks dari file
python -m piper -m ./voice.onnx -f output.wav --input-file mon_texte.txtMembaca suara dalam output langsung
Frekuensi sampel tergantung suara. Periksa voice.onnx.json dan ganti 22050 bila perlu.
echo "Bonjour." | python -m piper -m ./voice.onnx --output-raw | aplay -r 22050 -f S16_LE -c 1 -t raw - 05
Dari Python
import wave from piper import PiperVoice voice = PiperVoice.load("./voice.onnx") with wave.open("output.wav", "wb") as wav_file: voice.synthesize_wav("Bonjour le monde.", wav_file) - 06
Dengan Home Assistant
Piper terintegrasi dengan Home Assistant melalui Wyoming. Tambahkan Piper di Pengaturan → Perangkat dan layanan, lalu gunakan tindakan tts.speak dengan entitas TTS Piper.
Mengonfigurasi Piper di Home Assistant ↗Dengan Node-RED
Paket node-red-contrib-piper-tts yang disebut dalam beberapa panduan tidak terkonfirmasi di katalog publik. Salah satu opsinya adalah memanggil perintah Piper dari node Exec bawaan; sesuaikan jalur dan hak akses dengan instalasi Anda.
- 07
Menyesuaikan hasil
Kualitas antara lain tergantung data pelatihan dan suara yang dipilih. Nilai length-scale yang lebih tinggi memperlambat ucapan; nilai yang lebih rendah mempercepatnya. noise-scale dan noise-w mengubah variasi hasil.
python -m piper -m ./voice.onnx --length-scale 1.5 --noise-scale 0.667 --noise-w 0.8 -f lent.wav -- "Texte lent." python -m piper -m ./voice.onnx --length-scale 0.7 --noise-scale 0.667 --noise-w 0.8 -f rapide.wav -- "Texte rapide."
Mengintegrasikan Piper dalam proyek Node.js dengan pipertts
pipertts menghadirkan Piper di Node.js, dengan output file atau audio dalam memori. Mode yang disarankan adalah PiperNativeTTS: inferensi 100% native dalam proses (ONNX + jembatan espeak terkompilasi), tanpa Python, sekitar 10 kali lebih cepat daripada wrapper. Suara (.onnx + .onnx.json) tetap berupa file terpisah.
- 01
Menginstal dependensi
Dokumentasi menyebutkan Node.js 18+ dan TypeScript 5+. Mode native tidak membutuhkan yang lain: cukup npm install. Mode wrapper klasik (PiperTTS via python3 -m piper) juga membutuhkan Python dan modul Piper. Pemilihan berdasarkan ID katalog dapat mengunduh model dan konfigurasinya ke models/.
npm install pipertts # mode wrapper uniquement : python3 -m pip install piper-tts - 02
Mulai cepat dengan suara katalog
import { PiperNativeTTS, resolveModelPathFromOptions } from "pipertts"; import * as fs from "node:fs"; const modelPath = await resolveModelPathFromOptions({ model: "en_US-lessac-medium", modelsDir: "./models", }); const tts = await PiperNativeTTS.load({ modelPath }); const { audio } = await tts.synthesize("Hello from Piper."); fs.writeFileSync("./hello.wav", audio); - 03
Menggunakan model lokal
Untuk suara yang diunduh manual, berikan jalur file ONNX. File .onnx.json pasangan harus diletakkan di sampingnya; Anda dapat menentukan configPath jika lokasinya berbeda.
import { PiperNativeTTS } from "pipertts"; const tts = await PiperNativeTTS.load({ modelPath: "./models/my-voice.onnx", }); const { audio, sampleRate } = await tts.synthesize("Hello.", { speakerId: 0 }); - 04
API dan format
synthesize() mengembalikan audio (Buffer), sampleRate dan text; outputFile juga menulis ke disk. Opsi: speakerId (multi-suara dan multi-gaya), lengthScale (> 1 memperlambat, < 1 mempercepat), noiseScale, noiseWScale, sentenceSilence, normalizeAudio, volume dan outputFormat (wav, raw, mp3, ogg atau opus). mp3 dan opus memiliki solusi JS murni; ogg membutuhkan FFmpeg. phonemize() dan synthesizeChunks() memberi akses tingkat rendah, kalimat per kalimat.
- 05
Wrapper lawas (PiperTTS)
PiperTTS menjalankan python3 -m piper, 1 proses per sintesis: sekitar 10 kali lebih lambat, hanya untuk lingkungan tempat mesin native tidak berjalan. Membutuhkan Python dan modul Piper.
import { PiperTTS } from "pipertts"; const tts = await PiperTTS.create({ modelPath: "./models/en_US-lessac-medium.onnx", }); await tts.synthesizeToFile("Hello from the legacy wrapper.", "./hello.wav");
