Tải bản đầy đủ (.doc) (6 trang)

BÁO CÁO LAB MÔN HỌC XỬ LÝ TIẾNG NÓI

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 (413.09 KB, 6 trang )

Báo cáo Lab môn h?c X? lý ti?ng nói

BÁO CÁO LAB MÔN HỌC
XỬ LÝ TIẾNG NÓI
1. Nguyên lý và lưu đồ thuật toán
1.1. Nguyên lý

Tín hi?u 
b? nhi?u

Phân tích tín hi?u 
thành các frame

Hàm x? lý gi?m 
nhi?u

FFT

IDFT

Overlap và 
adding

Tín hi?u 
s?ch

? ?c l??ng 
nhi?u

1.1.1. Trừ phổ
a. Trừ phổ biên độ


- Mô hình tín hiệu:

Yi (ω ) = Si (ω ) + N i (ω )
jθ ( ω )
= Yi (ω ) e y ,i

- Ước lượng của phổ tín hiệu sạch:

[ Y (ω ) − µˆ (ω )] e

Sˆi (ω ) =


= 1 −

 

- Chỉnh lưu bán sóng :

jθ y ,i (ω )

i

µˆ (ω ) 
Yi (ω )
Yi (ω ) 
 

Gi (ω )


Gi (ω ) ⇐ max(0, Gi (ω ))
⇔ Sˆi (ω ) = max(0, Yi (ω ) − µˆ (ω ))

µˆ (ω ) =

Với:

1
M

∑ Y (ω )

i
M noise -only frames

b. Trừ phổ công suất 
- Mô hình tín hiệu:

2

Yi (ω ) = S i (ω ) + N i (ω )

{

E Si (ω )

2

2


} = E{Y (ω ) } − E{ N (ω ) }
2

i

2

i

1


Báo cáo Lab môn h?c X? lý ti?ng nói

- Ước lượng của phổ tín hiệu sạch:

{

E Si (ω )

2

} = E{Y (ω ) } − E{ N (ω ) }
 E { N (ω ) } 
= E { Y (ω ) }1 −

 E { Y (ω ) } 
= E { Y (ω ) } G (ω )
2


2

i

i

2

2

i

i

2

i

2

2

i

i

- Chỉnh lưu bán sóng:

(


2

2
Sˆi (ω ) = max 0, Yi (ω ) − µˆ (ω ) 2

)

1.1.2 Wiener Filter
- Mục đính: Tìm một bộ lọc tuyến tính Gi(ω) để MSE là nhỏ nhất.

Gi (ω ) =

P (ω )
E { S i (ω ).Yi (ω )}
= sy ,i
E{Yi (ω ).Yi (ω )}
Pyy ,i (ω )

2


Sˆi (ω )










E  S i (ω ) − Gi (ω ).Yi (ω ) 





<- cross-correlation in i-th frame
<- auto-correlation in i-th frame

Giả sử tín hiệu tín hiệu s[k] và n[k] không có sự tương quan với nhau thì:

Gi (ω ) =

Pss ,i (ω )
Pyy ,i (ω )

=

2

Pyy ,i (ω ) − Pnn ,i (ω )

=

Pyy ,i (ω )

Yˆi (ω ) − µˆ (ω ) 2
Yˆi (ω )


2

µˆ (ω ) 2
= 1−
2
Yˆ (ω )
i

Trường hợp tổng quát:

{
{

} 
} 

  E N (ω) 2
2
i
Gi (ω) = 1 −
  E Yi (ω) 2
 

β

α


β α



1
 = 1 −


γ i (ω) 



Với:
- α=β=1: Trừ phổ công suất
- α=2, β=0.5: Trừ phổ biên độ
- α=2, β=1: Wiener Filter

2


Báo cáo Lab môn h?c X? lý ti?ng nói

1.2 Thuật toán
1.2.1 Thuật toán trừ phổ
BEGI
N
Phân chia tín hi?u đ?u vào thành các 
segment, s? d?ng c?a s? Hamming
Bi?n đ?i FFT t?ng segment (Y/2)
Tính pha và biên đ? t?ng segment 
Kh?i t?o nhi?u (N)
(trung bình công su?t nhi?u ban đ?u)
Gán nhi?u d? NRM=0

Gán tín hi?u ra X=0
H? s? nén Beta=0.03
Tính biên đ? trung bình (YS)
V?i khung đ?u tiên i=0
Tr? ph? D=YS(:,i)­N
VAD
SpeechFlag=0?
Đ

S

D
S

Đ

C?p nh?t nhi?u N và NRM

D= min c?a 3 m?u thu?c 3 
segment k? nhau (có tr? nhi?u)

Nén tín hi?u X(:,i)=Beta*Y(:,i)

