저는 오디오 처리 연구와 python3의 pydub 모듈을 사용하여 "m4a" 형식의 오디오 파일을 조작하는 초보자입니다. 처음에 pydub를 사용하여 원본 m4a 파일을 읽는 것은 괜찮지만 몇 단계(예: VAD 및 데이터 증대 작업) 작업 후에는 생성된 m4a 파일의 프레임을 numpy.ndarray로 읽을 수 없습니다. 아래와 같은 오류가 발생합니다.
np.array(frames["music_no_silence"].get_array_of_samples())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/miniconda/envs/py36/lib/python3.6/site-packages/pydub/audio_segment.py", line 272, in get_array_of_samples
array_type_override = self.array_type
File "/home/user/miniconda/envs/py36/lib/python3.6/site-packages/pydub/audio_segment.py", line 277, in array_type
return get_array_type(self.sample_width * 8)
File "/home/user/miniconda/envs/py36/lib/python3.6/site-packages/pydub/utils.py", line 43, in get_array_type
t = ARRAY_TYPES[bit_depth]
KeyError: 64
무광택 원본 입력이나 최종 출력이 아닌 모든 m4a 파일을 오디오 응용 프로그램에서 성공적으로 열고 스피커에서 합리적인 사운드를 생성할 수 있다는 것은 이상한 일입니다. 문제를 더 자세히 조사한 결과 최종 출력의 프레임은 크기가 8바이트인 반면 원래 입력의 프레임은 크기가 2바이트인 것을 확인했습니다.
원본 입력 파일과 최종 출력 파일을 모두 대담하게 열면 둘 다 "모노 16000Hz 32비트 부동"으로 표시됩니다. 2bytes 크기의 프레임은 32bit-float로 해석할 수 없기 때문에 32bit-float는 Audacity의 정규화 작업의 결과라고 생각합니다.
내 질문은 2, 4, 8 바이트 크기의 프레임에 대한 것입니다. 어떤 데이터 유형(numpy)으로 변환해야 합니까?
그리고 대담하게 정규화 작업을 수행하는 것을 아는 전문가가 있습니까?
정말 감사합니다!