Голосовой помощник Алекса на Raspberry Pi

Amazon Echo — это небольшой голосовой помощник для дома с “живущей” внутри Алексой, но если у вас есть под рукой одноплатный компьютер Raspberry Pi 3b (далее RPi) — вы можете сделать своего собственного помощника. Правда Алекса общается исключительно на английском языке, но я думаю это не будет для вас помехой.

Идея сделать голосового помощника на RPi возникала не случайно. Дело в том, что голосовые помощники, доступные сейчас на рынке, соединяются с Интернетом исключительно по Wi-Fi, а мне был нужен девайс, который подключается сетевым кабелем Ethernet к разъему RJ45, т.к. все мои устройства дома подключены к Интернету через сетевые кабели по собственным соображениям. Wi-Fi я включаю по мере необходимости, в остальное время он находится в выключенном состоянии. Единственный девайс, доступный на рынке с входом RJ45 — это голосовой помощник Sonos One, но стоит от порядка 15 тысяч рублей (вместе с доставкой), и поэтому функциональность Алексы я сначала решил протестировать на RPi. Наибольший интерес представляет использование Алексы для управления устройствами “умного дома”. На данный момент Алекса может включать и выключать мой настольный компьютер используя сервис IFTTT в сочетании с моим домашним веб-сервером. Следующим этапом будет установка радио-розеток на 433Мгц, но об этом будет отдельная инструкция.

*** Для  установки самой свежей версии Алексы, Шаг 4 можно пропустить и перейти к разделу Дополнение.

Что вам понадобится:

Шаг 1 : Установка системы Raspbian Buster Lite на SD карту

Сначала на RPi нужно поставить операционную систему Raspbian Buster Lite. Это легкая терминальная версия без графической оболочки. Скачивание программ и установку системы я производил с другой Linux машины с оболочкой Kubuntu. Это можно также сделать и в Windows.

Скачиваем Raspbian Buster Lite здесь.

Скачиваем прошивальщик micro SD карточки здесь. Он называется balenaEtcher.

Распаковываем скаченный архив balena-etcher-electron-1.5.73-linux-ia32.zip. (Название версии вашего архива, возможно, будет отличаться, т.к. программа постоянно обновляется)

Если у вас нет разархиватора unzip, то ставим его через терминал:

sudo apt-get install unzip

Далее заходим в папку со скаченным архивом и вводим команду:

sudo unzip balena-etcher-electron-1.5.73-linux-x64.zip

Он распакует файл в текущую папку. Затем запускаем balenaEtcher:

sudo ./balenaEtcher-1.5.70-x64.AppImage

Вставляем нашу micro SD карту в адаптер и вставляем его в USB разъем.

В открывшемся окне выбираем скачанный образ Raspbian Buster Lite, местоположение нашей micro SD карточки, и нажимаем Flash (Прошивка).

Процесс заливки системы начался.

После завершения процесса вы увидите следующее окно.

Все, на этом установка Raspbian Buster Lite закончена, вытаскиваем micro SD-карточку и вставляем ее в RPi.

Шаг 2 : Первый запуск Raspbian Buster Lite

Первым делом наклеиваем наши мини-радиаторы на чип Broadcom BCM2837 и чип SMSC LAN9514.

Подключаем к RPi USB микрофон, колонки, клавиатуру, а саму RPi подключаем через HDMI к телевизору, подключаем сетевой кабель в разъем RJ45, подаем питание 5 вольт.

Когда система загрузится, вы увидите приглашение ввести логин и пароль. По умолчанию логин – pi, а пароль – raspberry.

Самое первое — обновим пакеты системы:

sudo apt-get update && sudo apt-get upgrade && sudo apt-get dist-upgrade

Далее нужно настроить USB микрофон. Если вы будете использовать микрофон Respeaker (это очень крутой микрофон), то для его детальной настройки на RPi прочитайте мануал здесь (мануал на английском):

В моей сборке Алексы я использовал веб-камеру с микрофоном от Sony для общения по Skype на телевизорах Sony. Но так как Skype прекратил поддержку VOIP мессенджера на моем телевизоре, то веб-камеру можно было смело выкидывать, но я нашел ей другое применение. Respeaker я уже заказал на Aliexpress, и скоро он будет работать в качестве основного микрофона.

В терминале вводим:

arecord -l

