Как рассчитать время (в виде смещения performance.timing.navigationStart
) начала аудиозаписи с микрофона с помощью API Web Audio (AudioContext/ScriptProcessor
) в Javascript?
С термином «началоаудиозапись ", я имею в виду audioTimeStamp
, показанный на рисунке ниже.Как рассчитать его?
Такой audioTimeStamp
должен быть связан с началом входного аудиопотока (чьи выборки обрабатываются обработкой события onaudioprocess
) вТочно так же mousedown
event.timeStamp
связан с действием нажатия левой кнопки мыши.
Чтобы проверить правильность вычисления audioTimeStamp
, давайте теперь предположим «мысленный эксперимент» какидеальный сценарий: мы производим звуковой импульс ровно в то же время, когда нажимаем левую кнопку мыши.Предположим, звуковой импульс найден в i-й выборке аудиобуфера, поэтому его время можно рассчитать как impulseTimeStamp = audioTimeStamp + 1000*i/ audioContext.sampleRate
.Ошибка может быть определена количественно как audioDelay = impulseTimeStamp - mousedown.event.timeStamp
: чем точнее вычисление audioTimeStamp
, тем ниже получаем audioDelay
.