Phân tích phổ là một bài toán cần thiết và có ý nghĩa quan trọng trong cuộc sống hiện đại. Bài báo cáo này thực hiện biểu diễn spectrogram của tín hiệu các loại nhạc cụ và sự khác biệt về đặc trưng phổ giữa chúng. Các thử nghiệm với 4 file tín hiệu âm thanh của nhạc cụ khác nhau là sáo, guitar, piano, violin. Từ kết quả thực nghiệm cho ta thấy sự khác nhau về đặc trưng phổ của 2 loại spectrogram. Ngoài ra còn cho ta biết những yếu tố ảnh hưởng quan trọng đến quá trình phân tích phổ. Short Time Fourier Transform, Spectrogram, Fast Fourier Transform, STFT Bách khoa đà nẵng,
Trang 1PHÂN TÍCH PHỔ CỦA TÍN HIỆU CÁC LOẠI NHẠC CỤ DÙNG SHORT TIME FOURIER TRANSFORM
Name01, Name02, Name03, Name04 Nhóm 15, lớp HP: 102………….
SV
Name01
(nhóm
trưởng)
Phân công nhiệm vụ và đảm bảo tiến độ của mỗi thành viên Tìm hiểu và cài đặt thuật toán STFT Đọc tài liệu , viết báo cáo về ứng dụng của spectrogram và kết quả thực nghiệm.
Name02 Đọc tài liệu, viết lý thuyết về đặt vấn đề và vấn đề cần
giải quyết, narrow band và wide band Làm slide
Name03 Đọc tài liệu, viết lý thuyết và tìm hiểu thuật toán của
phương pháp biến đổi fourier thời gian ngắn.
Name04 Đọc tài liệu, viết lý thuyết về spectrogram Tìm hiểu và
cài đặt thuật toán STFT.
Lời cam đoan: Chúng tôi, gồm các sinh viên có chữ ký ở trên, cam đoan rằng báo cáo này là
do chúng tôi tự viết dựa trên các tài liệu tham khảo ghi rõ trong phần VII Các số liệu thực nghiệm
và mã nguồn chương trình nếu không chỉ dẫn nguồn tham khảo đều do chúng tôi tự làm Nếu vi phạm thì chúng tôi xin chịu trách nhiệm và tuân theo xử lý của giáo viên hướng dẫn.
TÓM TẮT— Phân tích phổ là một bài toán cần thiết và có ý nghĩa quan trọng trong cuộc
sống hiện đại Bài báo cáo này thực hiện biểu diễn spectrogram của tín hiệu các loại nhạc cụ và sự khác biệt về đặc trưng phổ giữa chúng Các thử nghiệm với 4 file tín hiệu âm thanh của nhạc cụ khác nhau là sáo, guitar, piano, violin Từ kết quả thực nghiệm cho ta thấy sự khác nhau về đặc trưng phổ của 2 loại spectrogram Ngoài ra còn cho ta biết những yếu tố ảnh hưởng quan trọng đến quá trình phân tích phổ.
Từ khóa— Short Time Fourier Transform, Spectrogram, Fast Fourier Transform, STFT
Trang 2Mục lục
Trang 3I ĐẶT VẤN ĐỀ
Âm thanh có một vai trò quan trọng trong cuộc sống của chúng ta Cùng với sự phát triển của khoa học kỹ thuật, nhu cầu phân tích và xử lý âm thanh của con người ngày càng tăng cao Phân tích phổ có vai trò quan trọng trong việc phân tích tín hiệu âm thanh và ứng dụng trong đời sống Trong đó ảnh phổ được sử dụng rộng rãi trong các lĩnh vực âm nhạc, sonar, radar và xử lý tiếng nói, địa chấn và các lĩnh vực khác Các biểu đồ phổ của âm thanh có thể được sử dụng
để xác định các từ được nói theo ngữ âm và để phân tích các tiếng kêu khác nhau của động vật.[3]
Có nhiều phương pháp phân tích phổ tín hiệu nhưng ở bài báo cáo này chúng sẽ giới thiệu phương pháp biến đổi Fourier thời gian ngắn (Short –Time Fourier Transform)
Báo cáo có bố cục như sau: Phần II trình bày về cơ sở lý thuyết biến đổi Fourier thời gian ngắn, spectrogram và các vấn đề liên quan ảnh hưởng đến phân tích phổ tín hiệu Phần III trình bày mã nguồn cài đặt bài toán Phần IV trình bày kết quả thực nghiệm mô tả dữ liệu dùng để đánh giá và phân tích ảnh phổ, đưa ra các đánh giá định tính và định lượng, đưa ra sự khác biệt về đặc trưng phổ 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 VỀ PHÂN TÍCH PHỔ
A Vấn đề cần giải quyết
Ảnh phổ (spectrogram) có thể ứng dụng trong nhiều lĩnh vực, đặc biệt trong âm nhạc và xử lý tiếng nói Trong
âm nhạc, việc phần tích phổ là vô cùng quan trọng trong bất cứ công việc nào Vậy ảnh phổ (spectrogram) là gì? Ảnh phổ (spectrogram) là một biểu diễn trực quan của phổ tần số của tín hiệu khi nó thay đổi theo thời gian Khi được áp dụng cho tín hiệu âm thanh, các biểu đồ phổ đôi khi được gọi là sonagraph, voiceprints hay voicegrams Khi tín hiệu được biểu diển trên đồ thị ba chiều, nó có thể được gọi là waterfalls[3]
Có nhiều phương pháp để tạo ra ảnh phổ Ở trong bài báo cáo này chúng tôi sẽ giới thiệu về phương pháp biến đổi Fourier thời gian ngắn (Short –Time Fourier Transform) Biến đổ Fourier thời gian ngắn là dạng biến đổi Fourier được dùng để xác định tần số và pha của tín hiệu sin phức tính trên các khung cửa sổ của một tín hiệu khi có sự thay đổi về thời gian[1]
B Biến đổi Fourier thời gian ngắn
1. Cơ sở lý thuyết
● Định nghĩa:
Biến đổ Fourier thời gian ngắn là dạng biến đổi Fourier được dùng để xác định tần số và pha của tín hiệu sin phức tính trên các khung cửa sổ của một tín hiệu khi có sự thay đổi về thời gian[1] Là sự phân chia 1 chuỗi thời gian thành các khối chồng nhau (overlaping blocks) có chiều dài bằng nhau và áp dụng Fourier nhanh (FFT) cho mỗi khối 1 cách tuần tự
Đầu tiên tín hiệu được nhân với 1 hàm cửa sổ w(t- τ) và sau đó thực hiện biến đổi Fourier, kết quả sẽ cho 1 biến đổi hai chiều STFT(ω, τ)
Trong miền thời gian liên tục:
STFT(ω, τ)=X(ω, τ)= dt
−∞
+∞
∫ 𝑥 𝑡( )𝑤 𝑡 − τ( )𝑒−𝑖ω𝑡
Trong đó: w(τ): hàm cửa sổ
x(t): tín hiệu liên tục X(ω, τ): biến đổi Fourier của x(t).w(t-τ) Trong miền thời gian rời rạc:
𝑛=−∞
∞
∑ 𝑥 𝑛[ ]𝑤[𝑛 − 𝑚]𝑒−𝑗ω𝑛
Trong đó: w[n] : khung cửa sổ
x[n] : tín hiệu rời rạc
X(m, ω): biến đổi Fourier của dữ liệu tín hiệu với khung cửa sổ w[n]
● Tính chất:
- STFT đo sự giống nhau giữa tín hiệu với phiên bản dịch và biến điệu của hàm cửa sổ cơ bản w(t)
Trang 4- STFT có tính định vị thời gian – tần số.
- Thao tác dịch và biến điệu hàm cửa sổ không làm thay đổi kích thước hàm cửa sổ mà chỉ tịnh tiến theo trục thời gian – tần số
- STFT thể hiện mối quan hệ giữa thời gian và tần số tín hiệu, cung cấp thông tin về thời gian và tần số xuất hiện sự kiện
- Độ phân giải theo thời gian phụ thuộc vào kích thước cửa sổ
2. Sơ đồ thuật toán :
Hình 1 Sơ đồ khối thuật toán STFT
3. Các tham số quan trọng của thuật toán
- Loại hàm cửa sổ
- Độ dài hàm cửa sổ
- Số điểm tính FFT
- Độ chồng chéo của cửa sổ
4. Vấn đề và giải pháp khắc phục
a) Loại hàm cửa sổ
Một vấn đề phát sinh rất phổ biến là khó khăn trong việc lựa chọn hàm cửa sổ Có rất nhiều loại hàm cửa sổ như: hann, hamming, blackman, … Ở bài báo cáo này nhóm sử dụng cửa sổ là hann
Tính hàm cửa sổ hann[5]:
w[n] = w0(𝑁𝐿 (n - 𝑁2)) = 12 [1 − 𝑐𝑜𝑠 (2π𝑛𝑁 )] =𝑠𝑖𝑛2 (2π𝑛𝑁 ) , 0 n≤ ≤𝑁 trong đó:
N+1 là chiều dài cửa sổ, N có thể chẵn hoặc lẻ b) Độ dài hàm cửa sổ:
Ở đây có 2 loại spectrogram là phổ băng rộng và phổ băng hẹp
c) Số điểm tính FFT:
Có thể có thể nhiều giá trị nfft Nhưng ở đây cần phải chọn một giá trị phù hợp để vừa tiết kiệm được thời gian tính toán vừa đem một kết quả chính xác Ở đây nhóm chọn giá trị mặc định là 256
d) Độ chồng chéo của hàm cửa sổ
Độ chồng chéo của khung khi tính fft ảnh hưởng quan trọng đến độ rõ của phổ Sự chênh lệch giữa các khung, hay còn gọi là độ dịch cần chọn một giá trị phù hợp mà giá trị đó phải nhỏ hơn chiều dài của cửa sổ
Trang 5C Spectrogram
1. Định nghĩa
Ảnh phổ (spectrogram) là một biểu diễn trực quan của phổ tần số của tín hiệu khi nó thay đổi theo thời gian Khi được áp dụng cho tín hiệu âm thanh, các biểu đồ phổ đôi khi được gọi là sonagraph, voiceprints hay voicegrams Khi tín hiệu được biểu diển trên đồ thị ba chiều, nó có thể được gọi là waterfalls[3]
Ảnh phổ có thể được tạo ra bởi một ảnh phổ kế Một dải các bộ lọc thông dải, bởi biến đổi Fourier hoặc bởi một biến đổi sóng con (Trong trường hợp này còn được gọi là một scaleogram)[3]
Thời gian được hiển thị dọc theo trục x, tần số dọc theo trục y và lượng năng lượng trong tín hiệu tại bất kỳ thời điểm và tần số đã cho nào được hiển thị dưới dạng bản đồ nhiệt
Hình 2 Ví dụ minh họa về ảnh phổ
2. Wide – band and narrow-band
● Phổ băng rộng (Wide-band):
- Một phổ được tạo ra bằng sơ đồ phân tích nhấn mạnh sự thay đổi theo thời gian của tín hiệu: với các tính toán phổ ngắn hạn (khoảng 3ms) hoặc các bộ lọc phân tích độ thay đổi tần số cao (khoảng 300Hz).[4]
- Phổ băng rộng có độ phân giải thời gian tốt, có nghĩa là có thể phát hiện ra những thay đổi về tần số trong các khoảng thời gian nhỏ Đối với phổ băng rộng, khoảng thời gian cho mỗi phổ là nhỏ, do đó wide-band không thể tạo ra sự phân biệt tần số tốt
● Phổ băng hẹp (Narrow-band):
- Một phổ được tạo ra bằng sơ đồ phân tích nhấn mạnh sự thay đổi tần số trong tín hiệu: với các tính toán phổ dài hạn (khoảng 20ms) hoặc các bộ lọc phân tích độ thay đổi tần số thấp (khoảng 45Hz).[4]
- Phổ băng hẹp có độ phân giải tần số tốt, có nghĩa là có thể phát hiện ra những khác biệt nhỏ về tần số Đối với phổ băng hẹp , khoảng thời gian cho mỗi phổ phải lớn, để tạo ra sự khác biệt về tần số.Narrow - band của lời nói cho thấy cấu trúc hài hòa của rung động thanh âm như các dải ngang
Trang 6Hình 3 Ví dụ về phân biệt wide-band và narrow-band
3. Các ứng dụng của spectrogram
- Spectrogram được sử dụng rộng rãi trong các lĩnh vực âm nhạc , sonar , radar và xử lý tiếng nói , địa chấn
và các lĩnh vực khác Các biểu đồ phổ của âm thanh có thể được sử dụng để xác định các từ được nói theo ngữ âm và để phân tích các tiếng kêu khác nhau của động vật [3]
- Các quang phổ tương tự ban đầu đã được áp dụng cho một loạt các lĩnh vực bao gồm nghiên cứu các tiếng kêu của chim (chẳng hạn như tiếng kêu lớn), với nghiên cứu hiện tại tiếp tục sử dụng thiết bị kỹ thuật số hiện đại và áp dụng cho tất cả các âm thanh của động vật Việc sử dụng hiện đại của phổ kỹ thuật số đặc biệt hữu ích để nghiên cứu điều chế tần số (FM) trong các việc gọi động vật[3]
- Spectrogram rất hữu ích trong việc hỗ trợ khắc phục các khiếm khuyết về giọng nói và trong việc luyện nói cho phần dân số bị khiếm thính
- Các nghiên cứu về ngữ âm và tổng hợp giọng nói thường thuận tiện và dễ dàng hơn với việc sử dụng spectrogram
- Bằng cách đảo ngược quá trình tạo ra một phổ, có thể tạo ra một tín hiệu có phổ của nó là một hình ảnh tùy
ý Kỹ thuật này có thể được sử dụng để ẩn hình ảnh trong một đoạn âm thanh và đã được sử dụng bởi một
số nghệ sĩ âm nhạc điện tử
- Các spectrogram có thể được sử dụng để phân tích kết quả truyền 1 tín hiệu thư nghiệm qua 1 bộ xử lý tín hiệu (ví dụ bộ lọc) để kiểm tra hiệu suất của nó
- Các biểu đồ phổ có thể được sử dụng với các mạng nơ-ron hồi quy (RNN) để nhận dạng giọng nói
III MÃ CHƯƠNG TRÌNH CÀI ĐẶT CÁC
THUẬT TOÁN
%% Input Speech
clearall;
[data, fs] = audioread('D:\xu_ly_tin_hieu_so\cuoiki\code\TH\violin.wav');
%[data, fs] = audioread('D:\xu_ly_tin_hieu_so\cuoiki\code\TH\flute.wav');
%[data, fs] = audioread('D:\xu_ly_tin_hieu_so\cuoiki\code\TH\guitar.wav');
%[data, fs] = audioread('D:\xu_ly_tin_hieu_so\cuoiki\code\TH\piano.wav');
NFFT=256;
%NFFT=round(log2(length(data)));
%% TH vao
subplot(3,1,1);
t = [0 : 1/fs : length(data)/fs];
t = t(1:end - 1);
plot(t,data,'Color','b');
title('Tin hieu vao','Color','r');
Trang 7%% wide-band
subplot(3,1,2);
t_wide=0.003;
L_wide=round(t_wide*fs);
step_wide=round(L_wide/8);
spectrogram0(data,L_wide,NFFT,step_wide,fs);
title('Wide-band','Color','r');
%% narrow-band
subplot(3,1,3);
t_narrow=0.02;
L_narrow=round(t_narrow*fs);
step_narrow=round(L_narrow/8);
spectrogram0(data,L_narrow,NFFT,step_narrow,fs);
title('Narrow-band','Color','r');
%% function
% Input
% x : Tin hieu dau vao
% L: Chieu dai khung cua so
% NFFT: So diem tinh fft
% step: do dich cua cac khung cua so
% Fs: Tan so
% Output
% Ma tran S bieu dien cac diem trong do tan so tren cac hang, thoi gian tren cac cot
functionS = spectrogram0(x,L,NFFT,step,Fs)
% S=spectrogram0(x,L,NFFT,step,Fs)
N=length(x); K=fix((N-L+step)/step);%fix làm tron thanh so nguyen gan nhat ve 0
w=hann(L);% tra ve cua so hann doi xung diem L
time=(1:L)';% ' là chuyen vi hay so phuc lien hop
N2=round(NFFT/2+1);
S=zeros(K,N2);%matran0 co K hàng N2 cot
fork=1:K
xw=x(time).*w;
X=fft(xw,NFFT);%fft tra ve DFT diem NFFT
X1=X(1:N2)';
S(k,1:N2)=X1.*conj(X1);%conj tra ve so phuc lien hop cua no
time=time+step;
end
S=fliplr(S)';%tra ve cac cot lech theo huong nguoc lai
%fliplr lat cac cot theo huong trai - phai
S=S/max(max(S));
tk=(0:K-1)'*step/Fs;
F=(0:NFFT/2)'*Fs/NFFT;
imagesc(tk,flipud(F),20*log10(S));%flipud lat cac hang theo huong xuong
c = colorbar;
c.Label.String ='Power/frequency (dB/Hz)';
xlabel('Thoi gian (s)');
ylabel('Frequency (Hz)');
axisxy;%thiet lap gioi han truc
end
Trang 8IV KẾT QUẢ THỰC NGHIỆM.
Dữ liệu dùng để phân tích phổ là 4 file tín hiệu của 4 loại nhạc cụ khác nhau là sáo, guitar, piano, violin
Hình 4 Hình ảnh tín hiệu âm thanh nhạc cụ đầu vào
Hình 5 Ảnh phổ của tín hiệu của nhạc cụ sáo.
Hình 5 biểu diễn ảnh phổ của tín hiệu của nhạc cụ sáo trong 2 trường hợp wide band và narrow band Các thông số đầu vào là: hàm cửa sổ hann, độ dài hàm cửa sổ là 0.003*fs với wide band và 0.02*fs đối với narrow-band, nfft = 256 và độ dịch bằng độ dài hàm cửa sổ chia 8 ( tức là % độ chồng của các khung liên tiếp là 87.5%)
Trang 9Hình 6 Ảnh phổ của tín hiệu của nhạc cụ guitar.
Hình 6 biểu diễn ảnh phổ của tín hiệu của nhạc cụ guitar trong 2 trường hợp wide band và narrow band Các thông số đầu vào là: hàm cửa sổ hann, độ dài hàm cửa sổ là 0.003*fs với wide band và 0.02*fs đối với narrow-band, nfft = 256 và độ dịch bằng độ dài hàm cửa sổ chia 8 ( tức là % độ chồng của các khung liên tiếp là 87.5%)
Hình 7 Ảnh phổ của tín hiệu của nhạc cụ piano.
Hình 7 biểu diễn ảnh phổ của tín hiệu nhạc cụ của tín hiệu pinao trong 2 trường hợp wide band và narrow band Các thông số đầu vào là: hàm cửa sổ hann, độ dài hàm cửa sổ là 0.003*fs với wide band và 0.02*fs đối với narrow-band, nfft = 256 và độ dịch bằng độ dài hàm cửa sổ chia 8 ( tức là % độ chồng của các khung liên tiếp là 87.5%)
Trang 10Hình 8 Ảnh phổ của tín hiệu của nhạc cụ violin.
Hình 8 biểu diễn ảnh phổ của tín hiệu nhạc cụ của tín hiệu pinao trong 2 trường hợp wide band và narrow band Các thông số đầu vào là: hàm cửa sổ hann, độ dài hàm cửa sổ là 0.003*fs với wide band và 0.02*fs đối với narrow-band, nfft = 256 và độ dịch bằng độ dài hàm cửa sổ chia 8 ( tức là % độ chồng của các khung liên tiếp là 87.5%)
● Nhận xét:
- Từ hình 5, 6, 7 , 8 biểu diễn ảnh phổ tín hiệu của 4 loại nhạc cụ khác nhau là sáo, guitar, piano, violin, ta thấy ảnh phổ thể hiện rõ nhất ở tín hiệu nhạc cụ violin trong cả 2 trường hợp wide-band và narrow-band
- Trong trường hợp wide-band: ảnh phổ có độ phân giải về thời gian tốt, tức thể hiện ảnh phổ rõ dọc theo trục thời gian nhưng bị mờ theo trục tần số Với tín hiệu của nhạc cụ violin thì thể hiễn rõ nhất về đặc trưng của phổ băng rộng
- Trong trường hợp narrow-band: ảnh phổ có độ phân giải về tần số tốt, tức thể hiện ảnh phổ rõ dọc theo tần
số nhưng không rõ theo trục tần thời gian Với tín hiệu của nhạc cụ violin thì thể hiễn rõ nhất về đặc trưng của phổ băng rộng
- Tất cả những ảnh phổ luôn có miền tần số từ 0 đến khoảng 20000HZ
Yếu tố đầu tiên ảnh hưởng đến biểu diễn ảnh phổ là độ dài hàm cửa sổ Với mỗi độ dài hàm cửa sổ khác nhau thì cho ta ảnh phổ có các đặc trưng khác nhau
Trang 11Hình 9 Ảnh phổ của tín hiệu violin trong trường hợp wide-band và narrow-band
Hình 9 thể hiện của ảnh phổ ở 2 trường hợp có độ dài hàm cửa sổ khác nhau Trong trường hợp wide-band thì
độ dài hàm cửa sổ là 0.003*fs và trường hợp narrow-band thì độ dài hàm cửa sổ là 0.02*fs
Việc chọn hàm cửa sổ cũng đóng một vai trò quan trọng việc phân tích phổ:
Hình 10 Ảnh phổ của tín hiệu nhạc cụ violin trường hợp hàm cửa sổ là hann và backman
Hình 10 biểu diễn ảnh phổ của tín hiệu nhạc cụ violin trong trường hợp chỉ dùng 2 hàm cửa sổ khác nhau là hann và backman, còn các giá trị khác giống nhau: độ dài hàm cửa sổ là 0.02*fs , nfft = 256 và độ dịch bằng độ dài hàm cửa sổ chia 8 Với mỗi loại hàm cửa sổ khác nhau thì sẽ cho đặc trưng phổ khác nhau
Yếu tố thứ 3 ảnh hưởng đến biểu diễn ảnh phổ là số điểm tính fft :