返回顶部
首页 > 资讯 > 后端开发 > Python >Python3+叠加两个音频文件,实现混
  • 614
分享到

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

音频文件两个 2023-01-31 07:01:42 614人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

将两个单声道的音频文件叠加成一个新的音频文件。 实现:a + b = c(新) 同理,如果用 c - b 可以得到文件a 同理,也可以将多个单声道音频文件叠加到一起。 注意: 两个文件要是相同声道的文件,这里的代码只适用1声道的。 两

将两个单声道的音频文件叠加成一个新的音频文件。
实现:a + b = c(新)

同理,如果用 c - b 可以得到文件a

同理,也可以将多个单声道音频文件叠加到一起。

注意:

  • 两个文件要是相同声道的文件,这里的代码只适用1声道的。
  • 两个音频文件的rate也要是相同的。
  • 当两个音频文件的长度不同,需要将较短的音频文件补上静音数据,这里都是将静音添加到了音频文件后。
import os
import wave
import numpy as np
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_data
    rf2_wave_data = f2_wave_data

# ================================
# 合并1和2的数据
new_wave_data = rf1_wave_data + rf2_wave_data
new_wave = new_wave_data.tostring()

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.setsampwidth(p.get_sample_size(FORMAT))
    wf.setframerate(RATE)
    wf.writeframes(re_frames)
    wf.close()
    print("关闭录音")

record(new_wave, 'demo1+2.wav')

--结束END--

本文标题: Python3+叠加两个音频文件,实现混

本文链接: https://lsjlt.com/news/192124.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python3+叠加两个音频文件,实现混
    将两个单声道的音频文件叠加成一个新的音频文件。 实现:a + b = c(新) 同理,如果用 c - b 可以得到文件a 同理,也可以将多个单声道音频文件叠加到一起。 注意: 两个文件要是相同声道的文件,这里的代码只适用1声道的。 两...
    99+
    2023-01-31
    音频文件 两个
  • Python3实现两个Excel文件内容
    最近在工作中,需要人工比对大量的excel格式报表,刚好刚学了Pyhon入门基础知识,想着写个东西练练手,不但能提高代码编写能力,还能减轻工作量,提高工作效率。说干就干,简单的理了逻辑。首先,将目标表和源表的内容分别写入到字典中,Excel...
    99+
    2023-01-31
    两个 文件 内容
  • Thinkphp5实现图片、音频和视频文件的上传功能
    本篇文章为大家展示了Thinkphp5实现图片、音频和视频文件的上传功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先是同步上传,最为基础的上传的方式,点击表单提交之后跳转那种。<!DOC...
    99+
    2023-06-15
  • Java实现在Word中嵌入多媒体(视频、音频)文件
    目录Jar导入(2种方法) 嵌入多媒体文件注意事项Word中可将Office(Word/Excel/PowerPoint)、PDF、txt等文件作为OLE对象插入到文档中,双击该对象...
    99+
    2024-04-02
  • 使用node.js对音视频文件加密的实例代码
    废话不多说了,直接给大家贴代码了,具体代码如下所示: fs.readFile('./downsuccess/'+name+'', {flag: 'r+', encoding: ''}, functio...
    99+
    2022-06-04
    音视频 文件加密 实例
  • Qt音视频开发之视频文件保存功能的实现
    目录一、前言二、效果图三、体验地址四、相关代码五、功能特点5.1 基础功能5.2 特色功能5.3 视频控件5.4 内核ffmpeg一、前言 和音频存储类似,视频的存储也对应三种格式,...
    99+
    2022-12-08
    Qt视频文件保存 Qt视频保存 Qt 文件保存
  • C# VB.NET 实现在Word中嵌入多媒体(视频、音频)文件
    目录引入dll嵌入多媒体文件主要代码步骤解析嵌入效果后的文档效果注意事项引入dll 1.通过NuGet安装dll(2种方法) 1.1可以在Visual Studio中打开“解决方案资...
    99+
    2024-04-02
  • C#实现提取Word中插入的多媒体文件(视频,音频)
    目录dll文件安装(3种方法)提取文件完整代码C#VB.NET在Word中可将文件通过OLE对象嵌入的方式插入到文档,包括Word、excel、PDF、PPT、图片、宏文件、文件包等...
    99+
    2024-04-02
  • C#基于NAudio怎么实现对Wav音频文件剪切
    这篇文章主要讲解了“C#基于NAudio怎么实现对Wav音频文件剪切”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#基于NAudio怎么实现对Wav音频文件剪切”吧!前言C#基于NAudi...
    99+
    2023-06-21
  • 小程序怎么实现播放缓存的音频文件
    本篇内容主要讲解“小程序怎么实现播放缓存的音频文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“小程序怎么实现播放缓存的音频文件”吧!       很多时...
    99+
    2023-06-26
  • Android开发基础实现音频文件的播放详解
    目录前言实现方法最终效果总结前言 上一篇(安卓开发基础——实现最简单的视频播放我们简单的实现了一个播放视频的功能,这一节我们来实现App对音频文件的播放功能...
    99+
    2023-02-06
    Android开发音频文件播放 Android 音频播放
  • 基于WPF实现一个简单的音频播放动画控件
    目录1.实现代码2.效果预览1.实现代码 一、创建AnimationAudio.xaml代码如下 <ResourceDictionary xmlns="http://schem...
    99+
    2024-04-02
  • Python加载文件内容的两种实现方式
    目录一、利用open()函数进行加载二、利用Pandas库中的read_csv()方法进行加载三、示例说到机器学习,大家首先想到的可能就是Python和算法了,其实光有Python和...
    99+
    2024-04-02
  • Android开发中如何实现一个图片中叠加文字功能
    本篇文章为大家展示了Android开发中如何实现一个图片中叠加文字功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。效果图:功能:用户自由输入内容,可手动换行,并且行满也会自动换行。2.可拖动改变图...
    99+
    2023-05-31
    android roi
  • C# 基于NAudio实现对Wav音频文件剪切(限PCM格式)
    目录前言实现代码效果图前言 C#基于NAudio工具对Wav音频文件进行剪切,将一个音频文件剪切成多个音频文件 注:调用方法前需要导入NAudio.dll或者在NuGet程序管理器搜...
    99+
    2024-04-02
  • 怎么用vbscript实现在文本文件中搜索两个项
    这篇文章主要介绍了怎么用vbscript实现在文本文件中搜索两个项,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:Const ForReading ...
    99+
    2023-06-08
  • python实现多个视频文件合成画中画效果
    本文实例为大家分享了多个视频文件合成画中画效果的python代码,供大家参考,具体内容如下 Step 1 从视频中分离出音频(MP4->mp3) def separateM...
    99+
    2024-04-02
  • 批处理如何实现把两个文件中的不同之处提取到某个文件里
    这篇文章将为大家详细讲解有关批处理如何实现把两个文件中的不同之处提取到某个文件里,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。代码如下:@echo off :: 把两个文件中...
    99+
    2023-06-08
  • Python实现光速定位并提取两个文件的不同之处
    目录比较Excel比较Word结束语如果你经常与Excel或Word打交道,那么从两份表格/文档中找到不一样的元素是一件让人很头疼的工作,当然网上有很多方法、第三方软件教你如何对比两...
    99+
    2024-04-02
  • SpringBoot怎么加载多个配置文件实现dev、product多环境切换
    这篇文章主要介绍“SpringBoot怎么加载多个配置文件实现dev、product多环境切换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么加载多个配置文件实现dev、pro...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作