2 ses dosyasını nasıl karşılaştırabilirim, fark yüzdesi döndürür


12

Farkın bir yüzdesinin döndürüleceği 2 ses dosyasını karşılaştırmanın bir yolu var mı? Ben kullanıyorum C # VS08 , .net framework 3.5.

Düzenlendi: ses farkı (ör. Ses 1:, "HELP"Ses 2: gibi "HELP ME PLEASE", bu 2 ses arasındaki yüzde farkını döndürür.)

Şu anda kaydedilmiş dosyaları wav formatında kaydediyorum ve bit hızı ve kalitesi de kaydedilecek ve karşılaştırılacaklarla aynı olacak. Aynı özelliklerde ve aynı formatta (WAV) 2 ses dosyasında sesi (sadece ikili dosyaları değil) karşılaştırmanın bir yolu olup olmadığını sormak ve 2 ses dosyasındaki 2 ses arasındaki yüzde farkını göstermek istiyorum.

Yardım çok takdir edilecektir.


7
Açıkladığınız şey dijital sinyal işleme alanındadır. Açıkça söylemek gerekirse, nasıl yapılacağını sormanız gerekiyorsa, bunu yapmaya hazır değilsiniz. .NET'in bu kadar gelişmiş bir şeye sahip olduğundan şüpheliyim.

Son zamanlarda konuyla ilgili bir araştırma makalesi gördüm: Endüstriyel Güçte Sesli Arama Algoritması (PDF) Frekans spektrumlarını karşılaştırıyorlar. Teknik, popüler bir iPhone uygulaması Shazam'da kullanılır .

3
Soruyu cevaplamak için "benzer" in ne anlama geldiğinin dikkatli ve kesin bir tanımına ihtiyacımız olacak. Wav dosyaları bağlamında "benzer" in ne anlama geldiğini düşünüyorsunuz?

1
Dünyanın dört bir yanındaki ciddi araştırmacıların yıllardır mücadele ettiği bir konuşma tanıma sorununa yaklaşmaya çalışıyorsunuz. Bunun yapabilmesi için harika bir şey olduğu gibi, DSP, Bayes ağları, sınıflandırıcılar vb. Hakkında önceden bilgisi olmayan bir kişi için izlenebilir olduğunu düşünmüyorum.
Phonon

2
Ses veya sadece yazıya aktarılan metindeki farkı gerçekten karşılaştırmak ister misiniz? İlk engeli geçtikten sonra bu çok daha kolay.
Emre

Yanıtlar:


8

"Fark yüzdesi" ni tanımlayabilir misiniz?

Örneğin, lütfen bize hangi değeri elde etmeyi beklediğinizi söyleyin:

  • Aynı dosyanın iki sürümü arasında farklı ayarlarla kodlanmış?
  • Biri diğerinden biraz daha hızlı hariç, aynı dosyanın iki sürümü arasında?
  • Aynı ses girişinin iki kaydı arasında, ancak farklı mikrofon / kayıt cihazları aracılığıyla mı?
  • Aynı kişinin aynı kaydı söyleyen iki kaydı arasında?
  • Aynı kişinin farklı bir prozodi ile aynı kelimeyi söyleyen iki kaydı arasında (ritim / melodi)?
  • Aynı kelimeyi söyleyen farklı kişilerin iki kaydı arasında?
  • Aynı kişinin iki kaydı arasında birkaç cümle dışında aynı cümleyi söyleyen?
  • Bir kişinin ve bir ineğin kaydı arasında?
  • Uçak ve müzik kaydı arasında?

Ne ölçmek istiyorsun? Konuşma içeriği (kelimeler)? Melodi, ritim? Genel ses benzerliği? Kodlama / kayıt ekipmanı farkları?


3
Nefesimizi tutmayalım; soru iki yaşında ve OP AWOL.
Emre

1
Hata! Yalnızca (son) taşıma tarihini fark ettim.
2012'de

3

Lütfen ITU-T P.862'ye bakınız . Bir telefon sistemi kullanıcısı tarafından deneyimlendiği üzere konuşma kalitesini değerlendirmek için standartlar ailesi olan standart PESQ (Konuşma Kalitesinin Algısal Değerlendirmesi) biçimidir .

Bu sadece konuşma ile ilgilidir (diğer sesli bilgilerle değil). Kaynak ve bozulmuş iki ses dosyasını karşılaştırır ve yüzde veya MOS eşdeğeri olarak bir değer elde edersiniz.


2
DSP.stackexchange'e hoş geldiniz! Yanıt verdiğiniz için teşekkür ederiz, ancak yanıtlarınızı / sorularınızı iyileştirmek için SSS bölümüne bakmanızı öneririz . İmzalar önerilmez - yine de kayıtlı tutma yerinizle "imzalarsınız". Ayrıca, yanıtlarınızda bahsettiğiniz yaklaşımlar için dış materyale bağlantılar, örnekler ve açıklamalar sağlamak iyi bir uygulamadır :)
penelope

-3

Yedekte ses dosyası karşılaştırmak için bir javascript işlevi kullanıyorum. Aynı mantığı kullanarak herhangi bir dilde herhangi bir dosyayı karşılaştırabilirsiniz.

function compireAudio(){ 
var audio1 = "http://soundjax.com/reddo/86502%5Ealarm.mp3"; 
var audio2 = "http://soundjax.com/reddo/44368%5EALARME.mp3";
var i,j,d;
var matching = 0;
var t = 0;var i,j,d;
var matching = 0;
var t = 0;
var audio1Arr = Array();
var audio1Len = audio1.length;
for (i = 1; i<=audio1Len; i++)
{
    //reverse so its like a stack
    d = audio1.charCodeAt(audio1Len-i);
    for (j = 0; j < 8; j++) 
    {
        audio1Arr.push(d%2);
        d = Math.floor(d/2);
    }
}
var audio2Len = audio2.length;
for (i = 1; i<=audio2Len; i++)
{
    //reverse so its like a stack
    d = audio2.charCodeAt(audio2Len-i);
    for (j = 0; j < 8; j++) 
    {
        if(d%2 == audio1Arr[t])
        {
            matching++;
        }
        d = Math.floor(d/2);
        t++;
    }
}
var avarage = Number(matching)/((Number(t)+Number(audio1Arr.length))/Number(2))*Number(100);
alert('The Matching with the two audio is '+avarage+' %.');

}


3
Doğrudan bytestream karşılaştırması işe yaramıyor. İki kayıt algısal olarak ayırt edilemez ancak kodunuza göre% 0 eşleşmeyle iki farklı akışa kodlanabilir.
15'te 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.