问题标签 [pitch-detection]

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 回答
552 浏览

audio - 快速频率测量

我需要在音乐家演奏音乐时测量信号频率,而对于 FFT(快速傅里叶变换)来说,它恰好有点太快了。

音乐家以 90-140 bpm 的速度演奏音乐。这意味着每分钟有 90-140 个音符组,每组最多 8 个(更频繁地,最多 4 个)音符(60/140/8 = 0.0536 秒,60/90/4 = 0.167 秒),即也就是说,音符可能会以每秒 6-19 个音符的速度变化。

音乐使用对数刻度:例如,440Hz 和 880Hz 之间的范围分为 12 个音符,其中只有 7 个用于旋律。(基本上,他们只使用钢琴上的白键;当他们想改变起始频率时,他们使用一些黑键而不使用一些白键。)也就是说,每个下一个音符的频率相乘乘以 2^(1/12) = 1.05946。

更复杂的是,A (La) 频率可能在 438 到 446 Hz 之间变化。弦乐器理论上可以调音,而管乐器则取决于空气的温度和湿度,因此音乐家在检查声音时会重新协商频率。

有时音乐家和歌手会在频率上出错,他们称之为“走调”。他们想要一种能够通知他们此类“失调错误”的设备。他们有调音器,但调音器需要播放相同的声音大约 1 秒才能开始显示任何内容。这适用于调音,但在播放音乐时不起作用。

最有可能的是,调谐器正在执行 FFT,并且由于公式

等待 1 秒以获得 1Hz 分辨率。

对于 A=440Hz,两个音符之间的频率差为 440*0.05946 = 26.16 Hz,要获得该频率分辨率,必须使用 0.038 秒的采集时间,也就是说,在 tempo=196bpm 时,FFT 只能区分两个注意,在 98 bpm 时,只要它在音高变化的那一刻开始采集,它就能够分辨出 50% 的失调错误。如果我们在采集期间允许音高变化,我们会得到 49 bpm,这太慢了。此外,非常希望对频率更精确,例如检测 25% 的失调误差。

有没有比 FFT 更好地测量频率的方法,即在更短的采集时间内获得更好的分辨率?(至少好 2 倍,理想情况下,好 8 倍。)作为交换,我不需要区分不同八度的音符,例如 440 和 880 都可能被识别为 A。(可能,更多的权衡是可能的,只是现在我没有想到其他任何事情。)

UPD 这是一个非常好的绘图:

注意从维基百科链接的频率

UPD2

我在以下位置找到了一篇博士论文和开源软件(TARTINI——实时音乐分析工具):

http://miracle.otago.ac.nz/tartini/

