注意: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)