AlexAl77

 
<<< Back

Как я заставил работать Алису на USB Audio

Настройка звука на внешней USB карте для Raspberry pi3

После того как я приобрёл внешнюю звуковую USB карту, я долго не мог заставить ее работать, а после того как она заработала, перестала говорить Алиса.

И так по порядку, что я в итоге сделал, что бы у меня работала и Алиса и Радио.

sudo nano /etc/modprobe.d/alsa-base.conf

Вставил следующий код

nstall sound-slot-0 /sbin/modprobe snd-card-0
install sound-slot-1 /sbin/modprobe snd-card-1
install sound-slot-2 /sbin/modprobe snd-card-2
install sound-slot-3 /sbin/modprobe snd-card-3
install sound-slot-4 /sbin/modprobe snd-card-4
install sound-slot-5 /sbin/modprobe snd-card-5
install sound-slot-6 /sbin/modprobe snd-card-6
install sound-slot-7 /sbin/modprobe snd-card-7

options snd-usb-audio index=0

У меня Сборка сергея и плеер там работает через MPD

Поэтому я открыл файл конфига плеера
sudo nano /etc/mpd.conf

изменил следующий блок

audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "hw:0,0"        # optional
        mixer_type      "software"      # optional
        mixer_control   "PCM"           # optional
}

Алиса и радио заработали - но вот регулировка звука пропала

Как я понял в файлах плеера есть такаой код

modules/app_player/mpd.php
safe_exec('amixer  sset PCM,0 '.$volume.'%');  

А в моем случае, что бы убавить громкость нужен код такой

safe_exec('amixer sset Speaker,0 '.$volume.'%');

ОБНОВЛЕНИЕ 23.03.18
Мои бессонные ночи, все таки дали мне результат который я очень ждал.
Если делать все как указано выше, то я получаю не совсем рабочий вариант. Дело в том, что yf малинку я установил так же LMS (squeezebox) и если запустить LMS а полсе запустить плеер из МД - то звук будет идти тлько из LMS, так же и на оборот, На форуме пару советов мне дал nick7zmail - за что ему спасибо.

Что я понял пройдя не простой пусть.
Если вы используете устройство которое не имеет аппаратное мекширование, тогда вам нужен плагин alsa dmix - он на программном уровне делает мекирование каналов.
Давайте сразу начнем с конфигурации этого плагина.

nano /etc/asound.conf

Содержимое:

pcm.dmixer {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:1,0"
        period_time 0
        period_size 1024
        buffer_size 8192
        rate 44100
    }

    bindings {
        0 0
        1 1
     }
}

pcm.dsp0 {
    type plug
    slave.pcm "dmixer"
}

pcm.!default {
    type plug
    slave.pcm "dmixer"
}

pcm.default {
    type plug
    slave.pcm "dmixer"
}

ctl.mixer0 {
    type hw
    card 0
}

В файле sudo nano /etc/modprobe.d/alsa-base.conf
можно закоментировать
options snd-usb-audio index=0

В файле nano /etc/mpd.conf
я закоментировал строку
user "mpd"

Ранее редактируемый блок теперь имеет вид

audio_output {
        type            "alsa"
        name            "My ALSA Device"
        device          "dmixer"        # optional
        mixer_type      "software"      # optional
        mixer_device    "dmix"
        mixer_control   "PCM"           # optional
}

Для LMS так же внесем изменения в файл sudo nano /usr/local/bin/squeezelite_settings.sh

SL_SOUNDCARD="default"
 SB_SERVER_IP="192.168.1.30"

После этого у вас будет работать звук сразу из двух плееров. Что бы регулировать звук плеера и системный звук я воспользовался решением step74
Привожу его текст ниже

Плеер использую mpd
плеер регулирует громкость программно, для этого подкорректировал файл modules/app_player/mpd.php
закоментировал строчку
у меня это 58 строчка

Код:
/
```/safe_exec('amixer  sset PCM,0 '.$volume.'%');      

и вместо нее вставил код

Код:
$mpd->SetVolume($volume);


Добавил метод в класс Computer
метод заглавил MasterVolumeLevelChanged
и код сделал:

Код:
$params['VALUE']=preg_replace('/[^0-9]/', '', $params['VALUE']);
$this->setProperty('MasterVolumeLevel',$params['VALUE']);
$input= array('100','95','90','85','80','75','70','65','60','55','50','45','40','35','30','25','20','15','10','5','0');
$output=array('100','99','98','96','95','93','91','89','87','85','83','80','77','73','71','66','61','53','43','25','0');
for ($i=0; $i <= count($input); $i++){
if ($input[$i]==$params['VALUE']){
$volume=$output[$i];
}}
safe_exec('amixer sset PCM,0 '.$volume.'%');
say("Изменилась громкость до ".$params['VALUE']." процентов");



В меню управления добавил раздел selectbox c заглавием Системная громкость
привязал к объекту ThisComputer
методу MasterVolumeLevelChanged
в поле данные вставил громкость в процентах с 0% - до 100% с интервалом 5

Discuss (0) (3)

Москва, Россия

На форуме: Alex77