Tải bản đầy đủ (.pdf) (13 trang)

Báo cáo Tìm tần số cơ bản tín hiệu tiếng nói sử dụng hàm tự tương quan (9 điểm)

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 (1.11 MB, 13 trang )

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 TIẾNG NÓI
Trần Văn Dƣơng, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc
Nhóm 4, lớp 16TCLC2
Điểm

Bảng phân chia nhiệm vụ
Nguyễn Đức
Hoàng
Trần Văn Dương
(Nhóm trưởng)
Lê Văn Anh
Nguyễn Hoàng
Phúc

Chữ ký của SV

Tìm hiểu và viết báo cáo việc kết hợp với
median smoothing (lọc trung vị) để làm trơn kết
quả tính F0 thu được (Phần II.A, III.A)
Tìm hiểu, cài đặt và viết báo cáo thuật toán tự
động tính F0 trên miền thời gian dùng hàm tự
tương quan (Phần II.B, III. B và IV.A)
Tìm hiểu, cài đặt và viết báo cáo tính F0 trên
miền tần số (Phần II.C, III.C và IV.B)
Khảo sát ảnh hưởng khi dùng hàm cửa sổ và
tính số điểm FFT khi phân tích phổ (Phần II.D,
III.D)

Lời cam đoan: Chúng tôi, gồm các sinh viên có chữ ký ở trên, cam đoan rằng báo cáo này là


do chúng tôi tự viết dựa trên các tài liệu tham khảo ghi rõ trong phần VII. Các số liệu thực nghiệm
và mã nguồn chương trình nếu không chỉ dẫn nguồn tham khảo đều do chúng tôi tự làm. Nếu vi
phạm thì chúng tôi xin chịu trách nhiệm và tuân theo xử lý của giáo viên hướng dẫn.
TÓM TẮT— Tìm tần số cơ bản của tín hiệu là bài toán cần thiết trong xử lý tín hiệu âm
thanh vì nó mang thông tin có ý nghĩa vật lý đặc trưng cho tín hiệu tuần hoàn. Bài báo cá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 và miền tần
số. Để làm trơn đường tần số cơ bản thu được chúng tôi xử dụng thuật toán lọc trung vị .
Từ khóa— tần số cơ bản của tiếng nói, miền tần số, miền thời gian, hàm tự tương quan, lọc
trung vị, phân tích phổ


Nhóm 4, lớp: 16TCLC2

2

Mục lục
I.

ĐẶT VẤN ĐỀ.............................................................................................................................. 3

II.

LÝ THUYẾT XỬ LÍ TÍN HIỆU TIẾNG NÓI VÀ CÁC THUẬT TOÁN ............................. 3

A.

Thuật toán lọc trung vị để làm trơn F0 thu được:.................................................................................. 3
1.

Cơ sở lý thuyết: ................................................................................................................................................ 3


2.

Các tham số của bộ lọc trung vị. ...................................................................................................................... 3

3.

Vấn đề phát sinh: .............................................................................................................................................. 3

B.

Thuật toán tính tần số cơ bản trên miền thời gian sử dụng hàm tự tương quan: ..................... 3

1.

Giới thiệu hàm tự tương quan:.......................................................................................................................... 3

2.

Sơ đồ thuật toán: ............................................................................................................................................... 4

C.

Thuật toán tính tần số cơ bản trên miền tần số: ....................................................................... 5

D. Khảo sát ảnh hưởng khi dùng hàm cửa sổ và tính số điểm FFT khi phân tích phổ: ................ 5
III.

CÀI ĐẶT CÁC THUẬT TOÁN.............................................................................................. 5


A.

Thuật toán lọc trung vị để làm trơn F0 .................................................................................................. 5

B.

Thuật toán tính tần số cơ bản trên miền thời gian sử dụng hàm tự tương quan ................................... 5
1.

Định nghĩa các hàm tự code: ............................................................................................................................ 5

2.

Phần thuật toán chính (Main.m): ...................................................................................................................... 8

C.

Thuật toán tính tần số cơ bản trên miền thời gian sử dụng hàm tự tương quan ................................... 9

D.

Khảo sát ảnh hưởng khi dùng hàm cửa sổ và tính số điểm FFT khi phân tích phổ: ............................. 9

IV.

KẾT QUẢ THỰC NGHIỆM ................................................................................................... 9

A.

