Вчимо робот-пилосмок говорити українською
🔄 26 листопада 2024
Додано посилання на репозиторій з озвучкою Леся Подерв’янського
Нещодавно у TikTok завірусилося відео з роботом-пилосмоком з голосом Леся Подерев’янського.
Мені вдалось взяти інтерв’ю у розробника цієї озвучки і завантажити голосовий пакет на пилосмок Dreame за допомогою Home Assistant. Додам, що завантаження голосового пакету ніяк не змінює функціональність пилосмока та не порушує умови гарантії.
росія — держава терорист. російський військовий корабель, пішов нах***!
Для виконання інструкції вам знадобиться Home Assistant. Його можна встановити у віртуальну машину, однопалатний компʼютер, або інше обладнання.
Інтервʼю
— Можете коротко розповісти про себе та свої хобі?— Мене звати Костянтин, я QA Engineer в компанії Qualium Systems. В робочий час допомагаю налаштовувати процеси розробки в компанії, випускати якісні продукти, у вільний — займаюся саморозвитком, проводжу час з дружиною, друзями, граю в ігри (комп’ютерні та настільні), на гітарі, та намагаюся розібратися в тому, як поставити кастомну озвучку на свій робот-пилосос)
— Чому вирішили переозвучити пилосмок? Як вам прийшла ідея озвучки голосом Леся Піддеревянського? Чи мали ви інші варіанти?
— Пилосос ми придбали не так давно в Алло, попередньо надивившись різних оглядів, в тому числі і з цікавими озвучками. На другий день після покупки я задався питанням, а як же мені самому поставити якусь цікаву озвучку( окрім офіційних що доступні в додатку). Нагуглив сайт, на якому є бібліотека користувацьких озвучок, але нажаль всі російськомовні. На деякий час вибір пав на голос Kel`Tuzad з Warkraft. Вона весела але доволі швидко приїлася. Дружина попросила поставити якусь українську озвучку, я поставив офіційну, але стало якось нудно. Тому я вирішив розібратись, а як зробити свою, і вибір пав на голос пана Леся Подерв’янського, з творчістю якого я познайомився ще на першому курсі у 2008.
До речі, саме ті файли, передані по Bluetooth в ті далекі часи, послужили вихідними файлами для озвучки. Дружина в свою чергу теж ідею оцінила, бо колись вивчала його як частину теми про сучасну українську літературу на філологічному. Ідея прийшла в понеділок ввечері, на ніч я трохи нагуглив інформації, вранці у вівторок приступив до реалізації.
Відповідаючи на питання про інші варіанти: так, мав, і навіть один вже зробив (про це може потім якщо цікавить). В планах зробити 3 озвучки, першу вже світ побачив, друга вже готова але нікому крім дружини і вузького кола друзів ще не показував, до третьої ще не дійшов.
— Розкажіть про технічні аспекти проєкту. Як взагалі прошити пилосмок? Можете поділитись вихідними файлами озвучки Леся Подерев’янського?
— Прошити — це гучно сказано. В моєму випадку — це просто встановити кастомну озвучку через сайт, ніякої магії або складнощів. Маючи готовий архів це займає два кліки мишкою. Але все ж є підводні камені, пов’язані з моделями пилососів та форматами вихідних файлів. Так наприклад в мене модель Xiaomi Robot Vacuum S10+, аудіофайли для озвучки повинні бути в форматі .ogg , а сама папка з файлами має бути заархівована в .tar, а потім в .gzip (без стиснення). На виході має бути файл формату example.tar.gz.
Спосіб архівування теж має значення, я витратив десь годину на пошук причини, чому в мене замість голосу тиша в деяких тестових версіях. Прийшов до того, що треба архівувати через программу 7z, файли додавати саме через інтерфейс програми (не через контекстне меню). Вимоги до аудіо — частота 16к Гц, моно. Всі ці маніпуляції стосуються саме моєї моделі, і не спрацювали у мого товариша, у котрого молодша версія Xiaomi Robot Vacuum S10. Ми виявили що для його моделі потрібен архів в форматі .zip, але вочевидь треба використовувати інший формат аудіо файлів, бо моя версія озвучки з .ogg файлами в архіві .zip не встановилася на його девайс. Можливо коли ми знайдемо потрібний формат я поділюся своїм рішенням проблеми.
Для тестування можливості закидування озвучки використовувався російський сайт, але то не є файно, тому разом з Богданом покажемо альтернативні варіанти.
З приводу вихідних файлів та архіву з озвучкою — я би дуже хотів поділитися цим з людьми, тим паче що кожен другий коментатор під відео про це просить. Але не впевнений, що маю на це право (хоч і повністю безкоштовно). Тому хотів би скористатися нагодою та силою суспільства Dou та звернутися до пана Подерв’янського (може хтось з читачів знає його особисто): пане Лесь, якщо ви не проти того, щоб ця озвучка вийшла в суспільство, будь ласка дайте мені знати (краще якщо це буде відео підтвердження). Буду вдячний всім хто посприяє цій справі. Оновлення, все вдалося, голосовий пакет Леся додано. 🔥
Встановлення HACS
Встановлення доповнення Advanced SSH & Web Terminal
Перейдіть до Налаштувань >> Доповнення >> Магазин доповнень >> Advanced SSH & Web Terminal. Натисніть встановити.
Перед запуском доповнення перейдіть до вкладки Конфігурація та встановіть довільний надійний пароль у лапках та збережіть налаштування. Пароль можна згенерувати онлайн. Якщо ви отримуєте помилку 502: Bad Gateway, можливо ви не встановили, або встановили занадто простий пароль.
Після того перейдіть на вкладку Інформація, запустіть додаток, натиснувши Старт.
Встановлення HACS
HACS (Home Assistant Community Store) це неофіційний магазин спільноти Home Assistant. Він збирає та каталогізує інтеграції, теми, картки, python скрипти та інші елементи Home Assistant в одному місці.
Щоб встановити HACS відкрийте встановлений Advanced SSH & Web Terminal та вставте команду wget -q -O — install.hacs.xyz | bash — Після перезавантажте Home Assistant (Налаштування >> Система >> кнопка у верхньому правому куті)
Перейдіть до Налаштування >> Пристрої та сервіси >> Додати інтеграцію. У полі пошуку інтеграцій напишіть HACS та оберіть її.
У вікні що відкрилось прочитайте попередження та проставте прапорці, натисніть надіслати.
У наступному вікні скопіюйте наданий код, перейдіть за адресою github.com/login/device та вставте його. Якщо у вас немає облікового запису Github створіть його. У наступному вікні підтвердіть авторизацію HACS. Після успішної авторизації Home Assistant запропонує задати приміщення HACS, а на бічній панелі зявиться нова піктограма. На цьому встановленя HACS завершено.
Спосіб 1. Встановлення української озвучки на пилосмок інтеграція Dreame Vacuum
Спосіб завантаження озвучки на пилосмоки Dreame, Mijia та Mova. Переглянути підтримувані пилосмоки можна на сторінці Dreame vacuum integrations у розділі Supported devices. Для моделей що не входять у цей список я рекомендую використовувати метод 2 нижче. На бічній панелі натисніть інтеграцію HACS. У верхній стрічці пошуку введіть слово Dreame. Оберіть інтеграцію.
У нижньому правому кутку натисніть кнопку Download. Після перезавантажте Home Assistant (Налаштування >> Система >> кнопка у верхньому правому куті)
Перейдіть до Налаштування >> Пристрої та сервіси >> Додати інтеграцію. У полі пошуку інтеграцій напишіть Dreame та оберіть її.
У вікні що відкрилося оберіть тип конфігурації With map (Automatic) та натисніть надіслати
У наступному вікні введіть логін та пароль від застосунку Xiaomi Home та оберіть сервер (найчастіше це Німечинна — de)
Якщо отримуєте повідомлення cannot_connect, можливо пилосмок не увімкнений. Можна поставити його на зарядну станцію та спробувати повторно.
Якщо отримуєте помилку {"message":"Invalid handler specified"} видаліть каталог dreame vacuum з усім його вмістом. Це можна зробити через термінал за допомогою команди та rm -r homeassistant/custom_components/dreame_vacuum. Видаліть інтеграцію у HACS (три крапки у верхньому правому куті) та почніть процес встановлення заново.
Якщо все спрацювало ви побачите наступне вікно. Тут нічого змінювати не потрібно, лише натиснути кнопку надіслати та обрати кімнату пилосмока. На цьому встановлення інтеграції завершено.
Встановлення української озвучки на пилосмок
Для озвучення нам потрібно знаки команду та мати архів з голосовими файлами. Покажу як це зробити на прикладі крутезної озвучки Dreame Vacuum Ukrainian Voice Packs (поставте зірочку ⭐ на GitHub) від Oleksandr Belei. Озвучка дуже приємна і якісно записана. Послухати голос можна в розділі прикладів.
Для того, щоб завантажити архів з голосом на пилосмок потрібно перейти в пункт Інструменти для розробників на бічній панелі Home Assistant >> Служби >> натиснути кнопку перейти у режим YAML >> вставити таку команду та натиснути викликати службу. Перевірити чи завантажилась прошивка можна запустивши прибирання.
Також вказати дані можна зручно в графічному інтерфейсі (різниці ніякої)
Dreame Vacuum. Oleksandr Belei
service: dreame_vacuum.vacuum_install_voice_pack data: lang_id: UK url: >- https://github.com/oleksandr-belei/dreame-vacuum-uk-voice-packs/raw/main/voice_packs/uk_female_pensive md5: 55bfe4272ce1e77d9bbafebf9ec99330 size: 3585448 target: entity_id: vacuum.mops
В команді обов’язково змініть назву vacuum.mops на вашу. Назву пилосмока можна перейшовши до Налаштувань >> Пристрої та сервіси >> та натиснути на слово пристрій у нижній частині інтеграції Dreame Vacuum
У розділі елементи керування натисніть на піктограму вашого пилосмока, а потім на піктограму шестерні у верхньому правому кутку. У вікні що відкрилось скопіюйте ID сутності. Використовуйте його у якості entity_id.
Dreame Vacuum. Лесь Подерв’янський
service: dreame_vacuum.vacuum_install_voice_pack data: lang_id: UK url: >- https://github.com/KonstantinDev7/Voice_Packs_for_Mi_Robot_S10_Plus/raw/refs/heads/main/Voice_Packs/LesV1ogg.tar.gz md5: 267b6a6bb90c14989ff4fb8369a29ead size: 2107482 target: entity_id: vacuum.mops
Dreame Vacuum. GLaDOS україномовний пакет
service: dreame_vacuum.vacuum_install_voice_pack data: lang_id: UK url: >- https://github.com/sverdlyuk/glados_ukr/raw/refs/heads/main/uk_glados_voice_pack.gz md5: 3545e91c0626beccbd284469f6283a77 size: 9620968 target: entity_id: vacuum.mops
Спосіб 2. Встановлення української озвучки на пилосмок інтеграція Xiaomi Miot
Цей метод працюватиме для усіх пилосмоків Xiaomi, оскільки інтеграція Xiaomi Miot For Home Assistant виконує команди протоколу miot, яким керуються усі пристрої від Xiaomi.
Встановлення
Перейдіть до HACS >> зверхуху в рядку пошуку введіть Xiaomi Miot Auto >> відкрийте та встановіть інтеграцію. Після перезавантажте Home Assistant (Налаштування >> Система >> кнопка у верхньому правому куті)
Перейдіть до Налаштування >> Пристрої та сервіси >> Додати інтеграцію. У полі пошуку інтеграцій напишіть Xiaomi Miot Auto та оберіть її.
У вікні що відкрилось обираємо пункт Add devices using Mi Account, тиснемо кнопку далі.
У наступному вікні вводимо данні Mi Home. Connection Mode залишаємо Automatic, server location — Europe, тиснемо кнопку надіслати.
У наступному вікні в рядку Filter Devce обираємо Include та у списку обираємо пилосмок, тиснемо надіслати. Налаштування інтеграції завершено.
Для того, щоб завантажити архів з голосом на пилосмок потрібно перейти в пункт Інструменти для розробників на бічній панелі Home Assistant >> Служби >> натиснути кнопку перейти у режим YAML >> вставити таку команду та натиснути викликати службу. Перевірити чи завантажилась прошивка можна запустивши прибирання.
Xiaomi Miot. Oleksandr Belei
service: xiaomi_miot.set_miot_property data: entity_id: vacuum.dreame_p2041o_796c_robot_cleaner siid: 7 # siid для аудіосервісу piid: 4 # piid для встановлення голосового пакету value: '{"id":"UK","url":"https://github.com/oleksandr-belei/dreame-vacuum-uk-voice-packs/raw/main/voice_packs/uk_female_pensive","md5":"55bfe4272ce1e77d9bbafebf9ec99330","size":3585448}'
service: xiaomi_miot.set_miot_property — згідно специфікації home.miot-spec.com мій пилосмок встановлює голосовий пакет за допомогою параметрів (property), та використовує SIID 7 та PIID 4. Тому я використовую тут службу xiaomi_miot.set_miot_property та відповідні ID.
Проте частина пилосмоків, можуть робити це за допомогою дій (actions та AIID). Якщо ж ваш пилосмок використовує дії перегляньте розділ xiaomi_miot.call_action. Команда має бути подібною, але використовує службу xiaomi_miot.call_action, а SIID та AIID можуть мати інші значення.
entity_id — ідентифікатор вашого пилосмока. В прикладі команди вказаний мій ID пилосмока, замініть його на власний. Знайти його можна перейшовши до Налаштувань >> Пристрої та сервіси >> та натиснути на слово пристрій у нижній частині інтеграції Xiaomi Miot Auto.
У розділі елементи керування натисніть на піктограму вашого пилосмока, а потім на піктограму шестерні у верхньому правому кутку. У вікні що відкрилось скопіюйте ID сутності. Використовуйте його у якості entity_id.
Xiaomi Miot. Лесь Подерв’янський
service: xiaomi_miot.set_miot_property data: entity_id: vacuum.dreame_p2041o_796c_robot_cleaner siid: 7 # siid для аудіосервісу piid: 4 # piid для встановлення голосового пакету value: '{"id":"UK","url":"https://github.com/KonstantinDev7/Voice_Packs_for_Mi_Robot_S10_Plus/raw/refs/heads/main/Voice_Packs/LesV1ogg.tar.gz","md5":"267b6a6bb90c14989ff4fb8369a29ead","size":2107482}'
Xiaomi Miot. GLaDOS україномовний пакет
service: xiaomi_miot.set_miot_property data: entity_id: vacuum.dreame_p2041o_796c_robot_cleaner siid: 7 # siid для аудіосервісу piid: 4 # piid для встановлення голосового пакету value: '{"id":"UK","url":"https://github.com/sverdlyuk/glados_ukr/raw/refs/heads/main/uk_glados_voice_pack.gz","md5":"3545e91c0626beccbd284469f6283a77","size":9620968}'
Спосіб 3. Встановлення української озвучки на пилосмок python-miio
⚠️ Не поширюйте публічно ваш токен та did. Зберігайте його в безпечному місці
Python-miio це бібліотека (і супровідний інструмент miiocli) які можна використовувати для керування пристроями за допомогою протоколів Xiaomi miIO та MIoT. Miiocli — це швейцарський ніж для усіх Xiaomi пристроїв.
Встановлення Python Miio Windows
- Завантажте та встановіть Python.
- Відкрийте командний рядок (cmd) та встановіть pip (YouTube).
- Запустіть команду pip install git+https://github.com/rytilahti/python-miio.git.
Пошук токену, IP та did
Команда miio.cli cloud відображає інформацію про ваші Xiaomi пристрої підключені до Mi Home. Для подальших дій нам знадобиться токен, IP адреса та device id (did) пилосмоку
python -m miio.cli cloud Username: [email protected] Password: == Mi Robot Vacuum-Mop 2 Pro+ (Device online ) == Model: dreame.vacuum.p2041o Token: 614a498f6c72506d6e3066764f73696a IP: 192.168.50.157 (mac: 7B:25:HA:5C:39:6E) DID: 8023334994 Locale: de Other fields: longitude: 0.0 family_id: 0 uid: 1363375079 password: adminFlag: 1 permitLevel: 16 show_mode: 1 shareFlag: 0 pid: 0 extra: {'isSetPincode': 0, 'pincodeType': 0, 'fw_version': '4.3.3_1111', 'needVerifyCode': 0, 'isPasswordEncrypt': 0} pd_id: 70126 latitude: 0.0 reset_flag: 0 p2p_id:
Згідно специфікації home.miot-spec.com мій пилосмок встановлює голосовий пакет за допомогою (параметрів) property та використовує SIID 7 та PIID 4. Існує декілька способів встановити ці параметри. У цьому випадку використовується raw_command
Python Miio windows. Dreame (Oleksandr Belei)
python -m miio.cli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value' : '{\"id\":\"UK\",\"url\":\"https://github.com/oleksandr-belei/dreame-vacuum-uk-voice-packs/raw/main/voice_packs/uk_female_pensive\",\"md5\":\"55bfe4272ce1e77d9bbafebf9ec99330\",\"size\":3585448}'}]" Running command raw_command [{'siid': 7, 'did': '8023334994', 'piid': 4, 'code': 0}]
Якщо команда спрацювала у відповідь ви отримаєте відповідь ’code’: 0, якщо не спрацювала ’code’: −1
Python Miio Windows. Офіційна озвучка Dreame
python -m miio.cli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value': '{\"id\":\"UK\",\"url\":\"https://awsde0.fds.api.xiaomi.com/dreame-product/resources/59bcaf5201f15950c12917d0bb505321\",\"md5\":\"59bcaf5201f15950c12917d0bb505321\",\"size\":3927702}'}]"
Python Miio Windows. GLaDOS (україномовний пакет)
python -m miio.cli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value' : '{\"id\":\"UK\",\"url\":\"https://github.com/sverdlyuk/glados_ukr/raw/refs/heads/main/uk_glados_voice_pack.gz\",\"md5\":\"3545e91c0626beccbd284469f6283a77\",\"size\":9620968}'}]"
Python Miio Windows. Лесь Подерв’янський
python -m miio.cli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value': '{\"id\":\"UK\",\"url\":\"https://github.com/KonstantinDev7/Voice_Packs_for_Mi_Robot_S10_Plus/raw/refs/heads/main/Voice_Packs/LesV1ogg.tar.gz\",\"md5\":\"267b6a6bb90c14989ff4fb8369a29ead\",\"size\":2107482}'}]"
Python Miio Linux. GLaDOS (україномовний пакет)
Python нативна мова для Linux, тому встановлювати нічого не потрібно
Запустіть команду pip install git+https://github.com/rytilahti/python-miio.git
У Linux я не тестував, але команда має виглядати так:
miiocli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value' : '{\"id\":\"UK\",\"url\":\"https://github.com/sverdlyuk/glados_ukr/raw/refs/heads/main/uk_glados_voice_pack.gz\",\"md5\":\"3545e91c0626beccbd284469f6283a77\",\"size\":9620968}'}]"
Python Miio Linux. Лесь Подерв’янський
miiocli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value' : '{\"id\":\"UK\",\"url\":\"https://github.com/KonstantinDev7/Voice_Packs_for_Mi_Robot_S10_Plus/raw/refs/heads/main/Voice_Packs/LesV1ogg.tar.gz\",\"md5\":\"267b6a6bb90c14989ff4fb8369a29ead\",\"size\":2107482}'}]"
Python Miio Linux. Офіційна озвучка Dreame
miiocli genericmiot --ip 192.168.50.157 --token 614a498f6c72506d6e3066764f73696a raw_command set_properties "[{'did': '8023334994', 'siid': 7, 'piid': 4, 'value': '{\"id\":\"UK\",\"url\":\"https://awsde0.fds.api.xiaomi.com/dreame-product/resources/59bcaf5201f15950c12917d0bb505321\",\"md5\":\"59bcaf5201f15950c12917d0bb505321\",\"size\":3927702}'}]"
Python Miio Linux (miiocli device) Офіційна озвучка Dreame
miiocli device —ip IP —token TOKEN raw_command set_properties "[{’did’: ’DID’, ’siid’: 7, ’piid’: 4, ’value’ : ’{\"id\":\"UK\",\"url\":\"awsde0.fds.api.xiaomi.com/...201f15950c12917d0bb505321\",\"md5\":\"59bcaf5201f15950c12917d0bb505321\",\"size\":3927702}’}]"
Маєте питання — пишіть в коментарі
Якщо інтерв’ю та стаття були для вас корисними, подякуйте донатом моєму другу на комплектуючі дронів для ЗСУ. Малих донатів не буває.
24 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів