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 2020-2021
BÁO CÁO XỬ LÍ TÍN HIỆU SỐ
PHÂN ĐOẠN TÍN HIỆU THÀNH TIẾNG NĨI VÀ KHOẢNG LẶNG SỬ DỤNG
HÀM SHORT-TIME ENERGY, MEAN AVERAGE VÀ HÀM ZERO – CROSSING
RATE
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
Điểm
(dành
cho
GV
ghi)
Nhóm 9, lớp HP: 1022103.2010.18.11 GVHD: thầy Ninh Khánh Duy
Bảng phân công nhiệm vụ
Chữ ký của SV
(SV ghi càng cụ thể thì GV càng dễ đặt câu hỏi và cho điểm mỗi SV) (mỗi SV ký xác
nhận trước khi
nộp báo cáo)
Trần Đăng
Giáp(nhóm
trưởng)
Hồ Thế Anh
Đức
Đọc tài liệu, cài đặt và viết báo cáo về thuật toán X (tr.
10-11)
Đọc tài liệu, cài đặt và viết báo cáo về thuật toán Y (tr.
6-9)
Nguyễn Lê
Tài
Đọc tài liệu và viết báo cáo về thuật toán Z (tr. 3),
thống kê sai số thuật tốn T (tr. 20), làm slide và thuyết
trình PowerPoint
Dương
Cài đặt thuật toán Z (tr. 12-15), viết báo cáo phần đặt
Thanh Dũng vấn đề (tr. 1) và phần kết quả thực nghiệm (tr. 16-19)
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 liệt kê ở cuối báo cáo. 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 biệt ‘Tiếng nói’ và ‘Khoảng lặng’ của tín hiệu là bài tốn cần thiết trong
xử lý tín hiệu âm thanh. Bài báo cáo này thực hiện việc cài đặt thuật tốn tìm năng lượng và tỉ lệ
băng qua điểm khơng của tín hiệu tiếng nói trên miền thời gian. Tại các mơi trường khác nhau thì
khả năng phân biệt tiếng nói với khoảng lặng khác nhau. Và mơi trường trong phịng thu ‘Studio’
là
mơi trường có thể phân biệt rõ tiếng nói và khoảng lặng nhất vì nó là mơi kín và ít tạp âm nhất.
Từ khóa
+ Từ khoá tiếng Anh: Speech/Silence discrimination, short-time energy, zero-crossing rate, MATLAB.
+ Từ khố tiếng Việt: phân biệt tiếng nói & khoảng lặng, năng lượng ngắn hạn, tốc độ băng qua giá trị 0, MATLAB.
Nhóm 9, lớp HP: 1022103.2010.18.11
2
Mục lục
I. ĐẶT VẤN ĐỀ............................................................................................................................................3
LÝ THUYẾT XỬ LÝ TÍN HIỆU TIẾNG NĨI VÀ CÁC THUẬT TỐN...........................................3
II.
A.
1.
2.
3.
4.
B.
1.
2.
3.
4.
C.
1.
2.
D.
1.
2.
Thuật tốn Short-Time Energy và Mean Average............................................................................3
Lý thuyết, cơng thức thuật toán Short-Time Energy và Magnitude Average ........................................................3
Sơ đồ thuật toán........................................................................................................................................................................... 5
Các tham số tham gia thuật toán............................................................................................................................................ 5
Đánh giá thuật toán và vấn đề cần khắc phục................................................................................................................. 5
Thuật toán kết hợp Zero-Crossing Rate và Short-Time Energy................................................6
Lý thuyết, công thức thuật toán Zero-Crossing Rate(ZCR)..........................................................................................6
Sơ đồ thuật toán........................................................................................................................................................................... 7
Các tham số tham gia thuật toán............................................................................................................................................ 8
Đánh giá thuật toán và vần đề cần khắc phục................................................................................................................. 8
Xử lí ngắn hạn (Short-time / time dependent processing).........................................................8
Cơ sở lý thuyết............................................................................................................................................................................... 8
Triển khai thuật toán.................................................................................................................................................................. 8
Chuẩn hóa các giá trị tính tốn...............................................................................................................8
Vấn đề phát sinh........................................................................................................................................................................... 8
Cơng thức chuẩn hóa................................................................................................................................................................... 8
MÃ CHƯƠNG TRÌNH CÀI ĐẶT CÁC THUẬT TỐN.....................................................................9
III.
1.
2.
3.
4.
5.
Thuật tốn xử lí tín hiệu ngắn hạn....................................................................................................................................... 9
Thuật tốn Short-Time Energy với chuẩn hóa dải[0,1]................................................................................................9
Thuật tốn Magnitude Average và Short-Time Energy............................................................................................... 11
Thuật toán Short-Time Energy và Zero-Crossing rate................................................................................................ 12
Các hàm đã sử dụng.................................................................................................................................................................. 14
KẾT QUẢ THỰC NGHIỆM..............................................................................................................14
IV.
A.
1.
2.
3.
Hình ảnh kết quả thực nghiệm (kết quả định tính)..................................................................15
Thuật tốn Short-Time Energy với chuẩn hóa dải [0,1]............................................................................................ 15
Thuật tốn Magnitude Average (MA) và Short-Time Energy (STE).......................................................................16
Thuật toán Short-Time Energy và Zero-Crossing rate................................................................................................ 17
B.
Kết quả định lượng.................................................................................................................................19
C.
Sai số của các thuật toán.......................................................................................................................21
V.
KẾT LUẬN...........................................................................................................................................21
VI. TÀI LIỆU THAM KHẢO....................................................................................................................21
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
I.
3
ĐẶT VẤN ĐỀ
Trong lịch sử phát triển của xã hội lồi người, tiếng nói là một cơng cụ khơng thể thiếu. Tiếng nói giúp cho sự
giao tiếp giữa con người và con người trở nên linh hoạt hơn, dễ hiểu nhau hơn. Tiếng nói chính là phương tiện để
phân biệt con người với các loài động vật khác. Nhờ có tiếng nói, con người mới có xã hội, mới có sự phát triển đi lên
qua nhiều hình thái xã hội[1].
Thời đại ngày nay, khi mà Công nghệ thông tin đang ngày càng góp phần quan trọng trong việc phục vụ lợi
ích, nâng cao đời sống của chúng ta, việc áp dụng và mơ phỏng tiếng nói cũng dần đóng vai trị quan trọng hơn.
Nghiên cứu và mơ phỏng tiếng nói cùng với trí tuệ nhân tạo đã và đang tạo thành xu thế và nghiên cứu chủ yếu trong
giai đoạn này. Đặc biệt, khi công nghệ thông tin đang trở thành cốt lõi trong Cách mạng công nghiệp 4.0, việc nghiên
cứu và mơ phỏng tiếng nói dần trở nên quan trọng hơn, nhằm đưa máy móc gần với con người hơn trong việc giao
tiếp giữa con người với con người, giữa máy móc với con người[1]. Trong bài này, chúng ta sẽ tìm hiểu cách nhận dạng
tiếng nói và phân đoạn tín hiệu tiếng nói.
Báo cáo có bố cục như sau: phần II trình bày về lý thuyết, công thức, sơ đồ khối, đánh giá ý tưởng, vấn đề
phát sinh của các thuật tốn tính Short-Time Energy(STE), Magnitude Average(MA) và Zero-Crossing Rate(ZCR). Phần
III trình bày các mã chương trình cài đặt các thuật tốn. Phần IV trình bày các biểu đồ sau khi chạy chương trình cài
đặt, đưa ra các đánh giá về độ chính xác của thuật tốn, nêu và phân tích các tham số/yếu tố ảnh hưởng đến thuật
tốn. Phần V 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
Để phân biệt lời nói với các đoạn im lặng, chúng ta nên tìm ra càng nhiều thuộc tính đáng tin cậy càng tốt tạo
ra sự khác biệt giữa trạng thái lời nói và trạng thái im lặng. Thật không may trong trường hợp phân tách giọng nói – im
lặng, dường như chỉ có một thứ đủ đáng tin cậy và dễ hiểu: mức độ, cao hơn cho các phân đoạn giọng nói. Chúng tơi
nói điều đó là khơng may, bởi vì chỉ thuộc tính này cũng khơng hồn tồn đáng tin cậy, vì im lặng khơng bao giờ thực
sự là im lặng; ln có một chút tiếng ồn mơi trường có thể sánh ngang với âm thanh giọng nói yếu ớt nhất, chẳng hạn
như tiếng ma sát khơng có âm thanh. Nếu tiếng ồn này cho thấy bất kỳ đặc điểm miền thời gian nào khác có thể phân
biệt nó với dạng sóng giọng nói, chúng ta nên sử dụng chúng. Nhưng dường như khơng phải vậy, vì các đặc tính của
tiếng ồn xung quanh hồn tồn phụ thuộc vào mơi trường ghi, do đó rất ít giả định có thể được đưa ra. Nói cách khác,
chúng ta phải tìm các đặc điểm của một trạng thái không thể được đặc trưng hóa, chứ khơng phải trong các thuật ngữ
chung. Trong miền tần số, có thể lấy một bản in phổ của tiếng ồn nền có thể giúp ích cho việc xác định đặc tính của nó,
nhưng miễn là chúng ta ở trong miền thời gian, chúng ta chỉ có thể cho rằng mức độ im lặng nhỏ hơn mức độ tiếng ồn
và các phân đoạn chưa được lập hóa đơn và sử dụng điều này làm tiêu chí phân biệt [2]. Nhờ đó, bằng mắt thường
khá dễ dàng phát hiện ra các phân đoạn im lặng. Chúng ta có thể làm điều này bởi vì chúng ta có được tầm nhìn tổng
thể về đường bao, hoặc đường viền của dạng sóng, đường biểu diễn năng lượng, biên độ và tốc đọ băng qua mức 0.
Câu hỏi mà chúng ta cần đi giải quyết trong phần sau là làm thế nào, ở cấp độ xử lý tín hiệu, để có được thơng tin mà
chúng ta muốn từ các tín hiệu tiếng nói[2].
A. Thuật tốn Short-Time Energy và Mean Average
1. Lý thuyết, cơng thức thuật toán Short-Time Energy và Magnitude Average
a) Short-Time Energy
Short-Time Energy (STE) của tín hiệu tiếng nói thu được bằng cách tính tổng bình phương của các giá trị biên
độ trên một số lượng mẫu N hữu hạn [2].
Công thức tính năng lượng của mẫu tín hiêu rời rạc được định nghĩa [2]:
STE[n] = x2 [n - m]
Trong đó:
o
STE[n] là năng lượng của tín hiệu
o
x[n – m] là biên độ tín hiệu tại mẫu thứ m
o
N là giá trị độ dài lấy mẫu của tín hiệu
,[2](2.1)
4
Nhóm 9, lớp HP: 1022103.2010.18.11
Chúng ta có thể quan sát thấy biên độ của tín hiệu giọng nói thay đổi đáng kể theo thời gian. Biên độ các
phân đoạn không có tiếng nói thấp hơn nhiều so với biên độ tại các phân đoạn có tiếng nói. Năng lượng ngắn hạn
(STE) của tín hiệu giọng nói cung cấp một biểu đồ phản ánh rõ rang sự biến đổi của biên độ [1].
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
5
Chúng ta có thể xác định năng lượng ngắn hạn của tín hiệu như sau [2]:
STE[n] = x2[n – m] * w[m] ,[2](2.3)
, với w[m] =
,[2](2.4)
b) Magnitude Average (MA)
Magnitude Average (MA) của tín hiệu tiếng nói rời rạc thu được bằng cách tính tổng các giá trị tuyệt đối của
các giá trị biên độ trên một lượng mẫu N hữu hạn [2].
MA của tín hiêu thời gian rời rạc được định nghĩa [2]:
MA[n] = |x[n – m]|
,[2](2.2)
Trong đó:
o
MA[n] là Mean Average của tín hiệu
o
x[n – m] là biên độ tín hiệu tại mẫu thứ m
o
N là giá trị độ dài lấy mẫu của tín hiệu
Hình 2.1.Đường biễu diễn minh họa Short-Time Energy và Magnitude Average của tín hiệu tiếng nói ([2Figure 2.2)
Hình 2.2.Đường biễu diễn Short-Time Energy và Magnitude Average của tín hiệu lab_female.wav trên matlab
Nhóm 9, lớp HP: 1022103.2010.18.11
6
2. Sơ đồ thuật tốn
BEGIN
INPUT SIGNAL
Xử lí tín hiệu thành từng
khung hình
Tính Short-Time Energy
và Mean Average
Chuẩn hóa STE và MA
Khoảng lặng
Đúng
Tìm STE và MA> Threshold
Phân đoạn tiếng nói và
khoảng lặng
END
Sai
Tín hiệu tiếng nói
Hình 2.3. Sơ đồ khối thuật toán Short-Time Energy và Magnitude Average
3. Các tham số tham gia thuật tốn
-
Tần số của tín hiệu vào
Tần số lấy mẫu
Độ dài mỗi khung (Frame)
Năng lượng và biên độ trung bình(MA) của mỗi khung tín hiệu
Ngưỡng lấy giá trị năng lượng và biên độ trung bình (Threshold)
4. Đánh giá thuật toán và vấn đề cần khắc phục
a.
b.
Đánh giá thuật tốn
- Ưu điểm: Nhanh chóng xác định được giá trị năng lượng tại các thời điểm trong
miềnthời gian rời rạc, tổng quát hóa được chỉ số năng lượng của tín hiệu đầu vào.
-Nhược điểm: Chưa thể xác định được ngưỡng lấy mẫu(Thresdold) của mỗi tín hiệu riêng
biệt một cách tự động.
Giải pháp
-Quan sát trước đồ thị năng lượng và MA của tín hiệu tiếng nói để xác định ngưỡng lấy mẫu.
B. Thuật toán kết hợp Zero-Crossing Rate và Short-Time Energy
1. Lý thuyết, cơng thức thuật tốn Zero-Crossing Rate (ZCR)
Zero-Crossing Rate là một phép đo đơn giản của nội dung xử lí tín hiệu rời rạc. Điều này đặc biệt đúng với tín
hiệu băng thơng hẹp. Tuy nhiên tín hiệu lời nói lại là tín hiệu băng thơng rộng, và do đó việc tính Zero-Crossing rate
của tín hiệu đó kém chính xác hơn nhiều nhưng có thể thu được ước tính sơ bộ về đặc trưng của tiếng nói bằng cách sử
dụng một biểu diễn dựa trên Zero-Crossing rate[3].
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
7
Hình 2.4. Biểu đồ minh họa đường biểu diễn Zero-Crossing rate của tín hiệu tiếng nói ([2] Figure 2.8)
Nhìn vào đồ thị tín hệu, chúng ta có thể quan sát thấy các khoảng lặng mặc dù có năng lượng khá thấp nhưng
đồ thị dạng sóng dày đặc hơn, hỗn loạn hơn và dao động xung quanh trục 0. Từ đó ta sẽ tính mật độ đi qua( băng qua)
trục 0 của tín hiệu- hay được gọi là Zero-Crossing Rate (ZCR).[2]
Cơng thức tính Zero-Crossing Rate của tín hiệu rời rạc được định nghĩa:
ZCR[n] = |���(�[�]) - ���(�[� - 1])| * w(n - m)
Trong đó:
sgn[x(m)] = 1
nếu x(m) ≥ 0
= -1 nếu x(m) < 0,
x(m) là biên độ tín hiệu tại mẫu thứ m
w(n - m) =
nếu 0 ≤ n ≤ N -1
=0
nếu otherwise
[3]
Hình 2.5. Đường biểu diễn đường Zero-Crossing rate của tín hiệu studio_male.wav
Nhóm 9, lớp HP: 1022103.2010.18.11
8
2. Sơ đồ thuật tốn
Đúng
Sai
Hình 2.6. Sơ đồ khối thuật toán Zero-Crossing rate kết hợp Short-Time Energy
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
3. Các tham số tham gia thuật toán
-
9
BEGIN
Tần số của tín hiệu vào
Tần số lấy mẫu
Độ dài mỗi khung (Frame)
Năng lượng và ZCR của mỗi khung tín hiệu
INPUT SIGNAL
Ngưỡng lấy giá trị năng lượng và ZCR (Threshold)
4. Đánh giá thuật toán và vần đề cần khắc phục
a.
-
b.
-
Đánh giá thuật tốn
Xử lí tín hiệu thành từng
Ưu điểm: Nhanh chóng xác định
được
khung
hình.giá trị ZCR tại các thời điểm trong miền thời gian
rời rạc, tổng quát hóa được chỉ số ZCR của tín hiệu đầu vào.
Nhược điểm: Chưa thể xác định được ngưỡng lấy mẫu (Thresdold) của mỗi tín hiệu riêng
biệt một cách tự động.
Thuật tốn chưa phân tích đúng tín hiệu rời rạc của các file lab_female.wav và
Tính Short – Time – Energy
lab_male.wav.
(STE) và Zero - Crossing Giải pháp
Ratetrị(ZCR)
Quan sát trước đồ thị năng lượng và giá
ZCR của tín hiệu tiếng nói để xác định ngưỡng lấy mẫu.
C. Xử lí ngắn hạn (Short-time / time dependent processing)
1. Cơ sở lý thuyết
-
STE
và tuần
ZCRhồn …) biến đổi chậm theo thời gian.
Tín hiệu tiếng nói có đặc trưngChuẩn
(năng hố
lượng,
tính
Đặc trưng của tín hiệu có thể coi như là khơng đổi trong khoảng thời gian ngắn từ 10 – 30 ms (thời gian phát
ra một âm).
Tìm đặc trưng của một khung và kết hợp đặc trưng của các khung liên tiếp để tạo thành đặc trưng của tín hiệu
tiếng nói.
2. Triển khai thuật tốn
-
Tín hiệu tiếng nói.
Tìm STE –ZCR > Threshold
Tín hiệu tiếng nói ⸻> chia thành các khung có độ lớn 20ms nối tiếp nhau, các khung chồng lên nhau 50%
để thu được đặc trưng của tín hiệu rời rạc một cách trơn tru.
Khoảng lặng.
Phânhọa
đoạn
hiệu
tiếng
vàhạn (Short-time / time dependent processing)
Hình 2.7. Hình minh
chotín
thuật
tốn
xử línói
ngắn
D. Chuẩn hóa các giá trị tính tốn
khoảng lặng.
1. Vấn đề phát sinh
Việc tính tốn các giá trị Short-Time Energy, Magnitude Average và Zero-Crossing rate hoàn thành đã đồng bộ
về các vector có kích thước bằng nhau. Tuy nhiên,
các giá trị tính tốn thu được là khơng đồng đều và cùng đơn vị. Do
END.
đó cần phải chuẩn hóa các vector về một dạng khử đi đơn vị và đồng đều về mặt độ lớn giá trị của mỗi vector.
Ý tưởng được đưa ra để giải quyết vấn đề trên là sự dụng chuẩn hóa theo dải (0, 1).
2. Cơng thức chuẩn hóa
Cơng thức chuẩn hóa theo dải[0,1]:
Xnorm =
Trong đó: X là các vector đã được tính từ các hàm thuật tốn
Xmin, Xmax là gía trị nhỏ nhất và lớn nhất của X
Nhóm 9, lớp HP: 1022103.2010.18.11
10
Xnorm là vector X sau khi chuẩn hóa
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
11
III. MÃ CHƯƠNG TRÌNH CÀI ĐẶT CÁC THUẬT
TỐN
1. Thuật tốn xử lí tín hiệu ngắn hạn
File: main.m
Tham số quan trọng: tín hiệu tiếng nói, tần số fs và độ dài tín hiệu length(x).
Hồn thành thuật tốn: tín hiệu được phân khung hóa, tổng số khung và vector thời gian của các khung.
Code.
[x, fs] = audioread('studio_female.wav');
% [x, fs] = audioread('studio_male.wav');
% [x, fs] = audioread('LA001.wav');
% [x, fs] = audioread('LA025.wav');
% [x, fs] = audioread('lab_female.wav');
% [x, fs] = audioread('lab_male.wav');
%------------------------------x = x/max(abs(x));
N = length(x);
t = (0:N-1)/fs;
% doc file tin hieu vao
% doc file tin hieu vao
% doc file tin hieu vao
% doc file tin hieu vao
% doc file tin hieu vao
% doc file tin hieu vao
% Chuan hoa tin hieu hoa tin hieu ve doan [-1,1]
% do dai tin hieu ban dau
% vector thoi gian
%% cai dat khung
% input: x , fs , N
% output: frames , t_frame, N_Frame
% trong do: + frames la vector 2 chieu: tat ca cac gia tri cua 1 cot chua
%
vector tin hieu cua 1 khung
%
+ t_frame la vector thoi gian cua cac khung
%
+ N_frame la tong so khung
frame_du=0.02;
frame_size=round(frame_du*fs);
h_frame=round(frame_size/2);
N_frame=floor((N-h_frame)/h_frame);
frames=zeros(frame_size,N_frame);
% do dai thoi gian cua 1 khung(20ms)
% so mau cua 1 khung
% so mau cua 1/2 khung
% tong so khung
% tao vector 2 chieu chua cac khung
for i=1:N_frame
% tao vector temp chua cac gia tri mau cua khung thu i tu tin hieu ban dau
temp = x(1+(i-1)*h_frame : frame_size+(i-1)*h_frame);
frames(:, i) = temp;
% them khung thu i vao frames
end
t_frame=(0:h_frame:(N_frame-1)*h_frame)/fs;
% vector thoi gian cua cac khung
2. Thuật toán Short-Time Energy với chuẩn hóa dải[0,1]
File: STE_chuan_hoa1.m
Tham số quan trọng: tín hiệu, vector miền thời gian của tín hiệu, độ dài thời gian mỗi khung, độ dài của
khung, khung tín hiệu xử lí ngắn hạn, vector miền thời gian của khung tín hiệu
Hồn thành thuật tốn: 3 biểu đồ biểu diễn tín hiệu, đường thể hiện các hàm Short-Time Energy sử dụng
chuẩn hóa dải(0,1) và các đường thẳng đứng thể hiện các biên thời gian tìm được(STE).
Code.
function STE_chuan_hoa1(x,t,frame_du,N_frame,frames,t_frame)
% input: x,t,frame_du,N_frame,frames,t_frame(cac gia tri cua tin hieu vao x va khung frames)
% output: 3 bieu do bieu dien: + bieu do 1: ve tin hieu ban dau
%
+ bieu do 2: ve STE va Threshold
%
+ bieu do 3: ve tin hieu ban dau sau khi
%
phan biet gong noi va khoang lang
%% Short-Time energy
% input: frames, N_fame
% output: STE (STE la vector chua gia tri nang luong ngan han cua tung khung )
12
Nhóm 9, lớp HP: 1022103.2010.18.11
STE=zeros(1,N_frame);
% tao vector STE
for i=1:N_frame
STE(i)=sum(frames(:,i).^2);
% tinh gia tri STE cua khung thu i
end
STE = (STE - min(STE))/(max(STE) - min(STE));
%Chuan hoa 1 STE;
%% phan biet giong noi va khoang lang
% input: STE , frames
% output: id_speech (vector chua vi tri dau, cuoi cac doan tieng noi)
%
local_speech (vector chua vi tri trung binh cua cac khung la dau, cuoi cua doan tieng noi
%
theo vector thoi gian )
Threshold=0.02;
% nguong gia tri phan biet tieng noi, khoang lang
id = FindID(STE,Threshold)
% id la vector chua vi tri cac khung thoa man la tieng noi
% dung ham FindID1 tu dinh nghia
id_speech=id(1);
% vi tri cua khung bat dau doan tieng noi dau tien
n=2;
for i = 2:length(id)
if(id(i)-id(i-1) > 20)
% giua 2 id tieng noi lien tiep cach xa nhau hon 200ms la khoang lang
% giua 2 khung cach nhau trung binh 10ms
% ---> 20 khung tuong duong cach nhau 200ms
id_speech(n)=id(i-1);
% vi tri cua khung ket thuc doan tieng noi truoc
id_speech(n+1)=id(i);
% vi tri cua khung bat dau doan tieng noi sau
n=n+2;
end
end
id_speech(n)=id(i);
% vi tri cua khung ket thuc doan tieng noi cuoi cung
local_speech=frame_du/2*id_speech; % vi tri khung theo thoi gian trung binh = 10ms * vi_tri_khung
%% bieu do ket qua
% bieu do 1: ve tin hieu ban dau
figure(1)
subplot(3, 1, 1)
plot(t, x)
grid on
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Amplitude')
title('The signal in the time domain')
% bieu do 2: ve STE va Threshold
subplot(312)
plot(t_frame,STE,'LineWidth',1.1)
hold on
yline(Threshold,'r','LineWidth',1.2);
hold of
legend('Short-Time Energy','Threshold','Location','southeast');
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Energy')
title('Short-Time Energy')
% bieu do 3: ve tin hieu ban dau sau khi phan biet gong noi va khoang lang
subplot(313)
grid on
plot(t,x);
hold on
for i = 1:length(local_speech)
xline(local_speech(i),'r','LineWidth',1.2);
end
legend('Tin hieu tieng noi','Vi tri phan doan tieng noi','Location','southeast');
grid on
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
13
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Amplitude')
title('Speech/Silence discrimination')
hold of
grid of
end
3. Thuật toán Magnitude Average và Short-Time Energy
File: MA_STE.m
Tham số quan trọng: tín hiệu, vector miền thời gian của tín hiệu, độ dài thời gian mỗi khung, độ dài của
khung, khung tín hiệu xử lí ngắn hạn, vector miền thời gian của khung tín hiệu.
Hồn thành thuật tốn: 3 biểu đồ biểu diễn tín hiệu, đường thể hiện các hàm Magnitude Average và ShortTime Energy và các đường thẳng đứng thể hiện các biên thời gian tìm được(MA).
Code.
function MA_STE(x,t,frame_du,N_frame,frames,t_frame)
% input: x,t,frame_du,N_frame,frames,t_frame(cac gia tri cua tin hieu vao x va khung frames)
% output: 3 bieu do bieu dien: + bieu do 1: ve tin hieu ban dau
%
+ bieu do 2: ve MA,STE va Threshold
%
+ bieu do 3: ve tin hieu ban dau sau khi
%
phan biet gong noi va khoang lang
%% Magnitude Average
% input: frames, N_frame
% output: MA (MA la vector chua cac gia tri Magnitude Average cua cac khung)
MA=zeros(1,N_frame);
% tao vector MA
for i=1:N_frame
MA(i)=sum(abs(frames(:,i)));
% tinh gia tri MA cua khung thu i
end
MA = (MA - min(MA))/(max(MA) - min(MA));
% Chuan hoa 1 MA
%% Short-Time Energy
% input: frames, N_fame
% output: STE (STE la vector chua gia tri nang luong ngan han cua tung khung )
STE=zeros(1,N_frame);
% tao vector STE
for i=1:N_frame
STE(i)=sum(frames(:,i).^2);
% tinh gia tri STE cua khung thu i
end
STE = (STE - min(STE))/(max(STE) - min(STE)); % Chuan hoa 1 STE
%% phan biet giong noi va khoang lang
% input: MA , frames
% output: id_speech (vector chua vi tri dau,cuoi cac doan tieng noi)
%
local_speech (vector chua vi tri trung binh cua cac khung la dau, cuoi cua doan tieng noi
%
theo vector thoi gian )
Threshold=0.1;
% nguong gia tri phan biet tieng noi, khoang lang
id = FindID(MA,Threshold);
% id la vector chua vi tri cac khung thoa man la tieng noi
% dung ham FindID1 tu dinh nghia
id_speech=id(1);
% vi tri cua khung bat dau doan tieng noi dau tien
n=2;
for i = 2:length(id)
if(id(i)-id(i-1) > 20)
% giua 2 id tieng noi lien tiep cach xa nhau hon 200ms la khoang lang
% giua 2 khung cach nhau trung binh 10ms
% ---> 20 khung tuong duong cach nhau 200ms
id_speech(n)=id(i-1);
% vi tri cua khung ket thuc doan tieng noi truoc
id_speech(n+1)=id(i);
% vi tri cua khung bat dau doan tieng noi sau
n=n+2;
end
end
id_speech(n)=id(i);
% vi tri cua khung ket thuc doan tieng noi cuoi cung
local_speech=frame_du/2*id_speech;
%% bieu do ket qua
14
Nhóm 9, lớp HP: 1022103.2010.18.11
% bieu do 1: ve tin hieu ban dau
figure(1)
subplot(3, 1, 1)
plot(t, x)
grid on
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Amplitude')
title('The signal in the time domain')
%bieu do 2: ve MA,STE va Threshold
subplot(312)
plot(t_frame,MA,'LineWidth',1.1)
hold on
plot(t_frame,STE,'LineWidth',1.1)
yline(Threshold,'g','LineWidth',1.2);
hold of
legend('MA','Short-Time Energy','Threshold','Location','southeast');
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Energy')
title('MA and Short-Time Energy')
% bieu do 3: ve tin hieu ban dau sau khi phan biet gong noi va khoang lang
subplot(313)
grid on
plot(t,x);
hold on
for i = 1:length(local_speech)
xline(local_speech(i),'r','LineWidth',1.2);
end
set(gca,'ylim',[0 1]);
legend('Tin hieu tieng noi','Vi tri phan doan tieng noi','Location','southeast');
grid on
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Amplitude')
title('MA - Speech/Silence discrimination')
hold of
grid of
end
4. Thuật toán Short-Time Energy và Zero-Crossing rate
File: ZCR_STE_program.m
Tham số quan trọng: tín hiệu, vector miền thời gian của tín hiệu, độ dài thời gian mỗi khung, độ dài của
khung, khung tín hiệu xử lí ngắn hạn, vector miền thời gian của khung tín hiệu
Hồn thành thuật tốn: 3 biểu đồ biểu diễn tín hiệu, đường thể hiện các hàm Short-Time Energy kết hợp ZeroCrossing rate và các đường thẳng đứng thể hiện các biên thời gian tìm được(STE & ZCR).
Code.
function ZCR_STE_program(x,t,frame_du,N_frame,frames,t_frame)
% input: x,t,frame_du,N_frame,frames,t_frame(cac gia tri cua tin hieu vao x va khung frames)
% output: 4 bieu do bieu dien: + bieu do 1: ve tin hieu ban dau
%
+ bieu do 2: ve STE va ZRC
%
+ bieu do 3: ve STE-ZRC va Threshold
%
+ bieu do 4: ve tin hieu ban dau sau khi
%
phan biet tieng noi va khoang lang
%% Short-Time energy
% input: frames, N_fame
% output: STE (STE la vector chua gia tri nang luong ngan han cua tung khung )
STE=zeros(1,N_frame);
% tao vector STE
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
for i=1:N_frame
STE(i)=sum(frames(:,i).^2);
% tinh gia tri STE cua khung thu i
end
STE = (STE - min(STE))/(max(STE) - min(STE));
%Chuan hoa 1 STE;
%% Zero-Crossing Rate
% input: frames, N_frame
% Output: ZCR (ZCR la vector chua gia tri Zero-Crossing Rate cua tun khung)
ZCR=zeros(1,N_frame);
% Khoi tao vector ZCR
for i=1:N_frame
tam = zeros(size(frames(:,i)));
%Cai dat frame thu i[1:end]
tam(2:end) = frames(1:end-1,i);
%Cat dat frame thu i[0 2:end]
ZCR(i) = 1/2 * sum(abs(sgn(frames(:,i)) - sgn(tam)));%Tinh gia tri ZCR theo cong thuc
end
ZCR = ZCR.^2;
%khuech dai gia tri ZCR
ZCR = (ZCR - min(ZCR))/(max(ZCR) - min(ZCR)); %Chuan hoa ZCR
%% phan biet giong noi va khoang lang
% input: STE , frames
% output: id_speech (vector chua vi tri dau, cuoi cac doan tieng noi)
%
local_speech (vector chua vi tri trung binh cua cac khung la dau, cuoi cua doan tieng noi
%
theo vector thoi gian )
Threshold = 0.02;
% nguong gia tri phan biet tieng noi, khoang lang
id = FindID(STE - ZCR,Threshold);
id_speech=id(1);
n=2;
for i = 2:length(id)
if(id(i)-id(i-1) > 20)
% id la vector chua vi tri cac khung thoa man la tieng noi
% dung ham FindID tu dinh nghia
% vi tri cua khung bat dau doan tieng noi dau tien
% giua 2 id tieng noi lien tiep cach xa nhau hon 200ms la khoang lang
% giua 2 khung cach nhau trung binh 10ms
% ---> 20 khung tuong duong cach nhau 200ms
% vi tri cua khung ket thuc doan tieng noi truoc
% vi tri cua khung bat dau doan tieng noi sau
id_speech(n)=id(i-1);
id_speech(n+1)=id(i);
n=n+2;
end
end
id_speech(n)=id(i);
% vi tri cua khung ket thuc doan tieng noi cuoi cung
local_speech=frame_du/2*id_speech; % vi tri khung theo thoi gian trung binh = 10ms * vi_tri_khung
%% bieu do ket qua
% bieu do 1: ve tin hieu ban dau
figure(1)
subplot(4, 1, 1)
plot(t, x)
grid on
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Amplitude')
title('The signal in the time domain')
%bieu do 2: ve STE va ZRC
subplot(412)
plot(t_frame,ZCR,'LineWidth',1.1)
hold on
plot(t_frame,STE,'LineWidth',1.1)
hold of
legend('Zero-Crossing Rate','Short-Time Energy','Location','southeast');
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
title('Short-Time Energy and Zeros-Crossing Rate')
15
Nhóm 9, lớp HP: 1022103.2010.18.11
16
%bieu do 3: ve STE-ZRC va Threshold
subplot(413)
plot(t_frame,STE-ZCR,'LineWidth',1.1)
hold on
yline(Threshold,'r','LineWidth',1.2);
hold of
legend('STE - ZCR','Threshold','Location','southeast');
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
title('Threshold of Zeros-Crossing Rate and Short-Time Energy')
% bieu do 4: ve tin hieu ban dau sau khi phan biet gong noi va khoang lang
subplot(414)
grid on
plot(t,x);
hold on
for i = 1:length(local_speech)
xline(local_speech(i),'r','LineWidth',1.2);
end
legend('Tin hieu tieng noi','Vi tri phan doan tieng noi','Location','southeast');
grid on
set(gca, 'FontName', 'Times New Roman', 'FontSize', 12)
xlabel('Time, s')
ylabel('Amplitude')
title('Speech/Silence discrimination')
hold of
grid of
end
5. Các hàm đã sử dụng
a.
FindID.m
Hàm xử lí tìm kiếm các giá trị vị trí index thỏa mãn điều kiện của ngưỡng phân đoạn tiếng nói và khoảng
lặng(Threshold).
Code.
%% ham tim id 1
% input: x, nguong
% x: la vector dau vao ca so sanh
% nguong: la gia tri lam nguong
% output: y
% y: la vector dau ra chua cac vi tri thoa man tim kiem x(i)>nguong
function [y] = FindID(x, nguong)
k=1;
for i=1:length(x)
if(x(i) >= nguong)
y(k)=i;
k=k+1;
end
end
end
b. sgn.m
Hàm trả về giá trị sgn[x(m)] =
Code.
function x = sgn(frames)
%% SGN ham sua doi tin hieu.
% Doi voi moi phan tu cua frame, SGN(frames) tra ve 1 neu phan tu
% lon hon hoac bang 0 và -1 neu la nho hon 1.
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
17
% Trong do: frame la mot khung tin hieu
%-------------------------x = frames;
for i=1:length(x)
if ( x(i)>=0 )
% x(i) = 1 neu x(i) >= 0;
x(i) = 1;
else
x(i) = -1;
% x(i) = -1 neu x(i) < 0;
end
end
end
IV. KẾT QUẢ THỰC NGHIỆM
Các file tín hiệu định tính: lab_female.wav, lab_male.wav, studio_female.wav, studio_male.wav, LA001.wav,
LA025.wav.
A. Hình ảnh kết quả thực nghiệm (kết quả định tính)
1. Thuật tốn Short-Time Energy với chuẩn hóa dải [0,1]
Hình 4.1. Biểu đồ thuật tốn Short-Time Energy của tính hiệu lab_female.wav (Threshold = 0.01)
Hình 4.2. Biểu đồ thuật tốn Short-Time Energy của tính hiệu lab_male.wav (Threshold = 0.01)
Nhóm 9, lớp HP: 1022103.2010.18.11
18
Hình 4.3. Biểu đồ thuật tốn Short-Time Energy của tính hiệu studio_female.wav (Threshold = 0.01)
Hình 4.4. Biểu đồ thuật tốn Short-Time Energy của tính hiệu studio_male.wav (Threshold = 0.01)
2. Thuật toán Magnitude Average (MA) và Short-Time Energy (STE)
Hình 4.5. Biểu đồ thuật tốn MA và STE của tín hiệu lab_female.wav (Threshold = 0.02)
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
Hình 4.6. Biểu đồ thuật tốn MA và STE của tín hiệu lab_male.wav (Threshold = 0.12)
Hình 4.7. Biểu đồ thuật tốn MA và STE của tín hiệu studio_female.wav (Threshold = 0.1)
Hình 4.8. Biểu đồ thuật tốn MA và STE của tín hiệu studio_male.wav (Threshold = 0.035)
3. Thuật tốn Short-Time Energy và Zero-Crossing rate
19
20
Nhóm 9, lớp HP: 1022103.2010.18.11
Hinh 4.9. Biểu đồ thuật tốn STE và ZCR của tín hiệu lab_female.wav (Threshold = 0.02)
Hinh 4.10. Biểu đồ thuật tốn STE và ZCR của tín hiệu lab_male.wav (Threshold = 0.02)
Hinh 4.11. Biểu đồ thuật toán STE và ZCR của tín hiệu studio_female.wav (Threshold = 0.02)
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
21
Hinh 4.12. Biểu đồ thuật toán STE và ZCR của tín hiệu studio_male.wav (Threshold = 0.02)
B. Kết quả định lượng
Tham số quan trọng ảnh hưởng trực tiếp đến kết quả phân đoạn tiếng nói và khoảng lặng là ngưỡng
(threshold) của thuật toán. Như đã đề cập ở phần lý thuyết thì thuật tốn mà chúng tơi cài đặt vẫn cịn nhược điểm lớn
đó là chưa thể tự động tìm ra ngưỡng phù hợp với các hàm. Điều này khiến chúng tơi phải đề ra ngưỡng của chương
trình một cách thủ công mà không đem lại quá nhiều độ chính xác của thuật tốn. Ví dụ như ở thuật tốn Magnitude
Average, tất cả các file tín hiệu đều có một tham số ngưỡng khác nhau.
Hình 4.13. Phân đoạn tiếng nói/ khoảng lặng thuật tốn MA (Threshold = 0.02)
22
Nhóm 9, lớp HP: 1022103.2010.18.11
Hình 4.14. Phân đoạn Phân đoạn tiếng nói/ khoảng lặng thuật tốn MA (Threshold = 0.2)
Quan sát Hình 4.13 và Hình 4.14 có thể thấy ưu điểm nổi trồi nhất của thuật toán MA (tương tự như với STE)
là tính đơn giản mà thuật tốn mang lại. Tuy nhiên, nhược điểm có thể nhận ra dễ dàng đó là nếu tín hiệu được thu
trong mơi trường có nhiều tín hiệu nhiễu thì độ chính xác của thuật toán giảm đi đáng kể.
Nhờ thực nghiệm ta nhận ra kết quả thu được từ tín hiệu lab_female.wav(Hình 4.9) và
lab_male.wav(Hình4.10) khơng chính xác. Điều này thể hiện rằng mơi trường thu âm tiếng nói ảnh hưởng trực tiếp đến
kết quả của các thuật toán. Thuật toán xuất hiện sai số là Short-Time Energy kết hợp Zero-Crossing rate. Do đó, chúng
ta cần quay lại để xem xét nguyên nhân thực tế nằm ở đâu từ yếu tố mơi trường.
Hình 4.15. Triển khai thuật tốn STE-ZCR trên tín hiệu lab_female.wav
Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng
23
Hình 4.15. Triển khai thuật tốn STE-ZCR trên tín hiệu lab_male.wav
Nhìn vào đường đi của Zero-Crossing rate có thể thấy rằng: mặc dù tín hiệu vào (lab_) chỉ gồm các âm đơn lẻ
cách xa nhau nhưng đồ thị lại rất hỗn loạn và khó có thể phân tích. Điều này chứng tỏ thuật tốn Zero-Crossing rate
khơng thể triển khai trong mơi trường thu âm của phịng lab được.
Hình 4.16. Khoảng lặng của tín hiệu lab_female.wav và studio_female.wav
Hình 4.16 thể hiện rõ ràng sự khác nhau giữa tín hiệu tiếng nói thu từ phịng lab và studio. Có thể kêt luận rằng: tuy
khoảng lặng của tín hiệu khó có thể hoặc khơng nghe được, tuy nhiên, vì khoảng lặng thật sự khơng bao giờ là khoảng
lặng nó vẫn có biên độ, năng lượng (STE) và tốc độ băng qua 0 (ZCR).
C. Sai số của các thuật toán
Bảng 1. Sai số của các thuật toán (đơn vị frame)
File TH
lab_female.wav
lab_male.wav
studio_female.wav
studio_male.wav
MA
0.8785
2.9035
1
0.849
STE
3.3605
1.7585
0.47
1.3835
STE vs ZCR
x
x
1.578
2.44
Thuật tốn
1 frame = 0.02 ms
V. KẾT LUẬN
Thơng qua đọc các tài liệu tham khảo có liên quan, chúng tơi đã đi tìm hiểu lí thuyết cơ bản về xử lí và phân
đoạn tín hiệu tiếng nói bằng các thuật toán Magnitude Average (MA), Short-Time Energy (STE) và Zero-Crossing rate.
Triển khai các thuật toán trên phần mền MATLAB thực nghiệm các file tín hiệu âm thanh.
Kết luận nhờ khảo nghiệm trực tiếp đã chỉ ra rằng thuật toán kết hợp Short-Time Energy (STE) và ZeroCrossing rate cho kết quả thiếu chính xác hơn hai thuật tốn cịn lại; ta cũng nhận thấy mơi trường studio cho thơng tin
tín hiệu tốt hơn. Ngồi ra, việc cài đặt thuật tốn phải cần cải thiện nhiều hơn, đặc biệt là tự động hóa các hàm chức
năng xử lí tín hiệu.
Bên cạnh đó, trong q trình làm báo cáo, chúng tơi học được cách làm việc nhóm, hiểu
về kĩ năng thuyết trình và xây dựng một bài báo cáo hoàn chỉnh. Tuy nhiên, vẫn cịn một số
hạn chế về cài đặt thuật tốn cũng như văn phong trình bày báo cáo vẫn chưa được tốt. Mong
rằng trong tương lai không xa, các kỹ năng cịn thiếu sẽ được nâng cao và hồn thiện hơn.
VI. TÀI LIỆU THAM KHẢO
[1] Luận văn cao học “Luận văn_Tran Van Tam_2019.pdf”.
[2] CS425 Audio and Speech Processing_Hodgkinson_2012, in Voiced/Unvoiced/Silence discrimination through timedomain processing, pp 32-40.
[3] Textbook “Prentice Hall - Digital Processing Of Speech Signals_1978.pdf”, in Time-Domain Methods for Speech
Processing, pp 116-135.