使用 PyTorch 进行音频信号处理的数据操作和转换
- 💂 個人網站:【 海擁】【小霸王游戲機】
- 🤟 風趣幽默的前端學習課程:👉28個案例趣學前端
- 💅 想尋找共同學習交流、摸魚劃水的小伙伴,請點擊【摸魚學習交流群】
- 💬 免費且實用的計算機相關知識題庫:👉進來逛逛
給大家安利一個免費且實用的前端刷題(面經大全)網站,👉點擊跳轉到網站。
torchaudio:PyTorch 的音頻庫
torchaudio 的目標是將PyTorch應用到音頻領域。通過支持 PyTorch,torchaudio 遵循相同的理念,即提供強大的 GPU 加速,通過 autograd 系統專注于可訓練的特征,并具有一致的風格(張量名稱和維度名稱)。因此,它主要是一個機器學習庫,而不是一個通用的信號處理庫。PyTorch 的好處可以在 torchaudio 中看到,因為所有計算都通過 PyTorch 操作進行,這使得它易于使用并且感覺像是一個自然的擴展。
-
支持音頻 I/O(加載文件、保存文件)
-
使用 SoX 將以下格式加載到 Torch Tensor 中
- mp3、wav、aac、ogg、flac、avr、cdda、cvs/vms、
- aiff, au, amr, mp2, mp4, ac3, avi, wmv,
- mpeg、ircam 和 libsox 支持的任何其他格式。
- Kaldi (方舟/SCP)
-
-
常見音頻數據集的數據加載器(VCTK,YesNo)
-
常見的音頻轉換
- 頻譜圖、AmplitudeToDB、MelScale、MelSpectrogram、MFCC、MuLawEncoding、MuLawDecoding、重采樣
-
合規性接口:使用 PyTorch 運行與其他庫一致的代碼
- Kaldi:頻譜圖、fbank、mfcc、resample_waveform
依賴關系
- PyTorch(兼容版本見下文)
- libsox v14.3.2 或更高版本(僅在從源代碼構建時需要)
- [可選] vesis84/kaldi-io-for-python commit cb46cb1f44318a5d04d4941cf39084c5b021241e 或以上
以下是對應的torchaudio版本和支持的Python版本。
| master / nightly | master / nightly | >=3.6 |
| 1.7.0 | 0.7.0 | >=3.6 |
| 1.6.0 | 0.6.0 | >=3.6 |
| 1.5.0 | 0.5.0 | >=3.5 |
| 1.4.0 | 0.4.0 | ==2.7, >=3.5,<=3.8 |
安裝
二元分布
要使用 anaconda 安裝最新版本,請運行:
conda install -c pytorch torchaudio要安裝最新的 pip 輪子,請運行:
pip install torchaudio -f https://download.pytorch.org/whl/torch_stable.html(如果您還沒有安裝 Torch,這將默認從 PyPI 安裝 Torch。如果您需要不同的 Torch 配置,請在運行此命令之前預安裝 Torch。)
Nightly 構建
請注意,每晚構建是在 PyTorch 的每晚構建基礎上構建的。因此,當您使用每晚構建的 torchaudio 時,您需要安裝最新的 PyTorch。
pip
pip install numpy pip install --pre torchaudio -f https://download.pytorch.org/whl/nightly/torch_nightly.htmlconda
conda install -y -c pytorch-nightly torchaudio從 Source
如果您的系統配置不在上述支持的配置中,您可以從源代碼構建 torchaudio。
這將需要 libsox v14.3.2 或更高版本。
如何安裝 SoX 的示例
OSX(自制軟件):
brew install soxLinux(Ubuntu):
sudo apt-get install sox libsox-dev libsox-fmt-allPython
conda install -c conda-forge sox # Linux python setup.py install# OSX MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install或者,構建過程可以靜態構建 libsox 和一些可選的編解碼器,并且 torchaudio 可以通過設置環境變量來鏈接它們BUILD_SOX=1。構建過程將在構建擴展之前獲取并構建 libmad、lame、flac、vorbis、opus 和 libsox。此過程需要cmake和pkg-config。
# Linux BUILD_SOX=1 python setup.py install # OSX BUILD_SOX=1 MACOSX_DEPLOYMENT_TARGET=10.9 CC=clang CXX=clang++ python setup.py install眾所周知,這適用于 linux 和 unix 發行版,例如 Ubuntu 和 CentOS 7 以及 macOS。如果您在新系統上嘗試此操作并找到使其工作的解決方案,請隨時通過打開問題來共享它。
故障排除
檢查構建系統類型… ./config.guess: 無法猜測系統類型
由于編解碼器的配置文件較舊,因此無法正確檢測新環境,例如 Jetson Aarch。需要用最新的或替換該config.guess文件。./third_party/tmp/lame-3.99.5/config.guess``./third_party/tmp/libmad-0.15.1b/config.guess:https://github.com/gcc-mirror/gcc/blob/master/config.guess
另見:#658
使用“BUILD_SOX”時對“tgetnum”的未定義引用
如果在 anaconda 環境中構建時遇到類似以下的錯誤:
../bin/ld: console.c:(.text+0xc1): undefined reference to `tgetnum'安裝ncurses從conda-forge運行前python setup.py install:
# 從 conda-forge 安裝 ncurses conda install -c conda-forge ncurses快速使用
import torchaudiowaveform, sample_rate = torchaudio.load('foo.wav') # load tensor from file torchaudio.save('foo_save.wav', waveform, sample_rate) # save tensor to file后端調度
默認情況下,在 OSX 和 Linux 中,torchaudio 使用 SoX 作為后端來加載和保存文件。可以使用以下命令將后端更改為SoundFile。有關安裝說明,請參閱SoundFile。
import torchaudio torchaudio.set_audio_backend("soundfile") # 切換后臺waveform, sample_rate = torchaudio.load('foo.wav') # 像通常一樣從文件加載張量 torchaudio.save('foo_save.wav', waveform, sample_rate) # 像往常一樣將張量保存到文件中與 SoX 不同,SoundFile 目前不支持 mp3。
API 參考
API 參考位于此處:http://pytorch.org/audio/
公約
由于 torchaudio 是一個機器學習庫,并且構建在 PyTorch 之上,torchaudio 圍繞以下命名約定進行了標準化。假定張量將“通道”作為第一個維度,將時間作為最后一個維度(如果適用)。這使其與 PyTorch 的尺寸一致。對于大小名稱,使用前綴n_(例如“大小為 ( n_freq, n_mel)的張量”),而維度名稱沒有此前綴(例如“維度(通道,時間)的張量”)
- waveform:具有維度(通道、時間)的音頻樣本張量
- sample_rate:音頻維度的速率(每秒采樣數)
- specgram:具有維度(通道、頻率、時間)的頻譜圖張量
- mel_specgram:具有維度(通道、mel、時間)的mel譜圖
- hop_length:連續幀開始之間的樣本數
- n_fft:傅立葉箱的數量
- n_mel, n_mfcc: mel 和 MFCC bin 的數量
- n_freq:線性頻譜圖中的 bin 數量
- min_freq:頻譜圖中最低頻段的最低頻率
- max_freq:頻譜圖中最高頻段的最高頻率
- win_length: STFT 窗口的長度
- window_fn: 對于創建窗口的函數,例如 torch.hann_window
轉換期望并返回以下維度。
- Spectrogram:(頻道,時間)->(頻道,頻率,時間)
- AmplitudeToDB:(頻道,頻率,時間)->(頻道,頻率,時間)
- MelScale: (頻道, 頻率, 時間) -> (頻道, mel, 時間)
- MelSpectrogram:(頻道,時間)->(頻道,mel,時間)
- MFCC:(頻道,時間)->(頻道,mfcc,時間)
- MuLawEncode:(頻道,時間)->(頻道,時間)
- MuLawDecode:(頻道,時間)->(頻道,時間)
- Resample:(頻道,時間)->(頻道,時間)
- Fade:(頻道,時間)->(頻道,時間)
- Vol:(頻道,時間)->(頻道,時間)
復數經由(…,2)尺寸的張量支撐,并且提供torchaudiocomplex_norm和angle這樣的張量轉換成它的幅度和相位。在這里,在文檔中,我們使用省略號“…”作為張量其余維度的占位符,例如可選的批處理和通道維度。
貢獻指南
請參考CONTRIBUTING.md
數據集免責聲明
這是一個下載和準備公共數據集的實用程序庫。我們不托管或分發這些數據集,不保證其質量或公平性,也不聲稱您擁有使用該數據集的許可。您有責任確定您是否有權根據數據集的許可使用數據集。
如果您是數據集所有者并希望更新其中的任何部分(描述、引文等),或者不希望您的數據集包含在此庫中,請通過 GitHub 問題與我們聯系。感謝您對 ML 社區的貢獻!
GitHub
https://github.com/pytorch/audio
?? 好書推薦
《人工智能導論》
【內容簡介】
科大訊飛校企合編教材,涵蓋人工智能各個重要體系,詳解人工智能基礎理論,詳細解讀算法邏輯:詳解機器學習、人工神經網絡、智能語音識別、自然語言處理、知識圖譜與機器人等核心算法知識,清晰介紹實戰步驟:有理論有實戰,介紹了人工智能算法與技術的實際應用,步驟清楚,條理清晰,即學即用。
📚 京東自營購買鏈接:《人工智能導論》
總結
以上是生活随笔為你收集整理的使用 PyTorch 进行音频信号处理的数据操作和转换的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比较好的开源人脸识别软件
- 下一篇: .net直接调用office com组件