【Python图像特征的音乐序列生成】如何生成旋律(大纲),以及整个项目的全部流程
今天连看三篇论文,不是很细致地看,也没有具体去实现,只是大概明白了一些新思路。这三篇论文,一篇概述了Decoder-Encoder模型,一篇延伸这个模型,首次提出了Attention机制,最后一篇详细阐述了LSTM和GRU的工作机理。读完之后,我对机器翻译这个领域,还有LSTM的应用,有了更深的认识。
言归正传,说一下生成旋律的原理。
在之前的乐理部分,我们知道了和弦级数和走向的问题,有很多和弦组合在一起能发挥良好的作用。这些好的和弦连接在一起的音序就被成为进行。流行音乐的和弦进行倾向于从根和弦开始,最终再回到根和弦上。这样就能制造一段封闭的四小节或八小节的Loop。大多数曲调都使用这样的张力与解决原则。也知道凭经验,能知道常用的和弦是有感情色彩的(http://www.wenkuxiazai.com/doc/614fe01b52d380eb62946d2a.html).一些和弦的进行,除了遵守必须要遵守的一些规则(比如主和弦的位置),其他的走向都是可以与感情挂钩的。举个例子,
1、C—Am—F—G(参考曲目:蔡琴—恰似你的温柔)
2、C—G—Am—F(参考曲目:Beyond—海阔天空 主歌)
这两个例子都是非常明亮的.
1、Am—F—C—G(参考曲目:黄义达—我懂、set me free)
2、Am—C—G—Am(参考曲目:Beyond—灰色轨迹 主歌)
这两个例子都是比较柔和温婉的。两边不同的主要原因是大小调问题。
来源:(1)http://www.wenkuxiazai.com/doc/614fe01b52d380eb62946d2a.html
(2)https://www.douban.com/note/345221364/
也就是说,我们先定下一个感情基调,再选择一个和弦走向,甚至多个和弦走向,都是有道理的。
但是这种方法是有缺点的,就是大调和小调只能二选一(在短音乐片段中),像大调转小调完成感情变化是很难的事情。《少年锦时》之中有C变成C7和弦的例子,这样的转调应该是很难自动生成的。
下一个话题,怎么根据和弦填写旋律进去?
一言以蔽之:走和弦音作为主音。你可以在你和弦进行中的最高音上增加一些音符,建立你的旋律或者Bassline。这样创造出来的旋律跟随着和弦进行的脚步,因此很容易上口,被人记住。同样根据张力法则,当每个和弦演奏时,耳朵总是会期待下一个和弦和作为主音的最高音。记住,只有当“张力”和弦被解决后,大脑才会觉得满意,才会认为这样的进行是好的。
=========================================================
接下来将怎么通过深度学习捕获这些和弦走向。
首先我们提取大量歌曲中的和弦走向,将其以8个或者16个为一组,作为一条数据,这样可以形成一个封闭的段落,并且也可以演示出变化感。然后我们人工指定这段音乐的情感表达是什么样子的。
之后,我们使用GRU(LSTM的一个变形),根据之前定下的和弦,预测之后出现的和弦,从而生成一条完整的和弦走向。因为经过了充分学习,这个和弦走向很可能就是符合和弦走向要求的。
如果要考虑精度,我们可以人为地将一些经典和弦作为Attention加进去,但是凭我现在的水准,做出这个模型应该不是一件简单的事情。
=========================================================
说一下整个项目的全部流程:
1,输入一张照片。
2,通过Cognitive Service进行图片色调、实体识别。
3,转化成一个向量,通过卷积神经网络进行情感分类。
4,将情感向量输入LSTM,进行和弦生成。
5,根据和弦,再通过一个其他的网络生成主旋律(这一块还没想好具体怎么做)。
数据集的准备,是要准备两个数据集(后期可能还要第三个),分别标注了图片-情感,情感-和弦走向,这样才能很好地训练网络。
下一篇博文,将会展示数据集的准备和LSTM网络搭建。
【Python图像特征的音乐序列生成】如何生成旋律(大纲),以及整个项目的全部流程的更多相关文章
- 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件
这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...
- 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用
jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...
- 【Python图像特征的音乐序列生成】关于数据集的分享和样例数据
数据集还在制作中,样例数据如下: 我将一条数据作为一行,X是ID,O代表了情感向量,S是速度,是一个很关键的参数,K是调式,M是节拍,L是基本拍.后面是ABC格式的序列,通过embedding化这些音 ...
- 【Python图像特征的音乐序列生成】生成伴奏旋律(附部分代码)
做了半天做的都是一些细枝末节的东西,嗨呀. 伴奏旋律是Ukulele和弦,MIDI发音乐器是Guitar.在弹唱的时候,Ukulele和弦就是伴奏. 我们以创建<成都>伴奏为例: 节奏型: ...
- 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型
mingus在输出midi文件的时候,使用这样的函数: from mingus.containers import NoteContainer from mingus.midi import midi ...
- 【Python图像特征的音乐序列生成】关于音乐生成的思路转变
在前几天的讨论会上,有师兄指出原来的方法实在是很难训练,所以我改进了音乐生成的思路. 首先,我用LSTM生成的一定是一段音乐的序列化表达,那么我就可以用成型的一些数据集去训练LSTM.为了避免生成的音 ...
- 【Python图像特征的音乐序列生成】第一阶段的任务分配
从即日起到7月20号,项目成员进行了第一次任务分配. 赵同学A.岳同学.周同学,负责了图像数据的情感数据集制作,他们根据自己的经验,对图像进行了情绪提取. 赵同学B全权负责向量映射这一块的网络搭建. ...
- 【Python图像特征的音乐序列生成】关于小样本的一些思考
我之前就注意到,深度学习和音乐结合,尤其是从乐理出发进行结合(而不是纯粹的进行音乐生成),是一个尚未被深度挖掘的全新领域.可想而知,这个方向符合我要求的数据肯定是要自己搜集了. 自己搜集的数据,在量上 ...
- 【Python图像特征的音乐序列生成】思路的转变
关于生成网络这边,可能会做一个深度的受限玻尔兹曼机,这样可以保证生成的音乐不会太相似. 情绪识别网络和生成网络的耦合,中间变量可能直接就是一个one-hot向量,用来标注指定的情绪,不做成坐标那种难以 ...
随机推荐
- 关于REST的一些想法
REST and RESTful 最近入手了REST,谈谈自己的体会. 所谓REST, 我觉得是一种网址的设计风格.过去我们用Struts 或Spring MVC 时从来没有考虑过URL的设计风格.所 ...
- Object有哪些公用的方法?
Object是所有类的父类,任何类都默认继承Object. public class Demo { public static void main(String[] args) { Object ob ...
- 二十五种网页加速方法和seo优化技巧
一.使用良好的结构 可扩展 HTML (XHTML) 具有许多优势,但是其缺点也很明显.XHTML 可能使您的页面更加符合标准,但是它大量使用标记(强制性的 <start> 和 <e ...
- python 学习笔记8 (模块)
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python 代码段. 把相关的代码 ...
- ue4 代码入门
官网:暴露游戏元素给蓝图 https://docs.unrealengine.com/latest/CHN/Engine/Blueprints/TechnicalGuide/ExtendingBlue ...
- 有线电视网(树形dp)
有线电视网 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树的内部节点.从转播站到转播站以及从 ...
- 洛谷P2814 家谱
P2814 家谱 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系 ...
- Python学习笔记(yield与装饰器)
yeild:返回一个生成器对象: 装饰器:本身是一个函数,函数目的装饰其他函数(调用其他函数) 功能:增强被装饰函数的功能 装饰器一般接受一个函数对象作为参数,以便对其增强 @原函数名 来调用其他函 ...
- hyperledger fabric 1.0.5 分布式部署 (八)
gdb debug peer 程序 在开始我们从 github 上download 下来的源码包,实际上已经包含了可执行的 peer 程序,但是该程序是使用 release 方式编译的,并不支持gdb ...
- TensorFlow高层封装:从入门到喷这本书
目录 TensorFlow高层封装:从入门到喷这本书 0. 写在前面 1. TensorFlow高层封装总览 2. Keras介绍 2.1 Keras基本用法 2.2 Keras高级用法 3. Est ...