如何在C++中使用fft生成音频频谱? [关闭]

2023-12-02

我想生成一个音频频谱(如这个视频)的 mp3 音频文件。基本上这个问题需要计算音频信号的 fft。我如何用 C/C++ 编程?

我查看了几个开源库,例如FFTW我真的不知道如何使用这些来解决我的问题。任何帮助将不胜感激。提前致谢!


SO 上已经有很多类似/相关的问题,这些问题非常值得一读,因为答案包含很多有用的信息和建议,但本质上你需要这样做:

  • 将音频数据转换为FFT所需的格式(例如int -> float,具有独立的L/R通道);
  • 适用合适窗函数 (e.g. Hann 又名汉宁窗)
  • 应用 FFT(注意:如果使用典型的复数到复数 FFT,则将输入数组中的所有虚部设置为零);
  • 计算前 N/2 个 FFT 输出 bin 的幅度 (sqrt(re*re + im*im));
  • 可选择将幅度转换为 dB(对数)刻度(20 * log10(magnitude) or 10 * log10(re*re + im*im));
  • 绘制 N/2(对数)幅度值。

请注意,虽然 FFTW 是一种非常好且非常快的 FFT,但对于初学者来说可能有点不知所措 - 如果您想将其作为商业产品的一部分,它也非常昂贵。我建议从KissFFT反而。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在C++中使用fft生成音频频谱? [关闭] 的相关文章

  • 尚未注册类型“IServiceProviderFactory[Autofac.ContainerBuilder]”的服务

    当运行以下命令添加数据库迁移脚本时 出现以下错误 dotnet ef migrations add InitialCreate v o Migrations context MyContext 访问 Microsoft Extensions
  • 在 C# 中按元素相乘数组具有意想不到的性能

    我想找到按元素相乘两个数组的最佳方法 这是更广泛项目的一部分 其中性能而不是唯一的考虑因素 我今天开始用 C Linqpad 编写一些函数 因此它还没有以任何方式进行优化 下面代码的输出如下 Environment ProcessorCou
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • 类的成员复制

    在学习 复制成员 概念时 书中给出了如下说法 此外 如果非静态成员是引用 const 或没有复制赋值的用户定义类型 则无法生成默认赋值 我不太明白这个声明到底想传达什么 或者说这个说法指的是哪一种场景 谢谢 该语句与编译器自动为您编写的类
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 在 EnvDTE 中调试时捕获 VS 局部变量

    是否可以使用 EnvDTE 进行 vsix Visual Studio 扩展来捕获本地和调试窗口使用的调试数据 或者可以通过其他方法吗 我想创建一个自定义的本地窗口 我们可以修改它以根据需要显示一些较重的内容 而无需为高级用户牺牲原始的本地
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 为什么温莎城堡试图将我的“内容”和“脚本”文件夹解析为控制器?

    我创建了一个 ASP NET MVC 应用程序 并尝试使用 Castle Windsor 作为我的 IOC 但是 当控制器尝试解析时 我将 内容 和 脚本 放入 controllerName 参数中CreateController Requ
  • Jenkins 总是因 hudson.util.IOException2 失败

    这种情况在一天中不断发生 然后在多个 Jenkins 作业中随机解决 hudson util IOException2 revision check failed on http svn myCompanyRepo com path to
  • 如何以编程方式使用 jersey 正确配置资源

    我正在尝试 Jersey Programmatic Resource Builder API 我能够 配置资源 但是当我得到一个 null ContainerRequestContext 对象时 尝试访问路径参数 可能是什么问题 注意 我使
  • 比较装箱值类型

    今天我偶然发现了我写的一个有趣的错误 我有一组可以通过通用设置器设置的属性 这些属性可以是值类型或引用类型 public void SetValue TEnum property object value if properties pro
  • WCF 服务应用程序和 WCF 服务库之间有什么区别?

    我正在开发 WCF Web 服务 并使用 WCF 服务应用程序模板来执行此操作 创建 WCF 服务应用程序 是否满足此要求 与 WCF 服务应用程序相比 创建 WCF 服务库有哪些优势 服务应用程序包括已为您设置的网站主机 服务库是主机可以
  • 使用 pyodbc 将 docker python 连接到 SQL 服务器

    我正在尝试连接在 docker 容器中运行的 pyodbc python 脚本以登录到 MSSQL 数据库我尝试了各种 docker 文件 但无法建立连接 在构建 docker 或 python 尝试连接时失败 有没有人有一个可用的 doc
  • 如何对 2 个子实体进行分组并获取这两个子实体的总计?

    我想要得到总变体为我的Test Version 0 i e Test Id 100 这是我的表和记录 Test Id Version 100 0 变种 Id Name Type CategoryId 11 Variant1 Diff 2 1
  • 缓存控制的无缓存和必须重新验证之间的区别?

    来自 RFC 2616 http www w3 org Protocols rfc2616 rfc2616 sec14 html sec14 9 1 no cache 如果 no cache 指令未指定字段名称 则缓存 不得使用响应来满足后
  • WIN32与其他c字符串的区别

    我在一个小程序中得到了这段代码来读取文件 ifdef WIN32 unsigned char buffer unsigned char alloca unsigned int ui length else unsigned char buf
  • 数组创建与字符串连接哪种日志记录方法性能更好?

    在传递多段字符串进行日志记录时 最好使用可变参数还是字符串连接 在生产环境中将禁用日志记录 考虑下面的代码 public void log int logLevel String msg if logLevel gt currentLogL
  • 速率限制React客户端向API发出的请求数量

    我在客户端使用 React 和 fetch 向Discogs API 在此 API 中 每分钟最多有 60 个请求的限制 为了管理此Discogs 在响应标头中添加自定义值 例如 剩余请求 已使用的请求 或 最大允许请求 但由于cors 这
  • python解析ip地址文件

    我有一个包含多个 IP 地址的文件 4行txt大约有900个IP 我希望每行输出 1 个 IP 我怎样才能做到这一点 基于其他代码 我想出了这个 但它失败了 因为多个 IP 位于单行上 import sys import re try if
  • 如何从 dbpedia 链接或 URL 检索 XML/RDF 数据?

    最近我一直在尝试学习语义网 对于一个项目 我需要从给定的 dbPedia 链接检索数据 例如http dbpedia org page 柏林 但是当使用 java net URLConnection 检索数据时 我得到了 html 数据 如
  • Chart.js - 折线图中背景的特定部分着色

    我有一张折线图 很像这样 http www chartjs org samples latest charts line basic html 我想给这些区域上色 100 lt y lt 40 and 40 lt y lt 100轻微的红色
  • CLASSPATH 中的值的顺序重要吗?

    我有 2 个单独的 java 程序 一个在 c test 中 另一个在 c test new 中 我可以编译它们而不会出现任何错误 javac 但是当我尝试执行文件 java 时 它显示这样的错误 Exception in thread A
  • 使用 Beautiful Soup Python 模块将标签替换为纯文本

    我在用美丽的汤从网页中提取 内容 我知道有些人问过这个question之前他们都指向美丽的汤 这就是我开始使用它的方式 我能够成功获取大部分内容 但我在内容中的标签方面遇到了一些挑战 我从一个基本策略开始 如果一个节点中有多个 x 字符 那
  • 如何使用 PlaySound() 或任何基本函数/方法在 C++ 中同时播放超过 1 个 .wav 声音?

    我正在尝试制作一款游戏 我需要同时播放许多声音 我知道 v basic 或者只是知道功能 PlaySound to run wav声音 问题在于SND ASYNC我无法同时播放多个声音 但首先播放的声音会在中间跳过并播放下一个声音 有什么方
  • 无法解析符号“持久性”

    我对 Java SpringBoot 和 MySQL 都很陌生 我还在上课 所以这些对我来说没有任何意义 我没有尝试过任何事情 因为我什至不知道从哪里开始 我以为我拥有所有正确的依赖项 但是当我在 Event java 中突出显示红色问题灯
  • mp3 长度(以毫秒为单位)

    我需要一个脚本或命令行工具来获取 mp3 长度 以毫秒为单位 这些文件是用 lame 编码的 64 kbits mono cbr 我为我选择的语言 ruby 寻找了 libmad 但没有发现任何值得注意的东西 def self get au
  • 如何在C++中使用fft生成音频频谱? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想生成一个音频频谱 如这个视频 的 mp3 音频文件 基本上这个问题需要计算音频信号的 fft 我如何用 C C 编程 我查看了几个开源库 例如FFTW我真的不知道如何使用这些