Nhân bản một giọng nói ở 48 kHz
với VoxCPM2.
Một mô hình TTS mới vừa đến Soniqo. Nó chạy trên laptop của bạn, xuất âm thanh chất lượng phòng thu 48 kHz, và nhân bản một giọng từ một clip ngắn duy nhất. Bài này đi qua những gì bạn có thể xây với nó, ba cách nó cho bạn nhân bản một giọng, và một cái nhìn thân thiện về cách mô hình hoạt động bên trong.
Bốn điều thay đổi khi nhân bản chạy cục bộ.
Chạy nhân bản trên thiết bị mở khóa bốn thuộc tính cùng lúc — riêng tư, dùng ngoại tuyến, không tốn phí mỗi lần gọi, và toàn quyền sở hữu giọng nói. Mỗi thứ mở ra một lớp sản phẩm khó xây theo cách khác.
Ghi 30 giây một phụ huynh đang đọc. Ứng dụng sách nói sau đó kể bất kỳ chương nào bằng giọng của họ — cùng độ ấm, cùng chất giọng, sinh cục bộ mỗi phiên.
YouTuber và podcaster giữ một giọng nhất quán qua 30 ngôn ngữ. Ghi một lần bằng tiếng Anh, phát cùng tập đó bằng tiếng Nhật, tiếng Tây Ban Nha và tiếng Hindi mà không cần dàn lồng tiếng.
Người đối mặt mất giọng có thể lưu giọng trong một clip ngắn và tiếp tục nói qua công nghệ hỗ trợ nghe giống họ — chứ không phải một engine TTS chung chung.
Mô tả giọng bạn muốn — "phụ nữ trẻ, giọng dịu và ấm" — và mô hình thiết kế nó mà không cần bản ghi tham chiếu. Hữu ích cho NPC game, lời nhắc kiosk, hay A/B test giọng thương hiệu.
VoxCPM2 so với ElevenLabs thế nào.
ElevenLabs là lựa chọn API đám mây hiển nhiên. Đánh đổi là cái gì chạy ở đâu — và ai sở hữu giọng nói sau đó.
Với những sản phẩm cần bảo đảm riêng tư, vận hành ngoại tuyến, hay không tốn phí mỗi lần gọi, nhân bản trên thiết bị là lựa chọn duy nhất — mỗi lần gọi ElevenLabs đều tải âm thanh lên máy chủ của họ.
| VoxCPM2 (Soniqo) | ElevenLabs | |
|---|---|---|
| Chạy ở đâu | Trên thiết bị người dùng | API lưu trữ |
| Âm thanh rời thiết bị | Không | Có (tải lên ElevenLabs) |
| Dùng ngoại tuyến | Có | Không (cần internet) |
| Phí mỗi lần gọi | Không | Tính phí theo ký tự |
| Giấy phép mô hình | Apache 2.0, trọng số mở | Độc quyền, chỉ SaaS |
| Tần số ra tối đa | 48 kHz gốc | 48 kHz (bậc Pro trở lên) |
| Ngôn ngữ | 30 | 29 (Multilingual v2) · 70+ (Eleven v3) |
| Clip tham chiếu cần | 5–30 s | 1 phút (Instant) · 30 phút (Professional) |
| Thiết kế giọng từ văn bản | Có | Có |
Cả hai engine đều đạt 48 kHz; cả hai hỗ trợ phổ ngôn ngữ tương tự cho nhân bản hằng ngày; cả hai đều cho thiết kế giọng từ mô tả văn bản. Khác biệt thực sự là âm thanh có bao giờ rời thiết bị hay không.
Một mô hình, ba lối vào.
Mô hình là như nhau ở mọi lần gọi. Cái thay đổi là bạn truyền tham số nào — điều đó quyết định bạn đang thiết kế giọng từ mô tả, sao chép một giọng đã ghi, hay giữ một chất giọng.
Mô tả giọng bằng ngôn ngữ tự nhiên. Mô hình chọn một giọng khớp và giữ nhất quán qua các lần gọi.
let audio = try await tts.generateVoxCPM2(
text: "Welcome to the show.",
instruct: "A young woman, gentle and warm voice."
)Truyền bất kỳ 5–30 s tiếng nói sạch. Mô hình sao chép âm sắc và nhịp và tổng hợp văn bản mới bằng giọng đó.
let ref = try AudioFileLoader.load(
url: URL(fileURLWithPath: "speaker.wav"),
targetSampleRate: 16000
)
let audio = try await tts.generateVoxCPM2(
text: "This is a cloned voice.",
refAudio: ref
)Truyền clip VÀ bản ghi của nó. Mô hình giờ có thể khớp đặc trưng âm học với âm vị — chất giọng và lựa chọn nguyên âm được giữ lại.
let audio = try await tts.generateVoxCPM2(
text: "Hello from the cloned voice.",
refAudio: ref,
promptText: "this is what the reference clip actually said",
promptAudio: ref
)Cùng một khe đầu vào, lấp bằng những mảnh khác nhau. Mô hình không bao giờ thấy một cờ — nó đọc chuỗi.
VoxCPM2 tạo âm thanh thế nào.
Bốn mô-đun phối hợp. Bạn không cần biết bất kỳ điều nào để dùng mô hình, nhưng nếu tò mò 48 kHz đến từ đâu — đây rồi.
Pipeline bắt đầu bằng một bộ mã hóa cục bộ (LocEnc) hợp nhất token văn bản và (tùy chọn) âm thanh tham chiếu thành một luồng vector duy nhất. Luồng đó nuôi TSLM — mô hình ngôn ngữ MiniCPM-4 28 lớp quyết định "mảnh" âm thanh nào đến tiếp theo, y như một LM văn bản chọn token kế. Một lượt thứ hai qua RALM tinh chỉnh từng mảnh.
Đến đây mọi thứ đều là transformer. Điểm xoắn thú vị là LocDiT: thay vì chọn từ một từ vựng cố định các token âm thanh rời rạc, nó chạy một quá trình khuếch tán nhỏ để "vẽ" latent âm thanh trong mỗi khe. Không codec rời rạc nghĩa là không nút thắt lượng tử hóa — đó là điều cho phép giai đoạn cuối, AudioVAE V2, giải mã thẳng ra 48 kHz. Mọi engine trên thiết bị khác trong ngăn xếp này đều dừng ở 24 kHz.
Sự phân chia đáng lưu ý: LM tự hồi quy giỏi quyết định cái gì nên đến tiếp (nội dung, nhịp, độ dài); đầu khuếch tán giỏi vẽ chi tiết âm học (pha, phổ). VoxCPM2 để mỗi bên làm điều mình giỏi. Đó là lý do mô hình trụ vững chỉ với 2B tham số — kiến trúc kiếm được chất lượng cảm nhận, không phải kích thước.
Đọc nghiên cứu gốc.
Ba kích cỡ. Chọn theo ngân sách đĩa của bạn.
Cả ba gói chạy cùng kiến trúc; chúng chỉ khác nhau ở mức độ lượng tử hóa mô hình ngôn ngữ quyết liệt ra sao. Gói int8 là mặc định khuyến nghị — nó ngang pipeline Python thượng nguồn trên benchmark khứ hồi 8 câu trong khi nhanh hơn và nhỏ hơn 40% so với bf16.
| Gói | Kích cỡ | Tốt cho |
|---|---|---|
| bf16 | ~5.0 GB | Tham chiếu / gỡ lỗi. |
| int8 mặc định | ~3.0 GB | Nhân bản hằng ngày, sách nói, podcast. |
| int4 | ~1.9 GB | Triển khai hạn chế đĩa. |
Từ CLI.
# Voice design — no reference clip
speech speak "Welcome to the show." \
--engine voxcpm2 \
--voxcpm2-instruct "A young woman, gentle and warm voice." \
--output design.wav
# Reference cloning — 5–30 s clean clip
speech speak "This is a cloned voice." \
--engine voxcpm2 \
--voxcpm2-variant int8 \
--voice-sample speaker.wav \
--output clone.wavĐọc tiếp.
Mọi cờ CLI, mọi chế độ sinh, ghi chú sử dụng có trách nhiệm.
So sánh giữa các engine: VoxCPM2, CosyVoice3, Qwen3-TTS ICL.
Cài Soniqo trên Apple Silicon và chạy lần tổng hợp đầu tiên.
Thêm bài về giọng nói trên thiết bị khi ra mắt.
