CHƯƠNG 4: THỰC HIỆN VÀ ĐÁNH GIÁ CÁC THUẬT TOÁN

Một phần của tài liệu đồ án tốt nghiệp xử lý tiếng nói (Trang 48 - 68)

Dựa vào lý thuyết đã nghiên cứu được, chương này đã xây dựng các lưu đồ thuật toán và thực hiện các thuật toán giảm nhiễu mô phỏng bằng Matlab, sau đó đánh giá các kết quả thu được chủ yếu bằng phương pháp đánh giá Objective Measure

1.23 Quy trình thực hiện và đánh giá thuật toán

Hình 4.1. Sơ đồ thực hiện và đánh giá thuật toán tăng cường

Xây dựng thuật toán : dựa trên các cơ sở toán học, các phép biến đổi trong miền thời gian và tần số đối với xử lý tín hiệu số để xây dựng nên các thuật toán xử lý nhiễu trong tiếng nói.

Triển khai trên Matlab: từ thuật toán đã xây dựng được, thực viết mã nguồn bằng ngôn ngữ lập trình và sử dụng các công cụ trên Matlab tạo nên chương trình thực hiện xử lý nhiễu trong tiếng nói trên nền Matlab.

Xây dựng các thuật toán

Triển khai thuật toán trên Matlab

Thực hiện xử lý tiếng nói bằng các thuật toán giảm nhiễu Thực hiện các thuật toán đánh giá dựa trên các kết quả đạt được

sau khi xử lý Nhận xét đánh giá

Thực hiện xử lý tiếng nói bằng các thuật toán: thực hiện xử lý triệt nhiễu trong các file âm thanh bị nhiễu bằng chương trình đã xây dựng ở trên.

Thực hiện các phương pháp đánh giá dựa trên các kết quả đạt được sau khi xử lý : sau khi các file âm thanh bị nhiễu với các mức độ và loại nhiễu khác nhau đã được xử lý triệt nhiễu, cùng với các file âm thanh sạch tương ứng, ta sử dụng các phương pháp đánh giá của Speech enhancement để thực kiểm tra, đánh giá tính hiệu của thuật toán.

Nhận xét đánh giá: từ các kết quả sau khi thực hiện các phương pháp đánh giá đã có ở trên, đưa ra các kết luận đánh giá : thuật toán nào thích hợp cho loại nhiễu nào, với mức độ bao nhiêu, thuật toán nào có khả xử lý nhiễu tốt hơn trong mọi trường hợp.

1.24 Lưu đồ thuật toán Spectral Subtraction

Hình 4.2 Lưu đồ thuật toán SS

Tính lại mức nhiễu N

End

I=I+1;nhập frame tiếp theo Begin

Phân chia Frame tín hiệu đầu vào

Tinh cong suat nhieu trung binh N ban đầu

I=0;Nhập frame đầu tiên

VAD

X(:,i)=Beta*Y(:,i)

D=YS(:,i)-N; % Thực hiện trừ phổ

X(:,i)=max(D,0);

Y=biến đổi FFT cho các frame

X = X = Đ = X = S Đ SpeechFlag==0? S I<number of frame

Thực hiên IFFT và nối các frame

1.25 Lưu đồ thuật toán Wiener Filtering

Hình 4.3 Lưu đồ thuật toán WF

Tính lại mức nhiễu trung bình N

End (adsbygoogle = window.adsbygoogle || []).push({});

I=I+1;nhập frame tiếp theo Begin

Phân chia Frame tín hiệu đầu vào

Tinh cong suat nhieu trung bình N ban đầu

SpeechFlag==0?

I=0;Nhập frame đầu tiên

VAD

Tính Priori SNR

Y=biến đổi FFT cho các frame

Tính Gain Function G X(:,i)=G.*Y(:,i);tin hiệu sạch S X = X = Đ S Đ Đ I<number of frame

Thực hiên IFFT và nối các frame X

1.26 Thực hiện thuật toán

Chúng ta thực hiện xử lý các file âm thanh bị nhiễu, với 2 loại nhiễu đó là nhiễu do tiếng xe hơi và nhiễu do người nói xung quanh tương ứng với SNR =10dB

Dạng sóng và phổ của tín hiệu sạch:

Hình 4.4 dạng sóng và spectrogram của tín hiệu sạch

Dạng sóng và spectrogram của tín hiệu bị nhiễu xe hơi với SNR = 10dB

