BAŞKENT ÜNİVERSİTESİ MÜHENDİSLİK
Transkript
BAŞKENT ÜNİVERSİTESİ MÜHENDİSLİK
BAŞKENT ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİTİRME PROJESİ RAPORU Otomatik Şarkı Tanıma Ümit Burak USGURLU 20394676 Bölümü: Bilgisayar Mühendisliği Proje Danışmanı: Yrd. Doç. Dr. Mustafa SERT Ders Kodu ve Adı: BİL491 Bitirme Projesi - I Proje Başlangıcı: 2006/07 Güz Proje Süresi (Yarıyıl): 1 Rapor Sunumu: 2006/07 Güz I ONAY Bu rapor, 22/01/2007 tarihinde aşağıda yazılı jüri tarafından kabul edilmiştir. Unvan Adı Soyadı Yrd. Doç Dr. Mustafa SERT Öğr. Gör. Kaya KILAN Öğr. Gör. Emre SÜMER İmza II ÖZ Bu raporda sunulan bitirme projesi konusu otomatik şarkı tanımadır. Projenin hedefi sayısal ortama aktarılmış müziklerden çıkarılacak MPEG7 Audio Spectrum Flatness (ASF) özniteliği kullanılarak müziğin tanınmasını sağlamaktır. Projede bu işlevi yerine getirecek uygulama yazılmıştır. Uygulamanın gerçekleştirilmesi için bilgisayarda müzik konusu araştırılmış, ASF özniteliği ve bu özniteliğe bağlı uzaklık hesaplama yöntemi ile benzerlik çıkarma araştırılmış, geliştirilmiştir ve bu raporda açıklanmıştır. Örnek şarkılardan öznitelikler çıkartılmış ve oluşturulmuş veritabanına eklenmiştir. Daha sonra veritabanına kaydedilmiş müzikler farklılaştırılarak aranmıştır ve başarı elde edilmiştir. i ABSTRACT The project presented in this report is automatic music recognition. The aim of the project is recognition of music by extraction of MPEG-7 Audio Spectrum Flatness (ASF) feature off of digitalized music. To accomplish this task an application has been written. To write this application research on digital music has been made and research and development has been done on the method of similarity calculation by using the distance values between two ASF features. A database has been created using some example music. Afterwards some of the added music has been changed and checked upon the database for similarities and success has been achieved. ii İÇİNDEKİLER ÖZ........................................................................................................................ i ABSTRACT......................................................................................................... ii İÇİNDEKİLER .................................................................................................... iii ŞEKİLLER DİZİNİ .............................................................................................. iv SİMGELER VE KISALTMALAR DİZİNİ............................................................... v 1. GİRİŞ...........................................................................................................1 1.1. Bilgisayarda Şarkı Tanımanın Önemi ...................................................1 2. ŞARKI TANIMA ...........................................................................................2 2.1. Bilgisayar İle Şarkı Tanımak .................................................................2 2.2. Öznitelik................................................................................................2 2.3. Bir Öznitelik Olarak ASF .......................................................................2 2.4. Üçgen Eşitsizliği İle Arama ...................................................................3 3. VERİTABANI TASARIMI .............................................................................5 3.1. ‘Music’ Tablosu .....................................................................................5 3.2. ‘Distances’ Tablosu...............................................................................6 3.3. ‘album’ ve ‘artist’ Tabloları ....................................................................6 4. UYGULAMA TASARIMI...............................................................................7 4.1. Uygulamanın Yapısı .............................................................................7 4.1.1. Şarkı Ekleme İle İlgili Sınıflar .........................................................8 4.1.2. Özniteliklerin Çıkarılması İle İlgili Sınıflar.......................................9 4.1.3. Referanslar İle İlgili Sınıflar............................................................9 4.1.4. Diğer Önemli Sınıflar ...................................................................10 4.2. Programın Çalışması ..........................................................................11 4.2.1. Ana Ekran....................................................................................12 4.2.2. Yeni Şarkı Ekleme .......................................................................12 4.2.3. Şarkı Arama Ekranı .....................................................................13 4.2.4. Diğer Ekranlar..............................................................................14 5. SONUÇLAR ve ÖNERİLER.......................................................................15 5.1. Çalışma Sonucu Sağlanan Yararlar ...................................................15 5.2. Çıktı Ürünü .........................................................................................15 5.3. Projenin İlerletilmesi............................................................................15 KAYNAKLAR ....................................................................................................16 iii ŞEKİLLER DİZİNİ Şekil 1 - Uygulama Mantığı Tasarımı..................................................................4 Şekil 2 - Veritabanı ER Şeması...........................................................................5 Şekil 3 - Sistem Mimarisi.....................................................................................7 Şekil 4 - Şarkı Ekleme İle İlgili Sınıflar ................................................................8 Şekil 5 - Öznitelik Çıkarmak İle İlgili Sınıflar........................................................9 Şekil 6 - Referanslar İle İlgili Sınıflar ...................................................................9 Şekil 7 - Diğer Önemli Sınıflar...........................................................................11 Şekil 8 - Uygulama Ana Ekranı .........................................................................12 Şekil 9 - Şarkı Ekleme Ekranı ...........................................................................12 Şekil 10 - Şarkı Arama Ekranı...........................................................................13 iv SİMGELER VE KISALTMALAR DİZİNİ Simge/Kısaltma Açıklama ASF Audio Spectrum Flatness – Ses Spectrum Düzlüğü Bit rate Bit oranı, bir örneğin ifade edilmesi için değer aralığı. FFT Fast Fourier Transform – gerçekleştiren hızlı algoritma. GPL General Public License – Genel Kamusal Lisans ID3 Mp3 dosyalarında bulunan katalog bilgisi (metadata). Mp3 MPEG-1 Audio Layer 3 - Film Uzmanlar Grubu Ses Katmanı 3 MPEG Moving Picture Experts Group - Hareketli Görüntü Uzmanları Birliği MPEG–7 Multimedia Content Description Interface – Çoklu ortam İçerik Tanımlama Arabirimi Sample rate Örneklem oranı, saniyede alınmış örnek sayısı. Wav WAV, İngilizce dalga anlamına gelen Wave kelimesinin ilk üç harfinin alınmasıyla oluşturulmuştur sayısal ortamda hiçbir sıkıştırma yöntemi uygulamadan ses saklama biçimidir. v Fourier dönüşümünü 1. GİRİŞ Projenin amacı, sisteme ses dosyası (wav, mp3, vb.) olarak verilen şarkılardan otomatik olarak elde edilen MPEG–7 özniteliklerinden gerekenleri kullanarak yine dosya şeklinde verilen aranan şarkının tanınmasıdır. Yarıyıl sürecinde; • • • • Şarkı veri formatları araştırıldı ve incelendi. MPEG-7 spektral öznitelikleri incelendi ve gereken öznitelik otomatik olarak elde edildi. Öznitelik veritabanı oluşturuldu. Sisteme verilen örnek şarkıların tanınması sağlandı. Tamamlanan proje kapsamında sisteme arayüzü aracılığıyla tanıması için mp3 ve wav formatlarında yeni şarkı kaydı yapılabilmekte. Sistemin sorgu ekranı sayesinde sistemin veritabanına kaydolmuş şarkılar içinde arama yapılabilmektedir. 1.1. Bilgisayarda Şarkı Tanımanın Önemi Bilgisayarda şarkı tanımak, müzik arşivlemede, müzik lisans sahiplerinin hakları ve müzik severler için önemlidir. Bilgisayarda şarkı tanımanın başarılması sonucunda, müzik severlerin “Bu çalan parça ne?” sorusu, müzik sahiplerinin “Müziğimi kim, nerede, kaç kez çalıyor?” sorusu, müzik arşivcilerinin “Bu parça arşivimde var mı?” sorusu yanıtlanabilir. Bu kadar ihtiyaç sahibinin bulunduğu bir alan aynı zamanda bilgisayar bilimleri için önemli bir araştırma ve uygulama alanını yaratıyor. 1 2. ŞARKI TANIMA Otomatik şarkı tanımada amaç, farklı biçimlerde sayısal ortama aktarılmış müzik verisinin bilinen şarkılarla kıyaslanması sonucunda aranan şarkının sanatçı ve isim bilgilerine ulaşılmasıdır. 2.1. Bilgisayar İle Şarkı Tanımak Bilgisayarda şarkılar, şarkıdan belli aralıklar içinde alınmış örneklerin ses şiddetlerine göre, belirlenmiş bir değer aralığında ifade edilmesi ile tutulmaktadır. Kaliteli denilebilecek bir şarkı saniyede 44100 örnek alınarak ve her örneğin 16 bit ile ifade edilmesiyle saklanabilir. Bir şarkının kıyaslanması için farklı yöntemler öne sürülebilir. Bu yöntemlerden birisi, metin ararken karakterlerin tek tek kıyaslanmasında olduğu gibi, şarkıların örneklerinin tek tek kıyaslanarak tanınması olabilir. Ancak şarkıların sayısal ortama aktarılması sırasında kullanılan yöntemler, analog kayıttaki farklılaşmalar, sayısal kayıttaki sıkıştırma sonucu kayıplar, kıyaslanacak şarkıların uzunluklarının farklı olması (başında veya sonunda oluşabilecek boşluklar), vb. nedenlerden dolayı aynı iki şarkı için bile farklı örneklerin oluşmasına neden olabilir. Ayrıca 16 bit ile ifade edilen örneklerle saniyede 44100 örnek alınarak kaydedilmiş 3 dakikalık bir şarkının kıyaslanması için 7,938,000 örneğin yani 15.14MB’lık verinin kıyaslanmasını gerektirmektedir. Bu aşırı bir işlem yükü gerektiren, verimsiz ve yukarıda anlatılan nedenlerden dolayı başarısızlığa uğrayacak bir yöntemdir. 2.2. Öznitelik Örneklerin tek tek karşılaştırılmasına yerine tavsiye edilen yöntem, tanınmak istenen şarkı için, matematiksel ve algoritmik yöntemler kullanarak şarkının tamamının ifade edilebileceği, kolayca dizinlenip, aranabilecek, özgün veri yapılarının yani, özniteliklerin şarkılardan çıkarılmasıdır. [1][2] Oluşturulacak özniteliğin her müzik için özgün olması gerekmektedir. Ayrıca öznitelik çıkartma algoritmasının şarkıda meydana gelecek bozulmalar ve/veya değişmelerden en iyi durumda hiç etkilenmeyerek şarkının farklı kayıt ortamlarındaki halleri için aynı/benzer sonucu üretmesi gerekmektedir. Bu şekilde aranan şarkı kayıt edilmiş özniteliklerle kıyaslanarak ve/veya benzeri bir yöntem uygulanarak bulunabilir. 2.3. Bir Öznitelik Olarak ASF Bir şarkıdan çıkartılabilecek pek çok öznitelik bulunmaktadır. Ancak çalışmamızda MPEG-7 standardının [3] bir parçası olan ‘Audio Spectrum Flatness’ı (ASF) kullandık. MPEG-7 standardı diğer MPEG standartlarının aksine, çoklu ortam verisinin kodlanması ile ilgilenmek yerine içeriğin tanımlanmasıyla ilgilenen bir standarttır. [4] Bu standardın bir parçası olan ASF ses sinyalinin güç spektrumunun düz bir spektrumdan farklılaşmasının ölçüsüdür [3]. 2 Hesaplanması için ilk olarak tek kanallı ses verisinden güç spektrumu FFT kullanılarak hesaplanır. Güç spektrumu daha sonra önceden belirlenmiş frekans bantlarına bölünür, ASF verisi oluşan her alt bant için ve her (30ms’lik) pencere aralığı için spektrum gücünün geometrik ortalamasının aritmetik ortalamasına oranı olarak bulunur ve aşağıdaki formül ile ifade edilir: (1) Bu (1) formüldeki P her alt bandın güç spektrumunu ifade ederken, N sayısı (1<i<N olmak üzere) alt bandın uzunluğudur. Bu hesaplar sonucu ortaya çıkan ASF tanımlaması (2), n x m büyüklüğünde bir matristir (n toplam pencere sayısı, m bölünen alt bant sayısı olmak üzere). Alt bantlardaki her bir pencerenin düz spektrumdan farklılaşma miktarı ASF’nin satırlarında yer almıştır. [1] (2) Oluşan matris ses sinyalinin güç spektrumundaki düzlüklerin zaman içinde farklılaşmasını ifade eden vektörel bir değerdir. 2.4. Üçgen Eşitsizliği İle Arama 2.3’de anlatılan yöntemle oluşturulan ASF verisi şarkının uzunluğuna göre oldukça büyük sonuçlar üretmektedir. Bu sonuçlar içersinde karşılaştırmalı arama yapmak büyük işlem gücü gerektirecektir. Bunun üstesinden gelmek için üçgen eşitsizliği [6], yani bir üçgenin bilinen iki kenarının farklarının, uzunluğu verilmemiş kenardan küçük olacağı, teoreminden faydalanılmıştır. [2] Bu yöntem ile veritabanına eklenen her şarkının ASF değerinin daha önceden belirlenmiş bir referans ASF verisine uzaklığı Öklid Uzaklığı (Euclidean Distance) (3)[5] formülü kullanılarak bulunur ve saklanır. (3) Referans verisi herhangi bir şarkı olabileceği gibi özellikle oluşturulmuş bir ses sinyalinden üretilmiş veride olabilir. Referans verisi temelde kıyaslanması istenen iki müziğin bu referans verisine ne kadar benzedikleri 3 dolayısıyla birbirlerine ne kadar benzediklerini bulmak için kullanılır. Dolayısıyla ideal referans verisi her müziğe farklı miktarda benzemelidir, yani referansın ASF vektörünün tüm müziklerin ASF vektörlerine uzaklıkları farklı olmalıdır. Referans verisinin kıyaslanan farklı müzik türlerinde farklı başarı gösterdiği gözlemlenmiştir. Sistem kullanılarak arama yapılacağı zaman. Aranan şarkının ASF verisinin hesaplanmasının ardından aynı referans noktasına uzaklığı hesaplanır. Veritabanında bulunan uzaklıklar ve aranan şarkının referans noktasına uzaklığına bakılarak, yani üçgen eşitsizliği teoremine dayanarak, veritabanındaki her şarkının aranan şarkıya benzerliği hesaplanır ve yüzde değer olarak ifade edilir. Uygulama aşamasında elde edilen sonuçlarla tek referans noktasının her müzik türü için yeterli çözünürlük sağlamadığı görülmüştür ve tasarım birden fazla referans noktası kullanımı üzerine geliştirilmiştir. Bu şekilde her müzik eklendiğinde birden fazla referans noktasına uzaklığı hesaplandı ve saklandı. Arama yapıldığı zaman, aranan şarkının tüm referans noktalarına göre uzaklıkları hesaplanarak tüm referans noktaları için tüm şarkılara benzerlikleri çıkartıldı. Sonuç benzerliğinin bulunması için tüm benzerliklerin ortalamaları alındı. Araştırmalar sonucunda geliştirilen uygulama mantığı tasarımında, veri akışı (arama işlemi için) Şekil 1’de gösterildiği gibi gerçekleştirilmiştir. Şekil 1 - Uygulama Mantığı Tasarımı 4 3. VERİTABANI TASARIMI Veritabanı tasarlanırken tasarımın sade ve amaçlandı. Veritabanı dört adet tablodan oluşmaktadır. fonksiyonel olması Şekil 2 - Veritabanı ER Şeması 3.1. ‘Music’ Tablosu ‘Music’ tablosu içersinde birincil anahtar olarak ID sütununu barındırır. Bu şekilde veritabanına eklenen her müziğe biricik bir değer atanmaktadır. Müzik tablosunda müziğin ismi, sahibi, içinde bulunduğu albüm, çıkış yılı gibi klasik müzik bilgilerinin yanında ASF bilgisi de saklanmaktadır. ASF bilgisi tablarla ayrılmış satırlar halinde tutulmaktadır. Bu kısımda ASF, MPEG-7 [3] standardı çerçevesinde XML olarak tutulabileceği düşünülmüştür, ancak sadece verinin tutularak XML’deki diğer bilgilerin gereğinde bu veriden çıkartılarak MPEG-7 ASF XML’i oluşturulabileceği görüldüğünden yerden tasarruf etmek için bir tasarım kararı alınarak ASF verisi XML olarak tutulmamıştır. Bu tabloda ayrıca ‘source’ sütunu bulunmaktadır, bu sütun şarkının nereden veritabanına eklendiğini göstermektedir (şarkının dosya sistemindeki yeri), bu şekilde kullanıcıya eşleşen şarkıya bağlantı sağlanmıştır. Tabloda bulunan son sütun ‘isReference’ sütunudur. Bu sütunun varsayılan değeri sıfırdır ve ilgili kayıtın referans verisi olup olmadığı bilgisini tutmaktadır. Eğer ilgili kayıt bir referans ise bu sütuna kaçıncı referans olduğu yazılmaktadır. 5 3.2. ‘Distances’ Tablosu ‘Distances’ tablosu 2.4’de anlatılan belirlenmiş birden fazla referansa verisine göre hesaplanan uzaklık değerlerini tutmak için kullanılmıştır. Her bir referans verisi için yeni bir ‘distance’ sütunu yaratılmaktadır ve referans verisinin ‘music’ tablosunda bulunan isReference değerine göre numaralandırılmaktadır. Öyle ki, ‘distanceN’ sütununun referans verisi ‘music’ tablosundaki ‘isReference’ değerinin N’e eşit olduğu kayıttır. 3.3. ‘album’ ve ‘artist’ Tabloları ‘album’ ve ‘artist’ tabloları şarkıların albüm isimlerini ve sanatçılarını tutmak için kullanılmıştır. İki tabloda da isimler birincil anahtarlar ile eşleştirilmiştir. ‘album’ tablosunda ayrıca birden fazla albümün aynı isimde olabileceği ancak farklı sanatçılar tarafından oluşturulabileceği düşünülerek ‘artistID’ sütunu barındırmaktadır. 6 4. UYGULAMA TASARIMI Uygulama C# platformu kullanılarak Visual Studio 2005 ortamında geliştirilmiştir. Geliştirme ortamı olarak C# dilinin tercih edilmesinin nedenleri olarak; hızlı uygulama geliştirme olanağı ve hazırda bulunan sınıflar sıralanabilir. Geliştirme sonucunda bu dilin bu iş için uygun olduğu görülmüştür. Uygulamanın üreteceği verileri tutmak için veritabanı olarak MS SQL Server 2005 tercih edilmiştir. Tercihteki nedenler olarak C# ve Visual Studio 2005 ile MS SQL Server’ın verimli çalışmaları gösterilebilir. Kullanıcı Windows Form Arayüzleri Sunum Katmanı Microsoft C# .NET ile koşan uygulama Uygulama Mantığı Katmanı Microsoft SQL Server 2005 Veri Katmanı Şekil 3 - Sistem Mimarisi Uygulama geliştirirken tamamen nesneye dayalı bir mimari oluşturulmuştur ve bu çerçevede her öğenin birbirinden bağımsız geliştirilmesine çalışılmıştır. Bu şekilde uygulama üzerine yapılacak eklentilere açık hale gelmiştir. 4.1. Uygulamanın Yapısı Şarkı dosyalarının okunması ve işlenmesi, şarkıdan özniteliklerin çıkarılması, referanslarla ilgili işlemlerin yürütülmesi ve diğer önemli sınıflar olmak üzere sınıflar 4 farklı kategoriye ayrılabilir. Ayrıca kullanıcı arayüzleri ve bazı genel fonksiyonları tutmak içinde sınıflar bulunmaktadır ancak bu raporda bu sınıfların tanımına yer verilmemiştir. 7 4.1.1. Şarkı Ekleme İle İlgili Sınıflar Şekil 4 - Şarkı Ekleme İle İlgili Sınıflar Şarkı tanıma uygulaması iki tür ses dosyasını girdi kabul edecek şekilde geliştirilmiştir. Wav dosyaları ve mp3 dosyaları. Wav dosyaları temel ses dosyaları oldukları için, mp3 dosyaları ise çok yoğun kullanılan ses saklama biçimi oldukları için seçilmiştir. Ancak gerçekleştirilen tasarım ile yeni ses dosyası türleri, ‘soundFileHandler’ sınıfına dayanarak oluşturulacak yeni sınıflar ile eklenebilecek şekilde tasarlanmıştır. Uygulamanın çalışması sırasında bir müzik işlenmek istendiğinde (eklenmek veya aranmak istendiğinde) ‘soundFileHandler’ sınıfına ait bir nesne yaratılmaktadır ve ilgili metodlar çağırılarak şarkı veritabanına eklenebilmekte veya arama işlemi için gerekli değerler üretilebilmektedir. Bu türe ait olabilecek ‘WaveReader’ sınıfı proje danışmanı Dr. Mustafa Sert tarafından sağlanmış olup, wav dosyalarının belleğe okunması ve bellekte tutulması işlemlerini yerine getirmektedir. 8 ‘Madxlib’ 1 sınıfı mp3 formatının Wav formatına çevrilmesi için kullanılan bir sınıftır. ‘madxlib.dll’ dosyasını kullanarak mp3 dosyalarını işlemektedir. Programda ayrıca mp3 dosyalarının ID3 özelliklerini okumak için ‘ID3Sharp’ 2 kütüphanesinden yararlanılmıştır. 4.1.2. Özniteliklerin Çıkarılması İle İlgili Sınıflar Şekil 5 - Öznitelik Çıkarmak İle İlgili Sınıflar Bu türe ait sınıflar proje danışmanı Dr. Mustafa Sert tarafından sağlanmıştır. ‘AudioSpectrumFlatness’ sınıfı kendisine verilen örneklerden ‘Spectrum’ ve ‘AudioUtils’ sınıfında bulunan metotları kullanarak ASF matrisini üretir. 4.1.3. Referanslar İle İlgili Sınıflar Şekil 6 - Referanslar İle İlgili Sınıflar 1 Madxlib GPL olarak değıtılan madlib kütüphanesinin C# dili için uyarlanmasıdır. http://www.arbingersys.com/madxlib.html 2 ID3Sharp GPL olarak dağıtılan ve ID3 özelliklerini C# diliyle işlemek için geliştirilmiş bir kütüphanedir. http://sourceforge.net/projects/id3sharp/ 9 Uygulamada tasarım aşamasında öngörülen tek referans kullanarak uzaklık hesaplama yönteminin yeterli başarı elde edemediği görülmesi üzerine referans sayısının ihtiyaç doğrultusunda arttırılması düşünülmüş ve bu şekilde başarı sağlanmıştır. Birden fazla referansın kullanılabilmesi için iki sınıf yaratılmıştır. ‘Reference’ sınıfı bir referans noktası için durumları yönetmektedir. ‘Reference’ sınıfı oluşturulduğunda oluşturulduğu müzik verisini ‘music’ nesnesi olarak almakta, istendiğinde verilen başka bir ‘music’ nesnesi veya ASF verisi için kendisine olan uzaklığını döndürebilmektedir. Ayrıca üzerine aldığı ‘music’ nesnesini yeni bir referans noktası olarak da atayabilmektedir ve veritabanında ilgili değişiklikleri yapmaktadır. ‘References’ sınıfı belirlenmiş tüm referansları ‘Reference’ nesnesi olarak yüklemekte ve kendisine verilen bir ‘music’ nesnesi için bu referanslara olan uzaklıklarını döndürebilmekte veya o ‘music’ nesnesini referans noktalarına olan uzaklıklarını veritabanındaki ‘distances’ tablosuna ekleyebilmektedir. 4.1.4. Diğer Önemli Sınıflar ‘Music’ sınıfı bir şarkının temelini oluşturur ve bütün özelliklerini barındırır. Şarkının veritabanına eklenmesini, uzaklıklarının hesaplanması, vb. bütün işlemlerden sorumludur. ‘Loger’ sınıfı programın yürüttüğü işlemlerle ilgili performans kayıtlarını tutar ve bu bilgileri bir dosyaya yazar. ‘Artist’ ve ‘album’ sınıfı, şarkı albüm ve sanatçı bilgilerinin veritabanına eklenmesi ve çekilmesi ile ilgili işlemleri yürütür. ‘search’ sınıfı arama işlemlerini yönetmek için kullanılır. İstenen benzerlikteki müziklerin döndürülmesi için metotlar bulunur. 10 Şekil 7 - Diğer Önemli Sınıflar 4.2. Programın Çalışması Programda kullanılan kullanıcı arayüzüleri Windows formları şeklinde tasarlanmıştır. Program bulunulması istenen müziklerin veritabanına program aracılığıyla kaydedilmesini gerektirir. Sistemin test edilebilmesi için bulunulması istenen müzikler değiştirilerek (bozularak, arka plan gürültüsü eklenerek) sistemde aranır. Sonuç veritabanındaki müziklere benzerlik olarak döner. 11 4.2.1. Ana Ekran Şekil 8 - Uygulama Ana Ekranı Uygulama ilk çalıştırıldığında karşılaşılan arayüz eklenecek veya aranacak şarkının seçimi için kullanılacak formdur. Bu formda şarkı, sanatçı ve albüm tablolarına bakmak için tasarlanan formları açmak için de tuşlar bulunmaktadır. Ayrıca bu arayüzde yeni referans belirlemek içinde tasarlanmış forma geçiş için tuş bulunmaktadır. 4.2.2. Yeni Şarkı Ekleme Şekil 9 - Şarkı Ekleme Ekranı Yeni bir şarkı eklenmek istendiğinde ana ekrandan bir şarkı seçerek ulaşılan bu formda eğer seçilen şarkı türü mp3 ise bu türe ait bir özellik olan ID3 tanımlayıcıları (Sanatçı, şarkının ismi, vb. bilgiler) mp3 dosyasından okunmakta ve formun ilgili yerlerine yerleştirilmektedir. Eğer dosya wav dosyası ise bu alanlar boş kalmaktadır ve kullanıcıdan girilmesi beklenmektedir. Kullanıcı girilen verilen doğruluğundan emin olduktan sonra ‘Add’ tuşuna basarak şarkıyı veritabanına ekleyebilir. Veritabanına eklenen veriler farklı bit oranlarında farklı örneklem oranları ile kaydedilmiş olabilir. Tüm dosyalar işlenmeden önce uygulama tarafından 44.1kHz örneklem oranına ve 16 bit oranına uyarlanmaktadır. ASF spektral 12 analiz gerçekleştirdiği için insan kulağı tarafından anlaşılabilir düzeydeki ses verisi için anlamlı veri çıkartabilecektir. Yeni şarkı eklerken program sırasıyla, • • • • • • • Şarkıyı belleğe alır, Eğer formatı mp3 ise bunu bellekte wav dosyasına çevirir, Bellekteki şarkıyı tek kanala (mono) indirir, Tek kanala inmiş örneklerden ASF verisini çıkartır, Çıkan ASF verisini ve formda verilen şarkı bilgilerini veritabanına kaydeder, o Eğer formda verilen sanatçı ve albüm bilgileri ilgili tablolarda yoksa bunları ilgili tablolara ekler Veritabanında otomatik atanmış ID numarasını alır ve her bir referans için uzaklık hesaplayarak bu uzaklıkları veritabanına kaydeder, Ekleme işlemi sonlanır. 4.2.3. Şarkı Arama Ekranı Şekil 10 - Şarkı Arama Ekranı Kullanıcı bir şarkıyı aramak istendiğinde ana ekrandan aramak istediği şarkı dosyasını seçer ve arama ekranına geçer. Gelen ekranda eğer dosya mp3 ise ekleme ekranında olduğu gibi ID3 tanımlayıcı özellikleri belirir. Bu bilgilerin aramada herhangi bir etkisi yoktur sadece kullanıcıyı bilgilendirme amaçlıdır. Kullanıcı arama yöntemini belirledikten sonra ‘Check’ tuşuna basar. 13 Üç tip arama yöntemi bulunmaktadır. a. Point Search (Nokta Arama): Bu arama yönteminde aranan şarkıya en çok benzeye şarkı sonuç olarak döner. b. Range Search (Aralık Arama): Bu arama yönteminde belirtilen yüzde aralık içinde benzeyen şarkılar sonuç olarak döner. c. K-nearest Search: (En yakın k-Arama) Aranan şarkıya en çok benzeyen kullanıcı tarafından istenen ilk k tane şarkı sonuç olarak döner. Arama yaparken program sırasıyla aşağıdaki işlemleri yerine getirir • • • • • • • Şarkıyı belleğe alır, Eğer formatı mp3 ise bunu bellekte wav dosyasına çevirir, Bellekteki şarkıyı tek kanala (mono) indirir, Tek kanala inmiş örneklerden ASF verisini çıkartır, Çıkan ASF verisini kullanarak her bir referans için uzaklık hesaplar, Bu uzaklıklardan üçgen eşitsizliği yöntemini kullanarak bir benzerlik çıkartır, Kullanıcının belirlediği arama parametrelerine göre sonuç oluşturulur. 4.2.4. Diğer Ekranlar Uygulamada bulunan bir form olan New Reference formu veritabanında bulunan bir parçanın referans noktası olarak atanması için kullanılır. Uygulamada bulunan diğer ekranlar uygulamada kullanılan veritabanı tablolarını görüntülemek ve bunları el ile değiştirmek için kullanılır. 14 5. SONUÇLAR ve ÖNERİLER 5.1. Çalışma Sonucu Sağlanan Yararlar Proje sonucunda bilgisayarda müzik kavramı tanınmış, bu kapsamda bilgisayarda müziğin ifade edilmesi incelenmiş. MP3 ve benzeri sıkıştırma yöntemleri incelenmiş bu konularda tecrübe elde edilmiştir. Müziğin tanınması için yöntemler ve akademik araştırmalar incelenmiş. Müziğin tanınması için özniteliklerin gerekliliği fark edilmiştir. Özniteliklerin özellikleri ve çıkarılması ile ilgili bilgi ve tecrübe elde edilmiştir. Nesne yönelimli programlama, C# dili ile yoğun bir şekilde kullanılmış ve tecrübe elde edilmiştir. Veritabanı kullanımı ile ilgili tecrübe elde edilmiştir. 5.2. Çıktı Ürünü Proje sonucunda ortaya çıkan uygulama sorunsuz çalışmaktadır. Müzik yakalama başarısının müzikteki farklılaşma (bozulma, arka plan gürültüsü, vb.) miktarı doğrultusunda değiştiği görülmüş ve testlerde, özellikle çoklu referans noktası kullanarak yüksek başarı elde edildiği görülmüştür. 5.3. Projenin İlerletilmesi Proje var olan yapısı üzerine kolayca geliştirilebilecek niteliktedir. Özellikle arkaplan gürültüsünde elde edilen yakalama başarısının bu sistemin geliştirilerek gürültülü bir ortamdaki müziği tanımakta kullanılabileceği görülmüştür. Buda mobil uygulamalar için önemli bir açılımdır. Yakın zamanda projeye yeni ses türleri eklenebilir (AAC, AC3, WMA, vb.), cevrimiçi mp3 formatında yayın yapan radyoların dinlenebilmesi sağlanabilir ve İnternet ortamında çalıştırılması sağlanabilir. Projenin tanıma veriminin arttırılması için ise referans noktasının seçilmesi konusunda algoritma geliştirilebilir, aynı anda birden fazla öznitelik kullanarak ses tanıma geliştirilebilir. 15 KAYNAKLAR [1] A Robust and Time-Efficient Fingerprinting Model for Musical Audio, M. Sert, B. Baykal, and A. Yazıcı, IEEE, 2006. [2] Web-based Query Engine for Content-based and Semantic Retrieval of Audio, Mustafa Sert, Buyurman Baykal, IEEE, 2004. [3] Joint Technical Committee ISO/IEC JTC 1. ISO/IEC 15938-4 Information technology - Multimedia content description interface - Part 4: Audio. Final Draft International Standard, 2001. [4] MPEG-7, http://en.wikipedia.org/w/index.php?title=MPEG-7&oldid=100568295 [5] Euclidean distance, http://en.wikipedia.org/w/index.php?title=Euclidean_distance&oldid=98151008 [6] Weisstein, Eric W. "Triangle Inequality." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/TriangleInequality.html 16