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

PHÂN ĐOẠN TÍN HIỆU THÀNH TIẾNG NÓI VÀ KHOẢNG LẶNG DÙNG SHORT‐TIME ENERGY và ZERO CROSSING RATE

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.15 MB, 19 trang )

Báo cáo bài tập lớn mơn học Xử lý tín hiệu số, HK1 năm học 2019-2020

PHÂN ĐOẠN TÍN HIỆU THÀNH TIẾNG NÓI VÀ KHOẢNG LẶNG DÙNG
SHORT‐TIME ENERGY VÀ ZERO CROSSING RATE
Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh
Nhóm 15, lớp HP: 1022103.1910.17.12
Điểm

Bảng phân cơng nhiệm vụ
Lê Xn
Mạnh
(nhóm
trưởng)
Hồng
Long Nhật

Phân cơng nhiệm vụ và đảm bảo tiến độ của mỗi thành
viên . Đọc tài liệu, cài đặt thuật toán Zero Crossing Rate
kết hợp với Short Time Energy. Tổng hợp và viết báo
cáo. Viết báo cáo về kết quả thực nghiệm.
Đọc tài liệu, viết lý thuyết và cài đặt thuật toán về thuật
toán Short Time Energy , làm slide.

Trần Tùng
Dương

Đọc tài liệu, viết lý thuyết và cài đặt thuật toán về Zero
Crosing Rate kết hợp với Short Time Energy, đưa ra kết
luận.

Nguyễn


Đức Minh

Đặt vấn đề và vấn đề cần giải quyết. Đọc tài liệu, cài đặt
và viết báo cáo về thuật toán Short Time Energy.

Chữ ký của
SV

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 VI. 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— Phân đoạn tín hiệu thành tiếng nói và khoảng lặng là một bài tốn cần thiết
trong cuộc sống hiện đại. Bài báo này thực hiện việc phân đoạn tín hiệu dùng thuật tốn Short Time
Energy và thuật toán kết hợp với Zero Crossing Rate. Các thử nghiệm với 6 file tín hiệu với 3 môi
trường khác nhau là lab_male.wav, lab_female.wav, phone_male.wav, phone_female.wav,
studio_male.wav, studio_female.wav. Từ kết quả thực nghiệm cho ta thấy thuật toán Short Time
Energy cho kết quả ổn định và đúng với yêu cầu nhất trong 2 phương pháp đã dùng.
Từ khóa— Short Time Energy, Zero Crossing Rate, Short Time Processing, Voiced and
unvoiced separation in speech.


Nhóm 15, lớp HP: 1022103.1910.17.12

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 TỐN ........................ 3
Vấn đề cần giải quyết ..................................................................................................... 3

A.

Thuật tốn Short-Time Energy ....................................................................................... 3

B.
1.
2.
3.
4.

Cơ sở lý thuyết ................................................................................................................................... 3
Sơ đồ thuật toán ................................................................................................................................. 4
Các tham số quan trọng của thuật toán ............................................................................................. 4
Vấn đề và giải pháp khắc phục .......................................................................................................... 5

Thuật toán kết hợp Zero Crossing Rate và Short-Time Energy................................... 5

C.
1.
2.
3.
4.

Cơ sở lý thuyết ................................................................................................................................... 5
Sơ đồ thuật toán ................................................................................................................................. 6
Các tham số quan trọng của thuật toán ............................................................................................. 6
Vấn đề và giải pháp khắc phục .......................................................................................................... 6


III.

MÃ CHƯƠNG TRÌNH CÀI ĐẶT CÁC THUẬT TỐN ............................................... 7

A.

Thuật tốn Short Time Energy. ..................................................................................... 7

B.

Thuật toán kết hợp Zero Crossing Rate và Short Time Energy . ................................ 9

IV.

KẾT QUẢ THỰC NGHIỆM. ..................................................................................... 11
Kết quả định tính........................................................................................................... 11

A.
1.
2.
3.

B.

Thuật tốn Short – time Energy ....................................................................................................... 11
Thuật toán Zero Crossing Rate kết hợp với Short Time Energy ..................................................... 13
Phân đoạn bằng thuật tốn thủ cơng ............................................................................................... 14

Kết quả định lượng ....................................................................................................... 15


V.

KẾT LUẬN .............................................................................................................. 19

VI.

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


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh
I.

3

ĐẶT VẤN ĐỀ

