问题标签 [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.
python - 矩阵的二维图,其颜色类似于频谱图中的颜色
如何使用 Python 绘制A[i,j]
这样的二维矩阵:
i
是 x 轴j
是 y 轴A[i,j]
是一个介于 0 和 100 之间的值,必须由颜色绘制(例如:0=蓝色,100=红色)
有没有一个 Python 函数呢?
(注意:我不想要一个为我绘制频谱图的函数,例如specgram
,因为我想自己计算信号的 FFT;因此我只需要一个用颜色绘制矩阵的函数)
matlab - 将频谱图数字保存在 wav 文件的循环中
我正在尝试生成频谱图,以便以后可以将它们与单词样本进行比较,以进行非常基本的语音识别项目。这是在一个循环中完成的。代码如下:
我的问题在最后两行。我想将频谱图保存为 .fig 文件(除非你们以后有更好的比较建议)并将其命名为与 baseFileName 相同。我已经在谷歌上搜索了一段时间,但格式令人困惑,并且没有太多关于将频谱图保存为数字的内容。
如果所有数字都没有在循环中弹出,我会更喜欢它,但我可以处理。
编辑:也许将其存储为 matfile 会更好?
matlab - 将转换为频谱图的 wav 与其最适合的频谱图相匹配
我有大约 200 个不同单词的频谱图。我希望能够(或至少尝试)将单词记录为 wav(就像我对原始单词所做的那样),将其转换为频谱图,然后尝试找到最佳匹配。
不幸的是,其中许多词非常相似(帽子、蝙蝠等)。我希望能够获得至少消除 50% 单词的匹配项。
我有哪些选择?我正在考虑获取两个频谱图之间的差异,但我不确定它的效果如何。
matlab - 将 Matlab 频谱图中的值缩放到实际范围
我跑
我明白了
我想获得从 0 到 180 Hz 的范围,而不是从 0 到 1 的标准化范围。我可以通过
但它不会改变值。
我跑不成功
如何将范围从标准化范围扩展到实际范围?
audio - 频谱图 - 我错过了什么吗?
我有以下信号:
我正在尝试计算频谱图算法,但是,不要认为我做对了..
我计算了以下内容:
1) STFT (大小 256,重叠 128) 2) 使用以下方法计算日志:'10 * log10(sqrt(re * re + im + im)
这是我得到的结果:
但是当我pylab
在 Python 中使用时(对于相同的信号):
x = pl.specgram(signal)
我得到以下结果:
使用matplotlib
我得到以下信息:
显然,这些是非常不同的结果。我不知道为什么会得到这些,我是信号处理和频谱图的新手。希望有人可以帮助
编辑:
这是Python代码。
matlab - 如何找到与示例声音文件最匹配的声音文件?
我正在做一个非常简单的语音识别项目。我目前有 2 套 wav 文件。每组都有 1 秒长的录音,记录同一个人在 2 个不同实例中所说的一组单词。例如,一组具有单词“一”、“二”和“三”,而另一组具有通过单独记录获得的完全相同的单词。许多单词押韵并使用不同的声音。
到目前为止,我已经尝试了几件事,但迄今为止我得到的最实用的是每个声音文件的频谱图(所有这些都使用相同的脚本以相同的方式构建)。
这一切都是通过 MATLAB 完成的,我可能只使用 MATLAB。
我将一组录音/频谱图称为“样本集”,这将是我将提供样本声音的集合。我将另一组记录/频谱图称为“测试集”,这将是我将尝试从中找到与提供的样本记录/频谱图最佳匹配的集合。
我想要的是,当提供样本声音/频谱图时,MATLAB 将返回测试集中的最佳匹配或匹配。理想情况下,它会返回相同的单词,但实际上我会很高兴只有一些样本返回相似的结果(例如押韵或具有相似元音/辅音的单词)。
我可以尝试哪些方法?同样,只要过程合理,如果失败也没关系。我知道我的声音样本量很小。我也明白最好比较频域中的声音,但我现在只有频谱图。
matlab - 有没有办法从 MATLAB 中的另一个频谱图(存储为数字)中减去?
我在 MATLAB 中有 2 个图形(频谱图),我想将它们彼此相减以测试它们的相似性。有没有办法做到这一点?
c++ - 使用 fftw 和窗口函数生成正确的频谱图
对于一个项目,我需要能够从 .WAV 文件生成频谱图。我已经阅读了以下应该做的事情:
- 获取 N(变换大小)样本
- 应用窗口函数
- 使用样本进行快速傅里叶变换
- 标准化输出
- 生成频谱图
在下图中,您可以看到两个使用汉宁窗函数的 10000 Hz 正弦波的频谱图。在左边你会看到一个由audacity生成的频谱图,在右边是我的版本。如您所见,我的版本有更多的线条/噪音。这是在不同的垃圾箱中泄漏吗?我将如何获得像大胆生成的清晰图像。我应该做一些后期处理吗?我还没有做任何规范化,因为不完全理解如何去做。
更新
我发现本教程解释了如何在 C++ 中生成频谱图。我编译了源代码,看看我能找到什么不同。
老实说,我的数学很生疏,所以我不确定标准化在这里做了什么:
这样做之后,我得到了这张图片(顺便说一句,我已经反转了颜色):
然后,我查看了我的声音库和教程提供的输入样本的差异。我的要高得多,所以我手动标准化是将它除以因子 32767.9。然后我去这张我认为看起来还不错的图像。但除以这个数字似乎是错误的。我希望看到一个不同的解决方案。
这是完整的相关源代码。
python - matplotlib 是否仅捕获每个 bin 的中心频率
我想知道matplotlib函数是否spectrogram
只考虑信号的中心频率?
例如,在此处绘制频谱图(以无分贝为单位)是结果:
正常绘制频谱图:
这些点在哪里从 0-50) 和 (80-140) 之间被删除?如果是这样..为什么会这样?
编辑:源代码:-
这是“matplotlib”spectral_helper
这是我在 C++ 中的尝试
产生如此不同的结果我哪里错了?
python - Python - 删除范围之间的特定频率
我有一个频谱图:
我想清理频谱图,所以我只捕获特定范围内的频率(即在此示例中,在 2627 - 3939 之间)并删除低于此频率的所有块。我的总体目标是只留下这个频率范围内的 4 个片段,并且可以识别。
到目前为止,这是我的代码:
问题是,我不知道如何使用 Python 做到这一点。我知道范围(2627 - 3939)但是,我会遍历整个二维数组并总结所有块,或者,对于频谱图中的每个块,计算频率,如果它高于阈值,保持它,否则值变为0.0?
如果我总结每个垃圾箱,我会得到以下信息:
我需要保留这些块,但是,除了这些块之外,我想删除所有其他块。
我希望有一个人可以帮助我!