音频标签化1:audioset与训练模型 | 音频特征样本
随着机器学习的发展,很多“历史遗留”问题有了新的解决方案。这些遗留问题中,有一个是音频标签化,即如何智能地给一段音频打上标签的问题,标签包括“吉他”、“男中音”、“流水声”、“嘻哈”、“节奏慢”、“重低音”等等,可以是多个标签。
一旦能正确的打上标签,特别是多个标签时,就能有效地应用于很多场景,比如分离出纯乐器的音频、聚合有男中音的音频、区分出有鸟叫的音频,等等。
本文从机器学习的思路,简单讲解如何解决音频标签化的问题。
如果想通过机器学习的办法来解决音频标签化的问题,那就跟其它问题的解决一样,需要考虑训练的模型,以及训练的样本。
(一)训练样本
这里的训练样本就是音频特征的数据集合。
音频特征有很多,比如频率、节拍、mfcc、过零率、短时能量、响度等等,其中的mfcc,是标签化的有效特征。那如何得到mfcc特征的数据集,是解决样本问题的关键。对于mfcc的概念,以及提取mfcc的办法,小程之前有介绍过,这里不再细说,读者可以关注“广州小程”微信公众号,并在相应的菜单项中查阅。
以下讲的音频特征都包括mfcc特征(也可以包括其它特征)。
为了得到音频特征的数据集(即训练样本),这里介绍两个办法,一个是自己找音频文件再提取出音频特征,另一个是使用google的audioset,这两个办法可以同时使用。当然,还有其它数据集可以使用,这个后续再介绍。
如果是自己找音频文件,则需要考虑找哪些音频文件。比如根据需要覆盖的种类,找一批有这个种类的音频文件,比如想提取“钢琴”的特征,就需要找一批钢琴曲(甚至对各个文件进行裁剪,剪切出有钢琴的片段)。根据机器学习的模型,选择是否需要同时叠加其它种类的特征。
在拿到音频文件后,可以使用VGGish模型来提取音频特征。大体的思路是,先把音频文件转换成mfcc图片,这时问题就变成了图片识别,跟音频已经没有关系,然后,图片需要进行切片,以960ms为一个切片,一个切片包括96个图片帧,一帧10ms,不重叠。每一帧都包括了64个mel频带。经过这个切片的处理后,就得到了音频特征的数据集。当然,对于96*64的切片,还可以用VGGish进一步处理,演变成适合自己模型的特征格式。
对应于VGG模型,有一个开源项目,地址是:
https://github.com/tensorflow/models/tree/master/research/audioset
对于音频特征的提取,除了VGG,还有其它的项目或模型也可以做到,这个小程另找机会来介绍。
另一个办法,是使用google的audioset。注意,google的audioset 是音频特征而非音频文件。
audioset是google在2017年开放的大规模的人工标签的音频数据集,包括人、动物、环境音、乐器与音乐流派等音频特征,一共有632个音频分类,超200万个样本(支持扩充),这些样本来源于YouTube的视频,当然经过了人工编辑。google这样描述这些样本分类,参考这个截图:

那具体有哪些分类标签呢,可参照这个文档的说明:https://github.com/audioset/ontology/blob/master/ontology.json,比如其中部分内容:

audioset的首页:
https://research.google.com/audioset/index.html
audioset的下载页面:
https://research.google.com/audioset/download.html
audioset数据集,包括两部分内容,一个是特征文件(超2G),这样下载:

下载后的特征文件,是这个样子的(都是record file):

audioset的音频特征,是通过VGG模型生成的,是128维的特征值(是上面提到的96*64的向量的进一步的处理)。
audioset的另一部分内容,是样本的描述文件,内容包括每个样本对应的视频ID、起始与结束时间、标签ID(若干个),共有三个描述文件,如下面的截图说明:

那描述文件中的标签ID是怎么关联到具体的含义的呢?下面的截图能说明其中的关联:

图中的标签含义,就是上面提到的“标签文档”,即:
https://github.com/audioset/ontology/blob/master/ontology.json
以上,介绍了如何获取音频特征数据集的问题,接下来,就是训练模型的事情。
(二)训练模型
对于不同的样本格式,选择不同的训练模型。
比如对于audioset,可以选择YouTube-8M训练模型,对应的开源的启动项目是:
https://github.com/google/youtube-8m
这个youtube-8m项目,训练样本可以包括audioset跟youtube-8m的数据集。而对于自定义的样本格式,就需要在开源项目的基础上自行修改。youtube-8m基于tersorflow,而自行修改的项目一般也是基于tensorflow或更抽象的tflearn。
在训练模型与训练样本准备好后,就可以开始训练的工作,训练的过程会产生系列的checkpoint,也就是一系列的预测模型,这时应该用测试样本就行检测,寻找到最佳的预测模型,这个预测模型就是最终实用的机器。
机器学习的实现过程,包括特征提取、数据集生成、训练模型生成与调整、分类样本的收集,等等,涉及到很多处理细节,这里不作展开了。
总结一下,本文简单介绍了音频标签化的实现,包括训练样本的准备与训练模型的确定这两部分的内容,这里提供了一个实现的思路,但未提及更多相关细节的处理。
音频标签化1:audioset与训练模型 | 音频特征样本的更多相关文章
- 音频标签化2:youtube-8m项目的训练、评估与测试
之前小程介绍了使用机器学习的办法来解决"音频标签化"的问题,并且提到了训练样本audioset跟youtube-8m的dataset,而训练模型上也提到了youtube-8m的模型 ...
- 音频标签化3:igor-8m项目的训练、评估与测试
上一节介绍了youtube-8m项目,这个项目以youtube-8m dataset(简称8m-dataset)样本集为基础,进行训练.评估与测试.youtube-8m设计用于视频特征样本,但实际也适 ...
- HTML5之Audio音频标签学习
HTML5中的新元素标签 src:音频文件路径. autobuffer:设置是否在页面加载时自动缓冲音频. autoplay:设置音频是否自动播放. loop:设置音频是否要循环播放. control ...
- H5 音频标签自定义样式修改以及添加播放控制事件
说明: 需求要求这个音频标签首先要是可适配移动端浏览器的,音频样式就是参考微信做的. 最终效果如下: 具体实现 思路: H5 的 <audio> 标签是由浏览器负责实现默认样式的.所以不同 ...
- Html5中 视频 音频标签 进度条问题
最近项目中使用Html5的video和audio标签来在线播放视频和音频文件,但是遇到个奇葩的问题,页面上播放之后进度条无效, 查看w3c之后发现html代码并没有什么不同,之后猜想如果用静态的htm ...
- HTML5视音频标签参考
本文将介绍HTML5中的视音频标签和对应的DOM对象.是相关资料的中文化版本,可以作为编写相关应用的简易中文参考手册. 一些约定 所有浏览器:指支持HTML5的常见桌面浏览器,包括IE9+.Firef ...
- H5 <audio> 音频标签自定义样式修改以及添加播放控制事件
H5 <audio> 音频标签自定义样式修改以及添加播放控制事件 Dandelion_drq 关注 2017.08.28 14:48* 字数 331 阅读 2902评论 3喜欢 3 说明: ...
- HTML5新增的音频标签、视频标签
我们所说的H5就是我们所说的HTML5中新增的语言标准 一.音频标签 在HTML5当中有一个叫做audio的标签,可以直接引入一段音频资源放到我们的网页当中 格式: <audio autopla ...
- IIS 配置 FTP 网站 H5 音频标签自定义样式修改以及添加播放控制事件
IIS 配置 FTP 网站 在 服务器管理器 的 Web服务器IIS 上安装 FTP 服务 在 IIS管理器 添加FTP网站 配置防火墙规则 说明:服务器环境是Windows Server 200 ...
随机推荐
- 本机连接Spark Standalone--最简单的spark调试方式
为了既能远程连接spark 查看ui 又能本地练习 安装简单 去官网 http://spark.apache.org/downloads.html 选择对应版本下载 tar包 解压 tar ...
- Idea创建简单Java Web项目并部署Servlet
1.打开Idea,创建JAVA Web项目 在WEB-INF目录下创建classes和lib文件夹 配置编译输出路径为刚才新建的classes文件夹 配置依赖jar包加载路径 添加tomcat ser ...
- leveldb 学习记录(五)SSTable格式介绍
本节主要记录SSTable的结构 为下一步代码阅读打好基础,考虑到已经有大量优秀博客解析透彻 就不再编写了 这里推荐 https://blog.csdn.net/tankles/article/det ...
- 模板学习实践二 pointer
c++ template学习记录 使用模板将实际类型的指针进行封装 当变量退出作用域 自动delete // 1111.cpp : 定义控制台应用程序的入口点. // #include "s ...
- 设置DataGridView中表头颜色
默认的DataGridView表头颜色实在不是太好看,想设置下,上google搜了一通, 都说这样设置 this.dataGridView1.ColumnHeadersDefaultCellStyle ...
- opencv源码编写规则
OPENCV作为一种开源的计算机视觉库,我们有必要去了解这个库的一些编码格式及文件结构. 1.文档命名规则 必须将所有功能放入一个或多个.cpp和.hpp文件到OpenCV的相应模块中,或者如果贡献的 ...
- MySQL与SQL语句的操作
MySQL与SQL语句的操作 Mysql比较轻量化,企业用的是Oracle,基本的是熟悉对数据库,数据表,字段,记录的更新与修改 1. mysql基本信息 特殊数据库:information_sche ...
- (转载)linux 常用命令
出处:http://www.cnblogs.com/vamei $ 命令行提示符 粗体表示命令 斜体表示参数 filename, file1, file2 都是文件名.有时文件名有后缀,比如file. ...
- common-io 文件监听例子
package com.junge.spring.demo.commonio; import org.apache.commons.io.monitor.FileAlterationListenerA ...
- 杂七杂八的JavaScript
一.input 焦点定位 1.定位input:(this.$refs.searchInput as HTMLInputElement).focus(); 2.定位search,根据css选择器: ...