Trim 使用网络音频 API 或其他任何方式在前端静音
Trim Silence in Front End with Web Audio API or anything else
我正在尝试 trim 在将浏览器中录制的音频文件发送给服务器存储之前,先行和尾行静音。
我一直在寻找示例以更好地理解 WebAudioApi,但是示例是分散的并且涵盖了诸如“ScriptProcessorNode”之类的已描述方法,当我找到这个示例时我以为我已经接近了
HTML Audio recording until silence?
我很想至少看到沉默被处理,我想我可以在随后使用它 trim。但是,在将示例加载到沙箱后,它似乎无法以我可以理解的方式检测静音。
如果有人有任何帮助或建议,我们将不胜感激!
虽然 ScriptProcessorNode
已被弃用,但它不会很快消失。如果可以,您应该使用 AudioWorkletNode
(但并非所有浏览器都支持)。
但是由于您在文件中有录制的音频,我会使用 decodeAudioData
对其进行解码以获得 AudioBuffer
。然后使用 getChannelData(n)
为第 n
个通道获取 Float32Array
。分析此数组,但您想确定开始处的静音结束位置和结尾处的静音开始位置。对每个 n
.
执行此操作
现在你知道 non-silent 部分在哪里了。 WebAudio 无法对此音频进行编码,因此您要么必须自己进行编码,要么让 MediaRecorder
对其进行编码,以便将其发送到您的服务器。
我正在尝试 trim 在将浏览器中录制的音频文件发送给服务器存储之前,先行和尾行静音。
我一直在寻找示例以更好地理解 WebAudioApi,但是示例是分散的并且涵盖了诸如“ScriptProcessorNode”之类的已描述方法,当我找到这个示例时我以为我已经接近了
HTML Audio recording until silence?
我很想至少看到沉默被处理,我想我可以在随后使用它 trim。但是,在将示例加载到沙箱后,它似乎无法以我可以理解的方式检测静音。
如果有人有任何帮助或建议,我们将不胜感激!
虽然 ScriptProcessorNode
已被弃用,但它不会很快消失。如果可以,您应该使用 AudioWorkletNode
(但并非所有浏览器都支持)。
但是由于您在文件中有录制的音频,我会使用 decodeAudioData
对其进行解码以获得 AudioBuffer
。然后使用 getChannelData(n)
为第 n
个通道获取 Float32Array
。分析此数组,但您想确定开始处的静音结束位置和结尾处的静音开始位置。对每个 n
.
现在你知道 non-silent 部分在哪里了。 WebAudio 无法对此音频进行编码,因此您要么必须自己进行编码,要么让 MediaRecorder
对其进行编码,以便将其发送到您的服务器。