Tiếng nói là một phương tiện giao tiếp cơ bản và quan trọng nhất giữa con người với con người. Hiện nay, tiếng
nói cịn được áp dụng để thực hiện việc giao tiếp giữa con người với máy móc nhằm hướng tới mục đích thay thế các
phương pháp giao tiếp truyền thống như bàn phím, chuột, cơng tắc,… Vì vậy xử lí tiếng nói hay nói chính xác là nhận
dạng tiếng nói đóng vai trị quan trọng trong vấn đề này. Tuy nhiên, cùng với sự phát triển của thế giới, ô nhiễm tiếng
ồn ngày càng phức tạp hơn. Để làm được điều đó, việc phân đoạn tín hiệu tiếng nói là rất quan trọng.
Phân đoạn tín hiệu tiếng nói (speech signal segmentation) là q trình xác định ranh giới giữa các từ, âm tiết
hoặc âm vị trong các ngơn ngữ tự nhiên được nói [1]. Ở trong bài báo cáo này chúng tôi sẽ giới thiệu về hai phương
pháp phân đoạn tín hiệu tiếng nói thường dùng là: Short‐Time Energy (STE) và Zero Crossing Rate (ZCR).
Báo cáo có bố cục như sau: Phần II trình bày về cơ sở lý của các thuật toán và các vấn đề liên quan đến việc
phân đoạn tiếng nói dựa trên Short-time energy ( Năng lượng ngắn hạn) và Zero Crossing Rate ( Tốc độ băng qua 0 ).
Phần III trình bày mã nguồn cài đặt các thuật tốn. Phần IV trình bày kết quả thực nghiệm mơ tả dữ liệu dùng để đánh
giá độ chính xác của thuật tốn, đưa ra các đánh giá định tính và định lượng, so sánh các thuật toán đã cài đặt với nhau.
Phần V trình bày kết luận, tóm lại các kết quả đã đạt được và đề xuất các hướng phát triển và cải thiện trong tương lai.


II.

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

A. Vấn đề cần giải quyết
Xử lý tiếng nói đang bùng nổ mạnh trong thời đại cơng nghệ hiện nay. Xử lý tiếng nói có thể ứng dụng trong
nhiều lĩnh vực, đặc biệt trong việc nhận dạng tiếng nói. Trong q trình nhận dạng tiếng nói, việc phân đoạn tín hiệu
tiếng nói là vơ cùng quan trọng trong bất cứ bài toán nào. Vậy phân đoạn tín hiệu tiếng nói là gì? Phân đoạn tín hiệu
tiếng nói (speech signal segmentation) là q trình xác định ranh giới giữa các từ, âm tiết hoặc âm vị trong các ngơn
ngữ tự nhiên được nói [1] hay nói một cách đơn giản là xác định ranh giới giữa tiếng nói và khoảng lặng .
Có nhiều phương pháp để có thể phân đoạn tín hiệu tiếng nói khác nhau như: Zero Crossing Rate (ZCR), Short‐
Time Energy (STE), Pre-Emphasized Energy Ratio (PEER),… Ở trong bài báo cáo này chúng tơi sẽ giới thiệu về hai
phương pháp phân đoạn tín hiệu tiếng nói thường dung là: Zero Crossing Rate (ZCR) và Short‐Time Energy
(STE).Zero Crossing Rate là tốc độ thay đổi của tín hiệu dọc theo tín hiệu, nghĩa là tốc độ tín hiệu thay đổi từ dương
sang 0 thành âm hoặc ngược lại. Short‐Time Energy năng lượng của các mẫu thuộc một khung tín hiệu.

B. Thuật tốn Short-Time Energy
1. Cơ sở lý thuyết
Biên độ của các phân đoạn khơng có tiếng nói thấp hơn đáng kể so với các phân đoạn tiếng nói. Năng lượng
ngắn hạn của tín hiệu tiếng nói phản ánh sự thay đổi biên độ [2]. Năng lượng của tín hiêu thời gian rời rạc được định
nghĩa [2]:

2
𝐸 = ∑ (𝑥[𝑛])
n=−∞

Do tín hiệu tiếng nói ổn định trong khoảng vài chục ms, nên khi xử lí tiếng nói phải chia tín hiệu thành các
khung nối tiếp nhau, mỗi khung có độ dài từ 10ms đến 30ms. Sau đó xử lí từng khung để tìm và truy xuất đặc trưng
mỗi khung.

