作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用Web Audio API(使用麦克风作为输入设备)检测演奏的音符和和弦。在分析数据之前,需要将其映射到响度的各个频率。我从以下代码段开始:
const stream = await navigator.mediaDevices.getUserMedia({
audio: true,
video: false
});
const context = new AudioContext();
const source = context.createMediaStreamSource(stream);
const analyser = context.createAnalyser();
const data = new Uint8Array(analyser.frequencyBinCount);
analyser.getByteFrequencyData(data);
data
现在是
0
和
255
之间的值数组。现在的问题是如何将频率映射到数据阵列的响度值?
{
...
438: 128,
439: 200,
440: 255,
441: 200,
...
}
最佳答案
data[k]
中的值对应于频率k * Nyquist/frequencyBinCount
,其中Nyquist
是采样频率AudioContext.sampleRate
的一半。
我想这就是您要的。如果没有,请澄清。
关于javascript - 使用Web Audio API将频率映射到响度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59929307/
我正在使用 ffmpeg 将立体声音频文件转换为单声道。 ffmpeg -i $1 -ac 1 -ab 192k mono_$1 但是,转换后的 RMS 和峰值响度级别是不一样的。 Tests-iMa
我是一名优秀的程序员,十分优秀!