一种归一化算法,解决使用音效时音乐声音忽大忽小的问题。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
factionstrue
V2EX    程序员

一种归一化算法,解决使用音效时音乐声音忽大忽小的问题。

  •  
  •   factionstrue 342 天前 via Android 3299 次点击
    这是一个创建于 342 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前使用酷狗音乐的时候,每次开启自定义音效,酷狗播放的声音就会忽大忽小。当时不懂什么原因,直到我自己开发软件才搞明白。

    酷狗使用的是对一组数据归一化的算法,这组数据不是仅是歌曲的一小部分,为避免和酷狗一样的问题,搞了对一首歌曲全部数据归一化的算法。

    算法详细描述地址

    我还有一个小问题,就是网易音乐之类的软件是用用的什么算法?为什么可以没有噪音?

    手机发表,有误请见谅

    第 1 条附言    342 天前
    补充一下情况,软件地址: https://github.com/ZTFtrue/MonsterMusic

    调音效使用的 IIR 算法, 算法处理完成以后, PCM Data 有些数据绝对值会大于 1 ,一般框架文档会这么处理,

    ```
    if (floatBuffer[i] > 1.0f) {
    floatBuffer[i] = 1.0f;
    } else if (floatBuffer[i] < -1.0f) {
    floatBuffer[i] = -1.0f;
    }
    ```

    这种处理方式就会引起噪音。

    不同频率见响度差距太大,大于 1 的数字就特别多。

    和一首歌曲的整体响度关系不大,和其它歌曲没有关系,主要是用来消除噪音。
    15 条回复    2024-12-24 10:23:57 +08:00
    skallz
        1
    skallz  
       342 天前
    b 站有做,视频声音保持一致的音量,不知道怎么做的,可以搜一下 b 站有没有出技术文章,哈哈
    ccpp132
        2
    ccpp132  
       342 天前   1
    根据音频的响度给音频加 limiter 改变音量。平台搞这种搞的不好的话,对音频工作者来说是一种灾难
    linearxian
        3
    linearxian  
       342 天前
    本科毕业了吗
    factionstrue
        4
    factionstrue  
    OP
       342 天前 via Android
    @ccpp132 你这是什么算法?关键在调整音效后,有些数字会绝对值超过 1 ,有些软件都是直接变成正或者负 1 。

    @linearxian ???
    azure233
        5
    azure233  
       342 天前
    搞音乐的应该懂 现在有各种不同的效果器来处理声音 压缩器 限制器等等 最重要的是看平均响度而不是峰值响度 所以单纯的归一化并不能平衡声音响度
        6
    SuancaiFish  
       342 天前
    可以用 upwards/downwards compressor ,但是,应该考虑不应该是,平衡两首歌之间的响度差别么,一首歌,他的响度峰值都是制作人设计好的,和情绪起伏一样,也没必要改动
    SuancaiFish
    ccpp132
        7
    ccpp132  
       342 天前
    @factionstrue @factionstrue 音频处理是一个水很深的领域,发展了很多年了。国外一般会找有经验的工程师来参与相关算法的设计,音频质量的控制比较复杂,还要考虑人耳听觉的特性,加上很多人都听不太出来好坏。国内也不太重视这些。
    你感兴趣的话可以在 b 站搜[捣鼓音符的小胖] 他做了一系列关于控制音频响度的科普,我感觉对非相关专业人士来说足够全面了。
    fgodt
        8
    fgodt  
       342 天前   1
    简单来说所有音频处理都有一个类似 agc 的模块,每个平台将响度控制在一个合适的值(类似-3db ),超过了 1 的值,在音频领域可以用很多方式来解决 1.动态压缩可以参考 apple 的 dynamics processor ,2. limiter
    linearxian
        9
    linearxian  
       342 天前
    @factionstrue 你要是想平衡响度,那就去翻翻数字信号处理的书,或者看看论文,比如基于心理响度,做个贝叶斯优化。不要在这里胡乱发帖,以为做个基于阈值规则的除以电平最大值,就跑来发帖,还硬要写英语,最后还沾沾自喜“Nevertheless, from a user experience perspective, I think this remains the best solution available.”,很难不想让人不来怼你。另外,IIR 是用来做 EQ 的,不是用来调音量的。
    factionstrue
        10
    factionstrue  
    OP
       342 天前
    @linearxian 我就是做 EQ 的啊,只不过归一化算法解决了噪音问题,会带来声音响度变化的问题,我设计的算法解决了这个声音响度变化的问题。


    `I chose to use an IIR filter to implement the audio equalizer`

    我现在的问题是:不使用归一化算法如何解决噪音?
    azure233
        11
    azure233  
       342 天前   1
    看了你的更新 这部分逻辑恰恰就是削波失真 hardclip 的原理 你说的会引起噪音其实就是因为波形超出了信号范围 音频被削波了 所以通常都会引入 limiter 来防止出现削波的情况 ![hardclip]( https://forum.renoise.com/uploads/default/original/2X/6/67da09029747bc86340de35d71bb6f6074288abb.png)
    factionstrue
        12
    factionstrue  
    OP
       342 天前
    @azure233 好像就这个原因,我明天看看。
    kp1nz
        13
    kp1nz  
       342 天前
    不妨看一下 Sound Lock
    https://www.3appes.com/sound-lock/
    lijiangang886
        14
    lijiangang886  
       342 天前
    @skallz #1 原文:“b 站有做,视频声音保持一致的音量,不知道怎么做的,可以搜一下 b 站有没有出技术文章,哈哈”
    ======
    回复:看了一眼我这里是默认开启的,然而似乎并没有多显著的效果,相当多收音效果垃圾的程序员自录技术视频正常音量该听不清的还是听不清 :P
    mogita
        15
    mogita  
       342 天前 via iPhone
    你是不是在找:母带技术。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5695 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 03:03 PVG 11:03 LAX 19:03 JFK 22:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86