Năng lượng ngắn hạn là năng lượng của các mẫu của 1 khung tín hiệu. Giả sử khung thứ m có các mẫu với
chỉ số n ∈[N1m;N2m] thì năng lượng khung đó tính bằng cơng thức:
N2m

𝐸𝑚 = ∑
Trong đó:
Em : năng lượng khung thứ m
n
: chỉ số mẫu
x[n] : biên độ tín hiệu tại mẫu thứ n

n=N1m

(𝑥[𝑛])

2


Nhóm 15, lớp HP: 1022103.1910.17.12

4

Hình 1. Ví dụ thuật tốn Short-Time Energy trên file lab_female.wav

2. Sơ đồ thuật tốn

Hình 2. Sơ đồ khối cài đặt thuật toán Short-Time Energy

3. Các tham số quan trọng của thuật toán
-


Tần số lấy mẫu tín hiệu đầu vào


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh
-

5

Giá trị độ dài của mỗi Framming.
Giá trị độ lớn của năng lượng của mỗi khung là Em
Ngưỡng lấy mẫu giá trị năng lượng là Ect

4. Vấn đề và giải pháp khắc phục
-

Vấn đề: Do năng lượng của mỗi tín hiệu vào là khác nhau nên với một ngưỡng Ect xác định thì có thể phù
hợp với tín hiệu này mà khơng phù hợp với tín hiệu khác.
Giải pháp khắc phục : Cần quan sát đồ thị năng lượng tín hiệu kĩ càng và thử trên nhiều tín hiệu khác nhau

C. Thuật toán kết hợp Zero Crossing Rate và Short-Time Energy
1. Cơ sở lý thuyết
-

Cơ sở lý thuyết về thuật tốn Zero Crossing Rate:

Có thể tính độ ổn định của tín hiệu bằng phương pháp tính số lần băng qua 0 của tín hiệu. Tín hiệu âm thanh
giọng nói (có độ ổn định cao) sẽ có giá trị số lần băng qua 0 thấp, trong khi đó tạp âm với biên độ sóng thấp nhưng dày,
hỗn loạn hơn (độ ổn định thấp) sẽ có số lần tín hiệu băng qua 0 cao.
Ta dùng phương pháp Zero-Crossing Rate(ZCR) để tính tần số băng qua 0 của tín hiệu, từ đó có thể phân định

được đâu là tín hiệu giọng nói, đâu là phần tạp âm để sử dụng cho viêc tách âm sau này.
Cơng thức hàm Zero-Crossing Rate có thể được biểu diễn như sau [3]:
N−1

𝑍𝐶𝑅[𝑛] = ∑ |𝑠𝑔𝑛(𝑥 [𝑛 − 𝑚]) − 𝑠𝑔𝑛(𝑥[𝑛 − 𝑚 − 1])|
m=0

