gpt4 book ai didi

C++ & MP3均衡器问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:01:15 26 4
gpt4 key购买 nike

我想要一个库或某种命令,它将 MP3 文件位置作为输入(只有 MP3,我不需要 WAV、OGG 或任何其他类型)并播放文件到它的末尾并制作某种均衡器输出,但仅限于数字频率,如(31HZ、62HZ、...、16 KHZ),所有 10 个可用频段,但向我展示不断变化的 10 个变量.. 意思是 31 HZ 频段就像(1, 30, 24, 5, 31, .. 等等) 这适用于每个乐队......但它不需要是 1 - 31 我的意思是它可以是任何东西,但我正在尝试的想法说的是用数字表示每个波段的值并将其与其他波段分开...

与均衡器的想法相同,但不完全是..那么可以吗?有什么可以做到或帮助做到的吗?

附言
- 我不是在制作均衡器。
- 我仍然是 C++ 的 NOOB,所以放轻松,不要说“你这个傻瓜,有一条命令行在 C++ 中是正确的”..非常感谢 :)

最佳答案

SoX (声音交换)可以在播放音频文件时为您提供频率分析。命令

sox myfile.mp3 temp.wav stat --freq

将MP3文件解码为WAV文件;在这样做的同时,它对每个音频 block 执行 4096 点傅立叶变换,并将这样的频率-功率对打印到 stderr:

0.000000  3.079278
10.766602 5.994057
<snip>
22028.466797 14.589799
22039.233398 14.289429
0.000000 0.232025
<snip>

因此,您可以将这些对作为输入,将频率值映射到您选择的波段,然后将每个波段的总数相加。

或者,您可以从开源 MP3 解码器(例如 MAD)开始,然后修改它以进行您想要的分析。 MP3解码可分为两个阶段:

  • 从编码比特流重建频谱
  • 将频谱转换为音频输出

对于您的分析,您只需执行第一阶段,然后将每个均衡器频段的频谱功率相加。因此,与使用 SoX(完成解码,然后转换回频域)相比,此方法需要的处理要少得多,但只会将您绑定(bind)到 MP3(您说这不是问题)。

关于C++ & MP3均衡器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1737996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com