Bài giảng Thí nghiệm Xử lý số tín hiệu

4.2.1. Tạo nhiễu tuần hoàn 1. Đọc ảnh gốc airplane.tif 2. Chuyễn từ ảnh màu sang ảnh trắng đen dùng công thức Y= (R+G+B)/3 3. Hiện cả hình màu và hình trắng đen trên Figure 4. Phần Figure 3. báo cáo: Báo cáo nhận xét:Bộ Môn Viễn Thông-ĐH Bách Khoa TpHCM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 165 4. Giảm chất lượng hình bằng nhiễu tuần hoàn: mỗi cột bội 5 được gán giá trị 0 như Hình 57.

pdf179 trang | Chia sẻ: huongthu9 | Lượt xem: 555 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Thí nghiệm Xử lý số tín hiệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 120 Hãy xem xét trường hợp PAM 16 mức (16-PAM). Trong trường hợp này, để biểu diễn 16 mức cần 4 bits, do đó mỗi ký hiệu sẽ có chiều dài 4 bits. Để đạt được tốc độ ký hiệu mong muốn, mẫu vào được chia làm các đoạn dài 4 bits. Như vậy, mỗi mẫu vào sẽ gồm 4 đoạn. Việc xử lý mẫu vào bao gồm việc áp dụng mặt nạ và dịch. Khối ký hiệu đầu tiên nhận được bằng cách dùng mẫu vào AND với mặt nạ 0x000F để lấy 4 bit LSB (0x000F là biểu diễn trong hệ thập lục phân của 0000 0000 0000 1111, khi AND một mẫu với mặt nạ này, chỉ 4 bit cuối của mẫu được giữ lại, tạo thành 1 ký hiệu). Khối ký hiệu thứ hai nhận được bằng cách dịch mẫu ban đầu sang phải 4 bit và áp dụng lại mặt nạ. Các bước này được lặp lại cho đến khi hết chiều dài của mẫu vào và tạo ra 4 ký hiệu. Do mỗi ký hiệu có chiều dài 4 bit nên sẽ có tất cả 16 ký hiệu. 16 ký hiệu này được ánh xạ thành 16 mức điện áp cách đều nhau dựa theo một bảng tra như sau: Bảng 1. Bảng tra PAM 16 mức Khối ký hiệu Mức điện áp (biểu diễn dạng số Hex) 0000 0x7FFF 0001 0x6EEE 0010 0x5DDD 0011 0x4CCC 0100 0x3BBB 0101 0x2AAA 0110 0x1999 0111 0x0888 1000 - 0x0889 1001 - 0x199A 1010 - 0x2AAB 1011 - 0x3BBC 1100 - 0x4CCD 1101 - 0x5DDE 1110 - 0x6EEF 1111 - 0x8000 Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 121 Ví dụ, mẫu vào là 0xA52E (10100101 00101110). Khi đó, 1110 (sau khi lọc mặt nạ lấy 4 bit LSB) được ánh xạ thành mức -0x6EEF. Mỗi ký hiệu gồm 4 bit được ánh xạ lên 16 mức cách đều nhau từ -0x8000 đến 0x7FFF. Khoảng cách giữa các mức được chọn là 0x111 để có khoảng cách đều nhau. Mức điện áp được chọn sau đó sẽ được truyền đi như một sóng vuông. Chu kỳ của sóng vuông đạt được bằng cách xuất cùng một mức điện áp đó nhiều lần (ví dụ 12 lần) để có thể đạt được 1 dạng sóng vuông tốt ở ngõ phát (sau khi qua bộ D/A). Cùng một cách thực hiện của bộ phát được áp dụng cho PAM 4 mức (4-PAM) và 8 mức (8- PAM) với sự khác nhau về mặt nạ, dịch và bảng tra. Đối với 8-PAM, bit có trọng số thấp nhất (LSB) của mẫu vào được loại bỏ để số bit còn lại (15) là một bội số của 3. Điều này gây tác động không đáng kể lên dạng sóng điều chế và dạng sóng khôi phục lại. Các bảng tra đối với bộ điều chế 4 – PAM và 8 – PAM lần lượt như sau: Bảng 2. Bảng tra PAM 4 mức Khối ký hiệu Mức điện áp (dạng Hex) 00 0x7FFF 01 0x2AAA 10 - 0x2AAB 11 - 0x8000 Bảng 3. Bảng tra PAM 8 mức Khối ký hiệu Mức điện áp (dạng số Hex) 000 0x7FFF 001 0x5B6D 010 0x36DB 011 0x1249 100 - 0x1249 101 - 0x36DB 110 - 0x5B6D 111 - 0x7FFF Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 122 Chương trình thực hiện Hãy thực hiện theo các bước sau: 1. Cấp nguồn điện cho kit và chạy chương trình Code Compose Studio trên máy tính. 2. Mở project PAM4 ở folder C:\CCStudio_v3.1\MyProjects\PAM4\. 3. Trong cửa sổ File View, double click lên tập tin PAM4.c để mở nó ra. Đây là tập tin chứa mã nguồn chính của chương trình. Nội dung của tập tin này như sau: // PAM #include "DSK6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; #include //Initialization: int i_PAM; int j_PAM; int k; int masked_value, output; int data_4PAM[4] = {0x7FFF, 0x2AAA, -0x2AAB, -0x8000}; int out_buffer[256]; int i=0; interrupt void c_int11() //interrupt service routine { int sample_data; if (i_PAM==96) { sample_data = input_sample(); //inputs data i_PAM=0; j_PAM=0; } masked_value = sample_data & 0x0003; output = data_4PAM[masked_value]; output_sample(output); out_buffer[i++] = output; if (i==256) i = 0; j_PAM++; //repeated output counter Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 123 if (j_PAM==12) { j_PAM=0; sample_data = sample_data >> 2; } i_PAM++; return; } void main() { i_PAM=0; comm_intr(); //init DSK, codec, McBSP while(1); //infinite loop } Trong chương trình này, hàm main( ) đặt giá trị biến i_PAM = 0 và khởi động kit. Sau đó sẽ thực hiện một vòng lặp vô tận với lệnh while (1). Khi có tín hiệu xung lấy mẫu (tần số 8KHz), ngắt 11 xảy ra và trình phục vụ ngắt c_int11( ) được gọi. Trong trình phục vụ ngắt này, dữ liệu vào được đọc vào biến sample_data (bằng lệnh sample_data = input_sample( )). Mẫu dữ liệu này biểu diễn ở dạng số nguyên 16 bit có dấu. Do ở đây thực hiện điều chế PAM 4 mức, mà để biểu diễn được 4 mức thì cần 2 bit. Do đó, mẫu dữ liệu vào sẽ được chia ra làm 8 ký hiệu (symbol), mỗi ký hiệu 2 bit. Để thực hiện việc chia này, mẫu dữ liệu được AND với mặt nạ 00000000 00000011 (tức là 0x0003) để lấy 2 bit LSB của mẫu dữ liệu. 2 bit này được ánh xạ thành 1 trong 4 mức điện áp bằng cách sử dụng bảng data_4PAM. Bảng này có 4 giá trị ứng với 4 mức điện áp (0x7FFF, 0x2AAA, - 0x2AAB, -0x8000) được khai báo ở đầu chương trình. Mỗi symbol sẽ cho ra 1 mức điện áp. Để cho dạng sóng xuất ra sau khi qua bộ A/D có dạng sóng vuông, mỗi mức sẽ được xuất ra 12 lần trước khi chuyển sang mức ứng với symbol kế tiếp. Biến đếm j_PAM để đếm số lần xuất ra cho đủ 12 lần. Như vậy, ứng với mỗi mẫu vào 16 bit, ta có 8 symbol. Mỗi symbol sẽ xuất ra 12 lần, như vậy số lần xuất ra ứng với mỗi mẫu là 8 x 12 = 96 được thể hiện bởi biến đếm i_PAM. Ví dụ: Mẫu vào có giá trị 0x001B (tức là 00000000 00011011). Mẫu này đầu tiên được chứa vào biến sample_data. - Đầu tiên: sample_data = 00000000 00011011  Sample_data AND 0x0003 = 00000000 00000011 (= 3).  data_4PAM(3) = - 0x8000  mức điện áp – 0x8000 được xuất ra 12 lần Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 124 - Tiếp theo: sample_data dịch phải 2 bit  00000000 00000110  Sample_data AND 0x0003 = 00000000 00000010 ( = 2)  data_4PAM(2) = - 0x2AAB  mức điện áp -0x2AAB được xuất ra 12 lần - Quá trình tiếp tục cho đến khi hết 16 bit của mẫu vào, tức là dịch 8 lần, mỗi lần xuất 12 lần  số lần xuất tổng cộng i_PAM = 8 x 12 = 96 lần. Sau đó sẽ đọc vào mẫu kế tiếp và thực hiện điều chế. Ở đây, một bộ đệm nội out_buffer có kích thước 256 mẫu được dùng để lưu lại giá trị xuất ra nhằm phục vụ cho việc vẽ tín hiệu xuất ra bằng công cụ Plot trong CCS (xem phần hướng dẫn vẽ đồ thị trên CCS). 1. Chọn Project  Rebuild All để biên dịch chương trình. 2. Sau khi biên dịch thành công, nạp chương trình lên kit (File  Load Program) và chạy thử chương trình. 3. Mở máy phát sóng lên và quan sát dạng sóng xuất ra. Ở đây hãy quan sát theo 2 cách: (1) sử dụng Code Compose Studio để vẽ các giá trị của bộ đệm nội out_buffer. (2) quan sát tín hiệu xuất ra ở ngõ ra Line Out của kit bằng Oscilloscope. 4. Nếu sử dụng máy phát sóng, dạng sóng thay đổi liên tục nên kết quả ra khó kiểm chứng. Hãy sửa câu lệnh sample_data = input_sample( ) thành sample_data = 0x???? (một giá trị bất kỳ 16 bit dạng số hex) rồi biên dịch, nạp và chạy lại chương trình.Vẽ lại dạng sóng xuất ra trong CCS. Lúc này, mẫu vào là giá trị cố định do nhập vào và dạng sóng xuất ra sẽ dễ dàng kiểm chứng hơn. 5. Chọn View  Graph  Time/Frequency. Thay đổi các tùy chọn trong cửa sổ Graph Property Dialog như sau để vẽ trong miền thời gian. Địa chỉ bắt đầu của bộ đệm chính là tên mảng out_buffer được nhập vào Start Address. Các tùy chọn khác có thể để như mặc định. Hình 40. Các tùy chọn để vẽ trong miền thời gian Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 125 6. Hãy thử một vài giá trị nhập vào và vẽ dạng sóng xuất ra. Bài tập Hãy chép toàn bộ Folder PAM4 sang một Folder mới và đặt tên tùy ý. Thực hiện các bài tập sau trên folder mới để không làm ảnh hưởng đến phần đã làm. 1. Chỉnh sửa lại chương trình trên để thực hiện điều chế PAM 8 mức. Gợi ý: - Mỗi symbol gồm 3bits. Do mẫu vào có 16 bits, cần bỏ 1 bits LSB (bằng cách dịch phải sample_data 1 bit) để còn lại 15 bits là bội số của 3 và mỗi mẫu sẽ tạo ra 5 symbols. - Mặt nạ để lấy 3 bit LSB là 00000000 00000111 (0x0007) - Sử dụng bảng tra ứng với 8-PAM để khai báo các mức áp ra tương ứng. Hãy viết lại đoạn chương trình của file.c đã sửa vào đây. Giải thích và vẽ một vài dạng sóng điều chế thu được để kiểm chứng. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 126 - Chỉnh sửa lại chương trình trên để thực hiện điều chế PAM 16 mức. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 127 Hãy viết lại đoạn chương trình của file.c đã sửa vào đây. Giải thích và vẽ một vài dạng sóng điều chế thu được để kiểm chứng. 5.2. Thực hiện mạch điều chế PWM trên kit C6713 DSK Giải thuật điều chế Trong Kit C6713DSK có phần khai báo tần số lấy mẫu. #include "DSK6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 128 Mỗi lần xảy ra ngắt tại tần số lấy mẫu trình phục vụ ngắt c_int11( ) được gọi.Toàn bộ chương trình tạo tín hiệu PWM được xử lý trong hàm này. Giải thuật đơn giản nhất để thực hiện là khai báo một biến có tên là duty_cycle chứa giá trị D(duty cycle). Biến này có thể thay đổi tùy theo yêu cầu. Ví dụ như 25,40,70. Hai biến đếm lần lượt là i và j dùng để đếm số lần vào ngắt thực hiện việc xuất giá trị ở mức cao (High) hoặc xuất ở mức thấp(Low). Ở đây mức thấp tương ứng ngỏ ra 0V. Việc xuất tín hiệu điện áp ra ngỏ ra audio jack nhờ vào hàm output_sample(). Mỗi lần vào ngắt ta sẽ xem giá trị biến đếm i > D chưa? Nếu chưa thì vẫn tiếp tục xuất mức cao và tăng biến đếm i,j và thoát. Nếu đã >D thì xuất mức thấp. Bên cạnh đó biến j cũng được xem xét, nếu đạt được 100 thì i,j được xóa về 0 và quá trình lập lại từ đầu. Chương trình thực hiện Hãy thực hiện theo các bước sau: 1. Cấp nguồn điện cho kit và chạy chương trình Code Compose Studio trên máy tính. 2. Mở project PWM ở folder C:\CCStudio_v3.1\MyProjects\PWM\. 3. Trong cửa sổ File View, double click lên tập tin PWM.c để mở nó ra. Đây là tập tin chứa mã nguồn chính của chương trình. Nội dung của tập tin này như sau: // PWM #include "DSK6713_aic23.h" Uint32 fs=DSK6713_AIC23_FREQ_8KHZ; #include //Initialization: int i_PWM; // counter in high state. int j_PWM; // counter max to 100. int out_buffer[1024]; // buffer for view graph. int i=0; int duty_cycle; interrupt void c_int11() //interrupt service routine { int output; Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 129 if(j_PWM==100){ // when reach 100 wil reset to zero. i_PWM=0; j_PWM=0; output=0x0000; // set output value to zero. output_sample(output);// calll funtion output to line out audio jack. } else { if(i_PWM<= duty_cycle)// compare with variable //"time_duration" return from GEL(General Extension Language) // find in "help" keyword"slider param_definition". { output=0x7FFF; // set output value to max. output_sample(output); // calll funtion output. i_PWM++; j_PWM++; } else { output=0x0000; // set output value to zero. output_sample(output); // calll funtion output i_PWM++; j_PWM++; } } out_buffer[i++] = output; // record in buffer for view graph. if (i==1024) i = 0; return; } void main() { time_duration=10; i_PWM=0; //init i_PWM. j_PWM=0; //init j_PWM. comm_intr(); //init DSK, codec, McBSP. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 130 while(1); //infinite loop. } 4. Chọn Project  Rebuild All để biên dịch chương trình. 5. Sau khi biên dịch thành công, nạp chương trình lên kit (File  Load Program) chạy 6. Chọn File Load Gel và chọn file PWM_vari.gel. 7. Sau đó chọn GEL  PWM  PWM. Một cửa sổ mới xuất hiện với thanh trượt ở trên đó. Khi thanh trượt này ở vị trí số 10, giá trị ngõ ra tương ứng độ rộng xung 10%. Khi thanh trượt ở vị trí cao nhất, giá trị ngõ ra tương ứng độ rộng xung 90%. 8. Chọn Debugrun. 9. Dùng công cụ dsptool (Oscilloscope)quan sát dạng sóng xuất ra mổi lần thay đổi vị trí cần gạt. Hoặc quan sát theo cách 2: sử dụng Code Compose Studio để vẽ các giá trị của bộ đệm nội out_buffer. (Tương tự phần PAM ở trên.). Hãy trả lời các câu hỏi sau: 1. Có thể sửa chương trình PWM.c chỉ dùng một biến i hoặc j được không, vì sao? 2. Làm thế nào để thay đổi tần số xung PWM? 3. Quan sát bằng công cụ dsptool và view graph có gì khác nhau? Vì sao? Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 131 4. Với một chương trình đã hoạt động trên kit DSP như trên làm thế nào để ứng dụng thực tế điều khiển độ sáng của một bóng đèn, hoặc tốc độ của động cơ DC. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 132 PHÂN TÍCH TÍN HIỆU TIẾNG NÓI VÀ ỨNG DỤNG XỬ LÝ TIẾNG NÓI Họ và tên SV báo cáo 1: . MSSV: ....... Họ và tên SV báo cáo 2: . MSSV: ....... Họ và tên SV báo cáo 3: . MSSV: ....... Họ và tên SV báo cáo 4: . MSSV: ....... Nhóm lớp: ... Tiểu nhóm: ...... Ngày thí nghiệm: ... Điểm đánh giá CBGD nhận xét và ký tên Chuẩn bị lý thuyết Báo cáo và kết quả TN Kiểm tra Kết quả 1. MỤC ĐÍCH THÍ NGHIỆM - Hiểu được bản chất quá trình phát âm tiếng nói của con người. - Nắm rõ một số đặc điểm quan trọng của tín hiệu tiếng nói như băng thông, sự phân bố năng lượng, tốc độ lấy mẫu tối thiểu. - Biết cách phân đoạn tiếng nói và tính đặc trưng trên từng đoạn như Năng lượng, tần số cơ bản. - Biết cách thực hiện một số ứng dụng đơn giản của hệ thống xử lý tiếng nói như: triệt nhiễu, phát hiện và tách tín hiệu tiếng nói ra khỏi đoạn tín hiệu ghi âm được, nhận dạng giới tính người phát âm dựa vào tiếng nói. 6 Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 133 2. THIẾT BỊ THÍ NGHIỆM STT Tên thiết bị Số lượng 01 Máy vi tính có gắn SoundCard và cài chương trình Matlab 01 02 Micro 01 03 Loa 01 3. LÝ THUYẾT 3.1. Giới thiệu Tiếng nói là một trong những công cụ giao tiếp thông dụng và hiệu quả nhất của con người. Tín hiệu tiếng nói được dùng trong rất nhiều hệ thống thực tế như điện thoại, phát thanh, truyền hình, các hệ thống thu phát âm thanhCác kỹ thuật xử lý số tín hiệu tiếng nói (DSP - Digital Signal Processing) thường được dùng trong các ứng dụng như: Mã hóa tiếng nói (speech coding); nhận dạng tiếng nói (speech recognition); nhận dạng người nói (speaker identification); nhận dạng các đặc điểm của người nói như giới tính, độ tuổi, cảm xúc; triệt nhiễu trong tiếng nói (noise reduction) hoặc tổng hợp tiếng nói (speech synthesis). Để có thể xây dựng thành công các giải thuật DSP trong các ứng dụng này, chúng ta cần hiểu rõ bản chất của quá trình phát âm tiếng nói bên trong cơ thể con người. Từ đó hiểu được một số đặc điểm cơ bản của tín hiệu tiếng nói. Hình 41. Bộ máy phát âm Mục đích của bài thí nghiệm này là giúp sinh viên hiểu được quá trình phát âm tiếng nói của con người, một số đặc điểm cơ bản của tín hiệu tiếng nói như băng thông, sự phân bố năng lượng trên các băng tần số khác nhau, lấy mẫu. Bài thí nghiệm cũng giúp sinh viên biết được cách xây dựng các giải thuật đơn giản để thực hiện 03 ứng dụng là: 1. Triệt nhiễu nhằm nâng cao chất lượng tiếng nói (noise reduction). 2. Phát hiện và tách tín hiệu tiếng nói ra khỏi đoạn tín hiệu thu âm được (VAD: voice activity detection). Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 134 3. Nhận dạng giới tính của người nói là nam hay nữ dựa vào tiếng nói (gender recognition). 3.2. Cơ sở lý thuyết Khi con người phát âm, luồng không khí từ phổi truyền qua hệ thống phát âm sẽ làm rung dây thanh quản (vocal tract). Hệ thống phát âm bao gồm những bộ phận liên quan đến việc phát âm của con người bắt đầu từ khoảng mở của vocal folds và kết thúc tại môi. Đặc trưng cộng hưởng của hệ thống thanh quản sẽ biến đổi theo hình dạng của hệ thống phát âm mà hình dạng này sẽ thay đổi trong quá trình phát âm do sự dịch chuyển của hàm răng, lưỡi, môi và các bộ phận khác bên trong khoang miệng. Con người có thể điều khiển âm thanh được phát ra bằng cách dịch chuyển các bộ phận phát âm trong miệng theo các kiểu khác nhau để phát ra các tiếng nói khác nhau. Tín hiệu tiếng nói trong thực tế thường bị ảnh hưởng của nhiễu (noise) là các tín hiệu tạp âm không mong muốn. Điều này sẽ làm ồn và làm giảm chất lượng tiếng nói. Vì vậy việc triệt nhiễu nhằm mục đích nâng cao chất lượng tiếng nói là cần thiết. Ảnh hưởng của nhiễu có thể được mô hình như là một tín hiệu khác cộng vào trong tín hiệu tiếng nói như Hình 2. Hình 42. Tác động của nhiễu Trong mô hình trên, s là tiếng nói sạch (clean speech) chưa bị ảnh hưởng bởi nhiễu, n là nhiễu (noise), x là tiếng nói sau khi ảnh hưởng bởi nhiễu (noisy speech), s’ là tiếng nói sau khi triệt nhiễu (denoised speech). Lưu ý là x = s + n. Chức năng của bộ triệt nhiễu là làm suy hao thành phần nhiễu n trong tín hiệu x để cải thiện chất lượng tiếng nói. Trong thực tế, tín hiệu có thể bị ảnh hưởng của rất nhiều loại nhiễu khác nhau như nhiễu động cơ xe hơi; nhiễu ồn do các tiếng nói tạp âm trong khác trong lớp học; văn phòng; sân bay.; nhiễu tiếng ồn trong nhà máy. Nếu tín hiệu hiệu nhiễu phân bố năng lượng trên vùng tần số khác với tín hiệu tiếng nói, việc triệt nhiễu có thể được thực hiện đơn giản bằng cách dùng bộ lọc để loại bỏ nhiễu ra khỏi tín hiệu tiếng ói. Do vậy, việc hiểu rõ sự phân bố năng lượng của tiếng nói và của tín hiệu nhiễu là cần thiết. Đoạn tín hiệu tiếng nói thu được trong quá trình ghi âm sẽ có hai phần: phần có tín hiệu tiếng nói tương ứng với khoảng thời gian con người phát âm và phần không có tín hiệu tiếng nói tương ứng với khoảng thời gian yên lặng. Một trong những công đoạn đầu tiên của các hệ thống xử lý tín hiệu tiếng nói là nhận ra và tách riêng đoạn tín hiệu tiếng nói ra khỏi đoạn tín hiệu thu được (VAD: Voice Activity Detection). Các đặc trưng của tiếng nói dùng trong các hệ thống xử lý tiếng nói chỉ được tách từ đoạn tín hiệu thực sự có tiếng nói. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 135 Hình 43. Dạng sóng tín hiệu tiếng nói. Đoạn 2 và 4 có tín hiệu tiếng nói, đoạn 1, 3, 5 không có tín hiệu tiếng nói. Tín hiệu tiếng nói chứa đựng các đặc trưng có thể được sử dụng để xác định nhiều thông tin hữu ích như: nội dung các từ phát âm; đặc điểm của người phát âm như: giới tính; độ tuổi; cảm xúc, mức độ căng thẳng. Hệ thống nhận dạng các thông tin về người nói thường có hai phần chính như sau: Hình 44. Sơ đồ một bộ nhận dạng dùng tiếng nói Nhiệm vụ của bộ trích đặc trưng là tính toán các đặc trưng hữu ích để phục vụ cho quá trình nhận dạng. Các đặc trưng cơ bản của tiếng nói là: chu kỳ cao độ (pitch period), năng lượng (energy), các tần số cộng hưởng (formants), tốc độ qua điểm zero, MFCC (Mel frequency cepstrum coefficients)Tùy vào mục tiêu nhận dạng mà ta có thể sử dụng một hay nhiều đặc trưng khác nhau trong số các đặc trưng này. Đặc trưng tiếng nói thông thường được tính trên mỗi đoạn tín hiệu có chiều dài Tframe =25ms. Các đoạn kế tiếp nhau chồng lấn nhau Toverlap=15ms theo Hình 5. Như vậy, các vị trí bắt đầu của 2 khung kế tiếp nhau cách nhau 10 ms. Giá trị này được chọn vì trong khoảng thời gian này, tín hiệu tiếng nói tương đối ổn định do bộ máy phát âm của con người ít thay đổi trong khoảng thời gian ngắn. Năng lượng của tín hiệu tiếng nói có thể được xác định trong miền thời gian hoặc tần số:          1 0 2 1 0 2 1 N k L n kX N nxgySpeechEner Trích đặc trưng Nhận dạng Tiếng nói Kết quả nhận dạng Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 136 Trong đó L là tổng số mẫu tiếng nói; x[n] là mẫu thứ n trong đoạn tiếng nói; N là tổng số điểm tính DFT (Discrete Fourier Transform); X(k) là giá trị vạch phổ thứ k của biến đổi DFT. Hình 45. Phân đoạn tiếng nói Khi con người phát ra tiếng nói, dây thanh quản sẽ rung theo một chu kỳ nhất định. Có nhiều yếu tố tác động đến chu kỳ này như: từ được phát âm, độ tuổi, cảm xúc giới tínhVề mặt giới tính, sự khác nhau về bộ máy phát âm của nam và nữ làm cho tốc độ rung dây thanh quản của nữ sẽ nhanh hơn so với nam. Nói cách khác, chu kỳ rung dây thanh quản của nữ sẽ nhỏ hơn của nam. Chu kỳ rung này sẽ thể hiện trong đặc trưng chu kỳ cao độ T0 (hoặc tần số cao độ F0=1/T0) của tín hiệu tiếng nói như trong Hình 6, Lưu ý tín hiệu tiếng nói trong vùng nguyên âm có dạng gần tuần hoàn, tín hiệu tiếng nói trong các chu kỳ kế tiếp nhau là gần giống nhau (nhưng không giống nhau hoàn toàn). Vì vậy giá trị T0 cũng thay đổi (rất nhỏ) trong các chu kỳ khác nhau. Chu kỳ cao độ trong một đoạn tiếng nói được tính là trung bình tất cả các giá trị T0 trong đoạn tín hiệu tiếng nói đó. Hình 46. Dạng sóng của một đoạn tín hiệu tiếng nói Tần số cao độ được định nghĩa là nghịch đảo của chu kỳ cao độ F0=1/T0. Tần số cao độ của tiếng nói con người thay đổi trong khoảng từ 50Hz đến 400Hz. Tần số cao độ của nam là thấp hơn so với nữ do bộ máy phát âm của hai giới là khác nhau. Trong phạm vi bài thí nghiệm này, tần số ngưỡng 150Hz được dùng để phân chia tiếng nói là của nam hay nữ. Cụ thể là 50Hz< F0nam < 150Hz và 150Hz≤F0nữ <400Hz. Lưu ý rằng việc phân chia này chỉ mang tính chất tương đối vì trong thực tế có giọng nữ trầm (F0150Hz) nên ranh giới 150Hz là T0 Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 137 không hoàn toàn đúng cho tất cả mọi trường hợp. Vì vậy, độ chính xác của việc nhận dạng giới tính bằng phương pháp này có thể không đạt đến mức 100%. Sơ đồ của một bộ nhận dạng giới tính như Hình 7. Hình 47. Sơ đồ bộ nhận dạng giới tính Chức năng của phần trích đặc trưng là trích F0 và tính F0 trung bình của tiếng nói ngõ vào. Thông số này sẽ được phần Nhận dạng so sánh với ngưỡng 150Hz để xác định giới tính của người phát âm là nam hay nữ. 4. CHUẨN BỊ THÍ NGHIỆM 1. Bên cạnh nội dung tiếng nói (từ được phát âm), hãy liệt kê những thông tin khác có thể biết được khi người nghe nghe một đoạn tín hiệu tiếng nói. 2. Khi nghe một đoạn tiếng nói, người nghe có thể biết được tiếng nói này là của nữ hay nam không? Giải thích. 3. Tín hiệu tiếng nói khi được truyền trên kênh truyền điện thoại, băng thông của nó sẽ được giới hạn trong khoảng tần số nào? Cho biết lý do của việc giới hạn băng thông. Trích đặc trưng F0 Nhận dạng Tiếng nói Giới tính Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 138 4. Việc thu tiếng nói trong Matlab có thể được thực hiện bằng lệnh y = wavrecord(N, Fs, DataType). Hãy cho biết ý nghĩa các thông số y, N, Fs, DataType? Vì sao cần phải xác định 3 thông số này trong quá trình thu tiếng nói. 5. Việc phát tiếng nói trong Matlab có thể được thực hiện bằng lệnh wavplay(y, Fs). Fs là tần số lấy mẫu của y. Hãy cho biết nếu nhập tần số lấy mẫu không đúng thì kết quả tiếng nói được phát âm sẽ như thế nào? 6. Tín hiệu tiếng nói y có tổng số 1000 mẫu. Biết rằng y được thu tại tốc độ lấy mẫu Fs=16000Hz. Cho biết tín hiệu y được thu trong bao nhiêu mili giây?........................................................... 7. Tín hiệu tiếng nói y trong câu 6 được biết đổi Fourier rời rạc (Discrete Fourier Transform) tại N=1024 điểm. Biết rằng độ rộng giữa hai vạch phổ kế tiếp nhau là f. Tính f. f = .Hz 8. Vì sao việc triệt nhiễu trong tín hiệu tiếng nói là cần thiết? Cho biết một số cách có thể được dùng để đánh giá của hiệu quả của quá trình triệt nhiễu trong tiếng nói 9. Dựa vào đặc trưng nào để nhận biết đoạn tín hiệu thực sự có tiếng nói trong toàn bộ đoạn tín hiệu ghi âm được. Giải thích ngắn gọn. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 139 5. TIẾN HÀNH THÍ NGHIỆM 5.1. Ước lượng băng thông và khảo sát sự phân bố năng lượng a. Sử dụng hàm wavread trong Matlab để đọc file tiếng nói ‘CleanSpeech.wav’, gán tín hiệu tiếng nói trong file này là biến sp. Xác định tần số lấy mẫu fs của tín hiệu tiếng nói lưu trong file này. fs= mẫu/giây b. Biết rằng đoạn tiếng nói trên được thu trong khoảng thời gian t giây. Từ giá trị fs tìm được ở trên, hãy xác định t. t= giây c. Sử dụng lệnh wavplay, phát và nghe lại đoạn tiếng nói trên tại ba tần số lấy mẫu khác nhau là f1=0.5fs, f2=fs, f3=2fs. Cho nhận xét về đoạn âm thanh nghe được trong mỗi trường hợp. d. Sử dụng Matlab, vẽ dạng sóng tín hiệu tiếng nói sp trên với trục ngang biểu diễn theo đơn vị giây. Tính và vẽ phổ biên độ của sp trong khoảng tần số từ 0 đến fs/2 (sử dụng công cụ fft). Lưu ý: trục ngang của hình vẽ phổ biên độ phải được biểu diễn theo đơn vị Hz. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 140 Dạng sóng tiếng nói Phổ biên độ của tiếng nói e. Dựa trên hình vẽ phổ biên độ này, hãy ước lượng băng thông của tiếng nói (độ rộng của đoạn tần số tính từ 0Hz, chứa khoảng hơn 95% năng lượng của tín hiệu tiếng nói). Băng thông của tín hiệu tiếng nói là: BW = Hz f. Dựa trên kết quả tính fft trong câu 6.1, hãy tính phần trăm năng lượng của tiếng nói phân bố trên các vùng tần số khác nhau có cùng độ rộng là 1kHz và hoàn thành Bảng 1. Bảng 1: Phần trăm năng lượng tiếng nói trên các băng tần khác nhau Băng Tần Băng tần 0-1kHz 1-2kHz 2-3kHz 3-4kHz 4-5kHz 5-6kHz 6-7kHz 7-8kHz % năng lượng Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 141 Cho biết vùng tần số nào chứa nhiều năng lượng tiếng nói nhất?....................... g. Dựa vào kết quả trong Bảng 1 hãy giải thích vì sao tín hiệu tiếng nói truyền trên đường truyền điện thoại bị giới hạn tần số dưới 3.5kHz? 5.2. Xác định tần số lấy mẫu tối thiểu a. Từ kết quả trong câu 6.1, hãy ước lượng tần số lấy mẫu nhỏ nhất fsmin của tiếng nói để tín hiệu sau khi lấy mẫu không bị aliasing (chồng phổ). fsmin=.mẫu/giây b. Tín hiệu tiếng nói trong câu 6.1 có thể được giảm tần số lấy mẫu để tạo nên tín hiệu có tần số lấy mẫu nhỏ hơn theo dùng lệnh spDownSampling=sp(1:N:end); Trong đó N = 2, 3, 4. là tốc độ giảm tần số lấy mẫu. Việc giảm tần số lấy mẫu của tín hiệu được thực hiện bằng cách trong mỗi đoạn N mẫu tín hiệu gốc liên tiếp nhau thì giữ lại một mẫu và bỏ đi N-1 mẫu còn lại để tạo thành tín hiệu mới. c. Hãy cho biết lợi ích của việc giảm tần số lấy mẫu? d. Hãy tiến hành giảm tần số lấy mẫu của tiếng nói gốc trong câu 6.1. Ứng với mỗi giá trị N, thực hiện các bước sau và hoàn thành Bảng 2. i. Tính và vẽ phổ biên độ của tín hiệu tiếng nói spDownSampling trong khoảng tần số từ [0 fs/(2N)] Hz. ii. Vẽ dạng sóng tín hiệu tiếng nói trong 4 mili giây đầu tiên dùng lệnh stem(spDownSampling) Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 142 iii. Nghe tín hiệu tiếng nói sau khi giảm tốc độ lấy mẫu theo lệnh sau: wavplay(spDownSampling,fs/N) Phổ biên độ tiếng nói với N=1 Dạng sóng tiếng nói với N=1 Phổ biên độ tiếng nói với N=2 Dạng sóng tiếng nói với N=2 Phổ biên độ tiếng nói với N=3 Dạng sóng tiếng nói với N=3 Phổ biên độ tiếng nói với N=4 Dạng sóng tiếng nói với N=4 Phổ biên độ tiếng nói với N=8 Dạng sóng tiếng nói với N=8 Bảng 2: Giảm tần số lấy mẫu Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 143 Tốc độ giảm tần số lấy mẫu Tần số lấy mẫu mới (kHz) Tổng số mẫu của spDownSampling Mức độ aliasing N=1 N=2 N=3 N=4 N=8 e. Trong các giá trị N đã chọn trong Bảng 2, bắt đầu từ giá trị nào thì hiện tượng aliasing xảy ra? Giải thích nguyên nhân. 5.3. Triệt nhiễu nâng cao chất lượng tiếng nói Tín hiệu tiếng nói trong câu 6.1 bị ảnh hưởng của nhiễu cộng là một tín hiệu SIN tần số cao. Tiếng nói bị ảnh hưởng bởi nhiễu được lưu trong file ‘NoisySpeech.wav’. Sử dụng hàm wavread trong Matlab để đọc file tiếng nói bị tác động bỡi nhiễu, gán tín hiệu tiếng nói trong file này là biến spNoisy. Sinh viên được yêu cầu ứng dụng bộ lọc để triệt nhiễu nhằm mục đích nâng cao chất lượng tiếng nói. a. Tính và vẽ phổ biên độ của tín hiệu spNoisy trong khoảng tần số từ 0 đến fs/2. Lưu ý: trục ngang của hình vẽ phổ biên độ phải được biểu diễn theo đơn vị Hz. So sánh với phổ của tín hiệu tiếng nói chưa bị tác động của nhiễu (sp) trong câu 6.1 để xác định tần số của tín hiệu nhiễu fNoise. Phổ biên độ của tín hiệu tiếng nói bị nhiễu fNoise=..Hz Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 144 Tín hiệu spNoisy được truyền qua bộ lọc như Hình 8 nhằm triệt nhiễu để nâng cao chất lượng tiếng nói. Hãy cho biết để khử nhiễu hiệu quả, bộ lọc triệt nhiễu cần có đặc tính gì? Loại bộ lọc (thông cao, thấp, dải, chắn dải)?....................................................... Tần số cắt của bộ lọc: .. Hz < fc <Hz Giải thích ........................................................................................................... Hình 48. Bộ lọc triệt nhiễu b. Sử dụng 03 bộ lọc thông thấp Chebyshev loại 1 k ác nhau để triệt nhiễu trong tín hiệu spNoisy. Cả ba bộ lọc này đều có tần số cắt fc=4kHz và độ gợn dải thông Rp=0.2dB. Bậc của bộ lọc thay đổi như trong Bảng 3. Sử dụng lệnh cheby1 trong Matlab để xác định các hệ số B và A của các bộ lọc 1, 2 và 3. Sau đó dùng lệnh filter để thực hiện việc lọc nhiễu trong tín hiệu spNoisy. Hãy thực hiện các cách sau để đánh giá hiệu quả của quá trình triệt nhiễu và hoàn thành Bảng 3. i. Nghe tín hiệu trước và sau khi triệt nhiễu. ii. Vẽ và so sánh dạng sóng của tín hiệu trước và sau khi triệt nhiễu. iii. Vẽ và so sánh phổ biên độ của tín hiệu tiếng nói trước và sau khi triệt nhiễu. iv. Tính thông số Tỷ số tín hiệu trên nhiễu được ký hiệu là SNR (Signal to Noise Ratio) theo công thức sau:        NoisePower rSpeechPowe log10)( 10dBSNR Trong đó: SpeechPower là công suất tín hiệu tiếng nói chưa bị ảnh hưởng bởi nhiễu (sp). NoisePower là công suất của nhiễu. Nhiễu được xác định là hiệu số của tín hiệu sau khi xử lý và tín hiệu trước khi xử lý (sp). Dễ hiểu là SNR càng lớn thì chất lượng tín hiệu tiếng nói càng tốt. Lưu ý: Công suất tín hiệu có thể được tính là tổng bình phương tất cá các mẫu của Bộ lọc triệt nhiễu spDeNoised spNoisy Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 145 tín hiệu đó.       1 0 2 L k ksPower . Trong đó s[k] là biên độ của mẫu tín hiệu thứ k trong tổng số L mẫu của tín hiệu s. Xác định SNR của tín hiệu tiếng nói trước khi triệt nhiễu spNoisy SNRspNoisy = .dB Bảng 3: So sánh hiệu quả các bộ lọc triệt nhiễu Bậc bộ lọc SNR sau khi triệt nhiễu (dB) Chất lượng tiếng nói sau khi triệt nhiễu Bộ lọc 1 N=2 Bộ lọc 2 N=4 Bộ lọc 3 N=8 c. Hãy vẽ dạng sóng và phổ biên độ của sp, spNoisy và spDeNoised hình vẽ sau. Dạng sóng tiếng nói gốc (chưa bị nhiễu) Phổ biên độ tiếng nói gốc Dạng sóng tiếng nói bị nhiễu Phổ biên độ tiếng nói bị nhiễu Dạng sóng tiếng nói sau triệt nhiễu dùng Bộ lọc 1 Phổ biên độ tiếng nói sau triệt nhiễu dùng Bộ lọc 1 Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 146 Dạng sóng tiếng nói sau triệt nhiễu dùng Bộ lọc 2 Phổ biên độ tiếng nói sau triệt nhiễu dùng Bộ lọc 2 Dạng sóng tiếng nói sau triệt nhiễu dùng Bộ lọc 3 Phổ biên độ tiếng nói sau triệt nhiễu dùng Bộ lọc 3 d. Cho nhận xét và giải thích về hiệu quả triệt nhiễu của các bộ lọc 1, 2, 3. 5.4. Tách tiếng nói ra khỏi đoạn tín hiệu thu được a. Hãy phân đoạn đoạn tín hiệu tiếng nói sp trong mục 6.1 theo hướng dẫn trong Mục 4 và hãy cho biết tổng số đoạn tiếng nói nhận được là ..đoạn. b. Viết một đoạn chương trình tính Năng lượng từng đoạn tiếng nói và vẽ thông số này trên cùng màn hình với dạng sóng tiếng nói. Lưu ý: Hình vẽ dạng sóng tiếng nói và Năng lượng phải được sắp xếp thẳng hàng. Trục ngang hình vẽ dạng sóng Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 147 tiếng nói biểu diễn theo chỉ số mẫu, trục ngang của hình vẽ năng lượng biểu diễn theo chỉ số đoạn. Dạng sóng tiếng nói Năng lượng tiếng nói Từ kết quả nhận được hãy cho biết sự thay đổi của Năng lượng ứng với các vùng tiếng nói khác nhau c. Tiếng nói sau khi thu được sẽ bao gồm hai phần, phần có tín hiệu tiếng nói và phần không có tín hiệu tiếng nói (tương ứng với khoảng thời gian yên lặng trong quá trình phát âm). Việc trích đặc trưng trong các ứng dụng xử lý tiếng nói được thực hiện trong đoạn có tiếng nói. Vì vậy, việc nhận biết và tách đoạn tiếng nói ra khỏi đoạn tín hiệu thu được là cần thiết. Quá trình này được gọi là phát hiện tiếng nói (Voice Activity Detection VAD). Từ sự quan sát về sự thay đổi của Năng lượng trong phần 6.4b, hãy đề nghị một giải thuật tách đoạn tín hiệu tiếng nói ra khỏi đoạn tín hiệu thu được sử dụng Năng lượng. Viết đoạn chương trình thực hiện giải thuật này bằng Matlab. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 148 Giải thuật tách đoạn tín hiệu tiếng nói ra khỏi đoạn tín hiệu ghi âm được: Đoạn chương trình thực hiện VAD bằng Matlab Kết quả thực hiện. Dạng sóng của toàn bộ tín hiệu ghi âm Dạng sóng tiếng nói tách được 5.5. Nhận dạng giới tính. Lệnh pitch_rapt được dùng để trích F0 trên tất cả các đoạn tiếng nói (chiều dài 25ms và chồng lấn 15ms giữa hai đoạn kế tiếp). Lệnh này được dùng như sau: [mf0]=pitch_rapt(s,fs) trong đó mf0 là vector chứa giá trị F0 trên các đoạn tiếng nói của trong tín hiệu s, fs là tần số lấy mẫu của s. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 149 a. Dùng lệnh pitch_rapt hãy trích và vẽ F0 của 02 file tiếng nói, 1 file tiếng nói của nữ (‘Female.wav’), 1 file tiếng nói của nam (‘Male.wav’). Tính F0 trung bình của tiếng nói người nữ Mean_F0nữ và người nam Mean_F0nam. Lưu ý rằng F0 của những đoạn không có tiếng nói không xác định được và pitch_rapt sẽ gán giá trị F0=0 cho những đoạn này. F0 trung bình chỉ tính cho những đoạn có F0>0. Hình vẽ F0 của nữ, file ‘Female.wav’. Hình vẽ F0 của nam, file ‘Male.wav’. Mean_F0nữ =Hz Mean_F0nam =Hz Nhận xét về khoảng dao động và giá trị trung bình của F0 người nữ và người nam. b. Sinh viên được cung cấp 10 file tiếng nói của 10 người nói (speaker) lưu dưới dạng file .wav, thực hiện các bước sau và hoàn thành Bảng 4. i. Hãy nghe 10 file tiếng nói này và sau khi nghe xác định giới tính người nói là nam hay nữ. Điền kết quả vào hàng (1). ii. Sử dụng lệnh pitch_rapt hãy xác định viết một đoạn chương trình để tính F0 trung bình của từng file tiếng nói. Từ đó so sánh với ngưỡng 150Hz để xác định giới tính người phát âm. Điền kết quả vào hàng (3) và (4). Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 150 Bảng 4: Kết quả nhận dạng giới tính Speaker 1 2 3 4 5 6 7 8 9 10 (1) Nghe (2) Kết luận (3) F0 (Hz) (4)Chương trình (5) Kết luận Đối chiếu kết quả nhận được với Giáo viên hướng dẫn để biết kết quả nhận dạng theo mỗi phương pháp là đúng hay sai và ghi vào ô tương ứng trong hàng (2)&(5) Bảng 4. Độ chính xác của quá trình nhận dạng theo phần trăm được tính như sau: Độ chính xác (%) = (Số lần nhận dạng đúng/Tổng số lần nhận dạng)*100. c. Tính độ chính xác việc nhận dạng giới tính 10 file cho sẵn bằng cách lắng nghe .% Tính độ chính xác việc nhận dạng giới tính bằng chương trình Matlab.% d. Sử dụng wavread, đọc và thu vào máy tính dòng chữ: “Bộ môn Viễn thông, Khoa Điện, Trường Đại học Bách khoa Thành phố Hồ Chí Minh”. Tốc độ lấy mẫu fs=16kHz, datatype=’double’, gán tín hiệu thu được vào biến s trong Matlab. Dùng pitch_rapt hãy tính F0 trung bình của chuỗi tiếng nói này. Hãy lặp lại việc này 5 lần và ghi nhận kết quả vào phần sau: Giới tính của bạn Lần 1: F01=Hz Lần 2: F02=Hz Lần 3: F03=Hz Lần 4: F04=Hz Lần 5: F05=Hz F0TrungBình=Hz Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 151 5.6. Phần mở rộng Lưu ý: Phần này không bắt buộc sinh viên thực hiện. Nếu hoàn thành đúng phần này, sinh viên được cộng 2 điểm vào bài báo cáo. Sử dụng Matlab, hãy viết một đoạn chương trình để khi người đọc đọc vào máy tính một đoạn tiếng nói (chậm và rời rạc), chương trình sẽ thực hiện một số yêu cầu sau: a. Xác định tổng số từ trong đoạn tiếng nói thu vào. b. Tách tiếng nói của mỗi từ riêng biệt và lưu vào các file ‘.wav’. Tên file sẽ là số thứ tự của từ tương ứng trong đoạn tiếng nói. Ví dụ ‘1.wav’, ‘2.wav’ c. Tính chiều dài của tiếng nói mỗi từ theo đơn vị mili giây và chiều dài trung bình của tất cả các từ đọc vào Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 152 XỬ LÝ ẢNH SỐ Họ và tên SV báo cáo 1: . MSSV: ....... Họ và tên SV báo cáo 2: . MSSV: ....... Họ và tên SV báo cáo 3: . MSSV: ....... Họ và tên SV báo cáo 4: . MSSV: ....... Nhóm lớp: ... Tiểu nhóm: ...... Ngày thí nghiệm: ... Điểm đánh giá CBGD nhận xét và ký tên Chuẩn bị lý thuyết Báo cáo và kết quả TN Kiểm tra Kết quả 1. MỤC ĐÍCH THÍ NGHIỆM Bài thí nghiệm này nhằm giúp sinh viên tìm hiểu và kiểm chứng lại lý thuyết đồng thời thực hiện mô phỏng các quá trình xử lý ảnh sau: - Triệt nhiễu muỗi tiêu và nhiễu tuần hoàn. - Làm nhòe và làm sắc nét ảnh. 2. THIẾT BỊ SỬ DỤNG - Máy tính cá nhân. - Phần mềm MATLAB. 3. LÝ THUYẾT VÀ CHUẨN BỊ THÍ NGHIỆM 7 Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 153 3.1. Giới thiệu ảnh số 3.1.1. Ảnh số:  Ảnh f(x,y) được miêu tả bằng những mẫu cách đều nhau ở dạng ma trận (N-M): A MNfNfNf Mfff Mfff yxf                  )1,1(...)1,1()0,1( ............ )1,1(...)1,1()0,1( )1,0(...)1,0()0,0( ),(  Ma trận A được gọi là ảnh số, mỗi thành phần của A được gọi là một thành phần ảnh, hay pixel, hoặc pel.  Lấy mẫu: chia mặt phẳng xy thành mắt lưới, tọa độ của mỗi mắt lưới là (x, y), trong đó x,y là số nguyên.  Lượng tử: f được gán bằng một giá trị mức xám G (thực hoặc nguyên).  Trong thực tế, N = 2n, M = 2k, G = 2m. Tổng số bit cần chứa ảnh là: NxMxm  Độ phân giải: mức độ chi tiết điểm ảnh, phục thuộc và số mẫu và số mức xám. Hình 49. Ảnh 2 chiều Hình 50. Ảnh động Màu sắc: kết hợp của 3 màu RGB Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 154 Hình 51. Ảnh nhị phân Hình 52. Ảnh mức xám Hình 53. Ảnh màu Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 155 Câu hỏi chuẩn bị: 1. Tính số MB cần để lưu trữ một ảnh màu RGB kích thước 1080x1920. G= 2. Tính băng thông Mbps cần để truyền một phim HD 1080x1920, tốc độ 30 khung hình/s, chiều dài 2h. B= 3.1.2. Tác vụ đại số: ❑ Tác vụ đại số giữa hai pixel p và q: bao gồm các tác vụ cộng, trừ, nhân, chia (thực hiện trên từng pixel). ❑ Tác vụ mặt nạ (cửa sổ):    9 1 5 i ii ppwp Với sự chọn lựa thông số w thích hợp, tác vụ có thể được dùng để triệt nhiễu, làm mỏng hay phát hiện cạnh. Câu hỏi chuẩn bị: 1. Nếu wi=1/9 thì tác vụ là lọc loại gì (thông cao, thông dãy hay thông thấp). Loại bộ lọc = 2. Nếu wi=1( i≠5) và w5=8 thì tác vụ là lọc loại gì (thông cao, thông dãy hay thông thấp): Loại bộ lọc = p 7 p 4 p 1 p 6 p 3 p 8 p 5 p 2 p 9 w 7 w 4 w 1 w 6 w 3 w 8 w 5 w 2 w 9 Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 156 3.1.3. Các loại nhiễu ảnh: Hình 54. Một số hàm mật độ xác suất nhiễu Hình 55. Ảnh gốc Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 157 Hình 56. Ảnh và phân bố xác suất với các loại nhiễu khác nhau 1. Hình 57. Ảnh và phân bố xác suất với các loại nhiễu khác nhau 2. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 158 Hàm phân bố xác suất (PDF) của biến ngẫu nhiên Gauss được cho bởi:   22 2/ 2 1 )(   zzezp  Trong đó σ là variance và là giá trị trung bình. Hàm phân bố xác suất (PDF) của nhiễu muối tiêu (salt and pepper) được cho bởi:         khác bzP azP zp b a )( Trong đó a=0 và b=255 cho ảnh mức xám 8 bit. Câu hỏi chuẩn bị: 1. Nhiễu Gauss là nhiễu có giá trị liên tục hay rời rạc. Loại nhiễu= 2. Nhiễu muối tiêu là nhiễu có giá trị liên tục hay rời rạc. Loại nhiễu= 3.1.4. Các loại bộ lọc theo sắp xếp thứ tự: Bộ lọc median   xySts tsgmedianyxf   ),( ),(),(ˆ Bộ lọc max   xySts tsgyxf   ),( ),(max),(ˆ Bộ lọc min   xySts tsgyxf   ),( ),(min),(ˆ Bộ lọc midpoint            xyxy StsSts tsgtsgyxf ),(),( ),(min),(max 2 1 ),(ˆ Câu hỏi chuẩn bị: 1. Để loại bỏ nhiễu muối (giá trị mức xám 255), thì có thể sử dụng loại bộ lọc nào ở trên. Loại bộ lọc = Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 159 2. Để loại bỏ nhiễu tiêu (giá trị mức xám 0), thì có thể sử dụng loại bộ lọc nào ở trên: Loại bộ lọc = 3. Để loại bỏ nhiễu muối tiêu, thì có thể sử dụng loại bộ lọc nào ở trên: Loại bộ lọc = 3.2. Làm sắc nét hình: Ứng dụng này sử dụng tác vụ đại số để lọc thành phần tần số cao của ảnh bằng cách sử dụng đạo hàm vi phân. Nếu việc lấy trung bình (tích phân) tương đương với bộ lọc thong thấp (tác dụng là nhòe hình) thì việc lấy đạo hàm (vi phân) tương ứng với bộ lọc thông cao. Thành phần tần số cao này được cộng lại với ảnh gốc để được ảnh có tần số cao được khuyếch đại, làm cho ảnh sắc nét hơn. Ảnh bên dưới là một ví dụ làm sắc nét hình. Hình hàng trên bên phải là hình gốc, trong khi hình hàng dưới bên trái là hình nâng sắc nét dùng bộ lọc với mặt nạ bên trái, và hình hàng dưới bên phải là hình nâng sắc nét dùng bộ lọc với mặt nạ bên phải. Kết quả cho thấy cả hai hình thu được có độ sắc nét tốt hơn hình gốc. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 160 4. TIẾN TRÌNH THÍ NGHIỆM Trong quá trình thí nghiệm SV sẽ thực hiện các nhiệm vụ sau: - Viết mã MATLAB denoisesaltpepper.m để triệt nhiễu muối tiêu dùng bộ lọc trung vị. - Viết mã MATLAB denoiseperiodic.mđể triệt nhiễu tuần hoàn dùng bộ lọc trung vị. - Viết mã MATLAB makeJPEG.m nhằm:  Lọc ảnh dùng chuẩn JPEG.  Tính toán giá trị PSNR.  Kiểm tra chất lượng của ảnh nén.  Nén video chuẩn Motion JPEG. 4.1. Tạo và triệt nhiễu muối tiêu 4.1.1. Đọc ảnh gốc vào Đọc ảnh gốc tên pep.tif và ảnh nhiễu tên n2.tif.Ảnh nhiễu có thể được tạo bởi các lệnh sau: noi = rand(256); n2 = zeros(size(pep)); n2 = n2 + pep .* (noi >0.2) + 255 .* (noi<0.1); a. Ảnh gốc b. Ảnh bị nhiễu muối tiêu Hình 58. Ví dụ về nhiễu muối tiêu. Dùng hàm figure và subplot, imshow để hiện cả hai hình này trên cùng Figure 1. Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 161 4.1.2. Lọc ảnh dùng bộ lọc trung vị 1. Viết hàm thực hiện lọc trung vị hai chiều bằng bộ lọc trung vị dạng 5 điểm đường chéo (5-point cross-shaped). X 0 X 0 X 0 X 0 X Áp dụng bộ lọc này để triệt nhiễu ở Hình 59.b. Phần mã báo cáo: Phần Figure 1. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 162 2. Tìm sai số trung bình bình phương giữa ảnh đã triệt nhiễu và ảnh gốc. 3. Hiện thêm hình đã triệt nhiễu trên hình Figure 1. Phần mã báo cáo: Kết quả báo cáo: Phần Figure 1. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 163 4.1.3. Lọc ảnh dùng bộ lọc trung vị có sẵn medfil2 1. Dùng hàm medfilt2 để lọc trung vị với các bộ lọc kích thước khác nhau: bên cạnh dạng chữ thập, sử dụng thêm các kích thước sau: 1x2 1x3 2x2 3x3 3x4 4x4 4x5 5x5 7x7. 2. Hiện các hình này trên cùng một Figure 2. để dễ so sánh chất lượng. Có thể thêm cả hình gốc và hình nhiễu để tiện so sánh. Gán tên cho các hình con này. Phần mã báo cáo: Phần Figure 2. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 164 3. Nếu một lọc trung vị có thể lọc nhiễu hoàn hảo, sai số trung bình bình phương giữa ảnh gốc và ảnh lọc nhiễu sẽ bằng 0. Trong thực tế thì điều này không xảy ra. Giá trị sai số trung bình bình phương có thể được dùng như một phép đo đơn giản định tính chất lượng của bộ lọc trung vị. Vẽ giá trị sai số trung bình bình phương theo số điểm của bộ lọc cho các bộ lọc xét ở trên. Lưu ý hình vẽ Figure 3. nên bao gồm cả giá trị sai số trung bình bình phương giữa pep và n2, như giá trị chưa được lọc nhiễu. 4. Nhận xét kết quả. 4.2. Giảm nhiễu tuần hoàn 4.2.1. Tạo nhiễu tuần hoàn 1. Đọc ảnh gốc airplane.tif 2. Chuyễn từ ảnh màu sang ảnh trắng đen dùng công thức Y= (R+G+B)/3 3. Hiện cả hình màu và hình trắng đen trên Figure 4. Phần Figure 3. báo cáo: Báo cáo nhận xét: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 165 4. Giảm chất lượng hình bằng nhiễu tuần hoàn: mỗi cột bội 5 được gán giá trị 0 như Hình 57.b. a. Ảnh gốc b. Ảnh bị nhiễu Hình 59. Ví dụ về nhiễu tuần hoàn. Phần mã báo cáo: Phần Figure 4. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 166 4.2.2. Lọc nhiễu tuần hoàn 5 phương pháp lọc được đề xuất để thực hiện lọc nhiễu tuần hoàn này. (a) Lọc trung vị theo chiều ngang 3 điểm (horizontal 3-point median filter) (b) Lọc trung bình theo chiều ngang 3 điểm (horizontal 3-point mean filter) (c) Lọc trung điểm theo chiều ngang 3 điểm (horizontal 3-point midpoint filter) (d) Lọc trung vị 6 điểm như hình bên dưới. Ngõ ta tại trung tâm cửa sổ, là giá trị trung vị của 6 điểm của bộ lọc đánh dấu bởi điểm X. Lưu ý rằng pixel đang xét không được dùng cho tính toán trung vị trong phương pháp này. (e) Lọc trung vị có trọng số 3x3 điểm với trọng số cho bởi ma trận sau Ở mỗi phương pháp, chỉ những pixel ở cột bị nhiễu (mỗi 5 cột) sẽ được xử lý. Pixel ở những cột không bị nhiễu có giá trị giống như hình gốc và sẽ không bị tác động bởi bộ lọc. 1. Thực hiện lọc nhiễu sử dụng 5 phương pháp trên. Hiện kết quả hình sau lọc nhiễu trên Figure 5. Phần mã báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 167 2. Tính sai số trung bình bình phương (MSE) của từng phương pháp, bỏ qua sai số ở gần 4 biên do chèn thêm điểm 0 (zero-padding) tại 4 biên. Sắp xếp 5 phương pháp này theo chỉ số MSE từ cao đến thấp. Giải thích lý do. Figure 5. báo cáo: Phần báo cáo và giải thích: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 168 4.3. Làm nhòe và làm sắc nét hình 4.3.1. Làm nhòe hình 1. Đọc ảnh gốc airplane.tif 2. Áp dụng làm nhòe dùng bộ lọc thông thấp. Phép toán này được thực hiện bằng toán tử đại số bằng cách nhân mặt nạ trung bình 3x3 lên hình gốc 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 3. Hiện cả hình gốc và hình nhòe trên Figure 6. 4.3.2. Làm sắc nét hình 1. Đọc ảnh gốc airplane.tiff Phần mã báo cáo: Phần Figure 6. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 169 2. Áp dụng tách thành phần tần số cao dùng bộ lọc thông cao. Phép toán này được thực hiện bằng toán tử đại số bằng cách nhân mặt nạ trung bình 3x3 lên hình gốc 0 -1 0 -1 4 -1 0 -1 0 3. Cộng hình gốc và hình tần số cao để tạo thành hình sắc nét. 4. Hiện cả hình gốc, hình tần số cao và hình sắc nét trên Figure 7. 5. Thực hiện lại bước 2 đến 4 với mặt nạ sau Phần mã báo cáo: Phần Figure 7. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 170 -1 -1 -1 -1 9 -1 -1 -1 -1 6. Cộng hình gốc và hình tần số cao để tạo thành hình sắc nét. Hiện cả hình gốc, hình tần số cao và hình sắc nét trên Figure 8. 7. Đánh giá so sánh độ sắc nét của hình sử dụng hai mặt nạ trên bằng cách hiện cả hình gốc và hình sắc nét dùng hai mặt nạ trên Phần mã báo cáo: Phần Figure 8. báo cáo: Bộ M ôn V iễn T hô ng -Đ H Bá ch K ho a T pH CM TÀI LIỆU THÍ NGHIỆM XỬ LÝ SỐ TÍN HIỆU 171 Phần Figure 9. báo cáo: Nhận xét đánh giá:

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_thi_nghiem_xu_ly_so_tin_hieu.pdf
Tài liệu liên quan