[Rabiner and Schafer, 1978]
Với sgn(.) là hàm tín hiệu:
𝑠𝑔𝑛(𝑥) = {

1 𝑥≥0
−1 𝑥 < 0

Cơng thức có thể viết cách khác[3]:


𝑍𝐶𝑅[𝑛] = ∑ 𝑦[𝑚]𝑤[𝑛 − 𝑚]
m=−∞

Sau khi chia tín hiệu thành các khung nhỏ, với mỗi khung m, ZCRm là số lần biên độ tín hiệu băng qua 0 đối
với các mẫu thuộc khung :
ZCRm = {Số lần mà x[n].x[n+1] < 0 | n∈[N1m,N2m]}

Hình 3. Ví dụ thuật tốn Zero Crossing Rate trên file lab_female.wav


Nhóm 15, lớp HP: 1022103.1910.17.12

6


Thuật tốn kết hợp thuật tốn Zero Crossing Rate và Short Time Energy
Xử lý theo khung:
-

Giá trị độ lớn của số lần băng qua 0 của tín hiệu của mỗi khung là ZCR m

-

Giá trị độ lớn của năng lượng của mỗi khung là Em

-

Tại những vị trí ZCRm < ZCRct và Em > Ect thì tại đó được xác định là tiếng nói.

2. Sơ đồ thuật tốn

Hình 4. Sơ đồ khối cài đặt thuật tốn Zero Crossing Rate kết hợp với Short -Time Energy

3. Các tham số quan trọng của thuật toán
-

Tần số lấy mẫu tín hiệu đầu vào
Giá trị độ dài của mỗi Framming.
Giá trị độ lớn của số lần băng qua 0 là ZRCm
Giá trị độ lớn của năng lượng của mỗi khung là Em
Ngưỡng lấy giá trị là Ect và ZRCct

4. Vấn đề và giải pháp khắc phục





Vấn đề:
-

Giá trị độ lớn để phân biệt giọng nói với tạp âm thay đổi tùy theo mơi trường thu âm và tính chất
âm thanh.
- Phần tạp âm có biên độ tuần hồn gần giá trị 0, nhưng không băng qua 0 khiến cho giá trị ZCR vẫn
thấp, dẫn đến đánh giá kết quả sai lệch.
Giải pháp khắc phục:
- Dựa vào kết quả thực nghiệm đánh giá lại và xem xét sự sai số trong quá trình tìm giá trị của ZeroCrossing Rate giữa những Framming để có được tần số băng qua 0 tương đối chính xác để việc
đánh giá dễ dàng hơn.


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh
-

7

Tùy vào mỗi tín hiệu đầu vào ta phải có 1 cơng thức lấy ngưỡng giá trị Ect và ZRCct để có thể
đánh giá đẩy đủ và chính xác âm thanh cần tách trong mọi hoàn cảnh , điều kiện.
III.

MÃ CHƯƠNG TRÌNH CÀI ĐẶT CÁC THUẬT TỐN

A. Thuật tốn Short Time Energy.
clear all;
%% Input Speech
[data, fs] = audioread('lab_female.wav');

%[data, fs] = audioread('lab_male.wav');
%[data, fs] = audioread('phone_female.wav');
%[data, fs] = audioread('phone_male.wav');
%[data, fs] = audioread('studio_male.wav');
%[data, fs] = audioread('studio_female.wav');
% Binh thuong hoa du lieu
data = data / abs(max(data));
%% Frame by Frame Signal processing
f_d = 0.02;% do dai 1 frame(seconds)
f_size = round(f_d * fs); %So luong mau
% Ham chia frame tin hieu
% Tham so dau vao: data: mang chua thong tin tin hieu ban dau, fs: tan so lay mau ,f_d: do dai 1 frame(s)
% Gia tri tra lai la mang frames chua thong tin tin hieu voi moi dong la 1 frame
frames = framing_function(data, fs, f_d);
%% Short-Time Energy(STE)
% Ham tinh short time energy tung frame
%tham so dau vao: +data: mang chua thong tin tin hieu ban dau
%
+ frames: mang chua thong tin tin hieu da chia frame
%
+ f_size: So luong mau
% Gia tri tra ve la mang ste chua tong nang luong cua tung frame
ste = short_time_energy_function(data, frames, f_size);
ste = ste./max(ste);%binh thuong hoa du luieu
% Ham tinh nang luong tung mau
% Tham so dau vao: + ste: mang chua thong tin tong nang luong cua tung frame
%
+ f_size: So luong mau
% Gia tri tra ve la mang ste_sample chua nang luong voi nang luong cua moi
% mau trong fram bang voi tong nang luong cua frame do

ste_sample = ste_sample_function(ste, f_size);
%% plot the STE with Signal
% t,t1 in seconds
t = [0 : 1/fs : length(data)/fs];
t = t(1:end - 1);
t1 = [0 : 1/fs : length(ste_sample)/fs];
t1 = t1(1:end - 1);
% ve do thi tin hieu ban dau
subplot(2,1,1);
plot(t,data);
grid on
hold on;
% ve do thi nang luong tung mau
plot(t1,ste_sample,'r','LineWidth',2);
legend('Tin hieu tieng noi','Short Time Energy','Location','southeast');
title('Tin hieu tieng noi va Short Time Energy','FontSize',14);
xlabel('Thoi gian (s)')
%% Plot the Voice and Unvoice
subplot(2,1,2);


8

Nhóm 15, lớp HP: 1022103.1910.17.12

times = [0 : 1/fs : f_size/fs];
times = times(1:end - 1);
plot(t,data,'g');
grid on
hold on;

n_f = floor(length(data)/f_size);%Tong so frame
%zero_frame = zeros(1,f_size);
%tim nhung frame co nang luong >= Ect
Ect=0.01;
id = find(ste >= Ect);
% Tim bien thoi gian giao nhau giua tieng noi va khoang lang
id_speech=id(1)-1;
n=2;
for i = 2:length(id)
if(f_d*id(i)-f_d*id(i-1) > 0.2)
id_speech(n)=id(i-1);
id_speech(n+1)=id(i)-1;
n=n+2;
end
end
id_speech(n)=id(i);
local_speech=f_d*id_speech;
% ve do thi phan doan tieng noi va khoang lang
y = [-0.5: 0.5];
for i = 1:length(local_speech)
if(rem(i,2) == 0)
plot(local_speech(i)*ones(size(y)), y,'r', 'LineWidth', 1);
else
plot(local_speech(i)*ones(size(y)), y,'b', 'LineWidth', 1);
end
end
hold off;grid on;
legend('Tin hieu ban dau','Vi tri bat dau co tieng noi','Vi tri ket thuc tieng noi','Location','southeast');
title('Phan doan tieng noi va khoang lang','FontSize',14);
xlabel('Thoi gian(s)')

function [frames] = framing_function(data,fs,f_d)
f_size = round(f_d * fs); %So luong mau
l_data = length(data);
n_f = floor(l_data/f_size);%Tong so frame
temp = 0;
for i = 1 : n_f
frames(i,:) = data(temp + 1 : temp + f_size);
temp = temp + f_size;
end
end
function [ste] = short_time_energy_function(data,frames,f_size)
l_data = length(data);
n_f = floor(l_data/f_size);
ste = 0;
for i = 1 : n_f
ste(i) = sum(frames(i,:).^2);
end
end
function [ste_sample] = ste_sample_function(ste, f_size)
ste_sample = 0;
for j = 1 : length(ste)
l = length(ste_sample);
ste_sample(l : l + f_size) = ste(j);
end


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh
end

B. Thuật toán kết hợp Zero Crossing Rate và Short Time Energy .

clear all;
%% Input Speech
[data, fs] = audioread('lab_female.wav');
%[data, fs] = audioread('lab_male.wav');
%[data, fs] = audioread('phone_female.wav');
%[data, fs] = audioread('phone_male.wav');
%[data, fs] = audioread('studio_male.wav');
%[data, fs] = audioread('studio_female.wav');
% Chuan hoa du lieu
data = data / abs(max(data));
%% Frame
f_d = 0.02;
f_size = round(f_d * fs);
% Ham chia frame tin hieu
% Tham so dau vao: data: mang chua thong tin tin hieu ban dau, fs: tan so lay mau ,f_d: do dai 1 frame(s)
% Gia tri tra lai la mang frames chua thong tin tin hieu voi moi dong la 1 frame
frames = framing_function(data, fs, f_d);
%% Zero Crossing Rate
%Ham tinh so lan bang qua 0 cua moi frame
%tham so dau vao: +data: mang chua thong tin tin hieu ban dau
%
+ frames: mang chua thong tin tin hieu da chia frame
%
+ f_size: So luong mau
% Gia tri tra ve la mang ZCR chua tong so lan bang qua 0 cua frame
ZCR = zero_crossing_rate_function(frames);
%Chuan hoa du lieu
ZCR = ZCR/max(ZCR);
%% Short-Time Energy(STE)
% Ham tinh short time energy tung frame

%tham so dau vao: +data: mang chua thong tin tin hieu ban dau
%
+ frames: mang chua thong tin tin hieu da chia frame
%
+ f_size: So luong mau
% Gia tri tra ve la mang ste chua tong nang luong cua tung frame
ste = short_time_energy_function(data, frames, f_size);
%Chuan hoa du lieu
ste = ste./max(ste);
% Ham tra ve ZCR cua mau.
% Tham so dau vao: + zcr: mang chua tong so lan c?a frame bang qua 0
%
+ f_size: So luong mau
% Gia tri tra ve la mang zcr_sameple chua cac gia tri cua ZCR
% mau trong fram bang voi tong nang luong cua frame do
zcr_sample = zcr_sameple_function(ZCR, f_size);
% Ham tinh nang luong tung mau
% Tham so dau vao: + ste: mang chua thong tin tong nang luong cua tung frame
%
+ f_size: So luong mau
% Gia tri tra ve la mang ste_sameple chua nang luong voi nang luong cua moi
% mau trong fram bang voi tong nang luong cua frame do
ste_sample = ste_sample_function(ste, f_size);
%% Plot the data,ZCR with STE
subplot(2,1,1)
t = [0 : 1/fs : length(data)/fs];
t = t(1:end - 1);
t1 = [0 : 1/fs : length(zcr_sample)/fs];
t1 = t1(1:end - 1);
t2 = [0 : 1/fs : length(ste_sample)/fs];

t2 = t2(1:end - 1);
plot(t,data,'Color',[0.4 1 0.4]);hold on;grid on;

9


10

Nhóm 15, lớp HP: 1022103.1910.17.12

plot(t1,zcr_sample,'r');
plot(t2,ste_sample,'b');
hold off
legend({'Tin hieu tieng noi','Zero Crossing Rate','Short time energy'}, 'Location','southeast');
title('Tin hieu tieng noi');
xlabel('Thoi gian')
%% Xac dinh vi tri cho khoang lang va tieng noi
[r,c] = size(frames);
ZCRct = 0.6; Ect = 0.01;
id_zcr = find(ZCR < ZCRct);
id_ste = find(ste > Ect);
n_f = floor(length(data)/f_size);
id = [];
for i = 1:n_f
j = 1;
while j <= length(id_zcr)
if(i == id_zcr(j))
k = 1;
while k <= length(id_ste)
if(i == id_ste(k))

id = [id i];
end
k=k+1;
end
end
j=j+1;
end
end
%% Plot the Voice and Unvoice
subplot(2,1,2)
times = [0 : 1/fs : c/fs];
times = times(1:end - 1);
plot(t,data,'Color',[0.4 1 0.4]);hold on;grid on;
% Tim bien thoi gian giao nhau giua tieng noi va khoang lang
id_speech=id(1)-1;
n=2;
for i = 2:length(id)
if(f_d*id(i)-f_d*id(i-1) > 0.2)
id_speech(n)=id(i-1);
id_speech(n+1)=id(i)-1;
n=n+2;
end
end
id_speech(n)=id(i);
local_speech=f_d*id_speech;
% ve do thi phan doan tieng noi va khoang lang
y = [-0.5: 0.5];
for i = 1:length(local_speech)
if(rem(i,2) == 0)
plot(local_speech(i)*ones(size(y)), y,'r', 'LineWidth', 1);

else
plot(local_speech(i)*ones(size(y)), y,'b', 'LineWidth', 1);
end
end
hold off
legend('Tin hieu ban dau','Vi tri bat dau co tieng noi','Vi tri ket thuc tieng noi','Location','southeast');
title('Phan doan tieng noi va khoang lang','FontSize',14);
xlabel('Thoi gian(s)')
function [frames] = framing_function(data,fs,f_d)
f_size = round(f_d * fs); %So luong mau


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh

11

l_data = length(data);
n_f = floor(l_data/f_size);%Tong so frame
temp = 0;
for i = 1 : n_f
frames(i,:) = data(temp + 1 : temp + f_size);
temp = temp + f_size;
end
end
function [ZCR] = zero_crossing_rate(frames)
[r, c] = size(frames);
for i = 1 : r
x = frames(i, :);
ZCR(i) = 0;
for k = 1:length(x) - 1

if (x(k)*x(k + 1) < 0)
ZCR(i) = ZCR(i) + 1;
end
end
end
end
function [zcr_sample] = zcr_sameple_function(ZCR, f_size)
zcr_sample = 0;
for i = 1 : length(ZCR)
j = length(zcr_sample);
zcr_sample(j : j + f_size) = ZCR(i);
end

IV.

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

A. Kết quả định tính
Dữ liệu dùng để đánh giá thuật tốn là các 6 file tín hiệu lab_male.wav, lab_female.wav, phone_male.wav,
phone_female.wav, studio_male, studio_male.wav.
1. Thuật tốn Short – time Energy

Hình 5. Hình vẽ phân đoạn tiếng nói và khoảng lặng trong trường hợp tốt nhất bằng thuật toán STE


12

Nhóm 15, lớp HP: 1022103.1910.17.12

Hình 5 mơ tả về ví dụ về kết quả phân đoạn tiếng nói và khồng lặng trong trường hợp tốt nhất bằng thuật

toán Short Time Energy của file studio_male.wav . Điều kiện lấy STE > 0.01.

Hình 6. Hình vẽ phân đoạn tiếng nói và khoảng lặng trong trường hợp trung bình bằng thuật tốn STE

Hình 6 mơ tả về ví dụ về kết quả phân đoạn tiếng nói và khồng lặng trong trường hợp trung bình bằng thuật
tốn Short Time Energy của file lab_male.wav. Điều kiện lấy STE > 0.01.

Hình 7. Hình vẽ phân đoạn tiếng nói và khoảng lặng trong trường hợp xấu nhất bằng thuật tốn STE

Hình 7 mơ tả về ví dụ về kết quả phân đoạn tiếng nói và khồng lặng trong trường hợp xấu nhất bằng thuật
toán Short Time Energy của file phone_male.wav. Điều kiện lấy STE > 0.01.


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh

13

2. Thuật toán Zero Crossing Rate kết hợp với Short Time Energy

Hình 8. Hình vẽ phân đoạn tiếng nói và khoảng lặng trong trường hợp tốt nhất bằng thuật tốn ZCR kết hợp STE

Hình 8 mơ tả về ví dụ về kết quả phân đoạn tiếng nói và khồng lặng trong trường hợp tốt nhất bằng thuật
toán Zero Crossing Rate và Short Time Energy của file studio_male.wav. Điều kiện lấy ngưỡng là ZCR < 0.6 và
STE>0.01 .

Hình 9. Hình vẽ phân đoạn tiếng nói và khoảng lặng trong trường hợp trung bình bằng thuật tốn ZCR kết hợp STE

Hình 9 mơ tả về ví dụ về kết quả phân đoạn tiếng nói và khồng lặng trong trường hợp trung bình bằng thuật
tốn Zero Crossing Rate và Short Time Energy của file lab_male.wav. Điều kiện lấy ngưỡng là ZCR < 0.6 và
STE>0.01 .



Nhóm 15, lớp HP: 1022103.1910.17.12

14

Hình 10. Hình vẽ phân đoạn tiếng nói và khoảng lặng trong trường hợp xấu nhất bằng thuật tốn ZCR kết hợp STE

Hình 10 mơ tả về ví dụ về kết quả phân đoạn tiếng nói và khồng lặng trong trường hợp tốt nhất bằng thuật
tốn Zero Crossing Rate và Short Time Energy của file phone_male.wav. Điều kiện lấy ngưỡng là ZCR < 0.6 và
STE>0.01 .
3. Phân đoạn bằng thuật tốn thủ cơng
Trong 2 thuật tốn trên áp dụng cho phân đoạn tiếng nói và khoảng lặng thì trường hợp hợp xấu nhất đều
trong mơi trường thu âm phone. Hình ảnh 11, 12 vẽ bằng thủ công xác định biên thời gian chuẩn về phân đoạn tiếng
nói và khoảng lặng trong mơi trường phone:

Hình 11. Hình vẽ xác định biên thời gian chuẩn bằng phương pháp thủ công file phone_female.wav


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh

15

Hình 12. Hình vẽ xác định biên thời gian chuẩn bằng phương pháp thủ công file phone_male.wav

B. Kết quả định lượng
Yếu tố đầu tiên ảnh hưởng đến độ chính xác của thuật tốn đó là tín hiệu vào, nếu tín hiệu vào được thu âm
trong mơi trường n tĩnh, ít nhiễu, thì độ chính xác của thuật tốn sẽ cao hơn. Vì nếu nhiễu đáng kể thì ta sẽ khó phân
biệt được tín hiệu tiếng nói và khoảng lặng thơng qua biên độ.


Hình 13. Trường hợp kết quả phân đoạn tiếng nói và khoảng lặng bằng thuật tốn STE ở tín hiệu nhiễu file phone_male.wav

Hình 14. Trường hợp kết quả phân đoạn tiếng nói và khoảng lặng bằng thuật tốn STE và ZCR ở tín hiệu nhiễu file
phone_male.wav


16

Nhóm 15, lớp HP: 1022103.1910.17.12

Hình 15. Phân đoạn tín hiệu bằng phương pháp thủ cơng

Thơng qua hình 13, 14, 15 ta có thể thấy , nếu tín hiệu nhiễu đáng kể thì năng lượng tại đó vẫn lớn hơn giá trị
mức lẫy ngưỡng Ect và giá trị của Zero Crossing Rate vẫn thấp và nhỏ hơn rất nhiều so với mức lẫy ngưỡng ZCRct nên
nó vẫn được xem là tiếng nói. Trong trường hợp khó khăn nhất thì ta có thể bỏ qua giá trị nhiễu để phân đoạn tín hiệu
và tiếng nói.
Việc chọn giá trị ngưỡng cho trước có vai trị quan trọng trong việc phân đoạn tiếng nói và khoảng lặng:
- Trong thuật tốn Short Time Energy:

Hình 16. Hình ảnh trên file lab_female.wav lấy mức giá trị năng lượng Ect >0.01.


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh

17

Hình 17. Hình ảnh trên file lab_female.wav lấy mức giá trị năng lượng Ect >0.1.

Trong hình 16, 17 ta có thể thấy khi chọn mức ngưỡng giá trị của năng lượng Ect >0.01 thì phân đoạn hiệu
quả hơn khi Ect>0.1. Khi ở mức giá trị năng lượng là 0.1, tiếng nói thuật tốn nhận diện được cho kết quả sai lệch rất

nhiều so với tín hiệu đầu vào, trong khi đó khi sử dụng giá trị 0.01, thuật tốn đưa ra kết quả có độ chính xác khá cao.
Trong thuật toán kết hợp Zero Crossing Rate kết hợp Short Time Energy:

Hình 18. Hình ảnh trên file lab_female.wav lấy mức giá trị Ect >0.01 và ZCRct< 0.6 .

Hình 19. Hình ảnh trên file lab_female.wav lấy mức giá trị Ect >0.1 và ZCRct< 0.8.


18

Nhóm 15, lớp HP: 1022103.1910.17.12

Hình 20. Hình ảnh trên file lab_female.wav lấy mức giá trị Ect >0.01 và ZCRct< 0.8.

Từ hình 18, 19, 20 ta thấy khi sử dụng kết hợp 2 thuật toán Zero Crossing Rate và Short Time Energy thì mỗi
mức lấy ngưỡng giá trị Ect và ZCRct sẽ cho kết quả phân đoạn tín hiệu khác nhau. Khi chọn giá trị Ect quá cao và
ZCRct quá thấp sẽ cho các kết quả khác nhau. Với mỗi tín hiệu đầu vào thì giá trị mức năng lượng tính được khác
nhau, vì vậy cần đánh giá kỹ lưỡng để lựa chọn giá trị Ect và ZCRct cho hợp lí để có được hiệu quả cao nhất.
So sánh kết quả phân đoạn tín hiệu tiếng nói và khoảng lặng của các thuật tốn :

Hình 21. Kết quả sử dụng thuật toán Short Time Energy trên file studio_female.wav


Lê Xuân Mạnh, Hoàng Long Nhật, Trần Tùng Dương, Nguyễn Đức Minh

19

Hình 22. Kết quả sử dụng thuật tốn Zero Crossing Rate kết hợp Short Time Energy trên file studio_female.wav

Hình 21, 22 cho chúng ta thấy , trong khoảng từ 0.5s đến 0.75s, thuật tốn kết hợp có sự sai lệch kết quả vì khi

sử dụng thuật tốn kết hợp. ZCR tính được có giá trị cao mặc dù đó là phần tín hiệu giọng nói khiến cho q trình phân
đoạn không hiệu quả.
V.

KẾT LUẬN

Bài báo cáo này thực hiện việc cài đặt thuật tốn phân đoạn tiếng nói và khoảng lặng trên miền thời gian dùng
thuật toán Short-Time Energy(STE) và kết hợp Zero Crossing Rate(ZCR) trong Matlab. Các thử nghiệm với 6 file tín
hiệu được sử dụng cho thấy nếu sử dụng kết hợp Short Time Energy với Zero Crossing Rate thì cho độ chính xác thấp
hơn khi chỉ dùng thuật tốn Short Time Energy; cùng với đó ta cũng nhận thấy xử lý phân đoạn tín hiệu trong môi
trường studio hiệu quả nhất, môi trường lab cho kết quả trung bình và xấu nhất trong mơi trường phone.
Trong tương lai chúng tôi sẽ thử nghiệm với các thuật tốn phân đoạn tiếng nói khác để tìm ra thuật tốn tối
ưu nhất. Bên cạnh đó sẽ ứng dụng các thuật tốn này vào trong các chương trình phân tích, nhận dạng giọng nói.
VI.

TÀI LIỆU THAM KHẢO

[1] Link: />[2] Ranganadh Narayanam* Assistant Professor, Eece, Its, Ifhe – India
[3] CS425 Audio and Speech Processing_Hodgkinson_2012



×