Перейти к содержанию

Обработанный микрофон Лайт 2

Передача штатного канала vqe_0 на Linux-ПК для внешнего голосового ассистента. Это выход после обработки VQE, выбранный в конфигурации как вход Алисы. Общая схема — «Голосовой тракт Алисы».

Проверено на Лайт 2 YNDX-00028 / Plum, прошивка 0.369.1.50.4794654278.20261021.133, ядро 4.9.113 aarch64, userspace ARM32. У этой конфигурации два микрофонных канала и один опорный канал динамика на входе 48 кГц; обработанный выход — моно 16 кГц. Число каналов других моделей нужно проверять отдельно.

Запуск готового моста

Если уже работает нативный клиент Alisa Voice, остановите его в CLI перед установкой моста: одновременно микрофонами и динамиком управляет один режим.

  1. Настройте root и SSH на колонке.
  2. Установите Alisa Voice по инструкции. Выберите режим «Мост». Нужны Linux-ПК с PipeWire-Pulse или совместимым PulseAudio, Python 3.10+ и Chromium; на колонке — штатный Quasar, socat и aplay. Компилятор для готового пакета не нужен.
  3. Если требуется только микрофон для другого приложения, пропустите вход в ChatGPT и тест его голосового ответа в мастере. Для захвата звука этот аккаунт не нужен.
  4. Если мост остановлен, запустите его:

    ~/.local/bin/alisa bridge start
    
  5. Проверьте состояние в другом терминале:

    ~/.local/bin/alisa bridge status
    

В состоянии должны быть microphone_source: vqe и microphone_rate: 16000. Виртуальный источник для приложений на ПК называется "alice_station_mic". CLI выбирает VQE по умолчанию; переменная окружения в службе не требуется. Автозапуск настраивается в меню «Настройки» режима «Мост».

Для нативного ChatGPT передавать микрофон на ПК не нужно: клиент получает VQE-поток на самой колонке.

Как получен поток

Исходник vqe_tap.c копирует выход экспортированной функции YandexVqeC_GetOutputChannelData только для типа 6, канала 0. Исходная функция вызывается; её буфер, возвращаемое значение и errno сохраняются. Проверенный формат — нормализованный float32. Модуль преобразует его в PCM S16_LE с масштабом 32768, насыщением и обработкой NaN/Inf.

Данные передаются неблокирующими Unix-датаграммами до 160 сэмплов, то есть до 10 мс. Медленный или отсутствующий приёмник не должен задерживать штатный аудиопоток: копии могут отбрасываться. Далее мост передаёт PCM через SSH в виртуальный микрофон ПК. Для моно 16 кГц это 32 000 байт/с PCM, без учёта накладных расходов транспорта.

Мост создаёт отдельный временный профиль launch.bridge.json в /data/opt/alice-voice и перезапускает Quasar для загрузки модуля через LD_PRELOAD. Системный launch.json и библиотека VQE не переписываются. Сборка и тесты модуля доступны в build.py и test_vqe_tap.py.

Модуль совместим только с проверенной версией библиотеки

Типы каналов и ABI не документированы производителем. До смены профиля мост проверяет SHA-256 /system/vendor/quasar/libs/libyandex_evil.so:

fa7ad1544fe9ddfccedcf15acc031768345b0b8c7333bc1c0b47bc476dd4152f

Другая библиотека отклоняется. Совместимость сначала нужно исследовать; отключение проверки хеша не делает иную сборку совместимой.

Откат: вернуть штатную Алису

Отключите автозапуск и остановите мост:

~/.local/bin/alisa bridge autostart off
~/.local/bin/alisa bridge stop

Остановка удаляет временные звуковые устройства на ПК, возвращает Quasar системный профиль и перезапускает его. Для удаления модулей выберите «Установка и обслуживание → Удалить программу» в CLI. Root, SSH и вход ChatGPT сохраняются; сброс колонки не нужен.

Что проверено

  • На устройстве поток наблюдался 45 секунд: частота около 16 кГц, ненулевой RMS, процесс Quasar не сменился в течение замера.
  • Хостовые тесты проверяют выбор канала, преобразование PCM, сохранение исходного буфера и errno, ошибки, отсутствие и переполнение приёмника.
  • Количественное улучшение распознавания и эхоподавления не измерено.