Hata Bildir | Dosya Deposu | Anketler | Hakkında | İletişim | Sık Kullanılanlara Ekle
Tema Seçim Sayfası
Anasayfa > Dijital Sinyal İşleme > Ses İşleme > Wav Formatını Okuma, Yazma


Programlama Günlüğü

Bir Bilgisayar Mühendisi İçin Programlama Dili, Öğrendiklerini Sınadığı, Deneyler Yaptığı Bir Labaratuardır. Ve Mühendisler Deneylerini, Kestiremedikleri Sonuçları Gözlemlemek İçin Değil, Öngördükleri Sonuçları Doğrulamak İçin Yaparlar...
  Wav Formatını Okuma, Yazma

   Wav dosya formatı, Microsoft'un media dosyalarını saklamak için kullandığı RIFF (Resource Interchange File Format) formatının bir alt formatı. RIFF formatı, dosya başlığından ve onu takip eden alt parçalardan meydana gelir. Bir wav dosyasını okumak ve dosyaya yazmak için wav dosya formatının alt parçalarını bilmek gerekiyor. Parçaların, pozisyonlarının, boyutlarının, kullandıkları bayt sıralama tipinin ve gerekli açıklamaların yer aldığı tablo aşağıda:

İsim Pozisyon Boyut Bayt Sıralaması Açıklama
Parça Kimliği 0 4 Big Endian R,I,F,F karakterlerinin ascii kodlarını içerir.
Dosya Boyutu 4 4 Little Endian Bu kısımdan sonraki verilerin boyutunu içerir. Değeri: (Tüm dosya boyutu-8)
Dosya Formatı 8 4 Big Endian W,A,V,E karakterlerinin ascii kodlarını içerir.
Alt Parça1 Kimliği 12 4 Big Endian f,m,t ve " "(bir boşluk) karakterlerinin ascii kodunu içerir.
Alt Parça1 Boyutu 16 4 Little Endian PCM dosyaları için bu değer 16dır.
Ses Formatı 20 2 Little Endian Sıkıştırılmamış dosyalar için bu değer 1dir. Eğer 1den farklı bir değer okursanız bu dosyanın sıkıştırılmış olduğunu gösterir.
Kanal Sayısı 22 2 Little Endian Ses dosyası içine kaç kanal yazıldığını belirtir(1,2,...).
Örnekleme Frekansı 24 4 Little Endian Örnekleme frekansının değerini tutar.
Bayt Oranı 28 4 Little Endian Saniyede kaç bayt okunması gerektiğini gösterir. Değeri (ÖrneklemeFrekansı*KanalSayısı*ÖrnekBaşınaBit/8) işlemiyle hesaplanır.
Blok Boyutu 32 2 Little Endian Blok boyutu kavramı için yukarda linki bulunan yazıyı okuyabilirsiniz. Değeri (KanalSayısı*ÖrnekBaşınaBit/8) işlemiyle hesaplanır.
Örnek Başına Bit 34 2 Big Endian Her örneğin kaç bit ile ifade edildiğini gösterir. 8, 16, 24 ... değererini alabilir.
Alt Parça2 Kimliği 36 4 Little Endian d,a,t,a karakterlerinin ascii kodlarını içerir.
Ses Verisi Boyutu 40 4 Little Endian Bu kısımdan sonra gelecek veri boyutunu yani aslında ses verisinin boyutunu gösterir.

Wav okuma yazma, program örneği    Yukaridaki kurallara uyularak, örneklenmiş ses sinyali wav dosyasına kaydedilebilir veya wav formatında kaydedilmiş bir dosya açılıp örneklere uaşılabilir. Örneklenen sesin direkt olarak okunabilmesi için ses formatına ayrılan baytlardan "1" değerinin okunması gerekir. Başka değerlerin okunması, dosyanın sıkıştırıldığına işaret eder.

   ÖrnekBaşınaBit değeri kodlanabilecek genlik aralığını genişletir. 8, 16, 24,... değerlerini alabilir.

   İki kanalı bir dosyada kanallara ait veriler, sol kanal solda, sağ kanal sağda olacak şekilde yazılır.

   Son olarak big endian ve little endian sıralamalarının ne olduğunu biraz daha açalım. Örnek daha açıklayıcı olur. 2 bayt boyut tanınmış ses formatı kısmına "1" değeri, little endian sıralamasına göre 01 00 olarak yazılır(hexadecimal). Bunun big endian sıralamasına göre yazılış şekli ise 00 01 dir. Sanırım aradaki fark rahatça anlaşılır oldu. Little endian sıralamada, adından anlaşılabileceği gibi değeri en az etkileyen (en önemsiz) baytlar sonlara yazılır. Big endianda ise en etkili/önemli (most significant) bitler sona yazılır. Daha önce de "ilerde wav dosyalarını açıp işlemeye başladığımızda işimize yarayacak" diyerek bayt sıralamalarından bahsetmiştim, yazıyı okumak tıklayın.
 
Okunma Sayısı: 293
Yayınlanma Tarihi: 31 Aralık 2009 Perşembe - 21:18
Anahtar Kelimeler: wav dosya formatı, ses dosyası, okuma, yazma, wave, format, riff

Onaylı yorum bulunmuyor.

Yorum/Görüş Bildir

Yorumları html kodu veya özel karakter kullanmadan, yazım kurallarına
dikkat ederek ve düzgün bir Türkçe kullanarak yazalım...
    Atasoy Blog v2.7 © 2009-2010 Hüseyin Atasoy | Tema Tasarımı: AtasoyWeb
Rss Besleme | Yukarı Çık