一个开源的音频分离深度学习项目
GitHub - yeyupiaoling/AudioClassification-Pytorch: 基于Pytorch實現的聲音分類
1.環境安裝
1.先安裝conda
Ubuntu 使用conda安裝python虛擬環境并進行yolo-fast訓練_Y_Hungry的博客-CSDN博客
?2.?創建虛擬環境
conda create -n v38 python=3.83.切換到conda環境
conda activate v384.安裝libsora
conda install pytest-runner conda install librosa==0.9.15.安裝pydub
pip install pydub2.測試環境
import librosa import librosa.displayimport matplotlib.pyplot as plt data_path = "/root/AudioClassification-Pytorch/mos.mp3" wav, sr = librosa.load(data_path, sr=16000) melspec = librosa.feature.melspectrogram(y=wav, sr=sr, n_fft=400, n_mels=80, hop_length=160, win_length=400) logmelspec = librosa.power_to_db(melspec, ref=1.0, amin=1e-10, top_db=None)plt.figure() # plot a wavform plt.subplot(2, 1, 1) librosa.display.waveshow(wav, sr) plt.title('mos Beat wavform') # plot mel spectrogram plt.subplot(2, 1, 2) librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel') plt.title('mos Mel spectrogram') plt.tight_layout() #保證圖不重疊 plt.show()3.生成數據列表
生成數據列表,用于下一步的讀取需要,audio_path為音頻文件路徑,用戶需要提前把音頻數據集存放在dataset/audio目錄下,每個文件夾存放一個類別的音頻數據,每條音頻數據長度在3秒以上,如?dataset/audio/鳥叫聲/······。audio是數據列表存放的位置,生成的數據類別的格式為?音頻路徑\t音頻對應的類別標簽,音頻路徑和標簽用制表符?\t分開。讀者也可以根據自己存放數據的方式修改以下函數。
Urbansound8K 是目前應用較為廣泛的用于自動城市環境聲分類研究的公共數據集,包含10個分類:空調聲、汽車鳴笛聲、兒童玩耍聲、狗叫聲、鉆孔聲、引擎空轉聲、槍聲、手提鉆、警笛聲和街道音樂聲。數據集下載地址:https://zenodo.org/record/1203745/files/UrbanSound8K.tar.gz。以下是針對Urbansound8K生成數據列表的函數。如果讀者想使用該數據集,請下載并解壓到?dataset目錄下,把生成數據列表代碼改為以下代碼。
# 生成數據列表 def get_data_list(audio_path, list_path):sound_sum = 0audios = os.listdir(audio_path)f_train = open(os.path.join(list_path, 'train_list.txt'), 'w')f_test = open(os.path.join(list_path, 'test_list.txt'), 'w')for i in range(len(audios)):sounds = os.listdir(os.path.join(audio_path, audios[i]))for sound in sounds:if '.wav' not in sound:continuesound_path = os.path.join(audio_path, audios[i], sound)t = librosa.get_duration(filename=sound_path)# 過濾小于2.1秒的音頻if t >= 2.1:if sound_sum % 100 == 0:f_test.write('%s\t%d\n' % (sound_path, i))else:f_train.write('%s\t%d\n' % (sound_path, i))sound_sum += 1print("Audio:%d/%d" % (i + 1, len(audios)))f_test.close()f_train.close()if __name__ == '__main__':get_data_list('dataset/UrbanSound8K/audio', 'dataset')4.訓練模型
python3 train.py可能會報錯,將下面的代碼修改一下,線程數量改為0
add_arg('num_workers', ? ? ?int, ? ?0, ? ? ? ? ? ? ? ? ? ? ? ?'讀取數據的線程數量')總結
以上是生活随笔為你收集整理的一个开源的音频分离深度学习项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux环境c语言实现who,Linu
- 下一篇: 单芯片的人脸掌静脉识别