Затем найдите свой USB-микрофон в списке устройств. Запишите номер после card и номер после device.

Затем нужно настроить колонки.

В терминале вводим:

sudo raspi-config

Далее идем в Advanced options > Audio и выбираем Force 3.5mm (‘headphone’) jack.

Далее в терминале вводим команду:

aplay -l

Найдите свои колонки в списке устройств воспроизведения. Запишите номер после card и номер после device. Обратите внимание, что разъем 3.5мм обычно обозначается как аналоговый или bcm2835 ALSA (не bcm2835 IEC958 / HDMI).

Далее, заходим в директорию:

cd /home/pi

В ней создаем файл .asoundrc:

nano .asoundrc

Используйте приведенную ниже конфигурацию, но замените <card number> и <device number> числами, которые вы записали на предыдущем шаге. Сделайте это для pcm.mic и pcm.speaker. Только вводите числа без скобок.

pcm.!default {
type asym
capture.pcm "mic"
playback.pcm "speaker"
}
pcm.mic {
type plug
slave {
pcm "hw:<card number>,<device number>"
}
}
pcm.speaker {
type plug
slave {
pcm "hw:<card number>,<device number>"
}
}

Теперь отрегулируйте громкость воспроизведения. В терминале вводим:

alsamixer

Нажмите клавишу со стрелкой вверх, чтобы установить уровень громкости воспроизведения около 70.

Сделайте тест звука (это будет голос человека) набрав в терминале команду:

speaker-test -t wav

Нажмите Ctrl + C, когда закончите. Если вы ничего не слышите при запуске, проверьте подключение динамика.

Затем запишите короткий аудио-файл, набрав в терминале следующую команду:

arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw

Проверьте аудиозапись, воспроизведя ее командой в терминале:

aplay --format=S16_LE --rate=16000 out.raw

Если запись и воспроизведение работают, то вы сделали все правильно.

Шаг 3 : Регистрируемся на Amazon

Прежде чем вы сможете приступить к настройке Raspberry Pi, вам необходимо создать учетную запись Amazon Developer (Разработчик Amazon). Это можно сделать, перейдя в Amazon Developer Services (Службы разработчика Amazon), следуя процедуре и инструкциям для создания учетной записи.

Теперь, когда вы вошли в свою учетную запись Amazon Developer, нужно настроить службу Алексы под учетной записью разработчика, чтобы вы могли ее пользоваться на Raspberry Pi.

Вернитесь на домашнюю страницу Amazon Developer Services и выберите Amazon Alexa из предложенных опций.

Затем, в самом верхнем правом углу экрана вы увидите икону с вертикальным троеточием. Нажмите на нее мышкой и выберите Alexa Voice Service (Голосовая служба Алексы).

На следующей странице нужно нажать на кнопку Products (Продукты).

Затем жмем на Create Product (Создать продукт) на следующей странице.

Далее по полям:

На этой странице вам нужно будет ввести Product name (Название продукта) и Product ID (Идентификатор продукта). Я ввел AlexaPi, для обоих полей, но Вы можете использовать свой собственный Product name и Product ID.

Далее, выберите Device with Alexa built-in (Устройство со встроенной Алексой) в качестве типа продукта и выберите No (Нет) для Will your device use a companion app? (Будет ли ваше устройство использовать сопутствующее приложение?)

В качестве категории продукта выберите Other (Please specify) / Другое (просьба указать), а под тестовым полем ниже введите AlexaPi в качестве описания.

Установите флажки Hands-free (Громкая связь) и Far-field (Дальняя зона) на How will end users interact with your product? (Как пользователи будут взаимодействовать с вашим продуктом?), а затем для оставшихся радиокнопок выберите No (Нет) для всех из них. Затем нажмите кнопку Next (Далее).

Теперь вам нужно создать профиль безопасности для продукта, который вы только что создали. Нажмите Create New Profile (Создать новый профиль) и в Security Profile Name (Имя профиля безопасности) и Security Profile Description (Описание профиля безопасности) введите AlexaPi. Снова нажмите Next (Далее).

Теперь, когда мы завершили первоначальную настройку продукта, нам нужно добавить несколько URL-адресов в раздел Allowed origins (Разрешенные источники) и Allowed return URLs (Разрешенные возвратные URL) в нижней части страницы.

