matlab - 音频信号放大
问题描述
我正在尝试编写一个程序,该程序需要两个音频文件并尽可能地匹配另一个。因此,如果我要给程序两个音频文件,其中一个只是另一个的更安静的版本,程序应该放大更安静的一个以匹配另一个。我可以使用哪些功能来实现我正在寻找的东西?我使用了以下代码行,但它平衡了两个信号,但削减了更大的信号。我希望安静的等于响亮的
% creation of signals
N=1024;
n=0:N-1;
x=sin(2*pi*(2^-7).*n);
y=2*sin(2*pi*(2^-7).*n+pi/4);
% justify its power
x1=x/sqrt(mean(x.^2));
y1=y/sqrt(mean(y.^2));
解决方案
您需要获得x
和y
与最大平均值的比率,因为x
这是 0.5,因为y
这是 1。实现此目的的方法:
N=1024;
n=0:N-1;
x=sin(2*pi*(2^-7).*n);
y=2*sin(2*pi*(2^-7).*n+pi/4);
% justify its power
x1=x./(sqrt(mean(x.^2)/(max(mean(x.^2),mean(y.^2)))));
y1=y./(sqrt(mean(y.^2)/(max(mean(x.^2),mean(y.^2)))));
figure()
plot(n,y)
hold on
plot(n,x1)
legend('y','x1')
xlabel('n');
推荐阅读
- twitter-bootstrap - 如何强制一些 .card-img-overlay 内容在底部对齐?
- sql - 将数据附加到拆分的行
- javascript - 如何在 GatsbyJS 节点中添加自定义 GraphQL 参数?
- vba - Access VBA 模块无法从表单获取数据
- python - 在python中计算素数
- amp-html - 带有表单的 AMP 故事页面
- api - Tableau Rest Api 特殊字符
- python - 如何使用opencv填充整个内部轮廓
- nuxt.js - nuxt 构建后更改客户端配置
- node.js - 可以在本地连接到 mongodb atlas,但不能在实时服务器上连接