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)[source]¶
將各種濾波器和/或編解碼器應用於波形。
2.1 版本新增。
- 參數:
effect (str 或 None, optional) – 濾波器表達式或
None
表示不套用任何濾波器。有關濾波器語法的詳細資訊,請參閱 https://ffmpeg.dev.org.tw/ffmpeg-filters.html#Audio-Filters。format (str 或 None, optional) – 如果提供,則將音訊編碼為對應的格式。預設值:
None
。encoder (str 或 None, optional) – 如果提供,則覆寫
format
使用的編碼器。預設值:None
。codec_config (CodecConfig 或 None, optional) – 如果提供,則配置編碼解碼器。應與
format
選項一起提供。pad_end (bool, optional) – 啟用後,如果應用效果/編解碼器後波形變短,則在末尾填充靜音。
- 範例 - 基本用法
若要使用
AudioEffector
,請先使用一組effect
和format
進行實例化。>>> # 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.dev.org.tw/ffmpeg-filters.html#Filtergraph-description,有關可用濾波器的列表,請參閱 https://ffmpeg.dev.org.tw/ffmpeg-filters.html#toc-Audio-Filters。
Tempo - https://ffmpeg.dev.org.tw/ffmpeg-filters.html#atempo
>>> AudioEffector(effect="atempo=1.5")
Echo - https://ffmpeg.dev.org.tw/ffmpeg-filters.html#aecho
>>> AudioEffector(effect="aecho=0.8:0.88:60:0.4")
Flanger - https://ffmpeg.dev.org.tw/ffmpeg-filters.html#flanger
>>> AudioEffector(effect="aflanger")
Vibrato - https://ffmpeg.dev.org.tw/ffmpeg-filters.html#vibrato
>>> AudioEffector(effect="vibrato")
Tremolo - https://ffmpeg.dev.org.tw/ffmpeg-filters.html#tremolo
>>> AudioEffector(effect="vibrato")
您還可以一次應用多個效果。
>>> AudioEffector(effect="")
- 範例 - 應用編解碼器
可以使用
format
參數應用編解碼器。format
可以是音訊格式或容器格式。如果容器格式支援多個編碼器,則可以使用encoder
參數指定它。Wav 格式(不套用壓縮,但樣本會轉換為 16 位元有號整數)
>>> AudioEffector(format="wav")
具有預設編碼器的 Ogg 格式
>>> AudioEffector(format="ogg")
具有 vorbis 的 Ogg 格式
>>> AudioEffector(format="ogg", encoder="vorbis")
具有 opus 的 Ogg 格式
>>> AudioEffector(format="ogg", encoder="opus")
具有 opus 的 Webm 格式
>>> 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
的教學課程