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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...