不同长度音频混合MATLAB实现

最近学习过程中遇到了将两个不同长度的音频混合起来,即用短的音频作为唱的音频的背景音。查阅相关资料后实现代码如下:

function main()
clear;clc;
[Voice,Fs]=VoiceMix('音频1.wav','音频2.mp3');
sound(Voice, Fs)

function [Voice,Fs]=VoiceMix(FileName1,FileName2)
% 建议:
% FileName1为较长的音频文件,即10s的那个音频文件
% FileName2为较短的音频文件,即如汽笛,打雷等的噪声文件
% Output
% Voice   混合后的音频时域信号
% Fs      混合后的音频时域信号采样频率
[y,Fs] = audioread(FileName1);
[y2,Fs2] = audioread(FileName2);

% 有的音频可能是多通道,统一取一通道
ft = y(:,1);
ft2=y2(:,1);

% 将y2转换成和y一样采用频率的音频
% resample函数将采样频率从Fs2调整到Fs
y3=resample(ft2,Fs,Fs2);

Length=length(y(:,1));
Length2=length(y3(:,1));

if Length>=Length2
    % 随机取得一个长度,将短的音频插入到长的音频中去
    Start=floor(rand*abs(Length-Length2));
    % 音频混合
    Voice=y;
    Voice(Start+1:Start+Length2)=y3+ft(Start+1:Start+Length2);
else
    % 随机取得一个长度,将短的音频插入到长的音频中去
    Start=floor(rand*abs(Length2-Length));
    % 音频混合
    Voice=y3;
    Voice(Start+1:Start+Length)=ft+y3(Start+1:Start+Length);
end

如有错误的地方还请指教。代码及相关音频文件“这里”进行下载。

  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值