• 一个开源的音频分离深度学习项目


    GitHub - yeyupiaoling/AudioClassification-Pytorch: 基于Pytorch实现的声音分类

    1.环境安装

    1.先安装conda

    Ubuntu 使用conda安装python虚拟环境并进行yolo-fast训练_Y_Hungry的博客-CSDN博客

     2. 创建虚拟环境

    conda create -n v38 python=3.8

    3.切换到conda环境

    conda activate v38

    4.安装libsora

    1. conda install pytest-runner
    2. conda install librosa==0.9.1

    5.安装pydub

    pip install pydub

    2.测试环境

    1. import librosa
    2. import librosa.display
    3. import matplotlib.pyplot as plt
    4. data_path = "/root/AudioClassification-Pytorch/mos.mp3"
    5. wav, sr = librosa.load(data_path, sr=16000)
    6. melspec = librosa.feature.melspectrogram(y=wav, sr=sr, n_fft=400, n_mels=80, hop_length=160, win_length=400)
    7. logmelspec = librosa.power_to_db(melspec, ref=1.0, amin=1e-10, top_db=None)
    8. plt.figure()
    9. # plot a wavform
    10. plt.subplot(2, 1, 1)
    11. librosa.display.waveshow(wav, sr)
    12. plt.title('mos Beat wavform')
    13. # plot mel spectrogram
    14. plt.subplot(2, 1, 2)
    15. librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')
    16. plt.title('mos Mel spectrogram')
    17. plt.tight_layout() #保证图不重叠
    18. 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目录下,把生成数据列表代码改为以下代码。

    1. # 生成数据列表
    2. def get_data_list(audio_path, list_path):
    3. sound_sum = 0
    4. audios = os.listdir(audio_path)
    5. f_train = open(os.path.join(list_path, 'train_list.txt'), 'w')
    6. f_test = open(os.path.join(list_path, 'test_list.txt'), 'w')
    7. for i in range(len(audios)):
    8. sounds = os.listdir(os.path.join(audio_path, audios[i]))
    9. for sound in sounds:
    10. if '.wav' not in sound:continue
    11. sound_path = os.path.join(audio_path, audios[i], sound)
    12. t = librosa.get_duration(filename=sound_path)
    13. # 过滤小于2.1秒的音频
    14. if t >= 2.1:
    15. if sound_sum % 100 == 0:
    16. f_test.write('%s\t%d\n' % (sound_path, i))
    17. else:
    18. f_train.write('%s\t%d\n' % (sound_path, i))
    19. sound_sum += 1
    20. print("Audio:%d/%d" % (i + 1, len(audios)))
    21. f_test.close()
    22. f_train.close()
    23. if __name__ == '__main__':
    24. get_data_list('dataset/UrbanSound8K/audio', 'dataset')

    4.训练模型

    python3 train.py

    可能会报错,将下面的代码修改一下,线程数量改为0

    add_arg('num_workers',      int,    0,                        '读取数据的线程数量')

  • 相关阅读:
    Codeforces Round 909 (Div. 3)(A~G)(启发式合并)
    目标检测YOLO实战应用案例100讲-基于改进YOLO v7的智能振动分拣系统开发
    理解整型在内存中的存储
    QFramework 常用
    批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)
    C++学习Day3:面向对象OOP、抽象
    [题] 筛质数 #质数(素数)
    教师办公实用小程序有哪些
    Python可视化图表pyecharts
    WMS供应商管理功能SupplierService
  • 原文地址:https://blog.csdn.net/weixin_41012767/article/details/126019164