오디오 파일 내에서 가장 높은 피치를 결정할 수있는 프로그램이 있습니까?


14

오디오 파일 (예 : mp3 파일)에서 "가장 높은 음파 주파수"를 확인할 수있는 Windows 프로그램이 있습니까?

예를 들어, Dog-Whistle-0 파일을 분석하고 파일 내에서 발견 된 최고 주파수가 대략 ~ 12000Hz인지 확인할 수 있어야합니다.

또한 Piano.mp3 를 분석 하고 가장 높은 음을 결정할 수 있어야합니다 .

답변:


13

R 은 크로스 플랫폼이며 자유 / 오픈 소스입니다.

이를로드 tuneR하고 seewave라이브러리를 로드하십시오 (아직 설치되지 않은 경우 패키지 관리자에서 설치하십시오).

library(tuneR)
library(seewave)

그런 다음 MP3 또는 WAV 파일을로드하십시오.

w = readMP3("dog-whistle-0.mp3")
w = readWave("dog-whistle-0.wav")

이제 스펙트럼과 피크를 플로팅 해 봅시다 :

fpeaks(meanspec(w), nmax=1)

결과:

수치 결과 :

fpeaks(meanspec(w), nmax=1, plot=FALSE)
12.05859

위의 음악 이외의 데이터에서만 작동합니다. 음악의 주파수를 분석 할 때 관련 악기에 따라 가장 높은 주파수가 항상 약 12-20 kHz임을 알 수 있습니다. 그러나이 최고 주파수는 연주되는 음의 추정치를 제공하지 않습니다. 악기가 연주 할 때 악보는 여러 주파수로 구성되기 때문입니다.

이것은 소위 악기의 "팀버"이며 플루트에 의해 440Hz에서 A는 전자 기타가 연주하는 A와 비교하여 다른 주파수 성분을 포함한다는 것을 알 수 있습니다.

가장 좋은 방법은 슬라이딩 시간 창에서 주파수 피크를보고 지배적 인 주파수 분석을 실행하고 가장 높은 주파수 발생 위치를 확인하는 것입니다.

"시간이 지남에 따른 빈도"와 같은 것은 없습니다. 특정 슬라이딩 시간 창에 대해서만 평균 (또는 지배적) 주파수를 플로팅 할 수 있습니다 . Seewave는 시간 창 선택과 관련하여 상당히 많은 기능을 제공하지만 다소 복잡합니다.

당신은 사용할 수 있습니다

s = specprop(meanspec(w, from=10, to=11)) 

10 초에서 11 초 사이의 스펙트럼 특성을 구한 다음 특정 시간 범위의 중심 또는 평균 주파수 를 호출 s$centroid하거나 s$mean구합니다 (오디오 분석의 경우 1 초가 상당히 큼).

Wave 파일이 44.1kHz 샘플링을 사용하는 경우 다운 샘플링하여 계산 노력을 줄일 수 있습니다 (예 : 16kHz).

w = downsample(w, 16000)

그러나 나이키 스트 정리 (Nyquist Theorem) 에 따르면 지금 표현할 수있는 최대 주파수는 8kHz입니다.

피치 감지 소프트웨어를 찾을 수도 있습니다. 마찬가지로 이 하나 있지만 MATLAB이 필요합니다.


대신 Btw fpeaks, 시간에 대한 주파수 그래프를 그리는 함수가 있는지 알고 있습니까?
Pacerier

내 업데이트를 참조하십시오. 그렇게 사소한 것이 아닙니다. 그래도 더 좋은 것이 있는지 알기 위해 오디오를 사용하지 않았습니다. 죄송합니다.
slhck 2016 년

8

Audacity 를 사용해 보셨습니까 ? Analyze-> Plot Spectrum ... 에서 액세스 하는 Plot Spectrum 명령을 포함하여 상당히 정교한 분석 도구가있는 프리웨어 도구입니다 .

스크린 샷

MP3 압축은 파형을 변경하고 아티팩트 / 앨리어싱을 도입했기 때문에 WAV 버전과 비교하여 MP3 버전의 파일에서 다른 결과를 얻습니다.

편집 : 연결 한 사운드 파일은 이에 대한 좋은 예가 아닙니다. 더 높은 주파수의 파일은 44.1KHz로만 샘플링되며 사람의 청력에 맞게 조정됩니다 (최대 약 20KHz). 샘플 속도를 높이 지 않으면 초음파 주파수를 나타낼 수 없습니다.


흠, 그것은 Piano.mp3 파일과 함께 작동하지 않는 것 같습니다 . 나에게 그것은 10121 Hz (D # 9) screenshoot.me/uZZ2N0을 보여 주지만 , 피아노의 가장 큰 건반이 C8 (4186Hz)이기 때문에 이것은 거의 가능성이 없습니다. 내가 잘못하고 있습니까?
Pacerier 2016 년

3
@Pacerier 아니요,하지만 질문을 약간 변경했습니다. 도그 휘슬 샘플은 스펙트럼에서 가장 높은 피크를 갖는 주파수가 가장 높은 주파수이고 동시에 지배적 인 음표이기 때문에 쉽게 식별 할 수 있습니다. 음악의 경우 악기에서 연주되는 음표가 여러 주파수로 구성되므로 최고 주파수가 반드시 최고 음표 일 필요는 없습니다.
slhck 2016 년

@slhck Ic, 우리가 주파수를 가졌다면 노트를 추측 할 수있을 것이라고 생각했을 것입니다 . 너무 간단하지 않은 것 같습니다.
Pacerier

@Pacerier : Size 를 더 높은 값으로 설정 하면 더 정확한 결과를 제공하고 일부 고조파를 제거 할 수 있다고 생각합니다.
James P

2
@Pacerier 아니요, 실제로 간단하지 않습니다. 피치 감지를 위해서는 먼저 파형을 주파수 스펙트럼 (고속 푸리에 변환)으로 변환 한 다음 필터 (주로 저역 통과)와 또 다른 필터 라운드를 적용해야합니다. 시간이 지남에 따라 피치를 추적하는 도구를 찾지 못하면 원하는 것은 실제로 어려울 것입니다. Melodyne 과 같은 음성 교정 도구를 살펴볼 수 있습니다.
slhck 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.