2013-01-03 3 views
0
를 사용하여 두 개의 오디오 파일을 비교

가능한 중복 :
Comparison of two waveforms of audio files자신의 파형

나는 그것을 수정하고 지금은 내 필요에 맞게, wav 파일에서 파형을 생성하는 PHP 함수를 발견, 잘 작동한다.

웨이브 폼은 모든 단일 wav 파일에 대해 매우 고유 한 것처럼 보입니다. 따라서 파형을 사용하여 두 개의 오디오 파일을 비교하여 b.wav가 a.wav와 얼마나 가까운지 확인할 수 있습니까? 전혀 좋은 생각인가요?

필자는 두 개의 파형 (JPG)을 픽셀 단위로 비교하는 PHP 함수를 작성했습니다. 일부 테스트 후 나는 다음과 같은 결과를 얻습니다 : 두 개의 다른 오디오 파일에 대한 평균 차이는 ~ 97 % 결과로 예상대로,하지만 어떻게 진짜 코드에서 작동하는지 모르겠다.

사람이 생각에 자신의 의견을 줄 수 어쩌면 몇 가지 유용한 힌트 :

나는 a.wav하는 b.wav 얼마나 가까이 있는지 확인하기 위해 두 개의 오디오 파일을 비교하려합니다.

P.S : 내 wav 파일은 거의 동일하지만 유일한 차이점은 음성입니다.

+0

코드 또는 우리가 코멘트 할 수있는 어떤 것도 표시하지 않습니다. 어쨌든 CodeReview.SE에 더 적합 할 수 있습니다. – Gordon

+0

귀하의 질문은 무엇입니까? – jeroen

+0

파형의 _picture 파일 _을보고 오디오를 비교하는 것은 시음보다는 음식을 보는 것으로 비교하는 것과 같습니다. .wav를 직접 비교하거나 피크 또는 RMS 봉투를 비교하지 않는 이유는 무엇입니까? – leftaroundabout

답변

11

나는 대학에서 비슷한 일을한다. 그리고 저는 C++을 사용합니다. 약 1 초 청크

  1. 분할 오디오 파일 : 비교를 들어

    나는 단계를했다. 마다.

  2. 각 청크에 대해 고속 푸리에 변환 (FFT)을 계산합니다.
  3. 첫 번째 파일의 FFT와 두 번째 파일의 FFT 간의 상관 관계를 계산합니다. 각 덩어리마다.
  4. 모든 청크 상관 관계가 80 % 이상인지 확인하십시오. 이 값은 내 프로젝트에 충분했습니다.
+0

그것은 이미 상당히 진보되어 있으며 잘 작동해야합니다. 물론, 청크의 적절한 [윈도우 잉] (http://en.wikipedia.org/wiki/Window_function)과 같은 문제를 처리해야합니다. 파일의 보컬이 다른 경우 저음 범위 만 고려하면 모든 FFT 결과를 처음 몇 개의 쓰레기통으로 트리밍하는 것이 좋습니다. – leftaroundabout

+2

+1은 "이것은 정말로 복잡하고 주제에 대해 읽어야하며, 많은 연구가 이루어졌으며 여전히 복잡합니다." – Nateowami

2

파형의 오디오를 비교하는 것은 한 가지 방법입니다. 그러나 그것은 실제로 하나의 오디오 파일을 다른 것과 매치하지 않습니다. 일치하는 것은 얼마 동안 진폭의 차이입니다. 따라서 목표를 비교하는 것이 목표라면 파형 비교가 정확합니다. 실제로 와우 또는 작동 뭔가 같은 오디오를 비교하려면

, 내가 신호를 비교했을 때 그래픽 파형을 비교하여 많이 사용 생각하지 않습니다 how-does-shazam-recognize-song 또는 An Industrial-Strength Audio Search Algorithm

0

에 읽어. 대신 신호 자체를 비교해야합니다 (arrays : float 또는 ints).

일종의 유사성 측정을 제공 할 수있는 많은 신호 처리 방법이 있습니다. 첫 번째 간단한 시도로 cross correlation 기능이 마음에 듭니다.