- Trước khi xử lý nhiễu:

Hình 4.5 Dạng sóng và phổ của tín hiệu bị nhiễu xe hơi với SNR = 10dB

Hình 4.6 Dạng sóng và spectrogram của tín hiệu sau khi xử lý nhiễu xe hơi

bằng SS với SNR = 10dB.

- Sau khi xử lý bằng thuật toán Wiener filtering

Hình 4.7 Dạng sóng và spectrogram của tín hiệu sau khi xử lý nhiễu xe hơi

bằng WF với SNR = 10dB.

Nhận xét sơ bộ

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.

1.27 Đánh giá chất lượng tiếng nói đã được xử lý 1.27.1 Cơ sở dữ liệu cho việc đánh giá

Là 30 câu thoại được ghi âm trong phòng thí nghiệm theo chuẩn của IEEE [32] là tín hiệu thoại sạch. Mỗi câu trung bình khoảng 2s. Nội dung các câu đều có sự cân bằng về mặt ngữ âm nên có thể thấy được sự tác động của thuật toán lên tất cả các âm vị có thể có trong tín hiệu thoại

Các tín hiệu thoại đó sau đó được cộng nhiễu vào ( gồm có loại nhiễu có trong thế giới thực, với các tỷ số SNR khác nhau. Như vậy ta đã có sẵn tín hiệu sạch và tín hiệu bị nhiễu theo chuẩn chung.

Hai loại nhiễu được dùng là: nhiễu xe hơi (car noise) được dùng làm dữ liệu chính để xử lý và đánh giá, và nhiễu do những người nói xung quanh (babble noise) để kiểm tra tác động của thuật toán trong môi trường nhiễu khác, với các SNR 0dB, 5dB, 10dB, 15dB. (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi tăng chất lượng tiếng nói từ các tín hiệu tiếng nói bị nhiễu bằng các thuật toán đã nghiên cứu là SS và WF, có được tín hiệu tiếng nói đã được tăng cường. Như vậy ta có được cơ sở dữ liệu cho việc đánh giá chất lượng của tín hiệu tiếng nói sau khi đã được tăng cường.

1.27.2 Tổng quan về quy trình đánh giá

Để đánh giá chất lượng tiếng nói sau khi đã xử lý sử dụng cả hai phương pháp đánh giá dựa trên chất lượng do người nghe cảm nhận được (SE) và đánh giá dựa trên các phép đo thuộc tính của tín hiệu (OE). Trong đồ án này phương pháp đánh giá chính được dùng là OE, SE được dùng làm phương pháp đánh giá bổ sung và được thực hiện bởi các thành viên trong nhóm thực hiện .

Do đặc tính của các thuật toán giảm nhiễu được sử dụng trong đề tài là có các thống số ảnh hưởng đến cách thức xử lý nếu chỉnh các thông số này ta sẽ có các kết quả khác nhau có thể tốt, có thể xấu đối với một file âm thanh. Để có thể có các thông số tốt nhất và có các nhận xét về tính ổn định, thuật toán tốt hay xấu ta phải thực hiện quá trình tinh chỉnh thông số để được các kết quả khác nhau từ đó so sánh và đưa ra các thông số tối ưu nhất có thể. Quá trình này là thực hiện đánh giá thuật toán.

Hình 4.8 Quy trình thực hiện đánh giá

1.27.3 Kiểm tra độ tin cậy của các phương pháp đánh giá

Các đánh giá OE được dùng là : SNRseg, IS, LLR, WSS.

Kiểm tra độ ổn định của các phương pháp đánh giá trên bằng cách so sánh tín hiệu tiếng nói bị nhiễu xe hơi và nhiễu người nói xung quanh chưa được xử lý với tín hiệu sạch

Các thuật toán giảm nhiễu

Nhận xét

Đánh giá SE Đánh giá OE

Chỉnh sửa các thông số của thuật toán giảm nhiễu

Tiếng nói đã đợc giảm nhiễu Tín hiệu sạch

Hình 4.10. Đồ thị kiểm tra độ ổn định của đánh giá OE đối với nhiễu

người nói xung quanh

Kết quả kiểm tra cho thấy

 Đối với đánh giá SNRseg đồ thị đi lên theo chiều tăng dần của SNR

 Đối với đánh giá LLR, IS và WSS thì đồ thị có hướng đi xuống và variance cũng giảm dần theo chiều tăng dần của SNR chứng tỏ phổ của tín hiệu có SNR cao gần với phổ tín hiệu sạch hơn

Qua kiểm tra thấy được các phương pháp đánh giá trên đều ổn định và đủ tin cậy để thực hiện đánh giá đối với các tín hiệu tiếng nói đã qua xử lý.

1.27.4 Thực hiện đánh giá

Trong quá trình nghiên cứu và triển khai thuật toán ta nhận thấy các thông số sau ảnh hưởng lớn đến thuật toán:

- NoiseMargin :là ngưỡng để nhận biết nhiễu trong VAD .Mặc định của thuật toán Noise margin sẽ là 3db.

- IS :hệ số chỉ thời gian không có tiếng nói đầu tiên trong mỗi file âm thanh được dùng để tính toán nhiễu ban đầu. Do khi kiểm tra những đoạn im lặng

ban đầu trong các file sạch ta nhận thấy rằng đối với từng file thì từ 0.15s đến 0.2s là những đoạn im lặng.Ta lựa giá trị IS là 0.2

- Đối với thuật toán WF thì ta có thêm hệ số alpha là hệ số làm trơn trong phương pháp ước lượng tỉ số Priori SNR.

-Đối với thuật toán SS thì có hệ số Gramma là hệ số quyết định nhiễu sẽ được trừ theo biên độ hay năng lượng. Ta chọn giá trị Gramma là 1 tức là thuật toán Subtraction sẽ trừ nhiễu theo biên độ.

1.27.4.1 Đánh giá thuật toán với các hệ số dự đoán ban đầu

Hệ số IS=0.2, NoiseMargin=3

Đánh giá OE

Sau khi thực hiện thuật toán SS và WF với các thông số alpha=0.9, gamma=1, NoiseMargin=3,IS=0.2 ta có đồ thị của đánh giá bằng SNR, LLR, IS, WSS như sau (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.11 Đồ thị đánh giá Objective với hệ số IS=0.2, NoiseMargin=3

Theo đồ thị ta có các nhận xét như sau :

Đối với thông số đánh giá SNR cho ta thấy tỉ số SNR đã có tăng hơn so với file chưa xử lý. Chứng tỏ thuật toán đã loại trừ môt phần nhiểu ra khỏi file sạch. Nhưng đối với so sánh IS, LLR, WSS thì ta lại thấy file chưa xử lý lại có kết quả

file đã xử lý và file sạch rồi tính giá trị trung bình nên ta có thể dự đoán là năng lượng của file đã xử lý lệch rất nhiều với file sạch có thể do thuật toán tồi hoặc là năng lượng tín hiệu sạch bị nén một phần .

Đánh giá SE

Sau khi kiểm tra các file đầu ra bằng phương pháp nghe thử ta có các nhận xét sau đây: Một số file đầu ra của các thuật toán SS và WF có mức độ nén nhiễu khác cao dẫn tới việc mất một phần tiếng nói.

Kết luận và tối ưu các thông số cho thuật toán VAD

Qua các nhận xét về đánh giá OE và SE ta rút ra kết luận như sau:

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 được dùng trong đề tài : giữ cứng giá trị IS( đoạn im lặng) để cài đặt nhiễu là không phù hợp cho tất cả mọi file âm thanh.

Đố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ỏ do khác 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. Đó 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.15s, hệ số NoiseMargin là 2.

Hệ số IS=0.15 ,hệ số NoiseMargin=2

Đánh giá OE

Sau khi thuật hiện lại thuật toán SS và WF với hệ số IS=0.15,hệ số NoiseMargin=2 ta có đồ thị đánh giá IS, SNR, WSS, LLS như sau :

Hình 4.12 Đồ thị đánh giá Objective với hệ số IS=0.15, NoiseMargin=2.

Ta nhận thấy thông số SNR tương tự như trường hợp IS = 0.2 và NoiseMargin=2. Nhưng ta các giá trị LLR và IS của so sánh tín hiệu đã xử lý bằng SS và WF đã giảm, trong đó giá trị IS đã giảm đáng kể.Đặc biệt với thuật toán SS giá trị IS đã xuống dưới ngưỡng của file nhiễu. Điều đó chứng tỏ các thông số này thật sự tốt. Nhưng các giá trị IS còn rât lớn đối với thuật toán WF và các mức SNR 0dB và 10dB và các giá trị IS của thuật toán Wiener vẫn còn nằm trên giá trị IS của file chưa xử lý và file sạch.

Đánh giá SE

Sau khi nghe thử các file đầu ra của thuật toán SS và thuật toán WF. Ta nhận thấy thuật toán SS thật sự làm viêc tốt đã hạ được mức nhiễu của các file âm thanh. Nhưng đối với thuật toán WF mặc dù đã hạ được mức nhiễu của các file âm thanh nhưng một số file vẫn bị mất tiếng nói điều đó chứng tỏ hệ số của thuật toán WF chưa tốt.

Kết luận

Kết hợp giữa nhận xét trong OE và SE ta có kết luận là với hệ số IS=0.15 và NoiseMargin=2 thì thuật toán VAD làm việc thật sự tối ưu cho nhiễu xe hơi.

1.27.4.2 Tối ưu hệ số alpha cho thuật toán WF

Ta đánh giá hệ số alpha cho thuật toán WF qua các trường hợp hệ số alpha=0.5, 0.8,0.9 với IS=0.15 và NoiseMargin = 2 để chọn ra trường hợp tốt nhất.

Đánh giá objective

Hình 4.14 Đồ thị đánh giá objective với hệ số alpha=0.5, 0.8,0.9 với

IS=0.15 và NoiseMargin = 2

Qua đồ thị SNR ta nhận thấy hệ số alpha càng lớn thì mức nhiễu bị nén càng lớn (tỉ số SNR lớn). Qua đồ thị IS ta thấy hệ số alpha càng nhỏ thì tác động vào file tỉ số SNR càng lớn càng tốt. Giá trị alpha=0.9 tác động vào file có SNR=10 dB cho ra file output có khoảng cách phổ xa hơn so với file sạch và file nhiễu. Còn lại các giá trị alpha khác và alpha=0.9 với các mức file nhiễu có tỉ số SNR khác đều cho ra kết quả tốt hơn so với file sạch và file nhiễu.Và hệ số alpha bằng 0.5 có vẻ rất tốt trên đồ thị is đặc biêt là với file nhiễu có tỉ số SNR=15dB tác động rất ổn định (variant nhỏ).

Qua việc kiểm tra subjective ta nhận thấy với hệ số alpha=0.5 tác động rất ổn định và tốt với file nhiễu có mức SNR=15dB cho ra file rất sạch. Nhưng với các mức dB khác thì ko tốt bằng so với các hệ số alpha khác, nhiễu còn tương đối nhiều.Đối với hệ số alpha là 0.9 thì với mức file nhiễu có SNR=10dB tác động không tốt, một số file cả tín hiệu sạch cũng bị nén.

Kết luận

Qua các nhận xét về đánh giá SE và OE ta rút ra kết luận là hệ số alpha=0.8 là hệ số tối ưu nhất cho tất cả các trường hợp có thể nó nén nhiễu không nhiều bằng hệ số alpha nhưng không nén luôn tín hiệu sạch, bảo đảm tín hiệu vẫn còn nghe tốt, nhiễu bị hạ xuống tương đối nhiều. (adsbygoogle = window.adsbygoogle || []).push({});

Ta có thêm nhận xét về cách đánh giá OE là không phải lúc nào cũng hoàn toàn chính xác như đối với hệ số alpha=0.5 trên đồ thị IS nó là tốt nhất nhưng với việc kiểm tra bằng SE thì nó chỉ tốt nhất trong trường hợp 15dB hay đối với đồ thị SNR thì hệ số alpha tốt nhất nhưng có một số trường hợp tín hiệu sạch đã bị nén luôn.

1.27.4.3 Hệ số gamma cho thuật toán SS

Vì thuật toán SS là thuật toán trừ nhiễu nên ta có 2 cách trừ nhiễu là trừ theo năng lượng và trừ theo biên độ nên ta cung cấp hệ số gamma nếu gamma=1 thì trừ theo biên độ gamma =2 thì trừ theo năng lượng. Sau đây ta sẽ đánh giá và tìm ra cách trừ nào là tốt nhất( gamma=1 hay 2).

Hình 4.15 Đồ thị đánh giá objective với hệ số gamma = 1 và gamma = 2.

Ta nhận thấy đối với cả thông số SNR và IS thì hệ số gamma=2 tức là trừ

Một phần của tài liệu đồ án tốt nghiệp xử lý tiếng nói (Trang 48 - 68)