LLaMA-Omni - Tương tác giọng nói liền mạch với LLM
(github.com/ictnlp)- LLaMA-Omni là mô hình ngôn ngữ-giọng nói dựa trên Llama-3.1-8B-Instruct, nhận chỉ dẫn bằng giọng nói và đồng thời tạo ra phản hồi văn bản lẫn giọng nói
- Mục tiêu cốt lõi là tương tác giọng nói độ trễ thấp, chất lượng cao, và theo README, độ trễ có thể giảm xuống mức thấp nhất là 226ms
- Mô hình được huấn luyện trong chưa đến 3 ngày chỉ với 4 GPU, và chạy bằng
Llama-3.1-8B-Omni,Whisper-large-v3, cùng vocoder HiFi-GAN dạng unit-based - Demo Gradio có cấu trúc chạy riêng controller, web server và model worker, và do tính không ổn định của phát âm thanh streaming trong Gradio nên không bật tự động phát
- Mã nguồn dùng Apache-2.0 nhưng mô hình chỉ dành cho mục đích nghiên cứu học thuật, cấm sử dụng thương mại và cần liên hệ riêng để xin giấy phép thương mại
LLaMA-Omni làm gì
- LLaMA-Omni là mô hình ngôn ngữ-giọng nói dựa trên Llama-3.1-8B-Instruct
- Nhận chỉ dẫn giọng nói làm đầu vào và đồng thời tạo phản hồi văn bản và phản hồi giọng nói
- Hướng tới tương tác giọng nói độ trễ thấp và phản hồi chất lượng cao, với độ trễ thấp nhất 226ms theo phần highlights trong README
- Bài báo liên quan được công bố tại arXiv:2409.06666
Mô hình và bộ dữ liệu đã công bố
- Mô hình được công bố trên Hugging Face, ModelScope, Wisemodel và Replicate
- Bộ dữ liệu được công bố dưới tên Multiturn-Speech-Conversations
- Trong bản cập nhật tháng 5/2025,
InstructS2S-200Kcải tiến đã được công bố, mở rộng sang hội thoại nhiều lượt và cũng đa dạng hóa tông giọng đầu vào
Cập nhật gần đây
- Tháng 5/2025, LLaMA-Omni 2 được nhận vào hội nghị chính ACL 2025
- Tháng 4/2025, LLaMA-Omni2 được công bố
- Đây là series mô hình ngôn ngữ giọng nói từ 0.5B đến 32B tham số
- Cải thiện chất lượng phản hồi và chất lượng tạo giọng nói
- Tháng 1/2025, LLaMA-Omni được nhận vào ICLR 2025
Cài đặt và quy trình chạy
- Cài đặt theo cách clone repository rồi cài package trong môi trường conda Python 3.10
- Cài
pip==24.0rồi chạypip install -e .
- Cài
- Cần cài thêm các phụ thuộc fairseq và flash-attn
- Phần quick start yêu cầu ba thành phần chuẩn bị
- Tải mô hình
Llama-3.1-8B-Omni - Tải mô hình
Whisper-large-v3 - Tải vocoder HiFi-GAN dạng unit-based và
config.json
- Tải mô hình
Demo Gradio và suy luận cục bộ
- Demo Gradio gồm ba tiến trình
- controller:
omni_speech.serve.controller - Gradio web server:
omni_speech.serve.gradio_web_server - model worker:
omni_speech.serve.model_worker
- controller:
- Sau khi chạy demo, có thể tương tác với
LLaMA-3.1-8B-Omnitạilocalhost:8000 - Do phát âm thanh streaming của Gradio không ổn định nên chỉ triển khai tổng hợp âm thanh streaming, còn tự động phát không được bật
- Suy luận cục bộ được thực hiện bằng cách chuẩn bị file chỉ dẫn giọng nói theo định dạng
omni_speech/infer/examples, rồi chạybash omni_speech/infer/run.sh omni_speech/infer/examples
Giấy phép và hạn chế sử dụng
- Mã nguồn được công bố theo Apache-2.0 License
- Mô hình chỉ được dùng cho mục đích nghiên cứu học thuật và cấm sử dụng thương mại
- Trong môi trường học thuật, có thể sử dụng, sửa đổi và phân phối nhưng cần trích dẫn bài báo gốc
- Mọi yêu cầu sử dụng thương mại hoặc xin giấy phép thương mại cần liên hệ
fengyang@ict.ac.cn
1 bình luận
Ý kiến trên Hacker News
Mô hình này có thể tạo ra cả những âm thanh không thể biểu đạt bằng văn bản không? Ví dụ như yêu cầu “hãy bắt chước tiếng gà kêu”
Nhưng liệu nó có thể vừa nói từ “cục tác” vừa tạo ra tiếng lách cách thực sự không?
Tôi không rõ một mô hình như thế này có ưu điểm hay tiềm năng gì so với cách gắn nhận dạng giọng nói/tổng hợp giọng nói vào một mô hình thuần văn bản
Khi mô hình tinh vi hơn, có phải điểm then chốt là diễn giải hoặc tạo ra đúng những thứ như ngữ điệu, nhịp điệu, cảm xúc vốn bị mất trong tổng hợp giọng nói không?
Mô hình nhận dạng giọng nói có thể nghe nhầm từ, nhưng audio LLM có thể hiểu được từ thực nhờ ngữ cảnh rộng hơn. Mô hình tổng hợp giọng nói phải đoán ngữ điệu nên có thể sai hoàn toàn, còn audio LLM có thể tự nhiên học được nên nói bằng tông nào. Ví dụ nếu là lời chen ngang thì có thể dùng tông cao hơn
Chỉ riêng chuyện chen ngang thôi, hệ thống nhận dạng/tổng hợp giọng nói thường dựa vào phát hiện hoạt động giọng nói và heuristic để quyết định khi nào nói, nên nhiều hệ thống có quy tắc chỉ nói sau khi người dùng đã dừng nói. Audio LLM có thể học hội thoại tự nhiên, cách không chiếm quá nhiều thời lượng nói, và cách nói cùng lúc với nhiều người
Audio LLM cũng có thể tạo nhạc hoặc âm thanh, hoặc cho biết bài hát bạn ngân nga là gì. Có rất nhiều khả năng mới
Tuy nhiên lý do tôi nói “có thể học” là vì cần dữ liệu huấn luyện tốt. Theo tôi biết hiện nay phần lớn các mô hình kiểu này được huấn luyện bằng cách chuyển các bộ dữ liệu văn bản thông thường thành giọng nói tổng hợp, nên về thực chất chẳng hơn gì hệ thống nhận dạng/tổng hợp giọng nói thông thường. Cách đó tốt để chứng minh kiến trúc, nhưng không thể hiện được toàn bộ năng lực
Chỉ riêng khả năng nói nhanh hoặc nói chậm đã là phần mà các hệ thống tổng hợp giọng nói truyền thống chưa làm được. Về lý thuyết, nó cũng có thể cho biết phát âm của tôi có chính xác không, lặp lại cách tôi phát âm sai rồi phát âm đúng để sửa cho tôi
Tôi chưa thấy ai kiểm thử kỹ xem advanced voice mode của OpenAI thực sự làm việc này tốt đến đâu, nên chưa biết, nhưng tôi muốn tự dùng thử. Nếu các mô hình giọng nói khác cũng đạt đến mức này thì sẽ cực kỳ tuyệt vời như một công cụ học ngôn ngữ
Một yếu tố lớn là độ trễ do batching gây ra. Khó ngắt lời agent đúng cách, khiến hội thoại thực tế trở nên gượng gạo hơn. Và đúng vậy, đa phương thức hiểu tốt hơn. Tuy nhiên tôi chưa thấy phân tích nào về nhận diện cảm xúc; không biết có ai đã thấy phân tích về khả năng này của GPT-O chưa
Ngoài ra còn có thể có các lợi ích phụ như cải thiện độ trễ phản hồi, cải thiện tách người nói, phản ứng tốt hơn với các khoảng dừng trong hội thoại
Dù viết là “Really?” hay “Really!” thì vẫn còn dư địa diễn giải. Để giao diện giọng nói thật sự thành công, cần một khoảnh khắc giống như tìm kiếm trước Google vốn rất tệ rồi chuyển sang Google; và nếu cốt lõi của khoảnh khắc đó là diễn giải và tạo ra ngữ điệu, nhịp điệu, cảm xúc, thì việc xây dựng những mô hình như thế này khá hợp lý
Trong các công cụ chạy mô hình như Ollama, LM Studio, llama.cpp, có cái nào hỗ trợ cái này không?
Vậy tức là không phải kiến trúc nhận dạng giọng nói → LLM → tổng hợp giọng nói sao? Nếu hét tiếng Chewbacca vào đầu vào, mô hình sẽ nhận ra đó là đầu vào vô nghĩa, hay sẽ diễn giải thành đại vài từ như một hệ thống nhận dạng giọng nói tệ?
Tôi có cảm giác các ngôn ngữ có thanh điệu đặc biệt dễ “ăn” hơn
Giọng tổng hợp trong clip demo nghe giống Ellen McLain, tức diễn viên lồng tiếng của Valve, đến đáng ngạc nhiên
https://en.m.wikipedia.org/wiki/Ellen_McLain
Tốc độ có vẻ khá tốt. Gần đây tôi đã thử chat giọng nói cục bộ bằng LMStudio + AnythingLLM, nhưng vẫn hơi chậm hơn mong muốn; giọng PiperTTS thì còn tốt hơn cái này
Với 3 ngày huấn luyện thì không tệ. Chất lượng đầu ra giọng nói cần được trau chuốt thêm, nhưng thật thú vị xem huấn luyện thêm sẽ tạo ra thay đổi gì
Giá mà có mã huấn luyện hoặc tinh chỉnh. Với sử dụng thương mại, tinh chỉnh giọng nói có vẻ là yêu cầu then chốt
Có phải chỉ mình tôi thấy kém tin tưởng hơn hẳn khi README của repo GitHub có cái biểu đồ xu hướng sao ngớ ngẩn đó không?
Có demo nào cho thấy hiệu năng không?