Khử nhiễu kênh thoại bằng DSP

Phần I: Giới thiệu thuật toán RECUSIVE LEAST-SQUARES ALGORITHM (RLS) 1.Lí thuyết về thuật toán RLS (Recursive least squares algorithm) 2. Các bước thực hiện thuật toán RLS a) Khởi tạo thông số thuật toán RLS b) Cập nhật đệ qui cho tổng trọng số lỗi c) Phân tích sự hội tụ của thuật toán RLS PHẦN II: MÔ PHỎNG THUẬT TOÁN RLS BẰNG SIMULINK 1.Tạo sơ đồ khối bộ lọc 2.Code C trên Mathlab 3. Kết quả mô phỏng

pdf11 trang | Chia sẻ: banmai | Lượt xem: 2572 | Lượt tải: 2download
Bạn đang xem nội dung tài liệu Khử nhiễu kênh thoại bằng DSP, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 1 Báo cáo đồ án:KHỬ NHIỄU KÊNH THOẠI TRÊN DSP --------------------------------------------------------------------------------- PHẦN I: RECUSIVE LEAST-SQUARES ALGORITHM 1.Lí thuyết về thuật toán RLS (Recursive least squares algorithm): Thuật toán Recusive Least-Squares( RLS) được xem như trường hợp đặc biệt của bộ lọc Kalman. Thuật toán RLS là một công cụ quan trọng cho việc xác định các hệ số của bộ lọc thích nghi tuyến tính. Thuật toán RLS tăng độ phức tạp, số lượng các phép toán, và độ tin cậy. Do đó, RLS đưa ra độ hội tụ nhanh hơn và lỗi ít hơn, nhưng đổi lại yêu cầu phí tổn cho nhiều sự tính toán hơn. Khi thuật toán LMS tìm lỗi để tối thiểu hóa, nó chỉ nghĩ đến giá trị lỗi hiện tại, còn trong thuật toán RLS, mọi lỗi được xem là lỗi toàn cục từ lúc bắt đầu đến điểm dữ liệu hiện thời. Thuật toán RLS dựa trên việc bắt đầu với giải pháp tối ưu và sau khi dùng mỗi mẫu vào để cập nhật đáp ứng xung nhằm duy trì quá trình tối ưu hóa. Số bước cần thiết và trực tiếp được định nghĩa qua mỗi mẫu thời gian. Điều này có nghĩa là thuật toán RLS sử dụng những thông tin từ tất cả các mẫu đầu vào quá khứ để ước lượng ma trận tự tương quan của vector dữ liệu đầu vào. Để giảm ảnh hưởng của các mẫu đầu vào từ quá khứ cách xa, ta sử dụng yếu tố trọng số để đánh giá sự ảnh hưởng của mỗi mẫu. Trọng số này được thể hiện trong hàm chi phí sau đây: ( ) ∑ ( ) ( ) Trong đó, e(i) là sự khác biệt giữa tín hiệu mong muốn d(i) so với tín hiệu ngõ ra y(i), được tạo thành từ tập tín hiệu ngõ vào (tại thời điểm i) u(i),u(i-1),… u(i-M+1) e(i) = d(i) – y(i) = d(i) –wH(n)u(i) , u(i) là tập vector ngõ vào của tín hiệu tại thời điểm i, u(i) = [u(i),u(i-1),…,u(i-M+1)]T. w(n) là tập vector trọng số tại thời điểm n, w(n) = [w0(n),w1(1),…, wM-1(n)] T . GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 2 Giản đồ cập nhật trọng số: u(i) u(i-1) ……. u(i-M+2) u(i-M+1) ..….. ……. y(i) Hệ số trọng số ( ) có giá trị 0 < ( ) . Một hình thức đặc biệt của vector trọng số thường được sử dụng là trọng số mũ ( ) Vì vậy hàm chi phí được biểu diễn lại như sau: ( ) ∑ ( ) Ma trận tự tương quan ( ) được biểu diễn : ( ) ∑ ( ) ( ) Vector tương quan chéo Z(n) giữa tập tín hiệu đầu vào và tín hiệu ngõ ra mong muốn tương ứng được biểu diễn là: z(n) = ∑ ( ) ( ) 2. Các bước thực hiện thuật toán RLS: a) Khởi tạo thông số thuật toán RLS: Để ứng dụng thuật toán RLS ta phải khởi tạo vòng lặp đệ qui bằng cách chọn giá trị bắt đầu P(0) sao cho không có điểm kì dị trên ma trận tương quan ( ). Ta có thể làm được điều này bằng cách lấy nghịch đảo của nó. ( ) ∑ ( ) ( ) ] -1 Với vector u(i) có được từ một khối ban đầu của dữ liệu từ . Ma trận tương quan được viết là: ( ) ∑ ( ) ( ) ,với I là ma trận đơn vị m x m. hằng số vị trí nhỏ Z -1 Z -1 𝑤 0*(n) 𝑤 M-2*(n) Σ Z -1 Z -1 𝑤 1*(n) 𝑤 M-1*(n) Σ Σ GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 3 Với n = 0, ta có ( ) Giá trị khởi tạo P(n) chính là nghịch đảo của ma trận tương quan, ta được: P(0) = . Trong thời gian khởi tạo, hàm u(n) được viết ( ) , n = - M +1 u(n)= 0 , n<0, n Giá trị khởi tạo của vector trọng số được thiết lập (0) = 0 Việc tính toán cực tiểu hàm chi phí : ( ) ( ) ( ) ∑ ( ) Mỗi trạng thời gian thái tức thì được cập nhật, n = 1,2,... k(n) = ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) P(n) = ( ) ( ) ( ) ( ). b) Cập nhật đệ qui cho tổng trọng số lỗi: Giá trị nhỏ nhất của tổng trọng số lỗi, ( ) ,được tính : ( ) ( ) ( ) ( ) Trong đó, ( ) được tính ( ) ∑ ( ) 2 = ( ) |d(n)| 2 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Dùng vector độ lợi k(n) để thể hiện : ( ) ( ) ( ) ( ) ( ) = ( ) ( ) Hu(n) = ( ) ( ) GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 4 Ta rút gọn lại được: ( ) ( ) ( ) ( ) ( ) ( ) ( ) = ( ) ( ) ( ) ( ) ( ) = ( ) ( ) ( ) ,với e(n) là lỗi dự đoán tiếp theo. Vì đây là những giá trị thực, ta có ( ) ( ) ( ) ( ). Hệ số chuyển đổi Ta có e(n) = d(n) –[ ( ) ( ) ( )]Hu(n) =d(n)- ( ) ( ) ( ) ( ) ( ) =( 1 ( ) ( )) ( ) Hệ số chuyển đổi ( ) ( ) ( ) ( ) ( ) Hệ số chuyển đổi ( ) được xác định duy nhất bởi vector độ lợi k(n) và vector dữ liệu vào. Sơ đồ thuật toán: Primary signal d(n) + output ( ) _ Referency signal u(n) Bảng cập nhật: k(n)=[ ( ) ( ) ] ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ̂ ( ) ̂ ( ) ( ) Với ̂ ( ) là dự đoán của biến lỗi. ̂ ( ) ( ) Σ 𝑤 (𝑛 ) GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 5 c. Phân tích sự hội tụ của thuật toán RLS: Với ( ) ( ) . Thuật toán RLS tính toán chính xác bằng phương pháp Least-Squares cho n . Khi ta có thể viết ( ) ( ) ( ), n ( ) ∑ ( ) ( ) z(n) = ∑ ( ) ( ) d(n) = e0(n)+ w0 H u(n) , e0l ỗi phép đo w0 là vector tham số hồi qui  Z(n) = ( ) ∑ ( ) ( )  ( ) ( )∑ ( ) ( ) Lấy kì vọng ( ): E[( ( ) ( )∑ ( ) ( ) = w0+ E[ ( )∑ ( ) ( ) ( ) , i=1,2,...n Ta thấy + Ma trận tương quan ( ) được xác định duy nhất bởi trình tự của các vector ngõ vào u(1), u(2),...u(n) + Lỗi đo lường e0(i) độc lập với vector ngõ vào u(i). + Lỗi đo lường e(i) có giá trị 0. Vì vậy, ta viết được : E[( ( ) , n Nhận xét: Sự hội tụ của thuật toán RLS có nghĩa khi n . Không giống LMS, sự hội tụ của RLS đạt được mà không cần n . GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 6 PHẦN II: MÔ PHỎNG THUẬT TOÁN RLS BẰNG SIMULINK 1.Sơ đồ khối bộ lọc: Mô hình cập nhật hệ số bên trong khối RLS Filter: GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 7 Mô hình chi tiết hoạt động của bộ lọc: Tóm gọn trên lại ta được khối hàm mathlab: GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 8 2. Kết quả mô phỏng trên Mathlab: a) Chương trình: khử nhiễu cho tín hiệu âm bị nhiễu chứa trong file signalnoise.wav và nhiễu mẫu chứa trong file noise.wav clear all clc % khởi tạo tiếng nói cộng nhiễu [xinit,Fs,nbits] = wavread('signalnoise.wav'); xinit = xinit'; xn = xinit(1,:); % khử tín hiệu âm cộng nhiễu n = wavread('noise.wav'); % đọc nhiễu n = n'; n = n(1,:); %lấy nhiễu N=length(n); %chiều dài nhiễu M=32; Lamda=0.98; Ns = length(xn); %chiều dài âm cộng nhiễu d = 0.002*ones(1,N); x1 = 10*n+d; w=zeros(1,M); x=zeros(1,M); u=zeros(1,N); %u=x(n)*T(n-1)*x(n)' T=200*eye(M); %T(-1) k=zeros(M,1); %k(n) e=zeros(1,N); %e(n|n-1) e1=e; %bình phương lỗi w1 = zeros(1,Ns-M+1); for n=M:N x=x1(n:-1:n-M+1); %x(n) u(n)=x*T*x'; k=T*x'/(L+u(n)); %tính k(n) e(n)=d(n)-x*w'; %tính e(n|n-1) w=w+k'*e(n); %tính w(n) w1(N-n+1)=w(1); T=(T-x*k*T)/L; %tính T(n) e1(n)=e(n)*e(n); end %tính hệ số sử dụng bộ lọc s = zeros(1,Ns-M+1); GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 9 for n=M:Ns s(n-M+1) = 0; for j=1:M s(n-M+1)= s(n-M+1)+w(j)*xn(n-j+1); end end subplot(2,1,1); % vẽ tín hiệu âm bi nhiễu ban đầu plot(xn); title(tin hieu bi nhieu); subplot(2,1,2); % vẽ tín hiệu lọc được plot(s,'k'); title('ket qua loc nhieu'); wavwrite(s,Fs,nbits,'filter.wav'); wavwrite(5*s,Fs,nbits,'filter5.wav'); Kết quả nhận được: GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 10 Phân tích phổ tần số: clear all clc [xn,Fsy,bitsy] = wavread('signalnoise.wav'); y_single=xn(:,1)'; X=fft(y_single'); Mag=abs(X); f=(0:length(X)-1)*Fsy/length(X); subplot(3,1,1); plot(f,Mag) xlabel('f(Hz)'); ylabel('·dB'); title('pho tin hieu bi nhieu'); [n,Fsy,bitsy] = wavread('noise'); n_single=n(:,1)'; X=fft(n_single'); Mag=abs(X); f=(0:length(X)-1)*Fsy/length(X); subplot(3,1,2); plot(f,Mag,'r'); xlabel('f(Hz)'); ylabel('dB'); title('pho nhieu '); [s,Fsy,bitsy] = wavread('filter'); s_single=s(:,1)'; X=fft(5*s_single'); Mag=abs(X); f=(0:length(X)-1)*Fsy/length(X); subplot(3,1,3); plot(f,Mag) xlabel('(Hz)'); ylabel('dB'); title('pho tin hieu da loc'); GVHD: PGS.TS Hoàng Đình Chiến SV: Lâm Quốc Thịnh MSSV: 40702336 SV:Nguyễn Hồng Thắng MSSV: 40702262 KHỬ NHIỄU KÊNH THOẠI TRÊN DSP ------------------------------------------------------------------------------------------------------------------------------- Page 11 Kết quả phân tích phổ: Nhận xét: - Kết quả thu được từ bộ lọc tốt, nhiễu bị loại bỏ. - Bộ lọc thích nghi rất tốt trong quá trình khử nhiễu.

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

  • pdfkh7917 nhi7877u trn DSP.pdf