首页 > 编程语言 >四种音频混音算法

四种音频混音算法

时间:2024-12-10 16:24:07浏览次数:3  
标签:音频 32767 sig1 算法 sig2 混音 out

此篇文章在2022年11月18日被记录

最近需要混音算法,上网查阅了四种常用的混音算法,用python运行来做测试,测试完成的语音数据放在结尾可以下载

混音算法一:加权平均

这种方法很简单,直接将两个PCM样本相加,为了防止溢出再除以二,但是这种方式会导致声音细节丢失声音会变小,并且混入通道数越多,声音衰减越严重,毕竟原始音频直接右移了八位,实际测试下来也是如此,实现方法为:

for i in range(0,sample_nums):
    sig_out[i] = (sig1[i] +sig2[i])/2
#这里的sig_out为最终输出的PCM,sig1和sig2为原始数据,后面同理

混音算法二:newlc中的一段算法

这是广泛使用的一种混音算法,公式为:C=A+B-(A*B/32767),我推理不出来,谁能推理一下这个公式请在下方留言,真是不知道啥意思,效果也不错,实现方式为:

for i in range(0,sample_nums):
    if( sig1[i] < 0 and sig2[i] < 0):
        sig_out[i] = sig1[i]+sig2[i] - (sig1[i] * sig2[i] / -(32767))
    else:
        sig_out[i] = sig1[i]+sig2[i] - (sig1[i] * sig2[i] / (32767))

混音算法三:自适应混音加权(衰减因子法)

这种方法的实现原理是先设定一个系数为1,设定为f,将PCM直接相加后乘以f,如果溢出,下一个样本就降低f,如果没有溢出,后面的样本计算时就增大f,达到一个动态调整的效果。实际测试效果也不错,但是直觉感觉这种方法PCM样本数越多越好,太少的话噪声可能比较大,实现代码如下:

for i in range(0,sample_nums):
    temp = sig1[i] + sig2[i]
    out_put = temp*f
    if(out_put>32767):
        f = 32767/(out_put)
        out_put = 32767

    if(out_put<-32768):
        f = -32768/(out_put)
        out_put = -32768
    
    if(f<1):
        f+=(1-f)/32
    sig_out[i] = out_put

混音算法四:时间片分割法

时间片分割法就是将两段音频交替混合,不做加减运算,实际测试这种方式噪音较大,实现方式如下:

for i in range(0,sample_nums):
    if(i%2 == 0):
        sig_out[i] = sig1[i]
    else :
        sig_out[i] = sig2[i]

标签:音频,32767,sig1,算法,sig2,混音,out
From: https://www.cnblogs.com/shumei52/p/18597556

相关文章

  • 古早的遗传算法碰到LLM->AutoDAN Generating Stealthy Jailbreak Prompts onAligned L
    师兄推给我的一篇ICLR,抽出时间阅读整理了附录前的内容......
  • 街面环卫算法视频分析服务器流动商贩检测:监控安装好,添加摄像机不出图像怎么办?
    在弱电工程中,监控摄像机的安装和调试是确保整个系统正常运行的关键步骤。然而,在实际操作过程中,工程师们常常会遇到监控摄像机添加后不出图像的问题,这不仅影响监控效果,也可能导致安全漏洞。针对这一常见问题,本文将提供一系列的排查和解决方案,帮助快速定位问题并恢复监控画面。以下......
  • 智慧小区算法视频分析服务器电瓶车进入电梯:关于电梯视频监控无线网桥的安装调试过程及
    在现代视频监控系统中,无线传输技术因其灵活性和便捷性而变得越来越重要,尤其是在复杂的环境如电梯系统中,无线网桥的应用更是显得尤为关键。设备连线电梯网桥出厂自带POE电源,电源上的POE口使用网线连接到设备上的POE口即可给设备进行供电,机房端(接收端)POE电源LAN口(或设备上的LAN1/L......
  • 算法网关视频分析网关客流统计:视频监控系统前端建设(立杆+设备箱+布线+取电)知识分享
    在构建一个高效、可靠的视频监控系统时,前端点位的建设是基础且关键的一步。这不仅涉及硬件的安装和配置,还包括了布线、取电等多个方面的细节。以下是对视频监控前端点位建设的详细说明,包括立杆建设、设备箱建设、前端布线和前端取电等关键步骤。这些步骤的合理执行对于确保监控系......
  • 常见的排序算法
    目录1.冒泡排序2.选择排序3.插入排序4.希尔排序5.递归6.归并排序7.快速排序排序的稳定性1.冒泡排序1.比较相邻的元素,如果前一个元素比后一个元素大,则交换这两个元素的位置。2.每一对相邻元素如此反复,从开始的第一对元素到结尾的最后一对元素。最终最后的位置就是......
  • Python简化算法工具——“按位运算”
    一、六种常见的“按位运算”1.与(&)运算运算规则:对两个整数对应的二进制位进行操作,当两个相应的二进制位都为1时,该位的结果才为1,否则为0。a=5#0101b=7#0111print(a&b)#a&b=0101#输出对应的十进制数:52.或(|)运算运算规则:只要两个相应二进制位中有一个为1,该位的结果就为1......
  • 最小生成树算法(Prim算法 + Kruskal算法)
    最小生成树(MST)算法完整版万字原文见史上最全详解图数据结构加权无向图中,最小生成树是一个包含图中所有节点的子图树———>包含图中所有节点最小———>树中的边权之和最小1.Prim算法(最小生成树)算法原理:1.贪心算法2.从一个起始点开始,逐步选择与当前......
  • 图常见算法大全( 三种遍历算法 + 三种最短路径算法 + 两种最小生成树)
    图的经典算法完整版万字原文见史上最全详解图数据结构一、图的遍历算法1.voidDFS(intstartVertex);2.voidBFS(intstartVertex);3.voidTopologicalSort();(两种实现方式)1.DFS(深度优先搜索)算法原理是一种用于遍历或搜索图(包括树)中节点的算法。其基本思想......
  • 【数据结构与算法】回溯算法:LeetCode“排列问题” 求解,解释并模拟递归+回溯的遍历过程
      【作者自述:记录学习笔记,既然写了就让更多的人看到吧!欢迎大家关注交流学习,一步一个脚印持续更新!】【更多推荐笔记】【数据结构与算法】动态规划:解密“完全背包问题”的真相!附LeetCode四大问题的实现-CSDN博客【数据结构与算法】动态规划:解密“0-1背包问题”的真相!附LeetC......
  • 成为大厂算法工程师,有什么条件?如何快速拿到offer
    对求职者来说,能成为一名大厂的算法工程师,无疑是职业生涯的巅峰。毕竟,互联网大不同厂工种薪资排序,大体是算法>工程>产品>运营>其他,同职级的员工,算法的薪水可能是运营人员的一倍,甚至还要高。目前,主流互联网大厂的算法岗位一般有搜索、广告、推荐(统称搜广推)算法;NLP(自然语言处......