Tìm tần số cơ bản trên miền thời gian: ......................................................................................... 9

1.

Yếu tố ảnh hưởng đến thuật toán và mức độ ảnh hưởng: ................................................................................. 9

2.

Kết quả về các tường hợp tốt nhất, trung bình và xấu nhất (có lọc trung vị) .................................................. 10

3.

Sai số của thuật toán: ...................................................................................................................................... 11

B.

Thuật toán tính tần số cơ bản trên miền tần số ............................................................................ 13

V.

KẾT LUẬN ............................................................................................................................ 13

VI.

NHỮNG ĐIỀU ĐÃ HỌC ĐƯỢC.......................................................................................... 13

VII.

TÀI LIỆU THAM KHẢO ..................................................................................................... 13


Trần Văn Dương, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc

I.

3

ĐẶT VẤN ĐỀ

Tần số cơ bản (còn gọi là F0 hoặc cao độ) của một tín hiệu tuần hoàn bằng nghịch đảo của chu kỳ tín hiệu
đó [1] . Chu kỳ được xác định bằng khoảng thời gian ngắn nhất mà tín hiệu lặp lại trên miền thời gian.
Thuật toán tìm cao độ của tín hiệu dùng hàm tự tương quan là một trong những thuật toán thông dụng, sử
dụng miền thời gian để tìm ra chu kỳ của tín hiệu [1]. Thuật toán này tìm giá trị lớn nhất của hàm tự tương quan
trên một mẫu tín hiện xác định, từ đó suy ra được tần số cơ bản cần tìm.
Trong thuật toán trên, Chúng tôi dùng hàm nội suy cubic spline để tìm một điểm có giá trị lớn nhất mới.
Điểm mới này có độ trễ không phải là số nguyên nên tăng độ chính xác của thuật toán.
Bài báo có bố cục như sau. Phần II trình bày cơ sở lí thuyết và các thuật toán. Phần III cài đặt các thuật
toán. Phần IV trình bày kết quả thực nghiệm của các thuật toán. Phần V là kết luận. Phần VI trình bày những gì đã
học được. Và cuối cùng phần VII là tài liệu kham khảo.
II.

LÝ THUYẾT XỬ LÍ TÍN HIỆU TIẾNG NÓI VÀ CÁC THUẬT TOÁN

Xử lý tiếng nói là sự nghiên cứu tiếng nói của con người dưới dạng tín hiệu, và các phương pháp xử lý những tín
hiệu này. Tín hiệu tiếng nói thường được thể hiện dưới dạng số, tức là được “số hóa”, và do đó, xử lý tiếng nói có thể
được coi là giao của “xử lý tín hiệu số” và “xử lý ngôn ngữ tự nhiên” [2]
A. Thuật toán lọc trung vị để làm trơn F0 thu được:
1. Cơ sở lý thuyết:
Median Filter là một bộ lọc phi tuyến, thường được sử dụng để loại bỏ nhiễu , làm trơn tín hiệu. Ý tưởng sắp xếp các
giá trị của tín hiệu trong mảng lọc theo thứ tự tăng hoặc giảm dần so với trung vị. Kích thước của cửa sổ lọc được chọn
sao cho số giá trị tín hiệu trong cửa sổ đó là lẻ. [3]

Hình 1. Cách thức hoạt động của lọc trung vị


Giả sử A = {a1, a2, a3,… ,ak} là các giá trị tín hiệu trong cửa sổ lân cận với a1< a2 < … Thì Median(A) = {
Ví dụ A = {0, 1, 2, 4, 6, 6, 10, 12, 15} -> Median(A) = 6
2. Các tham số của bộ lọc trung vị.
y = medfilt1(x,n) áp dụng bộ lọc trung gian bậc n cho tín hiệu vào x.
n: bậc của bộ lọc là 1 số nguyên.
 Khi n lẻ y(k) là số trung vị của x(k-(n-1)/2):k+(n-1)/2)
 Khi n chẳn y(k) là số trung vị của x(k-n/2:k+(n/2)-1)
3. Vấn đề phát sinh:
Tín hiệu không ổn định dẫn đến hàm lọc xử lý không tốt
B. Thuật toán tính tần số cơ bản trên miền thời gian sử dụng hàm tự tương quan:
1. Giới thiệu hàm tự tương quan:
Hàm tự tương quan thường được sử dụng như một công cụ để xác định tính chu kỳ của tín hiệu và nó cũng
là cơ sở cho nhiều phương pháp phân tích phổ khác. Hàm tự tương quan được định nghĩa tương tự như hàm tự
tương quan thông thường.
Hàm tự tương quan của tín hiệu rời rạc được định nghĩa như sau
( )



