StyleTTS2 - chuyển văn bản thành giọng nói dựa trên style diffusion và học đối kháng với SLM lớn
(github.com/yl4579)- StyleTTS2 là mô hình chuyển văn bản thành giọng nói hướng tới tổng hợp TTS ở mức con người bằng cách tận dụng style diffusion và học đối kháng dựa trên speech language model (SLM) quy mô lớn
- Mô hình hóa style như một biến xác suất tiềm ẩn của diffusion model để tạo ra style phù hợp với văn bản mà không cần reference speech, đồng thời sử dụng latent diffusion hiệu quả nhằm khai thác khả năng tổng hợp giọng nói đa dạng của diffusion model
- Sử dụng SLM tiền huấn luyện lớn như WavLM làm discriminator, đồng thời áp dụng duration modeling khả vi để thực hiện huấn luyện end-to-end và cải thiện độ tự nhiên của giọng nói
- Trên bộ dữ liệu đơn người nói LJSpeech, mô hình vượt qua human recordings theo đánh giá của người nói tiếng Anh bản ngữ; trên bộ dữ liệu đa người nói VCTK, mô hình đạt mức ngang với human recordings; mô hình huấn luyện trên LibriTTS cho thấy hiệu năng cao hơn các publicly available models hiện có trong zero-shot speaker adaptation
- Quy trình huấn luyện và suy luận bao gồm LJSpeech đơn người nói, VCTK·LibriTTS đa người nói, và fine-tuning người nói mới dựa trên mô hình đa người nói đã tiền huấn luyện
- Huấn luyện giai đoạn đầu dùng
accelerate launch train_first.py --config_path ./Configs/config.yml, huấn luyện giai đoạn hai dùngpython train_second.py --config_path ./Configs/config.yml - Phiên bản DDP của
train_second.pykhông hoạt động nên hiện dùng DP, và script fine-tuning cũng có điều kiện khiến DDP không hoạt động
- Huấn luyện giai đoạn đầu dùng
- Các điều kiện chạy chính gồm Python >= 3.7, cài đặt
requirements.txt, càiphonemizervàespeak-ngkhi chạy demo, và upsample dữ liệu LJSpeech lên 24 kHz - Các mô-đun tiền huấn luyện gồm ASR cho text aligner, JDC cho pitch extractor, và PL-BERT
- ASR aligner được tiền huấn luyện trên các corpus English (LibriTTS), Japanese (JVS), Chinese (AiShell)
- JDC pitch extractor chỉ được tiền huấn luyện trên corpus English (LibriTTS)
- PL-BERT chỉ được tiền huấn luyện trên corpus English (Wikipedia), nên với các ngôn ngữ khác cần PL-BERT dành cho ngôn ngữ đó; multilingual PL-BERT hỗ trợ 14 ngôn ngữ
- Suy luận được cung cấp qua
Inference_LJSpeech.ipynbcho đơn người nói vàInference_LibriTTS.ipynbcho đa người nói, đồng thời có thể tải các mô hình tiền huấn luyện LJSpeech và LibriTTS từ Hugging Face - Giấy phép mã nguồn là MIT License, và khi dùng các mô hình tiền huấn luyện phải thông báo cho người nghe rằng đó là giọng nói tổng hợp, hoặc chỉ tổng hợp công khai giọng nói của những người nói mà bạn có quyền sử dụng
1 bình luận
Ý kiến trên Hacker News
Đã tạo một chatbot giọng nói chạy 100% cục bộ bằng các mảnh ghép mã nguồn mở như StyleTTS2, Whisper và OpenHermes2-Mistral-7B, và phản hồi nhanh hơn ChatGPT rất nhiều
Không phải kiểu tương tác cứng nhắc theo phong cách Siri như các trợ lý giọng nói khác, mà có thể qua lại gần giống hội thoại thật nên khá thú vị
Trên một PC gaming Windows có GPU Nvidia 12GB, trong bài test với 3060 12GB có thể cài đặt một lần là trò chuyện được mà không cần đụng tới Python hay CUDA: https://apps.microsoft.com/detail/9NC624PBFGB7
Bản demo vẫn còn thô, như cần tai nghe và chạy dưới dạng ứng dụng console, nhưng tạo cảm giác như đang cho thấy trước những gì sắp có thể làm được trên PC gaming phổ thông chỉ với việc ghép các thành phần mã nguồn mở, và còn có nhiều mô hình cải tiến chưa kịp tích hợp
Đặc biệt là nếu đối phương nói quá lâu thì tôi có thể chen vào để ngắt, hoặc trong lúc tôi đang nói thì AI có thể đệm những câu ngắn, kiểu ngắt lời và xen lời giống như hội thoại bình thường thì sẽ rất hay
Nếu tốc độ đạt mức nhanh hơn thời gian thực thì về lý thuyết có vẻ đã có thể bắt đầu làm những tính năng đó, và để có hội thoại hoàn toàn tự nhiên thì có lẽ còn cần nhận biết ngữ cảnh để AI nhìn nét mặt và cử chỉ cơ thể rồi phán đoán xem người kia có đang nói dài hay không
Ngay cả trên EVGA 3080Ti 12GB thì độ trễ vẫn khá lớn, và có vẻ chỉ nói một lần mà nó lại xử lý cùng một đầu vào nhiều lần, lặp lại các kết quả nhận dạng hơi khác nhau
Cuối cùng còn xuất hiện cả vấn đề nó nghe chính giọng mình và tự trả lời chính nó
Tôi đã test StyleTTS2 vào tháng trước và có tổng hợp lại ghi chú từng bước có thể hữu ích cho ai cài đặt cục bộ: https://llm-tracker.info/books/howto-guides/page/styletts-2
Tôi cũng so sánh nhanh tốc độ và chất lượng của nó với VITS, XTTS bằng mô hình LJSpeech, và StyleTTS2 khá tốt đồng thời rất nhanh: https://fediverse.randomfoo.net/notice/AaOgprU715gcT5GrZ2
Tôi cũng tò mò liệu có làm được các chức năng tương ứng với infill hay outpainting không, và kiểu tổng hợp giọng nói siêu nhanh với chất lượng này hứa hẹn rất nhiều ứng dụng, đặc biệt trong phát triển game indie và game thử nghiệm
Anchor
#mambaforgetrong liên kết cũng không hoạt độngTài liệu hơi rời rạc nên quá trình thiết lập có phần khá phiền, nhưng sau khoảng 20 phút thì chạy tốt trên WSL Ubuntu 22.04
Chất lượng âm thanh rất tốt, tốt hơn nhiều so với các dự án tổng hợp giọng nói mã nguồn mở khác mà tôi từng thấy, và với GPU 4090 thì cực kỳ nhanh
Chưa rõ đã đạt tới chất lượng của ElevenLabs hay chưa, nhưng điểm hấp dẫn của ElevenLabs là thư viện giọng nói chất lượng cao rất lớn và dễ chọn. Trong thư viện này tôi vẫn chưa tìm ra cách chọn giọng nào khác ngoài giọng nữ mặc định
Điểm cốt lõi thực sự của ElevenLabs là voice cloning gần như tức thì chỉ với một mẫu dài 5 phút, và nó làm tốt đến mức đáng kinh ngạc, hơi rợn người. Tôi hy vọng tính năng này sẽ sớm khả thi hoàn toàn bằng mã nguồn mở. Các dịch vụ API quá đắt cho nhiều trường hợp sử dụng, và ngay cả OpenAI tương đối rẻ cũng tốn khoảng 10 xu cho vài nghìn từ được tạo ra
/Demorồi mởInference_LJSpeech.ipynbhoặcInference_LibriTTS.ipynblà sẽ chạy đượcTức là phần tổng hợp giọng nói đảm nhiệm ngữ điệu và phát âm, còn RVC đảm nhiệm chất giọng, nên nếu kết hợp StyleTTS với pipeline này thì có thể tiến gần tới ElevenLabs
Việc tổng hợp audio ngắn gần như đã là bài toán được giải quyết trong thế giới tổng hợp giọng nói, nhưng khi cố tạo audiobook bằng text-to-speech thì mọi thứ bắt đầu sụp đổ
Thú vị là các ví dụ TTS2 nghe còn hay hơn cả giọng chuẩn thực tế https://styletts2.github.io/
Ví dụ ở câu “Then leaving the corpse within the house [...]”, giọng chuẩn phát âm từ
housenghe kỳ lạ, như bị nhấc tông lên, còn bản TTS2 nghe tự nhiên hơnTôi muốn dùng nó cho nhiều file ePub như light novel Nhật Bản không có audiobook. Hiện tôi đang dùng Moon+ Reader TTS trên Android nhưng nó khá robot
Năm 2023 thì không có cách nào thắng được chuyện đó
Dù vậy kết quả rất ấn tượng và vượt trội hơn mọi hệ thống tổng hợp giọng nói khác
Tiêu đề HN hiện tại là “StyleTTS2 – open-source Eleven Labs quality Text To Speech”, nhưng tiêu đề gốc không đưa tên một sản phẩm cụ thể nào, và bài arXiv được liên kết từ đó cũng không nhắc tới ElevenLabs
Theo tôi biết thì kiểu chỉnh sửa tiêu đề như thế này nên tránh
Nếu một hệ thống mã nguồn mở có thể tiệm cận chất lượng đó thì rất đáng chú ý, nên tôi nghĩ đa số sẽ cảm kích phép so sánh này. Thực tế là chính so sánh đó đã khiến tôi quan tâm
Tôi muốn hỏi những người đã dùng thành công là phần voice cloning này hoàn toàn khác XTTSv2 và càng không thể so với ElevenLabs
Có vẻ nó không chú ý nhiều tới ngữ điệu, chỉ là khớp cao độ và nhịp điệu khá ổn
Tôi đã thử thay đổi
alpha,beta,embedding scale,diffusion stepstheo nhiều cách, nhưng dù tôi công nhận nó nhanh và chất lượng âm thanh ổn thì voice cloning vẫn hoàn toàn không ra gìXTTS có lẽ cũng đã được huấn luyện trên hơn 20 ngôn ngữ và hàng triệu người nói
Nếu bạn đã thấy hàng triệu giọng nói thì chắc chắn sẽ có những giọng gần giống bạn, nên rốt cuộc đây là vấn đề dữ liệu huấn luyện. Chỉ là việc thu thập và huấn luyện trên dữ liệu quy mô như vậy cực kỳ khó
alpha,betarất nhiều và tải lên nhiều clip audio khác nhau nhưng vẫn gặp kết quả y như vậyChất lượng thực sự tốt đến mức khó tin, ở mức gần như không thể tưởng tượng nổi vào đầu những năm 2000
Có những khả năng thú vị trong game, kiểu như LLM đảm nhận phần nhân vật còn tổng hợp giọng nói này dùng để tạo tiếng nói cho NPC
Hiện nay các trình mô phỏng golf có tiếng chim hót, cỏ lay động và lối chơi thì chân thực, nhưng lại không có lấy một con người nào nên vẫn hơi mang bầu không khí hậu tận thế
Nó quá khác với những câu bông đùa mang tính cà khịa trong một vòng chơi thực tế hay tiếng khán giả ở một giải đấu lớn, nên có vẻ rất phù hợp để thêm phần tán gẫu dựa trên LLM
Tôi vừa thử dùng notebook Colab và chất lượng có vẻ rất tốt, còn hỗ trợ cả nhân bản giọng nói
Tôi muốn thử dùng, nhưng đã bắt đầu chán ngấy việc lần nào cài dependency của torch cũng phải tạo
venvmớiTôi muốn biết mọi người xử lý chuyện này thế nào. Có cách nào dễ để nhiều
venvcùng chia sẻ một môi trường torch chung không; làm thủ công thì được nhưng tôi muốn biết có công cụ nào hỗ trợ việc này khôngQuy trình làm việc là
nix flake init -t github:dialohq/flake-templates#python, vào bằngnix develop -c $SHELL, rồi trong shell hook của môi trường phát triển nix chạypoetry installvàpoetry activateTôi tự hỏi liệu sẽ xuất hiện một chợ LoRA cho các mô hình chuyển văn bản thành giọng nói giống như Civitai hay không
https://github.com/microsoft/LoRA