torchaudio.backend¶
概述¶
torchaudio.backend
模块为音频文件 I/O 功能提供实现,这些功能是 、 和 。torchaudio.info
torchaudio.load
torchaudio.load_wav
torchaudio.save
目前有四种实现可用。
“sox_io”(在 Linux/macOS 上为默认值)
“sox” (已弃用,将在 0.9.0 版本中删除)
“soundfile” (在 Windows 上默认)
“soundfile” (旧版接口) (已弃用,将在 0.9.0 版本中删除)
强烈建议不要使用 backend,因为它无法正确处理 16 位整数 WAV 以外的格式。有关详细信息,请参阅 #726。"sox"
注意
请不要直接调用 函数,而是使用 、 ,并在适当的后端设置下使用 。
torchaudio.backend
torchaudio.info
torchaudio.load
torchaudio.load_wav
torchaudio.save
可用性¶
"sox"
后端需要 C++ 扩展模块,该模块包含在 Linux/macOS 二进制发行版中。这些后端在 Windows 上不可用。"sox_io"
"soundfile"
backend 需要 .请参阅 SoundFile 文档进行安装。SoundFile
默认后端和弃用的更改¶
后端模块正在进行一次重大改革。下表总结了弃用和删除的时间表。
后端
0.8.0
0.9.0
"sox_io"
Linx/macOS 上的默认值
Linux/macOS 上的默认值
"sox"
(已弃用)可用
删除
"soundfile"
Windows 上的默认值
Windows 上的默认值
"soundfile"
(传统接口、 已弃用)可用
删除
和 backends 已弃用,并将在 0.9.0 版本中删除。
"sox"
"soundfile" (legacy interface)
通用数据结构¶
用于报告音频文件元数据的结构体。
AudioMetaData¶
SignalInfo(已弃用)¶
-
class (channels: Optional[int] = None, rate: Optional[float] = None, precision: Optional[int] = None, length: Optional[int] = None)[来源]
torchaudio.backend.common.
SignalInfo
¶ 函数的返回类型之一。
torchaudio.info
此类由具有传统接口(已弃用)的 “sox” 后端 (已弃用) 和 “soundfile” 后端使用。
查看 https://fossies.org/dox/sox-14.4.2/structsox__signalinfo__t.html
EncodingInfo(已弃用)¶
-
class (编码: Any = None, bits_per_sample: Optional[int] = None, compression: Optional[float] = None, reverse_bytes: Any = None, reverse_nibbles: Any = None, reverse_bits: Any = None, opposite_endian: Optional[bool] = None)[来源]
torchaudio.backend.common.
EncodingInfo
¶ 函数的返回类型之一。
torchaudio.info
此类由具有传统接口(已弃用)的 “sox” 后端 (已弃用) 和 “soundfile” 后端使用。
查看 https://fossies.org/dox/sox-14.4.2/structsox__encodinginfo__t.html
Sox IO 后端¶
后端在 Linux/macOS 上可用且为默认版本,在 Windows 上不可用。"sox_io"
该后端的 I/O 功能支持 TorchScript。
您可以通过以下方式从另一个后端切换到后端;sox_io
torchaudio.set_audio_backend("sox_io")
信息¶
-
torchaudio.backend.sox_io_backend.
info
(文件路径:str,格式:可选[str] = None) → torchaudio.backend.common.AudioMetaData[来源]¶ 获取音频文件的信号信息。
- 参数
filepath (路径类对象或文件类对象) –
音频数据源。当函数没有被 TorchScript 编译时, (例如),接受以下类型;
torch.jit.script
path-like
: 文件路径file-like
: 具有方法的对象, 返回最大长度的字节字符串。read(size: int) -> bytes
size
当函数由 TorchScript 编译时,只允许使用 type。
str
注意
当输入类型为类文件对象时,此函数不能 为某些格式获取正确的长度 (), 例如 和 。 在本例中,的值为 。
num_samples
mp3
vorbis
num_samples
0
此参数被有意注释为仅由于 TorchScript 编译器兼容性。
str
format (str, optional) – 使用给定格式覆盖格式检测。 当 libsox 无法推断格式时,提供参数可能会有所帮助 from 标头或扩展,
- 返回
给定音频的元数据。
- 返回类型
负荷¶
-
torchaudio.backend.sox_io_backend.
load
(文件路径:str、frame_offset:int = 0、num_frames:int = -1、标准化:bool = True、channels_first:bool = True、格式:可选[str] = None)→ Tuple[torch.Tensor, int][来源]¶ 从文件加载音频数据。
注意
此函数可以处理底层 libsox 可以处理的所有编解码器, 但是,它已在以下格式上进行了测试;
WAV、AMB
32 位浮点
32 位有符号整数
16 位有符号整数
8 位无符号整数(仅限 WAV)
MP3 的
FLAC的
OGG/VORBIS
作品
球
AMR-NB 系列
加载 、 、 和其他编解码器不会 handle 时,您的安装必须链接到相应的编解码器库,例如 OR 等。
MP3
FLAC
OGG/VORBIS
OPUS
libsox
torchaudio
libsox
libmad
libmp3lame
默认情况下 (, ),此函数返回 dtype 和 shape 为 的 Tensor。 样本被归一化以适应 的范围。
normalize=True
channels_first=True
float32
[channel, time]
[-1.0, 1.0]
当输入格式为整数类型的 WAV 时,例如 32 位有符号整数、16 位 有符号整数和 8 位无符号整数(不支持 24 位有符号整数), 通过提供 ,该函数可以返回整数 Tensor,其中样本 在相应 dtype 的整个范围内表示,即 Tensor 对于 32 位有符号 PCM、16 位有符号 PCM 和 8 位无符号 PCM。
normalize=False
int32
int16
uint8
normalize
参数对 32 位浮点 WAV 和其他格式(如 和 )没有影响。 对于这些格式,此函数始终返回 Tensor,其值归一化为 。flac
mp3
float32
[-1.0, 1.0]
- 参数
filepath (路径类对象或文件类对象) –
音频数据源。当函数没有被 TorchScript 编译时, (例如),接受以下类型;
torch.jit.script
path-like
: 文件路径file-like
: 具有方法的对象, 返回最大长度的字节字符串。read(size: int) -> bytes
size
当函数由 TorchScript 编译时,只允许使用 type。
str
注意:此参数被有意注释为仅由于 TorchScript 编译器兼容性。
str
frame_offset (int) – 开始读取数据之前要跳过的帧数。
num_frames (int) – 要读取的最大帧数。 读取所有剩余样本, 从 . 如果没有足够的帧数,此函数可能会返回较少的帧数 帧。
-1
frame_offset
normalize (bool) - 当 时,此函数始终返回 ,样本值为 标准化为 . 如果 input file 是整数 WAV,则 give 会将生成的 Tensor 类型更改为 integer 类型。 此参数对整数 WAV 类型以外的格式没有影响。
True
float32
[-1.0, 1.0]
False
channels_first (bool) – 当为 True 时,返回的 Tensor 具有维度 。 否则,返回的 Tensor 的维度为 。
[channel, time]
[time, channel]
format (str, optional) – 使用给定格式覆盖格式检测。 当 libsox 无法推断格式时,提供参数可能会有所帮助 from 标头或扩展,
- 返回
- 生成的 Tensor 和 sample rate。
如果输入文件具有整数 wav 格式且标准化处于关闭状态,则它具有 integer 类型,else 类型。如果 ,则它有 else 。
float32
channels_first=True
[channel, time]
[time, channel]
- 返回类型
救¶
-
torchaudio.backend.sox_io_backend.
save
(文件路径:str,src:torch。张量,sample_rate:int,channels_first:bool = True,压缩:可选[浮点] = 无,格式:可选[str] = 无,编码:可选[str] = 无,bits_per_sample:可选[int] = 无)[来源]¶ 将音频数据保存到文件。
- 参数
filepath (str 或 pathlib.Path) – 保存文件的路径。 此函数也处理对象,但带有 Comments 至于 TorchScript 编译器兼容性。
pathlib.Path
str
src (Torch.Tensor) – 要保存的音频数据。必须是 2D 张量。
sample_rate (int) – 采样率
channels_first (bool) – 如果 ,则给定的张量被解释为 , 否则。
True
[channel, time]
[time, channel]
compression (可选[float]) –
用于 WAV 以外的格式。 这对应于 command 的 option。
-C
sox
"mp3"
具有品质因数的比特率 (in),例如 ,或 具有品质因数的 VBR 编码,例如 .违约:。
kbps
128.2
-4.2
-4.5
"flac"
整数 from to 。 是默认且最高的压缩率。
0
8
8
"ogg"
,"vorbis"
编号 from 到 ; 是最高的压缩率 和最低质量。违约:。
-1
10
-1
3
format (str,可选) –
覆盖音频格式。 当 argument 是 path-like object 时,音频格式是从 文件扩展名。如果文件扩展名缺失或不同,您可以指定 使用此参数的正确格式。
filepath
当 argument 是 file-like object 时,此参数是必需的。
filepath
有效值为 、 和 。
"wav"
"mp3"
"ogg"
"vorbis"
"amr-nb"
"amb"
"flac"
"sph"
"gsm"
"htk"
encoding (str,可选) –
更改受支持格式的编码。 此参数仅对支持的格式有效,例如 , 和 。有效值为;
"wav"
""amb"
"sph"
"PCM_S"
(有符号整数线性 PCM)"PCM_U"
(无符号整数线性 PCM)"PCM_F"
(浮点 PCM)"ULAW"
(mu-law)"ALAW"
(A-法律)
- 默认值
如果未提供,则根据 和 选择默认值。
format
bits_per_sample
"wav"
,"amb"
- 如果两者都未提供 和 ,则
encoding
bits_per_sample
dtype
Tensor 用于确定默认值。 - 如果 dtype 为 - 如果 dtype 为 或 dtype 为"PCM_U"
uint8
"PCM_S"
int16
int32` - ``"PCM_F"
float32
"PCM_U"
如果bits_per_sample=8
"PCM_S"
否则
"sph"
格式;默认值为
"PCM_S"
bits_per_sample (int,可选) –
更改受支持格式的位深度。 当 是 、 、 或 之一时,您可以更改 位深度。有效值为 、 和 。
format
"wav"
"flac"
"sph"
"amb"
8
16
32
64
- 默认值;
如果未提供,则根据 和 选择默认值
format
"encoding"
;"wav"
,"amb"
;- 如果两者都未提供 和 ,则
encoding
bits_per_sample
dtype
Tensor 的 Tensor 被使用。 - 如果 dtype 为 - 如果 dtype 为 - 如果 dtype 为 或8
uint8
16
int16
32
int32
float32
8
if 是 , 或encoding
"PCM_U"
"ULAW"
"ALAW"
16
if 是encoding
"PCM_S"
32
if 是encoding
"PCM_F"
"flac"
格式;默认值为
24
"sph"
格式;16
如果是 、 或 未提供。encoding
"PCM_U"
"PCM_S"
"PCM_F"
8
if is 或encoding
"ULAW"
"ALAW"
"amb"
格式;8
if 是 , 或encoding
"PCM_U"
"ULAW"
"ALAW"
16
如果提供或未提供。encoding
"PCM_S"
32
if 是encoding
"PCM_F"
支持的格式/编码/位深度/压缩是;
"wav"
,"amb"
32 位浮点 PCM
32 位有符号整数 PCM
24 位有符号整数 PCM
16 位有符号整数 PCM
8 位无符号整数 PCM
8 位 mu law
8 位 A-law
注意:默认编码/位深度由输入 Tensor 的 dtype 决定。
"mp3"
固定比特率(如 128kHz)和可变比特率压缩。 默认:高质量的 VBR。
"flac"
8 位
16 位
24 位 (默认)
"ogg"
,"vorbis"
不同的质量水平。默认值:约 112kbps
"sph"
8 位有符号整数 PCM
16 位有符号整数 PCM
24 位有符号整数 PCM
32 位有符号整数 PCM(默认)
8 位 mu law
8 位 A-law
16 位 A-law
24 位 A-law
32 位 A-law
"amr-nb"
比特率范围从 4.75 kbit/s 到 12.2 kbit/s。默认值:4.75 kbit/s
"gsm"
有损语音压缩,CPU 密集型。
"htk"
使用其默认的单通道 16 位 PCM 格式。
注意
要保存为本机无法处理的格式(例如 、 和 ),您安装的 具有 链接到相应的编解码器库,例如 OR 等。
libsox
"mp3"
"flac"
"ogg"
"vorbis"
torchaudio
libsox
libmad
libmp3lame
Sox 后端 (已弃用)¶
后端在 Linux/macOS 上可用,在 Windows 上不可用。此后端已弃用,并将在 release 中删除。"sox"
0.9.0
您可以通过以下方式从另一个后端切换到后端;sox
torchaudio.set_audio_backend("sox")
信息¶
-
torchaudio.backend.sox_backend.
info
(文件路径:str) →元组[torchaudio.backend.common.SignalInfo, torchaudio.backend.common.EncodingInfo] [来源]¶ 从音频文件获取元数据,而不加载信号。
- 参数
filepath – 音频文件的路径
- 返回
- 一个 si (sox_signalinfo_t) 信号
info 作为 Python 对象。ei (sox_encodinginfo_t) 编码信息
- 返回类型
(sox_signalinfo_t、sox_encodinginfo_t)
- 例
>>> si, ei = torchaudio.info('foo.wav') >>> rate, channels, encoding = si.rate, si.channels, ei.encoding
负荷¶
-
torchaudio.backend.sox_backend.
load
(文件路径: str, out: 可选[torch.张量] = 无,归一化:bool = True,channels_first:bool = True,num_frames:int = 0,偏移量:int = 0,signalinfo:torchaudio.backend.common.SignalInfo = 无,编码信息:torchaudio.backend.common.EncodingInfo = 无,文件类型:可选[str] = 无)→ Tuple[torch.Tensor, int][来源]¶ 将音频文件从磁盘加载到张量中
- 参数
filepath – 音频文件的路径
out – 要使用的可选输出张量,而不是创建一个。(默认:
None
)normalization (规范化) – 可选规范化。 如果布尔值为 True,则输出除以 1 << 31。 假设输入是有符号的 32 位音频,则标准化为 [-1, 1]。 如果为 float,则 output 除以该数字。 如果 Callable,则输出将作为参数传递给给定的函数 然后,输出除以结果。(默认:
True
)channels_first – 在结果中首先设置通道或首先设置长度。(默认:
True
)num_frames – 要加载的帧数。0 加载偏移量之后的所有内容。 (默认:
0
)offset – 从文件开头开始数据加载的帧数。 (默认:
0
)signalinfo – sox_signalinfo_t类型,如果 无法自动确定音频类型。(默认:
None
)encodinginfo – sox_encodinginfo_t类型,如果 无法自动确定音频类型。(默认:
None
)filetype – 如果 sox 无法确定,则要设置的文件类型或扩展名 自然而然。(默认:
None
)
- 返回
- 大小为 [C x L] 或 [L x C] 的输出张量,其中
L 是音频帧数, C 是通道数。 一个整数,即音频的采样率(如文件的元数据中所列)
- 返回类型
(张量、int)
- 例
>>> data, sample_rate = torchaudio.load('foo.mp3') >>> print(data.size()) torch.Size([2, 278756]) >>> print(sample_rate) 44100 >>> data_vol_normalized, _ = torchaudio.load('foo.mp3', normalization=lambda x: torch.abs(x).max()) >>> print(data_vol_normalized.abs().max()) 1.
救¶
-
torchaudio.backend.sox_backend.
save
(文件路径:str,src:torch。张量,sample_rate:int,精度:int = 16,channels_first:bool = True)→无[来源]¶ 将 Tensor on file 保存为音频文件
- 参数
filepath – 音频文件的路径
src – 形状为 [C x L] 或 [L x C] 的输入 2D 张量,其中 L 为 音频帧数,C 是声道数
sample_rate – 一个整数,它是 音频(如文件的元数据中所列)
位精度 (默认 (precision) –
16
)channels_first (bool, optional) – 在结果中首先设置通道或首先设置长度。( 违约:
True
)
别人¶
-
torchaudio.backend.sox_backend.
get_sox_bool
(i: int = 0) → Any[来源]¶ 获取 sox_bool 的 sox encodinginfo 选项的枚举。
- 参数
i (int,可选) – 选择类型或获取包含所有可能选项的字典 用于在未指定时查看所有选项。(默认值:或
__members__
sox_false
0
)- 返回
A sox_bool型
- 返回类型
sox_bool
-
torchaudio.backend.sox_backend.
get_sox_encoding_t
(i: int = None) → torchaudio.backend.common.EncodingInfo[来源]¶ 获取 sox_encoding_t 的 sox 编码的枚举。
- 参数
i (int,可选) – 选择类型或获取包含所有可能选项的字典 用于在未指定时查看所有选项。(默认:
__members__
None
)- 返回
用于输出编码的 sox_encoding_t 类型
- 返回类型
sox_encoding_t
-
torchaudio.backend.sox_backend.
get_sox_option_t
(i: int = 2) → Any[来源]¶ 获取 sox encodinginfo 选项的 sox_option_t 的枚举。
- 参数
i (int,可选) – 选择类型或获取包含所有可能选项的字典 用于在未指定时查看所有选项。 (默认值:或
__members__
sox_option_default
2
)- 返回
A sox_option_t型
- 返回类型
sox_option_t
-
torchaudio.backend.sox_backend.
save_encinfo
(文件路径:str,src:torch。张量,channels_first:bool = True,signalinfo:可选[torchaudio.backend.common.SignalInfo] = None,encodinginfo:可选[torchaudio.backend.common.EncodingInfo] = None,文件类型:Optional[str] = None)→无[源]¶ 将音频信号的张量作为标准格式(如 mp3、wav 等)保存到磁盘。
- 参数
filepath (str) – 音频文件的路径
src (Tensor) - 形状为 [C x L] 或 [L x C] 的输入 2D 张量,其中 L 为 音频帧数,C 是声道数
channels_first (bool, optional) – 在结果中首先设置通道或首先设置长度。(默认:
True
)signalinfo (sox_signalinfo_t,可选) – sox_signalinfo_t类型,如果 无法自动确定音频类型(默认值:)。
None
encodinginfo (sox_encodinginfo_t,可选) – sox_encodinginfo_t类型,如果 无法自动确定音频类型(默认值:)。
None
filetype (str, optional) – 如果 sox 无法确定,则要设置的文件类型或扩展名 自然而然。(默认:
None
)
- 例
>>> data, sample_rate = torchaudio.load('foo.mp3') >>> torchaudio.save('foo.wav', data, sample_rate)
-
torchaudio.backend.sox_backend.
sox_encodinginfo_t
()→ torchaudio.backend.common.EncodingInfo[来源]¶ 创建 sox_encodinginfo_t 对象。此对象可用于设置编码 类型、位精度、压缩因子、反向字节、反向半字节、 反向位和字节序。这可以在效果链中用于对 final output 或保存具有特定编码的文件。例如,可以 使用 SOX ULAW 编码进行 8 位 ULAW 编码。张量输出中的注释 结果将是一个 32 位数字,但唯一值的数量将由 位精度。
- 返回: sox_encodinginfo_t(object)
编码 (sox_encoding_t)、输出编码
bits_per_sample (int),位精度,与 sox_signalinfo_t 中的精度相同
compression (float),有损格式的压缩,0.0 默认压缩
reverse_bytes (sox_option_t),反向字节,使用 sox_option_default
reverse_nibbles (sox_option_t), 反向啃食, 使用 sox_option_default
reverse_bits (sox_option_t),反向字节,使用 sox_option_default
opposite_endian (sox_bool)、更改字节序、使用 sox_false
- 例
>>> ei = torchaudio.sox_encodinginfo_t() >>> ei.encoding = torchaudio.get_sox_encoding_t(1) >>> ei.bits_per_sample = 16 >>> ei.compression = 0 >>> ei.reverse_bytes = torchaudio.get_sox_option_t(2) >>> ei.reverse_nibbles = torchaudio.get_sox_option_t(2) >>> ei.reverse_bits = torchaudio.get_sox_option_t(2) >>> ei.opposite_endian = torchaudio.get_sox_bool(0)
-
torchaudio.backend.sox_backend.
sox_signalinfo_t
()→ torchaudio.backend.common.SignalInfo[来源]¶ 创建 sox_signalinfo_t 对象。此对象可用于设置样本 速率、通道数、长度、位精度和余量乘数 主要用于效果
- 返回: sox_signalinfo_t(object)
rate (float),采样率作为浮点数,实际上很可能是整数浮点数
channel (int), 音频通道数
精度 (int)、位精度
length (int),样本中的音频长度 * 通道,0 表示未指定,-1 表示未知
mult (float, optional), 用于效果和无乘数的 headroom multiplier
None
- 例
>>> si = torchaudio.sox_signalinfo_t() >>> si.channels = 1 >>> si.rate = 16000. >>> si.precision = 16 >>> si.length = 0
Soundfile 后端¶
安装 SoundFile 后,后端可用。此后端是 Windows 上的默认值。"soundfile"
您可以通过以下方式从另一个后端切换到后端;"soundfile"
torchaudio.set_audio_backend("soundfile")
注意
如果要从 “soundfile” (传统接口) 切换到后端<soundfile_legacy_backend>,请在切换后端之前设置 flag。torchaudio.USE_SOUNDFILE_LEGACY_INTERFACE
信息¶
-
torchaudio.backend._soundfile_backend.
info
(文件路径:str,格式:可选[str] = None) → torchaudio.backend.common.AudioMetaData[来源]¶ 获取音频文件的信号信息。
- 参数
filepath (路径类对象或文件类对象) –
音频数据源。 ..注意:
* This argument is intentionally annotated as ``str`` only, for the consistency with "sox_io" backend, which has a restriction on type annotation due to TorchScript compiler compatiblity.
format (str, optional) – 未使用。PySoundFile 不接受格式提示。
- 返回
给定音频的元数据。
- 返回类型
负荷¶
-
torchaudio.backend._soundfile_backend.
load
(文件路径:str、frame_offset:int = 0、num_frames:int = -1、标准化:bool = True、channels_first:bool = True、格式:可选[str] = None)→ Tuple[torch.Tensor, int][来源]¶ 从文件加载音频数据。
注意
此函数可以处理的格式取决于 soundfile 安装。 此函数在以下格式上进行了测试;
WAV
32 位浮点
32 位有符号整数
16 位有符号整数
8 位无符号整数
FLAC的
OGG/VORBIS
球
默认情况下 (, ),此函数返回 dtype 和 shape 为 的 Tensor。 样本被归一化以适应 的范围。
normalize=True
channels_first=True
float32
[channel, time]
[-1.0, 1.0]
当输入格式为整数类型的 WAV 时,例如 32 位有符号整数、16 位 有符号整数和 8 位无符号整数(不支持 24 位有符号整数), 通过提供 ,该函数可以返回整数 Tensor,其中样本 在相应 dtype 的整个范围内表示,即 Tensor 对于 32 位有符号 PCM、16 位有符号 PCM 和 8 位无符号 PCM。
normalize=False
int32
int16
uint8
normalize
参数对 32 位浮点 WAV 和其他格式(如 和 )没有影响。 对于这些格式,此函数始终返回 Tensor,其值归一化为 。flac
mp3
float32
[-1.0, 1.0]
- 参数
filepath (路径类对象或文件类对象) –
音频数据源。 ..注意:
* This argument is intentionally annotated as ``str`` only, for the consistency with "sox_io" backend, which has a restriction on type annotation due to TorchScript compiler compatiblity.
frame_offset (int) – 开始读取数据之前要跳过的帧数。
num_frames (int) – 要读取的最大帧数。 读取所有剩余样本, 从 . 如果没有足够的帧数,此函数可能会返回较少的帧数 帧。
-1
frame_offset
normalize (bool) - 当 时,此函数始终返回 ,样本值为 标准化为 . 如果 input file 是整数 WAV,则 give 会将生成的 Tensor 类型更改为 integer 类型。 此参数对整数 WAV 类型以外的格式没有影响。
True
float32
[-1.0, 1.0]
False
channels_first (bool) – 当为 True 时,返回的 Tensor 具有维度 。 否则,返回的 Tensor 的维度为 。
[channel, time]
[time, channel]
format (str, optional) – 未使用。PySoundFile 不接受格式提示。
- 返回
- 生成的 Tensor 和 sample rate。
如果输入文件具有整数 wav 格式且标准化处于关闭状态,则它具有 integer 类型,else 类型。如果 ,则它有 else 。
float32
channels_first=True
[channel, time]
[time, channel]
- 返回类型
救¶
-
torchaudio.backend._soundfile_backend.
save
(文件路径:str,src:torch。张量,sample_rate:int,channels_first:bool = True,压缩:可选[浮点] = 无,格式:可选[str] = 无,编码:可选[str] = 无,bits_per_sample:可选[int] = 无)[来源]¶ 将音频数据保存到文件。
注意
此函数可以处理的格式取决于 soundfile 安装。 此函数在以下格式上进行了测试;
WAV
32 位浮点
32 位有符号整数
16 位有符号整数
8 位无符号整数
FLAC的
OGG/VORBIS
球
- 参数
filepath (str 或 pathlib.Path) – 音频文件的路径。 此函数还处理对象,但为了与 “sox_io” 后端保持一致,对类型注释有限制 用于 TorchScript 编译器兼容性。
pathlib.Path
str
src (Torch.Tensor) – 要保存的音频数据。必须是 2D 张量。
sample_rate (int) – 采样率
channels_first (bool) – 如果 ,则给定的张量被解释为 , 否则。
True
[channel, time]
[time, channel]
compression (Optional[float]) – 未使用。 它仅用于与 “sox_io” 后端的接口兼容性。
format (str,可选) –
覆盖音频格式。 当 argument 为 path-like object时,audio 格式为 从文件扩展名推断。如果缺少文件扩展名或 不同,则可以使用此参数指定正确的格式。
filepath
当 argument 是类文件对象时, 此参数是必需的。
filepath
有效值为 、 、 和 。
"wav"
"ogg"
"vorbis"
"flac"
"sph"
encoding (str,可选) –
更改受支持格式的编码。 此参数仅对支持的格式有效,sush as 和 .有效值为;
"wav"
""flac"
"sph"
"PCM_S"
(有符号整数线性 PCM)"PCM_U"
(无符号整数线性 PCM)"PCM_F"
(浮点 PCM)"ULAW"
(mu-law)"ALAW"
(A-法律)
bits_per_sample (int, optional) – 更改 支持的格式。 当 是 、 或 之一时 , 您可以更改位深度。 有效值为 、 、 和 。
format
"wav"
"flac"
"sph"
8
16
24
32
64
支持的格式/编码/位深度/压缩为:
"wav"
32 位浮点 PCM
32 位有符号整数 PCM
24 位有符号整数 PCM
16 位有符号整数 PCM
8 位无符号整数 PCM
8 位 mu law
8 位 A-law
- 注意:默认编码/位深度由
输入 Tensor。
"flac"
8 位
16 位
24 位 (默认)
"ogg"
,"vorbis"
不接受更改配置。
"sph"
8 位有符号整数 PCM
16 位有符号整数 PCM
24 位有符号整数 PCM
32 位有符号整数 PCM(默认)
8 位 mu law
8 位 A-law
16 位 A-law
24 位 A-law
32 位 A-law
旧版接口(已弃用)¶
"soundfile"
出于向后兼容的原因,可以使用具有传统接口的后端,但此接口已弃用,并将在版本中删除。0.9.0
要切换到此后端/接口,请在切换后端之前设置 flag。torchaudio.USE_SOUNDFILE_LEGACY_INTERFACE
torchaudio.USE_SOUNDFILE_LEGACY_INTERFACE = True
torchaudio.set_audio_backend("soundfile") # The legacy interface
信息¶
-
torchaudio.backend.soundfile_backend.
info
(文件路径:str) →元组[torchaudio.backend.common.SignalInfo, torchaudio.backend.common.EncodingInfo] [来源]¶ 从音频文件获取元数据,而不加载信号。
- 参数
filepath – 音频文件的路径
- 返回
- 一个 si (sox_signalinfo_t) 信号
info 作为 Python 对象。ei (sox_encodinginfo_t) 编码信息
- 返回类型
(sox_signalinfo_t、sox_encodinginfo_t)
- 例
>>> si, ei = torchaudio.info('foo.wav') >>> rate, channels, encoding = si.rate, si.channels, ei.encoding
负荷¶
-
torchaudio.backend.soundfile_backend.
load
(文件路径: str, out: 可选[torch.张量] = 无,归一化:可选[bool] = True,channels_first:可选[bool] = True,num_frames:int = 0,偏移量:int = 0,signalinfo:torchaudio.backend.common.SignalInfo = 无,编码信息:torchaudio.backend.common.EncodingInfo = 无,文件类型:可选[str] = None) → Tuple[torch.Tensor, int][来源]¶ 将音频文件从磁盘加载到张量中
- 参数
filepath – 音频文件的路径
out – 要使用的可选输出张量,而不是创建一个。(默认:
None
)normalization (规范化) – 可选规范化。 如果布尔值为 True,则输出除以 1 << 31。 假设输入是有符号的 32 位音频,则标准化为 [-1, 1]。 如果为 float,则 output 除以该数字。 如果 Callable,则输出将作为参数传递给给定的函数 然后,输出除以结果。(默认:
True
)channels_first – 在结果中首先设置通道或首先设置长度。(默认:
True
)num_frames – 要加载的帧数。0 加载偏移量之后的所有内容。 (默认:
0
)offset – 从文件开头开始数据加载的帧数。 (默认:
0
)signalinfo – sox_signalinfo_t类型,如果 无法自动确定音频类型。(默认:
None
)encodinginfo – sox_encodinginfo_t类型,如果 无法自动确定音频类型。(默认:
None
)filetype – 如果 sox 无法确定,则要设置的文件类型或扩展名 自然而然。(默认:
None
)
- 返回
- 大小为 [C x L] 或 [L x C] 的输出张量,其中
L 是音频帧数, C 是通道数。 一个整数,即音频的采样率(如文件的元数据中所列)
- 返回类型
(张量、int)
- 例
>>> data, sample_rate = torchaudio.load('foo.mp3') >>> print(data.size()) torch.Size([2, 278756]) >>> print(sample_rate) 44100 >>> data_vol_normalized, _ = torchaudio.load('foo.mp3', normalization=lambda x: torch.abs(x).max()) >>> print(data_vol_normalized.abs().max()) 1.
救¶
-
torchaudio.backend.soundfile_backend.
save
(文件路径:str,src:torch。张量,sample_rate:int,精度:int = 16,channels_first:bool = True)→无[来源]¶ 将 Tensor on file 保存为音频文件
- 参数
filepath – 音频文件的路径
src – 形状为 [C x L] 或 [L x C] 的输入 2D 张量,其中 L 为 音频帧数,C 是声道数
sample_rate – 一个整数,它是 音频(如文件的元数据中所列)
位精度 (默认 (precision) –
16
)channels_first (bool, optional) – 在结果中首先设置通道或首先设置长度。( 违约:
True
)