Tín hi?u ra X(:,i)=max(D,0);

V?i khung ti?p theo i=i+1
Đ

I

S
Khôi ph?c tín hi?u đ?y đ?
Th?c hiên IFFT và n?i các frame

3
END


Báo cáo Lab môn h?c X? lý ti?ng nói

1.2.2 Thuật toán Wiener
BEGI
N
Phân chia tín hi?u đ?u vào thành các
segment, s? d?ng c?a s? Hamming
Bi?n đ?i FFT t?ng segment (Y/2)
Tính pha và biên đ? t?ng segment 
Kh?i t?o nhi?u (N, LambdaD)
Alpha=0.99
Gán đ? l?i G=1
Gán tín hi?u ra X=0
SNRpost=Gamma=1
V?i khung đ?u tiên i=0

VAD
(B? qua nh?ng khung đ?u)
SpeechFlag=0?

Đ


S

C?p nh?t nhi?u N và LambdaD

Tính l?i SNRpost
Tính SNRpri theo SNRpost
Tính đ? l?i G=SNRpri/(1+SNRpri)
Tín hi?u ra X(:,i)=G.*Y(:,i)
V?i khung ti?p theo i=i+1
Đ

IS
Khôi ph?c tín hi?u đ?y đ?
Th?c hiên IFFT và n?i các frame

4


Báo cáo Lab môn h?c X? lý ti?ng nói

END

2. Kiểm tra thuật toán và đánh giá
Khi các  tham s? Beta=0.3; Gamma=1; IS=0.25s; SP=40%; NoiseMargin=3dB; 
Hangover=8; v?i c?a s? Hamming.
-

Thuật toán trừ phổ


No.

Samples

L1

L2

L3

Average

CRC

1
2
3
4
5

Clean
SC5
SC15
SB5
SB15

0
2
0
-1

-2

0
2
-1
-1
-2

0
1
-1
-1
-1

0
1,67
-0.67
-1
-1,67

About the same
Worse
Slightly better
Slightly better
Better

-

Thuật toán Wiener


No.

Samples

L1

L2

L3

Average

CRC

1
2
3
4
5

Clean
SC5
SC15
SB5
SB15

-1
2
1
2

1

1
3
1
2
1

0
2
1
2
1

0
2,33
1
2
1

About the same
Much worse
Slightly worse
Worse
Slightly worse

Table CCR (Comparison Category Rate)
-3
-2
-1

0
Much
better

Better

Slightly
better

About
the same

1

2

3

Slightly
worse

Worse

Much
worse

Nhận xét:
- Sử dụng cửa số Hamming là tối ưu, so với các cửa sổ khác.
- IS = (0.1 s - 0.3s), kết quả ngõ ra không thay đổi nhiều.
- SP = (0.4 s - 0.6s), kết quả ngõ ra không thay đổi nhiều.

- Gamma = 1 (trừ phổ biên độ), chọn Gamma=2 (trừ phổ công suất) thì ngõ ra bị nhiễu
tác động lớn
- Beta = 0.01, triệt được nhiễu hai đầu tín hiệu nhưng tín hiệu bị méo, với giá trị là
0.05 thì tín hiệu khá tốt. Với giá trị 0.03 thì kết quả tốt nhất.
- Noiselength = (3 – 10), kết quả ngõ ra không thay đổi nhiều.
- NoiseMargin:
=1dB, tín hiệu ngõ ra gần giống với tín hiệu sạch nhưng vẫn còn nhiễu.
=2dB, đoạn cuối của tín hiệu ngõ ra bị nhiễu lớn.
5


Báo cáo Lab môn h?c X? lý ti?ng nói

=3dB, triệt được nhiễu hai đầu nhưng tín hiệu vẫn còn nhiễu.
=5dB, một số đoạn tín hiệu bị mất.
- Hangover:
= 4 or 6, giảm nhiễu đáng kể.
= 1 or 2, giảm nhiễu nhưng một số đoạn tín hiệu ra bị nén xuống (nghe nhỏ
hơn).
- Đối với thuật toán Wiener, ngoài các thông số SP, IS, NoiseLength, NoiseMargin,
Hangover, cửa số Hamming giống như phương pháp trừ phổ, còn có thêm thông số alpha
là hệ số làm trơn trong phương pháp ước lượng tỉ số SNRpri, Alpha thường chọn 0,99.
Tóm lại ta thấy tín hiệu ngõ ra của bộ lọc nhạy nhất với thông số NoiseMargin. Cả
hai thuật toán đều có tính hiệu quả giống nhau đối với nhiễu ở mức SNR thấp, nhưng đối
với môi trường có SNR cao hơn thì thuật toán Wiener xử lý triệt nhiễu tốt hơn.

6




×