.

( )


Nhóm 4, lớp: 16TCLC2

4
Trong đó xj là tín hiệu tại thời điểm j,

t, và W là độ dài của cửa sổ tín hiệ

t

(𝜏) là hàm tự tương quan với độ trễ (lag) 𝜏 được tính tại thời điểm

Hình 2. Hàm tự tương quan của một tín hiệu

Nếu tín hiệu là tuần hoàn thì hàm tự tương quan sẽ cho ra các đỉnh tại những thời điểm là bội số của chu kỳ tín hiệu.
Chọn ra một đỉnh cao nhất ở hàm tự tương quan bằng cách xét hết toàn bộ các giá trị của độ trễ 𝜏 > 0, ta gọi đó là 𝜏max.
Vì với tín hiệu tiếng nói thì tần số cả lẫn nam và nữ nằm trong khoảng từ 80 Hz đến 400 Hz nên giới hạn của độ trễ sẽ
từ
đến .

Hình 3. Xác định 𝜏max

Ta có công thức tính tần số cơ bản của tín hiệu:
2. Sơ đồ thuật toán:
Tín hiệu đầu vào


Bước 1: Tách vùng tín hiệu theo biên độ


Bước 2: Phân tích tín hiệu thành từng
khung, mỗi khung 30 ms


Bước 3: Tính toán hàm tự tương quan với
mỗi khung tín hiệu



Bước 4: Tìm cực đại các hàm tự tương
quan, suy ra F0 tính được ứng với mỗi
khung tín hiệu


Đường F0
Hình 4. Sơ đồ thuật toán tính tần số cơ bản trên miền thời gian


Trần Văn Dương, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc
C. Thuật toán tính tần số cơ bản trên miền tần số:
D. Khảo sát ảnh hưởng khi dùng hàm cửa sổ và tính số điểm FFT khi phân tích phổ:
III.

CÀI ĐẶT CÁC THUẬT TOÁN

A. Thuật toán lọc trung vị để làm trơn F0
y = audioread('D:\HocTap\XLTHS\TaiLieu\forStudents\BaiTH\sample.wav');
yMedFilt = medfilt1(y,11);%áp dụng bộ lọc trung vị cho tín hieu vào x
clf;hold on
figure(1);
plot(yMedFilt);
figure(2);
plot(y);
figure(3);
clf;hold on; plot(y);
plot(yMedFilt);
legend('original signal','median filter');


Hình 5. Kết quả khi lọc trung vị

B. Thuật toán tính tần số cơ bản trên miền thời gian sử dụng hàm tự tương quan
1. Định nghĩa các hàm tự code:
a) Hàm audioread2:
function [y,t,Fs] = audioread2(file)
% doc tin hieu doc vao tu file tra ve 3 tham so y, t, Fs
%--------------------------------------% [y,t,Fs] = audioread2(file)
% y: tin hieu sau khi doc file
% t: truc thoi gian
% Fs: tan so lay mau
%
[y,Fs] = audioread(file); % doc tin hieu doc vao tu file
max_value = max(abs(y)); % tim bien do lon nhat cua tin hieu y
y = y/max_value; % quy bien do cua tin hieu cao nhat ve 1
t = 1/Fs:1/Fs:(length(y)/Fs); % thoi gian cua y

5


Nhóm 4, lớp: 16TCLC2

6
end

b) Hàm TachVungTinHieuTheoBienDo:
function [Y_TuanHoan, t_TuanHoan] = TachVungTinHieuTheoBienDo(y,t,A)
% tra ve vung tin hieu tuan hoan
% -----------------------------% Y_TuanHoan = tin hieu trong vung tuan hoan

