İki Ses sinyali arasında benzerlik bulma Fikir alışverişi

Başlatan Mucit23, 12 Şubat 2020, 11:49:39

Mucit23

Selamlar

Bir tane referans ses sinyali olsun. Başka bir ses sinyalini bu sinyal ile karşılaştırıp benzerlik oranını % olarak bulmak istiyorum. Genellikle ses sinyalleri farklı uzunlukta olduğu için zamandan bağımsız "Dynamic Time Warping" gibi vektörel benzerliği bulan algoritmalar kullanılıyor.

Matlab'da bende kendim Dynamic Time Warping'e benzer bir çalışma yaptım aslında. İki ses sinyalinin spectrogram'nı alıp elde ettiğim matrisden iki ayrı ses için iki özellik dizisi çıkardım.  Daha sonra bu iki diziden öklit uzaklık matrisini oluşturup bu matris içerisinde iki köşegen arası en kısa yolu bulmaya çalıştım.

Dynamic Time Warping'deki olay bu aslında


Benim yaptığım uygulamada elde ettiğim çıktı bu şekilde


Kırmızı bölgelerde konuşma yapılmış. Aynı cümleyi söylediğim iki farklı ses kaydını yazdığım algoritmaya vermem sonucu aldığım çıktı. Ortadaki mavi çizgi ise çizdiğim en kısa yol. Buralar da matrisin öklit uzaklıkları en küçük değerleri almış. Aslında konuşma olan yerlerin kırpılması gerekiyor ben onu atladım şimdilik. 

Sorunum şudur. Öyle bir algoritma yazmak istiyorum ki İki ses sinyalini verdiğim zaman bu ses sinyali arasındaki benzerliği yüzde olarak bana versin. Yukarıda bir takım çalışmalar yaptım ama benzerlik konusunda referans bulamadım. Bu konuda değerli fikirlerinize ihtiyacım var. Yani aslında sesli olarak tartışabileceğim fikir alışverişi yapabileceğim birisine ihtiyacım var  :)

Fikir öneri ve görüşlerinizi bekliyorum.


Mucit23

Teşekkürler hocam. Bu konuda bende bir makale buldum bakıyorum
http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf

Aslında yapabilirsem daha basit mantıkla benzerlik bulmak istiyorum. Basitlik önceliğim bu knouda yapılmış bir çalışma varmı bilmiyorum ama bazı arkadaşlar Kolerasyon ile benzerlik bulmaya çalışmış. Şuan ona bakıyorum.

Mucit23

Selamlar

Ses sinyali üzerinde yaptığım özellik çıkarım metotları ile aşağıdaki gibi sinyaller elde ediyorum.


Aşağıda aynı kelimeyi söylediğim iki farklı ses sinyalinden çıkardığım özellik sinyali var. Ses parçaları farklı uzunlukta olduğundan dolayı özellikler de farklı uzunlukta oluyor.

@muuzoo shazam gibi algoritmalara baktım fakat bu tarz algoritmalar hep bir veri tabanına ihtiyaç duyuyor. Çalışmaları genellikle derin öğrenme gibi konuları kapsıyor.

Baya bir yöntem araştırdım ama yukarıdaki farklı uzunluktaki iki sinyalin bir birine benzerliğini bulabileceğim doğrudan yüzde olarak sonuç alabileceğim bir yöntem bulamadım. Dynamic Time Warping ile aslında benzerlik ve en kısa yolu bulan algoritmalar yazdım. Bu tarz işlemlerde genellike DTW algoritmaları kullanılıyor. Fakat bu yöntem sonucunda elde etmiş olduğum mesafe bilgisini de iki ses sinyali için pek anlamlandıramadım. Yine bir veri tabanına ihtiyacım var ve yine birden fazla veri ile karşılaştırıp karar vermem gerekiyor.  :du:

kudretuzuner

Merhaba,ses sinyalleri sonuçta analog yapıdadırlar.Bunları dijitale çevirip (örneğin ADC0804)elde edilen 8 bit data diğer analog giriş dijitale çevrilip elde edilen 8 bit data PIC'te işlenerek eşit olup olmadıklarıkontrol edilebilir.PIC yazılımı biraz zahmetlidir ama yazılabilir.Bu arada benim üzerinde çalıştığım projem de ise iki adet analog girişi dijitale çevirip 18F4550 de karşılıklı meydana gelen 00-FF arası bilgiyi karşılaştırıp eşit olup olmadıklarını PC'den görmektir.Facebook da kurduğum gurupta ve youtub da çalışmaların bir kısmını anlatmaktayım.                     https://www.facebook.com/groups/240754370090107/
Amatör

Mucit23

Abi malesef o kadar kolay değil. Burada işi zora sokan birkaç faktör var.

1. Sorun örnek sayısının çok fazla olması. Bu yüzden genellikle alınan ses parçacığının spektogramı vs alınarak frekans domainine geçiliyor. Frekans domaininde örnekleri incelemek zaman domaininden daha kolay.

Diğer bir sorun veri uzunluklarının farklı olması. Buda işi baya zorlaştırıyor. Doğrudan karşılaştırma yapılamıyor. Örneğin "Merhaba" kelimesini herkes farklı uzunlukta farklı tonlarda söylüyor. Kayıt etkenli başka faktörler var. Dış ortam görültüsü var. Kolay değil valla.

fide

Arkadaşım shazam benzeri bir uygulama yaptı.
Çalışma sistemini sesteki yüksek frekanslı bileşenlerden örnek aldığını ve bunu referans ile karşılaştırdığını söyledi. Yani doğrudan konuşmayı değil sesteki en yüksek frekansa sahip bileşenleri arayıp buluyor ve karşılaşturıyor. Süre önemli değil.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

kudretuzuner

Merhaba,evet arkadaşım konuya bayağı vakıf olmuşsun.Ben daha da ileri parametreleri sayayım."Merhaba" diyen bir şahıs grip ise,sinirli ise ve de sakinleştici ilaç almış ise volümde,frekansta ve tınıda farklılıklar olacaktır.dolayısı ile ses analizlerinde neyi analiz etmek istediğini kısıtlarsan yola daha kolay devam edersin gibi geliyor bana.Örneğin ben iki adet 0-5 volt arası analog bilgileri her ikisini de ayrı ayrı 255'e bölerek karşılaştırmak için yazdığım asm programı 88kb yer tuttu.
Amatör

devrecii

Ses dalgasını aynı resim gibi düşünürsek uzaktan bakılması var bir de yakınlaştırması, yakınlaşınca ayrıntılar daha çok olur, mesela insan yüzü tanımlayacağız resmi çok küçültürsek her insanın yüzü birbirine benzeyecek.

Ses dalgasını uzaklaştırıp kontrol edersen hem bir ön kontrol olacak hem de çok hızlı biçimde olacak ve dilersen ses dalgasını daha da yakınlaştırıp kesinlik artacaktır.

Kıyaslama yaparken hipotenüs vs almaktan ziyede yükseliyor alçalıyor kontrolu yapmak , mesela dalga şu birim yükselir şu birim azalır yüzde bilmam kaç doğru gibi.

jpeg gibi mp3 sıkıştırma da  (kaynak *sinus) varyasyonlarını alarak sıkıştırma yapıyor sıkıştırılmış dosya da kıyaslanabilir diye düşünüyorum. mp3  sinus kullanarak sıkıştırdıktan sonra zipliyor galiba.


brandice5

Konunun uzmani degilim ama DWT (discrete wavelet transform) bir incele istersen.