【音频处理】从时域和频域上分别改变音频的响度
时域上尝试如原始音频时域如下:假如将所有数据乘上5. 可以发现有些地方都“破音”了。for (int i = 0; i < N; ++i) {in[i] =in[i]*5;}效果如下,频域上的尝试这种操作在频域中也可以做。将时域数据通过DFT转成频域数据,然后在实数部分和虚数部分都乘以相同系数5。for (int i = ...
·
时域上尝试
如原始音频时域如下:
假如将所有数据乘上5. 可以发现有些地方都“破音”了。
for (int i = 0; i < N; ++i) {
in[i] = in[i]*5;
}
效果如下,
频域上的尝试
这种操作在频域中也可以做。
将时域数据通过DFT转成频域数据,然后在实数部分和虚数部分都乘以相同系数5。
for (int i = 0; i < N; ++i) {
out[i][0] *= 5;
out[i][1] *= 5;
}
你可以发现,实际上的效果一模一样。
是否可以只在实数部分或者虚数部分乘系数?
for (int i = 0; i < kOutputSamples; ++i) {
out_[i][0] *= 5;
//out_[i][1] *= 5;
}
实际上的效果,可以看到相对于实际上能量发布发生不均了,并且转成时域时,数据不准确了。本来开头是由一段时间的静音的,现在也有了声音。
结论
时域上数据*N = 频域数据实数部*N and 频域数据虚数部*N
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)