Phân tích tín hiệu tự động automatic signal analysis: Tìm hiểu lý thuyết và cài đặt 2 thuật toán tự động tính F0 trên miền thời gian dùng hàm tự tương quan hoặc AMDF và tính F0 trên miền
Trang 1SV cần làm các việc và báo cáo (nói trên slide và viết bằng file MS-Word) theo trình tự sau:
1 Thu thập tín hiệu (signal acquisition):
Mỗi SV thu âm tín hiệu của 5 nguyên âm (/a/, /e/, /i/, /o/, /u/) trong môi trường yên tĩnh bằng chính giọng nói của mình, dùng tính năng “record” của 1 phần mềm xử lý âm thanh (ví dụ, Audacity , Cool Edit, Adobe Audition) với định dạng file wav Tần số lấy mẫu Fs (sampling frequency/sample rate) nên thiết lập ở 10,
16, hoặc 44,1 kHz, độ phân giải (resolution/precision) 16 hoặc 32 bit/mẫu, số kênh là 1 (mono) Sau đó SV dùng Matlab vẽ đồ thị 5 tín hiệu nguyên âm theo chiều dọc (từ trên xuống dưới) dùng hàm subplot(5,1,m),
và phát ra loa mỗi âm dùng hàm sound(y,Fs)
2 Phân tích tín hiệu thủ công (manual signal analysis):
Mỗi SV đo chu kỳ cơ bản T0 (fundamental period, theo đơn vị 1/10 milisecond) của đoạn tín hiệu của
nguyên âm bằng cách đo thủ công 1 chu kỳ nào đó (nên chọn ở trung tâm của nguyên âm) của sóng tín hiệu (waveform) dùng MATLAB Tính nghịch đảo của T0 để thu được ước lượng (estimate) của tần số cơ bản F0 (fundamental frequency, theo đơn vị Hz) đo trên miền thời gian Với mỗi nguyên âm, SV thu được
1 ước lượng F0 SV lập bảng 5 giá trị F0, sau đó tính giá trị trung bình (mean) và độ lệch chuẩn (standard deviation) của 5 giá trị F0 thu được
Chú ý: Viết báo cáo MS-Word, chụp ảnh màn hình từng lần đo và đưa vào bảng số liệu
Gợi ý: dùng hàm findpeaks() hoặc công cụ đồ thị của MATLAB
3 Phân tích tín hiệu tự động (automatic signal analysis):
Tìm hiểu lý thuyết và cài đặt 2 thuật toán tự động tính F0 trên miền thời gian dùng hàm tự tương quan (hoặc AMDF) và tính F0 trên miền tần số (GV sẽ trình bày trên lớp tuần tới), kết hợp với median filtering/smoothing (lọc trung vị) để làm trơn kết quả tính F0 thu được bằng các thuật toán trên
+ TLTK:
- textbook “Prentice Hall - Digital Processing Of Speech Signals_1978.pdf”:
o 4.1: nguyên lý xử lý tín hiệu tiếng nói theo kiểu ngắn hạn (short-time)
o 4.6-4.9: short-time autocorrelation và AMDF
- textbook “Digital signal processing - principles, algorithms and applications_1995.pdf”:
o 2.6: hàm tự tương quan
o 5.4: spectral leakage (rò phổ) và window functions
- 2.3.2 của textbook “Digital Signal Processing Using MATLAB_3rd Edition_Ingle-Proakis_2012.pdf”
- 3.3, 3.4, và 3.9 của “Bai giang XLTN_HV CNBCVT.pdf”
- Bài báo “Cải tiến thuật toán tự tương quan tìm cao độ của tín hiệu đàn ghi-ta trên vi xử lý ARM Cortex-M4_2017.pdf”
- Bài báo “Phương pháp mới trích chu kỳ cao độ tiếng nói_2003.pdf”
+ Từ khoá tiếng Anh: fundamental frequency detection, pitch period estimation, autocorrelation
function, AMDF function, median filtering/smoothing, speech signal
+ Từ khoá tiếng Việt: tính/đo tần số cơ bản, tính/đo chu kỳ pitch, hàm tự tương quan, hàm AMDF, lọc
(làm trơn) trung vị, tín hiệu tiếng nói
+ Cách trình bày báo cáo:
- Nội dung tương tự các phần của bài báo “Cải tiến thuật toán tự tương quan tìm cao độ của tín hiệu đàn ghi-ta trên vi xử lý ARM Cortex-M4_2017.pdf” (chú ý insert vào file doc các hình vẽ theo định dạng file eps (hoặc bmp , emf) save as từ Matlab’s figure để có hình ảnh chất lượng cao khi
in ấn và trình chiếu slide, KHÔNG được dùng tính năng PrintScreen để chụp màn hình)
- Định dạng và nội dung của báo cáo tuân theo file “Template_BaoCao.docx” Báo cáo được in 2 mặt trên giấy A4, dập ghim dọc theo lề trái và dán băng dính KHÔNG ĐÓNG BÌA
- Độ dài báo cáo: không quá 20 trang A4 (kể cả mã nguồn)
- Mục lục phải hoàn thiện, cho phép GV nhìn thấy rõ và dễ dàng định vị phần công việc của mỗi SV nằm ở trang nào trong b/c
- Mục lục ko được có lỗi Bookmark (Lỗi! Thẻ đánh dấu ko được xác định) SV kiểm tra lỗi này và các lỗi khác trên file PDF trước khi in bản cứng (bản word ko thể hiện hết các lỗi trước khi in)
+ Cách trình bày mã nguồn:
Tham khảo các hàm xcorr(), findpeaks(), fft() của Matlab Nhóm SV copy mã nguồn và comment từ IDE’s
editor rồi paste vào trong phần III của báo cáo, ghi rõ dùng hàm gì của thư viện nào (hoặc tự code), viết
chú thích (comment) theo từng block gồm 5-10 dòng code Nhóm SV phải tổ chức chương trình thành tập hợp các hàm, đầu mỗi hàm có brief comments mô tả chức năng của hàm và ý nghĩa của (các) tham số đầu vào và (các) giá trị trả lại của hàm (tương tự như hàm sigadd() trong trang 26 của của textbook “Digital Signal Processing Using MATLAB_3rd Edition_Ingle-Proakis_2012.pdf”)
Trang 2+ Kết quả thực nghiệm:
Các nhóm đầu tư nói và viết phần kết quả thực nghiệm như GV đã HD Làm nhiều mà ko chú trọng b/c phần kết quả chả khác nào nói với người khác rằng "Tôi đã bỏ nhiều công sức để tìm hiểu và thử nghiệm nhưng kết quả chẳng thu được gì đáng kể" Đây là sai lầm phổ biến của dân kỹ thuật
- Kết quả định tính:
Đưa vào 3 hình vẽ minh hoạ cho mỗi thuật toán 3 trường hợp cho kết quả tính F0 chính xác nhất, kém chính xác nhất và trung bình, mỗi trường hợp ứng với 1 tín hiệu được lựa chọn trong tập hợp các file tín hiệu thu âm của cả nhóm
Hình 1 Trường hợp tín hiệu cho kết quả tính F0 chính xác nhất (hình chỉ có tính chất minh hoạ).
- Kết quả định lượng:
o Trình bày chi tiết các yếu tố/tham số nào ảnh hưởng đến độ chính xác của mỗi thuật toán
và mức độ ảnh hưởng như thế nào (bằng số liệu và ví dụ cụ thể)
o Tính sai số trung bình của mỗi thuật toán dựa trên giá trị F0 chuẩn đo thủ công ở bước 2
và giá trị F0 tính tự động bởi thuật toán (trình bày bảng dữ liệu và công thức tính sai số) Sai số được tính trên kết quả đường F0 (F0 contour) output của mỗi file tín hiệu và thống
kê (vd: lấy trung bình) trên tất cả các file tín hiệu của nhóm
o Với mỗi file: F0 đo thủ công ở bước 1 là giá trị chuẩn để tính sai số, bình phương độ lệch giữa F0 do thuật toán tính cho mỗi frame so với giá trị chuẩn này gọi là bình phương sai
số cho mỗi frame Tính căn bậc hai của Giá trị trung bình của bình phương sai số trên tất
cả các frame tín hiệu tuần hoàn gọi là Sai số toàn phương trung bình (RMSE) của thuật toán
(https://vi.wikipedia.org/wiki/Sai_s%E1%BB%91_to%C3%A0n_ph
%C6%B0%C6%A1ng_trung_b%C3%ACnh)
o So sánh độ chính xác và phân tích ưu/nhược điểm của các thuật toán trên miền thời gian
và miền tần số Đ/v lọc trung vị, phân tích ảnh hưởng của thuật toán này (bằng hình vẽ và
số liệu sai số) khi dùng và khi ko dùng lọc trung vị
Mỗi hình và bảng đưa vào báo cáo phải có tên (figure caption hoặc table title), kèm theo nhận xét/bình luận
do SV tự rút ra
+ Cách liệt kê và trích dẫn TLTK:
tương tự như bài báo 2017, hoặc theo quy định của ĐHBK (file QCQD_DUT_2017_030_HuongDan_TrichDan.pdf)
+ Kiểm tra tiến độ (Tuần từ 26/11 đến 30/11):
- 03 SV cài đặt và demo 03 thuật toán: tính F0 trên trên miền thời gian và miền tần số, lọc trung vị
o Đ/v tính F0 trên trên miền thời gian và miền tần số: SV xuất hình vẽ kết quả hàm tự tương quan/AMDF/phổ biên độ của 2 đoạn tín hiệu dài 30 ms: 1 đoạn nằm trong phần nguyên
âm tuần hoàn F0=?, 1 đoạn nằm trong phần tín hiệu ko tuần hoàn (khoảng lặng có nhiễu nền) F0 undefined
o Đ/v lọc trung vị: Xuất hình vẽ kết quả của lọc trung vị trên 1 tín hiệu (do SV tự tạo) có biên
độ của tín hiệu biến động quanh 1 giá trị nào đó với phương sai nhỏ, và đôi khi có vài giá trị biên độ tăng hoặc giảm đột biến so với các giá trị biên độ còn lại để thấy hiệu ứng của lọc trung vị
- 1-2 SV còn lại trong nhóm viết CT để khảo sát ảnh hưởng của hàm cửa sổ chữ nhật hoặc cửa sổ Hamming/Hanning, và ảnh hưởng của số điểm tần số rời rạc khi tính FFT khi phân tích phổ của tín hiệu hình sin rời rạc (được lấy mẫu từ tín hiệu hình sin liên tục với tần số lấy mẫu cụ thể)
Trang 3xuất ra 6 hình vẽ ứng với các tổ hợp options khác nhau: cửa sổ CN hay Hamming/Hanning, FFT points = 256, 512, hay 1024
- GV chấm lấy điểm BT (20%) cho từng SV.
+ Deadline nộp cho GV bản cứng của báo cáo nhóm (bản in của file doc): nộp vào lúc nhóm SV lên báo cáo PowerPoint trong buổi học cuối cùng (mỗi SV phải ký vào báo cáo nhóm trước khi nộp cho GV).
+ Deadline nộp cho GV bản mềm: 24h trước giờ bắt đầu buổi học cuối cùng của nhóm:
(Ví dụ lớp HP 1611 bắt đầu buổi học cuối cùng vào 14h30 thứ hai ngày 3/12 thì deadline nộp bản mềm cho các nhóm thuộc lớp HP này là 14h30 chủ nhật ngày 2/12 Nhóm gửi mail chậm mỗi 1 giờ so với deadline sẽ bị GV trừ 1 điểm CK phần BT nhóm).
- Bản mềm đã nộp GV cũng là bản cuối cùng để chấm điểm và PHẢI GIỐNG HỆT với bản cứng
sẽ nộp (nghĩa là đã nộp bản mềm thì ko đc chỉnh sửa gì nữa)
Cách nộp bản mềm:
- Mỗi nhóm convert/save as các file slide ppt và báo cáo doc thành các file pdf để giảm kích thước file Tất cả các file mã nguồn m (hoặc py) của nhóm đặt trong 1 thư mục tên là “code” Tất cả các file tín hiệu của nhóm đặt trong 1 thư mục tên là “signal” Sau đó nhóm SV nén các file pdf và 2 thư mục “code” và
“signal” thành MỘT file tên là “LopX-NhomY.zip” (X thay bằng 4 số cuối của lớp HP (vd: 1615), Y thay
bằng số thứ tự nhóm) gửi đến địa chỉ Gmail của GV: ninhkhanhduy@gmail.com (ko gửi qua DUT mail của GV)
- Đặt tiêu đề (subject) mail theo format: “LopX-NhomY” với X và Y thay bằng các số như trên (ví dụ: Lop1615-Nhom4)
- Các nhóm nếu sao chép slide, báo cáo hoặc chương trình của nhau (một phần hay toàn bộ) đều được nhận 0 điểm cho điểm CK phần BT nhóm (miễn xin xỏ và giải thích với GV)
+ SV cần trao đổi thêm với GV về các chi tiết của thuật toán hoặc cách làm báo cáo thì liên lạc với GV qua Gmail/fb mes (nhớ viết tiêu đề mail và chào hỏi GV khi viết mail để thể hiện mình là người lịch sự)
+ Cách chấm điểm của GV:
- Điểm cho mỗi SV dựa vào mức độ đóng góp trong bc viết-nói và mức độ hoàn thiện của phần việc của mỗi SV > muốn điểm cao thì mỗi người hoàn thiện tốt nhất phần việc của mình (ko tính việc đó khó hay dễ).
- NT điều phối công việc của cả nhóm > được cộng 1 điểm.
- Các nhóm nói/viết ko đầy đủ phần kq thực nghiệm sẽ ko được quá 6 điểm.
- Điểm trừ trình bày: viết b/c bị lỗi ko theo template, ko xoá bỏ các nội dung mang tính chất hướng dẫn trong file template, mục lục ko rõ ràng, lạm dụng copy & paste các nội dung từ tài liệu của người khác mà ko chịu khó tự viết/vẽ, dùng "đồ" của người khác mà ko trích dẫn
và đưa vào TLTK.
- Điểm trừ nội dung: ko cài đặt thuật toán mà GV đã HD; ko rút ra các nhận xét, so sánh, đánh giá định tính và định lượng.
+ Các chú ý khác:
- Ko liên lạc với GV qua mail/fb/đt để thắc mắc về điểm Ai vi phạm 1 lần trừ 1 điểm.
- GV có quyền điều chỉnh điểm đã công bố ngay tại lớp sau khi xem kỹ lại phần b/c viết và code của nhóm (ở nhà) SV chỉ được phép thắc mắc về điểm ngay tại thời điểm GV công bố điểm sau khi nhóm trình bày tại lớp.