MATLAB'da BASiT SES IŞLEME
Kullanılan fonksiyonlar:
audioread() Ses dosyasını oku
audiorecorder() Ses kaydı al
audiowrite() Ses dosyasına yaz
audioinfo() Ses dosyasına ail bilgileri al
recordblocking() Ses kaydı başlat
getaudiodata() Ses kaydını değişkne al
spectrogram() Ses verisinin zaman-frekans analizi
sound() Ses çal
fft() Hızlı Fourier dönüşümü
Belli frekansta ses calma
clear; clc;
fs = 44100; % örnekleme hızı
f = 1000; % frekans
dt = 1/fs; % zaman adımları
t = 0:dt:1; % zaman dizisi
y = sin(2*pi*f*t); % ses şiddeti
sound(y,fs) % çal
Belli frekansta ses + gürültü üretme ve dosyaya yazma
clear; clc;
fs = 44100; % örnekleme hızı
f = 1000; % frekans
dt = 1/fs; % zaman adımları
t = 0:dt:1; % zaman dizisi
% ses şiddeti sinyal + gürültü
y = sin(2*pi*f*t) + rand(1,length(t))-1;
sound(y,fs) % çal
plot(t,y) % çiz
audiowrite('signal_and_noise.wav', y, fs) % dosyaya yaz
Vuru (beat) birbirine yakın iki frekansta ses üretme
clear; clc;
fs = 44100;
f1 = 500;
f2 = 502;
dt = 1/fs;
t = 0:dt:3;
y = sin(2*pi*f1*t) + sin(2*pi*f2*t); % sine profile
plot(t,y)
sound(y,fs)
Sol ve sağ hoperlerden farklı ses üretme
clear; clc;
fs = 44100;
f1 = 500;
f2 = 1000;
dt = 1/fs;
t = 0:dt:3;
y1 = sin(2*pi*f1*t); % sol
y2 = sin(2*pi*f2*t); % sag
y = [y1' y2'];
sound(y,fs)
Ses darbesi (pulse) üretme
clear; clc;
fs = 44100;
f = 500;
dt = 1/fs;
t = 0:dt:3;
y = sin(2*pi*f*t); % sol
for i=1:3
sound(y,fs) % çal
pause(1) % 1 s bekle
clear sound % sus
end
Ses dosyası okuma
clear; clc;
audioinfo('instr_piano.wav')
[y,fs] = audioread('instr_piano.wav');
tmax = round(length(y)/fs)
t = linspace(0, tmax, length(y));
plot(t,y)
sound(y,fs)
Ses kaydı alma
clear; clc;
ar = audiorecorder;
disp('Konusmaya basla...')
% 3 saniye kayıt başlat
recordblocking(ar, 3);
disp('Kayit bitti.');
play(ar); % Kaydi cal
y = getaudiodata(ar); % Kaydi al
t = linspace(0,3,length(y));
plot(t,y)
Fourier Donusumu ile frekans analizi
clear; clc;
fs = 100; % ornekleme hizi (hz)
dt = 1/fs; % zaman araligi (s)
t = 0:dt:2; % zaman degerleri
n = length(t); % dizinin eleman sayisi
% signal ornekleri
signal = sin(2*pi*5*t);
%signal = sin(2*pi*5*t) + 2*sin(2*pi*7*t) + 6*sin(2*pi*18*t);
%signal = 10*sin(2*pi*20*t) + randn(1,n);
% Fourier Analizi
f = linspace(0,fs,n); % frekans (hz)
genlik = 2*abs(fft(signal)/n);
% cizim
subplot(211)
plot(t,signal,'b')
xlabel('zaman (s)')
subplot(212)
plot(f,genlik,'ks-')
xlabel('frekans (hz)')
%xlim([0 fs/2])
Sürekli ses kaydı ve karşılık gelen frekanslar
clear; clc;
fs = 10000; % ornekleme hizi
ar = audiorecorder(fs,16,1); % 16 bit, mono
T = 0.1; % kayit suresi
while 1
recordblocking(ar, T);
S = getaudiodata(ar); % ses kaydi al
t = linspace(0,T,length(S)); % zaman
n = length(t);
f = linspace(0,fs,n); % frekans
% Fourier donusumu
G = 2*abs(fft(S))/n;
% cizim
subplot(211)
plot(t,S) % zaman uzayi
ylim([-0.005 0.005]); % y-eksenini sinirla
subplot(212)
plot(f,G) % frekans uzayi
xlim([0 fs/2]); % x-eksenini sinirla
end
Spectrogram (yada sonogram)
clear; clc;
% Seskaydı 16 bit, mono
fs = 11025;
ar = audiorecorder(fs,16,1);
T = 0.1; % kayit suresi
while 1
recordblocking(ar, T);
y = getaudiodata(ar); % Kaydi al
t = linspace(0,T,length(y)); % zaman
% cizim
subplot(2,1,1)
plot(t,y) % zaman uzayı
axis([0 T -0.1 0.1]); % eksenleri sınırla
subplot(2,1,2)
spectrogram(y,128,120,128,fs,'yaxis') % zaman-frekans uzayı
end