使用网络音频记录来自麦克风的低音量输入 API
Record Low Volume Input from Microphone using Web Audio API
我正在尝试弄清楚如何使用网络音频 API 来记录来自麦克风的低音量输入。所以基本上我希望以从 0Hz 到 100Hz 左右的低频或分贝进行记录。
如有任何帮助,我们将不胜感激。谢谢
这就是我到目前为止所得到的:
if (!navigator.getUserMedia) {
navigator.getUserMedia = navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
}
navigator.getUserMedia({
audio: true
}, function(stream) {
var ctx = new AudioContext();
var source = ctx.createMediaStreamSource(stream);
var gainNode = ctx.createGain();
source.connect(gainNode);
gainNode.connect(ctx.destination);
document.getElementById('volume').onchange = function() {
gainNode.gain.value = this.value;
};
gainNode.gain.value = document.getElementById('volume').value;
new Audio().play();
}, function(e) {
alert(e);
});
// For the demo only:
document.getElementById('volume').onchange = function() {
alert('Please provide access to the microhone before using this.');
}
这是HTML控件:
Volume: <input type=range id=volume min=0 max=100 value=50 step=0.01/>
据我所知,我使用这段代码所做的只是降低麦克风的输出音量。
正如我所说,我正在尝试捕获从 0Hz 到 100Hz 的低音量输入。
如果您只想记录 0 到 100 Hz 之间的频率,请使用一个或多个 BiquadFilterNodes or an IIRFilterNode 来实现截止频率为 100 Hz 左右的低通滤波器。
一般来说,您可以自行选择合适的过滤器,但 filter design page 或许会对您有所帮助。使用风险自负!
我正在尝试弄清楚如何使用网络音频 API 来记录来自麦克风的低音量输入。所以基本上我希望以从 0Hz 到 100Hz 左右的低频或分贝进行记录。
如有任何帮助,我们将不胜感激。谢谢
这就是我到目前为止所得到的:
if (!navigator.getUserMedia) {
navigator.getUserMedia = navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia;
}
navigator.getUserMedia({
audio: true
}, function(stream) {
var ctx = new AudioContext();
var source = ctx.createMediaStreamSource(stream);
var gainNode = ctx.createGain();
source.connect(gainNode);
gainNode.connect(ctx.destination);
document.getElementById('volume').onchange = function() {
gainNode.gain.value = this.value;
};
gainNode.gain.value = document.getElementById('volume').value;
new Audio().play();
}, function(e) {
alert(e);
});
// For the demo only:
document.getElementById('volume').onchange = function() {
alert('Please provide access to the microhone before using this.');
}
这是HTML控件:
Volume: <input type=range id=volume min=0 max=100 value=50 step=0.01/>
据我所知,我使用这段代码所做的只是降低麦克风的输出音量。
正如我所说,我正在尝试捕获从 0Hz 到 100Hz 的低音量输入。
如果您只想记录 0 到 100 Hz 之间的频率,请使用一个或多个 BiquadFilterNodes or an IIRFilterNode 来实现截止频率为 100 Hz 左右的低通滤波器。
一般来说,您可以自行选择合适的过滤器,但 filter design page 或许会对您有所帮助。使用风险自负!