今天连看三篇论文,不是很细致地看,也没有具体去实现,只是大概明白了一些新思路。这三篇论文,一篇概述了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图像特征的音乐序列生成】如何生成旋律(大纲),以及整个项目的全部流程的更多相关文章

  1. 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件

    这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...

  2. 【Python图像特征的音乐序列生成】图像特征在旋律生成中有什么用

    jishude 首先援引一个资料网页:http://www.cosmosshadow.com/ml/%E5%BA%94%E7%94%A8/2016/03/01/%E9%9F%B3%E4%B9%90%E ...

  3. 【Python图像特征的音乐序列生成】关于数据集的分享和样例数据

    数据集还在制作中,样例数据如下: 我将一条数据作为一行,X是ID,O代表了情感向量,S是速度,是一个很关键的参数,K是调式,M是节拍,L是基本拍.后面是ABC格式的序列,通过embedding化这些音 ...

  4. 【Python图像特征的音乐序列生成】生成伴奏旋律(附部分代码)

    做了半天做的都是一些细枝末节的东西,嗨呀. 伴奏旋律是Ukulele和弦,MIDI发音乐器是Guitar.在弹唱的时候,Ukulele和弦就是伴奏. 我们以创建<成都>伴奏为例: 节奏型: ...

  5. 【Python图像特征的音乐序列生成】关于mingus一个bug的修复,兼改进情感模型

    mingus在输出midi文件的时候,使用这样的函数: from mingus.containers import NoteContainer from mingus.midi import midi ...

  6. 【Python图像特征的音乐序列生成】关于音乐生成的思路转变

    在前几天的讨论会上,有师兄指出原来的方法实在是很难训练,所以我改进了音乐生成的思路. 首先,我用LSTM生成的一定是一段音乐的序列化表达,那么我就可以用成型的一些数据集去训练LSTM.为了避免生成的音 ...

  7. 【Python图像特征的音乐序列生成】第一阶段的任务分配

    从即日起到7月20号,项目成员进行了第一次任务分配. 赵同学A.岳同学.周同学,负责了图像数据的情感数据集制作,他们根据自己的经验,对图像进行了情绪提取. 赵同学B全权负责向量映射这一块的网络搭建. ...

  8. 【Python图像特征的音乐序列生成】关于小样本的一些思考

    我之前就注意到,深度学习和音乐结合,尤其是从乐理出发进行结合(而不是纯粹的进行音乐生成),是一个尚未被深度挖掘的全新领域.可想而知,这个方向符合我要求的数据肯定是要自己搜集了. 自己搜集的数据,在量上 ...

  9. 【Python图像特征的音乐序列生成】思路的转变

    关于生成网络这边,可能会做一个深度的受限玻尔兹曼机,这样可以保证生成的音乐不会太相似. 情绪识别网络和生成网络的耦合,中间变量可能直接就是一个one-hot向量,用来标注指定的情绪,不做成坐标那种难以 ...

随机推荐

  1. VNC协议分析

    VNC协议分析 摘自: http://blog.csdn.net/forever_feng/article/details/4703088 简介 VNC(Virtual Network Computi ...

  2. IE各栏的截图说明

    工具栏  包括  状态栏  命令栏   菜单栏   收藏栏 IE工具 > 工具栏  > 状态栏 有状态栏显示 无状态栏显示 菜单栏 快捷键  alt  可以快速展示  菜单栏    ,查看 ...

  3. JAVA学习笔记——(二)

    今日内容介绍 1.变量 2.运算符 01变量概述 * A: 什么是变量? * a: 变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器 ...

  4. freemaker宏的用法

    freemaker宏 定义:定义一个标签,标签体中可以包含参数,开始标签和结束标签可以包含内容,内容中可以通过${}方式引用标签体中定义的参数 用法:页面引入标签,通过标签可以直接输出标签的内容 He ...

  5. 计算机视觉(CV)前沿国际国内期刊与会议

    计算机视觉(CV)前沿国际国内期刊与会议1.国际会议 2.国际期刊 3.国内期刊 4.神经网络 5.CV 6.数字图象 7.教育资源,大学 8.常见问题 1. 国际会议现在,国际上计算机视觉方面的三大 ...

  6. hdu 5033 buiding(单调栈)

    hdu 5033 buiding(单调栈) 某年某月某天,马特去了一个小镇.这个小镇如此狭窄,以至于他可以把小镇当作一个枢纽.在镇上有一些摩天大楼,其中一栋位于xi,高度为hi.所有的摩天大楼位于不同 ...

  7. 洛谷P1549 棋盘问题(2)

    P1549 棋盘问题(2) 题目描述 在N*N的棋盘上(1≤N≤10),填入1,2,…,N*N共N*N个数,使得任意两个相邻的数之和为素数. 例如:当N=2时,有: 其相邻数的和为素数的有: 1+2, ...

  8. 制作windows启动盘

    ·首先:不要使用“老毛桃,大白菜,u深度,电脑店,u大师”等工具,国产流氓软件了解下. ·工具:UltraISO (自行下载)环境:Windows ·Windows 7微软原版无修改的系统镜像下载地址 ...

  9. JSON解析器之jackson json数据和java对象转换

  10. MySQL创建用户+授权+备份

    ======权限管理====== 我们知道我们的最高权限管理者是root用户,它拥有着最高的权限操作.包括select.update.delete.update.grant等操作. 那么一般情况在公司 ...