VBot Assistant - Vũ Tuyển
Loading...
________

Hướng dẫn, Hỗ Trợ


- Đầu tiên chạy lệnh sau để di chuyển tới thư mục test_device:
$:> cd /home/pi/VBot_Offline/resource/test_device
- Chạy file Scan_Mic.py để tiến hành liệt kê mic và ID
$:> python3 Scan_Mic.py
- Trên giao diện Terminal sẽ hiển thị các ID và Tên Tên Thiết Bị tương ứng
- Thay lần lượt ID vừa scan đó vào trong file Test_Mic.py (ở dòng số 12 có giá trị device_index=14, hãy thay số 14 thành ID mic của bạn)
- Sau đó chạy file Test_Mic.py để kiểm tra Mic có đúng và hoạt động không:
$:> python3 Test_Mic.py
- File đó sẽ thu âm trong khoảng 6 giây, bạn cần nói vào Mic khi thu âm xong sẽ xuất ra file Test_Microphone.wav
- Bạn cần mở file đó và nghe xem có âm thanh được thu không hoặc chạy lệnh sau:
$:> vlc Test_Microphone.wav
- Nếu không được bạn cần thử lần lượt các ID được scan và kiểm tra lại driver được cài tương ứng với MIC của bạn chưa
- Nếu thành công bạn hãy điền ID Mic đó vào trong cấu hình Config rồi lưu Config lại là được

Thay đổi âm lượng Mic/Microphone:
- B1: Chạy lệnh sau: $:> alsamixer -> nhấn phím Tab hoặc F4 tìm tới tên thiết bị (Tùy từng kiểu loại Mic, Driver): ví dụ với Mạch AIO tên là: Captue chỉnh khoảng 35 là trung bình, trong quá trình sử dụng nếu thấy nhạy quá cần chính xuống thấp hơn
- B2: Di chuyển tới Tab: Command/Terminal -> VM8960-SoundCard -> Save Alsamixer To VM8960 SoundCard Driver

+ Hoặc Thao Tác Thay Đổi Âm Lượng Mic Thủ Công:
- B1: Chạy lệnh sau: $:> alsamixer -> nhấn phím Tab hoặc F4 tìm tới tên thiết bị (Tùy từng kiểu loại Mic, Driver): ví dụ với Mạch AIO tên là: Captue chỉnh khoảng 35 là trung bình, trong quá trình sử dụng nếu thấy nhạy quá cần chính xuống thấp hơn
- B2: Chạy Lệnh sau để lưu cấu hình alsamixer: $:> sudo alsactl store
- B3: Sao Lưu Lại Cấu Hình Gốc m8960-soundcard: $:> sudo mv /etc/wm8960-soundcard/wm8960_asound.state /etc/wm8960-soundcard/wm8960_asound_default.state
- B4:Chạy lệnh sau để sao chép tệp cấu hình alsamixer đã lưu ở B2 vào hệ thống driver m8960-soundcard: $:> sudo cp /var/lib/alsa/asound.state /etc/wm8960-soundcard/wm8960_asound.state

- Lưu Ý: Nếu sử dụng Mic i2s: INMP441 kếp hợp với MAX9857 thì bạn cần Flash 'IMG VBot I2S' và thiết lập ID MIC Bắt Buộc là: '-1' Nhé
- Nếu Là Mạch DAC i2s có thể tham khảo cách cài Driver theo Link Sau:
- https://drive.google.com/drive/folders/1KJIuovEbRGv82uc5FCfi5p0sY1o5W5vU

