Khám phá dữ liệu
Tôi sẽ đề nghị khám phá dữ liệu xa hơn một chút, điều này có thể giúp quyết định cách tiếp cận tốt nhất cho bộ dữ liệu bài hát chim này.
Ví dụ, hãy xem sơ đồ phổ của mỗi loài chim (chỉ có 66 loại chi khác nhau), để xem cách bạn có thể trích xuất thêm dữ liệu từ các mẫu. Đây là biểu đồ phổ của một mẫu được lấy từ đây :
Chúng ta có thể thấy rằng rõ ràng có một mô hình lặp đi lặp lại! Chúng ta có thể thấy những khối màu xanh nhạt cao xen kẽ xuất hiện xuyên suốt. Vì vậy, mặc dù mẫu thực sự chỉ có hơn 70 giây âm thanh, tiếng kêu của con chim dường như chỉ thực sự kéo dài khoảng 2 giây!
Với thuật toán lọc đơn giản hoặc thậm chí xây dựng mô hình để tìm các khối đó, bạn có thể trích xuất các khối đó và chỉ hoạt động trên các khối đó, có lẽ cùng với dữ liệu về các khoảng trống giữa các khối đó.
Đó chỉ là một ví dụ về xử lý trước dữ liệu cụ thể; Tôi chắc chắn có nhiều cách khác để cải thiện mật độ thông tin.
Tỷ lệ mẫu
Đây là một mức độ tự do khác mà bạn có thể nhìn vào. Một ý tưởng sẽ là chấp nhận các bộ lấy mẫu khác nhau trong đầu vào của bạn cho một mô hình. Người ta có thể điều chỉnh tốc độ mẫu để đảm bảo tất cả các mẫu cuối cùng đều có cùng chiều dài.
Ý tưởng của tôi sẽ là sử dụng độ dài của mẫu ngắn nhất và sau đó thực hiện lấy mẫu thường xuyên của tất cả các đoạn âm thanh dài hơn, sao cho các đoạn kết quả có cùng độ dài với mẫu ngắn nhất của bạn.
Phương pháp này rõ ràng sẽ ảnh hưởng đến chất lượng dữ liệu (không thường xuyên trên các mẫu), nhưng nếu mẫu bắt đầu cao một cách rõ ràng, bạn có thể thoát khỏi nó!
Hãy xem bài viết hữu ích này mô tả nhiều phương pháp trong (xử lý trước) sóng âm thanh.
Hai mô hình
Trong trường hợp cụ thể của bạn, nếu bạn thực sự chỉ có hai độ dài có thể: 8637686
và 3227894
... có thể khả thi khi tạo hai mô hình đơn giản, một mô hình cho mỗi chiều dài mẫu. Nó chắc chắn không phải là một giải pháp tối ưu; tuy nhiên, nó sẽ cho phép phát triển rất nhanh và lặp lại mô hình, vì bạn có thể sử dụng cùng một mô hình và chỉ cần thay đổi tham số để sử dụng cả hai phần của dữ liệu.
Khái niệm cơ bản
Cũng như cắt ngắn các mẫu dài hơn của bạn (cắt chúng để phù hợp với độ dài của các mẫu ngắn hơn / ngắn nhất - bạn có thể sử dụng phần đệm để đơn giản làm cho các mẫu ngắn phù hợp với độ dài của mẫu dài nhất.
Thông thường, điều này được thực hiện bằng cách thêm các số không vào cuối các vectơ. Bạn cũng có thể thử thêm số không ở đầu và cuối để giữ thông tin tập trung trong mỗi mẫu.
Nếu bạn tạo một mạng nơ-ron bằng Keras, có lẽ bạn sẽ là người tốt nhất bằng cách nhìn vào lớp ZeroPadding1d .