F0 trên miền tần số xử lý tín hiệu số
Báo cáo bài tập lớn môn học Xử lý tín hiệu số, tháng 11/2018 TÌM TẦN SỐ CƠ BẢN CỦA TÍN HIỆU TRÊN MIỀN THỜI GIAN DÙNG HÀM Bảng phân chia nhiệm vụ Chữ ký sinh viên Đọc tài liệu, cài đặt thuật toán, viết báo về
tính tần số cơ bản trên miền tần số. Nhóm 2, lớp HP: 1022470.1810.16.15 2 ĐẶT VẤN ĐỀ ............................................................................................................................................................ 3 II. CƠ SỞ LÝ THUYẾT XỬ LÝ TÍN HIỆU TIẾNG NÓI VÀ CÁC THUẬT TOÁN TÍNH TẦN SỐ CƠ BẢN .. 3 2. A. Hàm tự tương quan để
tính tần số cơ bản trên miền thời gian ...................................................................... 11 Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 3 ĐẶT VẤN ĐỀ Xử lý tiếng nói từ khi xuất hiện đã có một vai trò rất quan trọng trong
cuộc sống của chúng ta. Cùng với sự phát tần số. Lọc trung vị (median smoothing) được sử dụng để làm trơn kết quả F 0 thu được. 𝑁−1 rxx(l) = ∑𝑛=0 (𝑥(𝑛)𝑥(𝑛 − 𝑙)) Với N là độ rộng của cửa sổ, l là độ trễ được tính tại thời điểm n. Hình 1. Tín hiệu và hàm tự tương quan của nó. Nhóm 2, lớp HP: 1022470.1810.16.15 4 chu kỳ cơ bản của tín hiệu. Khi đó các tần số cơ bản là tần số xuất hiện của các cực đại đó. Tính chất này khiến hàm tự Hình 2. Sơ đồ khối hàm tự tương quan. phổ. Để xử lí vấn đề này, ta sẽ sử dụng cửa sổ Hamming cho phép lấy cửa sổ nhằm hạn chế tối đa khả năng rò phổ so Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 5 Biến đổi Fourier rời rạc cho phép tính phiên bản tần số rời rạc của biển đổi Fourier của tín hiệu rời
rạc 𝑘2𝜋 − (với ω = Một số tính chất của phép biến đổi Fourier rời rạc bao gồm tính tuần hoàn, tuyến tính và tính chập. Tính chất tuyến tính { x1(n) ↔ X1[k] 𝐷𝐹𝑇 => a1x1(n) + a2x2(n)↔ a1X1[k] + a2X2[k] [10]. x2(n) ↔ X2[k] Tính chập { x1(n) ↔ X1[k] 𝐷𝐹𝑇 => x(n) = x1(n) ⨂ x2(n)↔ X[k] = X1[k].X2[k] [10]. x2(n) ↔ X2[k] X[k] =∑𝑛 𝑙ẻ x(n)e− + ∑𝑛 𝑐ℎẵ𝑛 x(n)e− jk2πn 𝑁 −1 2 jk4πm N 𝑁 −1 jk4πm 2 e = Xe[k] +e Bằng thuật toán FFT, cần log2N phép nhân phức thay cho (N−1)2 phép nhân phức và Nlog2N phép cộng phức thay vì N(N − 1). Do đó, tính trực tiếp từ định nghĩa DFT (*) đòi hỏi O(N 2) phép tính, FFT sẽ giúp tính cùng kết quả Hình 3. Phổ của tín hiệu không tuần hoàn. Nhóm 2, lớp HP: 1022470.1810.16.15 6 Hình 4. Phổ của tín hiệu tuần hoàn. Hình 5. Kết quả tính tần số cơ bản của tín hiệu nguyên âm /u/ trên miền tần số. Hình 6. Sơ đồ khối tìm tần số cơ bản F0 trên miền tần số. Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 7 Cú pháp Y = fft(X,N) với X là tín hiệu vào (trên miền thời gian rời rạc) và N là số điểm trong phép biến đổi Hình 7. Ví dụ về một tín hiệu trước khi dùng lọc trung vị.[11] ML(ax1[n] + bx2[n]) ≠ a.ML(x1[n]) + b.ML(x2[n]). Nhóm 2, lớp HP: 1022470.1810.16.15 8 Số trung vị là số nằm chính giữa trong một tập hợp dãy số (n phần tử) đã được sắp xếp theo thứ tự tăng dần. [7] tín hiệu một chiều. Cú pháp của hàm là MedSmoothing(x,N). Với x là tín hiệu đầu vào sau khi tính F 0 bằng hàm tự 100 truoc khi loc 50 x X: 1 X: -2 0 X: 2 X: -1 Y: -50 -4 -3 -2 -1 0 1 2 3 4 5 n Hình 8. Tín hiệu trước và sau khi đi qua lọc trung vị n = 0. Từ ví dụ trên, có thể thấy rằng tác dụng của lọc trung vị là lọc những điểm có biên độ bất thường của tín hiệu, Lọc với N = 3 Lọc với N = 5 Lọc với N = 7 /a/ F0 mean =
137,0845 Hz F0 mean = 137,4475 Hz F0 mean = 136,4816 Hz F0 mean = 136,0219 Hz /e/ F0 mean = 139,2630 Hz F0 mean = 139,2078 Hz F0 mean = 138,4337 Hz F0 mean = 138,3254 Hz /i/ F0 mean = 135,8407 Hz F0 mean = 136,0345 Hz F0 mean = 136,1413 Hz F0 mean = 134,3279 Hz /o/ F0 mean = 137,4709 Hz F0 RMSE = 7,6768 Hz F0 mean = 137,5110 Hz F0 mean = 136,3764 Hz F0 mean = 135,5654 Hz Tín hiệu Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng /u/ F0 mean =
136,5642 Hz F0 mean = 137,8570 Hz 9 Xét các kết quả tần số cơ bản của từng nguyên âm cơ bản /a/, /e/, /i/, /o/ và /u/ trước khi lọc (sau khi được tính Lọc với N = 3 Lọc với N = 5 Lọc với N = 7 /a/ F0 mean = 136,6013 Hz F0 mean = 135,7841 Hz F0 mean = 135,4958 Hz F0 mean = 135,1112 Hz /e/ F0 mean = 140,6999 Hz F0 mean = 140,6999 Hz F0 mean = 140,2105 Hz F0 mean = 140,2105 Hz /i/ F0
mean = 144,6762 Hz F0 mean = 137,8723 Hz F0 mean = 136,6480 Hz F0 mean = 136,1526 Hz /o/ F0 mean = 137,6587 Hz F0 mean = 137,5626 Hz F0 mean = 136,6493 Hz F0 mean = 136,2167 Hz /u/ F0 mean = 144,4927 Hz F0 mean =
143.8198 F0 mean = 143,2692 Hz F0 mean = 142,9022 Hz Tín hiệu Nếu bậc N của lọc trung vị thấp (N = 3) thì tín hiệu vẫn không thay đổi nhiều, vẫn còn nhiều điểm bất thường ở được sử dụng để lọc. Bậc
nào có lệch chuẩn càng thấp thì càng nên dùng bậc đó. Nhóm 2, lớp HP: 1022470.1810.16.15 10 bản trong miền tín hiệu tuần hoàn. Chính vì các đặc điểm trên luôn luôn biến đổi nên giả định trong hầu hết các tránh việc mất mát tín hiệu. Hình 9. Tín hiệu hình sin ngẫu nhiên khi nhân với mẫu cửa sổ hình chữ nhật qua phép phân tích FFT. Hình 10. Tín hiệu hình sin ngẫu nhiên khi nhân với mẫu cửa sổ hamming qua phép phân tích FFT. Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 11 rạc), làm cho nó xuất hiện như thể dạng sóng với w(n) =1. Một cửa sổ hình chữ nhật không thay đổi phân đoạn tín 0,54 − 0,46𝑐𝑜𝑠( ) 𝑛ế𝑢 0 ≤ 𝑛 ≤ 𝑁 − 1 CÀI ĐẶT THUẬT TOÁN A. Hàm tự tương quan để tính tần số cơ bản trên miền thời gian amplitude = 0.04 12 Nhóm 2, lớp HP: 1022470.1810.16.15 B. Phép biến đổi Fourier nhanh để tính tần số cơ bản trên miền tần số %For overlapping frame if z_b<400 && z_b>80 yyy_F0(i) = (z_a+z_b)/2;%Final result is the mean of 2 F0 i=i+1; %Put the result into the yyy_F0 and increase the index. end end end end C. Lọc trung vị để làm trơn kết quả thu được function y = MedSmoothing(x,N) %y tin hieu sau khi loc, x la tin hieu truoc khi loc, N la bac can loc y = x; %khoi tao gia tri tin hieu y temp = 1:N; % tao truc thoi gian tin hieu cua so co chieu dai N for k = 1:length(x) % k chay tu 1 den chieu dai cua tin hieu x for i = 1:N %i chay tu 1 den N if(k < ceil(N/2)) %xet gia tri tin hieu cua so temp ben trai tin hieu x if(i < ceil(N/2)-k+1) % i < phan tu giua cua temp temp(i) = 0; else temp(i) = x(k+i-ceil(N/2)); % i > phan tu giua cua temp end else %xet gia tri tin hieu cua so ben phai tin hieu temp if(k > length(x) - ceil(N/2) + 1) %i < phan tu giua cua temp if(i < length(x) + ceil(N/2) - k + 1) temp(i) = x(k-ceil(N/2) + i); else temp(i) = 0; %i > phan tu giua cua temp end else %xet tin hieu temp chay o giua x. temp(i) = x(k-ceil(N/2)+i); Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 13 end IV. KẾT QUẢ THỰC NGHIỆM A. Dữ liệu mẫu Hình 11. Tín hiệu đầu vào là 5 nguyên âm. 14 Nhóm 2, lớp HP: 1022470.1810.16.15 Hình 12.
Trường hợp tín hiệu cho kết quả tính F0 chính xác nhất. Hình 13. Trường hợp tín hiệu cho kết quả tính F0 trung bình. Hình 14. Trường hợp tín hiệu cho kết quả tính F0 kém chính xác nhất. Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 15 Hình 14 mô tả ví dụ về trường hợp cho kết quả tính F0 kém chính xác nhất sau khi đi qua lọc trung vị của tín Hình 15. Trường hợp kết quả tính F0 của tín hiệu nguyên âm /a/ có nhiễu đáng kể. Hình 16. Trường hợp kết quả tính F0 của tín hiệu nguyên âm /a/ có nhiễu không đáng kể. Trước khi lọc Lọc với N = 3 Lọc với N = 5 Lọc với N = 7 /a/ F0 mean = 136,6013 Hz F0 mean = 135,7841 Hz F0 mean = 135,4958 Hz F0 mean = 135,1112 Hz /e/ F0 mean = 140,6999 Hz F0 mean = 140,6999 Hz F0 mean = 140,2105 Hz F0 mean = 140,2105 Hz /o/ F0 mean = 137,4709 Hz F0 RMSE = 7,6768 Hz F0
mean = 137,5110 Hz F0 mean = 136,3764 Hz F0 mean = 135,5654 Hz Nhóm 2, lớp HP: 1022470.1810.16.15 16 Dựa vào bảng 3, ta có thể thấy khi lọc chuỗi F0 của tín hiệu /a/ và /i/ với bậc N = 7 thì kết quả sẽ mịn hơn, giảm Hình 17. Chọn cửa sổ chữ nhật. Hình 18. Chọn cửa sổ Hamming. Đối với việc tính F0 trên miền tần số, một trong những yếu tố quan trọng quyết định độ chính xác của thuật toán đó là việc lựa chọn số điểm DFT. Nếu ta chọn số điểm nhỏ thì độ chia nhỏ nhất (ĐCNN) của các tần số trên phổ của tín hiệu sẽ lớn làm cho phổ của tín hiệu không rõ dẫn đến việc xác định tần số cơ bản cũng không chính xác cao. Ngược lại, nếu chọn số điểm FFT lớn thì độ chia nhỏ nhất của tần số trên phổ của tín hiệu sẽ nhỏ làm cho phổ tín hiệu rõ hơn, dẫn đến việc xác định tần số cơ bản chính xác hơn. Tuy nhiên nếu chọn số điểm FFT quá lớn thì sẽ tốn nhiều tài nguyên của máy tính (thời gian và bộ nhớ). Nên việc lựa chọn số điểm FFT thích hợp cũng là một trong những yếu tố quyết quan trọng quyết định độ chính xác của thuật toán tính F0 trên miền tần số. Nếu lấy số điểm FFT là 211 = 2048 thì ĐCNN của tần số là 44100 Hz/2048 = 21,5332 Hz. Nếu lấy số điểm FFT là 215 = 32768 thì ĐCNN của tần số là 44100 Hz/32768 = 1,3458 Hz. Nếu lấy số điểm FFT là 217 = 131077 thì ĐCNN của tần số là 44100 Hz/131077 = 0,3364 Hz. Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 17 Từ đó ta thấy số điểm lấy FFT phù hợp là 215 = 32768, tức là độ chia nhỏ nhất trên miền tần số là 1,3458 Hz, đủ Hình 19. Đồ thị tương quan của một khung tín hiệu nguyên âm /a/. Bảng 4. Kết quả F0 đo được bằng các cách khác nhau. Tần số cơ bản F0 (Hz) Tín hiệu Đo thủ công Hàm tự tương quan Phép biến đổi Fourier nhanh /a/ 138,1492 136,0219 135,1112 /e/ 144,5861 138,3254 140,2105 /i/ 140,1293 136,1413 136,1526 /o/ 139,6827 137,5110 136,2167 /u/ 147,9374 137,8562 142,9022 Trung bình 142,0969 137,1712 138,1186 Dựa vào bảng 4, ta có thể thấy kết quả trung bình tần số cơ bản của 5 nguyên âm khi tính bằng hàm tự tương có thể tính được trên miền thời gian dùng hàm tự tương quan và trên miền tần số dùng phép biến đổi Fourier nhanh. Tuy nhiên, để biết được thuật toán nào chính xác hơn thì ta cần phải thực nghiệm trên nhiều loại tín hiệu hơn và giá trị chuẩn chính xác hơn. Sai số toàn phương (RMSE) của thuật toán có công thức sau: 1 RMSE = √ ∑𝑛𝑖=1(𝑌 − 𝑌𝑖 )2 Với Y là giá trị F0 tính được bằng cách đo thủ công, Yi là giá trị F0 tính được trong mỗi frame. Nhóm 2, lớp HP: 1022470.1810.16.15 18 Sai số toàn phương (RMSE) (Hz) Hàm tự tương quan Phép biến đổi Fourier nhanh /a/ 5,0766 5,8212 /e/ 9,6934 7,3312 /i/ 6,2293 5,0869 /o/ 3,9514 4,8207 /u/ 15,7316 6,5979 Trung bình 8,1365 5,9316 Dựa vào bảng 5, ta thấy độ sai số toàn phương của hàm tự tương quan lớn hơn của phép biến đổi Fourier nhanh. Tuy nhiên vì giá trị chuẩn được tính bằng thủ công nên độ chính xác không tuyệt đối nên không thể kết luận độ chính xác của mỗi thuật toán thông qua sai số toàn phương (RMSE). Nhìn chung, mỗi thuật toán tính tần số cơ bản trên miền thời gian và trên miền tần số sẽ có những ưu điểm và nhược điểm khác nhau. Dùng hàm tự tương quan để tính tần số cơ bản trên miền thời gian có thể áp dụng được cho nhiều loại tín hiệu, kể cả tín hiệu có chất lượng thấp hoặc có nhiễu đáng kể. Bên cạnh đó, hàm tự tương quan còn là cơ sở cho các phương pháp phân tích phổ và việc cài đặt hàm tự tương quan khá đơn giản giúp tiết kiệm tài nguyên máy tính. Tuy nhiên, hàm tự tương quan có một số bất lợi đáng kể là khó điều chỉnh các tham số của thuật toán (như khoảng cách tối thiểu của hai cực đại) một cách chính xác. Khoảng cách giữa các cực đại ảnh hưởng bởi thành tố của âm tiết, do đó tính chu kỳ của tín hiệu cũng bị ảnh hưởng, dẫn đến sai sót trong tính toán. Việc tính tần số cơ bản trong trên miền tần số bằng phép FFT thì sẽ chính xác hơn với trường hợp lấy điểm DFT lớn, đồng nghĩa với việc các đỉnh trên phổ dày đặc hơn cũng như ít rò phổ hơn, nhưng lại tốn tài nguyên máy tính nhiều hơn. Ngược lại, nếu lấy điểm DFT nhỏ thì độ chính xác giảm đi đáng kể do mật độ của các đỉnh thưa thớt [9]. V. KẾT LUẬN Bài báo này thực hiện việc cài đặt thuật toán tìm tần số cơ bản của tín hiệu tiếng nói trên miền thời gian dùng NHỮNG ĐIỀU ĐÃ HỌC ĐƯỢC Thông qua việc thực hiện bài báo cáo này, sinh viên đã học thêm được nhiều bài học cũng như tích lũy thêm TÀI LIỆU THAM KHẢO [1] Tần số âm cơ bản. Retrieved from link:
https://vi.wikipedia.org/wiki/Tần_số_âm_cơ_bản May 27, 2004. Retrieved from link: Nguyễn Trần Hậu, Đặng Xuân Lộc, Nguyễn Thái Minh, Nguyễn Hữu Hoàng Hưng 19 [6] Tom Bäckström, “Fundamental Frequency Modelling and Estimation Speech Processing”, Aalto
University, 2Dc |