- Bạn cần phát 1 file âm thanh bằng VLC, có thể tải lên file âm thanh của bạn như XXX.mp3 vào /home/pi chẳng hạn
- Tiếp tới hãy chạy file âm thanh đó bằng lệnh sau:
$:> vlc XXX.mp3
- Nếu có âm thanh được phát ra là xong, không cần cấu hình gì nữa cả
- Nếu không có âm thanh được phát ra bạn cần cài cấu hình và sét đầu ra âm thanh mặc định trong alsamixer (tùy mỗi thiết bị mà có cấu hình khác nhau)
- Sau đó bạn cần chạy lệnh $:> alsamixer và xác định xem thiết bị đó có tên là gì
- Khi đã xác định được tên thiết bị bạn cần điền tên đó vào trong tab Cấu Hình config: Tên thiết bị (alsamixer) (được dùng để sét âm lượng đầu tiên khi chạy chương trình, trong quá trình chạy VBot sẽ chỉ thay đổi âm lượng cửa vlc mà không ảnh hưởng gì tới âm lượng trên hệ thống của bạn)
- Đăng nhập vào ssh rồi gõ lệnh sau:
$: sudo raspi-config
- Chọn: (6)Advance Options -> (A1)Expand File System đợi vài giây -> OK -> Fish -> Yes để rebot
Thay Đổi Tự Động:
Di chuyển tới thư mục sau bằng lệnh:
$:> cd /home/pi/VBot_Offline/resource/test_device/

- Chạy file Change_Path_Apache2.py bằng quyền sudo bằng lệnh:
$:> sudo python3 Change_Path_Apache2.py

- Hệ thống sẽ yêu cầu nhập đường dẫn path trỏ tới WebUI mới, bạn hãy nhập dòng sau và nhấn Enter là xong:
/home/pi/VBot_Offline/html
Nếu bạn muốn thay đổi bằng tay
- Đăng nhập vào ssh rồi gõ lệnh sau:

$: sudo nano /etc/apache2/sites-available/000-default.conf
- Thay dòng: DocumentRoot /home/pi/VBot_Offline/html thành đường dẫn muốn đổi, ví dụ thay thành: DocumentRoot /var/www/html
- lưu lại file: Ctrl + x => y => Enter

- Tiếp theo chạy lệnh:
$: sudo nano /etc/apache2/apache2.conf
- Thay dòng: Directory /home/pi/VBot_Offline/ thành: Directory /var/www/html/

- Sau đó restart lại appache2 bằng lệnh sau:
$: sudo systemctl restart apache2
- Chạy 2 lệnh sau:
$: sudo nano sudo sed -i 's/upload_max_filesize = .*/upload_max_filesize = 300M/' /etc/php/7.4/apache2/php.ini
$: sudo sed -i 's/post_max_size = .*/post_max_size = 350M/' /etc/php/7.4/apache2/php.ini

- Lưu Ý: Bạn cần chỉnh sửa đường dẫn /etc/php/7.4/apache2/php.ini trong câu lệnh cho phù hợp với phiên bản và đường dẫn file php.ini của bạn
- Bật Đăng Nhập Vào WebUI:
- Thao Tác: Nhấn vào Avatar trên cùng bên phải chọn: Cá nhân => Cài đặt => Đăng nhập Web UI => (Bật Lên Là Được)

- Đặt Mật Khẩu Đăng Nhập WebUI:
- Thao Tác: Nhấn vào Avatar trên cùng bên phải chọn: Cá nhân => Chỉnh sửa hồ sơ => Mật khẩu Web UI => (Điền Mật Khẩu Của Bạn)
- Lưu Ý: Bạn cần nhập cả địa chỉ Email để dùng cho trường hợp Quên Mật Khẩu

