Dia - mô hình TTS open-weight tạo hội thoại chân thực
(github.com/nari-labs)- Dia là mô hình TTS 1.6B tham số tạo giọng hội thoại chất lượng cao dựa trên lời thoại văn bản, có thể điều chỉnh cảm xúc và tông giọng thông qua audio prompt
- Được phát triển bởi Nari Labs; "Nari" trong tiếng Hàn thuần nghĩa là hoa loa kèn
- Có thể chỉ định người nói bằng [S1], [S2] và tạo cả các biểu đạt phi ngôn ngữ như
(laughs),(coughs), đồng thời hỗ trợ voice cloning đơn giản - Có thể chạy trực tiếp trên HuggingFace, đồng thời cung cấp thử nghiệm trên trình duyệt không cần cài đặt và hỗ trợ ZeroGPU
- Hiện chỉ hỗ trợ tiếng Anh, yêu cầu từ 10GB VRAM trở lên, và dự kiến sẽ có mô hình lượng tử hóa cùng hỗ trợ đa ngôn ngữ trong tương lai
Dia: mô hình tổng hợp giọng nói tập trung vào hội thoại
- Dia là mô hình TTS open-weight 1.6B tham số do Nari Labs phát triển
- Khác với TTS truyền thống tạo giọng riêng cho từng người nói, mô hình này dùng cách tạo toàn bộ cuộc hội thoại trong một lần
- Demo: Hugging Face Space
- Mã nguồn: kho GitHub
Tính năng chính
Tạo giọng nói hội thoại
- Có thể chỉ định người nói trong văn bản bằng
[S1],[S2] - Có thể chèn âm thanh phi ngôn ngữ bằng văn bản như
(laughs),(coughs) - Có thể chỉ định cảm xúc, tông giọng và phong cách giọng nói bằng audio prompt
Voice cloning
- Khi cung cấp cùng lúc audio mẫu và lời thoại tương ứng ở dạng văn bản, tính năng voice cloning sẽ được kích hoạt
- Có thể tải audio lên để thử trực tiếp trên Hugging Face Space
- Xem ví dụ chi tiết tại
example/voice_clone.py
Sử dụng dưới dạng thư viện
from dia.model import Dia
model = Dia.from_pretrained("nari-labs/Dia-1.6B")
output = model.generate(text)
- Có thể xuất MP3 bằng
soundfile - Gói PyPI và công cụ CLI cũng sẽ sớm được cung cấp
Cài đặt và chạy
Cách chạy nhanh (dựa trên Gradio)
git clone https://github.com/nari-labs/dia.git
cd dia && uv run app.py
Hoặc nếu không có uv:
cd dia
python -m venv .venv
source .venv/bin/activate
pip install uv
uv run app.py
- Khi chạy, Descript Audio Codec sẽ được tự động tải xuống
- Mỗi lần chạy, giọng nói sẽ được tạo ngẫu nhiên, nên để đảm bảo tính nhất quán cần cố định prompt hoặc seed
Hiệu năng và yêu cầu phần cứng
- Môi trường thử nghiệm: PyTorch 2.0+, CUDA 12.6 trở lên
- VRAM khuyến nghị: từ 10GB trở lên, sắp có phiên bản lượng tử hóa (Quantized)
- Trên GPU A4000 tạo khoảng 40 token/giây (86 token = khoảng 1 giây âm thanh)
- Có thể tăng tốc khi dùng
torch.compile
Kế hoạch sắp tới và TODO
- Hỗ trợ Docker
- Tối ưu tốc độ suy luận
- Lượng tử hóa mô hình (tối ưu bộ nhớ)
- Đang cân nhắc mở rộng như hỗ trợ đa ngôn ngữ và nhiều người nói hơn
Giấy phép và hạn chế sử dụng
- Áp dụng giấy phép Apache 2.0
- Ví dụ về các cách sử dụng bị cấm:
- Tạo giọng của người khác mà không được phép (Identity Misuse)
- Tạo thông tin sai lệch (như Fake News)
- Mục đích bất hợp pháp hoặc ác ý
Cộng đồng và đóng góp
- Nhân sự nghiên cứu: đội ngũ nhỏ gồm 1 người full-time + 1 người part-time
- Có thể chia sẻ phản hồi và đề xuất tính năng qua máy chủ Discord
- Dự án định hướng mã nguồn mở phát triển cùng cộng đồng đóng góp
Tham khảo và nền tảng kỹ thuật
- Mô hình âm thanh: lấy cảm hứng từ SoundStorm, Parakeet, Descript Audio Codec
- Hỗ trợ tính toán: Google TPU Research Cloud, chương trình HuggingFace ZeroGPU
- "Nari" trong tiếng Hàn thuần nghĩa là "hoa loa kèn"
13 bình luận
Wow, tuyệt quá. Chỉ hai người thực hiện thì chắc hẳn việc đảm bảo cả dữ liệu huấn luyện cũng không hề dễ dàng, thật đáng nể.
Chính tác giả đã vào bình luận luôn~ Tôi cũng phải thử một lần mới được.
Rất đáng mong chờ bản tiếng Hàn!!
Ồ, tôi cũng định tự làm rồi đăng lên, nhưng hóa ra bạn đã nhanh tay đăng trước rồi. Cảm ơn bạn.
À ra là do một người Hàn Quốc tạo ra sao! Tôi thử nghe đối chiếu trên trang demo thì thấy chất lượng thực sự rất tốt. Nếu cung cấp audio prompt thì mô hình sẽ tham chiếu giọng nói đó phải không? Tôi cũng tò mò không biết có cần đưa riêng từng ví dụ được phân thành s1 và s2 hay không.
Cảm ơn! Không nhất thiết phải đưa ví dụ được phân tách bằng [S1] [S2] vào audio prompt. Bạn có thể chỉ dùng [S1], hoặc dùng cả [S1] [S2] đều được. Chỉ cần luôn giữ [S1] đứng trước là được.
Bài này được upvote khá nhiều trên Hacker News nên GN+ đã tự động tóm tắt. Tôi chỉ sắp xếp và bổ sung thêm một chút thôi.
Ủng hộ nhé!!
Cảm ơn bạn :))
Đây là model tôi làm ra haha...
Tuyệt vời quá!! Mình sẽ dùng rất tốt T_T/
Cảm ơn bạn :)) Mong mọi người cho mình xin một sao trên GitHub ạ hehe
Đã hoàn tất! Mong sớm được thấy cả tin tức tiếng Hàn nữa!! Cảm ơn bạn
Ý kiến trên Hacker News
Sự thán phục và khen ngợi về mặt kỹ thuật
Đánh giá về chất lượng và đặc điểm giọng nói
Trải nghiệm dùng demo và thử nghiệm trực tiếp
Thảo luận về ứng dụng cho audiobook và tiểu thuyết
Yêu cầu tính năng và câu hỏi liên quan đến tổng hợp giọng nói
Giấy phép và mã nguồn mở
Câu hỏi về dữ liệu huấn luyện và quá trình đào tạo
Tranh cãi về tên trùng lặp
Phản hồi về khả năng sử dụng và cải tiến
venvlà không cần thiếtCác trường hợp phát triển/ứng dụng và tích hợp
Khác