I. Khóa luận website nghe nhạc Tổng quan nghiên cứu công nghệ
Nghiên cứu về xây dựng website nghe nhạc tích hợp các công nghệ thông minh đang là một hướng đi quan trọng trong lĩnh vực Công nghệ thông tin. Khóa luận "Xây dựng Website Nghe Nhạc Kết Hợp Nhận Diện Nhạc Qua Giai Điệu Và Đề Xuất" là một công trình tiêu biểu, giải quyết hai bài toán cốt lõi: nhận dạng bài hát tự động và xây dựng hệ thống đề xuất âm nhạc cá nhân hóa. Bối cảnh nghiên cứu xuất phát từ nhu cầu thực tiễn của người dùng, khi họ thường xuyên gặp phải các bản nhạc không rõ tên hoặc mong muốn khám phá những giai điệu mới phù hợp với sở thích. Đề tài này không chỉ dừng lại ở việc tạo ra một sản phẩm ứng dụng, mà còn đi sâu vào việc nghiên cứu và triển khai các thuật toán gợi ý nhạc phức tạp, ứng dụng học máy trong đề xuất nhạc và xử lý tín hiệu âm thanh. Cụ thể, nghiên cứu áp dụng các mô hình Deep Learning để phân loại nhạc và các kỹ thuật Music Fingerprinting để nhận diện giai điệu. Nền tảng công nghệ được lựa chọn một cách kỹ lưỡng, bao gồm Angular cho Frontend, .NET Core và Flask cho Backend, cùng với cơ sở dữ liệu MongoDB, tạo nên một kiến trúc hệ thống gợi ý linh hoạt và hiệu quả. Đây là một đề tài khóa luận tốt nghiệp CNTT điển hình, thể hiện sự kết hợp nhuần nhuyễn giữa lý thuyết học thuật và kỹ năng triển khai thực tế, mang lại giá trị thiết thực cho cả người dùng và ngành công nghiệp âm nhạc số.
1.1. Mục tiêu và phạm vi của khóa luận tốt nghiệp CNTT
Mục tiêu chính của khóa luận là thiết kế và xây dựng một website nghe nhạc hoàn chỉnh với hai tính năng đột phá: nhận diện nhạc qua giai điệu và đề xuất bài hát thông minh. Hệ thống hướng đến việc cá nhân hóa trải nghiệm người dùng, giúp họ dễ dàng tìm kiếm các bài hát chỉ bằng một đoạn giai điệu và khám phá âm nhạc mới một cách tự nhiên. Phạm vi nghiên cứu tập trung vào ba mảng chính: nhạc Việt, Âu Mỹ và Hàn Quốc. Về công nghệ, đề tài giới hạn việc sử dụng Angular cho giao diện người dùng, ASP.NET cho các dịch vụ chính về âm nhạc, và một backend riêng biệt viết bằng Flask để phục vụ cho music recommendation system. Cách tiếp cận này cho phép tối ưu hóa hiệu năng cho từng tác vụ chuyên biệt, đặc biệt là các tính năng yêu cầu tính toán nặng như xử lý AI.
1.2. Các công nghệ nền tảng được áp dụng trong dự án
Để hiện thực hóa hệ thống, một loạt công nghệ hiện đại đã được lựa chọn. Mô hình MVC (Model-View-Controller) được sử dụng làm kiến trúc tổng thể, giúp phân tách rõ ràng giữa giao diện, logic nghiệp vụ và dữ liệu. Phía server, ASP.NET Core được chọn vì hiệu năng cao, khả năng chạy đa nền tảng và hỗ trợ mạnh mẽ cho việc xây dựng API. Đối với hệ thống đề xuất, Flask được ưu tiên do sự gọn nhẹ, linh hoạt và tích hợp tốt với các thư viện machine learning for music recommendation như Keras. Về cơ sở dữ liệu, MongoDB, một hệ quản trị NoSQL, được sử dụng để lưu trữ dữ liệu linh hoạt, đặc biệt phù hợp với các cấu trúc dữ liệu đa dạng của bài hát và người dùng. Sự kết hợp này tạo ra một hệ thống vững chắc, có khả năng mở rộng và dễ dàng bảo trì.
II. Thách thức trong nhận dạng cá nhân hóa trải nghiệm người dùng
Việc xây dựng một website nghe nhạc hiện đại đối mặt với hai thách thức lớn. Thứ nhất là vấn đề nhận dạng bài hát từ một đoạn âm thanh ngắn, thường bị nhiễu và không đầy đủ. Điều này đòi hỏi các thuật toán phải có khả năng trích xuất đặc trưng âm thanh một cách chính xác và hiệu quả. Các phương pháp truyền thống có thể không đủ mạnh để xử lý các biến thể trong giai điệu, nhịp điệu hoặc tiếng ồn từ môi trường. Thách thức thứ hai là làm thế nào để gợi ý sản phẩm âm nhạc phù hợp với sở thích đa dạng và thay đổi liên tục của mỗi cá nhân. Một hệ thống đề xuất âm nhạc hiệu quả không chỉ dựa vào lịch sử nghe nhạc mà còn phải hiểu được các thuộc tính tiềm ẩn của bài hát và sở thích của người dùng. Việc xây dựng một ma trận người dùng-vật phẩm (user-item matrix) đầy đủ và xử lý vấn đề dữ liệu thưa (sparsity) là một bài toán phức tạp. Hơn nữa, việc cân bằng giữa việc đề xuất các bài hát quen thuộc (exploitation) và giới thiệu các bài hát mới lạ (exploration) để tránh sự nhàm chán là một yếu tố quan trọng trong việc cá nhân hóa trải nghiệm người dùng.
2.1. Vấn đề nhận diện bài hát từ giai điệu trong thực tế
Bài toán nhận dạng bài hát tự động từ một đoạn ghi âm không phải là điều đơn giản. Tín hiệu âm thanh thu được từ môi trường thực tế thường chứa nhiều tạp âm, có thể bị biến dạng hoặc chỉ là một đoạn giai điệu ngắn. Để giải quyết, hệ thống cần một cơ chế "vân tay âm thanh" (Audio Fingerprinting) mạnh mẽ. Quá trình này bao gồm việc phân tích tín hiệu âm thanh, chuyển đổi từ miền thời gian (Time-Domain) sang miền tần số (Frequency-Domain) bằng các thuật toán như Fast Fourier Transform (FFT), sau đó trích xuất đặc trưng âm thanh để tạo ra một mã hash duy nhất. Mã hash này phải bất biến với tiếng ồn và sự thay đổi về âm lượng, đảm bảo khả năng so khớp chính xác với cơ sở dữ liệu.
2.2. Khó khăn trong việc xây dựng hệ thống gợi ý âm nhạc
Xây dựng một thuật toán gợi ý nhạc hiệu quả là một thách thức lớn. Vấn đề "khởi đầu lạnh" (cold start) xảy ra khi một người dùng mới hoặc một bài hát mới được thêm vào hệ thống mà không có dữ liệu tương tác. Các phương pháp như lọc cộng tác (collaborative filtering) sẽ gặp khó khăn trong trường hợp này. Ngoài ra, sở thích của người dùng có thể thay đổi theo thời gian và ngữ cảnh. Một hệ thống chỉ dựa trên lịch sử nghe có thể không nắm bắt được những thay đổi này. Do đó, việc tích hợp nhiều phương pháp khác nhau, chẳng hạn như lọc dựa trên nội dung (content-based filtering) và phân cụm người dùng, là cần thiết để tạo ra một hệ thống lai (hybrid model) toàn diện hơn.
III. Phương pháp nhận dạng nhạc qua giai điệu và fingerprinting
Để giải quyết bài toán nhận dạng, khóa luận đã áp dụng phương pháp Music Fingerprinting, một kỹ thuật hiệu quả để tạo ra "dấu vân tay" số cho mỗi bài hát. Quy trình bắt đầu bằng việc xử lý tín hiệu âm thanh thô. Âm thanh, vốn là tín hiệu analog, được số hóa thông qua quá trình lấy mẫu (sampling) ở tần số 44,100 Hz, đảm bảo bao phủ toàn bộ dải tần số tai người nghe được. Sau đó, tín hiệu trong miền thời gian được chuyển đổi sang miền tần số sử dụng thuật toán Fast Fourier Transform (FFT). Quá trình này giúp phân tích các thành phần tần số của âm thanh tại mỗi thời điểm. Từ phổ tần số, hệ thống tiến hành trích xuất đặc trưng âm thanh bằng cách xác định các điểm cực đại (peaks) – những tần số có biên độ nổi bật nhất. Các cặp điểm cực đại này sau đó được mã hóa thành các mã hash (combinatorial hashes), tạo thành một fingerprint duy nhất cho bài hát. Các mã hash này được lưu trữ trong cơ sở dữ liệu cùng với mã bài hát và dấu thời gian. Khi người dùng ghi âm một đoạn nhạc, hệ thống sẽ thực hiện quy trình tương tự để tạo fingerprint cho đoạn ghi âm đó và tìm kiếm sự trùng khớp trong cơ sở dữ liệu, từ đó thực hiện nhận dạng bài hát tự động.
3.1. Kỹ thuật xử lý tín hiệu âm thanh và audio feature extraction
Nền tảng của hệ thống nhận dạng là khả năng audio feature extraction (trích xuất đặc trưng âm thanh) một cách hiệu quả. Thay vì làm việc trực tiếp với sóng âm, tín hiệu được chia thành các khung (frames) nhỏ và chồng chéo. Đối với mỗi khung, biến đổi Fourier được áp dụng để tạo ra một biểu đồ spectrogram, thể hiện cường độ của các tần số theo thời gian. Từ spectrogram, các điểm đỉnh (peaks) được xác định. Một điểm đỉnh là một điểm trong biểu đồ có cường độ lớn hơn tất cả các điểm lân cận. Việc chọn ra các điểm nổi bật này giúp giảm thiểu ảnh hưởng của nhiễu và tập trung vào những đặc điểm cốt lõi của giai điệu. Các đặc trưng này sau đó được sử dụng để tạo ra fingerprint.
3.2. Xây dựng cơ sở dữ liệu vân tay âm thanh fingerprint
Sau khi trích xuất, các đặc trưng cần được lưu trữ một cách hiệu quả để phục vụ việc tra cứu nhanh. Hệ thống không lưu trữ toàn bộ spectrogram mà chỉ lưu các cặp điểm đỉnh được mã hóa. Mỗi mã hash được tạo ra từ tần số của hai điểm đỉnh và khoảng thời gian chênh lệch giữa chúng. Cấu trúc dữ liệu này được thiết kế để tối ưu hóa tốc độ tìm kiếm. Khi một đoạn nhạc mẫu được đưa vào, hệ thống sẽ tạo ra một loạt các mã hash tương ứng và truy vấn cơ sở dữ liệu để tìm các bài hát có số lượng hash trùng khớp nhiều nhất trong một khoảng thời gian nhất quán. Cách tiếp cận này giúp hệ thống có khả năng nhận diện nhanh chóng ngay cả với một cơ sở dữ liệu lớn.
IV. Bí quyết xây dựng hệ thống đề xuất âm nhạc với học máy
Trọng tâm của tính năng đề xuất là việc ứng dụng học máy trong đề xuất nhạc. Khóa luận này đã xây dựng một hệ thống lai (hybrid model), kết hợp ưu điểm của nhiều phương pháp khác nhau để đưa ra gợi ý chính xác nhất. Hướng tiếp cận chính là lọc dựa trên nội dung (content-based filtering), trong đó mô hình mạng nơ-ron tích chập (CNN), cụ thể là kiến trúc ResNet50, được huấn luyện để tự động phân loại thể loại nhạc trực tiếp từ file audio. Bằng cách trích xuất các đặc trưng từ spectrogram của bài hát, mô hình có thể "hiểu" được nội dung âm nhạc. Điều này giúp giải quyết vấn đề "khởi đầu lạnh" cho các bài hát mới. Bên cạnh đó, các yếu tố của lọc cộng tác (collaborative filtering) cũng được tích hợp. Hệ thống theo dõi lịch sử nghe, lượt thích của người dùng để xây dựng hồ sơ sở thích. Dựa trên hồ sơ này, thuật toán tìm kiếm những người dùng có sở thích tương tự (phân cụm người dùng) để đưa ra gợi ý. Cuối cùng, các chiến lược đề xuất được cá nhân hóa: đề xuất bài hát tương tự bài đang nghe (dựa trên độ tương đồng cosine của các đặc trưng âm thanh), đề xuất dựa trên các bài hát người dùng nghe nhiều nhất, và đề xuất theo thể loại yêu thích. Sự kết hợp này tạo ra một music recommendation system toàn diện và linh hoạt.
4.1. Ứng dụng mô hình CNN để phân loại nội dung âm nhạc
Mô hình ResNet50 được chọn để phân loại thể loại nhạc. Đầu vào của mô hình là hình ảnh spectrogram được tạo ra từ file âm thanh. Thư viện Librosa được sử dụng để thực hiện việc trích xuất đặc trưng âm thanh và tạo spectrogram. Mô hình được huấn luyện trên một tập dữ liệu lớn gồm các bài hát đã được gán nhãn thể loại. Quá trình huấn luyện giúp mạng nơ-ron học cách nhận biết các mẫu đặc trưng của từng thể loại, chẳng hạn như nhịp điệu, hòa âm, và các đặc tính tần số. Sau khi huấn luyện, mô hình có khả năng dự đoán thể loại cho một bài hát bất kỳ với độ chính xác cao, được đánh giá qua các chỉ số như confusion matrix. Đây là nền tảng cho phương pháp lọc dựa trên nội dung (content-based filtering).
4.2. Kỹ thuật lọc cộng tác và xây dựng ma trận người dùng vật phẩm
Phương pháp lọc cộng tác (collaborative filtering) được triển khai bằng cách phân tích hành vi của người dùng. Hệ thống xây dựng một ma trận người dùng-vật phẩm (user-item matrix), trong đó các hàng đại diện cho người dùng, các cột đại diện cho bài hát, và giá trị ô là mức độ tương tác (ví dụ: số lần nghe, lượt thích). Mặc dù không trực tiếp sử dụng các thuật toán phân rã ma trận như thuật toán SVD trong khóa luận này, ý tưởng cốt lõi vẫn được áp dụng. Hệ thống tìm ra những người dùng có vector hành vi tương tự nhau và đề xuất các bài hát mà người dùng tương tự đã thích nhưng người dùng hiện tại chưa nghe. Cách tiếp cận này giúp khám phá các sở thích tiềm ẩn mà phương pháp dựa trên nội dung có thể bỏ qua.
V. Hướng dẫn triển khai kiến trúc hệ thống gợi ý và kết quả
Việc xây dựng website nghe nhạc không chỉ là về thuật toán mà còn là về kiến trúc hệ thống gợi ý. Hệ thống được thiết kế theo kiến trúc microservices, phân tách rõ ràng các thành phần chức năng. Một server chính sử dụng .NET Core xử lý các tác vụ thông thường như quản lý người dùng, bài hát và streaming. Một server riêng biệt sử dụng Flask được dành riêng cho hệ thống nhận dạng và đề xuất. Client được xây dựng bằng Angular, giao tiếp với các server backend thông qua API. Cách phân tách này giúp hệ thống dễ dàng mở rộng và bảo trì. Ví dụ, khi cần nâng cấp thuật toán gợi ý nhạc, chỉ cần cập nhật service Flask mà không ảnh hưởng đến phần còn lại của hệ thống. Kết quả nghiên cứu cho thấy các mô hình được xây dựng đạt hiệu quả cao. Mô hình nhận dạng có khả năng tìm thấy bài hát chính xác từ các đoạn ghi âm ngắn. Hệ thống đề xuất âm nhạc cho ra những gợi ý phù hợp, được minh họa qua các ví dụ về đề xuất dựa trên bài hát hiện tại và lịch sử người dùng. Việc đánh giá hệ thống đề xuất được thực hiện thông qua các chỉ số định tính và phân tích Confusion Matrix của mô hình phân loại ResNet50, cho thấy độ chính xác đáng kể trong việc xác định thể loại nhạc.
5.1. Thiết kế kiến trúc hệ thống và luồng dữ liệu
Kiến trúc hệ thống bao gồm ba thành phần chính: Client (Angular), Music Server (.NET Core), và AI Server (Flask). Người dùng tương tác với giao diện trên Client. Các yêu cầu thông thường như nghe nhạc, quản lý playlist sẽ được gửi đến Music Server. Khi người dùng sử dụng tính năng nhận dạng hoặc yêu cầu gợi ý, Client sẽ gọi đến AI Server. AI Server xử lý yêu cầu bằng các mô hình học máy trong đề xuất nhạc đã được huấn luyện và trả kết quả về. Dữ liệu được lưu trữ trong MongoDB và một hệ thống file storage cho các file âm thanh. Luồng dữ liệu được thiết kế rõ ràng, đảm bảo tính nhất quán và hiệu suất cao cho toàn bộ hệ thống.
5.2. Đánh giá hệ thống đề xuất và độ chính xác của mô hình
Việc đánh giá hệ thống đề xuất là một bước quan trọng. Đối với mô hình phân loại thể loại nhạc ResNet50, khóa luận đã sử dụng Confusion Matrix để trực quan hóa hiệu suất. Kết quả cho thấy mô hình có khả năng phân biệt tốt giữa các thể loại khác nhau, mặc dù có một số nhầm lẫn nhỏ giữa các thể loại có đặc tính âm nhạc tương tự. Đối với chức năng nhận dạng, độ chính xác được kiểm thử bằng cả file âm thanh gốc và các đoạn ghi âm thực tế, kết quả cho thấy khả năng nhận dạng mạnh mẽ. Các đề xuất được tạo ra từ hệ thống lai (hybrid model) cũng được đánh giá là phù hợp và đa dạng, giúp nâng cao trải nghiệm khám phá âm nhạc của người dùng.
VI. Kết luận khóa luận và định hướng phát triển trong tương lai
Khóa luận "Xây dựng Website Nghe Nhạc Kết Hợp Nhận Diện Nhạc Qua Giai Điệu Và Đề Xuất" đã hoàn thành xuất sắc các mục tiêu đề ra. Về mặt sản phẩm, một website nghe nhạc đầy đủ chức năng đã được xây dựng, tích hợp thành công hai tính năng cốt lõi là nhận dạng và đề xuất. Về mặt nghiên cứu, đề tài đã áp dụng và kiểm chứng hiệu quả của các kỹ thuật xử lý âm thanh, Music Fingerprinting và các mô hình học máy hiện đại như CNN trong lĩnh vực âm nhạc. Đây là một công trình khóa luận tốt nghiệp CNTT có giá trị thực tiễn cao, minh chứng cho khả năng ứng dụng các kiến thức học thuật vào giải quyết các bài toán trong thế giới thực. Tuy nhiên, hệ thống vẫn còn một số hạn chế như tập dữ liệu huấn luyện còn giới hạn và các thuật toán đề xuất có thể được cải tiến hơn nữa. Hướng phát triển trong tương lai có thể bao gồm việc mở rộng cơ sở dữ liệu bài hát, sử dụng các kiến trúc Deep Learning phức tạp hơn như Transformer cho việc phân tích âm nhạc, hoặc tích hợp xử lý ngôn ngữ tự nhiên (NLP) để phân tích lời bài hát và cảm xúc, từ đó tạo ra một music recommendation system thông minh và tinh vi hơn. Việc sử dụng các công cụ như Spotify API để làm giàu dữ liệu cũng là một hướng đi tiềm năng.
6.1. Tổng kết các kết quả nghiên cứu và sản phẩm đạt được
Kết quả chính của khóa luận là một sản phẩm website hoạt động ổn định và hai hệ thống con mạnh mẽ. Hệ thống nhận dạng âm thanh chứng tỏ độ chính xác cao trong các điều kiện thử nghiệm khác nhau. Hệ thống đề xuất âm nhạc đã triển khai thành công mô hình lai, kết hợp cả phương pháp dựa trên nội dung và hành vi người dùng, mang lại các gợi ý đa dạng và phù hợp. Quá trình nghiên cứu đã giúp làm sâu sắc thêm hiểu biết về các lĩnh vực như xử lý tín hiệu số, machine learning for music recommendation, và kiến trúc phần mềm hiện đại.
6.2. Các hướng phát triển tiềm năng cho hệ thống trong tương lai
Để hoàn thiện hệ thống, nhiều hướng phát triển có thể được xem xét. Đầu tiên, có thể cải tiến thuật toán gợi ý nhạc bằng cách áp dụng các mô hình học sâu tiên tiến hơn, có khả năng nắm bắt các mối quan hệ phức tạp trong dữ liệu. Thứ hai, tích hợp xử lý ngôn ngữ tự nhiên (NLP) để phân tích lời bài hát, bình luận của người dùng có thể bổ sung một chiều dữ liệu mới cho việc đề xuất. Thứ ba, có thể xây dựng một hệ thống đề xuất theo ngữ cảnh (context-aware), gợi ý nhạc dựa trên thời gian trong ngày, tâm trạng hoặc hoạt động của người dùng. Cuối cùng, việc mở rộng quy mô hệ thống và tối ưu hóa hiệu năng để phục vụ lượng người dùng lớn là một bước đi cần thiết để đưa sản phẩm ra thực tế.