(这些页面也可以通过网络存档服务获得:http: //web.archive.org = http://archive.org = http://waybackmachine.org

0 投票
2 回答
3236 浏览

ios - 使用 AVAudioEngine 实时检测音高是否可行?

我正在尝试编写一个音乐应用程序,其中音高检测是这一切的核心。我已经看到了这个问题的解决方案以及 AppStore 上的应用程序。然而,它们中的大多数都已经过时了,我想做的是 Swift。我一直在寻找 AVAudioEngine 作为一种方法来做到这一点,但我发现缺少文档,或者我可能还不够努力。

我发现我可以像这样点击 inputNode 总线:

总线每秒被点击 2-3 次,每个点击缓冲区包含超过 16000 个浮点数。这些幅度样本来自麦克风吗?

文档至少声称它是从节点输出的:“缓冲区参数是从 AVAudioNode 的输出中捕获的音频缓冲区。

是否可以使用 AVAudioEngine 实时检测音高,还是我应该以另一种方式进行?

0 投票
0 回答
706 浏览

java - 如何开始使用 Java 中的 jtransforms 库

我想从 wav 音频中提取频率,我正在考虑使用自相关方法以及 FFT 的使用。

遇到了一个名为“JTransforms”的 Java 音高检测库,有人可以建议如何开始使用它吗?代码片段将是理想的。

谢谢

0 投票
1 回答
74 浏览

java - 如何使用 matlab 处理声音信号,获取频率并在 java 上使用它?

我是信号处理的新手,我正在开发一个涉及提取声音播放 wav 文件的音高的应用程序,尝试了几种使用 java 直接提取音高的方法(使用 FFT 和 DFT),但是无法继续其原因是通过提取获得的准确性较低。

有人告诉我有一种方法可以使用 matlab 确定声音信号中音符的频率,最后你会得到一个 .csv 格式的脚本,该脚本必须转换为 java。问题是我不知道如何做到这一点,所以有人可以阐明如何提取频率吗?如何在java中使用这些信息?

0 投票
0 回答
93 浏览

java - 为什么这个 FFT 代码不能从 wav 音频中提取频率?

我对音频处理很陌生,我正在尝试从 wav 文件中提取频率。正如研究论文所述,我将 wav 音频放入字节数组并分段并尝试应用 FFT 从音频中获取频率。然而问题是,即使我输入一个只播放一个音符的音轨(没有噪音),我也会得到很多频率,结果我应该得到一个。

我的猜测是 FFT 代码有问题,因为音频被正确分割。

提前谢谢大家,

我的fft代码

我的结果(对于只播放一个音符的 1 秒音频)

Sample rate 44100 My data size 70376 My myBitsPerSample 16 My channels 2 My myByteRate 176400 My Length 0.7983219954648526 0.7983219954648526 44100.0 Max_index: 56 Sample rate: 44100.0 2411.71875 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0 is the frequnecy Max_index: 129 Sample rate: 44100.0 5555.56640625 is the frequnecy Max_index: 511 Sample rate: 44100.0 22006.93359375 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0 is the frequnecy Max_index: 152 Sample rate: 44100.0 6546.09375 is the frequnecy Max_index: 422 采样率:44100.0 18174.0234375 是频率 Max_index:26 采样率:44100.0 1119.7265625 是频率 Max_index:462 采样率:44100.0 19896。6796875 is the frequnecy Max_index: 450 Sample rate: 44100.0 19379.8828125 is the frequnecy Max_index: 201 Sample rate: 44100.0 8656.34765625 is the frequnecy Max_index: 383 Sample rate: 44100.0 16494.43359375 is the frequnecy Max_index: 6 Sample rate: 44100.0 258.3984375 is the frequnecy Max_index: 385 Sample rate: 44100.0 16580.56640625 is the frequnecy Max_index: 100 Sample rate: 44100.0 4306.640625 is the frequnecy Max_index: 15 Sample rate: 44100.0 645.99609375 is the frequnecy Max_index: 421 Sample rate: 44100.0 18130.95703125 is the frequnecy Max_index: 256 Sample rate: 44100.0 11025.0是频率 Max_index:0 采样率:44100.0 0.0 是频率 Max_index:483 采样率:44100.0 20801.07421875 是频率 Max_index:0 采样率:44100.0 0。0 is the frequnecy Max_index: 134 Sample rate: 44100.0 5770.8984375 is the frequnecy Max_index: 123 Sample rate: 44100.0 5297.16796875 is the frequnecy Max_index: 2 Sample rate: 44100.0 86.1328125 is the frequnecy Max_index: 378 Sample rate: 44100.0 16279.1015625 is the frequnecy Max_index: 491 Sample rate: 44100.0 21145.60546875 is the frequnecy Max_index: 125 Sample rate: 44100.0 5383.30078125 is the frequnecy Max_index: 242 Sample rate: 44100.0 10422.0703125 is the frequnecy Max_index: 267 Sample rate: 44100.0 11498.73046875 is the frequnecy Max_index: 257 Sample rate: 44100.0 11068.06640625是频率 Max_index:128 采样率:44100.0 5512.5 是频率 Max_index:496 采样率:44100.0 21360.9375 是频率 Max_index:350 采样率:44100.0 15073。2421875 is the frequnecy Max_index: 75 Sample rate: 44100.0 3229.98046875 is the frequnecy Max_index: 127 Sample rate: 44100.0 5469.43359375 is the frequnecy Max_index: 473 Sample rate: 44100.0 20370.41015625 is the frequnecy Max_index: 35 Sample rate: 44100.0 1507.32421875 is the frequnecy Max_index: 420 Sample rate: 44100.0 18087.890625 is the frequnecy Max_index: 413 Sample rate: 44100.0 17786.42578125 is the frequnecy Max_index: 136 Sample rate: 44100.0 5857.03125 is the frequnecy Max_index: 93 Sample rate: 44100.0 4005.17578125 is the frequnecy Max_index: 251 Sample rate: 44100.0 10809.66796875是频率 Max_index:431 采样率:44100.0 18561.62109375 是频率 Max_index:490 采样率:44100.0 21102.5390625 是频率 Max_index:221 采样率:44100.0 9517.67578125 is the frequnecy Max_index: 364 Sample rate: 44100.0 15676.171875 is the frequnecy Max_index: 19 Sample rate: 44100.0 818.26171875 is the frequnecy Max_index: 487 Sample rate: 44100.0 20973.33984375 is the frequnecy Max_index: 350 Sample rate: 44100.0 15073.2421875 is the frequnecy Max_index : 243 Sample rate: 44100.0 10465.13671875 is the frequnecy Max_index: 384 Sample rate: 44100.0 16537.5 is the frequnecy Max_index: 403 Sample rate: 44100.0 17355.76171875 is the frequnecy Max_index: 56 Sample rate: 44100.0 2411.71875 is the frequnecy Max_index: 151 Sample rate: 44100.0 6503.02734375 是频率 Max_index:447 采样率:44100.0 19250.68359375 是频率 Max_index:501 采样率:44100.0 21576.26953125 是频率 Max_index:377 Sample rate: 44100.0 16236.03515625 is the frequnecy Max_index: 465 Sample rate: 44100.0 20025.87890625 is the frequnecy Max_index: 417 Sample rate: 44100.0 17958.69140625 is the frequnecy Max_index: 259 Sample rate: 44100.0 11154.19921875 is the frequnecy Max_index: 34 Sample rate: 44100.0 1464.2578125 is the frequnecy Max_index: 327 Sample rate: 44100.0 14082.71484375 is the frequnecy Max_index: 280 Sample rate: 44100.0 12058.59375 is the frequnecy Max_index: 271 Sample rate: 44100.0 11670.99609375 is the frequnecy Max_index: 92 Sample rate: 44100.0 3962.109375 is the frequnecy Max_index: 141采样率:44100.0 6072.36328125 是频率 Max_index:467 采样率:44100.0 20112.01171875 是频率 Max_index:123 采样率:44100.0 5297。16796875 is the frequnecy Max_index: 388 Sample rate: 44100.0 16709.765625 is the frequnecy Max_index: 122 Sample rate: 44100.0 5254.1015625 is the frequnecy Max_index: 386 Sample rate: 44100.0 16623.6328125 is the frequnecy Max_index: 464 Sample rate: 44100.0 19982.8125 is the frequnecy Max_index: 231 Sample rate: 44100.0 9948.33984375 is the frequnecy Max_index: 95 Sample rate: 44100.0 4091.30859375 is the frequnecy Max_index: 112 Sample rate: 44100.0 4823.4375 is the frequnecy Max_index: 260 Sample rate: 44100.0 11197.265625 is the frequnecy Max_index: 383 Sample rate: 44100.0 16494.43359375是频率 Max_index:458 采样率:44100.0 19724.4140625 是频率 Max_index:17 采样率:44100.0 732.12890625 是频率 Max_index:129 采样率:44100。0 5555.56640625 is the frequnecy Max_index: 262 Sample rate: 44100.0 11283.3984375 is the frequnecy Max_index: 259 Sample rate: 44100.0 11154.19921875 is the frequnecy Max_index: 0 Sample rate: 44100.0 0.0 is the frequnecy Max_index: 404 Sample rate: 44100.0 17398.828125 is the frequnecy Max_index : 471 Sample rate: 44100.0 20284.27734375 is the frequnecy Max_index: 119 Sample rate: 44100.0 5124.90234375 is the frequnecy Max_index: 239 Sample rate: 44100.0 10292.87109375 is the frequnecy Max_index: 385 Sample rate: 44100.0 16580.56640625 is the frequnecy Max_index: 485 Sample rate: 44100.0 20887.20703125 是频率 Max_index:14 采样率:44100.0 602.9296875 是频率 Max_index:384 采样率:44100.0 16537.5 是频率 Max_index:12 采样率:44100。0 516.796875 is the frequnecy Max_index: 342 Sample rate: 44100.0 14728.7109375 is the frequnecy Max_index: 369 Sample rate: 44100.0 15891.50390625 is the frequnecy Max_index: 15 Sample rate: 44100.0 645.99609375 is the frequnecy Max_index: 22 Sample rate: 44100.0 947.4609375 is the frequnecy Max_index :395 采样率:44100.0 17011.23046875 是频率 Max_index:26 采样率:44100.0 1119.7265625 是频率 Max_index:386 采样率:44100.0 16623.6328125 是频率4609375 是频率 Max_index:395 采样率:44100.0 17011.23046875 是频率 Max_index:26 采样率:44100.0 1119.7265625 是频率 Max_index:386 采样率:44100.0 16623.6328125 是频率4609375 是频率 Max_index:395 采样率:44100.0 17011.23046875 是频率 Max_index:26 采样率:44100.0 1119.7265625 是频率 Max_index:386 采样率:44100.0 16623.6328125 是频率

0 投票
0 回答
415 浏览

python - 对 wav 文件 python 的部分执行傅里叶变换

是否可以将 wav 文件拆分为 .2 秒的部分,然后对每个部分执行傅里叶变换以获得每个部分的频率分布?

具体来说,如果我只关心 2 或 3 个特定频率,是否有更简单的方法可以找到每个部分中每个频率的幅度?我在另一篇文章中看到有人提到使用 Goertzel 算法来查找特定频率

0 投票
1 回答
374 浏览

contour - 从 Praat 音高文件中提取文本到另一个文本文件

我想知道是否有人可以帮助我解决一个棘手的问题,即将 Praat Pitch 轮廓的时间和频率提取到 txt 文件中。

我从

我想去:

如果脚本可以读取“dx =”中的信息并计算 x 坐标的时间,那就太好了。

在此先感谢您的帮助。

0 投票
1 回答
726 浏览

matlab - 语音信号的手动音高估计

我是语音处理的新手。所以请原谅我的无知。我收到了一个简短的语音信号(10 秒),并被要求使用 MATLAB 或 Wavesufer 软件手动注释音高。现在如何找到语音信号的音高?是否有任何理论资源可以帮助解决这个问题?我尝试使用 Wavesurfer 绘制信号的音高轮廓。对吗?

编辑 1:我的工作是为我们的数据应用各种音高检测算法并比较它们的准确性。所以手动注释的音高作为参考。

更新 1:我通过区分 EGG (dEGG) 信号获得了 GCI (Glottal Closure Instants),而 dEGG 中的峰值是 GCI。两个连续 GCI 之间的时间间隔是音调周期 (s)。音调周期的倒数是音调(hz)。

更新 2:SIGMA 是一种著名的自动 GCI 检测算法。

感谢大家。

0 投票
1 回答
6145 浏览

android - 安卓音频处理库

有谁知道android上的音频处理库?我需要提取音高和语音功率(强度)。

0 投票
1 回答
261 浏览

android - 在单独的线程中录制音频并估计音高

我是 Android 线程的新手,我试图找出在 Android 的单独线程中记录和估计音高的正确/最佳方法。

我需要

  • 从 UI 线程开始记录/估计
  • 接收从后台线程到 UI 线程的音调
  • 从 UI 线程停止记录/估计

你能帮我吗?