微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

m4a文件中的帧字节流应该转换成什么数据类型?

如何解决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 举报,一经查实,本站将立刻删除。