问题标签 [spectrogram]

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 投票
1 回答
11955 浏览

python - 矩阵的二维图,其颜色类似于频谱图中的颜色

如何使用 Python 绘制A[i,j]这样的二维矩阵:

  • i是 x 轴
  • j是 y 轴
  • A[i,j]是一个介于 0 和 100 之间的值,必须由颜色绘制(例如:0=蓝色,100=红色)

有没有一个 Python 函数呢?

(注意:我不想要一个为我绘制频谱图的函数,例如specgram,因为我想自己计算信号的 FFT;因此我只需要一个用颜色绘制矩阵的函数)

频谱图样本

0 投票
1 回答
1215 浏览

matlab - 将频谱图数字保存在 wav 文件的循环中

我正在尝试生成频谱图,以便以后可以将它们与单词样本进行比较,以进行非常基本的语音识别项目。这是在一个循环中完成的。代码如下:

我的问题在最后两行。我想将频谱图保存为 .fig 文件(除非你们以后有更好的比较建议)并将其命名为与 baseFileName 相同。我已经在谷歌上搜索了一段时间,但格式令人困惑,并且没有太多关于将频谱图保存为数字的内容。

如果所有数字都没有在循环中弹出,我会更喜欢它,但我可以处理。

编辑:也许将其存储为 matfile 会更好?

0 投票
0 回答
187 浏览

matlab - 将转换为频谱图的 wav 与其最适合的频谱图相匹配

我有大约 200 个不同单词的频谱图。我希望能够(或至少尝试)将单词记录为 wav(就像我对原始单词所做的那样),将其转换为频谱图,然后尝试找到最佳匹配。

不幸的是,其中许多词非常相似(帽子、蝙蝠等)。我希望能够获得至少消除 50% 单词的匹配项。

我有哪些选择?我正在考虑获取两个频谱图之间的差异,但我不确定它的效果如何。

0 投票
1 回答
1484 浏览

matlab - 将 Matlab 频谱图中的值缩放到实际范围

我跑

我明白了

在此处输入图像描述

我想获得从 0 到 180 Hz 的范围,而不是从 0 到 1 的标准化范围。我可以通过

但它不会改变值。

我跑不成功

如何将范围从标准化范围扩展到实际范围?

0 投票
0 回答
133 浏览

audio - 频谱图 - 我错过了什么吗?

我有以下信号:

在此处输入图像描述

我正在尝试计算频谱图算法,但是,不要认为我做对了..

我计算了以下内容:

1) STFT (大小 256,重叠 128) 2) 使用以下方法计算日志:'10 * log10(sqrt(re * re + im + im)

这是我得到的结果:

在此处输入图像描述

但是当我pylab在 Python 中使用时(对于相同的信号): x = pl.specgram(signal)

我得到以下结果:

在此处输入图像描述

使用matplotlib我得到以下信息:

在此处输入图像描述

显然,这些是非常不同的结果。我不知道为什么会得到这些,我是信号处理和频谱图的新手。希望有人可以帮助

编辑:

这是Python代码。

0 投票
2 回答
831 浏览

matlab - 如何找到与示例声音文件最匹配的声音文件?

我正在做一个非常简单的语音识别项目。我目前有 2 套 wav 文件。每组都有 1 秒长的录音,记录同一个人在 2 个不同实例中所说的一组单词。例如,一组具有单词“一”、“二”和“三”,而另一组具有通过单独记录获得的完全相同的单词。许多单词押韵并使用不同的声音。

到目前为止,我已经尝试了几件事,但迄今为止我得到的最实用的是每个声音文件的频谱图(所有这些都使用相同的脚本以相同的方式构建)。

这一切都是通过 MATLAB 完成的,我可能只使用 MATLAB。

我将一组录音/频谱图称为“样本集”,这将是我将提供样本声音的集合。我将另一组记录/频谱图称为“测试集”,这将是我将尝试从中找到与提供的样本记录/频谱图最佳匹配的集合。

我想要的是,当提供样本声音/频谱图时,MATLAB 将返回测试集中的最佳匹配或匹配。理想情况下,它会返回相同的单词,但实际上我会很高兴只有一些样本返回相似的结果(例如押韵或具有相似元音/辅音的单词)。

我可以尝试哪些方法?同样,只要过程合理,如果失败也没关系。我知道我的声音样本量很小。我也明白最好比较频域中的声音,但我现在只有频谱图。

0 投票
0 回答
85 浏览

matlab - 有没有办法从 MATLAB 中的另一个频谱图(存储为数字)中减去?

我在 MATLAB 中有 2 个图形(频谱图),我想将它们彼此相减以测试它们的相似性。有没有办法做到这一点?

0 投票
3 回答
7589 浏览

c++ - 使用 fftw 和窗口函数生成正确的频谱图

对于一个项目,我需要能够从 .WAV 文件生成频谱图。我已经阅读了以下应该做的事情:

  1. 获取 N(变换大小)样本
  2. 应用窗口函数
  3. 使用样本进行快速傅里叶变换
  4. 标准化输出
  5. 生成频谱图

在下图中,您可以看到两个使用汉宁窗函数的 10000 Hz 正弦波的频谱图。在左边你会看到一个由audacity生成的频谱图,在右边是我的版本。如您所见,我的版本有更多的线条/噪音。这是在不同的垃圾箱中泄漏吗?我将如何获得像大胆生成的清晰图像。我应该做一些后期处理吗?我还没有做任何规范化,因为不完全理解如何去做。

在此处输入图像描述

更新

我发现教程解释了如何在 C++ 中生成频谱图。我编译了源代码,看看我能找到什么不同。

老实说,我的数学很生疏,所以我不确定标准化在这里做了什么:

这样做之后,我得到了这张图片(顺便说一句,我已经反转了颜色):

在此处输入图像描述

然后,我查看了我的声音库和教程提供的输入样本的差异。我的要高得多,所以我手动标准化是将它除以因子 32767.9。然后我去这张我认为看起来还不错的图像。但除以这个数字似乎是错误的。我希望看到一个不同的解决方案。

在此处输入图像描述

这是完整的相关源代码。

0 投票
0 回答
289 浏览

python - matplotlib 是否仅捕获每个 bin 的中心频率

我想知道matplotlib函数是否spectrogram只考虑信号的中心频率?

例如,在此处绘制频谱图(以无分贝为单位)是结果:

在此处输入图像描述

正常绘制频谱图:

在此处输入图像描述

这些点在哪里从 0-50) 和 (80-140) 之间被删除?如果是这样..为什么会这样?

编辑:源代码:-

这是“matplotlib”spectral_helper

这是我在 C++ 中的尝试

产生如此不同的结果我哪里错了?

0 投票
1 回答
1631 浏览

python - Python - 删除范围之间的特定频率

我有一个频谱图:

在此处输入图像描述

我想清理频谱图,所以我只捕获特定范围内的频率(即在此示例中,在 2627 - 3939 之间)并删除低于此频率的所有块。我的总体目标是只留下这个频率范围内的 4 个片段,并且可以识别。

到目前为止,这是我的代码:

问题是,我不知道如何使用 Python 做到这一点。我知道范围(2627 - 3939)但是,我会遍历整个二维数组并总结所有块,或者,对于频谱图中的每个块,计算频率,如果它高于阈值,保持它,否则值变为0.0?

如果我总结每个垃圾箱,我会得到以下信息:

在此处输入图像描述

我需要保留这些块,但是,除了这些块之外,我想删除所有其他块。

我希望有一个人可以帮助我!