Для этого раздела вам понадобится IP-адрес вашего RPi в домашней локальной сети. Чтобы его узнать, вы можете ввести ifconfig в терминале вашего RPi. Рекомендую сделать IP-адрес RPi статическим. Для этого Вам нужно сделать следующее:

В терминале вашего RPi вводим:

sudo nano /etc/dhcpcd.conf

Затем в самом верху добавляем строки (части IP-адресов “10.50” и “10.1” у вас будут своими):

interface eth0 # В моем случае это проводное соединение
static ip_address=192.168.10.50/24 # Локальный IP-адрес RPi
static routers=192.168.10.1 # Локальный IP-адрес вашего роутера
static domain_name_servers=192.168.10.1 # Локальный IP-адрес вашего роутера

Сохраняем файл и перегружаем RPi:

sudo reboot

Возвращаемся на страницу Службы разработчика Amazon и вводим URL-адреса.

Под заголовком Allowed Origins (Разрешенные источники) добавьте 4-е строки с URL-адресами:

http://localhost:5050

https://localhost:5050

http://192.168.10.50:5050

https://192.168.10.50:5050

Затем под заголовком Allowed return URLs (Разрешенные возвратные URLs) добавьте 4-е строки с URL-адресами:

http://localhost:5050/code

https://localhost:5050/code

http://192.168.10.50:5050/code

https://192.168.10.50:5050/code

Сделав это, примите условия соглашения (I agree to Amazon Developer Services Agreement, including the Alexa Voice Service Program Requirements) нажмите кнопку Finish (Готово).

Теперь к продукту необходимо добавить некоторые способности, поэтому нажмите на название продукта и нажмите Capabilities (Способности) с левой стороны. Отметьте Named Timers and Reminders (Именованные таймеры и напоминания), Display Cards (Отображать карточки) и Display Cards with Text (Отображать карточки с текстом).

Сделав это, нажмите кнопку Update (Обновить) в нижней части страницы. Теперь пришло время перейти к RPi.

Я рекомендую на этом этапе подключиться к RPi через SSH, т.к. при установки приложения потребуется вводить Client ID (Идентификатор клиента), Client secret (Секретный ключ клиента) и Security Profile ID (Идентификатор профиля безопасности). Эти ключи очень длинные и их лучше вводить путем копирования, чтобы исключить ошибки.

По умолчанию SSH доступ в RPi закрыт и его нужно открыть. В терминале RPi вводим:

sudo systemctl enable ssh
sudo systemctl start ssh

По умолчанию логин для входа – pi, пароль для входа – raspberry. Сразу после входа на RPi через SSH рекомендую изменить пароль. В терминале наберите:

sudo raspi-config

Выбираем в меню Change User Password и меняем пароль.

Client ID (Идентификатор клиента) и его Client secret (секретный ключ) можно найти на любой странице созданного вами продукта, а Security Profile ID (идентификатор профиля безопасности) можно найти на вкладке Security Profile (Профиль безопасности).

Шаг 4 : Установка AlexaPi

Теперь, когда вся подготовка завершена, пришло время установить сервис Alexa на наш RPi. Для этого мы будем использовать программное обеспечение под названием AlexaPi.

Хотя AlexaPi больше не находится в стадии активной разработки, она все еще хорошо работает на момент написания данной инструкции.

Заходим в терминал RPi через SSH или напрямую.

Заходим в папку /opt:

cd /opt

Поскольку репозитарий AlexaPi размещается на GitHub, нам потребуется git:

sudo apt-get install git

Клонируем репозитарий:

sudo git clone https://github.com/alexa-pi/AlexaPi.git

Запускаем установочный скрипт:

sudo ./AlexaPi/src/scripts/setup.sh

Далее вы должны следовать подсказкам, которые появляются в терминале, многие из них будут заполнены, но вас спросят, хотите ли вы, чтобы функционал AirPlay Алекса запускала автоматически при запуске системы. Вам также нужно будет ввести ключи продукта с Amazon Developer Services.

Обратите внимание на предложенную опцию Do you want to run AlexaPi on boot. Нужно выбрать цифру 1. Тогда Алекса будет запускаться автоматически при каждой перезагрузке системы.

Когда установщик попросит ввести Device Type ID (идентификатор типа устройства), введите Product ID (идентификатор продукта). В данном случае введите AlexaPi.

После этого вам необходимо скопировать и вставить свой Client ID (Идентификатор клиента), Client secret (Секретный ключ клиента) и Security Profile ID (Идентификатор профиля безопасности) в терминал.

