文章还不完善,会慢慢更新。

1.介绍

2.Deep learning:

深度学习已经广泛应用各个领域,不管是图像识别还是语音识别方面均已超过原有的机器学习算法。取代了传统的人工特征方法。

2.1 Spectrogram:

声音信号是一维时域信号。通过傅里叶变换,到频域上可以看出信号的频率分布,但是丢失了时域信息,无法看出频率分布随时间的变化。为了解决这个问题,常用的办法是短时傅里叶变换(STFT)

2.1.1 生成声谱图:

  1. 对长信号分帧,加窗口;
  2. 对每一帧(短时)信号做傅里叶变换;
  3. 将频谱图旋转;
  4. 将频谱图幅度用灰度图来表示;
  5. 将FFT的结果按照时间维度堆叠;

2.2.2 声谱图的作用:

  1. 声音信号的时频域表示
  2. 研究语音的重要工具;
  3. 利用HMM对声谱建模,可以讲声音转化为文字;
  4. 提取声音分类所需要的特征;

2.2.3 MFCCs:

以上均为我们人为对声音信号的分析,相比这些,人的听觉系统具有巨大的优势。

  1. 只聚焦于某些特定频率区域:
    只让某些频率的信号通过;低频区域分布密集;高频区域分布稀疏

  2. 非线性系统:
    对不同频率信号的灵敏度不同;频率提高1倍,人察觉不到提高了两倍

  3. 语音特征:
    能提取出语义信息, 而且能提取出说话人的个人特征

梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient, MFCC)考虑到了人类的听觉特征。
梅尔标度:
将普通的频率标度转化为梅尔频率标度

映射关系:
m e l ( f ) = 2595 ∗ l o g 10 ( 1 + f / 700 ) mel(f) = 2595*log_{10}(1+f/700) mel(f)=2595∗log10​(1+f/700)

通过这个映射关系,在梅尔标度下,人耳对频率的灵敏度变成了线性关系。

这部分内容大部分参考[13,14,15],此处仅做一个简单总结,描述如何得到MFCC特征。
可以简单认为梅尔频谱是对正常声谱加了一个滤波器得到对梅尔频谱做倒谱分析得到梅尔倒谱。

  1. 何为.wav文件,信号数据和采样频率:
    .wav文件即无损音频文件,录音设备在录音,或者python读取音频文件时,是按固定频率对真实声波的每个点进行采样,实现从真实信号到模拟信号的转变。此处采样频率应该满足奈奎斯特采样定律,即采样频率大于信号最大频率的2倍。保证能够还原原始信号。
  2. 数据预处理:
    为了提高信噪比,我们需要进行数据预处理。按照以下公式进行数据预处理(但不知道原理):
    y ( t ) = x ( t ) − α ∗ x ( t − 1 ) y(t) = x(t) - \alpha*x(t-1) y(t)=x(t)−α∗x(t−1)
  3. 分帧:
    将原始数据划分为多个音频段,类似一张图和视频的关系。比如我们常见的60帧。
  4. 加汉明(Hanmming)窗:
    作用是为了使帧和帧之间变得平滑,消除吉布斯效应。
  5. 离散傅里叶变换(FFT):

2.3 DL Model(CNN)

3. Machine Learning:

3.1 Feature Extraction:

3.1.1 时域特征(Time Domain)

  1. 中心距(Central moments):
    原始声音信号(声波)的幅度的均值(mean),标准差(standard deviation),偏度(skewness),峰度(kurtosis)

  2. 过零点(Zero Crossing Rate-ZCR):
    过零点即声音信号(声波)符号变化的点,也就是从正值变成负值。比如下面是一段声音信号:

    对这段信号放大,只选取一小部分,得到放大的局部图:

    我们可以从图中可以看出,这一段信号有6个过零点。
    提取信号过零点个数的 总数(sum),均值(mean),标准差(mean) 作为特征。
    对于某些Rock或者重金属音乐这个特征值会非常的高;

  3. Root Mean Square Energy (RMSE):
    ∑ n = 1 N ∣ x ( n ) ∣ 2 / N \sqrt{\sum^N_{n=1}|x(n)|^2/N} n=1∑N​∣x(n)∣2/N ​
    然后对RMSE求均值(mean),标准差(mean)

  4. 节奏(Tempo)
    节拍可以表征音乐的快慢,特被定义为每分钟的节拍数(Beats Per Minute-BPM)

