gpt4 book ai didi

javascript - 如何在javascript中捕获音频?

转载 作者:行者123 更新时间:2023-12-03 03:35:42 24 4
gpt4 key购买 nike

我目前正在使用 getUserMedia(),它仅适用于 Firefox 和 Chrome,但它已被弃用并且仅适用于 https(在 Chrome 中)。有没有其他/更好的方法来获取适用于所有平台的 javascript 语音输入?

例如像 web.whatsapp.com 应用程序这样的网站如何录制音频? getUserMedia() 提示首次使用的用户允许录音,而 Whatsapp 应用程序不需要用户的许可。

我当前使用的 getUserMedia() 看起来像这样:

navigator.getUserMedia(
{
"audio": {
"mandatory": {
"googEchoCancellation": "false",
"googAutoGainControl": "false",
"googNoiseSuppression": "false",
"googHighpassFilter": "false"
},
"optional": []
},
}, gotStream, function(e) {
console.log(e);
});

最佳答案

Chrome 60+ 可以 require using https ,因为 getUserMedia 是一个强大的 feature 。 API 访问不应在非安全域中工作,因为 API 访问可能会泄露给非安全参与者。不过,Firefox 仍然支持通过 httpgetUserMedia

我一直在使用RecorderJS它很好地达到了我的目的。这是一个代码示例。 (source)

function RecordAudio(stream, cfg) {

var config = cfg || {};
var bufferLen = config.bufferLen || 4096;
var numChannels = config.numChannels || 2;
this.context = stream.context;
var recordBuffers = [];
var recording = false;
this.node = (this.context.createScriptProcessor ||
this.context.createJavaScriptNode).call(this.context,
bufferLen, numChannels, numChannels);

stream.connect(this.node);
this.node.connect(this.context.destination);

this.node.onaudioprocess = function(e) {
if (!recording) return;
for (var i = 0; i < numChannels; i++) {
if (!recordBuffers[i]) recordBuffers[i] = [];
recordBuffers[i].push.apply(recordBuffers[i], e.inputBuffer.getChannelData(i));
}
}

this.getData = function() {
var tmp = recordBuffers;
recordBuffers = [];
return tmp; // returns an array of array containing data from various channels
};

this.start() = function() {
recording = true;
};

this.stop() = function() {
recording = false;
};
}

用法很简单:

var recorder = new RecordAudio(userMedia);
recorder.start();
recorder.stop();
var recordedData = recorder.getData()

编辑:您可能还想检查此 answer如果没有任何效果。

关于javascript - 如何在javascript中捕获音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34820578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com