% t_TuanHoan = truc thoi gian cua tin Y_TuanHoan
% y = tin hieu dau vao
% t = truc thoi gian cua y
% A = bien do de xac dinh vung tuan hoan
%
dodai = length(y); % xac dinh so diem trong y
dau = 1;
cuoi = dodai;
% xac dinh vi tri dau cua vung tuan hoan
for i = 1:dodai
if abs(y(i))>A
dau = i;
break;
end
end
% --------------------------------------% xac dinh vi tri cuoi cua vung tuan hoan
for i = dodai:-1:1
if abs(y(i))>A
cuoi = i;
break;
end
end
% --------------------------------------Y_TuanHoan = y(dau:cuoi); % cat vung tuan hoan gan cho Y_TuanHoan
t_TuanHoan = t(dau:cuoi); % cat vung tuan hoan gan cho t_TuanHoan
end
c) Hàm TachThanhCacKhungTinHieu:
function [y,t,SoKhung] = TachThanhCacKhungTinHieu(y0,t0,Fs)
% ham tra ve tat cac khung tin hieu 30ms, voi cac khung dan xen nhau
% -----------------------------------------------------------------% [y,t,SoKhung] = TachThanhCacKhungTinHieu(y0,t0,Fs)
% y = ma tran MxN, voi M: so diem tung khung tin hieu 30ms, N: so khung

% t = ma tran NxM, tuong ung la truc thoi gian cua tung khung 30ms
% y0 = tin hieu dau vao
% t0 = truc thoi gian cua y0
% Fs = tan so lay mau cua y0
%
SoDiemTrong1Khung = floor(0.03*Fs); % so diem trong 1 khung tin hieu 30ms
L = length(y0); % xac dinh do dai cua y0;
y = []; % khoi tao ma tran rong (0x0)
t = []; % khoi tao ma tran rong (0x0)
a = 1; b = SoDiemTrong1Khung;
% xac dinh vi tri dau va cuoi cua khung tin hieu 30ms dau tien
while b<=L
y = horzcat(y,y0(a:b)); % noi theo so cot (tuc la tang so cot)
t = vertcat(t,t0(a:b)); % noi theo so hang (tuc la tang so hang)
a = b-floor(0.02*Fs); b = a+SoDiemTrong1Khung-1;
% xac dinh vi tri dau va cuoi cua khung tin hieu 30ms dau tien
end
SoKhung = length(y(1,:)); % xac dinh so khung tin hieu
end
d) Hàm HamTuTuongQuan:
function [y,lag] = HamTuTuongQuan(tinhieu)
% ham tra ve ham tu tuong quan cua tin hieu dau vao (tinhieu)
% ------------------------------------------------------------


Trần Văn Dương, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc
% [y,lag] = HamTuTuongQuan(tinhieu)
% y = ham tu tuong quan cua tin hieu dau vao
% lag = truc do tre (lag) cua y
% tinhieu = tin hieu dau vao de tim ham tu tuong quan

%
dodai = length(tinhieu); % xac dinh do dai cua tinh hieu
lag = -dodai:dodai; % xac dinh truc do tre (lag) cua y
y = []; %khoi tao ma tran rong (0x0)
for k = lag
tong = 0;% khoi tao lai gia tri 0
for j = 1:dodai
B = 0; % vi tri khong xac dinh se cho bang 0
if 1<=j+k && j+k<=dodai
B = tinhieu(j+k);
end
tong = tong + tinhieu(j)*B;
end
y = [y tong]; % them gia tri tinh duoc vao y
end
end
e) Hàm XacDinhDuongF0:
function [F0,tF0,RMSE] = XacDinhDuongF0(y2,t2,SoKhung,Fs,F0chuan)
% xac dinh duong F0 tu tat ca cac khung tin hieu 30ms
% tra ve sai so toan phuong trung binh RMSE
% -------------------------------------------------------------% F0 = duong tan so co ban F0
% tF0 = truc cua F0 tren do thi
% RMSE = sai so toan phuong trung binh
% y2 = ma tran MxN, chua tat cac cac khung tin hieu 30ms
% t2 = ma tran NxM, chua truc thoi gian tung khung tin hieu 30ms
% Fs = tan so lay mau
% F0chuan = tan so co ban F0 chuan do thu cong
%
tF0 = []; % khoi tao ma tran rong (0x0)
F0 = []; % khoi tao ma tran rong (0x0)

for i = 1:SoKhung
[F00,Yttq,lag,lagmax] = TinhTanSoCoBan_SDHTTQ(y2(:,i),Fs);
% tinh tan so co ban cua tung khung tin hieu 30ms
F0 = [F0 F00]; % them tan so co ban tinh duoc vao ma tran
tF0 = [tF0 t2(i,floor((1+length(t2(i,:)))/2))];
% xac dinh truc F0 tren do thi
end
end
f) Hàm XacDinhRMSE_TanSoF0:
function [RMSE,F0tb] = XacDinhRMSE_TanSoF0(F0,F0chuan)
% tra ve RMSE cua duong tan so co ban F0
% --------------------------------------% [RMSE,F0tb] = XacDinhRMSE_TanSoF0(F0,F0chuan)
% RMSE = sai so toan phuong trung binh
% F0tb = Tan so co ban trung binh
% F0 = duong tan so co ban
% F0chuan = tan so co ban chuan do thu cong
%
L = 1:length(F0); % xac dinh do dai duong F0
Sum = 0; % khoi tao gia tri bang 0
Dem=0; % bien dem so luong F0 xac dinh
F0tb=0;
for i=L
if (F0(i)>0)
Dem = Dem+1;
Sum = Sum + (F0chuan-F0(i))^2; % tong cac binh phuong sai

7


Nhóm 4, lớp: 16TCLC2


8
F0tb = F0tb+F0(i);
end

end
RMSE = sqrt(Sum/Dem); % tinh sai so toan phuong trung binh RMSE
F0tb = F0tb/Dem;% tinh tan so co ban trung binh
end
g) Hàm TinhTanSoCoBan_SDHTTQ:
function [F0,Yttq,lag,lagmax] = TinhTanSoCoBan_SDHTTQ(TinHieu,Fs)
% tinh tan so co ban
% tra ve ham tu tuong quan voi cac do tre (lag) khac nhau,
% tra ve do tre (lag) tai do dinh cao nhat thoa man 80<=F0<=400
% ---------------------------------------------------------------% F0 = tan so co ban ma thuat toan xac dinh duoc
% Yttq = ham tu tuong quan cua tin hieu dau vao
% lag = truc do tre (lag) cua Yttq
% lagmax = do tre (lag) tai do dinh cao nhat thoa man 80<=F0<=400
%
F0 = 0; lagmax = 0; % khoi tao cac gia tri ban dau
[Yttq,lag] = HamTuTuongQuan(TinHieu); % xac dinh ham tu tuong quan
% kiem tra tin hieu vao co tuan hoan khong?
if Yttq(int32((1+length(lag))/2)) <10
return
end
%----------------------------------------------------------------% su dung noi suy cubic spline ----------------------------------L = max(lag);
lag2 = -L:0.1:L;
Yttq = spline(lag,Yttq,lag2);
lag = lag2;
% ---------------------------------------------------------------% tim kiem do tre co dinh lon nhat (Fs/400 < dotre

a = Fs/400; b = Fs/80; % xac dinh khoang do tre
L = length(lag);
ViTriBatDauDuyet = int32((1+L)/2);
% xac dinh vi tri bat dau duyet (o giua cua do thi tu tuong quan)
% xac dinh F0 ---------------------------------------------------YttqMax = -1;
for i = ViTriBatDauDuyet:L
if Yttq(i)>YttqMax && a<=lag2(i) && lag2(i)<=b
YttqMax = Yttq(i);
lagmax = i;
F0 = Fs/lag2(lagmax); % tinh tan so co ban F0
end
end
% -----------------------------------------------------------end
2. Phần thuật toán chính (Main.m):
F0chuan = 131.58;
[y,t,Fs] = audioread2("C:\Users\Hoang\u.wav");% doc tin hieu dau vao
[y1,t1] = TachVungTinHieuTheoBienDo(y,t,0.3); % (BƯỚC 1) tach vung tin
hieu theo bien do
[y2,t2,SoKhung] = TachThanhCacKhungTinHieu(y1, t1, Fs); % (BƯỚC 2) tach
vung tinh hieu thanh nhieu khung tin hieu 30ms
[F0,tF0] = XacDinhDuongF0(y2,t2,SoKhung,Fs,F0chuan);% (BƯỚC 3 và BƯỚC 4)
xac dinh duong F0
F0 = medfilt1(F0,7);% (BƯỚC 5) ket hop loc trung vi de lam tron duong F0
[RMSE, F0tb] = XacDinhRMSE_TanSoF0(F0,F0chuan) % xac dinh RMSE va tan so
co ban F0 trung binh
% ve minh hoa
subplot(3,1,1); plot(t,y);


Trần Văn Dương, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc

hold on; plot(t1,y1);
title("Tin hieu ban dau");
xlabel("Thoi gian (s)");ylabel("Bien do");
subplot(3,1,2); plot(t1,y1);
title("Tin hieu sau khi tach theo bien do");
xlabel("Thoi gian (s)");ylabel("Bien do");
subplot(3,1,3); plot(tF0,F0,"*");
title("Duong bieu dien tan so co ban");
xlabel("Thoi gian (s)"); ylabel("F_0 (Hz)");
C. Thuật toán tính tần số cơ bản trên miền thời gian sử dụng hàm tự tương quan
D. Khảo sát ảnh hưởng khi dùng hàm cửa sổ và tính số điểm FFT khi phân tích phổ:
IV.

KẾT QUẢ THỰC NGHIỆM

A. Tìm tần số cơ bản trên miền thời gian:
1. Yếu tố ảnh hưởng đến thuật toán và mức độ ảnh hưởng:
a) Yếu tố ảnh hưởng:
Ở bước 1, hàm TachVungTinHieuTheoBienDo sử dụng biên độ hai đầu để tách vùng tín hiệu, tại một
thời điểm trong khoảng lặng khi biên độ tín hiệu cao đột biến, hàm s xác định sai vùng tín hiệu cần tách.

