BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG --- oOo --- BÁO CÁO LAB XỬ LÝ TIẾNG NÓI ĐỀ TÀI NÂNG CAO CHẤT LƯỢNG TIẾNG NÓI Giáo viên hướng dẫn : TS. PHẠM VĂN Học viên thực hiện : KS. NGUYỄN TẤN PHONG KS. CHÂU VĂN THÀNH KS. VÕ THỊ CẨM NHUNG KS. TRẦN XUÂN PHƯƠNG Lớp : Cao học Kỹ thuật điện tử Khóa học : 02-2009 Báo cáo: Lab xử lý tiếng nói Đà nẵng, tháng 12/2009 Nâng cao chất lượng tiếng nói liên quan đến việc cải thiện cảm nhận đối với tiếng nói bị suy giảm chất lượng do sự có mặt của nhiễu trong tiếng nói. Mục đích của nâng cao chất lượng tiếng nói là sự cải thiện chất lượng và tính dễ nghe của tiếng nói đã bị suy giảm do nhiễu. Các thuật toán nâng cao chất lượng tiếng nói làm giảm và nén nhiễu nền đến một mức độ nào đó và nó được xem như là các thuật toán nén nhiễu. Ở đây xét 2 thuật toán cải thiện tiếng nói là: trừ phổ và Wiener Filter. 1. Nguyên lý và lưu đồ thuật toán Phân tích tín hiệu thành các frame FFT Hàm xử lý giảm nhiễu IDFT Overlap và Ước lượng nhiễu Ước lượng, cập nhật nhiễu nhiễu FFT |.|γ Y(ω) + Pha của tín hiệu IFFT Trừ phổ là thuật toán dựa trên một nguyên tắc cơ bản, thừa nhận sự có mặt của nhiễu, nó có thể đạt được mục đích ước lượng phổ của tiếng nói sạch bằng cách trừ đi phổ của nhiễu với phổ của tiếng nói đã bị nhiễu. Phổ của nhiễu có thể được ước lượng, cập nhật trong nhiều chu kỳ khi không có mặt của tín hiệu. Sự thừa nhận đó chỉ được thực hiện đối với nhiễu không đổi hoặc biến đổi chậm, và khi đó phổ của nhiễu sẽ không thay đổi đáng kể giữa các khoảng thời gian cập nhật. Việc tăng cường tín hiệu đạt được bằng cách tính IDFT (biến đổi Fourier rời rạc ngược) của phổ tín hiệu đã được ước lượng có sử dụng pha của tín hiệu có nhiễu. Thuật toán này là một phép tính ước lượng đơn giản vì nó chỉ gồm biến đổi DFT thuận và DFT ngược. Với quá trình xử lý hiệu đơn giản này, nếu không được thực hiện một cách cẩn thận thì tiếng nói sau xử lý sẽ bị méo. Nếu như việc lấy hiệu quá lớn thì có thể loại bỏ đi một phần thông tin của tiếng nói, còn nếu việc thực hiện lấy hiệu đó nhỏ thì nhiễu sẽ vẫn còn được giữ lại trong tín hiệu. Giả thiết rằng y[n] là tín hiệu vào đã bị nhiễu, nó bằng tổng của tín hiệu sạch x[n] và tín hiệu nhiễu d[n] (ở đây ta xét trong một cửa sổ): y[n] = x[n] + d[n] Nhóm 3 – CHKTĐT 02-2009 Báo cáo: Lab xử lý tiếng nói Thực hiện biến đổi Fourier rời rạc cả 2 vế, ta được: Chúng ta có thể biểu diễn Y(ω ) dưới dạng phức như sau: Y (ω) = X (ω) + D(ω) Y = Y e ( ) | ( )| ω ω là pha của tín hiệu đã bị nhiễu. y j D = D e φ ω ω ω d ( ) | ( )| j φ ω ( ) y )| là biên độ phổ, và φ (ω) Phổ của tín hiệu nhiễu D(ω ) có thể được biểu diễn dạng biên độ và pha: Biên độ phổ của nhiễu |D(ω )| không xác định được, nhưng có thể thay thế bằng giá trị trung bình của nó được tính trong khi không có tiếng nói (tiếng nói bị dừng), và pha của tín hiệu nhiễu có thể thay thế bằng pha của tín hiệu bị nhiễu φ (ω) ảnh hưởng đến tính dễ nghe của tiếng nói, có thể ảnh hưởng đến chất lượng của tiếng nói là làm thay đổi pha của tiếng nói nhưng cũng chỉ vài độ. Khi đó chúng ta có thể ước lượng được phổ của tín hiệu sạch: ( ) ∧ ∧ ( ) [| ( )| | ( )|] φ ω X Y D e ω ω ω ( ) j y = − D | là biên độ phổ ước lượng của nhiễu được tính trong khi không có tiếng nói để chỉ rằng giá trị đó là giá trị ước tính gần đúng. Tín hiệu tiếng nói được tăng cường có thể đạt được bằng cách rất đơn giản là biến đổi IDFT của (ω) Cần chú ý rằng biên độ phổ của tín hiệu đã được tăng cường là | X(ω)|=|Y(ω)| − | D(ω)| có thể bị âm do sự sai sót trong việc ước lượng phổ của nhiễu. Tuy nhiên, biên độ của phổ thì không thể âm, nên chúng cần phải đảm bảo rằng khi thực trừ hai phổ thì phổ của tín hiệu tăng cường |X(ω )| luôn luôn không âm. Giải pháp được đưa ra để khắc phục điều này là chỉnh lưu bán sóng hiệu của phổ, nếu thành phần phổ nào mà âm thì chúng ta sẽ Y D Y D X ( ) ( ) | ( )| , | ( )| | ( )| ω ω ω ω ω = 0 , ^ ^ − > ≠ Phương pháp xử lý bằng chỉnh lưu bán sóng là một trong những cách để đảm bảo cho | Thuật toán trừ phổ đối với phổ biên độ có thể được mở rộng sang miền phổ công suất. Vì trong một vài trường hợp, nó có thể làm việc tốt với phổ công suất hơn là với phổ biên độ. Lấy phổ công suất của tín hiệu bị nhiễu trong một khoảng ngắn, chúng ta bình phương 2 2 2 ( ) ( ) ( ) ( ). ( ) ( ) ( ) Y X D X D X D ω ω ω ω ω ω ω * * ∗ D và X (ω).D(ω) 2}, E{ X( = + + + ( ) ( ) 2.Re{ ( ) ( )} 2 2 X D X D = + + ω ω ω ω ∗ ω ∗ D } và E{ X (ω).D(ω) ). (ω) 2} được ước lượng khi không có tiếng nói hoạt động và được | * không thể tính được một cách trực tiếp và xấp xỉ ∗ }, khi đó E[.] là toán tử kỳ vọng. Bình thường thì E{| D(ω) Nhóm 3 – CHKTĐT 02-2009 Báo cáo: Lab xử lý tiếng nói . Nếu chúng ta thừa nhận d[n] = 0 và không có một sự tương quan nào với tín hiệu sạch x[n], thì E{ X( công suất của tín hiệu sạch có thể tính được như sau ω ). (ω) ^ | X (ω)| =|Y(ω)| − | D(ω)| ∧ ∗ D } và E{ X (ω).D(ω) 2 2 ∗ ^ 2 Công thức trên biểu diễn thuật toán trừ phổ công suất. Như công thức trên, thì phổ công suất được ước lượng 2 thể sử dụng phương pháp chỉnh lưu bán sóng như đã trình bày ở trên. Tín hiệu được tăng cường sẽ thu được bằng cách tính IDFT của | (ω)| ), có sử dụng pha của tín hiệu tiếng nói bị nhiễu. | (ω)| X không được đảm bảo luôn là một số dương, nhưng có ∧ X (bằng cách lấy căn bậc hai của ^ | X (ω)| = H (ω)|Y(ω)| ( ) 1 H = − ω 2 2 2 ^ | ( )| D | ( )| Y ω 2 ω 2
Trang 1ĐẠI HỌC ĐÀ NẴNG
oOo
-BÁO CÁO LAB
XỬ LÝ TIẾNG NÓI
ĐỀ TÀI
NÂNG CAO CHẤT LƯỢNG TIẾNG NÓI
Giáo viên hướng dẫn : TS PHẠM VĂN TUẤN Học viên thực hiện : KS NGUYỄN TẤN PHONG
KS CHÂU VĂN THÀNH
KS VÕ THỊ CẨM NHUNG
KS TRẦN XUÂN PHƯƠNG
Trang 2Đà nẵng, tháng 12/2009
Nâng cao chất lượng tiếng nói liên quan đến việc cải thiện cảm nhận đối với tiếng nói
bị suy giảm chất lượng do sự có mặt của nhiễu trong tiếng nói Mục đích của nâng cao chất lượng tiếng nói là sự cải thiện chất lượng và tính dễ nghe của tiếng nói đã bị suy giảm do nhiễu Các thuật toán nâng cao chất lượng tiếng nói làm giảm và nén nhiễu nền đến một mức độ nào đó và nó được xem như là các thuật toán nén nhiễu
Ở đây xét 2 thuật toán cải thiện tiếng nói là: trừ phổ và Wiener Filter
1 Nguyên lý và lưu đồ thuật toán
1.1 Sơ đồ chung
1.1.1 Trừ phổ
Trừ phổ là thuật toán dựa trên một nguyên tắc cơ bản, thừa nhận sự có mặt của nhiễu,
nó có thể đạt được mục đích ước lượng phổ của tiếng nói sạch bằng cách trừ đi phổ của nhiễu với phổ của tiếng nói đã bị nhiễu Phổ của nhiễu có thể được ước lượng, cập nhật trong nhiều chu kỳ khi không có mặt của tín hiệu Sự thừa nhận đó chỉ được thực hiện đối với nhiễu không đổi hoặc biến đổi chậm, và khi đó phổ của nhiễu sẽ không thay đổi đáng
kể giữa các khoảng thời gian cập nhật Việc tăng cường tín hiệu đạt được bằng cách tính IDFT (biến đổi Fourier rời rạc ngược) của phổ tín hiệu đã được ước lượng có sử dụng pha của tín hiệu có nhiễu Thuật toán này là một phép tính ước lượng đơn giản vì nó chỉ gồm biến đổi DFT thuận và DFT ngược
Với quá trình xử lý hiệu đơn giản này, nếu không được thực hiện một cách cẩn thận thì tiếng nói sau xử lý sẽ bị méo Nếu như việc lấy hiệu quá lớn thì có thể loại bỏ đi một phần thông tin của tiếng nói, còn nếu việc thực hiện lấy hiệu đó nhỏ thì nhiễu sẽ vẫn còn được giữ lại trong tín hiệu
a Trừ phổ biên độ
Giả thiết rằng y[n] là tín hiệu vào đã bị nhiễu, nó bằng tổng của tín hiệu sạch x[n] và
Phân tích tín hiệu thành các frame FFT
Ước lượng nhiễu
Hàm xử lý giảm nhiễu
Tín hiệu
Overlap và adding Tín hiệu
sạch
Tín hiệu bị
Ước lượng, cập nhật nhiễu
Pha của tín hiệu
|.|1/
IFFT
Tín hiệu sau khi
tăng cường
+
Y()
- |)(|^D
Trang 3tín hiệu nhiễu d[n] (ở đây ta xét trong một cửa sổ):
y[n] = x[n] + d[n]
Thực hiện biến đổi Fourier rời rạc cả 2 vế, ta được:
) ( ) ( )
Chúng ta có thể biểu diễn Y() dưới dạng phức như sau:
) (
| ) (
| )
e Y
Khi đó |Y()| là biên độ phổ, và y( )là pha của tín hiệu đã bị nhiễu
Phổ của tín hiệu nhiễu D( ) có thể được biểu diễn dạng biên độ và pha:
) (
| ) (
| )
D
Biên độ phổ của nhiễu |D( )| không xác định được, nhưng có thể thay thế bằng giá trị trung bình của nó được tính trong khi không có tiếng nói (tiếng nói bị dừng), và pha của tín hiệu nhiễu có thể thay thế bằng pha của tín hiệu bị nhiễu y( ), vấn đề này không ảnh hưởng đến tính dễ nghe của tiếng nói, có thể ảnh hưởng đến chất lượng của tiếng nói là làm thay đổi pha của tiếng nói nhưng cũng chỉ vài độ
Khi đó chúng ta có thể ước lượng được phổ của tín hiệu sạch:
) (
|]
) (
|
| ) ( [|
)
ở đây |D ( )| là biên độ phổ ước lượng của nhiễu được tính trong khi không có tiếng nói hoạt động Ký hiệu ""để chỉ rằng giá trị đó là giá trị ước tính gần đúng Tín hiệu tiếng nói được tăng cường có thể đạt được bằng cách rất đơn giản là biến đổi IDFT của X ( ) Cần chú ý rằng biên độ phổ của tín hiệu đã được tăng cường là
| ) (
|
| ) (
|
|
)
(
|X Y D , có thể bị âm do sự sai sót trong việc ước lượng phổ của nhiễu Tuy nhiên, biên độ của phổ thì không thể âm, nên chúng cần phải đảm bảo rằng khi thực trừ hai phổ thì phổ của tín hiệu tăng cường |X()| luôn luôn không âm Giải pháp được đưa ra để khắc phục điều này là chỉnh lưu bán sóng hiệu của phổ, nếu thành phần phổ nào
mà âm thì chúng ta sẽ gán nó bằng 0:
, 0
|) (
| (
|
|) (
| ) )
^
^
Y D Y D X
Phương pháp xử lý bằng chỉnh lưu bán sóng là một trong những cách để đảm bảo cho
|X( )| không bị âm
b Trừ phổ công suất
Thuật toán trừ phổ đối với phổ biên độ có thể được mở rộng sang miền phổ công suất
Vì trong một vài trường hợp, nó có thể làm việc tốt với phổ công suất hơn là với phổ biên
độ Lấy phổ công suất của tín hiệu bị nhiễu trong một khoảng ngắn, chúng ta bình phương
|Y( )|, ta được:
( ) ( ) Re
2 ) ( )
(
) ( ) ( ) ( ) ( )
( )
( )
(
* 2
2
*
* 2
2 2
D X D
X
D X
D X
D X
Y
|D( )|2, X().D ()và X ( ).D( ) không thể tính được một cách trực tiếp và xấp xỉ bằng E{|D( )|2}, E{ X( ).D()} và E{X ( ).D( )}, khi đó E[.] là toán tử kỳ vọng Bình thường thì E{|D( )|2} được ước lượng khi không có tiếng nói hoạt động và được biểu thị là |D ( )|2 Nếu chúng ta thừa nhận d[n] = 0 và không có một sự tương quan nào với tín hiệu sạch x[n], thì E{ X( ).D ()} và E{X ( ).D( )
} xem là 0 Khi
đó phổ công suất của tín hiệu sạch có thể tính được như sau
2
^ 2 2
^
|) (
|
|) (
|
|) (
| X Y D
Trang 4Công thức trên biểu diễn thuật toán trừ phổ công suất Như công thức trên, thì phổ công suất được ước lượng |X ( ) | 2 không được đảm bảo luôn là một số dương, nhưng có thể sử dụng phương pháp chỉnh lưu bán sóng như đã trình bày ở trên Tín hiệu được tăng cường sẽ thu được bằng cách tính IDFT của | ()|
X (bằng cách lấy căn bậc hai của
|
)
(
| X 2 ), có sử dụng pha của tín hiệu tiếng nói bị nhiễu
Ta có công thức: |X^( |)2H2( |)Y( |)2
Khi đó:
2 2
^
| ) (
|
| ) (
| 1 ) (
Y
D
Trong lý thuyết hệ thống tuyến tính, H( ) là hàm truyền đạt của hệ thống Trong lý thuyết của Speech enhancement, ta xem H( ) là hàm độ lợi hay hàm nén Và H( ) là một số thực và luôn luôn dương, và có giá trị nằm trong phạm vi 0 H( ) 1 Nếu nó có giá trị âm là do có sai sót trong quá trình ước lượng phổ của nhiễu H() được gọi là hàm nén là vì nó cho ta biết tỷ số giữa phổ công suất của tín hiệu được tăng cường với phổ công suất của tín hiệu bị nhiễu Hình dạng của hàm nén là một đặc trưng duy nhất của mỗi thuật toán Speech enhancement
Trường hợp chung thì thuật toán trừ phổ có thể được biểu diễn:
p p
X ( |) | ( |) | ( |)
| ^ ^
Trong đó p là số mũ công suất, với p = 1 là đó là phương pháp trừ phổ biên độ điển hình,
p = 2 là phương pháp trừ phổ công suất.
1.1.2 Wiener Filter
Thuật toán trừ phổ dựa chủ yếu vào trực giác và kinh nghiệm Chính xác hơn thuật toán này được phát triển dựa trên một nhiễu có thật được cộng vào và tín hiệu sạch được ước lượng một cách đơn giản bằng cách trừ đi phổ của nhiễu từ phổ của tín hiệu tiếng nói
có nhiễu Với cách làm này tín hiệu tiếng nói sạch không thể có được bằng cách tối ưu nhất Để khắc phục nhược điểm này ta sử dụng thuật toán Wiener Filtering (WF)
WF là thuật toán được sử dụng rộng rãi trong nâng cao chất lượng tiếng nói Nguồn gốc
cơ bản của thuật toán WF là tạo ra tín hiệu tiếng nói sạch bằng cách nén nhiễu Ước lượng được thực hiện bằng cách hạ thấp sai số bình phương trung bình giữa tín hiệu mong muốn
và tín hiệu ước lượng
Nguyên lý cơ bản
Giả thiết rằng y[n] là tín hiệu vào đã bị nhiễu, nó là tổng của tín hiệu sạch x[n] và tín
Tín hiệu bị
Ước lượng, cập nhật nhiễu
Pha của tín hiệu
|.|1/2
IFFT
Tín hiệu sau khi
tăng cường
) (
Y
Priori SNR
Hàm xử lý giảm nhiễu WF
SNRpri
2
^
|) (
| D
Trang 5hiệu nhiễu d[n] (ở đây ta xét trong một cửa sổ):
y[n]=x[n]+d[n]
Thực hiện biến đổi Fourier rời rạc cả 2 vế,ta được
) ( ) ( )
Chúng ta có thể biểu diễn Y() dưới dạng phức như sau:
) (
| ) (
| )
e Y
Khi đó |Y()| là biên độ phổ, và y( )là pha của tín hiệu đã bị nhiễu
Phổ của tín hiệu nhiễu D( ) có thể được biểu diễn dạng biên độ và pha:
) (
| ) (
| )
D
Biên độ phổ của nhiễu |D( )| không xác định được, nhưng có thể thay thế bằng giá trị trung bình của nó được tính trong khi không có tiếng nói (tiếng nói bị dừng), và pha của tín hiệu nhiễu có thể thay thế bằng pha của tín hiệu bị nhiễu y( ), việc làm này không ảnh hưởng đến tính dễ nghe của tiếng nói, có thể ảnh hưởng đến chất lượng của tiếng nói là làm thay đổi pha của tiếng nói nhưng cũng chỉ vài độ
Ta có thể ước lượng được biên độ của phổ tín hiệu sạch X ( )từ Y( ) bằng một hàm phi tuyến được xác định như sau :
) ( / ) ( )
)
G có thể được áp dụng theo Wiener Filtering:
} ) ( { } ) ( {
} ) ( { )
2
D E X
E
X E G
Đặt Priori SNR và Posteriori SNR như sau:
} ) ( {
} ) ( {
2 2
D E
X E
} ) ( {
} ) ( {
2 2
D E
Y E
Một khó khăn trong các thuật toán nâng cao chất lượng tiếng nói là ta không có tín hiệu trước tín hiệu sạch s[n] nên ta không thể biết phổ của nó Do đó ta không thể tính được SNR pri mà trong các hệ thống nâng cao chất lượng giọng nói thì SNR pri là tham số rất cần thiết để ước lượng tín hiệu sạch Trong các hệ thống nâng cao chất lượng giọng nói có thể ước lượng được SNR pri và SNR post bằng cách cho các thông số thích hợp vào các phương trình sau:
) (
) ( ) ( ,0)
)max(SNR
-(1 )
( SNR
1 ) (
) ( )
( SNR
2 1 1
post prio
2 post
D
Y G
D Y
i i
i
Và chỉ số [.]iđể tín hiệu tại khoảng thời gian đang xử lý
Trong phương trình nếu cho hệ số ta có thể ước lượng được SNR pribằng SNR post
Trong thực tế hệ số =0.98 rất tốt cho các tín hiệu có SNR<4dB
Từ các phương trình trên dễ thấy G() theo WF như sau:
pri
pri
SNR
SNR G
1 ) (
1.2 Thuật toán
1.2.1 Trừ phổ (SS)
Trang 61.2.2 Wiener Filter (WF)
Cập nhật nhiễu N và NRM
Với khung tiếp theo i=i+1
Khởi tạo nhiễu (N) (trung bình công suất nhiễu ban đầu)
Nén tín hiệu X(:,i)=Beta*Y(:,i)
Trừ phổ D=YS(:,i)-N
Tín hiệu ra X(:,i)=max(D,0);
Biến đổi FFT từng segment (Y)
S Đ
SpeechFlag=0?
I<số khung
BEGI N
Phân chia tín hiệu đầu vào thành các
segment, sử dụng cửa sổ Hamming
Tính pha và biên độ từng segment
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
VAD
D<NRM?
D= min của 3 mẫu thuộc 3 segment kề nhau (có trừ nhiễu)
Đ
S
Đ
S
Khôi phục tín hiệu đầy đủ Thực hiên IFFT và nối các frame
END
Tín hiệu ra X(:,i)=G.*Y(:,i)
Khởi tạo nhiễu (N, LambdaD) Biến đổi FFT từng segment (Y)
BEGI N
Phân chia tín hiệu đầu vào thành các
segment, sử dụng cửa sổ Hamming
Tính pha và biên độ từng segment (1/2)
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)
S
Đ
SpeechFlag=0?
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)
Với khung tiếp theo i=i+1
I<số khung
Đ
S
Khôi phục tín hiệu đầy đủ Thực hiên IFFT và nối các frame
END
Trang 72 Kiểm tra thuật toán và đánh giá
Mẫu 1: Tín hiệu với SNR=5dB
Trang 8Mẫu 2: Tín hiệu với SNR=15dB
Với các thông số đầu vào như hình trên, ta có các đánh giá như sau:
Trang 9Much worse Worse Slightly
worse
About the same
Slightly better
Better Much better
Mẫu 1 – SS Mẫu 1 – WF
Mẫu 2 – SS Mẫu 2 – WF
3 Các thông số ảnh hưởng đến thuật toán
3.1 Đối với phương pháp trừ phổ
- SP: Phần trăm dịch của cửa sổ
- IS: Khoảng thời gian không có tín hiệu thoại ban đầu
- Gamma: Bằng 1 là trừ phổ biên độ, 2 là trừ phổ công suất
- Beta: Hệ số nén tín hiệu trong vùng không thoại
- NoiseLength: Hệ số xác định nhiễu (xác định mức độ tin tưởng vào nhiễu ước
lượng quá khứ hay nhiễu hiện tại)
- NoiseMargin: Ngưỡng xác định nhiễu (chọn 2.5dB hoặc 3dB)
- Hangover: Số segment nhiễu sau khi cờ SpeechFlag được reset để xác định vùng
nhiễu
- Loại cửa số: Sử dụng cửa sổ mặc định là Hamming
* 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
- Xác định giá trị IS nằm trong khoảng giá trị từ 0.1 s đến 0.3 s, và với các giá trị này
thì nhận thấy kết quả ngõ ra không thay đổi nhiều
- Thay đổi SP với các giá trị từ 0.4 đến 0.6 thì kết quả không thay đổi nhiều.
- Nếu Gamma = 2 (trừ phổ công suất) thì ngõ ra bị nhiễu tác động lớn Chọn
Gamma=1
- Thay đổi Beta bằng 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 được thay đổi từ 3 đến 10 thì kết quả ngõ ra không thay đổi nhiều.
- NoiseMargin: với giá trị bằng 1dB thì 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 Nếu bằng 2 thì đoạn cuối của tín hiệu ngõ ra bị nhiễu lớn Với giá trị bằng 4 dB thì triệt được nhiễu hai đầu nhưng tín hiệu vẫn còn nhiễu Với giá trị bằng
5 dB thì một số đoạn tín hiệu bị mất
- Hangover: với giá trị bằng 6 hoặc 4 thì giảm nhiễu đáng kể Nếu bằng 1 hoặc 2 thì
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)
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ố là
NoiseMargin.
3.2 Đối với phương pháp Wiener Filter
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
* Nhận xét:
- Sử dụng cửa số Hamming vẫn là lựa chọn tối ưu
- Thay đổi IS với các giá trị từ 0.1 s đến 0.2 s thì nhận được tín hiệu với phần đầu tốt
Trang 10- Thay đổi SP với các giá trị từ 0.2 đến 0.6 thì kết quả không thay đổi nhiều.
- alpha thường chọn 0.99 thì loại bỏ hoàn toàn nhiễu.
- Noiselength được thay đổi từ 3 đến 10 thì kết quả ngõ ra không thay đổi nhiều.
- NoiseMargin: với giá trị bằng 1dB thì công suất của 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 Nếu bằng 2 thì đoạn cuối của tín hiệu ngõ ra bị nhiễu lớn Với giá trị bằng 4 dB thì triệt được nhiễu hai đầu nhưng tín hiệu vẫn còn nhiễu Với giá trị bằng 5 dB thì một số đoạn tín hiệu bị mất Và tín hiệu tốt nhất khi giá trị này bằng 2.5dB hoặc 3dB
- Hangover: với giá trị bằng 6 hoặc 4 thì giảm nhiễu đáng kể Nếu bằng 1 hoặc 2 thì
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)
3.3 Nhận xét chung
Sau khi nghe các file âm thanh của tín hiệu sạch, tín hiệu sau khi xử lý nhiễu, dựa trên dạng sóng và spectrogram của tín hiệu sạch, tín hiệu sau khi xử lý triệt nhiễu bằng 2 thuật toán SS và WF, ta có thể đưa ra một số nhận xét như sau:
Cả hai thuật toán đều có thể xử lý triệt nhiễu tốt hơn ở môi trường có SNR cao hơn,
và xử lý tốt hơn đối với tín hiệu bị nhiễu biến đổi chậm và có phân bố đều
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 thi thuật toán Wiener xử lý triệt nhiễu tốt hơn
Nhìn chung thì thuật toán WF xử lý triệt nhiễu tốt hơn so với SS
Ngoài ra, do thuật toán VAD với các thông số đề ra là IS = 0.2 và NoiseMargin = 3 là không tốt nên một phần âm thanh bị ước lượng là nhiễu nên đã bị thuật toán nén đi dẫn tới việc mất năng lượng của phần âm thanh sạch
Đối với thông số IS ta phải thay đổi như sau : Do đoạn lặng trong file sạch chỉ nằm trong khoảng 0.15s đến 0.2s Nếu ta để 0.2 là quá lớn đối với một số file nên một phần năng lượng tiếng nói trong những file nay sẽ được thuật toán VAD xem là nhiễu vì thế một phần tiếng nói sẽ bị loại bỏ Đó là một hạn chế của thuật toán VAD
Đối với thông số NoiseMargin: Vì ta chọn mức ngưỡng để nhận biết nhiễu là 3dB là khá lớn nên tương tự như giá trị IS với mức ngưỡng như vậy một phần tín hiệu sạch sẽ
bị loại bỏ gần với nhiễu dù IS có tối ưu thế nào đi nữa Qua thực nghiệm ta có hệ số NoiseMargin tối ưu là 2.5 dB Đó là giá trị mà tín hiệu sạch không bị ước lượng là nhiễu
Vậy các giá trị tối ưu cho thuật toán VAD là : hệ số IS phải điều chỉnh lại là 0.15 s, hệ số NoiseMargin là 2.5 dB