Python3+叠加两个音频文件,实现混音

Python3+叠加两个⾳频⽂件,实现混⾳
将两个单声道的⾳频⽂件叠加成⼀个新的⾳频⽂件。
实现:a + b = c(新)
同理,如果⽤ c - b 可以得到⽂件a
同理,也可以将多个单声道⾳频⽂件叠加到⼀起。
注意:
两个⽂件要是相同声道的⽂件,这⾥的代码只适⽤1声道的。
两个⾳频⽂件的rate也要是相同的。
当两个⾳频⽂件的长度不同,需要将较短的⾳频⽂件补上静⾳数据,这⾥都是将静⾳添加到了⾳频⽂件后。
import os
import wave
import numpy as np奇瑞b14
import pyaudio
file1 = os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(__file__))), '⾳频⽂件/demo1.wav')
file2 = os.path.join(os.path.abspath(os.path.dirname(os.path.dirname(__file__))), '⾳频⽂件/demo2.wav')
f1 = wave.open(file1, 'rb')
f2 = wave.open(file2, 'rb')
# ⾳频1的数据
params1 = f1.getparams()
nchannels1, sampwidth1, framerate1, nframes1, comptype1, compname1 = params1[:6]
print(nchannels1, sampwidth1, framerate1, nframes1, comptype1, compname1)
f1_str_data = f1.readframes(nframes1)
f1.close()
f1_wave_data = np.fromstring(f1_str_data, dtype=np.int16)
# ⾳频2的数据
params2 = f2.getparams()
nchannels2, sampwidth2, framerate2, nframes2, comptype2, compname2 = params2[:6]
print(nchannels2, sampwidth2, framerate2, nframes2, comptype2, compname2)
f2_str_data = f2.readframes(nframes2)
f2.close()
f2_wave_data = np.fromstring(f2_str_data, dtype=np.int16)
# 对不同长度的⾳频⽤数据零对齐补位
if nframes1 < nframes2:
length = abs(nframes2 - nframes1)
temp_array = np.zeros(length, dtype=np.int16)
rf1_wave_data = np.concatenate((f1_wave_data, temp_array))
rf2_wave_data = f2_wave_data
elif nframes1 > nframes2:
length = abs(nframes2 - nframes1)
temp_array = np.zeros(length, dtype=np.int16)
rf2_wave_data = np.concatenate((f2_wave_data, temp_array))
rf1_wave_data = f1_wave_data
else:
rf1_wave_data = f1_wave_dataKU波可调电衰减器
rf2_wave_data = f2_wave_datacapitel
# ================================
# 合并1和2的数据
new_wave_data = rf1_wave_data + rf2_wave_data
new_wave = new_string()金书家
p = pyaudio.PyAudio()东北电力大学成人教育学院
CHANNELS = 1
FORMAT = pyaudio.paInt16
RATE = 44100
# 实现录⾳
def record(re_frames, WAVE_OUTPUT_FILENAME):    print("开始录⾳")
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')    wf.setnchannels(CHANNELS)
wf._sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(re_frames)
大庆教育论坛wf.close()
print("关闭录⾳")
record(new_wave, 'demo1+2.wav')

本文发布于:2024-09-21 12:33:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/202245.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:论坛   需要   补位   衰减器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议