问题标签 [audio-analysis]

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 投票
0 回答
22 浏览

python - essentia 的建筑轮子

import essentia 我在本地机器上安装了 anaconda。我需要使用 essentia 进行音频分析和基于音频的音乐信息检索。

但是,当我执行“ pip install essentia ”时出现错误

“essentia 的构建轮 (setup.py)...错误”

任何人都知道如何解决它?

谢谢

https://pypi.org/project/essentia/ https://essentia.upf.edu/essentia_python_tutorial.html

0 投票
0 回答
22 浏览

matlab - 从歌曲的短 wav 文件片段中获取 BPM

我正在尝试构建一个可以自动响应歌曲 bpm 变化的程序。我的目标是能够使用短于 10 秒的样本对变化做出反应。我已经阅读了几篇关于 fft 分析和高通和低通滤波器的论文。将这些论文中的长算法翻译成代码在某种程度上超出了我目前的能力。我发现这个 MatLab 解决方案对我很有效,但是当我下载他们的文件并采样他们所做的相同歌曲时,我无法回应他们的结果。当他们声称他们的程序只需要 2.2 秒的样本时,我什至将样本大小增加到 8 秒。描述此代码的网站得到了很好的解释,但在我的一生中,我无法让它工作。谁能帮我验证他们的结果和/或可能帮我找出哪里出错了?我目前正在使用 PyAudio 保存他们从 youtube 测试的歌曲片段,然后将其转换为 csv 并将其输入到提供的 MatLab 代码中

我找到的在线程序: https ://www.clear.rice.edu/elec301/Projects01/beat_sync/results.html#music

我只是在看他们项目的第一部分,他们在那里获得了歌曲的 BPM。不是他们将两首歌拼接在一起的部分。

请让我知道是否有人可以验证他们的结果!谢谢!

0 投票
0 回答
33 浏览

matlab - 对于 MATLAB mirfeatures 函数,我得到有效的解释器语法错误

在本手册页 195 之后,我运行f = mirfeatures(a),其中a是一个miraudio('mysong.wav')对象。然后我想将结果存储在f. 但是,在此命令之后出现以下错误:f.dynamics.rms{1}

以及此命令后的以下警告:f.dynamics.rms

我需要在跑步时提及这一点mirrms(a)。我没有得到任何警告。提到的命令在手册页 195 上。另外。f.dynamics.rms生成一个图形。

这是代码和音频文件

0 投票
1 回答
20 浏览

c# - 为什么将起始列表排序为歌曲样本深度(1024)大小的数字总是导致20

好的,所以我不确定如何描述这个问题,因为我是音频分析的新手,所以我将逐步解释它。

  1. 所以我在这里用 csharp 写了这个算法
  1. 这是它的作用:

onsets --> 包含找到的起始点的列表(不包括任何 0)

范围 --> 歌曲样本深度(1024)

rangemult --> 是起始列表中的最大值(so onsets.Max())除以rangeso(max DIV range)

sorted --> 列出排序的起始点被添加到

(rangemult*i2)*2f)*10f--> 我这样做是为了让值成为一个整数(这在大多数情况下不会发生,但这实际上只是为了整洁——所以在大多数情况下它可以被忽略)

原则上,该算法会将数组 ( 0.1, 0.2, 0.4, 0.45, 0.5)转换为

range = 102, 4, 8, 9, 10

range = 204, 8, 16, 18, 20

ETC...

  1. 所以鉴于此,为什么将 when1024设置为range最大值 insorted总是20

附加信息:

  • 我正在使用 lomont FFT
  • 1024 在整个发病检测算法中保持不变
  • onsets.max()像往常一样对待1(我还没有找到onsets.Max()不是 1 的实例)

如果您能就问题提供哪怕是最小的提示,我将不胜感激 - 如果这里没有足够的信息或不需要这些信息,请通知我,因为我还是新手,所以我很难用准确的方式 - 谢谢你的理解:)

0 投票
1 回答
73 浏览

java - 处理最小值中的逆 FFT

我正在尝试使用 Minim in Processing 将我的计算机麦克风输入输出到扬声器输出。该项目的目的是分析输入(麦克风,声音文件等),对其频谱进行一些更改,最后将其输出到扬声器或将内容保存在文件中(我仍然不知道如何实现最后一个功能)。

我在这篇文章https://forum.processing.org/beta/num_1256413038.html中提到了 mots 的答案,但我不能让它发挥作用:扬声器没有播放任何内容。

这是我正在使用的代码:

编辑 2021 年 12 月 31 日

这是我写下的代码:它运行时没有错误,但正如您在本OUT节中看到的那样,整个频谱中的许多频率都会引起输出并产生噪声。我认为这是由样本之间的不连续性引起的。

编码:

接受任何回复,

西蒙娜

0 投票
0 回答
60 浏览

audio - 如何使用 ffmpeg 将多个立体声音频文件转换为单声道?

我一直在尝试将一组音频文件从立体声转换为单声道类型。您能提供转换文件夹中所有文件的命令来帮忙吗?

0 投票
0 回答
15 浏览

csv - AppleScript,使用标准差来定义值

我决定将音调运动合并到我的项目中,而不是仅仅关注短单声道样本,因此除了频率和置信度读数之外,对于这部分代码,我还需要包括一些标准偏差计算。

考虑到西方音阶,将 Hertz 转换为每边 50cents(1/4 半音)的回火 12 音阶是明智的,我打算添加 microtonna 功能,但对于这项任务,设置半色调标清。因此,一旦信号偏离频率间隔比的值,我想将当前读数的平均值存储为 1 个单元格值,然后继续收集下一批读数,直到音高再次偏离(高于或低于)频率间隔比率。但是,是的,我坚持语法,想问是否有人可以提供一些帮助。

所以,我想存储平均值,从 stddev 处理程序的第一部分计算,并将其存储为一个读数,然后移动到下一个值,直到音高偏离极限,然后存储该平均值等等。通过引入置信度阈值,大多数音调异常和无用的谐波内容已被删除。所以我应该,最好的部分是能够依赖那里的信息。或者,如果我能成功获得单独的平均读数,那将有望实现。

我希望这能有所帮助,并提前感谢您的任何建议!

这就是我所拥有的,减去置信度值 shell 任务/AS 代码,并且没有 CSV,所以我只是添加了一些数字。

再次感谢

道格