Re: Голосовое управление по ключевому слову на базе Апельсинки Зеро
Добавлено: Пн июн 25, 2018 3:18 pm
Привет, есть какиенибудь новости, ждем прорыва....
Обсуждение проекта
https://mjdm.ru/forum/
Код: Выделить всё
cannot load mixer controls: Invalid argument
Обязательно. раз инструкция выстрадана и работает, то всё с первого пункта.dance12r писал(а): ↑Чт июн 28, 2018 5:35 pmУдалось заставить апельсинку говорить. Есть несколько нюансов:
Инструкция по скриптам абсолютно нетривиальна и если ей следовать то к сожалению работать не будетж, причиной тому, как говорилось ранее, некорректность записывания settings.ini файла через модуль. я поступил следующим образом:
1. установил Armbian с ядром 3.4, пробовал и 4.14 но ничего толкового не вышло из-за микрофонов
2. дождался пока обновится система (заняло минут 25)
3. создал /etc/asound.conf согласно инструкции
4. клонировал скрипты, инсталировал сноубой, включил его в автозагрузку - согласно инструкции
5. Выключил(!!!) Апельсинку и потом создал терминал и добавил в модуле MDM VoiceAssistant создал новое устройство.
тут поясню - если оставить включенным апельсин, то модуль перезапишет settings.ini и ничего работать не будет. дожидаемся выполнение модуля - он ругнется,что мол есть ошибка в пхп - она связана с тем,что он не смог передать параметры на устройство. стартуем апельсин и идем ручками править settings.ini. Вписываем ИД утройства из модуля (если создавался впервые то будет 1), так же название - можно скопировать из модуля, ИД терминала - создавали ранее. ИП адресс устройства, ИП адресс сервера,чем распознаем и чем говорим... поля типа linkedroom and linked_object... я не заполнял.
6. На сайте сноубоя сделал свой фалик - переименовал его в model1.pmdl и перезаписал существующий
7. перезагрузил апельсин и вуаля
еще нюансы - все комманды отрабатывает хорошо, но - если запросить инфо от простого устройста - то повторяет ответ дважды: например -
есть датчик температуры - заведен в простых устройствах как Температура на улице. Если попросить алису "какая температура на улице" - от вет будет "температура на улице 23.1 градусов" и повторит она это дважды. хотя в чате пишет всего 1 раз.
УПД:
картинки нужны для более наглядной инструкции?
Код: Выделить всё
sudo nano /etc/asound.conf
Код: Выделить всё
cd ~/
git clone https://github.com/devoff/mdmPiTerminal
cd mdmPiTerminal
chmod +x scripts/mdm-pi-installer.sh
./scripts/mdm-pi-installer.sh
Код: Выделить всё
chmod +x systemd/service-installer.sh
sudo ./systemd/service-installer.sh
sudo systemctl enable mdmpiterminal.service
sudo systemctl enable mdmpiterminalsayreply.service
Код: Выделить всё
mv alice.pmdl model1.pmdl
Код: Выделить всё
mv model1.pmdl mdmPiTerminal/src/resources
Код: Выделить всё
nano mdmPiTerminal/src/settings.ini
Код: Выделить всё
<!-- LINKED_OBJECT (varchar)
<div class="form-group">
<label for="linked_object" class="col-lg-3 control-label"[#if ERR_LINKED_OBJECT#] style="color:red;font-weight:bold"[#endif#]>
<#LANG_LINKED_OBJECT#>:
</label>
<div class="col-lg-4"><input type="text" class="form-control" name="linked_object" value="[#LINKED_OBJECT#]" id="linked_object"></div>
</div> -->
<!-- LINKED_PROPERTY (varchar)
<div class="form-group">
<label for="linked_property" class="col-lg-3 control-label"[#if ERR_LINKED_PROPERTY#] style="color:red;font-weight:bold"[#endif#]>
<#LANG_LINKED_PROPERTY#>:
</label>
<div class="col-lg-4"><input type="text" class="form-control" name="linked_property" value="[#LINKED_PROPERTY#]" id="linked_property"></div>
</div>
[#module name="linkedobject" object_field="linked_object" property_field="linked_property" method_field="linked_method"#] -->
Код: Выделить всё
[#module name="linkedobject" object_field="linked_object" property_field="linked_property" method_field="linked_method"#]
Код: Выделить всё
<!-- LINKED_OBJECT (varchar) -->
<div class="form-group">
<label for="linked_object" class="col-lg-3 control-label"[#if ERR_LINKED_OBJECT#] style="color:red;font-weight:bold"[#endif#]>
<#LANG_LINKED_OBJECT#>:
</label>
<div class="col-lg-4"><input type="text" class="form-control" name="linked_object" value="[#LINKED_OBJECT#]" id="linked_object"></div>
</div>
<!-- LINKED_PROPERTY (varchar) -->
<div class="form-group">
<label for="linked_property" class="col-lg-3 control-label"[#if ERR_LINKED_PROPERTY#] style="color:red;font-weight:bold"[#endif#]>
<#LANG_LINKED_PROPERTY#>:
</label>
<div class="col-lg-4"><input type="text" class="form-control" name="linked_property" value="[#LINKED_PROPERTY#]" id="linked_property"></div>
</div>
[#module name="linkedobject" object_field="linked_object" property_field="linked_property" method_field="linked_method"#]
Код: Выделить всё
<!-- LINKED_OBJECT (varchar)
<div class="form-group">
<label for="linked_object" class="col-lg-3 control-label"[#if ERR_LINKED_OBJECT#] style="color:red;font-weight:bold"[#endif#]>
<#LANG_LINKED_OBJECT#>:
</label>
<div class="col-lg-4"><input type="text" class="form-control" name="linked_object" value="[#LINKED_OBJECT#]" id="linked_object"></div>
</div> -->
<!-- LINKED_PROPERTY (varchar)
<div class="form-group">
<label for="linked_property" class="col-lg-3 control-label"[#if ERR_LINKED_PROPERTY#] style="color:red;font-weight:bold"[#endif#]>
<#LANG_LINKED_PROPERTY#>:
</label>
<div class="col-lg-4"><input type="text" class="form-control" name="linked_property" value="[#LINKED_PROPERTY#]" id="linked_property"></div>
</div>-->
Код: Выделить всё
with sr.Microphone() as source:
r = sr.Recognizer()
r.adjust_for_ambient_noise(source) # Слушаем шум 1 секунду, потом распознаем, если раздажает задержка можно закомментировать.
random_item = random.SystemRandom().choice(["Привет", "Слушаю", "На связи", "Привет-Привет"])
Код: Выделить всё
getConfig (path)
#if FIRSTBOOT == "1":
# ip = (get_ip_address())
# say ("Это первая загрузка терминала, пожалуйста, пропишите IP адрес в настройках МайжерДомо, мой IP адрес: "+ip)
# config.set("Boot", "firstboot", "0" )
# with open(path, "w") as config_file:
# config.write(config_file)
# getConfig (path)
sock = socket.socket()
sock.bind( ("", 7999) )
sock.listen(1)
Получилось так:
Код: Выделить всё
[Settings]
linkedroom =
providertts = Yandex
apikeytts = 0d3f7570-вырезаноцензурой
providerstt = Google
apikeystt =
sensitivity = 0.2
alarmkwactivated = 1
alarmtts = 0
alarmstt = 0
ip_server = 192.168.вырезаноцензурой
[Boot]
firstboot = 0