2 điểm bởi GN⁺ 2024-11-11 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tổng quan dự án

    • Dự án này nhằm mục tiêu tạo ra một chương trình chuyển nhạc thành bản nhạc.
    • Đây là một dự án mã nguồn mở tách âm nhạc thành các nhạc cụ cấu thành mà không sử dụng thư viện tách nhạc cụ bên ngoài.
    • Nhu cầu cá nhân và sự thiếu vắng của một thuật toán mã nguồn mở đơn giản là động lực của dự án.
  • Quá trình chuẩn bị

    • Dữ liệu nhạc cụ được lấy từ cơ sở dữ liệu của University of Iowa Electronic Music Studios.
    • Từ dữ liệu này, tác giả thu được biến đổi Fourier của toàn bộ dạng sóng và đường bao của dạng sóng.
  • Nguyên lý hoạt động

    • Dạng sóng âm thanh của nhạc cụ chủ yếu được đặc trưng bằng biến đổi Fourier và đường bao.
    • Qua đó có thể xác định nhạc cụ nào đang chơi nốt nào.
  • Biến đổi Fourier

    • Biến đổi Fourier của tệp nhạc được thực hiện mỗi 0,1 giây để tạo ra phổ kế.
    • Cộng các biến đổi Fourier đã lưu của từng nhạc cụ để tái tạo biến đổi Fourier của cửa sổ 0,1 giây.
    • Biên độ của từng nhạc cụ được tìm thông qua đạo hàm riêng theo tần số của hàm chi phí MSE.
  • Đường bao

    • Đường bao là đường biên trên của dạng sóng, và cần một phương pháp bền vững với nhiễu cũng như một số loại dạng sóng nhất định.
    • Đường bao được lấy bằng cách chia dạng sóng thành các khối nhỏ và lấy giá trị lớn nhất của mỗi khối.
    • Đường bao được phân tích bằng cách chia thành attack, sustain và release.
    • Dạng sóng của nhạc cụ có thể có suy giảm tĩnh hoặc động, và để phân biệt điều này, tác giả phân tích hệ số suy giảm và tốc độ thay đổi.
  • Các loại dạng sóng khác nhau

    • Để xử lý tệp nhạc, bộ lọc thông dải được áp dụng cho tần số của từng nốt.
    • Với mỗi nhạc cụ, điểm bắt đầu và kết thúc của từng nốt được tìm bằng tương quan chéo của attack và release, sau đó tính MSE để xác định chi phí.
    • Biên độ cuối cùng được tính bằng cách nhân biên độ tìm được ở bước biến đổi Fourier với nghịch đảo của chi phí.
  • Kết quả và hiển thị

    • Bản nhạc được hiển thị bằng biểu đồ phân tán của matplotlib.
    • Ban đầu tác giả định tái tạo âm thanh từ biên độ, nhưng do phát sinh nhiều vấn đề nên đã từ bỏ.
    • Công cụ này hữu ích cho việc tái dựng bản nhạc, đặc biệt giúp ích nếu bạn gặp khó khăn trong việc tìm cao độ hoặc hợp âm.

1 bình luận

 
GN⁺ 2024-11-11
Ý kiến trên Hacker News
  • Tiêu đề có thể gây nhầm lẫn. Dự án này không phải là tách nguồn âm thanh mà là một thuật toán phát hiện cao độ, đồng thời cũng có chức năng phân loại nhạc cụ
    • Có thể sẽ mất nhiều thời gian hơn để chỉnh sửa kết quả
  • Chuyển soạn nhạc tự động (audio->MIDI) là một phân ngành quan trọng của deep learning và truy xuất thông tin âm nhạc
    • Dự án MT3 của Google được nhắc đến như một mô hình thành công
    • Với chuyển soạn piano, nó cho thấy độ chính xác gần như hoàn hảo ngay cả với âm thanh chất lượng thấp
  • Nếu quan tâm đến tách âm thanh, RipX là một thứ đáng để tham khảo
    • Có thể xuất các track đã tách thành tệp MIDI
    • Vẫn còn một số vấn đề nhưng hoạt động tốt
    • Tách stem giờ đã là tiêu chuẩn của phần mềm âm nhạc và gần như mọi DAW đều cung cấp tính năng này
  • Vật lý của nhạc cụ thực tế có thể không được nắm bắt chỉ bằng các mẫu Fourier đơn giản
    • Kèn trumpet có thể có phổ hài khác nhau khi chơi nhẹ và khi chơi lớn
    • Thành phần hài có thể thay đổi đáng kể theo cường độ của nhạc cụ
    • Có thể cải thiện độ chính xác bằng cách thêm các mẫu Fourier phụ thuộc cường độ cho từng nhạc cụ
  • Gợi nhớ đến ký ức từng chơi Audiosurf 15 năm trước
  • Có vẻ như video demo trên YouTube không cho thấy việc tách nguồn
  • Không ai nhắc đến việc "separation" đã bị viết sai chính tả bốn lần
  • Có vẻ một số video không có âm thanh
  • Dự án này có thể là tác phẩm của em trai Joshua Bird
    • Joshua Bird trước đó đã thực hiện những dự án rất ấn tượng
  • Không tìm thấy mã nguồn, nhưng dự án có vẻ thú vị