1. Tổng quan về nâng cao chất lượng tiếng nói: Tiếng nói đóng vai trò rất quan trọng trong thông tin liên lạc. Quá trình truyền tín hiệu tiếng nói được truyền đi qua các phương tiện thông tin bị các loại nhiễu tác động nên chất lượng bị suy giảm. Vì vậy, các thuật toán Speech Enhancement và các kĩ thuật làm giảm nhiễu được ra đời. Trong bài Lab này ta sẽ đi nghiên cứu 2 thuật toán ước lượng phổ để khử nhiễu kinh điển là Spectral Subtraction 1 và Wiener Filter 2. Việc ước lượng phổ nhiễu đòi hỏi một thuật toán VAD ( Voice Activity Detection ) để tìm khoảng thời gian không có tiếng nói hoạt động. Ta sẽ đi phân tích từng phần theo sự phát triển của các thuật toán và đánh giá kết quả mà các thuật toán mang lại. 1.1. Phân tích tín hiệu có nhiễu thành các segmentframe : Tín hiệu có nhiễu được chia ra thành nhiều Segment ( hay Frame ) có chiều dài bằng 25 ms với độ dịch là 40% của Window trên suốt chiều dài tín hiệu. Cửa sổ có thể chọn Rectangle, Hanning, Hamming, Blackman … Việc chọn loại cửa sổ sẽ ảnh hưởng tới việc khôi phục tín hiệu đã tăng cường sau này. Ở đây, cửa sổ được lựa chọn là Hamming. Do Hamming là cửa sổ phi tuyến nên khi thực hiện biến đổi FFT thì vô tình đã làm suy giảm tín hiệu , vì thế yêu cầu đặt ra là các Segment phải sắp xếp chồng lên nhau theo 1 tỉ lệ dịch (SP) thích hợp , vùng xếp chồng giữa 2 Segment liên tục gọi là “overlap
SPEECH ENHENCEMENT ALGORITHMS FINAL PROJECT JUN-2012, DUT ELECTRONICS AND TELECOMMUNICATION ENGINEERING DIGITAL SIGNAL PROCESSING MAIN REPORT Author Hoàng Minh Thảo langtu2790@gmail.com 1 Tổng quan nâng cao chất lượng tiếng nói: Tiếng nói đóng vai trò quan trọng thơng tin liên lạc Q trình truyền tín hiệu tiếng nói truyền qua phương tiện thơng tin bị loại nhiễu tác động nên chất lượng bị suy giảm Vì vậy, thuật tốn Speech Enhancement kĩ thuật làm giảm nhiễu đời Trong Lab ta nghiên cứu thuật toán ước lượng phổ để khử nhiễu kinh điển Spectral Subtraction [1] Wiener Filter [2] Việc ước lượng phổ nhiễu đòi hỏi thuật tốn VAD ( Voice Activity Detection ) để tìm khoảng thời gian khơng có tiếng nói hoạt động Ta phân tích phần theo phát triển thuật toán đánh giá kết mà thuật toán mang lại 1.1 Phân tích tín hiệu có nhiễu thành segment/frame : Tín hiệu có nhiễu chia thành nhiều Segment ( hay Frame ) có chiều dài 25 ms với độ dịch 40% Window suốt chiều dài tín hiệu Cửa sổ chọn Rectangle, Hanning, Hamming, Blackman … Việc chọn loại cửa sổ ảnh hưởng tới việc khơi phục tín hiệu tăng cường sau Ở đây, cửa sổ lựa chọn Hamming Do Hamming cửa sổ phi tuyến nên thực biến đổi FFT vơ tình làm suy giảm tín hiệu , u cầu đặt Segment phải xếp chồng lên theo tỉ lệ dịch (SP) thích hợp , vùng xếp chồng Segment liên tục gọi “overlap” Minh họa trình Segmenting cửa sổ rectwin y(n) : tín hiệu có nhiễu cộng vào SP : shift percentage W : Window Length o : số mẫu vùng overlap ( o = fix(W*(1-SP)) ) L :≜ Noisy Signal Length Số Segment tính dựa vào cơng thức sau: Number of noisy signal Segments = (LengthSignal - WindowLength)/(Shift Percentage* WindowLength) + (1) Dấu ▪ để lấy giá trị nguyên nhỏ gần kết Khi tín hiệu phân tích thành Segment liên tục, Segment, tín hiệu biến đổi chậm xem tĩnh ( trạng thái dừng ) Khi thuật tốn xử lý triệt nhiễu tín hiệu thực cách hiệu Cách phân tích tín hiệu sử dụng nhân với hàm cửa sổ , vector Segment có kích thước WindowLength sau phân tích lưu vào cột ma trận, ma trận Segment có kích thước WindowLength x NumberOfSegments Thuật tốn phân đoạn tín hiệu: Segment Window,signal > Vector coä t #SP samples: #SP = [ W * SP ] #Segments: N = [ (L-W)/ (#SP)+ ] [.] : lấy phần nguyê n Copy [1:W] > M1 = [(1:W);(1:W); ;(1:W)]NxW Copy [1:(N-1)]' > M2 = #SP *[(0:N-1)',(0:N-1)', ,(0:N-1)']NxW Copy [1:W] > hw = [(1:W)',(1:W)', ,(1:W)']WxN Tính ma trậ n Index IndexWxN =( M1 + M2 )' Tính ma trận segment Seg = signal(Index).*hw End Matlab Code: function Seg=segment(signal,W,SP,Window) % % % % % % % % % SEGMENT chops a signal to overlapping windowed segments A= SEGMENT(X,W,SP,WIN) returns a matrix which its columns are segmented and windowed frames of the input one dimentional signal, X W is the number of samples per window, default value W=256 SP is the shift percentage, default value SP=0.4 WIN is the window that is multiplied by each segment and its length should be W the default window is hamming window 06-Sep-04 Esfandiar Zavarehei if nargin