Hình 6. Trường hợp hàm TachVungTinHieuTheoBienDo xác định sai

b) Mức độ ảnh hưởng:
Không đáng kể vì sau khi vùng tách sai ở trên được chia thành nhiều khung tín hiệu 30ms. Sau đó truyền
vào TinhTanSoCoBan_SDHTTQ để tính tần số cơ bản thì trong hàm lại tiếp tục bước kiểm tra khung 30 ms
nếu khung không tuần hoàn thì trả về Fo không xác định.

9



Nhóm 4, lớp: 16TCLC2

10
2. Kết quả về các tường hợp tốt nhất, trung bình và xấu nhất (có lọc trung vị)

Hình 7. Trường hợp tốt nhất (âm /u/ của Nguyễn Đức Hoàng)

Hình 8. Trường hợp trung bình (âm /u/ của Nguyễn Hoàng Phúc)


Trần Văn Dương, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc

11

Hình 9. Trường hợp xấu (âm /i/ của Lê Văn Anh)

Nhận xét:




Trường hợp tốt nhất, như ta thấy trên hình các điểm biếu diễn F0 có giá trị gần bằng nhau (sấp sĩ 130 Hz)
Trường hợp trung bình trục tần số dao động trong khoảng xác định [125, 132]
Trường hợp xấu nhất, thuật toán của ta tính được giá trị F0 khá lớn (180 Hz) hoặc khá nhỏ (100 Hz). Nguyên
nhân là do chu kỳ của tín hiệu trên miền thời gian biến đổi phức tạp, các đỉnh không rõ ràng nên dẫn tới việc
không cho ra kết quả F0 như thực nghiệm.

3. Sai số của thuật toán [4]:



Công thức xác định RMSE mỗi âm (Với n là số frame trong mỗi tín hiệu):

S


∑(

â

)

Sai số toàn phương trung bình (RMSE) của thuật toán:

S

0

∑(

S

â

)

Bảng 1. Thống kê tần số chuẩn đo thủ công và tần số được tính từ thuật toán tính tần số cơ bản trên miền thời gian không kết hợp
lọc trung vị và tính RMSE

Âm


Lê Văn Anh

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

Nguyễn Đức
Hoàng

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

Nguyễn Hoàng
Phúc

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

/a/

/e/


/i/

/o/

/u/

Giá trị
trung
bình

161.30

161.30

172.40

166.70

158.70

165.34

170.88

152.50

168.67

183.09


157.86

166.6

43.88

15.32

33.77

88.40

11.03

38.48

140.85

123.45

128.21

126.58

131.58

130.13

140.99


122.32

155.04

126.47

130.57

135.08

32.46

1.51

61.70

2.23

1.19

19.82

121.82

123.18

131.25

131.64


121.15

125.81

126.61

118.67

155.05

126.54

128.85

131.14

5.96

7.51

60.44

5.95

8.07

17.59



Nhóm 4, lớp: 16TCLC2

12

Trần Văn Dương

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

116

117

123

115

111

116

124.95

118.96

124.63


115.06

125.36

121.79

17.97

2.7

3.77

3.07

14.50

8.40

Sai số toàn
phương trung
bình (RMSE) của
thuật toán

