두 오디오 파일을 비교하여 차이의 백분율을 반환하는 방법


12

2 개의 오디오 파일을 비교하여 차이의 백분율을 반환하는 방법이 있습니까? 내가 사용하고 C # VS08 , .NET 프레임 워크 3.5.

편집 : 소리의 차이 (예 : 오디오 1 : "HELP", 오디오 2 : "HELP ME PLEASE"와 같이이 두 오디오 간의 백분율 차이를 반환합니다.)

현재 녹음 파일을 wav 형식으로 저장하고 있으며 비트 전송률과 품질도 녹음 및 비교 대상과 동일합니다. 동일한 속성과 동일한 형식 (WAV)의 2 개의 오디오 파일에서 사운드 (바이너리뿐만 아니라)를 비교하고 2 개의 오디오 파일에서 2 개의 사운드 간의 백분율 차이를 표시하는 방법이 있는지 묻고 싶습니다.

도움을 주시면 감사하겠습니다.


7
당신이 설명하는 것은 디지털 신호 처리 분야입니다. 어떻게해야할지 물어 보면, 아무 준비도되어 있지 않습니다. 나는 .NET에 매우 정교한 내장 기능이 있다는 것을 의심합니다.

최근에이 주제에 관한 연구 논문을 보았습니다 : 산업 강도 오디오 검색 알고리즘 (PDF) 주파수 스펙트럼을 비교합니다. 이 기술은 인기있는 iPhone 앱 Shazam 에서 사용됩니다 .

3
이 질문에 답하기 위해서는 "유사한"의 의미를 신중하고 정확하게 정의해야합니다. wav 파일과 관련하여 "유사한"이란 무엇을 의미한다고 생각하십니까?

1
전 세계의 심각한 연구원들이 수십 년 동안 해결해온 음성 인식 문제에 접근하려고합니다. 이것이 할 수있는 멋진 일이지만, DSP, 베이지안 네트워크, 분류기 등에 대한 사전 지식이 없으면 한 사람에게는 다루기가 쉽지 않다고 생각합니다.
Phonon

2
오디오의 차이 또는 문자로 작성된 텍스트의 차이를 실제로 비교하고 싶습니까? 초기 장애물을 지나면 훨씬 쉽습니다.
Emre

답변:


8

"차이의 백분율"을 정의 해 주시겠습니까?

예를 들어 어떤 가치를 얻을 것으로 예상되는지 알려주십시오.

  • 다른 설정으로 인코딩 된 동일한 파일의 두 버전간에?
  • 한 파일이 다른 파일보다 약간 빠르다는 점을 제외하고 동일한 파일의 두 버전 간?
  • 동일한 오디오 입력의 두 녹음 사이에서 다른 마이크 / 레코딩 장비를 통해?
  • 같은 사람의 두 녹음 사이에 같은 단어를 말하는가?
  • 같은 사람이 두 번의 녹음에서 같은 단어로 말하기, 다른 번영 (리듬 / 멜로디)?
  • 같은 단어를 말하는 다른 사람의 두 기록 사이?
  • 같은 사람이 두 단어를 제외하고 같은 문장을 말하는 것 사이에?
  • 사람과 소의 기록 사이에?
  • 비행기와 음악 녹음 사이?

무엇을 측정하고 싶습니까? 연설 내용 (단어)? 멜로디, 리듬? 전반적인 오디오 유사성? 인코딩 / 레코딩 장비 차이점?


3
숨을 참지 마십시오. 문제는 2 살이고 OP는 AWOL입니다.
Emre

1
죄송합니다. (최근) 마이그레이션 날짜 만 확인했습니다.
pichenettes

3

살펴 얻을하시기 바랍니다 ITU-T의 P.862을 . 이 시스템은 전화 시스템 사용자가 경험하는 음성 품질을 평가하기위한 표준 제품군 인 PESQ (음질의 지각 평가)의 표준화 된 형태입니다 .

이것은 음성에만 해당됩니다 (다른 오디오 정보는 아님). 소스 및 성능 저하 된 두 오디오 파일을 비교 하고 백분율 또는 MOS 상당 값을 얻습니다.


2
DSP.stackexchange에 오신 것을 환영합니다! 답변을 제공해 주셔서 감사하지만 답변 / 질문을 개선하기 위해 FAQ 를 참조하시기 바랍니다. 서명은 권장하지 않습니다. 등록 된 핸들로 "서명"하십시오. 또한 답변에 언급 된 접근 방식에 대한 외부 자료, 예제 및 설명에 대한 링크를 제공하는 것이 좋습니다 :)
penelope

-3

tow 오디오 파일을 비교하기 위해 하나의 자바 스크립트 기능을 사용하고 있습니다. 동일한 논리를 사용하면 모든 언어의 파일을 비교할 수 있습니다.

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
바이트 스트림을 직접 비교해도 작동하지 않습니다. 두 가지 기록은 지각 적으로 구별 할 수 없지만 코드에 따라 0 % 일치하는 두 가지 다른 스트림으로 인코딩됩니다.
pichenettes
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.