Yếu tố ma trận không âm để tách âm thanh - tại sao nó hoạt động?


8

Hệ số ma trận không âm nhằm mục đích biến một ma trận thành sản phẩm của hai ma trận, , trong đó đại diện cho một tập các vectơ cơ sở và kích hoạt hoặc trọng số của chúng. Áp dụng cho phân tách nguồn âm thanh, là quang phổ (được biết đến với chúng tôi) và là quang phổ không âm cơ bản, là kích hoạt tạm thời của chúng.VV=WHWHVWH

Điều này dường như là tôi có thể biểu thị một quang phổ dưới dạng tổng của các thùng tần số khác nhau và cường độ của chúng - sẽ giúp lọc hoặc tách các cao độ khác nhau (dường như thực hiện công việc của bộ lọc thông dải thông thường?). Tôi không hiểu làm thế nào điều này thực sự sẽ tách ra, giả sử, một cây đàn piano và một ca sĩ hát cùng một hoặc tương tự.


đối với các nốt nhạc có hòa âm, có lẽ một ngân hàng các bộ lọc lược sẽ tốt hơn một ngân hàng các bộ lọc thông dải chỉ điều chỉnh cơ bản (hoặc có thể là một hòa âm khác). răng tần số thấp nhất của các bộ lọc lược sẽ được chuyển thành cùng tần số với các BPF. do đó, quang phổ có thể được coi là tổng của các tần số cao độ khác nhau với các sóng hài của chúng. sẽ có một số chồng chéo.
robert bristow-johnson

Câu trả lời:


7

Nhớ lại rằng các cột của W có thể được coi là các vectơ "cơ sở" (hoặc các phần tử của từ điển - các khối xây dựng của bất kỳ tín hiệu nào) và các phần tử trong mỗi cột trong Hcho các trọng số tương ứng (thay đổi theo thời gian). Điều này cho phép chúng tôi phân tách phổ dựa trên không chỉ các thành phần tần số mà cả thông tin khởi phát theo thời gian; vì vậy nó làm được nhiều hơn những gì bộ lọc thông dải hoặc bộ lọc lược đơn giản sẽ làm.

Hệ số ma trận không âm của một quang phổ sẽ không tách biệt một cách kỳ diệu một cây đàn piano và một ca sĩ hát trong cùng một cao độ. Tuy nhiên, nó mang lại một xấp xỉ hữu ích về tổng các vectơ cơ sở có trọng số mà (hy vọng) có thể được chia thành các đóng góp từ các nguồn khác nhau vì mỗi nguồn không thể chiếm chính xác cùng một tần số cùng một lúc.

Cụ thể hơn, hãy để VM×N, WM×KHK×N. Vì vậy chúng tôi cóM thùng tần số, N mẫu thời gian và Kthành phần bị phân hủy. Nếuwi là các cột của Whi là những hàng của H chúng tôi có thể viết:

Vi=1KwihiT.
Nếu chúng ta biết chỉ có hai nguồn trong bản ghi âm (piano và ca sĩ), chúng ta có thể cố gắng phân chia các đóng góp của họ bằng cách chọn các tập hợp con của các cột W và tập hợp con tương ứng của các hàng H. Vì vậy nếuS{1,,K} sau đó phần đóng góp của piano có thể được ký hiệu là:
Vpiano=iSwihiT
và phần đóng góp của ca sĩ là:
Vsinger=i{1,,K}SwihiT

Trong thực tế, chúng ta có thể sẽ kết thúc bằng một sự phân tách không bao giờ đạt được sự phân tách này một cách chính xác. Đó là, sẽ cówiĐó là sự đóng góp của cả ca sĩ và piano khiến việc tách hai người trở nên khó khăn.

Đây là một sổ ghi chép Python hiển thị quy trình này cho hỗn hợp trống và guitar: http://nbviewer.jupyter.org/gist/ingle/93de575aac6a4c7fe9ee5f3d5adab98f (Hoặc nếu nó không hoạt động, tại đây: https://gist.github.com / ingle / 93de575aac6a4c7fe9ee5f3d5adab98f )

