2017-02-13 17 views
2

Я заинтересован в использовании аудиофайла в качестве записи событий, происходящих во времени. То есть у меня будет несколько потоков данных, которые нужно выровнять по времени, и я хотел бы использовать аудиофайл в качестве ссылки. Итак, мне интересно, можно ли получить фактическую временную базу для аудиопотока, как указано относительно часов реального времени?
Я ценю, что можно определить продолжительность аудиоклипа из отсчета и частоты дискретизации (скажем, 16 кГц). Для коротких клипов это, вероятно, хорошая оценка, но для длинных (многочасовых записей) насколько точна будет эта оценка? Я бы хотел поддерживать точность в секундах в течение нескольких часов.Как получить точную временную базу звука

Иными словами, записывает ли аудиофайл фактическое время начала и окончания аудиозаписи, как указано в RTC (часы реального времени). Это позволит генерировать временную базу для каждого образца в аудиофайле. Если да, могу ли я получить эти данные из аудио-библиотеки python?

Я использую MP4/AAC для кодирования на платформе Android и pydub для последующей обработки.

Спасибо.

+0

Я не думаю, что аудиозапись имеет точность во второй раз. [много людей] (https://www.google.com/search?client=safari&rls=ru&q=audio+recording+drift&ie=UTF-8&oe=UTF-8) обнаружили «дрифт» в своих аудиозаписях и разработали различные стратегии получения нескольких (независимых) записей одного и того же события для правильного выравнивания. Подкасты, в частности, где каждый хост записывает себя локально, а затем объединяет записи впоследствии – Jiaaro

ответ

0

Мы пришли с ответом, который может показаться клопом, но, честно говоря, для нас это очень хорошо работает. Похоже, что спецификация аудиоформата не позволяет хранить временные коды для начала и конца сеанса. Таким образом, вместо этого мы закодировали начальную отметку времени, с миллисекундным разрешением, с момента нажатия кнопки записи, в виде строки в имени файла («2017-02-13_10-04-27-943») и записи аудио сессии. Затем, когда запись остановлена, мы схватили еще одну метку времени, вычислили разницу во времени в миллисекундах, а затем добавили продолжительность в виде строки в имени файла сразу после закрытия файла («Dur123456»). Таким образом, время начала и продолжительность привязаны к RTC (часы реального времени) на телефоне Android. Затем мы можем переназначить временную базу WAV/PCM на истинную продолжительность. Как оказалось, «16 кГц» на самом деле не 16 000 Гц. Мы находим ошибки порядка секунд в течение 10 минут аудиозаписи. Это может показаться не очень много, но для многочасовых записей это добавляет. Благодарю.