Gülme izi ne zaman devreye giriyor?


14

Hafta sonu projelerimden biri beni sinyal işlemenin derin sularına getirdi. Bazı ağır görev matematiği gerektiren tüm kod projelerimde olduğu gibi, teorik topraklama eksikliğine rağmen bir çözüme giden yolu düzeltmekten çok mutluyum, ancak bu durumda hiçim yok ve sorunum hakkında bazı tavsiyelerde bulunmak isterim , yani: Bir TV şovu sırasında canlı kitlenin tam olarak ne zaman güldüğünü anlamaya çalışıyorum.

Kahkahaları tespit etmek için makine öğrenimi yaklaşımlarını okumak için biraz zaman harcadım, ancak bunun bireysel kahkahaları tespit etmekle ilgisi olduğunu fark ettim. Aynı anda gülen iki yüz kişi çok farklı akustik özelliklere sahip olacak ve sezgim, sinir ağından çok daha fazla teknikle ayırt edilebilir olmaları. Yine de tamamen yanlış olabilirim! Konuyla ilgili düşünceleri takdir ediyorum.

Şimdiye kadar denediklerim: Saturday Night Live'ın son bölümlerinden beş dakikalık bir alıntıyı iki saniyeye ayırdım. Daha sonra bu "gülüyor" veya "gülmüyor" diye etiketledim. Librosa'nın MFCC özellik çıkarıcısını kullanarak, veriler üzerinde bir K-Means kümeleme çalıştırdım ve iyi sonuçlar aldım - iki küme etiketlerime çok düzgün bir şekilde eşlendi. Ama daha uzun dosyayı tekrarlamaya çalıştığımda tahminler su tutmadı.

Şimdi deneyeceğim: Bu kahkaha kliplerini oluşturma konusunda daha kesin olacağım. Kör bir bölünme ve sıralama yapmak yerine, onları manuel olarak çıkaracağım, böylece hiçbir diyalog sinyali kirletmez. Sonra onları çeyrek saniye kliplere bölerim, bunların MFCC'lerini hesaplar ve bir SVM eğitmek için kullanırım.

Bu noktada sorularım:

  1. Bunlardan herhangi biri anlamlı mı?

  2. İstatistikler burada yardımcı olabilir mi? Audacity'nin spektrogram görüntüleme modunda dolaşıyorum ve kahkahaların nerede meydana geldiğini açıkça görebiliyorum. Bir log güç spektrogramında, konuşma çok belirgin, "çatlaklı" bir görünüme sahiptir. Buna karşılık, kahkaha, neredeyse normal bir dağılım gibi, geniş bir frekans spektrumunu eşit olarak kapsar. Alkışta temsil edilen daha sınırlı sayıda frekansla alkışları kahkahadan görsel olarak ayırt etmek bile mümkündür. Bu beni standart sapmalar hakkında düşündürüyor. Kolmogorov – Smirnov testi denilen bir şey olduğunu görüyorum, burada yardımcı olabilir mi? Log-güç spektrogramı (Yukarıdaki görüntüdeki kahkahayı, içeriye% 45 oranında vuran turuncu bir duvar olarak görebilirsiniz.)

  3. Doğrusal spektrogram, kahkahaların daha düşük frekanslarda daha enerjik olduğunu ve daha yüksek frekanslara doğru kaydığını gösteriyor - bu pembe gürültü olarak nitelendirildiği anlamına mı geliyor? Eğer öyleyse, bu sorun üzerinde bir dayanak olabilir mi? Spektrogram

Eğer herhangi bir jargonu kötüye kullandığım için özür dilerim, bunun için Wikipedia'da biraz oldum ve biraz karışırsam şaşırmazdım.


1
"Gülme izleri için sağlam bir dedektör almak için sinir ağına ihtiyaç duymayacağım" konusunda hemfikirim. Ayrıca, Kolmogorov'u sinyale atmaya da katılıyorum, eğer haklıysanız ve gülme izi, gülmenin (ağırlıklı) toplamı ise, bir tür normal özelliklere sahip olmalısınız . Belki de frekans çözünürlüğünü artırmak istersiniz. Bu arada, DSP'ye "girmeyen" biri için jargonunuz gayet iyi :) ne yazık ki, sesli bir adam değilim, bu yüzden muhtemelen çok yardımcı değilim.
Marcus Müller

YARDIM etmekten mutluluk duyarim. Eğitim için herhangi bir veri var mı? En önemli şeylerden biri veri etiketlemesidir. Çöp içeri çöp dışarı. En basit ve en etkili yaklaşımlardan biri, bir çerçeve çanta GMM eğitmek ve olasılığı değerlendirmek olacaktır.
jojek

Öncelikle, belirli zamanlarda sinyalinizin gücünü / genliğini kontrol ederek kahkahaları sessizlikten ayırabilirseniz kontrol etmek isteyebilirsiniz. Size "bir şeylerin" olduğu anları eşleştirme imkanı verir. Sonra frekansın dağılımına bakmayı deneyebilirsiniz. Örneğin, konuşmanın bazı belirgin keskin zirveleri olabilir (tam olarak bu zirvelerin nerede olduğu umurumda değil, sadece var oldukları için), kahkaha dediğin gibi tekdüze. Bunu izlemek, kahkaha olup olmadığına karar vermek için bir değer verebilir. (Sadece düzgün bir sessizliğe sahip olmadığınızdan emin olmak için ses bilgisine ihtiyacınız var)
user6522399

Yanıtlar:


0

Gözleminize dayanarak, sinyalin spektrumu yeterince ayırt edilebilir, bunu kahkahayı konuşmadan sınıflamak için bir özellik olarak kullanabilirsiniz.

Soruna bakmanın birçok yolu vardır.

Yaklaşım # 1

Bir kerede , MFCC'nin vektörüne bakabilirsiniz . ve bunu herhangi bir sınıflandırıcıya uygulayın. Frekans alanında çok sayıda ortak verimliliğiniz olduğundan, buna dayalı Adaboost gibi artırma algoritmalarıyla Cascade Sınıflandırıcıların yapısına bakmak isteyebilirsiniz , konuşma sınıfı ile gülme sınıfı arasında karşılaştırma yapabilirsiniz.

Yaklaşım # 2

Konuşmanızın aslında zamanla değişen bir sinyal olduğunu anlıyorsunuz. Bunu yapmanın etkili yollarından biri, sinyalin kendisinin zaman varyasyonuna bakmaktır. Bunun için sinyalleri örnek gruplar halinde bölebilir ve o zaman için spektruma bakabilirsiniz. Şimdi, kahkahaların, konuşmanın doğası gereği daha fazla bilgiye sahip olduğu ve dolayısıyla spektrum varyasyonunun daha büyük olacağı öngörülen bir süre için daha tekrarlayan bir patern olabileceğini fark edebilirsiniz. Bazı frekans spektrumları için sürekli olarak aynı durumda olup olmadığınızı veya sürekli olarak değiştirip değiştirmediğinizi görmek için bunu HMM modeline uygulayabilirsiniz . Burada, zaman zaman konuşma spektrumu kahkahaya benzese bile, daha fazla zaman değişecektir.

Yaklaşım # 3

Sinyale LPC / CELP tipi kodlama uygulamak ve kalıntıyı gözlemlemek için zorlayın. CELP Kodlama çok doğru bir konuşma üretimi modeli yapar.

Buradaki referanstan: CELP KODLAMA TEORİSİ

Konuşma sinyalindeki fazlalıklar, kısa süreli tahmin ve konuşma sinyalinin uzun vadeli tahmininden sonra neredeyse kaldırılır ve artık içinde çok az korelasyon kalır. Daha sonra konuşmayı sentezleyen bir uyarım aranır ve kod çizelgesi indeksi ve kazancı sabit kod çizelgesinden aranır. Optimum kod çizelgesi endeksi seçim kriteri, yerel olarak sentezlenen konuşma ile orijinal konuşma sinyali arasındaki MMSE'ye dayanmaktadır.

Basitçe söylemek gerekirse, analizörden tahmin edilen tüm konuşma kaldırıldıktan sonra - geriye kalan, tam dalga formunu yeniden oluşturmak için iletilen kalıntıdır.

Bu probleminize nasıl yardımcı oluyor? Temel olarak, CELP kodlaması uygularsanız, sinyaldeki konuşma çoğunlukla kaldırılır, geriye kalan kalıntıdır. Kahkaha durumunda, sinyalin çoğunluğu korunabilir, çünkü CELP, bireysel konuşma çok az kalıntıya sahip olacağı gibi, ses yolu modellemesi ile böyle bir sinyali tahmin edemez. Ayrıca kahkaha mı yoksa konuşma mı olduğunu görmek için bu kalıntıyı frekans alanında analiz edebilirsiniz.


0

Çoğu konuşma tanıyıcı sadece MFCC katsayılarını değil, aynı zamanda MFCC seviyelerinin birinci ve 2. türevlerini kullanır. Bu durumda başlangıçların çok yararlı olacağını ve bir kahkahayı diğer seslere karşı ayırt etmenize yardımcı olacağını tahmin ediyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.