本文簡要介紹python語言中 torchaudio.sox_effects.apply_effects_file
的用法。
用法:
torchaudio.sox_effects.apply_effects_file(path: str, effects: List[List[str]], normalize: bool = True, channels_first: bool = True, format: Optional[str] = None) → Tuple[torch.Tensor, int]
path(path-like 對象或者file-like 對象) -
音頻數據的來源。當函數不是由 TorchScript 編譯時(例如
torch.jit.script
),接受以下類型:path-like
:文件路徑file-like
:具有read(size: int) -> bytes
方法的對象,最多返回size
長度的字節字符串。
TorchScript編譯函數時,隻允許
str
類型。注意:此參數特意注釋為
str
,隻是為了與TorchScript 編譯器兼容。effects(List[List[str]]) -效果列表。
normalize(bool,可選的) -當
True
時,此函數始終返回float32
,並且樣本值被歸一化為[-1.0, 1.0]
。如果輸入文件是整數 WAV,則給出False
會將生成的張量類型更改為整數類型。此參數對除整數 WAV 類型以外的格式無效。channels_first(bool,可選的) -如果為 True,則返回的張量具有維度
[channel, time]
。否則,返回的張量維度為[time, channel]
。format(str或者None,可選的) -用給定的格式覆蓋格式檢測。當 libsox 無法從標頭或擴展名推斷格式時,提供參數可能會有所幫助,
生成的張量和采樣率。如果
normalize=True
,則生成的張量始終是float32
類型。如果normalize=False
並且輸入音頻文件是整數 WAV 文件,則生成的張量具有相應的整數類型。 (注意不支持 24 位整數類型)如果channels_first=True
,則生成的張量具有維度[channel, time]
,否則為[time, channel]
。(張量,int)
將 sox 效果應用於音頻文件並將生成的數據加載為張量
注意
此函數的工作方式與
sox
命令非常相似,但有細微差別。例如,sox
commnad 會自動添加某些效果(例如speed
、pitch
等之後的rate
效果),但此函數僅適用於給定的效果。因此,要實際應用speed
效果,您還需要為rate
效果提供所需的采樣率,因為在內部,speed
效果隻會改變采樣率並保持樣本不變。- 示例 - 基本用法
>>> >>> # Defines the effects to apply >>> effects = [ ... ['gain', '-n'], # normalises to 0dB ... ['pitch', '5'], # 5 cent pitch shift ... ['rate', '8000'], # resample to 8000 Hz ... ] >>> >>> # Apply effects and load data with channels_first=True >>> waveform, sample_rate = apply_effects_file("data.wav", effects, channels_first=True) >>> >>> # Check the result >>> waveform.shape torch.Size([2, 8000]) >>> waveform tensor([[ 5.1151e-03, 1.8073e-02, 2.2188e-02, ..., 1.0431e-07, -1.4761e-07, 1.8114e-07], [-2.6924e-03, 2.1860e-03, 1.0650e-02, ..., 6.4122e-07, -5.6159e-07, 4.8103e-07]]) >>> sample_rate 8000
- 示例 - 對數據集應用隨機速度擾動
>>> >>> # Load data from file, apply random speed perturbation >>> class RandomPerturbationFile(torch.utils.data.Dataset): ... """Given flist, apply random speed perturbation ... ... Suppose all the input files are at least one second long. ... """ ... def __init__(self, flist: List[str], sample_rate: int): ... super().__init__() ... self.flist = flist ... self.sample_rate = sample_rate ... ... def __getitem__(self, index): ... speed = 0.5 + 1.5 * random.randn() ... effects = [ ... ['gain', '-n', '-10'], # apply 10 db attenuation ... ['remix', '-'], # merge all the channels ... ['speed', f'{speed:.5f}'], # duration is now 0.5 ~ 2.0 seconds. ... ['rate', f'{self.sample_rate}'], ... ['pad', '0', '1.5'], # add 1.5 seconds silence at the end ... ['trim', '0', '2'], # get the first 2 seconds ... ] ... waveform, _ = torchaudio.sox_effects.apply_effects_file( ... self.flist[index], effects) ... return waveform ... ... def __len__(self): ... return len(self.flist) ... >>> dataset = RandomPerturbationFile(file_list, sample_rate=8000) >>> loader = torch.utils.data.DataLoader(dataset, batch_size=32) >>> for batch in loader: >>> pass
參數:
返回:
返回類型:
相關用法
- Python PyTorch apply_effects_tensor用法及代碼示例
- Python PyTorch argsort用法及代碼示例
- Python PyTorch addmm用法及代碼示例
- Python PyTorch addmv用法及代碼示例
- Python PyTorch assert_close用法及代碼示例
- Python PyTorch angle用法及代碼示例
- Python PyTorch all_reduce用法及代碼示例
- Python PyTorch atanh用法及代碼示例
- Python PyTorch annotate用法及代碼示例
- Python PyTorch async_execution用法及代碼示例
- Python PyTorch argmax用法及代碼示例
- Python PyTorch atan用法及代碼示例
- Python PyTorch as_strided用法及代碼示例
- Python PyTorch acos用法及代碼示例
- Python PyTorch all_gather用法及代碼示例
- Python PyTorch avg_pool1d用法及代碼示例
- Python PyTorch asin用法及代碼示例
- Python PyTorch allreduce_hook用法及代碼示例
- Python PyTorch argmin用法及代碼示例
- Python PyTorch any用法及代碼示例
- Python PyTorch all_to_all用法及代碼示例
- Python PyTorch asinh用法及代碼示例
- Python PyTorch add用法及代碼示例
- Python PyTorch addcdiv用法及代碼示例
- Python PyTorch acosh用法及代碼示例
注:本文由純淨天空篩選整理自pytorch.org大神的英文原創作品 torchaudio.sox_effects.apply_effects_file。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。