Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
4,54 MB
Nội dung
Báo cáo 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ý SV (SV ghi cụ thể GV dễ đặt câu hỏi cho điểm SV) (mỗi SV ký xác nhận trước 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 viết báo cáo thuật toán X (tr 10-11) Đọc tài liệu, cài đặt viết báo cáo thuật toán Y (tr 6-9) Nguyễn Lê Tài Đọc tài liệu viết báo cáo thuật toán Z (tr 3), thống kê sai số thuật toán T (tr 20), làm slide 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) phần kết thực nghiệm (tr 16-19) Lời cam đoan: Chúng tơi, gồm sinh viên có chữ ký trên, cam đoan báo cáo tự viết dựa 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 mã nguồn chương trình khơng dẫn nguồn tham khảo tự làm Nếu vi phạm chúng tơi xin chịu trách nhiệm tn theo xử lý giáo viên hướng dẫn TÓM TẮT— Phân biệt ‘Tiếng nói’ ‘Khoảng lặng’ tín hiệu tốn cần thiết xử lý tín hiệu âm Bài báo cáo thực việc cài đặt thuật tốn tìm lượng tỉ lệ băng qua điểm khơng tín hiệu tiếng nói miền thời gian Tại mơi trường khác khả phân biệt tiếng nói với khoảng lặng khác Và mơi trường phịng thu ‘Studio’ mơi trường phân biệt rõ tiếng nói khoảng lặng mơi kín tạp âm Từ khóa + Từ khố tiếng Anh: Speech/Silence discrimination, short-time energy, zero-crossing rate, MATLAB + Từ khoá tiếng Việt: phân biệt tiếng nói & khoảng lặ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 Mục lục I ĐẶT VẤN ĐỀ LÝ THUYẾT XỬ LÝ TÍN HIỆU TIẾNG NĨI VÀ CÁC THUẬT TOÁN II A B C D Thuật toán Short-Time Energy Mean Average Lý thuyết, cơng thức thuật tốn Short-Time Energy Magnitude Average Sơ đồ thuật toán Các tham số tham gia thuật toán Đánh giá thuật toán vấn đề cần khắc phục Thuật toán kết hợp Zero-Crossing Rate Short-Time Energy Lý thuyết, cơng thức thuật tốn Zero-Crossing Rate(ZCR) Sơ đồ thuật toán Các tham số tham gia thuật toán Đánh giá thuật toán vần đề cần khắc phục Xử lí ngắn hạn (Short-time / time dependent processing) .8 Cơ sở lý thuyết Triển khai thuật toán Chuẩn hóa giá trị tính tốn .8 Vấn đề phát sinh Cơng thức chuẩn hóa Mà CHƯƠNG TRÌNH CÀI ĐẶT CÁC THUẬT TỐN III Thuật tốn xử lí tín hiệu ngắn hạn Thuật tốn Short-Time Energy với chuẩn hóa dải[0,1] Thuật toán Magnitude Average Short-Time Energy 11 Thuật toán Short-Time Energy Zero-Crossing rate 12 Các hàm sử dụng 14 KẾT QUẢ THỰC NGHIỆM 14 IV A Hình ảnh kết thực nghiệm (kết định tính) 15 Thuật toán Short-Time Energy với chuẩn hóa dải [0,1] 15 Thuật toán Magnitude Average (MA) Short-Time Energy (STE) .16 Thuật toán Short-Time Energy Zero-Crossing rate 17 B Kết định lượng .19 C Sai số 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 ĐẶT VẤN ĐỀ Trong lịch sử phát triển xã hội loài người, tiếng nói cơng cụ khơng thể thiếu Tiếng nói giúp cho giao tiếp người người trở nên linh hoạt hơn, dễ hiểu Tiếng nói phương tiện để phân biệt người với lồi động vật khác Nhờ có tiếng nói, người có xã hội, có phát triển lên qua nhiều hình thái xã hội[1] Thời đại ngày nay, mà Công nghệ thông tin ngày góp phần quan trọng việc phục vụ lợi ích, nâng cao đời sống chúng ta, việc áp dụng mơ tiếng nói dần đóng vai trị quan trọng Nghiên cứu mơ tiếng nói với trí tuệ nhân tạo tạo thành xu nghiên cứu chủ yếu giai đoạn Đặc biệt, công nghệ thông tin trở thành cốt lõi Cách mạng công nghiệp 4.0, việc nghiên cứu mô 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 người việc giao tiếp người với người, máy móc với người[1] Trong này, tìm hiểu cách nhận dạng tiếng nói phân đoạn tín hiệu tiếng nói Báo cáo có bố cục sau: phần II trình bày lý thuyết, cơng thức, sơ đồ khối, đánh giá ý tưởng, vấn đề phát sinh thuật tốn tính Short-Time Energy(STE), Magnitude Average(MA) Zero-Crossing Rate(ZCR) Phần III trình bày mã chương trình cài đặt thuật tốn Phần IV trình bày biểu đồ sau chạy chương trình cài đặt, đưa đánh giá độ xác thuật tốn, nêu phân tích tham số/yếu tố ảnh hưởng đến thuật tốn Phần V kết luận, tóm lại kết đạt đề xuất hướng phát triển cải thiện 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 đoạn im lặng, nên tìm nhiều thuộc tính đáng tin cậy tốt tạo khác biệt trạng thái lời nói trạng thái im lặng Thật khơng may trường hợp phân tách giọng nói – im lặng, dường có thứ đủ đáng tin cậy dễ hiểu: mức độ, cao cho phân đoạn giọng nói Chúng tơi nói điều khơng may, thuộc tính khơng hồn tồn đáng tin cậy, im lặng khơng thực im lặng; ln có chút tiếng ồn mơi trường sánh ngang với âm giọng nói yếu ớt nhất, chẳng hạn tiếng ma sát khơng có âm Nếu tiếng ồn cho thấy đặc điểm miền thời gian khác phân biệt với dạng sóng giọng nói, nên sử dụng chúng Nhưng dường khơng phải vậy, đặc tính tiếng ồn xung quanh hồn tồn phụ thuộc vào mơi trường ghi, giả định đưa Nói cách khác, phải tìm đặc điểm trạng thái đặc trưng hóa, khơng phải thuật ngữ chung Trong miền tần số, lấy in phổ tiếng ồn giúp ích cho việc xác định đặc tính nó, miễn miền thời gian, cho mức độ im lặng nhỏ mức độ tiếng ồn phân đoạn chưa lập hóa đơn sử dụng điều làm tiêu chí phân biệt [2] Nhờ đó, mắt thường dễ dàng phát phân đoạn im lặng Chúng ta làm điều có tầm nhìn tổng thể đường bao, đường viền dạng sóng, đường biểu diễn lượng, biên độ tốc đọ băng qua mức Câu hỏi mà cần giải phần sau làm nào, cấp độ xử lý tín hiệu, để có thơng tin mà muốn từ tín hiệu tiếng nói[2] A Thuật toán Short-Time Energy Mean Average Lý thuyết, cơng thức thuật tốn Short-Time Energy Magnitude Average a) Short-Time Energy Short-Time Energy (STE) tín hiệu tiếng nói thu cách tính tổng bình phương giá trị biên độ số lượng mẫu N hữu hạn [2] Cơng thức tính lượng mẫu tín hiêu rời rạc định nghĩa [2]: STE[n] = x2 [n - m] Trong đó: o STE[n] lượng tín hiệu o x[n – m] biên độ tín hiệu mẫu thứ m o N giá trị độ dài lấy mẫu tín hiệu ,[2](2.1) Nhóm 9, lớp HP: 1022103.2010.18.11 Chúng ta quan sát thấy biên độ tín hiệu giọng nói thay đổi đáng kể theo thời gian Biên độ phân đoạn khơng có tiếng nói thấp nhiều so với biên độ phân đoạn có tiếng nói Năng lượng ngắn hạn (STE) tín hiệu giọng nói cung cấp biểu đồ phản ánh rõ rang biến đổi biên độ [1] Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng Chúng ta xác định lượng ngắn hạn tín hiệu 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) tín hiệu tiếng nói rời rạc thu cách tính tổng giá trị tuyệt đối giá trị biên độ lượng mẫu N hữu hạn [2] MA tín hiêu thời gian rời rạc định nghĩa [2]: MA[n] = |x[n – m]| ,[2](2.2) Trong đó: o MA[n] Mean Average tín hiệu o x[n – m] biên độ tín hiệu mẫu thứ m o N giá trị độ dài lấy mẫu tín hiệu Hình 2.1.Đường biễu diễn minh họa Short-Time Energy Magnitude Average tín hiệu tiếng nói ([2Figure 2.2) Hình 2.2.Đường biễu diễn Short-Time Energy Magnitude Average tín hiệu lab_female.wav matlab Nhóm 9, lớp HP: 1022103.2010.18.11 Sơ đồ thuật tốn BEGIN INPUT SIGNAL Xử lí tín hiệu thành khung hình Tính Short-Time Energy Mean Average Chuẩn hóa STE MA Khoảng lặng Đúng Tìm STE MA> Threshold Phân đoạn tiếng nói 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 Magnitude Average Các tham số tham gia thuật toán - Tần số tín hiệu vào Tần số lấy mẫu Độ dài khung (Frame) Năng lượng biên độ trung bình(MA) khung tín hiệu Ngưỡng lấy giá trị lượng biên độ trung bình (Threshold) Đánh giá thuật toán 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 giá trị lượng thời điểm miềnthời gian rời rạc, tổng quát hóa số lượng tín hiệu đầu vào -Nhược điểm: Chưa thể xác định ngưỡng lấy mẫu(Thresdold) tín hiệu riêng biệt cách tự động Giải pháp -Quan sát trước đồ thị lượng MA 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 Short-Time Energy Lý thuyết, cơng thức thuật tốn Zero-Crossing Rate (ZCR) Zero-Crossing Rate phép đo đơn giản nội dung xử lí tín hiệu rời rạc Điều đặc biệt 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 tín hiệu băng thơng rộng, việc tính Zero-Crossing rate tín hiệu xác nhiều thu ước tính sơ đặc trưng tiếng nói cách sử dụng biểu diễn dựa Zero-Crossing rate[3] Trần Đăng Giáp, Hồ Thế Anh Đức, Nguyễn Lê Tài, Dương Thanh Dũng Hình 2.4 Biểu đồ minh họa đường biểu diễn Zero-Crossing rate tín hiệu tiếng nói ([2] Figure 2.8) Nhìn vào đồ thị tín hệu, quan sát thấy khoảng lặng có lượng thấp đồ thị dạng sóng dày đặc hơn, hỗn loạn dao động xung quanh trục Từ ta tính mật độ qua( băng qua) trục tín hiệu- hay gọi Zero-Crossing Rate (ZCR).[2] Cơng thức tính Zero-Crossing Rate tín hiệu rời rạc định nghĩa: ZCR[n] = |���(�[�]) - ���(�[� - 1])| * w(n - m) Trong đó: sgn[x(m)] = x(m) ≥ = -1 x(m) < 0, x(m) biên độ tín hiệu mẫu thứ m w(n - m) = ≤ n ≤ N -1 =0 otherwise [3] Hình 2.5 Đường biểu diễn đường Zero-Crossing rate tín hiệu studio_male.wav Nhóm 9, lớp HP: 1022103.2010.18.11 Sơ đồ thuật toán Đúng Sai Hình 2.6 Sơ đồ khối thuật tố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 Các tham số tham gia thuật toán - BEGIN Tần số tín hiệu vào Tần số lấy mẫu Độ dài khung (Frame) Năng lượng ZCR khung tín hiệu INPUT SIGNAL Ngưỡng lấy giá trị lượng ZCR (Threshold) Đánh giá thuật toán vần đề cần khắc phục a - b - Đánh giá thuật tốn Xử lí tín hiệu thành Ưu điểm: Nhanh chóng xác định khung hình.giá trị ZCR thời điểm miền thời gian rời rạc, tổng quát hóa số ZCR tín hiệu đầu vào Nhược điểm: Chưa thể xác định ngưỡng lấy mẫu (Thresdold) tín hiệu riêng biệt cách tự động Thuật tốn chưa phân tích tín hiệu rời rạc file lab_female.wav Tính Short – Time – Energy lab_male.wav (STE) Zero - Crossing Giải pháp Ratetrị(ZCR) Quan sát trước đồ thị lượng giá ZCR 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) Cơ sở lý thuyết - STE 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 tín hiệu coi không đổi khoảng thời gian ngắn từ 10 – 30 ms (thời gian phát âm) Tìm đặc trưng khung kết hợp đặc trưng khung liên tiếp để tạo thành đặc trưng tín hiệu tiếng nói 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 khung có độ lớn 20ms nối tiếp nhau, khung chồng lên 50% để thu đặc trưng tín hiệu rời rạc 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 giá trị tính tốn khoảng lặng Vấn đề phát sinh Việc tính tốn giá trị Short-Time Energy, Magnitude Average Zero-Crossing rate hoàn thành đồng vector có kích thước Tuy nhiên, giá trị tính tốn thu khơng đồng đơn vị Do END cần phải chuẩn hóa vector dạng khử đơn vị đồng mặt độ lớn giá trị vector Ý tưởng đưa để giải vấn đề dụng chuẩn hóa theo dải (0, 1) Cơng thức chuẩn hóa Cơng thức chuẩn hóa theo dải[0,1]: Xnorm = Trong đó: X vector tính từ hàm thuật tốn Xmin, Xmax gía trị nhỏ lớn X Nhóm 9, lớp HP: 1022103.2010.18.11 10 Xnorm vector X sau 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 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 độ dài tín hiệu length(x) Hồn thành thuật tốn: tín hiệu phân khung hóa, tổng số khung vector thời gian 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] % dai tin hieu ban dau % vector thoi gian %% cai dat khung % input: x , fs , N % output: frames , t_frame, N_Frame % do: + frames la vector chieu: tat ca cac gia tri cua cot chua % vector tin hieu cua 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); % dai thoi gian cua khung(20ms) % so mau cua khung % so mau cua 1/2 khung % tong so khung % tao vector 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 Thuật tố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 tín hiệu, độ dài thời gian khung, độ dài khung, khung tín hiệu xử lí ngắn hạn, vector miền thời gian khung tín hiệu Hồn thành thuật tốn: biểu đồ biểu diễn tín hiệu, đường thể hàm Short-Time Energy sử dụng chuẩn hóa dải(0,1) đường thẳng đứng thể 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: bieu bieu dien: + bieu 1: ve tin hieu ban dau % + bieu 2: ve STE va Threshold % + bieu 3: ve tin hieu ban dau sau % 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 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 id tieng noi lien tiep cach xa hon 200ms la khoang lang % giua khung cach trung binh 10ms % -> 20 khung tuong duong cach 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 ket qua % bieu 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 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 3: ve tin hieu ban dau sau 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 Thuật toán Magnitude Average Short-Time Energy File: MA_STE.m Tham số quan trọng: tín hiệu, vector miền thời gian tín hiệu, độ dài thời gian khung, độ dài khung, khung tín hiệu xử lí ngắn hạn, vector miền thời gian khung tín hiệu Hồn thành thuật tốn: biểu đồ biểu diễn tín hiệu, đường thể hàm Magnitude Average ShortTime Energy đường thẳng đứng thể 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: bieu bieu dien: + bieu 1: ve tin hieu ban dau % + bieu 2: ve MA,STE va Threshold % + bieu 3: ve tin hieu ban dau sau % 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 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 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 id tieng noi lien tiep cach xa hon 200ms la khoang lang % giua khung cach trung binh 10ms % -> 20 khung tuong duong cach 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 ket qua 14 Nhóm 9, lớp HP: 1022103.2010.18.11 % bieu 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 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 3: ve tin hieu ban dau sau 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 Thuật toán Short-Time Energy Zero-Crossing rate File: ZCR_STE_program.m Tham số quan trọng: tín hiệu, vector miền thời gian tín hiệu, độ dài thời gian khung, độ dài khung, khung tín hiệu xử lí ngắn hạn, vector miền thời gian khung tín hiệu Hồn thành thuật tốn: biểu đồ biểu diễn tín hiệu, đường thể hàm Short-Time Energy kết hợp ZeroCrossing rate đường thẳng đứng thể 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: bieu bieu dien: + bieu 1: ve tin hieu ban dau % + bieu 2: ve STE va ZRC % + bieu 3: ve STE-ZRC va Threshold % + bieu 4: ve tin hieu ban dau sau % 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 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 id tieng noi lien tiep cach xa hon 200ms la khoang lang % giua khung cach trung binh 10ms % -> 20 khung tuong duong cach 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 ket qua % bieu 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 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 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 4: ve tin hieu ban dau sau 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 Các hàm sử dụng a FindID.m Hàm xử lí tìm kiếm giá trị vị trí index thỏa mãn điều kiện ngưỡng phân đoạn tiếng nói khoảng lặng(Threshold) Code %% ham tim id % input: x, nguong % x: la vector dau vao ca so sanh % nguong: la gia tri lam nguong % output: y % y: la vector dau 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ả 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 neu phan tu % lon hon hoac bang -1 neu la nho hon 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) = 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 thực nghiệm (kết định tính) 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 tính hiệu lab_female.wav (Threshold = 0.01) Hình 4.2 Biểu đồ thuật tốn Short-Time Energy 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 tính hiệu studio_female.wav (Threshold = 0.01) Hình 4.4 Biểu đồ thuật tốn Short-Time Energy tính hiệu studio_male.wav (Threshold = 0.01) Thuật tốn Magnitude Average (MA) Short-Time Energy (STE) Hình 4.5 Biểu đồ thuật tốn MA STE 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 STE tín hiệu lab_male.wav (Threshold = 0.12) Hình 4.7 Biểu đồ thuật tốn MA STE tín hiệu studio_female.wav (Threshold = 0.1) Hình 4.8 Biểu đồ thuật tốn MA STE tín hiệu studio_male.wav (Threshold = 0.035) Thuật toán Short-Time Energy 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 ZCR tín hiệu lab_female.wav (Threshold = 0.02) Hinh 4.10 Biểu đồ thuật toán STE ZCR tín hiệu lab_male.wav (Threshold = 0.02) Hinh 4.11 Biểu đồ thuật toán STE ZCR 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 ZCR tín hiệu studio_male.wav (Threshold = 0.02) B Kết định lượng Tham số quan trọng ảnh hưởng trực tiếp đến kết phân đoạn tiếng nói khoảng lặng ngưỡng (threshold) thuật toán Như đề cập phần lý thuyết thuật tốn mà chúng tơi cài đặt cịn nhược điểm lớn chưa thể tự động tìm ngưỡng phù hợp với hàm Điều khiến phải đề ngưỡng chương trình cách thủ cơng mà khơng đem lại q nhiều độ xác thuật tốn Ví dụ thuật toán Magnitude Average, tất file tín hiệu có tham số ngưỡng khác 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 Hình 4.14 thấy ưu điểm trồi thuật toán MA (tương tự với STE) tính đơn giản mà thuật tốn mang lại Tuy nhiên, nhược điểm nhận dễ dàng tín hiệu thu mơi trường có nhiều tín hiệu nhiễu độ xác thuật toán giảm đáng kể Nhờ thực nghiệm ta nhận kết thu từ tín hiệu lab_female.wav(Hình 4.9) lab_male.wav(Hình4.10) khơng xác Điều thể mơi trường thu âm tiếng nói ảnh hưởng trực tiếp đến kết thuật toán Thuật toán xuất sai số Short-Time Energy kết hợp Zero-Crossing rate Do đó, 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 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 tín hiệu lab_male.wav Nhìn vào đường Zero-Crossing rate thấy rằng: tín hiệu vào (lab_) gồm âm đơn lẻ cách xa đồ thị lại hỗn loạn khó phân tích Điều chứng tỏ thuật tốn Zero-Crossing rate khơng thể triển khai mơi trường thu âm phịng lab Hình 4.16 Khoảng lặng tín hiệu lab_female.wav studio_female.wav Hình 4.16 thể rõ ràng khác tín hiệu tiếng nói thu từ phịng lab studio Có thể kêt luận rằng: khoảng lặng tín hiệu khó khơng nghe được, nhiên, khoảng lặng thật khơng khoảng lặng có biên độ, lượng (STE) tốc độ băng qua (ZCR) C Sai số thuật toán Bảng Sai số 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 0.849 STE 3.3605 1.7585 0.47 1.3835 STE vs ZCR x x 1.578 2.44 Thuật toán frame = 0.02 ms V KẾT LUẬN Thông qua đọc tài liệu tham khảo có liên quan, chúng tơi tìm hiểu lí thuyết xử lí phân đoạn tín hiệu tiếng nói thuật tốn Magnitude Average (MA), Short-Time Energy (STE) Zero-Crossing rate Triển khai thuật toán phần mền MATLAB thực nghiệm file tín hiệu âm Kết luận nhờ khảo nghiệm trực tiếp thuật toán kết hợp Short-Time Energy (STE) ZeroCrossing rate cho kết thiếu xác hai thuật tốn cịn lại; ta nhận thấy mơi trường studio cho thơng tin tín hiệu tốt 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 tự động hóa hàm chức xử lí tín hiệu Bên cạnh đó, q trình làm báo cáo, chúng tơi học cách làm việc nhóm, hiểu kĩ thuyết trình xây dựng báo cáo hồn chỉnh Tuy nhiên, cịn số hạn chế cài đặt thuật tốn văn phong trình bày báo cáo chưa tốt Mong tương lai khơng xa, kỹ cịn thiếu nâng cao hoàn thiệ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 ... Tuy nhiên tín hiệu lời nói lại tín hiệu băng thơng rộng, việc tính Zero- Crossing rate tín hiệu xác nhiều thu ước tính sơ đặc trưng tiếng nói cách sử dụng biểu diễn dựa Zero- Crossing rate[ 3] Trần... SIGNAL Xử lí tín hiệu thành khung hình Tính Short-Time Energy Mean Average Chuẩn hóa STE MA Khoảng lặng Đúng Tìm STE MA> Threshold Phân đoạn tiếng nói khoảng lặng END Sai Tín hiệu tiếng nói Hình... đặc trưng khung liên tiếp để tạo thành đặc trưng tín hiệu tiếng nói 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 khung có độ lớn 20ms nối