我目前正在通过网络浏览器(.wav格式)处理音频记录,目前我们使用以下代码开始记录,并通过套接字发出数据:
async start () {
this.stream = await navigator.mediaDevices.getUserMedia({
audio: true,
video: false
})
this.audioCtx = new AudioContext()
const source = this.audioCtx.createMediaStreamSource(this.stream)
const scriptProcessor = this.audioCtx.createScriptProcessor(0, 1, 1)
source.connect(scriptProcessor)
scriptProcessor.connect(this.audioCtx.destination)
scriptProcessor.onaudioprocess = event => {
this.emit('record', event.inputBuffer.getChannelData(0))
}
return {
device: this.stream.getAudioTracks().length && this.stream.getAudioTracks()[0].label || 'Unknown',
sampleRate: this.audioCtx.sampleRate
}
虽然看起来效果很好,但似乎在发出的数据中插入了随机的无声序列(~8个连续帧,sample)。这似乎与硬件无关,因为无论使用哪种麦克风,我们都会遇到同样的问题。
我想知道这是我们收集数据的方式,也不知道我们如何发送数据导致此问题。 (可能还有如何解决)
谢谢,