Cài voice pack Tiếng Việt cho Robot hút bụi Xiaomi Gen1/2
lusiads
3 nămBình luận: 73
Mức độ khó: Trung bình
Thời gian: 15 phút

Yêu cầu:
  • Mi Home v5.4.54 (Android), nếu không có Android có thể sử dụng trình giả lập, mình đã test trên Nox Player
  • Robot đã được cài đặt vào ứng dụng Mi Home
  • PC chạy Windows
Tóm tắt các bước
  1. Lấy địa chỉ IP và Token của Robot
  2. Dùng app Mirobo để flash voice pack Tiếng Việt cho Robot
  3. Kiểm tra và gỡ lỗi

Credit:
Dustcloud (https://github.com/dgiese/dustcloud)

GitHub - dgiese/dustcloud: Xiaomi Smart Home Device Reverse Engineering and Hacking

Xiaomi Smart Home Device Reverse Engineering and Hacking - GitHub - dgiese/dustcloud: Xiaomi Smart Home Device Reverse Engineering and Hacking
github.com

FPT Text2Speech (https://dev.openfpt.vn/)

Quảng cáo


Python Miio (https://github.com/rytilahti/python-miio)

GitHub - rytilahti/python-miio: Python library & console tool for controlling Xiaomi smart appliances

Python library & console tool for controlling Xiaomi smart appliances - GitHub - rytilahti/python-miio: Python library & console tool for controlling Xiaomi smart appliances
github.com

Tác giả của script Win-Mirobo (không rõ)
  1. Lấy địa chỉ IP và Token của Robot:
Có nhiều cách để lấy IP và Token cho Xiaomi Robot, mình tìm ra 1 cách đơn giản đó là sử dụng log của ứng dụng Mi Home v5.4.54.

Cài Mi Home v5.4.54, bạn có thể tải ứng dụng tại trang mình chọn, nếu không tìm được, sử dụng bản mình đã tải về tại đây https://app.box.com/s/5yopb1okuycnwby05yw5zrpd7avtorhc
Box
app.box.com


Trên điện thoại cài Mi Home đã đăng nhập và cài đặt Xiaomi Robot,

Mở app Mi Home, vào mục robot hút bụi để biết tên robot hút bụi là gì (VD: Mi Robot Vacuum)

Sau đó dùng một trình quản lý file bất kỳ nào đó vào thư mục INTERNAL MEMORY/SMARTHOME/LOGS/PLUG_DEVICEMANAGER, tìm và mở file tên yyyy-MM-dd.txt sử dụng một app xem file text nào đó, chọn file với ngày tháng hiện tại hoặc gần nhất, ví dụ 2019-01-31.txt. Mình sử dụng app quản lý file Solid Explorer và SE Text Editor đi kèm của nó. Bạn có thể chọn bất cứ app nào phục vụ cho mục đích tương tự nhưng tốt nhất là có tính năng tìm kiếm vì như vậy sẽ nhanh hơn.

Tìm trong file này tên Robot, tìm các dòng chữ theo định dạng dưới đây:

{"did":"117383849","token":"90557f13732y2494h278314a74d547b5","longitude":"x","latitude":"y","name":"Mi Robot Vacuum","pid":"0","localip":"192.168.88.68","mac":"40:31:3C:AA:BB:CC","ssid":"Your AP Name","bssid":"E4:8D:8C:EE:FF:GG","parent_id":"","parent_model":"","show_mode":1,"model":"rockrobo.vacuum.v1","adminFlag":1,"shareFlag":0,"permitLevel":16,"isOnline":true,"desc":"Zoned cleanup","extra":{"isSetPincode":0,"fw_version":"3.3.9_003460","needVerifyCode":0,"isPasswordEncrypt":0},"event":{"event.back_to_dock":"{\"timestamp\":1548817566,\"value\":[0]}

Quảng cáo



Bạn chỉ cần copy và lưu lại IP (192.168.88.68) và Token (90557f13732y2494h278314a74d547b5) để phục vụ cho bước sau.

2) Dùng app Mirobo để flash voice pack Tiếng Việt cho Robot

Tải file mirobo_v1.1.0.zip và vi_leminh.zip (voice pack Tiếng Việt) tại địa chỉ: https://app.box.com/s/5yopb1okuycnwby05yw5zrpd7avtorhc
Box
app.box.com


Giải nén win-mirobo vào thư mục nào đó, mở thư mục ra, trong thư mục Mirobo v1.0, mở file win-mirobo.ini, bạn sẽ thấy hình tương tự như dưới đây:



Điền IP và Token đã lấy ở bước 1 vào 2 dòng đầu.

Quảng cáo



Giải nén file vi_leminh.zip vào thư mục Mirobo v1.0\voicepacks

Tắt tường lửa: app Mirobo sẽ tạo 1 HTTP server để cung cấp file voice pack (.pkg) cho Xiaomi Robot nên sẽ cần cho phép kết nối vào (inbound connections), cách đơn giản nhất là tạm thời tắt tường lửa Windows.

Bạn mở tường lửa và tắt nó đi, dưới đây là hình cho tường lửa mặc định (Windows Defender Firewall) của Windows 10.




Tiếp theo, bạn quay lại thư mục Mirobo v1.0 và chạy file win-mirobo.bat, bạn sẽ thấy như dưới đây:



Để flash voice pack, nhấn 2 Enter


Bước tiếp theo, app sẽ hỏi bạn chọn gói ngôn ngữ:



Chọn vi_leminh bằng cách nhập 4 Enter


Quá trình flash sẽ bắt đầu, app tạo voice pack có đuôi pkg được mã hóa sử dụng mật khẩu mặc định của Xiaomi, khởi động HTTP server và gửi yêu cầu flash đến robot. Robot sẽ kết nối với HTTP server và tiến hành flash.

Nếu không có dòng chữ màu đỏ nào hiện ra nghĩa là đã thành công, robot sẽ báo “cập nhật thành công” bằng Tiếng Việt, bạn nhấn Enter vài lần để thoát khỏi win-mirobo.


3) Kiểm tra và gỡ lỗi:
Nếu bạn không thể lấy được IP và Token theo cách nêu ở bước 1 bạn có thể sử dụng một số cách nêu ở đây: https://github.com/jghaanstra/com.xiaomi-miio/blob/master/docs/obtain_token.md [Tiếng Anh]

com.xiaomi-miio/obtain_token.md at master · Maxmudjon/com.xiaomi-miio

Homey app to control Mi Home devices that implement the miIO protocol and Xiaomi gateway child devices - com.xiaomi-miio/obtain_token.md at master · Maxmudjon/com.xiaomi-miio
github.com



Nếu khi chạy app, bạn nhận thông báo như dưới đây thì kiểm tra lại IP và Token đã lấy ở bước 1




Nếu có lỗi app sẽ hiện dòng chữ: Something goes wrong màu đỏ, lỗi này là do Robot không thể kết nối tới HTTP server để nhận voice pack, bạn kiểm tra lại tường lửa đã được tắt chưa.





Khi thành công, các file voice Tiếng Trung mặc định sẽ bị ghi đè và voice sẽ được đặt lại mặc định (Tiếng Trung). Do đây là một phần của firmware nên có khả năng sẽ bị ghi đè khi cập nhật firmware, mình có cập nhật 1 lần nhưng voice pack không bị ảnh hưởng, mình đoán việc ghi đè phụ thuộc ở bản firmware cập nhật.


Trên đây là các bước được thực hiện trên Windows, trên Mac/Linux có thể sử dụng https://github.com/rytilahti/python-miio (docs: https://python-miio.readthedocs.io/en/latest/vacuum.html ). Cài python-miio qua pip trên python3, sau đó dùng lệnh: mirobo install-sound vi_leminh.pkg (mirobo được cài sẵn nếu bạn sử dụng Home Assistant). Chi tiết vượt quá phạm vi bài viết này.

GitHub - rytilahti/python-miio: Python library & console tool for controlling Xiaomi smart appliances

Python library & console tool for controlling Xiaomi smart appliances - GitHub - rytilahti/python-miio: Python library & console tool for controlling Xiaomi smart appliances
github.com



Mình sử dụng giọng đọc nhân tạo của FPT Text2Speech, giọng nam Miền Bắc (Lê Minh), nếu bạn muốn tự tạo giọng nói riêng có thể tự tạo các file wave. Để biết lời của các câu thoại bạn có thể giải mã voice pack Tiếng Anh mặc định (https://awsbj0.fds.api.xiaomi.com/app/voice-pkg/package/english.pkg), gói này được mã hóa bởi ccrypt (trong thư mục Mirobo v1.0\environment\ccrypt) với mật khẩu "r0ckrobo#23456" (tham khảo: https://github.com/dgiese/dustcloud/blob/94cbb28ada3636170999a02141f1105874bc7403/devices/xiaomi.vacuum/audio_generator/generate_audio.py ). Giải mã bằng lệnh: ccrypt -d -v english.pkg, nó sẽ giải mã và ghi đè lên file cũ, dùng 7zip/WinRAR để mở file đã giải mã này bạn sẽ có thể xem tất cả các file .wav ở trong (mình cũng đã gồm các file đã giải mã trong thư mục en_default cho bạn nào cần nhanh, xiaomi có thể thêm bớt file này khi cập nhật firmware).

Edited: Chỉnh lại link
73 bình luận
Chưa có robot để thử, lưu lại dùng khi cần. thanks bạn chia sẻ
hongquanghl
ĐẠI BÀNG
3 năm
upload_2019-4-9_21-58-22.png Mình bị lỗi này là sao B
lusiads ơi? Win 10 - 64 bit
lusiads
ĐẠI BÀNG
3 năm
@hongquanghl Đây là lỗi sai token trong file win-mirobo.ini bạn nhé
hongquanghl
ĐẠI BÀNG
3 năm
@lusiads Ok cảm ơn bạn!
changdoncoi
ĐẠI BÀNG
3 năm
Dùng bản mi home mới nhất được không bro ?
lusiads
ĐẠI BÀNG
3 năm
@changdoncoi Không
changdoncoi
ĐẠI BÀNG
3 năm
@lusiads @lusiads mình cài được rồi, nghe tiếng việt phụ huynh thích lắm 😁 có cách nào tăng volume nói của robot không bác, mỗi tội nghe khá nhỏ.
lusiads
ĐẠI BÀNG
3 năm
@changdoncoi Tất cả âm thanh đã được normalize (phần âm lượng tối đa của mỗi đoạn đều đạt 100%). Âm lượng có thể chỉnh lại gain khi convert nhưng sẽ khiến tiếng bị rè. Cũng có thể sử dụng giọng nữ tiếng sẽ vang xa hơn, hoặc đổi pitch?. Mình không rành lắm về chỉnh sound. Mình có thể publish code phần tạo voice tự động dùng FPT API nếu có bạn nào quan tâm, cái này cho phép bạn đổi giọng đọc, tốc độ... và chỉnh cả gain.
lusiads
ĐẠI BÀNG
3 năm
@changdoncoi OK mình đã tăng âm lượng bằng cách sử dụng hiệu ứng contrast sau khi normalize. Voicepack đã được cập nhật tương ứng trên link đã cho.

Bonus: Mình cũng thêm 1 số voicepack khác để tùy ý lựa chọn
leminh (giọng nam miền bắc), male (giọng nam miền bắc), female (giọng nữ miền bắc), hatieumai (giọng nữ miền nam), ngoclam (giọng nữ Huế)
DAVIDHN
ĐẠI BÀNG
3 năm
Bạn hướng dẫn hack con Mirobot Gen 1 để lưu Maps và ra lệnh/ lên lịch quét dọn từng phòng được thì tốt quá. Xem trên mạng mình chưa hiểu rõ lắm. Thanks
lusiads
ĐẠI BÀNG
3 năm
@DAVIDHN Việc này sẽ phức tạp hơn nhiều. Hiện chỉ có thể thực hiện sử dụng một vài mẹo.
  1. Lưu tọa độ của bản đồ của các khu vực và dùng python-miio (có trong Home Assistant) để ra lệnh quét định kỳ. Tọa độ có thể lấy bằng cách sử dụng app FloleVac https://xiaomi.flole.de/
  2. Tránh việc tạo lại bản đồ bằng cách không sử dụng tính năng clean (khi nhấn nút clean trên robot hay trên app). Khi cần dọn dẹp sử dụng zone cleanup cho toàn bộ khu vực muốn cleanup.
  3. Tránh bản đồ bị xoay ngẫu nhiên bằng cách đặt robot cố định ở 1 góc nhà.
Cách này là dạng workaround và có khá nhiều nhược điểm. Ví dụ nếu ai đó nhấn nút clean trên robot, toàn bộ bản đồ sẽ bị tạo lại và tọa độ nhiều khả năng không còn chính xác.
FloleVac
xiaomi.flole.de


Bù lại cách này cho phép robot làm việc với các dịch vụ bên thứ 3 như Home Assistant, Google Home, Amazon...
fancy90
CAO CẤP
2 năm
@lusiads Mình thử lấy map cho thẳng vào hass thì phải flash gì không bạn
lusiads
ĐẠI BÀNG
2 năm
@fancy90 Bản đồ (như ở đây https://github.com/asphalter/xiaomi_vacuum ) chỉ có tính trực quan, lệnh vacuum.xiaomi_clean_zone trên HA sử dụng các tham số toạ độ 4 góc (theo cảm biến LIDAR, không phải GPS).

GitHub - asphalter/xiaomi_vacuum

Contribute to asphalter/xiaomi_vacuum development by creating an account on GitHub.
github.com


Code:
entity_id
Name of the vacuum entity. vacuum.xiaomi_vacuum_cleaner
zone
Array of zones. Each zone is an array of 4 integer values. [[23510,25311,25110,26362]]
repeats
Number of cleaning repeats for each zone between 1 and 3. 1
danghoa_nd
ĐẠI BÀNG
3 năm
Cảm ơn bác đã chia sẻ. Lưu lại để khi nào rảnh thì nghịch vậy 😃
AnDB
ĐẠI BÀNG
3 năm
Có dùng được cho roborock T6 ko bác
AnDB
ĐẠI BÀNG
2 năm
@hoangvycdnl8 Của bác cài được eng à, em còn ko thấy pack eng mà ko hiểu sao hỏi 1 số chỗ vẫn bảo có eng
@AnDB k có eng luôn bác
AnDB
ĐẠI BÀNG
2 năm
@hoangvycdnl8 Từ từ rồi chắc cũng có hết ấy mà, ngoài cái ngôn ngữ ra được cái chạy công nhận ngon 😁, cho chạy hàng ngày nhà sạch hẳn :D
vostro 1500
ĐẠI BÀNG
2 năm
Mình cũng đang quan tâm em Gen 1s, tuy nhiên chưa có bản Quốc tế nên các clip mình coi đều bị vướng vụ chậm nhận lệnh, chắc do server Trung Quốc hay bị chặn như em camera 360 nhà mình 😔
Có voice pack Tiếng Anh cho bản nội địa.
Chắc phải đợi bản quốc tế
Hung.tv
ĐẠI BÀNG
2 năm
có cách nào để lấy được voice pack tiếng Trung từ con T6 không bạn? để mình kiểm tra xem thiếu những voice command nào chép vào thư mục voice pack xem update được không
lusiads
ĐẠI BÀNG
2 năm
@Hung.tv Có 2 cách để lấy các đoạn thoại trong voice pack:
  1. Truy cập vào robot bằng SSH và copy các file này qua SCP (Tiếng Trung: /opt/rockrobo/resources/sounds/prc, các tiếng khác tải về: /mnt/data/rockrobo/sounds/)
  2. Trích cloud key (16 chữ + số) trên robot và giải mã giao tiếp (AES) giữa robot & xiaomi cloud khi tải các đoạn voice pack qua app
Cả 2 cách này đều yêu cầu root robot mà hiện tại chỉ có thông tin để root gen1 & gen2.
Có bác nào có voice pack tiếng Anh hoặc tiếng Việt cho Roborock T6 ko ạ?
@QuocTuanNguyen Hóng xem cái này để cài cho máy ở nha
ranchu
ĐẠI BÀNG
2 năm
Cài xong rồi sau này update có phải cài lại không bác chủ ?
QuanDzung
ĐẠI BÀNG
2 năm
Hay lắm. Chờ lương mua con robot này cái đã.
Các bác giúp em với, 4 dòng trên trên đều Ok: chỉ đến Installing Voice pack: something goes wrong...không cài được tiếng việt
@vietcanh do Có cái này thì tiện nhi
Đang dùng T6 bình thường, Hôm nay bị lỗi này Bác lusiads giúp anh e khắc phục đi
image.jpg
image.jpg
@sir_lyconghoa Đã thử nhưng nó chỉ reset máy chứ ko về lại firmware cũ bạn ơi.
@kibitzer Bấm nút home đừng có thả ra chờ 2 phút nó sẽ về lại nhé
@kibitzer bạn bấm giữ home tay trái,tay phải ấn nút reset rồi thả ra tay phải ra,khi nghe giọng voice thì thả tay trái ,đợi 1 lúc nó sẽ tắt máy khởi động lại
trunganh412
ĐẠI BÀNG
2 năm
@tranquang viet E đang dùng con S5 nó bắt update firmware lên mới dùng đc, trc k update vẫn dùng đc. Up xong phải cài đt sang múi giờ Trung Quốc mới nhận Robot, có cách nào khắc phục bệnh này k bác
vostro 1500
ĐẠI BÀNG
2 năm
lusiads
ĐẠI BÀNG
2 năm
@vostro 1500 Nhiều bài viết đi lệch chủ đề quá. Xiaomi/Roborock Robot chạy Ubuntu và chặn tường lửa cổng SSH nên bình thường không truy cập SSH được. Sau khi root nó sẽ giống như các máy chạy Ubuntu Linux ARM bình thường và đương nhiên có thể cài tất cả các ứng dụng không khác gì các máy tính ARM chạy Linux headless khác (Rasperry Pi, Odroid...)
yahoogle
ĐẠI BÀNG
2 năm
@lusiads Bác có thể làm một bài riêng hướng dẫn root robot ko. Em đọc một số bài tiếng anh trên github mà ko hiểu lắm. 😃
lusiads
ĐẠI BÀNG
2 năm
@yahoogle Theo mình biết hiện chỉ có thể root gen1/2, và các bước làm cũng tương đối đơn giản. Bạn có thể xem tại đây https://github.com/dgiese/dustcloud/wiki/VacuumRobots-manual-update-root-Howto [Tiếng Anh]. Mình khá bận, không có thời gian để dịch bài viết của người khác.

VacuumRobots manual update root Howto · dgiese/dustcloud Wiki

Xiaomi Smart Home Device Reverse Engineering and Hacking - VacuumRobots manual update root Howto · dgiese/dustcloud Wiki
github.com
Smowtion
TÍCH CỰC
2 năm
Hóng T6 fix phải đổi time zone.
trunganh412
ĐẠI BÀNG
2 năm
@Smowtion Cũng hóng cho S5 update firmware mới cũng bị
fancy90
CAO CẤP
2 năm
Flash tiếng việt sau update firmware được không bạn nhỉ
lusiads
ĐẠI BÀNG
2 năm
@fancy90 Được. Qua vài lần update firmware thì các file ngôn ngữ Tiếng Việt chưa bị ảnh hưởng.
wtrungvu
ĐẠI BÀNG
2 năm
Lỗi này là sao bác @lusiads ? Mình đang thử con xiaomi mijia gen 2 😔
lusiads
ĐẠI BÀNG
2 năm
@wtrungvu Đây là lỗi sai IP của robot trong file win-mirobo.ini
wtrungvu
ĐẠI BÀNG
2 năm
@lusiads
Báo lỗi này là sao bác @lusiads ?
lusiads
ĐẠI BÀNG
2 năm
@wtrungvu Đây là lỗi kết nối giữa robot & máy tính. Bạn đọc kỹ lại hướng dẫn & làm lại chính xác các bước trên 1 máy tính khác xem.
wtrungvu
ĐẠI BÀNG
2 năm
lusiads
ĐẠI BÀNG
2 năm
@wtrungvu Mình có voicepack của Google (vi-VN-Standard-*, vi-VN-Wavenet-*) nhưng chưa up lên vì thấy chất lượng không tốt hơn mà một số từ phát âm không đúng (laze).
lusiads
ĐẠI BÀNG
2 năm
@wtrungvu Mình vừa sửa lỗi & thêm vi-VN-Wavenet-A (chị Google) vào thư mục chia sẻ. Bạn có thể tải xuống thử.
wtrungvu
ĐẠI BÀNG
2 năm
@lusiads Cảm giác nghe giọng chị Google này nghe hay hơn mấy cái giọng FPT AI hơn bác ạ @lusiads








  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2022 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019