3.1.2 频域特征(Frequency Domain)

  1. 梅尔倒谱系数(Mel-Frequency Cepstral Coefficients-MFCC )

  2. 色度特征(Chroma Features):
    这是一个音频信号非常有用的一个表征方式。可以认为是将整个频谱投影到12个箱子。
    有兴趣的可以参考[21],非音乐专业,不是很理解,以下是这个特征的生成方式。

  3. 频谱中心(Spectral Centroid)
    f c = Σ k S ( k ) f ( k ) Σ k S ( k ) f_c = \frac{\Sigma_k S(k)f(k)}{\Sigma_k S(k)} fc​=Σk​S(k)Σk​S(k)f(k)​
    类比,假设我们有两首歌,风格分别是Blues和Metal。和Blues相比,Metal风格的声音,在音乐的尾部有更多的频率。二者的频率的中心也就有所不同。
    对频率做带权(幅度)求和,然后除以幅度求和。

  4. 频谱带宽(Spectral Band-width)
    f c = ( Σ k S ( k ) f ( k ) − f c ) 1 p f_c = (\Sigma_k S(k)f(k) - f_c)^\frac{1}{p} fc​=(Σk​S(k)f(k)−fc​)p1​

  5. 谱对比度(Spectral Contrast)

  6. Spectral Roll-off
    它是对声音信号形状(波形图)的一种衡量。它表示低于总频谱能量的指定百分比的频率。

    蓝色为原声音信号,红色为Spectral Roll-off。可以发现和声波信号形状相似。

4.结论和展望:

参考资料:

[1] 手把手教你打造一个曲风分类机器人
[2] 怎样用深度学习发现一首歌属于哪个流派?
[3] Finding the genre of a song with Deep Learning — A.I. Odyssey part. 1
[4] 私人定制——使用深度学习Keras和TensorFlow打造一款音乐推荐系统
[5] Building a Music Recommender with Deep Learning
[6] 个性化推荐算法:为什么网易云音乐推荐歌单那么精准?
[7] pyAudioAnalysis: An Open-Source Python Library for Audio Signal Analysis
[8] Music Genre Classification
[9] Music Genre Classification using Machine Learning Techniques
[10] Speech Processing for Machine Learning: Filter banks, Mel-Frequency Cepstral Coefficients (MFCCs) and What’s In-Between
[11] 【干货】用神经网络识别歌曲流派(附代码)
[12] Models for AudioSet: A Large Scale Dataset of Audio Events
[13] 语音信号处理之(四)梅尔频率倒谱系数(MFCC)
[14] AI(I)语音(I):MFCC特征参数提取
[15] CMU:Topic: Spectrogram, Cepstrum and Mel-Frequency Analysis
[16] Recommending music on Spotify with deep learning
[17] Sound Classification using Spectrogram Images
[18] 采用深度学习算法为Spotify做基于内容的音乐推荐
[19] 音频特征提取——librosa工具包使用
[20] Music Genre Classification with Python
[21] 什么是Chroma Features

