USB Audio Input запись в 3,3 раза медленнее, воспроизведение в 3,3 раза быстрее и искажено

Я разрабатываю аудиоустройство USB, которое работает как микрофон. Он производит изохронный (USB-разговор в реальном времени) аудиопоток с частотой 8000 Гц, 16-битная PCM. В Ubuntu 13.10 запись происходит примерно в 3,3 раза медленнее. То есть при записи в течение 10 секунд создается 3-секундный файл WAV, который воспроизводится слишком быстро. (Лучшее измерение отношения составляет 3,27.) Воспроизведение хуже, чем ускорено, оно также искажено. Например, подсчет "один ..... два ..... три" звучит как "bzt..bzt..bzzt". Я попробовал 3 разных аудио программы (arecord, ocenaudio, Audacity) и два разных компьютера. Смешно, если команда arecord ограничивает запись 10 секундами (--duration = 10), на самом деле это занимает около 33 секунд и приводит к 10-секундному файлу WAV. Это как если бы водитель находился во временной деформации.

Запись с микрофона на USB-гарнитуру Logitech дает хороший файл с правильной скоростью и понятным звуком. Я знаю, это звучит как плохое аудио устройство ввода USB с моей стороны, но запись с него работает нормально в Windows (через GoldWave). Моя интуиция говорит, что в аудио драйвере Ubuntu есть ошибка , когда изохронные данные поступают только с частотой 8000 Гц , что является уникальным. Большинство микрофонов предлагают через перечисление USB для выборки для вас с различными скоростями, например, 44100, 22050, 8000 и т. Д. По посторонним причинам я ограничен 8000 Гц.

Кто-нибудь еще видит что-то вроде глючного аудио-драйвера USB? Любые идеи, как получить доказательства, обвиняющие или оправдывающие драйверы Ubuntu?

0
задан 15 November 2013 в 20:16

1 ответ

Оказывается, Linux нуждается в единообразных пакетах на аудиовходе USB. Имеет значение, сколько звуковых сэмплов содержится в каждом пакете.

В моем приложении с частотой дискретизации 8000 Гц, со стандартными интервалами опроса 1 мс USB «на полной скорости», что в среднем составляет 8 выборок на пакет. Из-за причуды я отправлял свои сэмплы сгруппированными, 32 аудиосэмпла в одном пакете, затем 0, 0, 0, 32, 0, 0, 0, 32, .... Ничего плохого в этой полосе пропускания, есть много комнаты. Windows работает нормально, но Linux задыхается.

Когда я отправил семплы равномерно: 8, 8, 8, 8, ... звук прошел нормально. Я предполагаю, что что-то на низком уровне в драйверах USB-аудио в Linux делает неверные предположения. Но мой обходной путь очевиден.

0
ответ дан 15 November 2013 в 20:16

Другие вопросы по тегам:

Похожие вопросы: