0
0
Lập trình
Admin Team
Admin Teamtechmely

NeuralNotes — Tạo Nhạc Tự Động Bằng Mạng Nơ-ron Transformer

Đăng vào 3 ngày trước

• 6 phút đọc

Giới Thiệu

Trong luận văn cử nhân tại VGU, tôi đã chọn nghiên cứu về tạo nhạc tự động sử dụng học sâu. Công nghệ học sâu và học máy nói chung hiện đang được áp dụng để sản xuất các tác phẩm âm nhạc.

Việc khai thác tiềm năng của học sâu trong nhiệm vụ tạo ra âm nhạc cho phép con người tạo ra những bản nhạc mới mẻ và độc đáo mà không phải bắt đầu từ con số không, tiết kiệm thời gian và công sức trong quá trình sáng tạo. Hơn nữa, nó giúp con người khám phá những khả năng và ý tưởng âm nhạc khác nhau. Tuy nhiên, không thể phủ nhận rằng những sản phẩm âm nhạc do AI tạo ra hiện tại thường thiếu sự hài hòa hơn mong đợi, như độ tương thích âm sắc, sự lặp lại của nốt nhạc, hay cấu trúc nhịp điệu không rõ ràng, dễ bị sao chép hoặc thiếu sự sáng tạo.

Khi nói về việc phát triển, đó là một quá trình toàn diện. Với tốc độ phát triển công nghệ hiện tại, tôi tin tưởng rằng một AI có thể sáng tác âm nhạc ở mức độ ngang tầm với một nghệ sĩ là một điều có thể xảy ra.

Trong bài viết này, tôi sẽ trình bày về những gì tôi đã đạt được và những bước thực hiện trong suốt quá trình. Nội dung của bài viết sẽ bao gồm:

  • Triển Khai: Tôi sẽ thảo luận về các thư viện, khung công tác và một giới thiệu ngắn gọn về kiến trúc học sâu mà tôi đã sử dụng.
  • Kiến Trúc Hệ Thống: Tôi sẽ đi sâu vào chi tiết về hệ thống mà tôi đề xuất để người dùng ở mọi trình độ kỹ năng máy tính đều có thể tương tác và trải nghiệm mô hình.
  • Công Việc Tương Lai và Kết Luận: Tôi sẽ đưa ra một số nhận xét về phương pháp mà tôi đã đề xuất. Tôi rất mong bạn sẽ trải nghiệm dự án của tôi.

Triển Khai

Để phát triển dự án này, tôi đã chọn sử dụng ngôn ngữ lập trình Python với các công cụ sau:

  • FastAPI: để triển khai ứng dụng web với hiệu suất cao, dễ hiểu và sử dụng, giúp giảm lượng mã dư thừa. Gần đây, ngày càng có nhiều dự án học máy sử dụng FastAPI.
  • Jinja: một lựa chọn phổ biến cho các công cụ mẫu trong các khung web Python.
  • MongoDB: một cơ sở dữ liệu NoSQL không có cấu trúc cố định, do đó dễ dàng thêm hoặc xoá trường trong tài liệu mà không thay đổi cấu trúc cơ sở dữ liệu.
  • PyTorch: một khung học máy mã nguồn mở, nổi bật với tính dễ sử dụng và linh hoạt, cùng với khả năng xử lý hiệu quả, rất thích hợp cho môi trường sản xuất.

Về công nghệ cốt lõi sử dụng học sâu để tạo ra âm nhạc, tôi đã chọn MuseMorphose. Kiến trúc MuseMorphose bao gồm một không gian ẩn có quy định KL divergence để biểu diễn các bar âm nhạc giữa một encoder Transformer tiêu chuẩn làm việc ở cấp độ bar và một decoder Transformer tiêu chuẩn chấp nhận điều kiện ở cấp độ đoạn thông qua cơ chế in-attention.

Trong cài đặt của tôi, vì Decoder chịu trách nhiệm tạo ra nhạc, tôi đã thực hiện một số thay đổi nhỏ đối với mã hóa vị trí của nó để đạt được hiệu suất tốt hơn.

Một lý do khác tôi chọn mô hình này là vì nó cũng giới thiệu các phương pháp mới để biểu diễn âm nhạc theo cách ký hiệu khác ngoài MIDI, đó là REMI (Revamped MIDI). REMI có nhiều thuộc tính hơn so với tổ tiên của nó và được phát triển để phục vụ cho các mô hình dựa trên Transformer với kiến thức âm nhạc của con người.