После их ввода в терминале появится URL-адрес для входа с вашу учетную запись Amazon. Скопируйте его и вставьте в браузер. Затем нужно нажать кнопку Allow (Разрешить).

Теперь вы можете закрыть окно, и AlexaPi настроен!

Перегружаем RPi:

sudo reboot

После перезагрузки Алекса должна сказать – “Hello” Можно начинать спрашивать Алексу, например сказать — “Alexa”, она должна сразу ответить – «Yes”. И вы сразу же после этой фразы продолжаете – “Please play some music”.

P/S

И в заключении хочу порекомендовать STL модель корпуса для микрофона ReSpeaker для печати на 3D-принтере. Модель корпуса можно скачать здесь.

Есть модель данного микрофона сразу в заводском корпусе, но она на 2-3 тысячи дороже.

Надеюсь, данная инструкция поможет вам в создании собственного голосового помощника!

Peace!

Дополнение

Друзья, после многочисленных тестов и проверок, я пришел к выводу, что Алексу на RPi нужно компилировать из самого свежего AVS SDK. Как оказалось, AlexaPi использует очень старый SDK и сама Алекса очень медленная. Зачастую музыка, которая проигрывается на AlexaPi прерывается сама по себе или Алекса реагирует на что-то и постоянно говорит Yes. :) Я скомпилировал Алексу из AVS SDK версии 1.18.0 и был приятно удивлён быстротой ответов от Алексы и стабильностью проигрывания музыки.

Порядок действий на компиляции SDK такой:

1. Ставим чистый Raspbian Buster Lite на RPi.

2. Возвращаемся на Amazon Developers Services к нашему продукту AlexaPi. Идём в раздел Security Profile / Other devices and platforms и в поле Client ID name пишем AlexaPi. После этого, нажимаем Generate ID. Потом у вас появится опция для скачивания файла config.json c вашим Client ID внутри. Этот файл нужно будет загрузить в домашнюю директорию на RPi /home/pi. Если вы на Линуксе и, скажем, файл в домашней папке, то копируем его на RPi:

scp config.json pi@192.168.0.XXX:/home/pi

Далее, идём на Login with Amazon Console и выбираем Security Profile — AlexaPi. В следующем окне в поле Consent Privacy Notice URL укажите любой URL и нажмите Save.

3. Далее, заходим на RPi:

ssh pi@192.168.0.XXX

И затем вводим в терминале:

wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh 
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh 
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh

Далее, нам нужно установить Gstreamer и его дополнения:

sudo apt install libgstreamer1.0-dev gstreamer1.0-plugins-{bad,base,good,ugly} gstreamer1.0-{omx,alsa}

После установки вводим следующую команду:

cd /home/pi/
sudo bash setup.sh config.json

Начнется процесс компиляции Алексы из SDK. Следуйте указаниям процесса установки, т.к. придётся ввести слово AGREE при установке сторонних библиотек (Third-party Libraries) и yes при установке движка активационного слова (Sensory Wake Word).

4. Теперь проверим работоспособность Алексы и назначим токен обновления. В терминале введите:

sudo bash startsample.sh

После этой команды вы увидите серию быстро прокручиваемых отладочных сообщений в окне терминала с надписью Проверка авторизации (Checking for authorization). Прокрутите сообщения отладки и найдите поле с URL-адресом, оно содержит ваш код авторизации Alexa.

Войдите в ваш аккаунт Амазон по адресу:

https://amazon.com/us/code

и введите данный код (при этом не останавливая Алексу в терминале).

После подтверждения кода, остановите Алексу — CTRL+C и запустите заново. Попробуйте сказать: “Alexa, what time is it?” и она должна ответить.

4. Теперь нам нужно сделать 2-е вещи — назначить звуковой сигнал для индикации того, что Алекса слушает вас после активационного слова и сделать запуск Алексы автоматически после перезагрузки RPi.

Загрузим звуки для Алексы с сайта Амазон со страницы:

https://developer.amazon.com/alexa/console/avs/previews/resources

Далее, нажимаем на Alexa sound library for AVS (v1.2)

После скачивания файла переименуйте его в sounds.zip (для удобства) и скопируйте на RPi:

scp sounds.zip pi@192.168.0.XXX:/home/pi

