问题标签 [goertzel-algorithm]

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 投票
2 回答
4808 浏览

android - 使用 Goertzel 算法处理音频信号的结果

我做了一个小信号处理应用程序。它使用 Goerztel 算法处理特定频率的音频信号(莫尔斯电码)。应用程序将临时文件保存到文件系统,并在录制完成后开始检测信号。现在我得到了很多数量级的结果。

我真的不知道从这些量级中读取什么。我怎样才能从这些量级解码莫尔斯电码?我怎样才能阅读它们?试图找到参考资料,但没有解释结果是什么以及如何阅读它。

编辑:

我的摩尔斯电码应用程序是用 Delphi 制作的,并使用 Windows Beep 功能以一定频率发送信号。我正在使用 1200 Hz 的信号。信号和单词之间的停顿和莫尔斯哔哔声就像维基百科描述的那样。一切都是准确的。

Goertzel.java:

SoundCompareActivity.java

MorseDecoder.java:

编辑2:

注意到处理样本中的一些错误。更改了 while 循环中的代码。

问候,邪恶的

0 投票
1 回答
341 浏览

rtp - Goertzel 算法是否适用于模拟信号?

我的 SIP 电话在 PCMU 有效负载(不使用 rfc 2833 支持的有效负载格式)中的常规 rtp 数据包中收到音调(回铃)。要检测 rtp 数据中是否存在音调或语音,应使用 Goertzel 算法。我是这个域的新手,无法理解如何将收到的 rtp 数据包的输入提供给 Goertzel 算法?或者这个算法是否将模拟信号作为输入?

0 投票
3 回答
24829 浏览

c - Goertzel算法在C中的实现

我正在 DSP 处理器上实现 BFSK 跳频通信系统。一些论坛成员建议使用 Goertzel 算法对特定频率的跳频进行解调。我尝试在 C 中实现 goertzel 算法。代码如下:

当我使用该函数计算给定数据集的特定频率的结果时,我没有得到正确的结果。但是,如果我使用相同的数据集并使用 MATLAB goertzel() 函数计算 goertzel 结果,那么我会得到完美的结果。在网上找到的一些在线教程的帮助下,我使用 C 实现了算法。如果该函数正确实现了 goertzel 算法,我只想了解你们的看法。

0 投票
1 回答
2847 浏览

java - 使用java确定给定一个字节[]记录的音频数据的频率

我一直在对给定原始音频的频率进行一些研究。似乎有很多关于它的信息,但我一直无法找到使用java的简单实现。我想要做的是将具有 44.1K 元素的字节数组划分为大小为 44 的样本(丢弃剩余部分),并确定每个样本中是否有超过 18KHz 的音调(我试图找到音调录音期间播放的声音被麦克风拾取)。如果需要,我可以使用更大的样本,但每个样本 44 个元素是理想的。我知道我可能需要使用 FFT,但数学对我来说有点沉重。我曾尝试使用 goertzel 算法分析阵列,但无法获得确凿的结果。那么我的问题是如何将一个字节数组与 44 分开。将 1K 个元素分成 1002 个样本,确定每个样本的频率(或检测样本的频率是否超过 18KHz),以及如何实现此示例。请给出代码或伪代码。我已经阅读了很多文档,我只需要查看一个示例。

0 投票
2 回答
5104 浏览

c++ - “数据”未在此范围内声明

我正在用 C++ 实现 Goertzel 算法,到目前为止我已经做到了:

但我得到了这些愚蠢的错误代码:

我完全迷失了,为什么我的成员函数readDataFromFile()找不到我的数组data[]?似乎构造函数构建了数组,然后在程序离开构造函数后将其销毁?我该如何解决这些明显愚蠢的错误?

0 投票
1 回答
1895 浏览

c# - 使用 Goertzel 算法进行 DTMF 检测

如果波形格式如下,我如何使用 Goertzel 算法: - 2 通道 - 32 位 - 48 kHz

我已经搜索过 Goertzel 算法,但我在互联网上看到的只是检测 DTMF 的波形格式为 2 通道、16 位和 8 kHz。我不知道我应该修改代码的哪一部分以满足我的要求。

0 投票
1 回答
1963 浏览

algorithm - 检测正弦信号频率和相位的简单高效算法

我需要一种算法来检测纯正弦信号的频率和相位。输入信号的频率在 0 到 100 Hz 之间变化。

信号的值以 20kHz 的频率捕获(所以我每秒得到 20.000 个值) - 这是给定的,无法更改。我需要检测此输入信号的频率和相位,并使用 PWM 生成与输入信号频率相同的 MCU 中断。

谁能建议使用什么算法来做到这一点简单而有效?也许是 Goertzel 算法?

0 投票
1 回答
613 浏览

c# - 我怎样才能用这个实现 Goertzel 算法?

我在这里得到了代码: https ://naudio.codeplex.com/discussions/270762 。

goertzel 算法是这样的:

我想使用该算法转换音频数据(来自上面链接中的波形文件阅读器)。我怎样才能做到这一点?谢谢

0 投票
0 回答
118 浏览

embedded - 用于音调检测的信号链?

我正在尝试制作一个嵌入式东西,它可以检测驻极体麦克风中是否存在 19kHz 音调。我有一个多级带通滤波器/前置放大器连接到微控制器的 ADC 中,并试图找出以数字方式调节信号以检测音调存在的最佳方法。

我已经实现了一个 Goertzel 滤波器来寻找感兴趣的频率。我的 ADC 以 4000KHz 的频率采集 400 个样本,然后微处理块并将结果添加到 100 点移动平均值。查看每个块后的终端输出,当发射器打开时,我肯定可以看到数字的整体跳跃。但是,打开电源时,电源读数中有很多噪音,而且我所在房间的本底噪声也在不断变化。我不确定如何调整阈值水平/过滤掉所有这些噪音。

我尝试了一些东西,但它们似乎都很嘈杂,因为我的信号基线到处漂移:

  • 使用 Hamming/Blackman 窗口对块进行预处理
  • 滤波器输出中总接收块功率与频带功率之比
  • 感兴趣频带 (19kHz) 的功率与感兴趣频带之外但靠近感兴趣频带 (18.5kHz) 的功率之比

编辑:自发布此消息以来,我已经阅读了更多内容。计算 (2*Ew)/(N*Et) 其中 Ew 是我的过滤器的输出,Et 是我的块中的平方和是进行此测试的最佳方法吗?

关于如何处理这个和/或做一个更好的信号提取方法的任何建议?

谢谢!

0 投票
1 回答
692 浏览

ios - IOS 中的吉他调音器:Goertzel 算法不适用于 6 弦中的 2 弦

我正在尝试在 IOS 8 中实现吉他调音器,并且我从已经实现它的人那里得到了一些代码:它处理 Goertzel 算法,该算法在短期内比较固定频率的幅度 - 正如为 srings EADGBE 定义的那样。- 这里放置在CoreAudio的回调方法中的例程:

然而,这样的例程只适用于较低的字符串“DGBE”。对于 E 弦和 D 弦,我得到错误的结果,我相信这种行为与泛音有关,因为它们似乎比搜索的更强烈——也许低“E”有“A”或“D”作为泛音,幅度更大。

我的问题:有没有遇到过类似的问题?并解决了吗?Goertzel 是正确的算法,还是 FFT 或卷积是更好的解决方案?

最后是我使用的 Goertzel 算法: