Получаем ли мы все данные с помощью createMediaStreamSource в webaudio? - PullRequest
0 голосов
/ 27 ноября 2018

Я использую webaudio с javascript, и этот простой пример (для использования с google-chrome),

https://www -fourier.ujf-grenoble.fr / ~ faure / enseignement /javascript / code / web_audio / ex_microphone_to_array /

данные собираются с микрофона в массив в режиме реального времени.Затем мы сравниваем истинное время (t1) со временем, проведенным данными (t2), и они отличаются фиксированным отношением t2/t1 = 1.4.

Примечание: здесь истинное время t1 означает продолжительность времени, измеренную часами, т.е. полученную функцией Date (). GetTime (); тогда как время t2 = N * Dt, где N - количество данныхполучается из микрофона и Dt = 1 / (частота дискретизации) = 1/44100 сек.это время между двумя данными.

Мой вопрос: означает ли это, что частота дискретизации данных не 44100 Гц , а 30700 Гц * 2 (то есть с двумя каналами)?или это какие-то повторения в данных?

Еще один связанный с этим вопрос, пожалуйста: есть ли способ проверить, что во время такого процесса сбора данных в реальном времени мы не потеряли никаких данных?

1 Ответ

0 голосов
/ 01 декабря 2018

При быстром взгляде на ваш тестовый код вы используете AnalyserNode для определения t2 и вызываете функцию F3() через rAF.Это происходит примерно каждые 16,6 мс или 732 выборки (при 44,1 кГц).Но вы увеличиваете t2 на N = 1024 кадра каждый раз.Следовательно, ваше значение t2 примерно в 1,4 раза больше, чем фактическое количество кадров.(Это то, что вы на самом деле получаете!)

Если вы действительно хотите измерить, сколько сэмплов вы получили, вы должны делать синхронно на аудиограмме, поэтому используйте ScriptProcessorNode или * 1007.* подсчитать, сколько образцов данных было обработано.Затем вы можете увеличить t2 на правильную величину.Это должно соответствовать вашим значениям t1 более близко.Но обратите внимание, что часы, которые управляют значением t1, очень вероятно отличаются от аудио часов, которые управляют аудиосистемой.С течением времени они будут дрейфовать, хотя дрейф, вероятно, будет довольно небольшим, если вы не запускаете его несколько дней подряд.

...