Далее, разархивируете zip архив:

sudo unzip sounds.zip

Зайдите в папку ‘Alexa sound library for AVS’/ful и оттуда скопируйте звуки в папку ~/sounds:

cd 'Alexa sound library for AVS'/ful
sudo cp * ~/sounds

Возвращаемся в домашнюю папку:

cd ~

Далее, открываем файл UIManager.cpp:

sudo nano /home/pi/avs-device-sdk/SampleApp/src/UIManager.cpp

После строки #include <sstream> добавляем #include <cstdlib>.

Затем идём в самый конец файла и после ConsolePrinter::prettyPrint(«Listening…»); вставляем:

system("play /home/pi/sounds/ful_ui_wakesound.wav");

Также, в файле UserInputManager.cpp нужно сделать вставку. Открываем сам файл:

sudo nano /home/pi/avs-device-sdk/SampleApp/src/UserInputManager.cpp

После блока кода:

SampleAppReturnCode UserInputManager::run() {
    bool userTriggeredLogout = false;
    m_interactionManager->begin();
    while (true) {

Добаляем строки:

std::this_thread::sleep_for(std::chrono::hours(1));
continue;

Чтобы в итоге получилось вот так:

SampleAppReturnCode UserInputManager::run() {
    bool userTriggeredLogout = false;
    m_interactionManager->begin();
    while (true) {
        std::this_thread::sleep_for(std::chrono::hours(1));
        continue;

Этот дополнительный код остановит любую обработку ввода данных с терминала и Алекса перестанет зависать.

Перекомпилируем Алексу:

cd ~
sudo bash setup.sh config.json

Теперь сделаем запуск Алексы как службы.

Создаем файл alexa.sh в домашней папке:

sudo nano alexa.sh

И вставляем в него строки:

#!/bin/bash

cd "/home/pi/build/SampleApp/src"
PA_ALSA_PLUGHW=1 ./SampleApp "/home/pi/build/Integration/AlexaClientSDKConfig.json" "/home/pi/third-party/alexa-rpi/models" NONE

Сохраняем файл и делаем его исполняемым:

sudo chmod +x alexa.sh

Далее, создаем файл alexa.service:

sudo nano /lib/systemd/system/alexa.service

И вставляем в него следующие строки

[Unit]
Description=Amazon Alexa
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/home/pi/alexa.sh
Restart=on-abort
User=pi
Group=pi

[Install]
WantedBy=multi-user.target

Сохраняем файл и активируем службу:

sudo systemctl enable alexa.service

Далее, изменим пользователя/группу папки ~/db и всех ее файлов для того, чтобы Алекса смогла проигрывать таймеры, напоминалки и будильники:

sudo chown -R pi:pi ~/db

Перезапускаем RPi и наслаждаемся голосовым управлением Алексой!

sudo reboot

Дополнение от 18.03.2020: Друзья, позавчера мне пришла плата микрофона дальнего действия от ReSpeaker. Я взял ReSpeaker c 7-ю цифровыми микрофонами и чипом XMOS2000 + красивый футляр. Микрофон я взял на eBay, а футляр напрямую от Seeed Studio. Все вместе обошлось в 51 доллар США вместе с доставкой до РФ.

ReSpeaker Mic Array

ReSpeaker Mic Array

В коробке с платой микрофона был отдельно вход Jack 3.5mm, его пришлось припаять вручную. Также наружный диаметр входа был 5.5мм, а отверстия под него в футляре 5мм. Оцените настоящее китайское качество. :) Пришлось взять сверло 6мм и на станке аккуратно увеличить внутренний диаметр до 6мм. Также, выемка под вход microUSB находится в 2-х миллиметрах от самого разъёма. Т.е. сделано все криво и через … (здесь нужно вставить подходящее слово). Шнур с microUSB кое-как достал до разъёма и питание подать удалось.

Что могу сказать про микрофон. Пока ничего хорошего. Обновил у него прошивку, в тишине слышит метров за 6, но вот при слабом шуме не слышит вообще. Мой старый микрофон от камеры Sony и то слышал меня при слабом шуме. Также, управление светодиодами для него написано на Python через bytearray, а этот язык очень медленный и при активационном слове светодиоды загораются с задержкой в полсекунды. Управления через C++ в интернете нет. Попробовал библиотеки Python для управления светодиодами скомпилировать при помощи Cyphone, чтобы хоть немного ускорить их работу, но это не помогло.

Что мне понравилось, так это то, что вывод звука я сделал через плату микрофона, а загрузку драйверов (snd_bcm2835) на самой RPi я отключил (т. е. отключил вывода звука через Jack 3.5mm) и температура процессора RPi упала на 20 градусов!

Проверить температура процессора на RPi можно командой:

vcgencmd measure_temp

Также перестал отваливаться сетевой интерфейс. Алекса работает без зависаний круглыми сутками!

Чтобы сделать также с платой микрофона Respeaker, отрываем файл:

sudo nano /etc/modprobe.d/raspi-blacklist.conf

и внизу файла вставляем строку (это заблокирует загрузку стандартного аудио драйвера на RPi):

blacklist snd_bcm2835

Также рекомендую отключить видео-драйвера, т.к. они нам не понадобятся в данной системе:

blacklist videobuf2_dma_contig
blacklist videobuf2_vmalloc
blacklist videobuf2_memops
blacklist videobuf2_v4l2
blacklist videobuf2_common

Потом открываем файл config.txt (sudo nano /boot/config.txt) и комментируем строку:

#dtparam=audio=on

Файл .soundrc у меня выглядит сейчас так:

pcm.!default { 
   type asym 
   playback.pcm { 
       type plug 
       slave.pcm "hw:1,0" 
   } 
   capture.pcm { 
       type dsnoop 
       ipc_key 5432 
       slave { 
           pcm "hw:1,0" 
           buffer_size 96000 
       } 
   } 
}

Чтобы управлять светодиодами на Python, нужно сделать следующее.

Ставим библиотеку ReSpeaker для Python:

sudo pip3 install respeaker

Далее, чтобы управлять светодиодами от имени пользователя pi, а не sudo открываем файл 51-respeaker.rules:

sudo nano /etc/udev/rules.d/51-respeaker.rules

и вставляем в него следующее:

SUBSYSTEM=="input", GROUP="input", MODE="0666" 
SUBSYSTEM=="usb", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="XXXX", MODE:="666", GROUP="plugdev"

Значения ATTRS{idVendor} и ATTRS{idProduct} у вас будут своими. Чтобы их узнать, набираем команду:

lsusb

Вы увидите что-то подобное для своего ReSpeaker:

Bus 001 Device 002: ID 0424:9514

где 0424 — ATTRS{idVendor}, а 9514 — ATTRS{idProduct}.

Сохраняем файл и перегружаем правила:

sudo udevadm control —reload-rules

Далее, скачиваем пакеты необходимые для работы ReSpeaker:

sudo pip3 install pyusb
sudo pip3 install webrtcvad

И скачиваем саму библиотеку:

git clone https://github.com/respeaker/respeaker_python_library.git

Заходим в настройки Raspbian:

sudo raspi-config

Идем в раздел Interfacing Options:

5 Interfacing Options  Configure connections to peripherals

Далее в раздел:

P4 SPI Enable/Disable automatic loading of SPI kernel module

Выбираем Yes на данный вопрос:

Would you like the SPI interface to be enabled?

Выходим из raspi-config нажимая Esc несколько раз подряд.

Звпускаем файл pixel_ring.py:

python3 ~/respeaker_python_library/respeaker/pixel_ring.py

Светодиоды на ReSpeaker должны загореться!

Дополнение от 24.03.2020: Друзья, если будете использовать ReSpeaker в качестве USB-микрофона, то советую вывод звука делать через выход 3.5mm Jack на RPi. Когда я вывел звук через 3.5mm Jack на самом микрофоне, то Алекса наглухо отказывается вас слышать при проигрывании музыки или других сторонних шумов.

Конфигурация .asoundrc сейчас стала вот такой:

pcm.!default { 
  type asym 
  playback.pcm { 
      type plug 
      slave.pcm "hw:0,0" 
  } 
  capture.pcm { 
      type dsnoop 
      ipc_key 5432 
      slave { 
          pcm "hw:1,0" 
          buffer_size 96000 
          channels 1 
          rate 16000 
          format S16_LE 
      } 
  } 
}

Profit! :)

Понравилась инструкция? Тогда поделитесь ей со своими друзьями или попробуйте написать свою собственную!

Регистрация на сайте

Оставьте свой отзыв

Вы должны Войти, чтобы оставлять отзывы.