S

0

∑(

S


â

)

.0

Nhận xét:
 Sai số toàn phương trung bình (RMSE) của thuật toán là 21.07
 Khi tần số cơ bản tăng: sai số tăng
 RMSE của thuật toán đối với âm /o/ của sinh viên Lê Văn Anh là cao nhất 88.40
 RMSE của thuật toán đối với âm /u/ của sinh viên Nguyễn Đức Hoàng là thấp nhất 1.19
Bảng 2. Thống kê tần số chuẩn đo thủ công và tần số được tính từ thuật toán tính tần số cơ bản trên miền thời gian kết hợp lọc trung
vị và tính RMSE

Âm

Lê Văn Anh

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

Nguyễn Đức
Hoàng

F0 chuẩn
(Hz)

F0 thuật toán
(Hz)
RMSE

Nguyễn Hoàng
Phúc

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

Trần Văn Dương

F0 chuẩn
(Hz)
F0 thuật toán
(Hz)
RMSE

Sai số toàn
phương trung
bình (RMSE) của
thuật toán

/a/

/e/


/i/

/o/

/u/

Giá trị
trung
bình

161.30

161.30

172.40

166.70

158.70

165.34

153.70

152.44

160.70

149.06


157.75

154.73

16.18

15.31

20.20

20.96

10.94

16.72

140.85

123.45

128.21

126.58

131.58

130.13

131.18


121.91

128.16

126.25

130.25

127.55

10.17

1.67

5.23

1.77

1.37

4.04

121.82

123.18

131.25

131.64


121.15

125.81

126.28

118.61

128.16

126.45

128.62

125.62

5.41

7.50

6.07

5.99

7.78

6.55

116


117

123

115

111

116

120.17

118.79

124.59

114.80

125.29

120.73

4.99

2.63

3.71

3.20


14.42

5.79

S

0

∑(

S

â

)

.

Nhận xét:
 Sai số toàn phương trung bình (RMSE) của thuật toán sau khi lọc trung vị là 8.28 (giảm từ 21.07 xuồng còn
8.28)
 Khi tần số cơ bản tăng: sai số tăng
 RMSE của thuật toán đối với âm /o/ của sinh viên Lê Văn Anh là cao nhất 20.96
 RMSE của thuật toán đối với âm /u/ của sinh viên Nguyễn Đức Hoàng là thấp nhất 1.37
4. Ưu điểm và nhược điểm:


Trần Văn Dương, Lê Văn Anh, Nguyễn Đức Hoàng, Nguyễn Hoàng Phúc

13


Bảng 3. Ưu điểm và nhược điểm của thuật toán tính tần số cơ bản trên miền thời gian

-

Ưu điểm
Cho kết quả tương đối chính xác
Xác định được được tính chất tuần
hoàn của tín hiệu
Dễ cài đặt

-

-

Nhược điểm
Vì hàm tự tương quan dùng phép
nhân nên tốc độ tính toán bị hạn
chế
Lỗi cao độ ảo
Độ chính xác của thuật toán giảm
khi tần số cơ bản tăng

B. Thuật toán tính tần số cơ bản trên miền tần số
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 và tần số. Để
làm trơn F0 thu được ta sử dụng thuật toán lọc trung vị. Các thử nghiệm với thuật toán tính tần số cơ bản trên miền thời

gian cho thấy sai số toàn phương trung bình của thuật toán khi không lọc trung vị F0 thu được là RMSE = 21.07 và khi
có dùng lọc trung vị để làm trơn F0 thu được là RMSE = 8.28.
VI.

NHỮNG ĐIỀU ĐÃ HỌC ĐƢỢC

Biết được hàm tự tương quan, thuật toán tính tần số cơ bản, thuật toán lọc trung vị. Hiểu rõ hơn về việc xử lí tín hiệu
số, học được cách dùng Matlab
VII.

TÀI LIỆU THAM KHẢO

[1] Alain de Cheveigne, Hideki Kawahara, “YIN, a fundamental frequency estimator for speech and music”, Journal
of the Acoustical Society of America, vol. 111, no. 4, pp. 1917-1930, 2002.
[2] J. P. H. van Santen, Progress in Speech Synthesis. Springer Science & Business Media, 1996.
[3] Median Filter. Retrieved 2018-12-4, from />[4] Sai số toàn phương trung bình. Retrieved 2018-12-4, from
/>


×