问题标签 [signal-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
60867 浏览

python - 使用快速傅里叶变换分析音频

我正在尝试在 python 中创建一个图形频谱分析仪。

我目前正在读取 16 位双通道 44​​,100 Hz 采样率音频流的 1024 字节,并将 2 个通道的幅度平均在一起。所以现在我有一系列 256 条签名短裤。我现在想在该阵列上执行 fft,使用像 numpy 这样的模块,并使用结果创建图形频谱分析仪,开始时只有 32 个柱。

我已经阅读了关于快速傅里叶变换和离散傅里叶变换的维基百科文章,但我仍然不清楚结果数组代表什么。这是我使用 numpy 在我的数组上执行 fft 后数组的样子:

我想知道这些数字究竟代表什么,以及如何将这些数字转换为 32 个条形中每个条形的高度百分比。另外,我应该将两个通道平均在一起吗?

0 投票
4 回答
26846 浏览

opencv - How to interpolate between data points?

I am currently developing a piece of software using opencv and qt that plots data points. I need to be able fill in an image from incomplete data. I want to interpolate between the points I have. Can anyone recommend a library or function that could help me. I thought maybe the opencv reMap method but I can't seem to get that to work.

The data is a 2-d matrix of intensity values. I want to create an image of some sort. Its a school project.

0 投票
5 回答
62769 浏览

java - Java中的信号处理库?

我想计算时间序列的功率谱密度;做一些带通、低通和高通滤波;也许其他一些基本的东西。

是否有一个不错的开源 Java 库来执行此操作?

我搜索了一些但没有成功(例如,谷歌搜索“功率谱密度 java”或“信号处理 java”并单击链接,查看 Apache Commons、Sourceforge、java.net 等)。

有很多小程序、书籍、教程、商业产品等,不能满足我的需求。

更新:我发现org.apache.commons.math.transform用于傅里叶变换。这并没有实现功率谱密度、带通等,但它是一些东西。

0 投票
10 回答
89771 浏览

algorithm - 如何在php中检测歌曲的BPM

如何以编程方式确定歌曲的速度/BPM?常用的算法有哪些,需要注意什么?

0 投票
2 回答
987 浏览

python - 如何管理服务器上的 CPU 密集型进程

我需要在 HTTP 请求之间运行一个占用大量 CPU 和内存的 Python 脚本(分析和更改冗长的 WAV 文件)作为我的 Web 服务器(VPS)上的后台进程。

该脚本最多需要 20 秒才能运行,我担心服务器的性能。有没有一种好的方法可以降低进程的优先级,定期将控制权交给操作系统,或者以其他方式保护我的普通服务器的性能?

0 投票
1 回答
1924 浏览

matlab - 在 Octave 中实现 Matlab 的 avgpower?

伙计们,

Matlab 2007b (7.5.0) 有一个 avgpower 函数。见这里

“avgpower 方法使用积分的矩形近似值,使用存储在对象中的 PSD 数据计算信号的平均功率。

“avgpower 方法返回信号的平均功率,即 PSD 曲线下的面积。”

示例调用:

我希望在 Octave 中复制这种功能。功能“pwelch”似乎是一种可能性。以机智:

现在我认为频谱具有PSD的y值,而频率具有x值。所以,我可以在频率中找到介于“下”和“上”之间的样本,并且......呃,平均光谱中的相应值?我对此很模糊。

此外,“频率”中的值不一定对应于我想要的上限和下限,我不知道该怎么做。如果下部或上部正好位于宽频率箱的中间怎么办?例如,我是否需要半个 bin(即线性插值)?

也有可能从某种 FFT 中获取单个值,而不是使用 pwelch。

建议?

0 投票
5 回答
12080 浏览

linux - Linux 中的实时音频分析

我想知道推荐使用的音频库是什么?

我正在尝试制作一个有助于调整乐器的小程序。(钢琴、吉他等)。我读过 ALSA 和 Marsyas 音频库。

我在想这个想法是从麦克风中采样数据,对 5-10 毫秒的块进行分析(根据我的阅读)。然后执行 FFT 以确定哪个频率包含最大峰值。

0 投票
1 回答
192 浏览

audio - waveInXXX 是否应用低通滤波器?

当我使用(win32)waveInXXX 函数以某个采样频率(比如 8kHZ,甚至可能更低)从麦克风收集样本时,系统/声卡是否对输入样本应用低通滤波器,或者我会得到混叠? 我应该在降低采样频率之前以更高的频率进行采样并自己进行过滤吗?

0 投票
1 回答
478 浏览

audio - 低频声音采样

这个问题其实我之前也发过,但是没有人回答。可能我说的不够清楚,我换个说法:

如您所知,当您以特定采样率对信号进行采样时,任何高于采样率一半的频率都会出现混叠。为了避免这种情况,您需要将信号(以模拟形式,或以更高速率采样的数字形式)通过适当的低通滤波器。

现在,就我而言,我正在使用 Windows 的 waveIn 函数以一定的速率收集麦克风输入。由于 waveIn 函数似乎在我提供给它的任何采样率下工作,而不是在任意预定义的速率下工作,我真的不知道声卡是否实际上以该速率采样,或者它是否以预定义的速率采样并且系统“转换“按照我要求的价格。我也不在乎,其实...

我关心的是,当我以 8kHz 采样时,声卡或系统是否执行低通滤波(声卡上的模拟滤波器或数字滤波器,然后限制在某个最大采样率支持声卡),所以我的输入不会出现混叠频率。

或者,我应该以尽可能高的采样率进行采样并自己过滤掉频率?

0 投票
4 回答
2511 浏览

f# - 如何在 F# 中进行卷积?

我想将离散信号与离散滤波器进行卷积。信号和滤波器是 F# 中的浮点序列。

我能弄清楚如何做到这一点的唯一方法是使用两个嵌套的 for 循环和一个可变数组来存储结果,但感觉不是很实用。

以下是我将如何做到这一点: