저는 라이브 녹음을위한 음성 감정 인식 시스템을 개발하고 있습니다. 기능 추출을 위해 OpenSMILE 라이브러리를 사용하고 있습니다. 다양한 종류의 음성 유형을 포함하는 일련의 오디오 파일을 수집했으며 그 중 일부를 추출하여 감정 인식을위한 SVM 기반 분류자를 교육합니다. 그러나 이것은 생중계에서 테스트 할 때 완전히 실패합니다. 그 이유는 라이브 스피치의 신호와 피쳐 분포 (MFCC, LSP, 피치, 강도, F0)가 파일의 특징 분포와 상당히 다르다는 것입니다. OpenSMILE 라이브러리는 마이크에서 오디오 신호에 액세스하기 위해 portaudio을 사용합니다.파일 간의 오디오 신호 차이와 마이크의 녹음
나는 공기를 통해 파일 (f_original)을 재생하고 마이크를 통해 녹음 한 다음 OpenSMILE로 저장 (f_distorted)했습니다. 나는 f_original과 f_distorted가 연주되었을 때 인간의 귀와 크게 다르지 않다는 것을 알았습니다. 그러나 시각화 된 오디오 신호는 audacity과 상당히 다르며 f_original 및 f_distorted에서 추출한 피쳐는 크게 다릅니다. f_original 파일은 16000Hz이며, 추출하기 전에 44100Hz로 업 샘플링합니다. 마이크는 44100Hz로 녹음됩니다.
마이크를 통해 녹음 할 때 약간의 왜곡이 예상되지만 왜곡되는 정도는 극단적입니다.
누구도 비슷한 문제에 직면 했습니까? 이 문제를 해결하는 방법에 대한 모든 지침.
감사합니다.
업 샘플링은 기록되지 않은 정보를 복구하지 않습니다. f_original에 기록 된 가장 높은 가능한 주파수는 8000hz (나이키 스트 주파수)입니다. 최대 샘플링 주파수는 * 여전히 * 8000hz이지만 마이크 녹음은 20,000hz만큼 높은 주파수를 기록 할 수 있습니다. 이것은 당신이보고있는 차이의 일부를 설명 할 수 있습니다. –
또한 녹음 수준이 매우 중요합니다. 당신의 목소리가 입력 레벨을 0db 이상으로 밀어 붙이면, 당신은 디지털로 * hard-clipping *됩니다. 오디오 정보는 문자 그대로 사라지고 고주파 고조파 인공물이 갑자기 나타납니다. 레코딩 레벨이 너무 낮 으면 음량이 3db 감소 할 때마다 1 비트의 디지털 정밀도가 손실되고 동일한 양만큼 노이즈가 증가합니다. –
@RobertHarvey : 업 샘플링과 관련하여 필자는 f_original의 기능을 수정하지 않고 16000Hz로 라이브 오디오 신호를 다운 샘플링했지만 신호가 여전히 다르다는 점을 다른 방식으로 시도했습니다. 또한 다른 레코딩 레벨 (Windows에서는 100, 75, 50 및 25)을 테스트했지만 그 중 하나는 작동하지 않았습니다. 나는 더 높은 레벨이 원래 신호에 더 가깝다는 것을 발견했다. 또한 로그 주파수의 스펙트로 그램을 보면 녹화가 고역 필터처럼 작동하고 저주파 영역의 에너지가 감소하는 것처럼 보입니다. – bsidd