Keras có một cộng đồng hỗ trợ lớn và hỗ trợ tài liệu chi tiết dễ dàng cho việc
nghiên cứu. Keras hỗ trợ sẵn các model giúp cho việc xây dựng mô hình máy học đơn giản hơn chỉ qua các bước như:
● Chuẩn bị data cho việc training model ● Thực hiện Data Preprocessing
● Xây dựng mô hình máy học
● Train mô hình dựa trên phương thức fit() của Keras ● Đánh giá mô hình dựa trên dữ liệu test.
Ngoài ra. Chúng ta có thể tăng tốc tốc độ huấn luyện mô hình bằng cách sử dụng nhiều
11
Chương 3. PHÂN TÍCH
3.1. Tìm hiểu công nghệ
3.1.1. Tổng quan về quá trình
3.1.2. Xử lý thu âm
Âm thanh trong thực tế là một dao động lan truyền như một sóng cơ học qua môi trường như không khí hoặc nước. Để ghi lại được âm thanh thì các thiết bị thu âm mô phỏng khá sát với quá trình mà con người chúng ta nhận biết được âm thanh. Sử dụng áp suất của sóng chuyển thành tín hiệu điện ( Tức chuyển từ Analog thành Digital). Tín hiệu điện sau khi được xử lý từ micro có tính liên tục. Tín hiệu liên tục này không quá hữu ích trong thế giới kĩ thuật số, vì vậy trước hết phải dịch nó thành một tín hiệu có tín rời rạc để được lưu trữ dưới dạng kỹ thuật số (Digital).
Việc chuyển đổi có thể xuất hiện lỗi. Do đó, thay vì chỉ chuyển một lần duy nhất, bộ chuyển đổi này thực hiện nhiều lần chuyển đổi, quá trình này được gọi là Lấy Mẫu (Sampling).
12 Để thu được hết tất cả các âm thì chúng ta sẽ âm với tần số gấp đôi dải tần mà con người có thể có nghe được ( 20Hz – 20,000Hz). Do đó, hầu hết các máy thu âm hiện nay sử dụng tần số 44,100 Hz.
3.1.3. Time-Domain và Frequency-Domain
Thứ chúng ta có được trong những mảng nhị phân này là Signal Recorded trong Time-Domain. Nó cho chúng ta thấy những thay đổi trong biên độ của tín hiệu qua thời
gian.
Hình 3.1.3-1 Analog và Digital Signal Hình 3.1.2 Xử lý thu âm
13 Với phát hiện vào những năm 1800, bất kỳ tín hiệu nào trong miền thời gian đều tương đương với tổng của một số ( có thể là vô hạn) các tín hiệu hình sin. Chuỗi sin kết hợp với nhau tạo thành Signal Time-Domain ban đầu của nó được gọi là chuỗi Fourier của nó.
Nói cách khác, có thể biểu diễn bất kỳ Time-Domain nào bằng cách thể hiện tập hợp tần số, biên độ và pha tương ứng của mỗi hình sin tạo nên tín hiệu. Sự thể hiện này được gọi là Frequency Domain. Có thể coi Frequency Domain là một fingerprint
hoặc một signature của Tín hiệu Time-Domain.
14 Chúng ta sử dụng Discrete Fourier Transform (DFT) để chuyển tín hiệu từ Time
Domain ra Frequency Domain. DFT là một lý thuyết toán học để biểu diễn Fourier
Analysis trên một mẫu tín hiệu rời rạc (Sample Signal).
Một trong những thuật toán nổi tiếng nhất cho việc tính toán của DFT là The Fast
Fourier transform (FFT).Cho đến nay, biến thể được sử dụng phổ biến nhất của FFT
là thuật toán Cooley – Tokey. Với việc sử dụng đệ quy thì thay vì tính toán với DFT đơn thuần với độ phức tạp là O(n2), ta chỉ mất O(n log n ).
Ngoài ra còn một số cách xử lý âm thanh như kích tín hiệu tần số, trượt window sau đó sử dụng DFT và FFT, mel filterbank.
Hình 3.1.3-3 Chuyển đổi từ TimeDomain sang FrequencyDomain
15
3.2. Xây dựng hệ thống
3.2.1. Xây dựng kiến trúc hệ thống
Hệ thống bao gồm các thành phần sau:
⎼ Web (client): thể hiện giao diện nơi người dùng tương tác với hệ thống. Client
giao tiếp với Server thông qua Request/Response để yêu cầu xử lý thông tin và nhận kết quả hiển thị lên cho người dùng. Web (client) được hiện thực hóa sử dụng Angular.
Hình 3.1.3-5 Công thức biến đổi cho hàm rời rạc
16
⎼ Server (.NET Core): Nhận và xử lý các request về tính năng nghe nhạc từ Client.
Có thể tương tác với Database để tương tác dữ liệu và trả kết quả về cho Client thông qua Response. Server được hiện thực hóa sử dụng .NET Core và Python
⎼ Database: Lưu trữ toàn bộ dữ liệu của hệ thống.
⎼ Storage: Lưu trữ các file BLOB quá nặng mà Database không thể lưu trữ tốt
3.2.2. Thiết kế hệ thống
17
3.2.2.1 Đặc tả Usecase Đăng ký
Tên chức năng Đăng ký
Tóm tắt Chức năng đăng ký vào hệ thống.
Dòng sự kiện chính 1. Hệ thống hiển thị biểu mẫu đăng ký.
2. Người dung nhập các trường thông tin đăng ký và nhấn “Đăng ký”.
3. Hệ thống kiểm tra thông tin đăng ký và thực hiện đăng ký
(Dòng sự kiện khác: Đăng ký không thành công). 4. Hệ thống hiển thị đăng ký thành công và chuyển qua trang đăng nhập.
Dòng sự kiện khác 1. Đăng ký không thành công:
Hệ thống hiển thị thông báo tài khoản đăng ký không hợp lệ hoặc lỗi.
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
Bảng 3.2.1 Đặc tả Usecase Đăng ký
3.2.2.2 Đặc tả Usecase Đăng nhập
Tên chức năng Đăng nhập
Tóm tắt Chức năng đăng nhập vào hệ thống.
Dòng sự kiện chính 1. Hệ thống hiển thị biểu mẫu đăng nhập.
2. Người dùng nhập tên và tài khoản (cả 2 trường này đều bắt buộc nhập) và nhấn “Đăng nhập”.
18
(Dòng sự kiện khác: Thông tin đăng nhập sai). 4. Hệ thống hiển thị form chính.
Dòng sự kiện khác 1. Thông tin đăng nhập sai:
Hệ thống hiển thị thông báo tài khoản đăng nhập không hợp lệ.
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Admin Điều kiện: không có
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
Bảng 3.2.2 Đặc tả Usecase Đăng nhập
3.2.2.3 Đặc tả Usecase Đăng Xuất
Tên chức năng Đăng xuất
Tóm tắt Chức năng đăng xuất ra hệ thống.
Dòng sự kiện chính 1. Người dùng nhấn vào Đăng xuất
2. Hệ thống đăng xuất và trở về màn hình chính
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực hiện use
case
Actor: Admin
Điều kiện: người dùng đã đăng nhập hệ thống
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
19
3.2.2.4 Đặc tả Usecase Bảng xếp hạng
Tên chức năng Bảng xếp hạng
Tóm tắt Người dùng xem bảng xếp hạng các nghệ sĩ và bài hát
dựa trên lượt nghe, thích
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Hệ thống hiển thị bảng xếp hạng
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
Bảng 3.2.4 Đặc tả Usecase Bảng xếp hạng
3.2.2.5 Đặc tả Usecase Nghe nhạc
Tên chức năng Nghe nhạc
Tóm tắt Người dùng lựa chọn và phát bài nhạc mong muốn
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Play trên bài nhạc 3. Hệ thống phát nhạc
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
20
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Xem lyrics
Bảng 3.2.5 Đặc tả Usecase Nghe nhạc
3.2.2.6 Đặc tả Usecase Xem Lyrics
Tên chức năng Xem Lyrics
Tóm tắt Người dùng lựa chọn bài nhạc và xem lời bài hát
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Play trên bài nhạc 3. Hệ thống phát nhạc
4. Người dùng chọn nút Player trên thang Sidenav để chuyển đến giao diện phát nhạc lớn
5. Hệ thống hiển thị lời bài hát khớp với thời gian
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
Bảng 3.2.6 Đặc tả Usecase Xem Lyrics
3.2.2.7 Đặc tả Usecase Karaoke
Tên chức năng Karaoke
21
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Play trên bài nhạc 3. Hệ thống phát nhạc
4. Người dùng chọn nút Player trên thang Sidenav để chuyển đến giao diện phát nhạc lớn
5. Hệ thống hiển thị lời bài hát khớp với thời gian
6. Người dùng chọn nút Karaoke để chuyển qua Karaoke Mode
7. Hệ thống thu âm lại đoạn Karaoke
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện use
case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use case
Không có
Điểm mở rộng Thu âm
Bảng 3.2.7 Đặc tả Usecase Karaoke
3.2.2.8 Đặc tả Usecase Tương tác với bài nhạc
Tên chức năng Tương tác với bài nhạc
Tóm tắt Người dùng lựa chọn bài nhạc và tương tác với bài hát
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Like/Download trên bài nhạc
3. Hệ thống ghi nhận các hoạt động của người dùng
Dòng sự kiện khác Không có
22
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống ghi nhận các hoạt động của người dùng
Điểm mở rộng Không có
Bảng 3.2.8 Đặc tả Usecase Tương tác với bài nhạc
3.2.2.9 Đặc tả Usecase Playlist cá nhân
Tên chức năng Playlist cá nhân
Tóm tắt Người dùng lựa chọn bài nhạc và thêm vào playlist
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Add to playlist trên bài nhạc 3. Hệ thống hiển thị danh sách Playlist
4. Người dùng thêm bài nhạc vào Playlist
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
Bảng 3.2.9 Đặc tả Usecase Playlist cá nhân
3.2.2.10 Đặc tả Usecase Gợi ý âm nhạc
23
Tóm tắt Người dùng được gợi ý các bài hát phù hợp với bản thân
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Play trên bài nhạc 3. Hệ thống phát nhạc
4. Người dùng chọn nút Player trên thang Sidenav để chuyển đến giao diện phát nhạc lớn
5. Hệ thống hiển thị lời bài hát khớp với thời gian
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Không có
Điểm mở rộng Không có
Bảng 3.2.10 Đặc tả Usecase Gợi ý âm nhạc
3.2.2.11 Đặc tả Usecase Tìm kiếm bài hát
Tên chức năng Tìm kiếm bài hát
Tóm tắt Người dùng tìm kiếm bài hát mong muốn
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Search trên Side Nav 3. Hệ thống hiển thị ra khung search
4. Người dùng nhập nội dung tìm kiếm
5. Hệ thống hiển thị danh sách kết quả tìm kiếm
Dòng sự kiện khác Không có
24
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống hiển thị danh sách kết quả tìm kiếm
Điểm mở rộng Nhận diện nhạc qua giai điệu
Bảng 3.2.11 Đặc tả Usecase Tìm kiếm bài hát
3.2.2.12 Đặc tả Usecase Nhận diện nhạc qua giai điệu
Tên chức năng Nhận diện nhạc qua giai điệu
Tóm tắt Nhận diện một đoạn nhạc cần tìm kiếm
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Search trên Sidenav 3. Hệ thống hiển thị ra khung search
4. Người dùng nhấn vào nút Micro
5. Hệ thống hiển thị trang tìm kiếm qua giai điệu 6. Người dùng lựa chọn thu âm hoặc tải lên đoạn nhạc cần tìm kiếm
7. Hệ thống trả về kết quả tìm kiếm dựa trên độ chính xác
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện:
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống nhận diện và trả kết quả cho người dung.
Điểm mở rộng Không có
25
3.2.2.13 Đặc tả Usecase Quản lý profile
Tên chức năng Quản lý profile
Tóm tắt Người dùng quản lý profile cá nhân
Dòng sự kiện chính 1. Người dùng truy cập vào trang chủ
2. Người dùng nhấn vào nút Profile trên Side Nav 3. Hệ thống hiển thị ra form Profile
4. Người dùng nhập nội dung chỉnh sửa 5. Hệ thống lưu lại kết quả chỉnh sửa
Dòng sự kiện khác Không có
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Anonymous Điều kiện: Không có
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống lưu lại kết quả chỉnh sửa
Điểm mở rộng Không có
Bảng 3.2.13 Đặc tả Usecase Quản lý Profile
3.2.2.14 Đặc tả Usecase Thêm bài hát
Tên chức năng Thêm bài hát
Tóm tắt Thêm bài hát vào cơ sở dữ liệu của hệ thống
Dòng sự kiện chính 1. Người dùng đăng nhập vào trang quản trị
2. Người dùng chọn trang quản trị bài hát 3. Người dùng chọn Thêm bài hát
4. Người dùng nhập điền đầy đủ thông tin bài hát 5. Người dùng nhấn “Thêm”
6. Hệ thống Thêm bài hát
Dòng sự kiện khác Không thể thêm bài hát
26
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Admin
Điều kiện: Người dùng đã đăng nhập hệ thống
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống thêm bài hát vào cơ sở dữ liệu
Điểm mở rộng Không có
Bảng 3.2.14 Đặc tả Usecase Thêm bài hát
3.2.2.15 Đặc tả Usecase Sửa bài hát
Tên chức năng Sửa bài hát
Tóm tắt Sửa bài hát vào cơ sở dữ liệu của hệ thống
Dòng sự kiện chính 1. Người dùng đăng nhập vào trang quản trị
2. Người dùng chọn trang quản trị bài hát 3. Người dùng chọn Sửa bài hát
4. Người dùng nhập điền đầy đủ thông tin cần sửa 5. Người dùng nhấn “Sửa”
6. Hệ thống Sửa bài hát
Dòng sự kiện khác Không thể sửa bài hát
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Admin
Điều kiện: Người dùng đã đăng nhập hệ thống
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống sửa bài hát trong cơ sở dữ liệu
Điểm mở rộng Không có
27
3.2.2.16 Đặc tả Usecase Xóa bài hát
Tên chức năng Xóa bài hát
Tóm tắt Xóa bài hát vào cơ sở dữ liệu của hệ thống
Dòng sự kiện chính 1. Người dùng đăng nhập vào trang quản trị
2. Người dùng chọn trang quản trị bài hát 3. Người dùng chọn Xóa bài hát
4. Hệ thống hiện hộp thoại “Xác nhận xóa” 5. Người dùng nhấn “Xác nhận”
6. Hệ thống Xóa bài hát
Dòng sự kiện khác Không thể xóa bài hát
Các yêu cầu đặc biệt Không có
Trạng thái hệ thống trước khi thực thiện
use case
Actor: Admin
Điều kiện: Người dùng đã đăng nhập hệ thống
Trạng thái hệ thống sau khi thực hiện use
case
Hệ thống xóa bài hát trong cơ sở dữ liệu
Điểm mở rộng Không có
Bảng 3.2.16 Đặc tả Usecase Xóa bài hát
3.2.2.17 Đặc tả Usecase Thêm nghệ sĩ
Tên chức năng Thêm nghệ sĩ