Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.45 MB, 17 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
<b>BẢNG PHÂN CƠNG CƠNG VIỆC VÀ KẾT QUẢ THỰC HIỆN ĐỀ TÀI CỦA TỪNGTHÀNH VIÊN NHĨM</b>
5 Cao Hữu Thiên Hồng 2311030 - Code MATLAB
6 Cao Nguyễn Khánh Toàn 2313473 - Soạn nội dung 100%
8 Chu Văn Long Vũ 2313948 - Tổng hợp báo cáo - Chỉnh sửa nội dung
100%
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>MỤC LỤC</b>
<b><small>LỜI NÓI ĐẦU... 3</small></b>
<b><small>PHẦN I. TÓM TẮT ĐỀ TÀI...4</small></b>
<b><small>PHẦN II. NỘI DUNG BÁO CÁO...5</small></b>
<b><small>2.1. TỔNG QUAN VỀ PHÉP BIẾN ĐỔI FOURIER... 5</small></b>
<b><small>2.2. LÝ THUYẾT VẬN DỤNG...6</small></b>
<small>2.2.1. Định nghĩa ánh xạ tuyến tính ... 6</small>
<small>2.2.2. Nhân và ảnh của ánh xạ tuyến tính ...6</small>
<small>2.2.3. Biểu diễn ma trận của ánh xạ tuyến tính... 7</small>
<small>2.2.4. Biến đổi Fourier ... 7</small>
<b><small>3.1. Đoạn code sử dụng trong MATLAB...8</small></b>
<b><small>3.2. Mô tả code bằng sơ đồ khối...10</small></b>
<b><small>3.3. Giải thích đoạn code...11</small></b>
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4"><b>LỜI NĨI ĐẦU</b>
Kỹ thuật đã mang lại nhiều lợi ích và đóng góp đáng kể cho nền văn minh của loài người trong suốt lịch sử phát triển. Trong thế kỷ hai mươi, các kỹ sư đã thực hiện nhiều đối với phục vụ cho con người. Nhưng ở hiện tại, thế kỷ 21, kỹ thuật đang đối mặt với rất nhiều thách thức lớn như là làm cho năng lượng mặt trời trở nên kinh tế hơn, cung cấp năng lượng nhiệt hạch,… Để giải quyết các thách thức này, giáo dục kỹ thuật là hết sức quan trọng nhằm đào tạo những kỹ sư thực hiện sứ mạng trong thế kỷ 21.
“Đại số tuyến tính” - một mơn học có tầm quan trọng đối với sinh viên của khối ngành kỹ thuật Trường Đại học Bách khoa - ĐHQG-HCM. Môn học được xem như là cánh cửa đầu tiên mở ra để sinh viên có thể hiểu sâu sắc được ngành nghề mà mình đã chọn trong tương lai. Trong mơn học này, người học có được cảm hứng, sự say mê, khao khát học hỏi, sự tập trung trong học tập, những kỹ năng làm việc nhóm, tư duy đổi mới sáng tạo, khả năng phản biện, không ngại bày tỏ quan điểm cá nhân xây dựng cho bản thân những mục tiêu và những ước mơ nghề nghiệp, có kế hoạch học tập và hành động.
Dưới đây là báo cáo bài tập lớn của nhóm!
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5"><b>PHẦN I. TÓM TẮT ĐỀ TÀI</b>
Với đề tài “Phương pháp Fourier rời rạc (DFT) để khử nhiễu”, bài báo cáo của nhóm 1 sẽ thể hiện nội dung liên quan đến cách sử dụng Fourier hữu hạn để khử nhiễu, cụ thể là khử nhiễu âm thanh cho file âm thanh có chứa những tạp âm khơng mong muốn. Bài báo cáo chỉ ra cách sử dụng Fourier và các bước lập trình code để khử nhiễu âm thanh trên cơng cụ code MATLAB. Từ đó rút ra những kiến thức và kinh nghiệm trong việc giải quyết vấn đề, nâng cao kỹ năng làm việc nhóm và có được hiểu biết về công cụ MATLAB để diễn tả các bài tốn một cách cụ thể, ngắn gọn, súc tích và dễ hiểu. Qua đó biết cách xử lý khử nhiễu đoạn âm thanh và hiểu thêm về ứng dụng của MATLAB và lập trình.
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6"><b>PHẦN II. NỘI DUNG BÁO CÁO1. ĐẶT VẤN ĐỀ</b>
Tại sao chúng ta cần phải tách khử nhiễu âm thanh? Việc tách hay khử nhiễu âm thanh là quá trình loại bỏ những phần khơng mong muốn hoặc gây nhiễu trong tín hiệu âm thanh. Có một số lý do chúng ta cần phải thực hiện việc này:
<b>1.1. Cải thiện chất lượng âm thanh: Nhiễu âm thanh có thể làm giảm chất lượng của tín</b>
hiệu âm thanh, làm mất đi các chi tiết và độ rõ nét của âm thanh gốc. Bằng cách tách nhiễu, chúng ta có thể loại bỏ các thành phần không mong muốn và tái tạo lại âm thanh trong trạng thái gốc, cải thiện chất lượng và trải nghiệm nghe nhạc.
<b>1.2. Phân biệt giữa tín hiệu và nhiễu: Trong nhiều trường hợp, chúng ta mong muốn</b>
phân biệt giữa tín hiệu âm thanh và nhiễu. Ví dụ: trong viễn thơng, chúng ta muốn tách nhiễu chỉ để lấy tín hiệu giọng nói và loại bỏ các nhiễu khác như tiếng ồn xung quanh.
<b>1.3. Ứng dụng trong xử lý tín hiệu: Tách nhiễu âm thanh là một bước quan trọng trong</b>
xử lý tín hiệu âm thanh. Nó được sử dụng trong các ứng dụng như xử lý giọng nói, xử lý âm thanh, xử lý tín hiệu âm thanh trong hệ thống giao tiếp, xử lý âm thanh trong hệ thống giải trí,…
<b>1.4. Cải thiện hiệu suất hệ thống: Nếu chúng ta khơng tách nhiễu âm thanh, các thành</b>
phần nhiễu có thể gây ảnh hưởng đến hiệu suất của hệ thống. Ví dụ: trong hệ thống nhận dạng giọng nói, nhiễu có thể giảm độ chính xác q trình nhận dạng giọng nói.
Tóm lại, việc tách nhiễu âm thanh là quan trọng để cải thiện chất lượng âm thanh, phân biệt giữa tín hiệu và nhiễu, ứng dụng trong xử lý tín hiệu và cải thiện hiệu suất hệ thống. Và một trong những cách để khử nhiễu âm thanh chính là dùng phép biến đổi Fourier hữu hạn.
<b>2. NỘI DUNG</b>
<b>2.1. TỔNG QUAN VỀ PHÉP BIẾN ĐỔI FOURIER</b>
Biến đổi Fourier là một trong những kĩ thuật được sử dụng rộng rãi nhất trong tốn ứng dụng. Cơng việc ban đầu của biến đổi Fourier là việc sử dụng các hàm lượng giác trong giải tích bắt nguồn từ các cơng trình biến đổi của nhà toán học Leonhard Euler (1701 – 1783), Alexis – Claude Clairaut (1713 – 1765) và Joseph Louis Lagrange (1736 – 1813).
Euler là người đầu tiên đưa ra công thức cho các hệ số của chuỗi Fourier. Dựa trên các nghiên cứu của Euler, Clairaut đã công bố công thức đầu tiên cho phép biến đổi Fourier rời rạc (DFT) vào năm 1754 là cái chúng ta hiện biết. Năm 1805, Carl Friendrich Gauss
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">(1777-1855) đã công bố công thức cho DFT. Năm 1822, Joseph Fourier (1768-1830) đưa ra cơng trình về dịng nhiệt cung cấp nền tảng cho phép biến đổi Fourier và nguồn gốc tên gọi của nó. Năm 1965, James Cooley và John Tukey, đã phát minh ra thuật toán biến đổi Fourier nhanh (FFT), thuật toán này đã cho phép một loạt các ứng dụng số trong thời đại kỹ thuật số ra đời. Các ứng dụng này bao gồm nén dữ liệu JPEG, phân tích cấu trúc tinh thể, giải phương trình vi phân từng phần, xử lí tín hiệu nhiễu,… �(��) = ��(�) (tính bảo tồn phép nhân với vô hướng)
<b>2.2.2. Nhân và ảnh của ánh xạ tuyến tính</b>
<b>Định lý 1: Nhân (Ker) của f là khơng gian con của X. Ảnh (Imf) là không gian con</b>
<i>của Y và dim(Kerf) + dim(Imf) = dim(X)</i>
<i><b>Ghi chú: Kerf là nghiệm của phương trình f(x) = 0</b></i>
<i>Imf là tập các ảnh của f (trong hàm số gọi là tập giá trị)</i>
<b>Định lý 2: Cho ánh xạ tuyến tính �: � → �</b>
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Ảnh của tập sinh là tập sinh của ảnh.
<b>Trường hợp U = V, E là một cơ sở của U, khi đó:</b>
<i>A<small>E,E</small>= A<small>E</small>= ([f(e<small>1</small>)]<small>E|[f(e2</small>)]<small>E|…|[f(en</small>)]<small>E)</small></i>
Mục đích của phép biến đổi Fourier là tách hàm số thành tổng các hàm sin và hàm cosin (cos), mỗi hàm có các tần số khác nhau. Các hàm liên tục thường được xấp xỉ bằng tổ hợp tuyến tính của hàm sin và hàm cosin.
<b>2.2.4.2. Biến đổi Fourier hữu hạn</b>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Trong toán học, phép biến đổi Fourier rời rạc (DFT) hay còn gọi là phép biến đổi Fourier hữu hạn là phép biến đổi đại số cho các tín hiệu rời rạc theo thời gian và đầu vào là một chuỗi hữu hạn các số thực hoặc số phức. Phép biến đổi này là một công cụ lý tưởng để xử lý thơng tin trên máy tính và được sử dụng rộng rãi trong xử lý tín hiệu và các ngành liên quan đến phân tích tần số chứa trong tín hiệu, để giải phương trình đạo hàm riêng và các
<b>2.2.4.3. Ứng dụng biến đổi Fourier hữu hạn trong khử nhiễu âm thanh</b>
Ứng dụng phép biến đổi � = �<small>�</small>× � được gọi là phép biến đổi Fourier rời rạc của vector X
Vector � = �<small>�</small>× � có dạng � = � + �� Vector A chứa hệ số �<small>�</small>tại <sub>0</sub><small>�−1</small>�<small>�</small>���<sup>2��</sup><sub>�</sub> Vector B chứa hệ số �<small>�</small> tại <sub>0</sub><small>�−1</small>�<sub>�</sub>���<sup>2��</sup><sub>�</sub>
Nhờ việc dùng phép biến đổi Fourier rời rạc, ta chuyển tín hiệu X ở miền thời gian thành tín hiệu ở miền tần số gồm tổng các hàm.
Giả sử tín hiệu ban đầu có dạng <sub>0</sub><small>�−1</small>�<sub>�</sub>���<sup>2��</sup><sub>�</sub> + <sub>0</sub><small>�−1</small>�<sub>�</sub>���<sup>2��</sup><sub>�</sub> , tín hiệu nhiễu sau khi phân tích rời rạc Fourier rời rạc � = �<small>�</small>× �, so sánh với hình trước và sau khi phân tích ta xác định được tần số của tín hiệu chính và tần số của tín hiệu nhiễu. Lọc tín hiệu nhiễu, chỉ giữ lại tín hiệu chính, sau đó thực hiện phân tích Fourier nghịch để thu được tín hiệu đã khử nhiễu.
<b>3. SỬ DỤNG CÔNG CỤ MATLAB TRONG BIẾN ĐỔI FOURIER HỮU HẠN ĐỂKHỬ NHIỄU ÂM THANH</b>
<b>3.1. Đoạn code sử dụng trong MATLAB</b>
% Nhap file dau vao
[input, fs] = audioread('Bản-ghi-âm-mới-2.mp3'); outputfile ='Bản-ghi-âm-mới-2.wav';
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">audiowrite(outputfile, input, fs);
[y, Fs] = audioread('Bản-ghi-âm-mới-2.wav'); %Nghe am thanh goc va tinh toan
ylabel('Bien do cua am (Amplitude)');
%Loc tan so nhieu va bien doi Fourier nguoc
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">ylabel('Bien do cua am (Amplitude)'); %Nghe am thanh sau khi loc
<b>3.2. Mô tả code bằng sơ đồ khối.</b>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><i>Hình 1: Giải thích quy trình code bằng sơ đồ khối</i>
<b>3.3. Giải thích đoạn code</b>
<b>3.2.1. Giải thích hàm được sử dụng</b>
tốc độ / tần số lấy mẫu cho dữ liệu đó (Fs).
(Fs) vào một tệp khác. Tên tệp đầu vào cũng chỉ định định dạng tệp đầu ra. Kiểu dữ liệu đầu ra phụ thuộc vào định dạng tệp đầu ra và kiểu dữ liệu của dữ liệu âm thanh(y).
Fourier nhanh (FFT), trong đó y có cùng kích thước với x.
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">- <b>subplot(m, n, p) : Tạo 1 lưới các ô hiển thị đồ thị với m hàng và n cột, sau đó chọn ơ</b>
thứ p để hiển thị biểu đồ.
<b>3.2.2. Giải thích chi tiết dòng lệnh</b>
kỳ lệnh nào khác.
thanh và lưu dữ liệu âm thanh vào biến input, cùng với tần số lấy mẫu vào biến fs.
thanh từ định dạng mp3 sang wav.
tệp âm thanh được chỉ định trong biến outputfile với tần số lấy mẫu là fs.
thanh mới tạo ra 'Bản-ghi-âm-mới-2.wav' và lưu dữ liệu vào biến y, cùng với tần số lấy mẫu vào biến Fs.
gian của âm thanh được phát (length(y)/Fs là số giây của âm thanh y).
thanh (dưới dạng vecto) chia cho tần số lấy mẫu (theo giây) để ra thời gian cần thiết.
miền tần số
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">-<b>xlabel('Tan so (Hz)'); : Đặt nhãn cho trục x.</b>
chuẩn xác các tần số nhiễu trong file, tránh trường hợp mất 1 phần hoặc toàn bộ dữ liệu file sau khi lọc.
+ abs(Y) tạo ra 1 vecto chứa giá trị của tất cả biên độ tuyệt đối của tất cả tần số trong file âm thanh
giá trị tuyệt đối ở trên với ngưỡng thresh * M( 1 phần của giá trị biên độ tuyệt đối lớn nhất), các giá trị trong Y lớn hơn làtrue(1), còn lại sẽ làfalse(0).
+ *Y là phép nhân phần tử mang giá trị của biên độ tương ứng trước khi bước vào vecto logic, và chỉ những phần tử mang true(1) mới được giữ lại, còn lại sẽ bị loại bỏ (0 nhân g cx bằng 0 thôi).
Fourier nghịch, chuyển từ miền tần số về lại miền thời gian.
màu xanh lơ.
màu xanh lơ
<b>3.3. Ví dụ minh họa</b>
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><i>Hình 2: Đồ thị trước và sau khi đã lọc nhiễu</i>
<i>Hình 3: Đồ thị so sánh khi chưa lọc nhiễu có màu đỏ và sau khi lọc có màu xanh</i>
<b>3.4. Nhận xét4. KẾT LUẬN</b>
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">Thông qua bài báo cáo về đề tài “Ứng dụng Fourier rời rạc (DFT) để khử nhiễu, nhóm 1 đã hoàn thành được các mục tiêu đặt ra, là tiền đề cho kết quả mà nhóm đã đạt được:
Về kiến thức:
- Củng cố kiến thức về Ánh xạ tuyến tính.
- Trau dồi kiến thức về lập trình code trên MATLAB.
- Hiểu được cách ứng dụng Fourier rời rạc để giảm nhiễu, cụ thể là trong tín hiệu âm thanh.
Về kĩ năng
- Có thêm kĩ năng làm việc nhóm, biết cách xây dựng, lập kế hoạch, bố trí thời gian để thực hiện bài tập đúng theo tiến độ đề ra.
- Giúp đỡ nhau để kết quả bài tập đạt được hiệu quả cao.
Tổng kết lại, Ứng dụng Fourier để khử nhiễu âm thanh là một kỹ thuật hiệu quả giúp giảm nhiễu trong tín hiệu âm thanh. Ứng dụng nãy đã cung cấp khả năng xác định và loại bỏ các thành phần tần số cụ thể của tiếng ồn. Tuy nhiên, để hiệu quả khử nhiễu đạt được kết quả tối ưu, cần chọn lựa và xây dựng cho mình thuật tốn thích hợp nhất
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>TÀI LIỆU THAM KHẢO</b>
[1] Meyer C.D, Matrix analysis and Applied linear algebra, SIAM, 2000, chapter 5, section 8 [2] Isaac Amidror, Mastering the Discrete Fourier Transform in One, Two or Several Dimensions: Pitfalls and Artifacts, Springer,2013"
[3] Đặng Văn Vinh (2020). Ánh xạ tuyến tính, GIÁO TRÌNH ĐẠI SỐ TUYẾN TÍNH, ĐHQG-HCM; Xưởng in Trường Đại học Bách khoa.
</div>