- Quên Mật Khẩu và Đổi Mật Khẩu Cũng Nằm Trên Thanh Tác Vụ, Tương Tự Thao Tác Như Trên.
  • Nút nhấn up
    • Nhấn Nhả:
      • Tăng âm lượng (Tăng theo bước nhấn, được thiết lập trong Config.json)
    • Nhấn Giữ:
      • Tăng âm lượng cao nhất (Giá trị cao nhất được thiết lập trong Config.json)

  • Nút nhấn down
    • Nhấn Nhả:
      • Giảm âm lượng (Giảm theo bước nhấn, được thiết lập trong Config.json)
    • Nhấn Giữ:
      • Giảm âm lượng xuống thấp nhất (Giá trị thấp nhất được thiết lập trong Config.json)

  • Nút nhấn mic
    • Ở Trạng Thái Chờ Được Đánh Thức:
      • Nhấn Nhả:
        • Bật, Tắt Microphone
      • Nhấn Giữ:
        • Bật, Tắt chế độ câu phản hồi
    • Ở Trạng Thái Đang Phát Nhạc (Media Player):
      • Nhấn Nhả:
        • Tạm Dừng hoặc Tiếp Tục phát nhạc
      • Nhấn Giữ:
        • Dừng phát nhạc
    • Ở Trạng Thái Đang Phát Câu Trả Lời, TTS:
      • Nhấn Nhả + Nhấn Giữ:
        • Dừng Phát Câu Trả Lời, TTS

  • Nút nhấn Wake Up
    • Ở Trạng Thái Chờ Được Đánh Thức:
      • Nhấn Nhả:
        • Đánh Thức Bot, Wake Up
      • Nhấn Giữ:
        • Bật, Tắt chế độ hội thoại (hỏi đáp liên tục)
    • Ở Trạng Thái Đang Phát Nhạc (Media Player):
      • Nhấn Nhả:
        • Tạm Dừng phát nhạc đồng thời đánh thức Bot (Wake Up) để nghe lệnh
      • Nhấn Giữ:
        • Dừng Phát Nhạc
    • Ở Trạng Thái Đang Phát Câu Trả Lời, TTS:
      • Nhấn Nhả + Nhấn Giữ:
        • Dừng Phát Câu Trả Lời, TTS
Chức năng được lựa chọn trong Phần: Cấu Hình Config -> Cấu Hình Nút Nhấn
- Di chuyển tới Tab: Command/Terminal
- Chọn vào: VBot Auto Run => Cài đặt cấu hình Auto (Hệ thống sẽ tự động tạo và cài đặt file cấu hình VBot để khởi động cùng hệ thống)

- Cài đặt xong, tiếp tục chọn vào: VBot Auto Run => Kích Hoạt (Hệ thống sẽ tự động khởi chạy Chương Trình VBot khi thiết bị khởi động xong)

- Các tùy chọn điều khiển khác liên quan tới Auto khởi động cũng sẽ nằm trong: Command/Terminal => VBot Auto Run
- Truy Cập Tab: Command/Terminal -> OS Wifi
- Restart Auto Wifi Manager: Khởi động lại Services Auto Wifi Manaager đang chạy trên hệ thống
- Enable Auto Wifi Manager: Kích Hoạt Services Auto Wifi Manaager trên hệ thống (Mặc định là đã kích hoạt từ trước rồi)
- Install Auto Wifi Manager: Chỉ Cài Đặt Auto Wifi Manager Và Tạo Điểm truy Cập AP, Tự động kết nối lại khi mất mạng hoặc hệ thống mạng khởi động sau Vbot
- Install Auto Wifi Manager + Đọc IP: Cài Đặt Auto Wifi Manager + Đọc Địa Chỉ IP Ra Loa Và Tạo Điểm truy Cập AP, Tự động kết nối lại khi mất mạng hoặc hệ thống mạng khởi động sau Vbot, Nếu phát hiện địa chỉ IP Local bị thay đổi hoặc mạng wifi trước đo bị thay đổi sẽ tự đọc địa chỉ ip local mới
- Logs Auto Wifi Manager: Kiểm Tra Logs Quá Trình Hoạt Động
- Status Auto Wifi Manager: Kiểm tra trạng thái xem là: đang hoạt động hay không
Loại Màn Hình Đang Được Hỗ Trợ: OLED 128X64 0.96 INCH 1306 giao tiếp I2C
Sơ Đồ Kết Nối Chân Pin Với GPIO (Loại Giao Tiếp i2c 4 chân Pin):
- SDA ==> GPIO2 (Pin 3)
- SCL ==> GPIO3 (Pin 5)
- VCC ==> 3.3V (Pin 1)
- GND ==> GND(Pin 14)
Hình Ảnh Sơ Đồ Chân Kết Nối: Xem Ảnh Kết Nối
Khi kết nối xong các chân cần chạy lệnh sau để kiểm tra xem màn hình đã được nhận diện với địa chỉ 3c chưa:
$:> sudo i2cdetect -y 1
Nếu nhận diện thành công sẽ có địa chỉ 3c như ảnh: Xem Ảnh
Tài Liệu Tham Khảo:
- https://github.com/adafruit/Adafruit_Python_SSD1306
- https://www.the-diy-life.com/add-an-oled-stats-display-to-raspberry-pi-os-bullseye/ - https://www.instructables.com/Raspberry-Pi-Monitoring-System-Via-OLED-Display-Mo/
- Cài Thư Viện Snowboy:
- Auto Tự Động Cài Đặt: Truy Cập Vào SSH Và Chạy Lệnh Sau Trong Console
$:> sudo python3 /home/pi/VBot_Offline/resource/snowboy/Auto_install.py