Kiến Trúc Hệ Thống

Quy trình của ứng dụng rất dễ hiểu. Người dùng gửi yêu cầu từ giao diện web đến dịch vụ phía sau. Đại lý sẽ được kích hoạt và tạo ra các bài hát, sau đó trả lại cho người dùng.

Theo như hình vẽ, trong quy trình, có hai mô tả được minh hoạ bằng các đường rắn và đường đứt. Tôi muốn hệ thống sử dụng dữ liệu mà nó nhận được theo thời gian. "Lưu trữ Dữ Liệu" sẽ được cập nhật tự động, mở rộng dữ liệu.

  • Cập nhậtชุด dữ liệu tại một điểm địa phương cung cấp sự đa dạng trong các bài hát và thể loại nhạc, cải thiện trải nghiệm của người dùng.
  • Việc tính toán và lưu trữ nên được đặt gần nguồn dữ liệu. Theo hiểu biết của tôi, việc triển khai này có thể giảm độ trễ bằng cách đưa máy tính và lưu trữ gần hơn với các nguồn dữ liệu và có thể tăng hiệu suất bằng cách giảm khoảng cách mà dữ liệu cần di chuyển trước khi được xử lý.
  • Hệ thống cũng cải thiện bảo mật vì các chiến lược tấn công có thể được sử dụng để khai thác dữ liệu trong quá trình truyền thông sẽ bị loại bỏ khi giữ dữ liệu gần nguồn.

Hình vẽ cũng mô tả ba cụm mà tôi đã gán nhãn là ứng dụng, phòng lab và lưu trữ. Ứng dụng có kiến trúc 3 tầng bao gồm giao diện cho giao tiếp của người dùng, máy chủ ứng dụng và nguồn dữ liệu. Phòng lab bao gồm đại lý và lưu trữ cục bộ, trong cấu hình của tôi là một thư mục lưu trữ dữ liệu nhận, kết quả và tài nguyên. Chức năng chính của lưu trữ là giữ dữ liệu.

Ví dụ, một người có nhiều kinh nghiệm trong nghiên cứu mô hình sẽ làm việc trong "phòng lab", nơi mà họ chỉ tập trung vào việc nghiên cứu và sử dụng mô hình và dữ liệu để tạo ra kết quả thành công. Ngược lại, "lưu trữ" sẽ là nơi mà người dùng hoặc kỹ sư giàu kinh nghiệm trong xử lý thông tin nghiên cứu hành vi gần đây, thể loại nhạc mà người dùng có vẻ quan tâm, hoặc liệu sở thích âm nhạc của họ có bị phân cực hay tập trung ở những hồ sơ cụ thể hay không.

Việc triển khai sớm của hệ thống có thể chỉ yêu cầu một lượng kiến thức nhỏ, nhưng khi phát triển, sự phức tạp của kỹ năng yêu cầu sẽ phân biệt kỹ năng của các nhà phát triển trong mỗi cụm. Nói cách khác, hệ thống cần được chia thành các cụm nhỏ hơn cho sự phát triển trong tương lai do sự khác biệt về lần kiến thức giữa mỗi mô-đun. Điều này làm cho việc chia thành ba cụm trở nên hợp lý, giúp cho hệ thống dễ dàng quản lý, bảo trì và phát triển.

Công Việc Tương Lai và Kết Luận

Tổng thể, tôi đã đề xuất một phương pháp sử dụng học sâu để tự động tạo ra âm nhạc, cùng với một kiến trúc ứng dụng đảm bảo sự đa dạng trong dữ liệu âm nhạc, để trong quá trình tạo nhạc, người dùng có thể trải nghiệm những phong cách khác nhau từ một tác phẩm âm nhạc đã cho.

Trong tương lai, tôi sẽ tập trung vào việc ứng dụng RLHF vào ứng dụng của tôi, để đại lý của tôi có thể sản xuất nhạc “cục bộ”.


Cảm ơn bạn đã đọc bài viết này; tôi hy vọng nó đã mang lại điều gì đó cho ngân hàng kiến thức của bạn! Trước khi bạn rời đi:

👉 Đừng quên nhấn nút thích và theo dõi tôi. Điều đó sẽ là động lực lớn cho tôi.

👉 Theo dõi tôi: Linkedin | Github
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào