Sesin insan konuşmasına ne kadar benzediğini belirleme


12

Bu soruna bir cevap ararken, bu tahtanın bu soruyu Stack Overflow'dan geçmeye karar verdim .


Sayısal olarak ifade edilen bir ses kesimi ile bir insan sesi arasındaki benzerliği belirlemek için bir yöntem arıyorum.

Biraz aradım, ancak şimdiye kadar bulduğum şey (aşağıda ayrıntılı olarak) gerçekten ihtiyacım olana uymuyor:

  • Bir yöntem, bir ses segmentinden kelime elde etmek için konuşma tanıma yazılımı kullanmaktır . Bununla birlikte, bu yöntem sesin insan konuşmasına ne kadar "benzer" olduğunu ortaya koyamaz; genellikle seste kelimeler olup olmadığını söyleyebilir, ancak kesin kelimeler yoksa, sesin bu tür sözlere sahip olduğunu söyleyemez.
    Örnekler: CMU Sfenks , Yusufçuk , SHoUT

  • Daha umut verici olan yönteme Ses Etkinliği Algılama (VAD) adı verilir. Bununla birlikte, bu aynı problemlere sahip olma eğilimindedir: VAD kullanan algoritmalar / programlar, aktivite eşiğine ulaşılıp ulaşılmadığına geri dönme eğilimindedir ve bu eşikten önce veya sonra "benzerlik" değeri yoktur. Alternatif olarak, çoğu insan sesine benzerlik değil, sadece hacim arar.
    Örnekler: Speex , Dinleyici , FreeSWITCH


Herhangi bir fikir?


1
Sorunuzdan, sorunun A / ses kaydı alıp almadığını ve bunun insan konuşmasını içerip içermediğini söylemesi net değildir (uygulama örneği: bir radyo şovunun kaydından DJ konuşmasını tespit edin ve kaldırın); veya B / konuşma girişini alır ve bir referans ses segmentine ne kadar benzediğini söyler. B olması durumunda, benzerliği ölçmek istediğiniz kriterlerdir. Melodi konturunda mı? (örneğin: söylenen bir sesi bir şarkıyla eşleştirme). Ritim ve küme derslerinde? (örneğin: beatboxing / onomatopoeia'yı bir drum döngüsüyle eşleştirme). Tınıda mı? (bir sesi ses efektiyle eşleştirme). Lütfen başvurunuzu bize bildirin.
Haziran'da pichenettes

Maalesef, sorunum A'da ayrıntılı olarak belirttiğiniz şeydir. Ses bölümünün insan konuşması olup olmadığını belirlemek istiyorum.
Jeff Gortmaker

1
İlgili bir sorun üzerinde çalışıyorum - horlama / nefes alma seslerinin konuşma veya müzikle "kirlendiğini" belirlemeye çalışıyorum. Herhangi bir güvenilirlikle ve "gelişmiş" konuşma tanıma algoritmalarına başvurmadan (gerçekten de işe yarayacaksa) sinir bozucu bir şekilde zordur. Benim tek gözlemim, konuşmanın düzensiz bir ritime sahip olma eğilimindedir, oysa müzik (genellikle) normaldir. Bu ve belki de "spektral düzlük" kontrol etmeye değer (hala amaçlarımı kendi amaçlarım için değerlendiriyorum).
Daniel R Hicks

(Saç hakkında daha ayrıntılı bilgi: Sesin FFT'sinden hesaplanan spektral düzlüğün normalleştirilmiş standart sapmasının ses kalitesinde bir şey yansıttığını görüyorum.)
Daniel R Hicks

Yanıtlar:


6

Bu tür bir problem genellikle makine öğrenimi teknikleri kullanılarak çözülür.

Sinyali 20ms veya 50ms'lik bir çerçeveye bölün. Her karedeki özellikleri ayıklayın. MFCC genellikle bu tür uygulamalar için iyidir, ancak ses algılamaya daha spesifik olan özellikler vardır (4 Hz modülasyon enerjisi - kabaca insanların konuşma hızıdır; sıfır geçiş oranı).

Daha sonra, elle konuşma / konuşma değil olarak etiketlediğiniz bir eğitim seti kullanarak, çerçeve özellikleri üzerinde bir sınıflandırıcı (Gauss karışım modelleri, SVM ...) eğitin.

Bu, etiketlenmemiş çerçeveleri konuşma / konuşma dışı sınıflara ayırmanıza olanak tanır. Son adım, kararların düzeltilmesinden oluşur (örneğin, yüzlerce konuşma çerçevesiyle çevrili konuşma dışı olarak sınıflandırılan bir çerçeve sınıflandırma hatasıdır), örneğin HMM'ler veya sadece bir medyan filtre.

Birkaç referans:

Sesli belgelerde sağlam konuşma / müzik sınıflandırması (Pinquier & al) Multimedya uygulamaları için konuşma / müzik ayrımcılığı (El-Maleh ve al) Konuşma / müzik ayrımcılığı özelliklerinin karşılaştırılması (Carey ve al)

Açıkladıkları özelliklerin ve sınıflandırma tekniklerinin aynı zamanda (sınıf konuşmasını başka bir şeye karşı ayırt etmek yerine) 1. sınıf problemi ile de ilgili olduğunu unutmayın. Bu durumda, 1-sınıf SVM gibi 1-sınıf modelleme tekniklerini kullanabilir veya bir konuşma verisi üzerinde eğitilmiş bir GMM'den "konuşkanlık" ölçüsü olarak olabilirlik puanını alabilirsiniz.

Öte yandan, sorununuz gerçekten konuşmayı başka bir şeye (müzik söyleyin) karşı ayırıyorsa, bu içeriğin kendisini tanımlamak yerine benzer ses içeriği arasındaki sınırları tespit etmeye odaklanan denetimsiz yaklaşımları da çok iyi kullanabilirsiniz .


Teşekkürler, bu bir ton yardımcı olur! Sinyali küçük pencerelere bölmenin faydası nedir? Aradığım çıktı, tüm ses segmentini tanımlayan sayısal bir değer olduğundan, sadece belirli pencereler için değil, tüm sinyal için özelliklerin ayıklanması daha iyi olur mu?
Jeff Gortmaker

Özelliklerin (özellikle spektral veya cepstral olanlar) çok uzun pencerelerde hesaplanması, konuşmayı öne çıkaran bazı özelliklerin ortalamasını veya iptal edilmesini sağlar. Birçok kısa konuşma parçasını karıştırarak bunu kendiniz doğrulayabilirsiniz - sonucu konuşma olarak tanımak zor olacaktır. Bu nedenle sınıflandırmayı küçük segmentler üzerinde yapmak daha iyidir; ve sizin durumunuzda puanları toplayın (örneğin bir GMM tarafından verilen olasılık puanının ortalamasını hesaplayın veya bir ikili sınıflandırıcı tarafından konuşma olarak sınıflandırılan karelerin yüzdesini hesaplayın).
Haziran'da pichenettes

Daha kesin olmak gerekirse, bir spektruma baktığınızda geçici boyutun "daraltıldığını" unutmayın. Örneğin, 500 Hz'lik bir tonun ardından 1kHz'lik bir tonun güç spektrumu, aynı anda çalınan bu iki tonun güç spektrumuna benzer; bu yüzden çok değişen bir sinyalin uzun bir pencerede güç spektrumu, sinyalin içeriğini çok iyi göstermeyebilir.
Haziran'da pichenettes
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.