【文献阅读】深度学习方法指导的旋律游戏程序内容生成

音乐游戏:OSU!4k模式

摘要:将旋律游戏拆分为玩家动作Action和时间序列Timing,使用“fuzzy label”在数据集上得到有效改进。

与一般机器学习任务的区别:

(1)同样的音乐可能会得到不同的beatmap->将难度作为训练参数输入

(2)正负样本比例不均衡的问题->使用“fuzzy label”方法拓展正样本数据集

相关工作:Schluter的音乐起始端点检测、LSTM网络模型、DanceDanceRevolution、Salamon的音乐主旋律分析(用于长按按钮的检测)

数据集:OUS!首页游玩超过10万次的谱面,共1655个谱面,473首歌曲

关于如何设置合理的谱面难度参数:Action组合的复杂程度、密度、速度,判定范围,最大Miss失败计数

特征提取:STFT转音频,三种窗长度23ms,46ms,93ms,每秒100帧采样。短窗能够保留更多的音高pitch和音色timbre信息,长窗能够保留更多的旋律melody和韵律rhythm信息。从27.5Hz到16kHz,80个频段,计算Mel特征。对每帧结果前后添加n帧,一个向量单元是80*3*(2n+1)的维度。

网络模型:

(1)C-LSTM。选n=7,输入是15*80*3,第一层7*3*3维卷积+1*3池化,输出9*26*10;第二层3*3*10维卷积+1*3池化,输出7*8*20;添加一个10单元的one-hot难度参数;输入到两个200单元的LSTM层,激活函数为tanh;通过256和128单元的全连接层;通过Sigmoid得到结果,代表时间戳被选中的可能性。

(2)C-BLSTM。将前后顺序连接的两个LSTM层替换为双向LSTM。

Fuzzy Label:因为1s选择了100帧进行采样,时间戳的粒度大小是10ms,在没有音符的位置记为负样本,整个数据中正样本的比例很低(8%)。一个解决方法是扩大粒度选择,当扩大一倍到20ms时,正样本比例达到了40%,但是丢失了许多节奏信息。Fuzzy label的方法是在存在音符的采样点附近,添加平滑的采样概率。根据不同的平滑标签长度N,由高斯分布计算前后加减N帧的概率,0帧时刻概率为1,+N帧和-N帧概率为0。为此,需要设定采样时的概率阈值t,论文通过最大化F值来选择合适的t。

实验结果:

(1)C-BLSTM随着训练批次的增加出现过拟合。

(2)增加了Fuzzy label的结果比不加的F值高出0.2-0.5左右。

(3)Fuzzy label的长度对F值影响在0.2左右(影响不大)。

(4)前后帧n的数值选择对结果影响不大。

(5)总体方法准确率在0.75-0.85之间。

动作生成:

(1)输入:一个时间戳前的动作,动作的分类:无操作、点击、长按开始、长按结束(4轨道*4维的one-hot矩阵)。难度系数(10维)。密度信息,前后时间戳的时间间隔(两个8位的one-hot矩阵,代表50ms-3200ms)。总计16+10+16=42位。

(2)输出:所有动作的组合,4轨道^4类型=256种。

网络模型:

LSTM64。将三种数据(前帧动作、时间差、密度)输入128+128的LSTM层,最后输出256单元的预测结果。

实验结果:

(1)准确率表现不佳,只有0.4366。

(2)可能与谱面设计思路有关,同一个谱面有多种撰写方式。

——————————————————————————————

AFFCAT复现中…

资源下载: