Minh hoạ cơ chế window and bin

Một phần của tài liệu Tổng hợp âm nhạc sử dụng học sâu (Trang 60 - 65)

Phía bên trái minh hoạ cho của sổ cục bộ quanh nốt đang xét. Phía bên phải, các nốt cùng lớp cao độ trên các quãng 8 được "đóng thùng" với nhau. Lưu ý rằng một quãng 8 trong ảnh minh hoạ được biểu diễn gồm 4 nốt, trên thực tế kích thước của 1 quãng 8 là 12 nốt (Nguồn: [24]).

• 12 bit biểu diễn lớp cao độ của nốt hiện tại.

• 50 bit để biểu diễn cửa sổ cục bộ của nốt. Mỗi nốt nằm trong cửa sổ cục bộ này sẽ được biểu diễn 2 trạng thái bằng 2 bit: 1 bit biểu diễn nốt đó được chơi hay khơng, 1 bit biểu diễn nốt có được chơi dứt khốt (khơng ngân kéo dài qua 2 bước thời gian) hay khơng.

• 12 bit biểu diễn các "thùng".

• 4 bit để biểu diễn nhịp.

Đầu vào này sẽ được truyền vào cho lớp đầu tiên của trục thời gian. Ở trục nốt sẽ nhận vào 2 đầu vào: đầu ra của lớp LSTM cuối cùng theo trục thời gian của nốt đó, và đầu ra cuối cùng của mạng neuron tương ứng với nốt liền trước (thấp hơn nửa cung). Đầu ra cuối cùng sẽ được qua hàm kích hoạt softmax để tính tốn 2 giá trị xác suất:

• Xác suất nốt được chọn để chơi.

• Xác xuất nốt được chơi dứt khốt (tức là khơng ngân nốt liên tục giữa các timestep) nếu nó được chọn để chơi.

4.2 Mơ hình DeepJ

Mơ hình DeepJ thừa hưởng chủ yếu từ mơ hình Biaxial LSTM kết hợp với những cải tiến của nhóm tác giả giúp mơ hình có thể sinh ra nhạc theo một loại hay kết hợp các phong cách soạn nhạc của các tác giả chung loại nhạc lại với nhau.

4.2.1 Biểu diễn dữ liệu

Mơ hình DeepJ sử dụng các biểu diễn các bài hát khá tương tự như mơ hình Biaxial nhưng cải tiến hơn về phương thức biểu diễn tiết tấu.

Cường độ trong âm nhạc được định nghĩa là âm lượng tương đối của một nốt nhạc. Đặc tính này rất quan trọng trong biểu diễn, giúp tăng tính cao trào và cảm xúc của bài nhạc. Tập tin MIDI dữ liệu biểu thị độ to của một nốt nhạc trong khoảng từ 0 tới 127. Nhóm tác giả đã nhận thấy đặc tính này và đã thêm nó vào biểu diễn đầu vào của mơ hình: thay vì sử dụng 2 giá trị nhị phân 0 và 1 để biểu diễn nốt có đang được chơi hay khơng như mơ hình Biaxial-LSTM, tác giả đã dùng các số thực trong khoảng từ 0 đến 1 (với giá trị 1 là giá trị biểu thị âm lượng lớn nhất) để đồng thời biểu thị cả âm lượng chơi của nốt. Tệp tin MIDI bài hát được biểu diễn bởi ma trận có kích thước N x T, trong đó N là số các nốt nhạc xuất hiện trong bài hát xét về cao độ, T là độ dài về thời gian của bài hát. Dưới đây là ví dụ cho N = 4 (nốt) qua T = 4 (timestrep), trong đó có 2 nốt được ngân qua 2 timestep liên tiếp với cường độ chơi là 0.4 .

tdynamics=     0 0 0 0 0.4 0.4 0 0 0 0 0 0 0.4 0.4 0 0    

Để đạt được mục tiêu sinh nhạc theo một loại nhạc, mơ hình DeepJ có thêm biểu diễn về loại nhạc bài hát thuộc về và phong cách sáng tác của tác giả bài hát. Các nhạc sĩ sáng tác được gom vào một thể loại âm nhạc cụ thể. Phong cách sáng tác âm nhạc được mã hóa bởi kiểu biểu diễn one-hot cho tất cả cá nhà soạn nhạc. Nếu một dòng nhạc gồm nhiều nhạc sĩ, dịng nhạc đó sẽ được biểu diễn bởi một vector được chuẩn hóa có tổng giá trị tại chỉ số thứ tự của các nhạc sĩ trong dịng nhạc đó tổng bằng 1. Dưới đây là ví dụ vector biểu diễn cho dịng nhạc baroque chứa bài hát của bốn nhạc sĩ có số thứ tự từ 1 tới 4.

