如何解决m4a文件中的帧字节流应该转换成什么数据类型?
我是音频处理研究的新手,在 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 的字节。
当原始输入和最终输出文件都以audacity打开时,都显示为“mono 16000Hz 32-bit float”。由于 2bytes 大小的帧无法解释为 32bit-float,我猜 32bit-float 是 Audacity 中规范化操作的结果。
我的问题是对于字节大小为 2、4、8 的帧,应该将其转换为哪种数据类型(在 numpy 中)?
有没有大师知道在 audacity 中使用的规范化操作?
非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。