Geçen yazıda ilk olarak temel şeylerden bahsetmiştim ,temel kavramları oturtmak adına birşeyler karalayıp en son sinyal işleme hakkında konuşmuk bugün ise az daha teorik şeyler hakkında konuşup artık koda geçeceğiz.
DİGİTAL SİGNAL PROCESSORS(DİJİTAL SİNYAL İŞLEMCİLERİ)
Minnettar olmamız gereken donanımlar dspler(dijital sinyal işlemcileri) hakkında konuşalım.
Bu tip işlemciler gerçekten minnettar olmamız gereken araçlar çünkü bu işlemciler ses,video,sıcaklık,basınç ve pozisyon gibi bilgileri alarak matematiksel olarak matematiksel olarak manipüle eder .
Kısaca mantığı ise şu analogtan dijitale dönüştürücüden 2lik sisteme (dijital sinyale dönüşür) .Ardından manipülasyonlar yapıldıktan sonra dijitalden analog dönüştürücü ile dönüşüm yapılır.Aşağıdaki illüstrasyon mevzuyu daha güzel açıklayacaktır.
ARTIK KOD GÖRMEK İSTİYORUZ
UYGULAMA_1
İlk olarak freesound.org’dan güzel bir ses indirelim.Ben bu ses dosyasını kullanacağım:-https://freesound.org/people/Erokia/sounds/545375/#comments
Şimdi ise bu sesi grafiğe aktaralım ve aşağıdaki kodları yazalım.
import matplotlib.pyplot as plt
from scipy.io import wavfile as wav
rate, data = wav.read('545375__erokia__sweet-arp-w-drums-msfxp9-187-7-3-mono-swap-
synth-drum-loop-16-bar-bpm-100.wav')
plt.plot(data)
plt.show()
Kodlarımızın çıktısı sol tarafta gözüküyor..Bu grafik sayesinde sesin kalitesini,frekansını vb özellikleri görünür şekilde inceleyebiliriz.
UYGULAMA_2
Şimdi ise spektogramlar hakkında ufak bir uygulama yapacağız ,fakat nedir ne değildir açıklamamız gerekli.Spektogram dediğimiz şey şudur :Spektrogram, zamanla değişen bir sinyalin frekans spektrumunun görsel bir temsilidir.Kısaca zaman ve frekansın yayılımı gösteren grafik olarak tasvir edebiliriz.Bu grafikte aynı şekilde sesin temizliği konusunda güzel fikirler verebilir.İlk önce aşağıdaki kodu yazalım,ardından grafiğe bakalım.
import numpy as np
import matplotlib.pyplot as plt
import scipy.io.wavfile as wavfile
Fs, aud = wavfile.read('545375__erokia__sweet-arp-w-drums-msfxp9-187-7-3-mono-swap-
synth-drum-loop-16-bar-bpm-100.wav')
aud = aud[:,0]powerSpectrum, frequenciesFound, time, imageAxis = plt.specgram(aud, Fs=Fs)
plt.show()
Çıktısı ise aşağıdaki gibidir.
Spektogram’ın çizilebilmesini sağlayan şey ise çeşitli dönüşümler vardır.Bunlar uygulamalı matematiğin konularıdır .Örneğin DFT(discrete fourier transformation gibi) DCT(discrete cosine transform) gibi dönüşümler yapıyoruz.Bu dönüşümlerin
amacı ise elimizdeki sinyalleri bildiğimiz fonksiyon ve serilere dönüştürerek rahatlıkla manipülasyon edebilmek ve ihtiyacımıza göre kullanabilmektir.Son olarak c++ uygulamamızı inceleyelim.
UYGULAMA_3
Çok önceden hazırladığım bir uygulamayı sizlerle paylaşmak istiyorum çünkü kütüphaneleri neden kullanacağımızı daha iyi anlayacaksınız.
https://github.com/SirmaXX/cpp_examples/blob/master/crosscorr.cpp
Yukarıda bahsettiğim dönüşümleri vb konuların programlanışını kaynak kodlarını üzerinden görebilirsiniz.
KAYNAKLAR
1. https://www.analog.com/en/design-center/landing-pages/001/beginners-guide-
to-dsp.html
2. https://greenteapress.com/thinkdsp/thinkdsp.pdf
3. https://acikders.ankara.edu.tr/course/view.php?id=837
4. https://www.elektrikport.com/universite/sinyal-isleme-nedir/10222#ad-image-0
5. https://dolby.io/blog/beginners-guide-to-visualizing-audio-as-a-spectogram-in-
python