声音(音乐)分类综述相关推荐

  1. 深度学习 音乐分类_基于神经网络的音乐流派分类

    介绍本文讨论神经网络对声音样本的音乐类型进行分类的任务.当我决定在声音处理领域工作时,我认为声音类型分类和图像分类是相同的问题.但是图像非常火热,我并没有找到太多关于深度学习来解决这个问题的相关资料. ...

  2. 基于节拍谱的语音音乐分类模型

    节拍谱的取得方式为按照论文<THE BEAT SPECTRUM:A NEW APPROACH TO RHYTHM ANALYSIS>获得,但是在分类中,有点阴差阳错的计算出不同的结果. 按 ...

  3. 【NLP】文本分类综述 (上)

    NewBeeNLP公众号原创出品 公众号专栏作者 @lucy 北航博士在读 · 文本挖掘/事件抽取方向 本系列文章总结自然语言处理(NLP)中最基础最常用的「文本分类」任务,主要包括以下几大部分: 综 ...

  4. 8.5 Python机器学习--微博聚类和音乐分类理论记录

    Python机器学习: 隆重推出scikit-learn机器学习库 Scikit-Learn是基于python的机器学习模块 Scikit-Learn中的机器学习模型非常丰富,包括SVM,决策树, G ...

  5. 知识分享:游戏音乐分类

    游戏音乐风格多种多样,不同风格的音乐在游戏中都有不同的表现,游戏音乐有着不同的分类,比如按照声部状况也分为:单声部音乐.复调音乐.主调音乐,按照音乐性质可分为:纯音乐.标题音乐.轻音乐.爵士音乐,那么 ...

  6. 自然语言处理——文本分类综述

    最近在学习文本分类,读了很多博主的文章,要么已经严重过时(还在一个劲介绍SVM.贝叶斯),要么就是机器翻译的别人的英文论文,几乎看遍全文,竟然没有一篇能看的综述,花了一个月时间,参考了很多文献,特此写 ...

  7. 机器学习项目-音乐系统推荐系统-音乐分类-Pydub-python_speech_featrures MFCC-SVM

    文章目录 1.项目说明 2.代码 2.1 代码结构 2.2 feature 2.3 svm 2.4 acc 2.5 class_demo 2.6 features_main 2.7 svm_main ...

  8. ig信息增益 java_文本分类综述

    文本分类是一项系统的工程,所涉及的技术很多,按流程可以将文本分类分为:文本预处理阶段.训练阶段.分类阶段.评价四个阶段,其中预处理阶段要文本处理成计算机能识别的格式,首先对文本进行分词处理,中文文本和 ...

  9. 目标检测、分割、识别、分类综述

    目标分割的任务是把目标对应的部分分割出来. 目标检测:检测到图片当中的目标的具体位置 目标识别:即是在所有的给定数据中,分类出哪一些sample是目标,哪一些不是.这个仅仅做一下分类任务.yes or ...

最新文章

  1. 人脸识别“热”中的冷思考:道德伦理问题值得深思
  2. 长春机械电子计算机类,长春机械电子学校
  3. cnblogs第一篇
  4. VTK:几何对象之IsoparametricCellsDemo
  5. JavaWeb--JavaEE
  6. 边做边学小型封装--利用主流框架进行Dao层通用化,Spring3.0+Hibernate3.3.2通用Dao层整合(四)...
  7. selenium webdirver之ruby-开发ide乱码解决方案
  8. Gather more plan statistics by gather_plan_statistics hint
  9. 微软内部补丁(非正式发布)之取得方式(20110713)
  10. 图像数字水印技术研究及matlab实现,数字水印技术研究及其matlab仿真.doc
  11. RedHat红帽RHEL7.2镜像下载以及安装教程(内含下载链接)
  12. 超详细的免费下载论文方法
  13. vue 二级三级路由配置
  14. 会计计算机二级考试试题,计算机二级考试真题-Word-小刘-会计电算化节节高升...
  15. typecho添加html5视频播放器,DPlayer-Typecho视频播放插件
  16. 飞马网饿了么技术沙龙大数据专场圆满结束
  17. 我们都在过着「抽奖」的人生
  18. 新媒体运营胡耀文教程:短视频+怎么变现?一文读懂4大商业模式
  19. 解决can't find -lGL的问题
  20. 我想起个公司名字,招投标行业的,快速搜索标讯的,科技公司,蓝色logo的

热门文章

  1. python爬取公众号文章数据库,爬取微信公众号所有文章的请教
  2. 几个ts的接口练习题
  3. c纳秒级计时器_C#中的高精度计时方法(纳秒级别计时)
  4. 为什么ppt图形卡配置不正确_PPT常见问题解决方法,PPT检测到图形卡可能配置不正确怎么办?...
  5. 面试官问上一家公司离职原因怎么办?
  6. win10 安装并跑通 mmdetection
  7. 拒酒词、与领导喝酒的诀窍、酒量不行的技巧
  8. unity3d学习笔记——老版动画系统的使用
  9. Unity关于屏幕适配留黑边的做法
  10. java检索电脑的所有图片_查找电脑里重复的照片