- Ứng dụng mã nguồn mở giúp chuyển các tệp nhạc cá nhân thành dạng karaoke, cung cấp các tính năng tách giọng hát, đồng bộ lời bài hát và chấm điểm theo thời gian thực
- Sử dụng mô hình UVR Karaoke hoặc Demucs để tách giọng hát và phần đệm, đồng thời dùng WhisperX để tự động chép lời theo từng từ
- Với chấm điểm cao độ dựa trên đầu vào micro cùng xếp hạng sao và lịch sử theo từng bài hát, ứng dụng đo khả năng ca hát theo kiểu game
- Hỗ trợ nhiều tương tác như nhiều hồ sơ người dùng, phát tệp video làm nền, nền động dựa trên GPU shader, điều khiển bằng gamepad
- Chạy trên Linux, macOS, Windows và có cấu trúc tự chứa hoạt động bằng một tệp thực thi duy nhất, không cần cài đặt
Tính năng chính
- Tính năng tách giọng hát (Stem separation) sử dụng mô hình UVR Karaoke hoặc Demucs để tách giọng hát và phần đệm
- Có thể điều chỉnh âm lượng của giọng hát hướng dẫn
- Tính năng lời bài hát theo từng từ (Word-level lyrics) dùng WhisperX để căn chỉnh từng từ theo âm thanh
- Nếu LRCLIB đã có sẵn lời bài hát thì sẽ ưu tiên sử dụng
- Tính năng chấm điểm cao độ (Pitch scoring) tính điểm theo thời gian thực khi hát bằng micro
- Theo dõi tiến độ bằng xếp hạng sao và bảng điểm theo từng bài hát
Người dùng và giao diện
- Tính năng hồ sơ người chơi (Player profiles) cho phép nhiều người dùng lưu giữ lịch sử điểm số riêng
- Không mất dữ liệu ngay cả khi đổi ca sĩ
- Tính năng hỗ trợ tệp video (Video file support) cho phép tải các tệp .mp4 hoặc .mkv và phát video gốc làm nền
- Tự động tách giọng hát từ âm thanh
- Tính năng nền động (Dynamic backgrounds) sử dụng hiệu ứng GPU shader (plasma, cực quang, tinh vân, v.v.), video loop từ Pixabay hoặc video gốc làm nền
- Hỗ trợ gamepad để điều hướng menu, chọn bài hát và điều khiển phát bằng tay cầm
Cách hoạt động
- Ở bước Separate, UVR Karaoke hoặc Demucs tách bản nhạc thành giọng hát và phần đệm
- Tự động trích xuất âm thanh từ tệp video
- Ở bước Transcribe, ứng dụng tìm lời bài hát đã đồng bộ trên LRCLIB, nếu không có thì dùng WhisperX để chép lời theo từng từ
- Ở bước Play, ứng dụng phát phần đệm đồng thời hiển thị lời bài hát được tô sáng, điểm cao độ, nền động và đầu vào gamepad
Nền tảng và phân phối
- Có thể chạy trên Linux(x86_64, aarch64), macOS(ARM, Intel), Windows(x86_64)
- Hỗ trợ tăng tốc GPU qua CUDA hoặc Metal, và sẽ chạy bằng CPU trong môi trường không hỗ trợ
- ffmpeg, Python, PyTorch, các mô hình ML được bootstrap tự động ngay lần chạy đầu tiên, tạo thành cấu trúc nhị phân đơn không cần quy trình cài đặt riêng
Thông báo cập nhật
- Có thể nhận email về bản phát hành mới và các tin cập nhật; nếu không muốn, bạn có thể hủy đăng ký bất cứ lúc nào
1 bình luận
Ý kiến Hacker News
Vừa tải mã nguồn về, build và chạy thử, nhưng ngay lần chạy đầu tiên ứng dụng đã bắt đầu tải binary từ Internet khiến tôi khá bất ngờ
Dù FFMpeg và Python đã được cài sẵn, nó vẫn cố cài mới
Ứng dụng tìm Python đã cài trong thư mục
libnên chạy thất bại. Thật ngạc nhiên khi một lỗi cơ bản như vậy lại có trong mã phát hànhNgoài ra, khi chạy script build của tarball thì nó lại định cài container Docker, càng làm tôi bối rối. Build một ứng dụng desktop mà lại dùng Docker, thật khó hiểu
Krita dùng Python của hệ thống khi build, nhưng bản thành phẩm vẫn kèm Python riêng
Tuy vậy, có lẽ ứng dụng này nên bundle sẵn thay vì tải xuống
Về bảo mật thì npm hay pip cũng có rủi ro tương tự, nên trường hợp này cũng không hẳn là ngoại lệ hoàn toàn
Vì vậy cũng có thể hiểu được vì sao tác giả muốn tạo ra một môi trường duy nhất để ứng dụng có thể phụ thuộc vào
Gần đây tôi cũng chạy một ứng dụng Python và nó định cài Node/NPM làm tôi giật mình
Máy tính là không gian làm việc của tôi, nên việc ứng dụng tự tiện cài đặt là rủi ro tấn công chuỗi cung ứng và cũng là hành vi thiếu tôn trọng người dùng
Nightingale do tôi tạo ra là một ứng dụng: bạn chỉ định thư mục nhạc và nó sẽ tự động chuyển các bài hát thành track karaoke
Nó cung cấp tách giọng hát, đồng bộ lời, chấm điểm cao độ, hỗ trợ gamepad, tăng tốc GPU, v.v.
Mọi xử lý đều diễn ra cục bộ, không có tài khoản, đăng ký hay telemetry
Ở lần chạy đầu tiên, nó tự động thiết lập mô hình ML và môi trường Python cần thiết
Ứng dụng được viết bằng Rust và engine Bevy, và là một dự án mã nguồn mở hoàn chỉnh
Giờ thấy người ta giải quyết bằng mạng nơ-ron như Demucs nên khá thú vị
Tôi cũng tò mò liệu cách tiếp cận thuần toán học còn có thể cạnh tranh được không
Cần có chức năng tua tới/lùi trong lúc phát, và sẽ tốt hơn nếu có xử lý dấu câu cùng khả năng chỉnh sửa kết quả
Dù sao cũng cảm ơn vì đã phát hành dưới dạng FOSS
Tôi muốn biết yêu cầu tối thiểu của CUDA là gì và có kế hoạch hỗ trợ tăng tốc iGPU của AMD/Intel hay không
Tôi đang rất mong gia đình mình được thử nó
Trong mã nguồn, nó tách từ bằng
line_text.split(), nhưng tiếng Nhật không có khoảng trắng nên không thể hoạt động đượcCó lẽ cần dùng bộ phân tích hình thái như fugashi
Nó làm tôi nhớ đến trình phát media Nightingale ngày xưa dựa trên Firefox
Nó từng được phát triển như một lựa chọn thay thế iTunes/Winamp, nhưng đã hơn 10 năm không còn hoạt động
Vẫn có thể thấy dấu vết cũ tại getnightingale.com
Trước đây tôi từng làm một dự án theo dõi cao độ tương tự
Tôi tò mò liệu đường pitch hiện tại của ứng dụng có phải là tính năng hiển thị nốt tiếp theo hay không
Tôi sẽ xem đây là một đề xuất tính năng hay
Chạy cục bộ, mã nguồn mở, lại là một dự án làm bằng đam mê nên thật sự rất cảm động
Những tin như thế này giúp khôi phục niềm tin vào con người
Nhìn lịch sử commit thì tốc độ phát triển rất nhanh
Có lẽ tác giả đã tận dụng phát triển có AI hỗ trợ
Trái với câu nói “AI sẽ thay thế lập trình viên”, tôi nghĩ AI đã nâng cao tính khả thi của các dự án quy mô nhỏ
Ban đầu tôi không hiểu chính xác ứng dụng làm gì, tôi cứ tưởng nó sẽ loại bỏ lời hát
Tôi đã thử nhiều bài nhưng vẫn nghe rõ giọng hát. Tôi không biết phải điều chỉnh loại bỏ vocal như thế nào
Xem hướng dẫn điều khiển
Dự án thật sự rất tuyệt.
Tôi muốn biết liệu có thể xử lý bài hát trên một thiết bị rồi phát trên thiết bị khác hay không, hoặc nó có thể chạy theo chế độ server/client hay không
Với tư cách là nhạc công, tôi luôn nghĩ sẽ rất tuyệt nếu có một ứng dụng hiển thị lời theo nhịp khi đang chơi cùng ban nhạc
Hiện giờ tôi phải gắn điện thoại lên chân micro, nhưng nó nhanh chóng bị lệch vị trí