快捷方式

AudioEffector

class torchaudio.io.AudioEffector(effect: Optional[str] = None, format: Optional[str] = None, *, encoder: Optional[str] = None, codec_config: Optional[CodecConfig] = None, pad_end: bool = True)[源代码]

已弃用

警告

此类已从 2.8 版本开始弃用。它将在 2.9 版本中移除。此弃用是由于一项大型重构工作,旨在将 TorchAudio 迁移到维护阶段。有关更多信息,请参阅 https://github.com/pytorch/audio/issues/3902

应用各种滤波器和/或编解码器到波形。

2.1 版本新增。

参数 (Args)
effect (str 或 None, 可选): 滤波器表达式或 None 表示不应用任何滤波器。

有关滤波器语法的详细信息,请参阅 https://ffmpeg.net.cn/ffmpeg-filters.html#Audio-Filters

format (str 或 None, 可选): 当提供时,将音频编码为

相应的格式。默认值:None

encoder (str 或 None, 可选): 当提供时,覆盖 format 使用的编码器。

默认值:None

codec_config (CodecConfig 或 None, 可选): 当提供时,配置编码编解码器。

应与 format 选项一起提供。

pad_end (bool, 可选): 当启用时,并且如果应用

滤波器/编解码器后波形变短,则在末尾填充静音。

示例 - 基本用法

要使用 AudioEffector,首先使用一组 effectformat 来实例化它。

>>> # instantiate the effector
>>> effector = AudioEffector(effect=..., format=...)

然后,使用 apply()stream() 方法应用它们。

>>> # Apply the effect to the whole waveform
>>> applied = effector.apply(waveform, sample_rate)
>>> # Apply the effect chunk-by-chunk
>>> for chunk in effector.stream(waveform, sample_rate):
>>>    ...
示例 - 应用滤波器

有关滤波器描述的概述,请参阅 https://ffmpeg.net.cn/ffmpeg-filters.html#Filtergraph-description,有关可用滤波器列表,请参阅 https://ffmpeg.net.cn/ffmpeg-filters.html#toc-Audio-Filters

Tempo - https://ffmpeg.net.cn/ffmpeg-filters.html#atempo

>>> AudioEffector(effect="atempo=1.5")

Echo - https://ffmpeg.net.cn/ffmpeg-filters.html#aecho

>>> AudioEffector(effect="aecho=0.8:0.88:60:0.4")

Flanger - https://ffmpeg.net.cn/ffmpeg-filters.html#flanger

>>> AudioEffector(effect="aflanger")

Vibrato - https://ffmpeg.net.cn/ffmpeg-filters.html#vibrato

>>> AudioEffector(effect="vibrato")

Tremolo - https://ffmpeg.net.cn/ffmpeg-filters.html#tremolo

>>> AudioEffector(effect="vibrato")

您还可以一次应用多个滤波器。

>>> AudioEffector(effect="")
示例 - 应用编解码器

可以使用 format 参数应用编解码器。 format 可以是音频格式或容器格式。如果容器格式支持多种编码器,则可以使用 encoder 参数指定。

Wav 格式(不应用压缩,但样本被转换为 16 位有符号整数)

>>> AudioEffector(format="wav")

Ogg 格式,默认编码器

>>> AudioEffector(format="ogg")

Ogg 格式,带 vorbis

>>> AudioEffector(format="ogg", encoder="vorbis")

Ogg 格式,带 opus

>>> AudioEffector(format="ogg", encoder="opus")

Webm 格式,带 opus

>>> AudioEffector(format="webm", encoder="opus")
示例 - 应用带配置的编解码器

参考:https://trac.ffmpeg.org/wiki/Encode/MP3

MP3,默认配置

>>> AudioEffector(format="mp3")

MP3,可变比特率

>>> AudioEffector(format="mp3", codec_config=CodecConfig(qscale=5))

MP3,恒定比特率

>>> AudioEffector(format="mp3", codec_config=CodecConfig(bit_rate=32_000))
使用 AudioEffector 的教程
AudioEffector Usages

AudioEffector 用法

AudioEffector 用法
Audio Data Augmentation

音频数据增强

音频数据增强

方法

apply

AudioEffector.apply(waveform: Tensor, sample_rate: int, output_sample_rate: Optional[int] = None) Tensor[源代码]

将滤波器和/或编解码器应用于整个张量。

参数
  • waveform (Tensor) – 输入波形。形状:(时间, 通道)

  • sample_rate (int) – 输入波形的采样率。

  • output_sample_rate (intNone, 可选) – 输出采样率。如果提供,则覆盖输出采样率。否则,将重采样结果张量以具有与输入相同的采样率。默认值:None

返回

结果张量。形状:(时间, 通道)。帧数可能与输入的帧数不同。

返回类型

张量

stream

AudioEffector.stream(waveform: Tensor, sample_rate: int, frames_per_chunk: int, output_sample_rate: Optional[int] = None) Iterator[Tensor][源代码]

逐块地将滤波器和/或编解码器应用于给定的张量。

参数
  • waveform (Tensor) – 输入波形。形状:(时间, 通道)

  • sample_rate (int) – 波形的采样率。

  • frames_per_chunk (int) – 一次返回的帧数。

  • output_sample_rate (intNone, 可选) – 输出采样率。如果提供,则覆盖输出采样率。否则,将重采样结果张量以具有与输入相同的采样率。默认值:None

返回

处理后的块序列。形状:(时间, 通道),其中帧数与 frames_per_chunk 匹配,但最后一个块可能较短。

返回类型

Iterator[Tensor]

文档

访问全面的 PyTorch 开发者文档

查看文档

教程

为初学者和高级开发者提供深入的教程

查看教程

资源

查找开发资源并让您的问题得到解答

查看资源