Một hệ thống sẽ ghi âm âm thanh nhịp thở và gửi về server xử lý dữ liệu. Dữ liệu được thu âm là cả một đoạn âm thanh rất dài. Một mẫu âm thanh khi đưa vào xử lý sẽ có thời lượng là 4 giây. Đoạn âm thanh dài được cắt ra thành các mẫu 4 giây nhỏ, các mẫu liên tiếp chồng lên nhau 2 giây. Việc lấy chồng lần này có tác dụng gia tăng dữ liệu cũng như quá trình tách mẫu âm thanh 4 giây thành các frame nhỏ, có khắc phục việc mất mát và gián đoạn thông tin ở các dữ liệu nằm phía biên.
Dữ liệu được thu âm là cả một đoạn âm thanh rất dài. Như đã đề cập ở phần trước, một mẫu âm thanh khi đưa vào xử lý sẽ có thời lượng là 4 giây. Đoạn âm thanh dài được cắt ra thành các mẫu 4 giây nhỏ, các mẫu liên tiếp chồng lên nhau 2 giây. Việc lấy chồng lần này có tác dụng gia tăng dữ liệu cũng như quá trình tách mẫu âm thanh 4 giây thành các frame nhỏ, có khắc phục việc mất mát và gián đoạn thông tin ở các dữ liệu nằm phía biên.
Tiếp đến, là chúng ta sẽ làm nhiệm vụ lọc và xử lý nhiễu trong tín hiệu âm thanh nhịp thở thu được. Đây là một nhiệm vụ rất quan trọng để đảm bảo được độ chính xác tốt trong bài toán nhận dạng nhịp thở. Có rất nhiều phương pháp lọc nhiễu tín hiệu âm thanh nhịp thở như: bộ lọc thích nghi Recurrsive Least Squares, bộ lọc thích nghi Least Mean Squares, bộ lọc Kalman, bộ lọc RNNoise [25], … Sau khi thực nghiệm thì học viên nhận thấy bộ lọc RNNoise là một bộ lọc mới xuất hiện những năm gần đây và cho kết quả lọc tốt nhất trong các bộ lọc mà học viên nêu ra. Chính vì vậy, phần xử lý nhiễu nhiễu thì học viên xin trình bày về bộ lọc RNNoise trong luận văn này.
26
Bộ lọc RNNoise [25] được đề xuất từ năm 2018 bởi Tiến sĩ Jean Marc Valin để xử lý nhiễu âm thanh. Bản chất bộ lọc RNNoise đơn giản là một mô hình học sâu RNN kết hợp với một số hàm tiền xử lý để lọc nhiễu âm thanh. Để tối ưu được mô hình RNNoise phụ thuộc vào data nhiễu và data không nhiễu (data clean). Hình sau biểu diễn quy trình xử lý của bộ lọc RNNoise.
Hình 2-1: Quy trình xử lý của bộ lọc RNNoise
Cụ thể, quá trình xử lý của bộ lọc RNNoise được thể hiện trong hình 2-1 sẽ được trình sau như sau:
- Bước 1. Overlapped window: Ở bước này, học viên thực hiện tách dữ liệu âm thanh ra thành các đoạn cửa sổ (windows) dữ liệu âm thanh nhỏ hơn với độ dài 4 giây và độ trùng nhau 50% (nghĩa là 2 đoạn dữ liệu gần nhau sẽ trùng nhau 2 giây). Mỗi đoạn window được định nghĩa như sau:
𝑤(𝑛) = 𝑠𝑖𝑛 [𝜋 2𝑠𝑖𝑛
2(𝜋𝑛
𝑁)]
trong đó, N là độ dài của window
- Bước 2. FFT: Bước này học viên sử dụng biến đổi Fourier nhanh (FFT). Biến đổi Fourier là một phương tiện ánh xạ tín hiệu trong miền thời gian hoặc không gian vào phổ của nó trong miền tần số. Các miền thời gian và tần số chỉ là các cách biểu diễn tín hiệu khác nhau và biến đổi Fourier là
27
mối quan hệ toán học giữa hai biểu diễn. Biến đổi Fourier rời rạc (DFT) là một biến đổi giống như biến đổi Fourier được sử dụng với các tín hiệu số hóa. Như tên cho thấy, đây là phiên bản rời rạc của FT xem cả miền thời gian và miền tần số là định kỳ. Biến đổi Fourier nhanh (FFT) chỉ là một thuật toán để tính toán nhanh và hiệu quả của DFT.
- Bước 3. Pitch analysis: Trong bước này, học viên sẽ phân tích cao độ của dữ liệu âm thanh nhịp thở dựa trên phát hiện tín hiệu âm thanh.
- Bước 4. Feature extraction: Học viên sẽ thực hiện trích xuất đặc trưng từ FFT dựa trên một DCT trong phổ tín hiệu và cao độ (pitch), kết quả sẽ nhận được 42 đặc trưng Bark-frequency cepstral coefficients (BFCC).
- Bước 5. Pitch filtering: Nhược điểm chính của việc sử dụng các dải bắt nguồn từ tần số Bark để tính toán độ lợi là chúng ta không thể mô hình hóa các chi tiết tốt hơn trong phổ. Trong thực tế, điều này ngăn chặn sự triệt tiêu tiếng ồn giữa các sóng hài cao độ. Thay vào đó, chúng ta có thể sử dụng bộ lọc lược ở khoảng thời gian cao độ để loại bỏ tiếng ồn liên hài theo cách tương tự như cách hoạt động của bộ lọc hậu âm thanh coded [26]. Kết hợp kết quả từ Bước 2 và Bước 3, chúng ta sẽ sử dụng bộ lọc lược vào.
- Bước 5. RNN: Ở bước này sẽ áp dụng mô hình học sâu RNN để huấn luyện dựa trên dữ liệu từ Bước 4.
- Bước 6. Band gain interpolation: Thực hiện tăng nội suy các dải để tập hợp số liệu rời rạc và cần thiết để xác định các tín hiệu âm thanh không nhiễu.
- Bước 7. X: Kết hợp kết quả lọc nhiễu từ bước 6 và bước 5.
- Bước 8. IFFT: Biến đổi IFFT là biến đổi Fourier nghịch đảo nhanh, nghĩa là biến đổi từ miền tần số thành miền thời gian hoặc không gian.
- Bước 9. Window Overlab-add: Thực hiện gộp các đoạn window thành một dữ liệu âm thanh tổng thể (ngược lại của Bước 1). Và cuối cùng, ta nhận được một dữ liệu âm thanh đã được lọc nhiễu.
28
Bởi bộ lọc RNNoise đã được ứng dụng trong xử lý nhiễu tín hiệu âm thanh, nên việc sử dụng một thư viện lập trình có sẵn của bộ lọc RNNoise là điều phù hợp. Trong quá trình tìm hiểu, luận văn nhận thấy bộ thư viện mã nguồn mở của tác giả Jean-Marc Valin [27] là phù hợp để sử dụng trong lọc tín hiệu nhiễu âm thanh.
Do mô hình RNNoise của tác giả sẵn có không phù hợp nên học viên đã thực hiện xây dựng mô hình RNNoise với dữ liệu âm thanh nhịp thở như thể hiện trong hình 2-2. Học viên tạo một bộ dữ liệu bao gồm hai dạng dữ liệu: âm thanh nhịp thở có nhiễu và âm thanh nhịp thở không nhiễu. Sau khi có được dữ liệu, học viên thực hiện huấn luyện mô hình RNNoise để thực hiện lọc nhiễu âm thanh nhịp thở. Kết quả, mô hình RNNoise đã đạt được kết quả tốt trong quá trình lọc nhiễu âm thanh nhịp thở.
Hình 2-2: Áp dụng bộ lọc RNNoise
Dữ liệu đầu vào của mô hình bộ lọc RNNoise trong luận văn được sử dụng từ hai nguồn, có thể là các file dữ liệu âm thanh wav hoặc dữ liệu thời gian thực thu được trực tiếp từ Micro âm thanh. Điểm chung của hai nguồn dữ liệu này là đều có thể kết xuất là dữ liệu âm thanh dạng mảng số thực một chiều.
Đầu vào của mô hình RNNoise là một ma trận dữ liệu, trong trường hợp của luận văn thì chính là mảng một chiều gồm n phần tử tương ứng với n mẫu dữ liệu được trích chọn. Đầu ra là một mảng một chiều với độ dài tương ứng với đầu vào và đã được xử lý tín hiệu nhiễu âm thanh.
29
Kết quả đầu ra của bộ lọc RNNoise được xử lý theo hai hướng: hướng đầu tiên là mảng dữ liệu một chiều được đem đi xử lý ngay trong việc theo dõi nhịp thở thời gian thực, hướng còn lại là kết xuất dữ liệu thành dạng file csv để phục vụ training cũng như predict nhãn dữ liệu trong đánh giá tỉ lệ chính xác của thuật toán nhận dạng.