c# - Dynamic Time Warping 算法对于嗡嗡声系统的查询有多合适?

标签 c# algorithm time-series dynamic-programming query-by-example

我正在尝试通过嗡嗡声系统开发一个查询,并寻找一种有效的算法来比较嗡嗡声查询的频率与数据库中的频率。似乎 Dynamic Time Wrapping 比较合适,因为它可以处理不同的速度(节奏)。

  1. 但是,即使用户用不同的和弦哼唱,这也可以用于比较吗?换句话说,以不同的音高哼唱(例如,原始歌曲在和弦 C 中……而用户在和弦 E 中演唱)
  2. 是否有任何用 C# 编写的示例代码? (找到了一些 matlab 编码,但不幸的是我对 matlab 不熟悉)。或者至少有一个教程来描述与此上下文相关的 dtw?
  3. 如果 DTW 不适合,是否还有其他适合此目的的算法? 非常感谢您的建议。提前致谢:)

最佳答案

Equal temperament调音(不是人类本身调音,而是作为一个模型)相邻音符(半音)之间的比率是 2 的第 12 次方根,或 1.0595,这样 12 个半音组成一个 Octave ,每个 Octave 音程都是频率的两倍。无论有人用什么调子哼曲子,你都应该能够确定 intervals他们通过考虑音符频率的比率来哼唱。

关于c# - Dynamic Time Warping 算法对于嗡嗡声系统的查询有多合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9418435/

相关文章:

c# - 接口(interface)和基类混合,正确的实现方式

image - 如何在不同光照条件下检测颜色

c++ - 如何返回一串字母数字字符(例如 1A003B3)中的最大值?

python - 使用重采样对齐 Pandas 中的多个时间序列

c# - 64 位 Windows 上的气球工具提示

c# - 多个 worker 同时触发重复工作

python - 将零移动到末尾 : Why does my Python Code fail the test in CodeWars?

plot - 渲染高度细化的 "zoomed out"数据

python - 如何在时间序列中的每一天的开始和结束时获取值

c# - 更新 IEnumerable 中的项目属性但该属性未保持设置?