22 Ağustos 2014 Cuma

Matlab ile Ses Dosyası Yazma

     Merhaba arkadaşlar bu yazıda sizlere Matlab ile Ses kaydetme yazısında yaptığımız ses kaydını wav formatında nasıl yazarız bunu anlatmaya çalışacağım.



    Kodları açıklamaya başlamadan önce sizlere bir kaç ufak ipucu vermek istiyorum.  Öncelikle ses dosyamızı yazmak için  masa üstüne Picarmatlab adında bir klasör oluşturdum.
Klasör yolunu file cubuğun da tanımlayarak işlemlerimi bu klasör içine yapacağımı belirttim. Sizlerde kendi adınıza bir klasör yapıp bu işlemi gerçekleştirebilirsiniz. Sol tarafta Current Folder kısmını görüyorsunuz.  Bu kısımda tanımladığımız yolda bulunan klasörün içeriği gösteriliyor. Aynı şekilde resmin sağ tarafında workspace kısmını görüyorsunuz. Bu kısımda da tanımlanan değişkenler gösterilmektedir.

  >>Sıra geldi kodlarımıza kodların belli bir kısmı Matlab ile Ses Kaydetme yazımda açıklanan kısımları özet geçeceğim.

>>  kayit=audiorecorder(48000,16,2);
>> record(kayit,5);
>> play(kayit);

Burada kayit nesnemizi oluşturduk, daha sonra 5 sn lik stereo bir kayıt yaptık ve bu kaydı çaldık.

>> y=getaudiodata(kayit);

getaudiodata() fonksiyonu ile audiorecord nesnesinde yaptığımız kayıttaki ses verilerini digital olarak çağırıyoruz ve y değişkenine kopyalıyoruz.

>> wavwrite(y,48000,16,'kayıt.wav');

    Wavwrite komutu .wav formatında ses dosyası yazmak için kullandığımız fonksiyondur. Bu fonksiyon için digital ses verilerinin saklantığı int16, int32 gibi veri türlerinde bir değişken ve kaydedilmesi istenilen sesin örnekleme frekansı ile bit başına örnek sayısı parametreleri isteniyor.En son kısımda ise kaydedilecek ismi belirtiyoruz.Bu fonksiyon çalıştıktan bir kaç saniye sonra currentfolder kısmında kayit.wav isimli dosyayı göreceksiniz.Vee yazma işlemimiz tamamlanmıştır :)
   
  Peki wavwrite komutuna y değilde kayit değişkenimizi kullansaydık ? getaudiodata fonksiyonuna gerek kalmadan işimizi halledebilir miydik ? soruları aklıma geliyor.
Açık konuşmak gerekirse ilk çalışmamda bende bunları denedim ve parametre hatası aldığımı farkettim. Yani kayit değişkenimizin tipi audiorecorder nesnesi cinsindenken , wavwrite fonksiyonunun bizden istediği integer bir değişkendir. Bunun için getaudiodata(kayit); fonksiyonu ile kaydettiğimiz sesin digital verilerini int tipindeki y değişkenine aktardık.

  Evet arkadaşlar bu yazımızında sonuna geldik. Bir sonraki yazımda wavread ile ses dosyasını okuma işlemini anlatacağım. Sağlıcakla kalın bir sonraki yazıda görüşmek dileğiyle :)

3 yorum :

  1. Bu yorum yazar tarafından silindi.

    YanıtlaSil
  2. wavwrite de hata veriyor nasıl düzeltebilirim

    YanıtlaSil
    Yanıtlar
    1. Undefined function or variable 'wavwrite'. hatası

      Sil