You can pipe a microphone directly to AudioWorklet, using MediaStreamAudioSourceNode. Do the following in the main scope, then you can access the mic input as the input parameter of process() in the worklet scope.
input
process()
const audioCtx = new (window.AudioContext || window.webkitAudioContext)()const micStream = await navigator.mediaDevices.getUserMedia({ audio: true })const micNode = new MediaStreamAudioSourceNode(audioCtx, { mediaStream: micStream })micNode.connect(yourAudioWorkletNode)yourAudioWorkletNode.connect(audioCtx.destination)
const audioCtx =
new
(window.AudioContext || window.webkitAudioContext)()const micStream = await navigator.mediaDevices.getUserMedia({ audio: true })const micNode = new MediaStreamAudioSourceNode(audioCtx, { mediaStream: micStream })micNode.connect(yourAudioWorkletNode)yourAudioWorkletNode.connect(audioCtx.destination)
Awesome! This works: https://www.jefftk.com/echo-demo-v2 Thanks so much!
You can pipe a microphone directly to AudioWorklet, using MediaStreamAudioSourceNode. Do the following in the main scope, then you can access the mic input as the
input
parameter ofprocess()
in the worklet scope.Awesome! This works: https://www.jefftk.com/echo-demo-v2 Thanks so much!