- Nếu Cài Đặt Thủ Công: Chạy Lần Lượt Các Lệnh Sau
$:> cd ~
$:> sudo apt update
$:> sudo apt install -y swig
$:> sudo apt install -y libatlas-base-dev liblapack-dev libblas-dev libopenblas-dev
$:> wget https://www.piwheels.org/simple/scipy/scipy-1.13.1-cp39-cp39-linux_armv7l.whl
$:> pip install scipy-1.13.1-cp39-cp39-linux_armv7l.whl
$:> git clone https://github.com/seasalt-ai/snowboy.git
$:> cd ~/snowboy
$:> cd /home/pi/snowboy/swig/Python3
$:> make
$:> sudo python3 /home/pi/snowboy/setup.py install
$:> sudo cp /home/pi/VBot_Offline/resource/snowboy/snowboydetect.py /usr/local/lib/python3.9/dist-packages/snowboy-1.3.0-py3.9.egg/snowboy/
$:> sudo cp /home/pi/VBot_Offline/resource/snowboy/_snowboydetect.so /usr/local/lib/python3.9/dist-packages/snowboy-1.3.0-py3.9.egg/snowboy/
$:> sudo cp /home/pi/VBot_Offline/resource/snowboy/common.res /usr/local/lib/python3.9/dist-packages/snowboy-1.3.0-py3.9.egg/snowboy/

- Train Hotword: Lần Lượt Các Bước Sau
- Lưu Ý: Cần Sử dụng 1 thiết bị khác không chạy Vbot để Train

B1: Cài Docker trên thiết bị (Cách cài các bạn tham khảo trên google nhé)

B2: Chạy lệnh sau: $:> sudo docker pull rhasspy/snowboy-seasalt

B3: Chạy tiếp lệnh sau: $:> docker run -it -p 8899:8000 rhasspy/snowboy-seasalt

B4: Docker sẽ khởi chạy rhasspy/snowboy-seasalt, hãy kiểm tra xem đã chạy thành công chưa bằng cách truy cập: http://ip:8899
nếu cập được vào và hiển thị giao diện để Train là OK

B5: Cần Stop, không cho chạy Vbot. Sau đó Truy cập vào SHH với thiết bị chạy VBot rồi chạy lệnh sau:
- $:> cd /home/pi/VBot_Offline/resource/test_device

B6: Mở file Trail_Hotword_Snowboy.py điền địa chỉ ip của thiết bị chạy Docker rhasspy/snowboy-seasalt là dòng số 14 là: server_url = "http://192.168.14.17:8899" thay địa chỉ ip vào, xong lưu lại file