sbaroque=

0.25,0.25,0.25,0.25,0,0, ...

Ngồi ra, nhóm tác giả biểu diễn thêm ngữ cảnh đầu vào để mơ hình có thể nắm bắt được cấu trúc bài hát và tạo ra âm nhạc có cấu trúc tốt. Mơ hình được cung cấp vị trí nhịp của thanh nhạc hiện tại bởi vector one-hot có số chiều là q, số lượng qui định nhịp trên mỗi thanh. Mơ hình DeepJ cóq=16để có thể ghi lại được các nốt nhạc ngắn và đồng thời khơng tốn q nhiều chi phí cho việc tính tốn.

4.2.2 Hàm mục tiêu

DeepJ tạo ra nốt nhạc và cường độ của nốt nhạc đó, với mỗi nhịp, mơ hình có 3 đầu ra: xác suất chơi, xác suất lặp lại và xác suất cường độ. Xác suất chơi và lặp lại được huấn luyện như bài toán hồi quy với hàm mất mát binary cross entropy.

Lplay=∑tplaylog(yplay) + (1−tplay)log(1−yplay) (4.4)

Lreplay=∑tplay(treplaylog(yreplay) + (1−treplay)log(1−yreplay)) (4.5) Cường độ huấn luyện sử dụng hàm mất mát mean squared error.

Ldynamics=∑tplay(tdynamics−ydynamics)2 (4.6) Mơ hình DeepJ được huấn luyện sử dụng stochastic gradient descent với hàm tối ưu Nesterov Adam.

4.2.3 Mơ hình

Thiết kế mơ hình DeepJ về cơ bản giống như cấu trúc của mơ hình Biaxial LSTM. Sự khác biệt cơ bản của hai mơ hình là việc sử dụng vector phong cách nhạc ở mỗi lớp của DeepJ.

Hình 4.5:Mơ hình DeepJ

Mơ hình DeepJ gồm hai lớp các tầng LSTM. Lớp LSTM trục thời gian gồm 256 đơn vị và lớp LSTM trục nốt nhạc gồm 128 đơn vị.

Các ma trận biểu diễn bài hát trước khi được đưa vào các lớp LSTM sẽ được đi qua 1 lớp tích chập 1 chiều nhằm trích xuất các đặc điểm của nốt nhạc từ vùng lân cận quãng tám của mỗi nốt nhạc. Sau đó kết quả đầu ra của lớp tích chập được nối với ma trận ngữ cảnh của nốt nhạc trước khi đưa vào các lớp LSTM.

Các loại âm nhạc không nhất thiết phải khác biệt nhau hồn tồn, ví dụ như dịng nhạc classical và baroque có chia sẻ nhiều điểm chung. Do đó, nhóm tác giả cho rằng việc biểu diễn phong cách nhạc sử dụng các vector phân phối đã được trích xuất sẽ phù hợp hơn dạng biểu diễn one- hot. Ở đây, DeepJ sử dụng 1 lớp ẩn tuyến tính, kí hiệu là W, biểu diễn thể loại nhạc s ban đầu sau khi qua lớp này sẽ là h.

h=W s (4.7)

Kết quả h sau đó được nối với một mạng ẩn kết nối đầy đủ với hàm kích hoạt tanh để tạo ra một biểu diễn phi tuyến tiềm ẩnh′ của phong cách âm nhạc ở mỗi lớp LSTM.

h′l=tanh(W′lh) (4.8) Trong đó, l là chỉ số thứ tự của lớp LSTM đó.h′l sẽ ảnh hưởng tới tất cả các nốt nhạc trước khi chúng được đưa vào các lớp LSTM thông qua phép tổng kết (summation). Để làm cho kích thước của hai lớp tương thích cho phép tổng kết, mơ hình thực hiện việc tính tốn kèm vớih′

cho các nốt nhạc. Nói cách khác, đối với nốt thứ i và các đặc điểm đầu vào của nó làxi, đầu ra

zicủa LSTM cho nốt đó được định nghĩa là

zi= f(xi+h′) (4.9) Trong đó xi là đầu vào chưa sửa đổi, "+" đề cập đến phép tổng wise và f là hàm áp dụng lớp LSTM cho một số đầu vào. Điều này áp dụng cùng một phong cách âm nhạc cho mỗi nốt nhạc. Dropout được sử dụng cho DeepJ trong q trình đào tạo. Mơ hình sử dụng tỷ lệ dropout 50% ở tất cả các lớp không phải đầu vào (ngoại trừ lớp nhúng của phong cách âm nhạc) và tỷ lệ dropout 20% ở các lớp đầu vào.

4.3 Đánh giá mơ hình Biaxial LSTM và DeepJ

Mơ hình LSTM và DeepJ đã cho ra những kết quả đáng chú ý trong bài toán sinh nhạc. Các kết quả từ 2 mơ hình đã có thể mơ phỏng tương đối tốt các đặc tính của âm nhạc, đặc biệt mơ hình DeepJ cịn có thể mơ phỏng được cả thể loại và phong cách sáng tác.Tuy nhiên, vì cả 2 mơ hình đều dựa trên mơ hình hồi quy RNN, nên cả 2 đều có những hạn chế đặc trưng của mơ hình hồi quy trong bài tốn xử lý ngơn ngữ tự nhiên:

• Sự lặp lại các mẫu: đây là một hạn chế điển hình của mơ hình hồi quy, dẫn đến giai điệu sinh ra từ mơ hình sẽ có khuynh hướng lặp đi lặp lại các mẫu phổ biến một cách liên tục, làm giảm tính hài hồ và tự nhiên của bài nhạc.

• Sự không thống nhất về giai điệu: giai điệu được sinh ra đơi lúc có những đoạn chuyển đột ngột, dẫn đến sự kém thống nhất và hài hồ.

• Thời gian huấn luyện dài: cả hai mơ hình đều có thời gian huấn luyện khá lớn, địi hỏi tài nguyên cấu hình khá mạnh. Riêng mơ hình DeepJ vì có thêm các lớp xử lý loại nhạc nên yêu cầu về bộ nhớ và tính tốn càng cao nên cần tài nguyên lớn.

Bên cạnh đó, thời gian sinh đầu ra của mơ hình tương đối lớn, khơng thích hợp với mục tiêu tạo trang web sinh nhạc trực tuyến mà nhóm đã đặt ra cho luận văn. Do đó, nhóm đã quyết định khơng sử dụng cả 2 mơ hình cho phạm vi luận văn của mình sau một khoảng thời gian xem xét và cân nhắc. Thay vào đó, nhóm đã tìm kiếm và thử nghiệm một mơ hình phù hợp với mục đích luận văn đã đặt ra hơn: đó là mơ hình MusicAutobot. Chi tiết về mơ hình sẽ được giới thiệu trong mục tiếp theo.

4.4 Mơ hình MusicAutobot

Mơ hình MusicAutobot được xây dựng dựa trên mơ hình xử lý ngơn ngữ tự nhiên Trans- formerXL. Bên cạnh đó, mơ hình cịn có 2 mơ hình bổ trợ đi kèm, là mơ hình "dịch" giai điêu - hợp âm Seq2Seq và mơ hình phối lại giai điệu BERT Masking. Chi tiết về cách thức xử lý dữ liệu, cùng kiến trúc từng mơ hình sẽ được trình bày chi tiết trong các mục bên dưới. Cách thức hiện thực mơ hình sẽ được phân tích chi tiết hơn trong phần 5 - Hiện thực hệ thống.

4.4.1 Tiền xử lý dữ liệu

Dữ liệu đầu vào của mơ hình là dạng tệp MIDI. Phần này sẽ trình bày cách thức mà tệp MIDI được mã hoá biểu diễn trước khi được truyền vào để huấn luyện mơ hình học sâu.

4.4.1.1 Mã hố token (Tokenization)

Các bài hát dưới dạng tệp MIDI sẽ được mã hóa thành các ký tự chữ biểu diễn để có thể sử dụng huấn luyện trong mơ hình học sâu. Khi mã hóa biểu diễn cho bài hát ta cần quan tâm tới 2 kiểu biểu diễn thường thấy trong khuông nhạc là nốt nhạc đơn và hợp âm.

Mã hóa nốt nhạc đơn

Mỗi nốt nhạc đơn cần được thể hiện 2 giá trị là cao độ và trường độ của nốt nhạc đó. Ở đây, để biểu diễn nốt nhạc với 2 giá trị sử dụng chuỗi ký tự để thể hiện như ví dụ trong hình dưới đây. Các nốt nhạc được mã hóa theo các ký tự được quy định sẵn trong từ điển và thêm vào đó là ký tự kèm theo thể hiện trường độ của nốt nhạc đơn đó.

Một phần của tài liệu Tổng hợp âm nhạc sử dụng học sâu (Trang 60 - 65)

Tải bản đầy đủ (PDF)

(94 trang)