오디오 파일 (예 : mp3 파일)에서 "가장 높은 음파 주파수"를 확인할 수있는 Windows 프로그램이 있습니까?
예를 들어, Dog-Whistle-0 파일을 분석하고 파일 내에서 발견 된 최고 주파수가 대략 ~ 12000Hz인지 확인할 수 있어야합니다.
또한 Piano.mp3 를 분석 하고 가장 높은 음을 결정할 수 있어야합니다 .
오디오 파일 (예 : mp3 파일)에서 "가장 높은 음파 주파수"를 확인할 수있는 Windows 프로그램이 있습니까?
예를 들어, Dog-Whistle-0 파일을 분석하고 파일 내에서 발견 된 최고 주파수가 대략 ~ 12000Hz인지 확인할 수 있어야합니다.
또한 Piano.mp3 를 분석 하고 가장 높은 음을 결정할 수 있어야합니다 .
답변:
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이 필요합니다.
Audacity 를 사용해 보셨습니까 ? Analyze-> Plot Spectrum ... 에서 액세스 하는 Plot Spectrum 명령을 포함하여 상당히 정교한 분석 도구가있는 프리웨어 도구입니다 .

MP3 압축은 파형을 변경하고 아티팩트 / 앨리어싱을 도입했기 때문에 WAV 버전과 비교하여 MP3 버전의 파일에서 다른 결과를 얻습니다.
편집 : 연결 한 사운드 파일은 이에 대한 좋은 예가 아닙니다. 더 높은 주파수의 파일은 44.1KHz로만 샘플링되며 사람의 청력에 맞게 조정됩니다 (최대 약 20KHz). 샘플 속도를 높이 지 않으면 초음파 주파수를 나타낼 수 없습니다.
fpeaks, 시간에 대한 주파수 그래프를 그리는 함수가 있는지 알고 있습니까?