B7: Chạy file Trail_Hotword_Snowboy.py bằng lệnh: $:> python3 Trail_Hotword_Snowboy.py nhập tên file hotword cần tạo và nói vào Microphone lần lượt 7 lần

- Hoàn tất Train sẽ xuất hiện file .pmdl với tên bạn tạo. Sao chép file đó vào đường dẫn: /home/pi/VBot_Offline/resource/snowboy/hotword hoặc sử dụng Giao Diện để tải lên file
Nguồn Tham khảo: https://github.com/rhasspy/snowboy-seasalt
- Bạn có thể dùng các thiết bị để làm Client như ESP32, Raspberry Pi, Máy Tính, V..v....
- Client Cần Đọc Dữ Liệu Âm Thanh Từ Microphone Và Streaming Trực Tiếp Tới Server Chạy VBot



Nếu Lựa CHọn ESP32, ESP32s3, ESP32 D1 Mini
- Truy Cập Vào Github Sau: https://github.com/marion001/VBot_Client_Offline Hỗ trợ phát âm thanh .mp3 qua api (Chỉ dùng với cùng lớp mạng nội bộ Local, URL là dạng http, không hỗ trợ https):

- Demo CURL phát âm thanh:
	curl -X POST http://192.168.14.80/play_audio -d "url=http://192.168.14.17/1.mp3"
	
- DEMO CURL dừng phát âm thanh:
	curl http://192.168.14.80/stop_audio
	
- DEMO CURL Restart ESP:
	curl -X POST http://192.168.14.80/restart
		
- DEMO CURL Reset Wifi:
	curl -X POST http://192.168.14.80/resetwifi
	
- DEMO CURL xóa, đặt lại toàn bộ dữ liệu về mặc định:
	curl -X POST http://192.168.14.80/cleanNVS
	
- B1: Cần Bật trong tab: Cấu Hình Config -> Web Interface (Giao Diện) -> Cho Phép Truy Cập Bên Ngoài Internet -> Lưu Cấu Hình
- B2: Cần kích hoạt lần đầu trong Tab: Command/Terminal -> WebUI External -> Kích Hoạt WebUI Ra Internet
- B3: Sau đó Reboot lại hệ thống hoặc Restart lại Apache2 để áp dụng thay đổi

- Bạn có thể trỏ Tên Miền, Domain, DNS, thông qua Modem, Route, VPN, V..v... về địa chỉ ip Local của thiết bị này

- Để đảm bảo an toàn khi truy cập bên ngoài Internet bạn nên kích hoạt mật khẩu đăng nhập WebUI và đổi mật khẩu mặc định: Cá Nhân -> Cài Đặt -> Bật Đăng Nhập WebUI
- B1: Trong Giao Diện WebUI Cần Quét Để Tìm Kiếm Các Thiết Bị Chạy VBot Trong Cùng Lớp Mạng Lan
- B2: Đặt tên định danh (là duy nhất) cho Loa của bạn: Cá Nhân -> Chỉnh Sửa Hồ Sơ -> Tên Ví dụ đặt là: (Loa Phòng Ngủ hoặc Phòng Ngủ)

- B3: Câu lệnh để từ Loa VBot1 thực thi trên loa VBot2 trong file: Adverbs.json -> on_speaker

- B4:
Ví Dụ Câu Lệnh 1: Phát danh sách nhạc trên loa phòng ngủ
Ví Dụ Câu Lệnh 2: Bật/Tắt Mic trên loa phòng ngủ
Ví Dụ Câu Lệnh 3: Bật/Tắt chế độ hội thoại ở loa phòng ngủ
Ví Dụ Câu Lệnh 4: phát bài hát [Tên Bài Hát] trên loa phòng ngủ
Ví Dụ Câu Lệnh 5: [kể truyện, đọc báo, tin tức] [Tên Truyện, Tên Báo, Tin tức] trên loa phòng ngủ
Ví Dụ Câu Lệnh 6: [dừng nhạc, tiếp tục, tạm dừng] trên loa phòng ngủ