实时输入音频信号 Processing/FFT
Signal Processing/FFT On Live Input Audio
有人告诉我这属于编程,而不属于信号处理子交换。
有没有办法对 Windows 中的现场音频进行频谱分析(特别是 FFT)?
我希望能够从麦克风读取音频,并在屏幕上显示结果傅里叶变换。
如果我可以在出现一组特定的 FFT 特性时执行程序,这也会很有用。
谢谢大家!
要做到这一点,您有几个选项,主要取决于您最喜欢的 language/framework。我不确定您对信号处理有多陌生,所以我会建议一些选择。
可视化编程
这些都是可视化编程环境,实际上不需要编写任何代码,但是 Simulink 和 Pure Data 都需要 运行 时间让用户 运行程序。
Simulink(付费)
MathWorks/Matlab 的可视化编程工具,实时效果非常好(我认为)。使用 Audio System Toolbox, you can easily capture microphone input from your system in realtime and carry out the FFT 处理,绘制频谱,如您所说,如果满足某些 FFT 条件,则进行一些进一步处理。
这不是免费软件,需要安装 Matlab/Simulink 运行-时间才能使用。您还可以根据需要使用 Matlab 的 .m 语言编写您的处理脚本(Java、JS 和 C 之间的交叉)。
Max MSP(付费)
与 Simulink 类似的版本,但作为独立的可视化编程工具开发。这将使您拥有与 Simulink 类似的自由度,但我认为重新分发会更容易。
您可以在 MAX 中 compile MAX MSP into executables to give to someone straight away. Here is a reference to get you started on using the FFT。同样,这不是免费的,但如果您想了解更多信息,那么我认为它物有所值(如果我记得它不是太贵的话)。
如果您需要比内置模块更多的自定义处理,我相信您可以使用 C 或 JavaScript 设计自定义 MAX 模块。 Max 旨在轻松获取系统音频输入/输出,here's a link 让您入门。
奖励:您可以使用 Max4Live addon which just lets your MAX MSP projects get compiled into .VST 格式设计自己的 Ableton Live 插件。因此,如果您从事音乐制作,可以构建自定义 FX。
Pure Data (PD)(免费)
一个非常平淡的 MAX MSP 开源版本,但完全免费。一开始它可能看起来很乏味,但我知道很多研究都使用它来构建相当复杂的系统,这些系统可以进行一些严肃的数据处理。如果您需要自定义模块,还有许多社区为 PD 构建的额外功能。这是一个 link,可帮助您开始使用 FFT in PD. You cannot compile applications with PD, but since it's completely free to install anyone can run your program after installing PD. Another link 对 PD 中的音频 I/O 进行故障排除(如果开箱后无法正常工作)。
编程语言
现在,如果您还没有接触过 DSP 或音频编程,那么视觉内容是一个非常好的入门方式。否则这里只有几个选项和 links 开始以及我会推荐的地方。
Matlab & Octave
和以前一样,Audio Systems Toolbox supports realtime audio I/O within a Matlab script. This combined with Matlab's built in FFT 函数可以让您设置编程实时 FFT 并立即绘制响应(少于 10 行代码或其他)。
Octave has it's own version of the FFT function and different backends for rendering plot responses, but no Audio Systems Toolbox. However, Playrec 也是 Matlab/Octave 中音频 I/O 的开源替代品,支持实时音频输入和输出。
(Octave 是等同于 Matlab 的开源软件(Matlab 需要付费许可证才能开发程序),但不支持所有 Matlab 支持的功能。
Python
由于 PyAudio 模块,实时音频 I/O 和 DSP 更有可能使用 Python!如果您确定是刚开始,我会推荐 Python,因为它是对任何编程语言的一个很好的介绍,并且可以帮助在尝试较低级别的语言之前教授 DSP 的基础知识。
Here's where you can get started with real-time non-blocking audio I/O in Python with PyAudio. To plot your data you can use a library such as matplotlib(设计类似于 Matlab 的简单绘图功能)。
对于你的 FFT 有多个库,但我将从 Scipy / Numpy 一个开始。
C
经典(有时)最令人生畏的编程语言之一。由于没有对象(除非你想自己制作它们)或其他高级抽象,C 是为数不多的仍然感觉你正在从头开始构建很多东西的语言之一(我个人喜欢)。
要开始使用音频,在我看来,我会查看使用最广泛的跨平台音频 I/O 库; portaudio。这将使您可以在 Mac、Linux 和 Windows 上实时访问声卡数据输入和输出。
一旦你搞定了,运行开始使用 FFT 将是 KissFFT just because of it's pure simplicity to use. If you want to plot the data, I would maybe look at gnuplot,但就开发而言,这不是一条非常好的路线。
如果你是编程新手,我不会推荐这个,除非你真的想陷入其中。
C++
KissFFT 和 portaudio 也可以使用 C++ 代码编译,但这里有几个更高级别的替代方案。
我的最爱之一是 JUCE framework / development environment. It has built in cross-platform audio I/O and already has a custom FFT function as part of the framework. You can build custom VSTs for your music DAW,如果您也愿意的话。它还带有 'easy'(如果您了解 C++)对图形的访问 windows 以及对 openGL 的更高级别的访问,因此您可以在实时绘制数据时获得乐趣。如果我没记错的话,第一次安装的演示项目之一是实时 FFT 图,您可以编译并查看笔记本电脑麦克风的输入。 JUCE 对个人使用免费,但作为独立开发者需要支付少量许可费。
否则我想到的另一个是 QT C++ library/framework for UI design (mainly). This is a cross platform easy to use GUI designer, that also has high level classes for obtaining audio input from a Mac/Win/Linux mic. Here is just one example I came across using QT's multimedia classes and FFTReal 绘制实时 FFT 频谱。
总结
我已经提出了很多选项,但也遗漏了一些其他人可能会推荐的语言,例如 R, C#, Java, Rust 等......而且有太多的建议,不可能涵盖所有的,但是我认为这应该足以开始。如果是我的经验:
您选择的任何这些语言都将成为未来软件职位的参考,许多公司/研究人员使用它们来制作/开发实时音频处理软件的原型。
这只是我的意见,但希望这能让您一路顺风!
有人告诉我这属于编程,而不属于信号处理子交换。
有没有办法对 Windows 中的现场音频进行频谱分析(特别是 FFT)?
我希望能够从麦克风读取音频,并在屏幕上显示结果傅里叶变换。
如果我可以在出现一组特定的 FFT 特性时执行程序,这也会很有用。
谢谢大家!
要做到这一点,您有几个选项,主要取决于您最喜欢的 language/framework。我不确定您对信号处理有多陌生,所以我会建议一些选择。
可视化编程
这些都是可视化编程环境,实际上不需要编写任何代码,但是 Simulink 和 Pure Data 都需要 运行 时间让用户 运行程序。
Simulink(付费)
MathWorks/Matlab 的可视化编程工具,实时效果非常好(我认为)。使用 Audio System Toolbox, you can easily capture microphone input from your system in realtime and carry out the FFT 处理,绘制频谱,如您所说,如果满足某些 FFT 条件,则进行一些进一步处理。
这不是免费软件,需要安装 Matlab/Simulink 运行-时间才能使用。您还可以根据需要使用 Matlab 的 .m 语言编写您的处理脚本(Java、JS 和 C 之间的交叉)。
Max MSP(付费)
与 Simulink 类似的版本,但作为独立的可视化编程工具开发。这将使您拥有与 Simulink 类似的自由度,但我认为重新分发会更容易。
您可以在 MAX 中 compile MAX MSP into executables to give to someone straight away. Here is a reference to get you started on using the FFT。同样,这不是免费的,但如果您想了解更多信息,那么我认为它物有所值(如果我记得它不是太贵的话)。
如果您需要比内置模块更多的自定义处理,我相信您可以使用 C 或 JavaScript 设计自定义 MAX 模块。 Max 旨在轻松获取系统音频输入/输出,here's a link 让您入门。
奖励:您可以使用 Max4Live addon which just lets your MAX MSP projects get compiled into .VST 格式设计自己的 Ableton Live 插件。因此,如果您从事音乐制作,可以构建自定义 FX。
Pure Data (PD)(免费)
一个非常平淡的 MAX MSP 开源版本,但完全免费。一开始它可能看起来很乏味,但我知道很多研究都使用它来构建相当复杂的系统,这些系统可以进行一些严肃的数据处理。如果您需要自定义模块,还有许多社区为 PD 构建的额外功能。这是一个 link,可帮助您开始使用 FFT in PD. You cannot compile applications with PD, but since it's completely free to install anyone can run your program after installing PD. Another link 对 PD 中的音频 I/O 进行故障排除(如果开箱后无法正常工作)。
编程语言
现在,如果您还没有接触过 DSP 或音频编程,那么视觉内容是一个非常好的入门方式。否则这里只有几个选项和 links 开始以及我会推荐的地方。
Matlab & Octave
和以前一样,Audio Systems Toolbox supports realtime audio I/O within a Matlab script. This combined with Matlab's built in FFT 函数可以让您设置编程实时 FFT 并立即绘制响应(少于 10 行代码或其他)。
Octave has it's own version of the FFT function and different backends for rendering plot responses, but no Audio Systems Toolbox. However, Playrec 也是 Matlab/Octave 中音频 I/O 的开源替代品,支持实时音频输入和输出。
(Octave 是等同于 Matlab 的开源软件(Matlab 需要付费许可证才能开发程序),但不支持所有 Matlab 支持的功能。
Python
由于 PyAudio 模块,实时音频 I/O 和 DSP 更有可能使用 Python!如果您确定是刚开始,我会推荐 Python,因为它是对任何编程语言的一个很好的介绍,并且可以帮助在尝试较低级别的语言之前教授 DSP 的基础知识。
Here's where you can get started with real-time non-blocking audio I/O in Python with PyAudio. To plot your data you can use a library such as matplotlib(设计类似于 Matlab 的简单绘图功能)。
对于你的 FFT 有多个库,但我将从 Scipy / Numpy 一个开始。
C
经典(有时)最令人生畏的编程语言之一。由于没有对象(除非你想自己制作它们)或其他高级抽象,C 是为数不多的仍然感觉你正在从头开始构建很多东西的语言之一(我个人喜欢)。
要开始使用音频,在我看来,我会查看使用最广泛的跨平台音频 I/O 库; portaudio。这将使您可以在 Mac、Linux 和 Windows 上实时访问声卡数据输入和输出。
一旦你搞定了,运行开始使用 FFT 将是 KissFFT just because of it's pure simplicity to use. If you want to plot the data, I would maybe look at gnuplot,但就开发而言,这不是一条非常好的路线。
如果你是编程新手,我不会推荐这个,除非你真的想陷入其中。
C++
KissFFT 和 portaudio 也可以使用 C++ 代码编译,但这里有几个更高级别的替代方案。
我的最爱之一是 JUCE framework / development environment. It has built in cross-platform audio I/O and already has a custom FFT function as part of the framework. You can build custom VSTs for your music DAW,如果您也愿意的话。它还带有 'easy'(如果您了解 C++)对图形的访问 windows 以及对 openGL 的更高级别的访问,因此您可以在实时绘制数据时获得乐趣。如果我没记错的话,第一次安装的演示项目之一是实时 FFT 图,您可以编译并查看笔记本电脑麦克风的输入。 JUCE 对个人使用免费,但作为独立开发者需要支付少量许可费。
否则我想到的另一个是 QT C++ library/framework for UI design (mainly). This is a cross platform easy to use GUI designer, that also has high level classes for obtaining audio input from a Mac/Win/Linux mic. Here is just one example I came across using QT's multimedia classes and FFTReal 绘制实时 FFT 频谱。
总结
我已经提出了很多选项,但也遗漏了一些其他人可能会推荐的语言,例如 R, C#, Java, Rust 等......而且有太多的建议,不可能涵盖所有的,但是我认为这应该足以开始。如果是我的经验:
您选择的任何这些语言都将成为未来软件职位的参考,许多公司/研究人员使用它们来制作/开发实时音频处理软件的原型。
这只是我的意见,但希望这能让您一路顺风!