Python 有没有办法设置音频文件';使用librosa时的样本大小(字节)?

Python 有没有办法设置音频文件';使用librosa时的样本大小(字节)?,python,audio,librosa,pydub,Python,Audio,Librosa,Pydub,在pydub import AudioSegment的中的AudioSegment中,有一个函数设置样本宽度。从文档中: 使用指定的采样宽度(以字节为单位)创建此音频段的等效版本。增加此值通常不会导致质量降低。减少它肯定会导致质量损失。较高的采样宽度意味着更大的动态范围 librosa中是否有类似的功能?如果可能的话,我想使用librosa(而不是pydub)将其设置为某个值。简短的回答是否定的 下面是一个较长的答案: librosa始终使用浮点数来表示音频,而不管原始位深度是什么或如何保存 从

在pydub import AudioSegment的
中的
AudioSegment
中,有一个函数
设置样本宽度。从文档中:

使用指定的采样宽度(以字节为单位)创建此音频段的等效版本。增加此值通常不会导致质量降低。减少它肯定会导致质量损失。较高的采样宽度意味着更大的动态范围


librosa中是否有类似的功能?如果可能的话,我想使用librosa(而不是pydub)将其设置为某个值。

简短的回答是否定的

下面是一个较长的答案:

librosa始终使用浮点数来表示音频,而不管原始位深度是什么或如何保存

从:

将音频文件作为浮点时间序列加载

但是,您可以通过
dtype
参数指定数据类型。然后librosa(通常将加载委托给)也可以将音频表示为某种int

加载音频后,您当然可以手动将其转换为不同的位深度,方法是缩放到与所需位深度对应的不同范围

更改位深度的最后机会是将音频数据保存到文件中。librosa文档建议使用它。它还允许您指定数据类型(在一定程度上):

数据的数据类型不选择写入文件的数据类型。音频数据将转换为给定的子类型。将int值写入浮点文件不会将值缩放到
[-1.0,1.0)
。如果将值
np.array([42],dtype='int32')
写入
子类型='float'
文件,则该文件将包含
np.array([42.],dtype='float32')


希望这有帮助。

嘿,亨德里克,谢谢你的回复。我希望你能帮我做点什么:当我用
soundfile
dtype=float32
编写时间序列(y)时,当我再次阅读它(使用soundfile)时,有什么原因吗,我得到一个
dtype=float64
?我在read函数中指定了
dtype=None
,这样默认情况下它不会加载float64。有什么原因吗?