[]
insan sesini diğer seslerden nasıl ayırt edebiliriz?
elektronik dersinin projesi olarak vumetre yapacağız. (bkz: vumetre)
ama istenen özellikler arasında entegre kullanmamak ve insan sesini de ayırt edebilmek var. hadi entegrenin verisayfasından içine bakıp yapabiliriz de insan sesini nasıl ayırabiliriz?
insan sesinin ayırt edici özelliklerini nerden nasıl bulabiliriz? ya da bilen eden var mıdır?
ama istenen özellikler arasında entegre kullanmamak ve insan sesini de ayırt edebilmek var. hadi entegrenin verisayfasından içine bakıp yapabiliriz de insan sesini nasıl ayırabiliriz?
insan sesinin ayırt edici özelliklerini nerden nasıl bulabiliriz? ya da bilen eden var mıdır?
insan sesini ayırdetmek derken, karmaşık bir ses içinden insan sesini çıkarıp almaktan mı bahsediyorsun? eğer öyle bir şey isteniyorsa, şu anda böyle bir teknoloji mevcut değil, yaparsanız baya zengin olabilirsiniz.:)
istenen şeyi daha açık yazarsan belki bilgim dahilinde biraz yol gösterebilirim. tam olarak ne yapması gerekiyor? ve tamamen analog mu olacak?
istenen şeyi daha açık yazarsan belki bilgim dahilinde biraz yol gösterebilirim. tam olarak ne yapması gerekiyor? ve tamamen analog mu olacak?
- kurukafa (13.04.08 17:05:51)
öyle bir şey isteyemezler o zaman :) sanırım insan sesiyse ve ya başka bir ses ise ayrı tepki vermeli.
tamamen analog olmalı. ama mantıksal kapılara izin var.
Projenin açıklaması şöyle :
VU Meter
• Indicates the sound level
• Includes display
• Indicates human/other
tamamen analog olmalı. ama mantıksal kapılara izin var.
Projenin açıklaması şöyle :
VU Meter
• Indicates the sound level
• Includes display
• Indicates human/other
- hanioluryabazen (13.04.08 17:14:29)
edindiğim bilgilere göre insan konuşması yaklaşık 40 db - 60 db arasındaymış. bunu analog olarak nasıl karşılaştırabiliriz?
- hanioluryabazen (13.04.08 17:39:11)
Şimdi elektronik bilgim yok denecek kadar az. Fakat dijital olarak bir şeyler düşünebiliyorum bu iş için. Sen bunları elektroniğe çevirebilirsin belki. Burada - Indicates human/other olayının bir limiti olmalı. Yani insan sesi diğer seslerden farklı bir ses değildir, mesela insan bir -aaaaaaaaaaa veya -ooooooooo diye çığırdığı zaman iki harfte de formantlar(baskın frekanslar) farklı olsalar bile, spektral olarak bunların içeriğine bakmak bize o sesin insan sesi olduğunun garantisini vermez, benzer formantlı sesler enstrumanlardan da çıkabilir. Ve böyle bir yaklaşımı pratiğe öyle veya böyle pratiğe dökebilmek için, vumetre yapma becerisinin yaklaşık bin katına falan ihtiyaç vardır diye düşünüyorum, bu durumda ödev dengesiz bir ödev olur, böyle bir şey olduğunu sanmıyorum.
Human/other kavramını "insan konuşma sesi" ve "başka sesler" olarak limitlersek, işler çok değişir ve kolaylaşır. Ve ödevin görülür doğasına daha uygun bir hal alabilir. Çünkü insan konuşması hakikaten doğadaki diğer seslerin büyük bir çoğundan ayrılır özelliklere sahiptir, ve bunları algılamak çok çok daha kolay.
Ben dijital olarak böyle bir şey uygulayacak olsam iki özelliğe bakardım.
1- Konuşma sesinin genliği kısa zamanda büyük değişiklikler gösterir. Yani vumetre, konuşma esnasında sürekli bir yukarı bir aşağı oynayacaktır ve tepe noktası ile taban noktası arasındaki fark yüksek olacaktır. Çünkü kelimeler arasında sessizlik, özellikle p, ç, t gibi harfleri söylerken de yüksek genlikli sesler çıkacaktır. Eğer vumetredeki değişimin frekansını bir şekilde takip edebilirseniz, değişim frekansı ve genliği yüksek ise, en azından bir ödev uygulaması için "bu bir insan sesidir" demek için yeterli sayılabilecek delil elde etmiş oluruz.
2- Bu öncekinden daha belirgin bir etki: Konuşma sesi armonik ve inarmonik-gürültülü sesler arasında çok sık ve hızlı değişimler içerir. ş, s, ç, h, f, j, belki biraz k(atağı) ve z harflerinin geçtiği yerler daha çok "noise" içerir ve insan sesinin normalde çıkamayacağı frekanslarda(2-3kHz ve üzeri) gürültüler meydana getirirler. Bunu kendi kendine aaaaaaaa ve sssssssss diyerek de deneyebilirsin. Ve işin güzel yanı, konuşma esnasında armonik ve inarmonik sesler arasındaki geçişler çok çok hızlı olur. Yani sen "ahmet mete ışıkara" derken h, t, t, ş, k harflerinde yüksek frekanslı gürültüler, diğer harflerde de düşük frekanslı armonik sesler çıkarıyorsun. Beyin bu karmaşayı decode etmekte çok iyi bir iş yapıyor.
Her neye, bu armonik ses - gürültü arasındaki değişimin hızını da bir şekilde ölçebilirsen, ve bunu da 1. madde ile beraber dikkate alırsan, insan konuşma sesini algılama konusunda bence büyük bir isabet elde edebilirsin. 2. maddede söylediğim şeyi ölçmek için basit bir "zerocrossing" ölçümü yapman yeterli. Yani aldığı nses sinyalinin, dalganın, 0 noktasından geçmesinin frekansını ölçmelisin. Gürültülü harflerde zerocrossing filtresi yüksek dereğler verecek, armonik harflerde ise düşük değerler verecektir, fakat bu değerler büyük bir alan içinde hızlıca hareket edeceklerdir. Bu hız ve genlik belli bir değerden büyük ise, bir insan konuşması dinliyoruz demektir. İkisini de dijital olarak uygulamak çok basit, analog olarak da o kadar zorluk çıkaracaklarını sanmıyorum. zaten birincisini vumetre yaparken yapacaksın. ikincisi için ise basit bir zerocrossing filtresi ekleyip onun çıkışındaki dalgalanmanın genliğini ve değişimin hızını ölçeceksin. analog olarak nasıl yapılır çok fikrim yok ama kolaydır diye umuyorum.
umarım işinize yarar, kolay gelsin.
Human/other kavramını "insan konuşma sesi" ve "başka sesler" olarak limitlersek, işler çok değişir ve kolaylaşır. Ve ödevin görülür doğasına daha uygun bir hal alabilir. Çünkü insan konuşması hakikaten doğadaki diğer seslerin büyük bir çoğundan ayrılır özelliklere sahiptir, ve bunları algılamak çok çok daha kolay.
Ben dijital olarak böyle bir şey uygulayacak olsam iki özelliğe bakardım.
1- Konuşma sesinin genliği kısa zamanda büyük değişiklikler gösterir. Yani vumetre, konuşma esnasında sürekli bir yukarı bir aşağı oynayacaktır ve tepe noktası ile taban noktası arasındaki fark yüksek olacaktır. Çünkü kelimeler arasında sessizlik, özellikle p, ç, t gibi harfleri söylerken de yüksek genlikli sesler çıkacaktır. Eğer vumetredeki değişimin frekansını bir şekilde takip edebilirseniz, değişim frekansı ve genliği yüksek ise, en azından bir ödev uygulaması için "bu bir insan sesidir" demek için yeterli sayılabilecek delil elde etmiş oluruz.
2- Bu öncekinden daha belirgin bir etki: Konuşma sesi armonik ve inarmonik-gürültülü sesler arasında çok sık ve hızlı değişimler içerir. ş, s, ç, h, f, j, belki biraz k(atağı) ve z harflerinin geçtiği yerler daha çok "noise" içerir ve insan sesinin normalde çıkamayacağı frekanslarda(2-3kHz ve üzeri) gürültüler meydana getirirler. Bunu kendi kendine aaaaaaaa ve sssssssss diyerek de deneyebilirsin. Ve işin güzel yanı, konuşma esnasında armonik ve inarmonik sesler arasındaki geçişler çok çok hızlı olur. Yani sen "ahmet mete ışıkara" derken h, t, t, ş, k harflerinde yüksek frekanslı gürültüler, diğer harflerde de düşük frekanslı armonik sesler çıkarıyorsun. Beyin bu karmaşayı decode etmekte çok iyi bir iş yapıyor.
Her neye, bu armonik ses - gürültü arasındaki değişimin hızını da bir şekilde ölçebilirsen, ve bunu da 1. madde ile beraber dikkate alırsan, insan konuşma sesini algılama konusunda bence büyük bir isabet elde edebilirsin. 2. maddede söylediğim şeyi ölçmek için basit bir "zerocrossing" ölçümü yapman yeterli. Yani aldığı nses sinyalinin, dalganın, 0 noktasından geçmesinin frekansını ölçmelisin. Gürültülü harflerde zerocrossing filtresi yüksek dereğler verecek, armonik harflerde ise düşük değerler verecektir, fakat bu değerler büyük bir alan içinde hızlıca hareket edeceklerdir. Bu hız ve genlik belli bir değerden büyük ise, bir insan konuşması dinliyoruz demektir. İkisini de dijital olarak uygulamak çok basit, analog olarak da o kadar zorluk çıkaracaklarını sanmıyorum. zaten birincisini vumetre yaparken yapacaksın. ikincisi için ise basit bir zerocrossing filtresi ekleyip onun çıkışındaki dalgalanmanın genliğini ve değişimin hızını ölçeceksin. analog olarak nasıl yapılır çok fikrim yok ama kolaydır diye umuyorum.
umarım işinize yarar, kolay gelsin.
- kurukafa (13.04.08 17:41:31)
insan konuşmasının 40-60db arasında olması senin için fazla bir şey ifade etmez. Aynı şiddette bir sürü ses bulabilirsin, mikrofona aaaaaaa demek ile çello ile la notası vermek arasında şiddet açısından çok fark olmayacaktır(veya flüt çal). Yani bu ölçümleri "anlık" veriler ile yapamazsın, biraz buffer'a ihtiyacın var. Vumetrenin bile çılgınca yukarı aşağı oynamaması için atıyorum son 0.2 saniyeyi dikkate alman gerekecek. Diğer ölçümler için de böyle bir uygulamaya gitmen gerekiyor.
not: egotm, db frekans domaininde bir değer değildir, sesin şiddetini(iki referans noktası arasındaki farkı) belirler. bandpass filtre ise belirli bir frekans aralığını filtreler. biri dikey biri yatay yani. 40-60hz olsaydı dediğin olurdu, ancak insan aklınıza gelebielcek hemen her sesle aynı frekans aralığını paylaşıyor bu yüzden filtreleyerek bir yere varmanın pek mümkünü yok.
not: egotm, db frekans domaininde bir değer değildir, sesin şiddetini(iki referans noktası arasındaki farkı) belirler. bandpass filtre ise belirli bir frekans aralığını filtreler. biri dikey biri yatay yani. 40-60hz olsaydı dediğin olurdu, ancak insan aklınıza gelebielcek hemen her sesle aynı frekans aralığını paylaşıyor bu yüzden filtreleyerek bir yere varmanın pek mümkünü yok.
- kurukafa (13.04.08 17:47:02)
insan sesini araştırdım, sopranonun aralığı 240-1152Hz imiş. Yalnız insan sesi 80Hz lere kadar inebiliyormuş sanırım.
www.baktabul.com
Bir adet lowpass filtre koy, 1152hz cutoff olsun, üstü insan sesi değil dersin, genliğe göre de vu metrenin kademelerini arttırırsın.
www.baktabul.com
Bir adet lowpass filtre koy, 1152hz cutoff olsun, üstü insan sesi değil dersin, genliğe göre de vu metrenin kademelerini arttırırsın.
- kimlanbu (13.04.08 17:53:45)
240-1152Hz arasında ses veren binlerce, hatta milyonlarca ses kaynağı sayabilirim. Çevrenizde günlük hayatta duyduğunuz hemen her ses o frekans aralığında ses içerecektir.
Dediğim gibi, insan sesi frekans aralığı olarak günlük hayatta duyabildiği hemen her ses ile aynı aralığı paylaşır. Bu yüzden gelen frekans aralığı ile lineer bir ölçüm yapmak hiç bir yere vardırmaz, yani verdiğiniz her seste ışık yanar.
Dediğim gibi, insan sesi frekans aralığı olarak günlük hayatta duyabildiği hemen her ses ile aynı aralığı paylaşır. Bu yüzden gelen frekans aralığı ile lineer bir ölçüm yapmak hiç bir yere vardırmaz, yani verdiğiniz her seste ışık yanar.
- kurukafa (13.04.08 17:57:27)
@kurukafa çok mantıklı diyor ama analog olarak bunu nasıl yapabiliriz ki? frekans ve genlik değişimini analog olarak nasıl takip edebiliriz?
- hanioluryabazen (13.04.08 18:08:58)
Tamamen atıyorum, dijital olarak yapsam şöyle yapardım: sonuçları hipass filtreden geçiririm. cutoffunu dene yanılla makul bir seviyeye ayarlarım. değişim hızlı ise, çıkan değerin frekansı yüksek demektir. bu da hipass çıkışında değer gözükmesine sebep olur. değişimler yavaş ise, hipass fazla değer çıkarmaz.
Kıt elektronik bilgimden devam: Daha önce bahsettiğim "buffering" olayı elektronikde kondansatörler ile sağlanıyor bildiğim kadarıyla. yani yükü depolamalı ve belirli durumlarda boşaltmalısın. Bu durumda basit rc devreli filtreler ile iş göreceksin. hipass için bir direnç(cutoff noktasını belirlemek için) ve bir de kondansatöre ihtiyaç var. belirlediğin cutoff noktasına göre değişimin frekansını bunlarla bir highpass devresi yaparak elde edebilirsin diye düşünüyorum.
Yani önce vumetreyi yap, snra vumetreyi süren sinyalini highpassten geçir değişim hızlı ise frekansı yüksektir, highpass makul bir çıkış verir, yoksa bir şey veremez, kondansatör yeterince hızlı boşalamaz.
Aynı şekilde zerocrossing filtresinin sonuna da bir highpass koy, onun a değişimi hızlı isedeğişimin frekansı yüksektir, bu durumda highpass makul bir değer verir.
şayet ikisi de belli bir değerin üstünde ise, konuşma dinliyoruzdur falan diyebiliriz bence.
Kıt elektronik bilgimden devam: Daha önce bahsettiğim "buffering" olayı elektronikde kondansatörler ile sağlanıyor bildiğim kadarıyla. yani yükü depolamalı ve belirli durumlarda boşaltmalısın. Bu durumda basit rc devreli filtreler ile iş göreceksin. hipass için bir direnç(cutoff noktasını belirlemek için) ve bir de kondansatöre ihtiyaç var. belirlediğin cutoff noktasına göre değişimin frekansını bunlarla bir highpass devresi yaparak elde edebilirsin diye düşünüyorum.
Yani önce vumetreyi yap, snra vumetreyi süren sinyalini highpassten geçir değişim hızlı ise frekansı yüksektir, highpass makul bir çıkış verir, yoksa bir şey veremez, kondansatör yeterince hızlı boşalamaz.
Aynı şekilde zerocrossing filtresinin sonuna da bir highpass koy, onun a değişimi hızlı isedeğişimin frekansı yüksektir, bu durumda highpass makul bir değer verir.
şayet ikisi de belli bir değerin üstünde ise, konuşma dinliyoruzdur falan diyebiliriz bence.
- kurukafa (13.04.08 18:12:26)
İnsan sesi mi değil mi ayırt etmek spektrum analizi gerektiriyor, benim önerim duyulan ses insan sesinin bant aralığı içinde mi onu bulur. Elbette tencere/tabak sesi yanlış alarmlara sebep olabilir, hatta olur.
Ses tespitini iyileştirmek için bir adet highpass filtre ile konuşma esnasında insan sesine ait olmayan frekanslar var mı kontrol edilebilir.
Ses tespitini iyileştirmek için bir adet highpass filtre ile konuşma esnasında insan sesine ait olmayan frekanslar var mı kontrol edilebilir.
- kimlanbu (13.04.08 19:53:27)
kimlanbu, abi yine biraz muhalefet edeceğim kusuruma bakma ama: spektral analizin otomatik yorumlanması için gerekli know-how çok büyük, muhtemelen hiçbirimiz işin içinden çıkamayız, dijital bir implementasyon ile fft kasmak gerekir.
spektrum analizinden kastettiğin şey basit bir filtreleme ise, o başka fakat neden işe yaramayacağını anlatayım; insan sesi özellikle konuşma işin içine girdiğinde, çok ama çok karmaşık bir hal alıyor. biz konuşmayı kolay anladığımız için bu karmaşayı çoğu zaman es geçiyoruz ama insanları konuştuklarını anlamaya çalışmadan sadece çıkardıkları seslerle dinlemeye çalışın, anlamdan soyutlanarak, ne demek istediğim daha belirgin olacaktır.
Şimdi senin araştırıp insan sesi şu şu hz ler arasındadır diye vardığın sonuç, insanın ses tellerinin üretebileceği maksimum titreşimi tanımlıyor, fakat insan sesi direk ses tellerinden çıkmıyor, ağız boşluğundan geçiyor ve biz ses tellerinden iletilen sese ağız hareketleriyle karmaşık filtreler uyguluyoruz, konuşma da böyle oluşuyor zaten. ve bu ağızdaki rezonant filtreleme sonucu ses, ses tellerinin ürettiğinden çok daha yüksek frekans içeriğine sahip bir şekilde ağızdan dışarı çıkabiliyor.
bir mikrofona en kalın sesinle sesssss diyip fft graph de spektrum analizini incelersen 5-6khz ve üstüne kadar titreşim ürettiğini göreceksin. 100hz den oraya kadar alacaksak, pratikte aslında ödevi denemek için kullanılabilecek bütün sesler o aralığın içindedir. bu yüzden bu bize ekstra bir fayda sağlamaz.
şimdi dersen ki madem öyle 6-7khz in üzerine bakalım. çok yukarısı varsa kabul etmeyelim, olabilir ama bize yarattığı baş ağrısı kadar ekstra bri fayda da sağlamaz. mesela çok yüksek frekanslar üreten bir zil(ride olur crash olur splash olur) ile deniyoruz diyelim, 10khz üzerisi dolu, ama çok yüksek frekanslı ses üreten araçlar da insan konuşmasına benzer özellikler göstermeyeceklerinden, demin belirttiğim iki yöntemin bileşkesinden zaten geçemeyeceklerdir. böyle durumda bize yine ekstra bri fayda sağlamayacaktır.
bahsettiğin yöntem akla ilk gelişinde mantıklı gibi gözükse de insan sesini yakından incelediğimizde bize herhangi bir faydalı veri(ayrıştırma konusunda) sağlamayacağı çabucak belli oluyor.
spektrum analizinden kastettiğin şey basit bir filtreleme ise, o başka fakat neden işe yaramayacağını anlatayım; insan sesi özellikle konuşma işin içine girdiğinde, çok ama çok karmaşık bir hal alıyor. biz konuşmayı kolay anladığımız için bu karmaşayı çoğu zaman es geçiyoruz ama insanları konuştuklarını anlamaya çalışmadan sadece çıkardıkları seslerle dinlemeye çalışın, anlamdan soyutlanarak, ne demek istediğim daha belirgin olacaktır.
Şimdi senin araştırıp insan sesi şu şu hz ler arasındadır diye vardığın sonuç, insanın ses tellerinin üretebileceği maksimum titreşimi tanımlıyor, fakat insan sesi direk ses tellerinden çıkmıyor, ağız boşluğundan geçiyor ve biz ses tellerinden iletilen sese ağız hareketleriyle karmaşık filtreler uyguluyoruz, konuşma da böyle oluşuyor zaten. ve bu ağızdaki rezonant filtreleme sonucu ses, ses tellerinin ürettiğinden çok daha yüksek frekans içeriğine sahip bir şekilde ağızdan dışarı çıkabiliyor.
bir mikrofona en kalın sesinle sesssss diyip fft graph de spektrum analizini incelersen 5-6khz ve üstüne kadar titreşim ürettiğini göreceksin. 100hz den oraya kadar alacaksak, pratikte aslında ödevi denemek için kullanılabilecek bütün sesler o aralığın içindedir. bu yüzden bu bize ekstra bir fayda sağlamaz.
şimdi dersen ki madem öyle 6-7khz in üzerine bakalım. çok yukarısı varsa kabul etmeyelim, olabilir ama bize yarattığı baş ağrısı kadar ekstra bri fayda da sağlamaz. mesela çok yüksek frekanslar üreten bir zil(ride olur crash olur splash olur) ile deniyoruz diyelim, 10khz üzerisi dolu, ama çok yüksek frekanslı ses üreten araçlar da insan konuşmasına benzer özellikler göstermeyeceklerinden, demin belirttiğim iki yöntemin bileşkesinden zaten geçemeyeceklerdir. böyle durumda bize yine ekstra bri fayda sağlamayacaktır.
bahsettiğin yöntem akla ilk gelişinde mantıklı gibi gözükse de insan sesini yakından incelediğimizde bize herhangi bir faydalı veri(ayrıştırma konusunda) sağlamayacağı çabucak belli oluyor.
- kurukafa (13.04.08 22:00:49)
@kurukafa, niye kusura bakayım ahajasdlh yanlışlarımı görüyorum (: analiz kısmının uygulanabilir olduğunu düşünmüyorum zaten. bir ödev için imkansız seviyesinde. Örnek vereyim, speech to text olayını biliyorsundur, hatta yerli versiyonu var :
www.dikte.com.tr
sesi tanımakla kalmıyor, yazıya çeviriyor :P özetle öğrenci adamı aşar.
Basitçe nasıl halledilir başka bir fikrim yok ne yazık ki (:
www.dikte.com.tr
sesi tanımakla kalmıyor, yazıya çeviriyor :P özetle öğrenci adamı aşar.
Basitçe nasıl halledilir başka bir fikrim yok ne yazık ki (:
- kimlanbu (14.04.08 00:36:31)
1