IrodoriTTS
Tạo giọng nói tiếng Nhật tự nhiên bằng tính năng nhân bản giọng nói, VoiceDesign dựa trên chú thích (caption) và markup emoji biểu cảm bằng Irodori-TTS v4.1.
Irodori-TTS v4.1 là model text-to-speech tập trung vào tiếng Nhật, hỗ trợ cả nhân bản giọng nói và VoiceDesign được mô tả bằng văn bản trong một checkpoint duy nhất. TomoriBot kết nối với Irodori thông qua wrapper FastAPI cục bộ trong servers/tts/irodoritts/, mặc định sử dụng Aratako/Irodori-TTS-v4.1-Small.
Các checkpoint Hugging Face tương thích có thể được chọn bằng IRODORI_TTS_MODEL_ID, bao gồm các bản fine-tune của cộng đồng như phasefield-audio/Irodori-TTS-v4.1-Anime.
Cài đặt
Phần tiêu đề “Cài đặt”Irodori sử dụng uv để quản lý phần phụ thuộc và backend PyTorch. Máy chủ duy trì pyproject.toml riêng với các phần phụ thuộc Irodori và dacvae đã được ghim để cài đặt có thể tái lập. Hãy cài đặt uv trước, sau đó chạy script thiết lập từ thư mục gốc của repository TomoriBot:
Windows PowerShell (NVIDIA)
Phần tiêu đề “Windows PowerShell (NVIDIA)”.\servers\tts\irodoritts\install-irodori.ps1 cu128.\servers\tts\irodoritts\.venv\Scripts\python.exe servers\tts\irodoritts\server.pyLinux Bash (NVIDIA)
Phần tiêu đề “Linux Bash (NVIDIA)”bash servers/tts/irodoritts/install-irodori.sh cu128servers/tts/irodoritts/.venv/bin/python servers/tts/irodoritts/server.pyCác script thiết lập tạo servers/tts/irodoritts/.venv, do đó bun run launch --irodoritts vẫn tiếp tục hoạt động sau khi cài đặt.
Các backend khả dụng:
cu128: NVIDIA CUDA 12.8 trên Windows và Linuxcpu: Chỉ CPU, hoặc macOS CPU/MPS thông qua PyPIrocm: AMD ROCm trên Linux/WSLxpu: Intel XPU trên Windows và Linux
URL endpoint mặc định là http://127.0.0.1:8013.
Sử dụng một checkpoint khác
Phần tiêu đề “Sử dụng một checkpoint khác”Model mặc định là Aratako/Irodori-TTS-v4.1-Small. Bạn có thể chọn các checkpoint chính thức khác (bao gồm model Large 3.29B tham số và các biến thể lượng hóa của nó), các bản fine-tune cộng đồng hoặc các tệp checkpoint cục bộ thông qua các biến môi trường.
Các checkpoint và biến thể
Phần tiêu đề “Các checkpoint và biến thể”Model / IRODORI_TTS_MODEL_ID | Tham số | Kích thước checkpoint | VRAM khuyến nghị | Ghi chú |
|---|---|---|---|---|
Aratako/Irodori-TTS-v4.1-Small | 766M | 1.5 GB | 4-6 GB | Model mặc định: suy luận nhanh và mức sử dụng bộ nhớ thấp. |
Aratako/Irodori-TTS-v4-Large | 3.29B | 12.25 GB | 10-14 GB | Model Large đầy đủ không lượng hóa với backbone văn bản T5Gemma 2. |
Aratako/Irodori-TTS-v4-Large-Quantized/float8-weight-only | 3.29B | 3.58 GB | 6-8 GB | Trọng số FP8 với activation BF16: khuyến nghị cho NVIDIA Ada (RTX 40-series) trở lên. |
Aratako/Irodori-TTS-v4-Large-Quantized/int8-weight-only | 3.29B | 3.58 GB | 6-8 GB | Trọng số INT8 đa dụng với tính toán BF16 trên NVIDIA CUDA. |
Aratako/Irodori-TTS-v4-Large-Quantized/int4-weight-only | 3.29B | 2.75 GB | 5-6 GB | Biến thể Large nhỏ nhất: yêu cầu NVIDIA Ampere (RTX 30-series) trở lên. |
phasefield-audio/Irodori-TTS-v4.1-Anime | 766M | 1.5 GB | 4-6 GB | Bản fine-tune cộng đồng dành cho cách phát âm phong cách anime. |
Đối với nhân bản giọng nói, Small mang lại chất lượng tương đương với tốc độ suy luận nhanh hơn. Large có bộ mã hóa văn bản mạnh hơn và bám sát các mô tả VoiceDesign hơn.
Máy chủ đọc .env ở thư mục gốc của repository hoặc servers/tts/irodoritts/.env cục bộ.
Qua .env (bền vững)
Phần tiêu đề “Qua .env (bền vững)”Thêm vào .env trong thư mục gốc TomoriBot:
IRODORI_TTS_MODEL_ID="phasefield-audio/Irodori-TTS-v4.1-Anime"Qua biến môi trường cho từng phiên
Phần tiêu đề “Qua biến môi trường cho từng phiên”Trong Windows PowerShell:
$env:IRODORI_TTS_MODEL_ID = "phasefield-audio/Irodori-TTS-v4.1-Anime".\servers\tts\irodoritts\.venv\Scripts\python.exe servers\tts\irodoritts\server.pyTrên Linux Bash:
IRODORI_TTS_MODEL_ID=phasefield-audio/Irodori-TTS-v4.1-Anime \ servers/tts/irodoritts/.venv/bin/python servers/tts/irodoritts/server.pySử dụng tệp checkpoint cục bộ
Phần tiêu đề “Sử dụng tệp checkpoint cục bộ”Nếu bạn đã tải tệp checkpoint (.pt hoặc .safetensors) về máy cục bộ, hãy đặt IRODORI_TTS_CHECKPOINT trỏ tới đường dẫn của tệp đó:
IRODORI_TTS_CHECKPOINT="/path/to/custom_checkpoint.pt"Irodori hiện tại tải checkpoint cùng với bất kỳ asset tokenizer nào đi kèm trong repo Hugging Face. Các biến thể thư mục con trên Hugging Face cũng được hỗ trợ bởi IRODORI_TTS_MODEL_ID khi repo model cung cấp chúng.
Đăng ký trong TomoriBot
Phần tiêu đề “Đăng ký trong TomoriBot”Chạy /providers, chọn Thêm endpoint tùy chỉnh mới, và sử dụng API Compatibility cho giọng nói:
- API Compatibility:
tts-clone endpoint_url:http://127.0.0.1:8013
Sau khi lưu kết nối, chọn kết nối đó và sử dụng dropdown model của nó để thêm một model Speech. Đối với v4.1, các cài đặt được khuyến nghị là:
Voice Source Mode:AutoScript Markup Style:Emoji
Auto cho phép cùng một endpoint Irodori hỗ trợ cả hai chế độ giọng nói của TomoriBot, nhờ đó các tín hiệu cảm xúc không bị mất khi gửi:
- Các persona có mẫu giọng nói được gán trong Persona > Voice sẽ gửi clip tham chiếu đã lưu để nhân bản giọng nói.
- Các persona có prompt VoiceDesign được thiết lập trong Persona > Voice sẽ gửi prompt bằng ngôn ngữ tự nhiên đã lưu làm điều kiện caption cho Irodori.
Bạn vẫn có thể chọn Voice Clone làm Voice Source Mode nếu chỉ muốn nhân bản giọng nói từ âm thanh tham chiếu.
Sử dụng /providers để đăng ký endpoint và thiết lập model. Sau đó mở /config > Models > Switch Models để chọn và kích hoạt endpoint đã đăng ký.
Thiết lập giọng nói persona
Phần tiêu đề “Thiết lập giọng nói persona”Nhân bản giọng nói
Phần tiêu đề “Nhân bản giọng nói”- Chuẩn bị một clip thoại tiếng Nhật rõ ràng với một giọng nói và không có nhạc nền. Khoảng 30 giây là đã đủ: vượt qua mốc đó âm thanh bổ sung hầu như không mang lại thêm độ trung thực âm sắc mà lại tốn dung lượng tải lên và thời gian suy luận.
- Mở
/configtrong Models > TTS Parameters & Voices và tải clip lên. - Mở
/configtrong Persona > Voice, sau đó chọn persona và mẫu giọng nói.
Irodori mặc định giới hạn tham chiếu 120 giây và cắt ngắn các clip dài hơn. Đặt IRODORI_MAX_REF_SECONDS để thay đổi giới hạn này.
Máy chủ mã hóa mỗi đoạn tham chiếu một lần và lưu kết quả trong servers/tts/irodoritts/reference-cache/, nhờ đó các yêu cầu lặp lại sẽ bỏ qua bước này. Việc thay thế clip của persona sẽ tạo một mục mới, và các mục cũ vẫn được giữ lại cho đến khi bạn xóa thư mục này.
VoiceDesign
Phần tiêu đề “VoiceDesign”- Mở
/configtrong Persona > Voice. - Chọn persona.
- Nhập mô tả bằng ngôn ngữ tự nhiên về giọng nói và cách phát âm mong muốn.
TomoriBot gửi prompt này dưới dạng instruct; wrapper Irodori sẽ ánh xạ nó tới điều kiện caption của v4.1. Yêu cầu VoiceDesign không cần clip tham chiếu đã lưu.
TomoriBot loại bỏ cú pháp custom emoji của Discord trước khi gửi văn bản tới TTS. Với script_markup: emoji, emoji Unicode được giữ nguyên cho việc điều kiện hóa văn bản của Irodori.
Điều khiển phong cách bằng emoji
Phần tiêu đề “Điều khiển phong cách bằng emoji”IrodoriTTS hỗ trợ các chú thích emoji trong văn bản đầu vào để tác động đến hiệu ứng âm thanh, phong cách nói và biểu cảm cảm xúc. Khi Script Markup Style của TomoriBot được đặt thành Emoji, các emoji Unicode này sẽ được giữ lại và gửi tới Irodori.
Để biết các emoji được hỗ trợ và ý nghĩa của chúng, hãy xem chú thích emoji ở upstream. Emoji đóng vai trò là các tín hiệu phong cách và kết quả có thể thay đổi.
Tin nhắn thoại dài
Phần tiêu đề “Tin nhắn thoại dài”Văn bản dài được chia thành các đoạn (chunk) và trả về dưới dạng một tin nhắn thoại duy nhất. Các yêu cầu dài có thể vượt quá thời gian chờ mặc định 240 giây; hãy điều chỉnh TTS_SYNTHESIZE_TIMEOUT_MS nếu cần. Đặt IRODORI_CHUNKING_ENABLED=false để tắt chia đoạn hoặc IRODORI_CHUNK_MIN_CHARS để điều chỉnh ngưỡng phân chia.
Suy luận nhanh hơn với sway sampling
Phần tiêu đề “Suy luận nhanh hơn với sway sampling”Mặc định vẫn là lấy mẫu tuyến tính 40 bước chất lượng cao hơn của Irodori. Để có độ trễ thấp hơn, hãy thử Sway Sampling với ít bước hơn:
$env:IRODORI_NUM_STEPS = "6"$env:IRODORI_T_SCHEDULE_MODE = "sway"$env:IRODORI_SWAY_COEFF = "-1.0"Đây là sự đánh đổi giữa chất lượng suy luận và tốc độ, vì vậy hãy thử nghiệm với checkpoint và giọng nói đã chọn trước khi thiết lập cố định.
Chế độ độ trễ thấp (NVIDIA)
Phần tiêu đề “Chế độ độ trễ thấp (NVIDIA)”Chế độ độ trễ thấp giúp xử lý mỗi câu nhanh hơn khoảng 3-4 lần trên GPU NVIDIA với cùng 40 bước và cài đặt giọng nói, vì vậy chế độ này không phải đánh đổi chất lượng như Sway Sampling. Hãy bật tính năng này trong .env:
IRODORI_COMPILE_MODE="cudagraphs"cudagraphs là chế độ nhanh nhất. compile nhanh hơn khoảng 2 lần so với mặc định; hãy thử chế độ này nếu cudagraphs hoạt động không ổn định trên GPU của bạn. Cả hai chế độ đều yêu cầu backend cu128, và máy chủ sẽ từ chối khởi động với một trong hai chế độ này trên các backend khác.
Những điều cần lưu ý:
- Máy chủ sẽ làm nóng (warm up) trước khi báo trạng thái sẵn sàng. Lần khởi động đầu tiên mất khoảng 2-4 phút; các lần khởi động sau mất khoảng 1-2 phút vì các kernel đã biên dịch được lưu đệm trên đĩa.
bun run launch --irodorittssẽ chờ tối đa 5 phút; trên GPU chậm hơn, hãy tăng giới hạn đó bằngTOMORI_TTS_STARTUP_TIMEOUT_MS(tính bằng mili-giây). - Yêu cầu đầu tiên với độ dài câu mới hoặc đoạn âm thanh giọng nói mới sẽ tốn thêm một phần nhỏ của giây, chỉ một lần duy nhất.
- Lượng VRAM sử dụng giảm nhẹ.
- Âm thanh không giống hệt từng bit so với chế độ mặc định đối với cùng một seed. Khi kiểm thử, âm thanh nghe tương đương, vì vậy hãy nghe thử vài câu với giọng nói của riêng bạn trước khi sử dụng chính thức.
Trên Windows, chế độ này cũng cần trình biên dịch Microsoft C++:
- Cài đặt Visual Studio Build Tools cùng khối lượng công việc Desktop development with C++.
- Chạy lại
.\servers\tts\irodoritts\install-irodori.ps1 cu128để gói Windows Triton được cài đặt. - Khởi động máy chủ (hoặc
bun run launch --irodoritts) từ Developer PowerShell for VS, hoặc tải trình biên dịch vào PowerShell thông thường trước:
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"$vs = & $vswhere -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPathcmd /c "`"$vs\VC\Auxiliary\Build\vcvars64.bat`" >nul && set" | ForEach-Object { if ($_ -match "^([^=]+)=(.*)$") { Set-Item -Path "Env:$($Matches[1])" -Value $Matches[2] }}Nếu thiếu trình biên dịch hoặc Triton, máy chủ sẽ dừng khi khởi động và thông báo thành phần bị thiếu.
Các biến môi trường
Phần tiêu đề “Các biến môi trường”| Biến | Mặc định | Mục đích |
|---|---|---|
IRODORI_TTS_MODEL_ID | Aratako/Irodori-TTS-v4.1-Small | Repo model Hugging Face hoặc nguồn repo/subfolder được hỗ trợ |
IRODORI_TTS_CHECKPOINT | không đặt | Checkpoint .pt hoặc .safetensors cục bộ tùy chọn; ghi đè model Hugging Face |
TOMORI_TTS_HOST | 127.0.0.1 | Địa chỉ liên kết máy chủ; xem Truy cập mạng |
IRODORI_TTS_PORT | 8013 | Cổng máy chủ |
IRODORI_MODEL_DEVICE | auto | Thiết bị model (auto, cuda, cpu, mps, xpu) |
IRODORI_CODEC_DEVICE | auto | Thiết bị codec |
IRODORI_MODEL_PRECISION | bf16 trên CUDA, nếu không thì fp32 | Độ chính xác của model |
IRODORI_CODEC_PRECISION | fp32 | Độ chính xác của codec |
IRODORI_COMPILE_MODE | off | off, compile, hoặc cudagraphs; xem Chế độ độ trễ thấp |
IRODORI_NUM_STEPS | 40 | Các bước lấy mẫu Euler |
IRODORI_T_SCHEDULE_MODE | linear | Lịch lấy mẫu (linear hoặc sway) |
IRODORI_SWAY_COEFF | -1.0 | Hệ số sway khi sử dụng lịch sway |
IRODORI_CFG_SCALE_TEXT | 3.0 | Tỷ lệ hướng dẫn văn bản |
IRODORI_CFG_SCALE_CAPTION | 3.0 | Tỷ lệ hướng dẫn Caption / VoiceDesign |
IRODORI_CFG_SCALE_SPEAKER | 5.0 | Tỷ lệ hướng dẫn người nói tham chiếu |
IRODORI_MAX_REF_SECONDS | mặc định theo checkpoint | Giới hạn tùy chọn cho thời lượng âm thanh tham chiếu |
IRODORI_CHUNKING_ENABLED | true | Chia văn bản dài tại các ranh giới dấu câu hợp lệ và nối các đoạn đã tạo |
IRODORI_CHUNK_MIN_CHARS | 80 | Số ký tự không phải khoảng trắng tối thiểu trước khi chia tại ranh giới câu mạnh; dấu phẩy là ranh giới dự phòng ở mức khoảng 1.5 lần giá trị này |