Lưu ý rằng thuật toán NMF chỉ tạo ra một phép phân tách. Nó không thể chọn tập hợp con của{wi}tương ứng với từng nguồn. Trong ví dụ Python, có một bước thủ công để tìm rawiÂm thanh giống như trống v / s guitar. Có lẽ người ta có thể tự động hóa bước này bằng cách lưu ý rằng trốngwi vectơ có nhiều thứ ở tần số thấp hơn.

Phân tích từng cột (khung) của biểu đồ phổ bằng cách sử dụng bộ lọc băng thông là một cách khác để phân tách phổ. Tuy nhiên, lưu ý rằng sự phân rã được tạo ra bởi NMF là thứ hạng thấp tức là phân tích kỹ lưỡng. Trong ví dụ Python, việc chọn thủ công các tập hợp con của 16 cột là dễ dàng hơn nhiềuWtương ứng với hai nguồn. Với một bộ lọc băng thông, chúng tôi sẽ phải xoay nhiều nút hơn (# bộ lọc, vị trí của các dải thông cho mỗi khung hình) và số lượng kết hợp tham số có thể tăng rất nhanh.

Người giới thiệu:

https://ccrma.stanford.edu/~njb/teaching/sstutorial/part2.pdf

http://musicin informationretriny.com/nmf.html


1
Liên kết máy tính xách tay Pyhton không hoạt động
soultrane

1
Khi ca sĩ và piano hát cùng một nốt (cùng một lớp cao độ và cùng quãng tám), thì nó được đặt như thế nào S và đặt bộ tương ứng cho ca sĩ (mà bạn đang biểu thị là {1,,K}S) sẽ khác?
robert bristow-johnson

@ robertbristow-johnson, bạn đã đúng - trong trường hợp đó mô tả của tôi không chính xác. Tuy nhiên, tôi đã đưa ra một giả định rằng rất khó có khả năng ca sĩ và piano đã hát chính xác cùng một nốt trong cùng một lúc ngay lập tức. Vì vậy, hy vọng rằng chúng ta có thể chia nó thành các tập hợp rời rạc. Nếu không, sẽ cówiĐiều đó sẽ có đóng góp từ cả hai nguồn.
Atul Ingle

Liên kết @soultrane cố định.
Atul Ingle

1
Điều này khác biệt bởi vì sử dụng một bộ lọc băng thông sẽ cho phép phân tách "dày đặc hơn" trong khi NMF cho phép phân tách "sperer". Sự phân rã được tạo ra bởi NMF là thứ hạng thấp và đáng sợ. Trong ví dụ Python, việc chọn thủ công các tập hợp con của 16 cột là dễ dàng hơn nhiềuWtương ứng với hai nguồn. Với một bộ lọc băng thông, chúng tôi sẽ phải xoay nhiều nút hơn (# bộ lọc, vị trí của các dải thông cho mỗi khung hình) và số lượng kết hợp tham số có thể tăng rất nhanh.
Atul Ingle

0

Mục tiêu: xấp xỉ tốt việc tách một ca sĩ khỏi một cây đàn piano. Bây giờ một số suy nghĩ về các yêu cầu phân tách chính xác các nguồn âm thanh được cung cấp không có khả năng có TẤT CẢ thông tin đầu vào cần thiết để phân tách chính xác (có thể là "vectơ cơ sở" của bạn):
- cho mỗi âm lượng của từng nốt nhạc của piano. phân phối tần số được lấy mẫu theo thời gian (khi nó tấn công sau đó mờ dần). - đối với mỗi nốt X âm lượng âm vị X của ca sĩ nói lên sự phân bố tần số (và biến thể của nó với các mức độ rung khác nhau). - đối với tất cả các hiệu ứng hồi âm ở trên nên được xem xét. - lời bài hát (để phù hợp với âm vị của ca sĩ)

Ngoài ra còn có các hạn chế về miền thời gian như mỗi nốt nhạc piano phải bắt đầu bằng cuộc tấn công và tác động của bàn đạp duy trì của piano (đột ngột làm giảm các nốt nhạc bị "đổ chuông" mặc dù các phím tương ứng đã được phát hành)

Với kết quả tìm kiếm ở trên là tổng "phù hợp nhất" của một tập hợp các phổ của nốt nhạc piano và phổ âm lượng âm lượng nốt đơn của một ca sĩ để ước tính âm thanh phát ra.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.