Matlab kullanarak bir ses dosyasının fft'sini aldıktan sonra frekans bölgesini değiştirerek veya kaydırarak sesi inceltip kalınlaştırmak istiyorum.örneğin sol sesinden bu şekilde la sesine nasıl geçebilirim? Yardımcı olabilirseniz sevinirim,teşekkürler.
Anladığım kadarı ile:
- Elinizde zamana bağlı sesin şiddetini içeren veri var.
- Bu verinin FFT'sini (Fast Fourier Transform) alarak Frekans dağılımını görmek istiyorsunuz.
- FFT'sini aldığınız veride oynama yapmak istiyorsunuz.
- Oynama yaptığınız Şiddet-Frekans grafiğini 1. maddedeki Şiddet-Zaman formuna dönüştürmek istiyorsunuz.
Doğru mudur?
Evet,anlatmak istediğim adımlar aynen bu şekilde.Yardımcı olursanız sevinirim,şimdiden teşekkürler.
[data,fs]=audioread('C:\Users\acer\Desktop\ukusol.wav');
data_fft = fft(data);
plot(abs(data_fft(:,1)));
title('ukusol');
Görüldüğü gibi en başta bir ses dosyasını matlab'a tanıtıp fft'sini aldım.Daha sonra ise çizdirdim.
burada sorunum bu sinyali sağa ve sola kaydırmak.Bunu yaptığımda teorik olarak sinyalin frekansı
değişecek.Örnek olarak eğer 'la' notası ile bir kayıt aldığımda bunu 'si' notasına çevirebilmek
istiyorum.Bunu nasıl yapabilirim?
Merhaba,
Eğer FFT'sini aldığınız veriyi yani data_fft(:,1) verisinin değerlerini kaydırmak istiyorsanız doğrudan bütün vektörün elemanlarını kaydırmak istediğiniz miktara göre sabit bir sayıyla toplayabilirsiniz. Tabi böyle yaptığınızda başlangıç noktanızdan eksilme, son frekans noktanızda da artış olacaktır.
Eğer istediğiniz orijinal veriniz üzerinde değişiklik yapmak ve daha sonra tekrar FFT'sini aldığınızda bu kez kaymış değerini görmek için orijinal verinizi bir kompleks üstel sayı ile çarparak frekansını kaydırabilirsiniz [1].
[1] https://dsp.stackexchange.com/questions/1991/how-to-shift-the-frequency-spectrum