使用librosa对音频进行加载拼接截取叠加等操作

注意:librosa只能读取wav格式音频文件

代码如下

import numpy as np
import librosa

# 1.加载音频文件
audio_path1 = './audio1.wav'
y1, sr1 = librosa.load(audio_path1)
dur1 = librosa.get_duration(y1, sr=sr1)
print('数据x类型和采样率sr类型', type(y1), type(sr1))
print('数据x尺寸和采样率', y1.shape, sr1)
print('该音频的时长为:', dur1)

audio_path2 = './audio2.wav'
y2, sr2 = librosa.load(audio_path2)
dur2 = librosa.get_duration(y2, sr=sr2)
print('数据x类型和采样率sr类型', type(y2), type(sr2))
print('数据x尺寸和采样率', y2.shape, sr2)
print('该音频的时长为:', dur2)

# 2.音频拼接
audio_dst = np.hstack((y1, y2))
print('数据x尺寸和采样率', audio_dst.shape)
librosa.output.write_wav('./拼接.wav', audio_dst, sr2)

# 3.音频截取
start = 12
duration = 20
stop = start +duration
audio_dst = y2[start*sr2:stop*sr2]
librosa.output.write_wav('./截取-2.wav', audio_dst, sr2)

# 4.音频叠加
num_min = min(len(y1), len(y2))
num_max = max(len(y1), len(y2))
audio_dst = np.zeros(num_max)
for i in range(num_max):
    if i<num_min:
        audio_dst[i] = y1[i] + y2[i]
    else:
        if len(y1)>=len(y2):
            audio_dst[i] = y1[i]
        else:
            audio_dst[i] = y2[i]
librosa.output.write_wav('./叠加.wav', audio_dst, sr2)

# 5.生成静音音频
num = 3*sr2
audio_dst = np.zeros(num)
librosa.output.write_wav('./静音.wav', audio_dst, sr2)

# 6.调整音频音量
librosa.output.write_wav('./调整音量.wav', y2*0.1, sr2)

结果展示

在这里插入图片描述

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值