0%

最近开始入门计算机自动作曲领域(算法作曲(algorithmic composition)或称自动作曲(automated composition))。计算机自动生成音乐的目标有节奏和旋律、和声/和弦、伴奏(acompaniment)、复调(counterpoint)、改编(arrangement)等。它的实现一般都是基于概率理论的(或者说其数学本质就是一个概率问题):假设旋律(一段包含音高的时间序列)服从某种概率分布,求解这个分布的近似解(或者加上和声,求解它们的联合概率分布模型)。

Magenta 是Google Brain团队使用深度学习研究自动作曲的开源项目,本文将简单描述使用Magenta生成MIDI音乐的过程。

Read more »

音的四种性质

音乐是由音构成的,而音作为一种物理现象,是由于物体的振动而产生的。物体振动产生音波,音波通过空气作用于我们的听觉器官并传送至大脑,我们就产生音的感觉。在自然界中存在着各种各样许许多多种声音,这些声音我们有的能听到,有的则听不到。我们人耳所能听到的声音,大致在每秒钟振动11—20000次的范围之内,而在音乐中所使用的音,一般只限于每秒振动27—4100次这个范围之内,而且大都是易于分辨的有限的一些音。根据音的物理属性,音有四种性质,即:

  • 音高(Pitch)
  • 时值(Note value)
  • 强弱(Dynamics)
  • 音色(Timbre)

音的四种性质,在音乐表现中,都有着充分的体现,如由于音色的不同,我们才能区分各种不同的乐器和人声。由于音有高有低,有长有短,有强有弱,我们才能写出丰富多彩、多种多样优美的旋律和动听的和声。但在音的四种性质中,音的高低和长短却有着更加突出的重要作用。比如,一支旋律无论大声唱或小声哼,用小提琴拉或用小号吹,它的基本形象并不会有什么大的改变,若将音高或长短稍加变动,音乐形象立刻就会不同程度地被破坏。

Read more »

Weka是一个轻量级的开源数据挖掘工具(used in GUI or called from code),在简单使用一些机器学习算法或者进行一些实验性的探索时很好用。

Read more »

最近的实验中有许多音频处理的工作,使用FFmpeg较为频繁,本文用于记录实验中使用过的操作(官方文档)以及其中遇到的一些问题(感谢DavidAQ的答疑解惑)。

Read more »

最近的实验需要做一个桌面小程序来收集实验信息,决定选用跨平台的Python来写。
Python图形界面编程中常用的工具包有:

Read more »

问题定义

本文使用电影评分推荐的例子来解释两种推荐系统的工作原理,电影推荐的问题可以描述为:
已知一些用户对一些电影的评分,预测用户对未评价电影的评分。

用户1 用户2 用户3 用户4
电影1 5 5 0 0
电影2 5 ? ? 1
电影3 ? 4 0 ?
电影4 0 0 4 5
电影5 0 0 4 ?
Read more »

使用高斯分布探测异常值

假设异常特征之间相互独立且\(x_i \sim N(\mu_i,\sigma_i^2)\),则\(p(x)=\prod{p(x_j;\mu_j,\sigma_j^2)}\)

  1. 选择标识异常的特征\(x_i\);
  2. 学习参数\(\mu_1,…,\mu_n, \sigma_1^2,…,\sigma_n^2\)
  3. 对于测试点\(x\),计算\(p(x)\),若\(p(x)<\epsilon\)则报异常

可使用混淆矩阵评估效果,并使用交叉验证集来选择\(\epsilon\)。

Read more »

K-means

K-means是一个常用且有效的聚类算法。它的算法可以描述为:

1
2
3
4
5
6
7
8
9
10
Firstly randomly initiallize the K centroids mu1,mu2,...,muk;
Repeat{
% Cluster assignment step
for i = 1 to m
ci = index of cluster centroid cloest to xi;
% Move centroid
for k = 1 to k
muk = mean of points xs assigned to cluster k;
}

Read more »