В какой тип данных следует преобразовать поток байтов кадра в файле m4a?

В какой тип данных следует преобразовать поток байтов кадра в файле m4a?

Я новичок в исследовании обработки звука и использую модуль pydub в python3 для обработки аудиофайлов в формате «m4a». Для меня нормально читать исходные файлы m4a с pydub в начале, но после нескольких шагов (таких как 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, без оригинальных входов matte или конечных выходов, могут быть успешно открыты в аудиоприложениях и воспроизводить приемлемые звуки в динамиках. При дальнейшем исследовании проблемы я заметил, что кадр в конечных выходах — это байты размером 8, тогда как в исходных входах — это байты размером 2.

Когда исходный входной и конечный выходной файлы открываются в Audacity, оба отображаются как «mono 16000Hz 32-bit float». Поскольку кадры размером 2 байта не могут быть интерпретированы как 32bit-float, я предполагаю, что 32bit-float является результатом операции нормализации в Audacity.

Мой вопрос заключается в том, в какой тип данных (в numpy) следует преобразовать фрейм размером 2, 4, 8 байт?

А знает ли какой-нибудь гуру операцию нормализации, применяемую в Audacity?

Большое спасибо!

Связанный контент