2021 | 中国科学技术大学第八届信息安全大赛 | General
p😭q
题目¶
学会傅里叶的一瞬间,悔恨的泪水流了下来。
当我看到音频播放器中跳动的频谱动画,月明星稀的夜晚,深邃的银河,只有天使在浅吟低唱,复杂的情感于我眼中溢出,像是沉入了雾里朦胧的海一样的温柔。
这一刻我才知道,耳机音响也就图一乐,真听音乐还得靠眼睛。
(注意:flag 花括号内是一个 12 位整数,由 0-9 数位组成,没有其它字符。)
generate_sound_visualization.py
解题思路¶
- 首先需要获取 GIF 中的数据。看到
write_gif()
函数猜想应该有逆函数,于是找到了 bunkahle/gif2numpy。可惜使用其他音频生成的 GIF 进行测试的时候,发现读取的数据有损失,最后还是使用了 PIL power_to_db
和melspectrogram
分别有逆函数db_to_power
和mel_to_audio
,只要获得spectrogram
(时频谱) 就可以了- 时频谱图(语谱图),横轴为时间,纵轴为频率,颜色表示幅值
-
分析
gif_data
的生成过程(直接使用其他音频对比spectrogram
和gif_data
更直观)gif_data
为四维数组- 第一维为帧,代表时间
- 第二维为图像横向数据,即不同频率
- 第三维为图像纵向数据,即各频率的强度
- 第四维是像素点 RGB 值
-
转换 GIF 数据
-
生成音频文件,打开做个英语听力就可以了 XD
参考资料¶
最后更新:
2021年11月5日 17:31:11
Contributors: