Biến Orange PI Zero thành Google Assisant

Đã bao giờ bạn nghĩ rằng một bo mạch giá khoảng 300-400k cùng với vỏ và extension có thể trở thành một Google Home điều khiển các thiết bị thông minh trong nhà bạn. Điều này là có thể nếu bạn biết một chút về Linux, Python và đương nhiên Google Assisant có sẵn thư viện mã nguồn mở cho bạn tự do khám phá và phát triển thiết bị Google Home cho riêng bạn. Dựa trên bài viết nguyên gốc đăng trên cnx-software.com, tôi đã thử làm một thiết bị Google Home cho riêng mình (https://www.cnx-software.com/2017/07/30/how-to-setup-an-orange-pi-zero-diy-smart-speaker-with-google-assistant-sdk)

Trong bài này tôi test với 1 bo mạch Orange PI Zero 512MB, 1 bo mở rộng và thay vì dùng vỏ nhựa đen, tôi sử dụng vỏ mica. Tổng chi phí 600k chưa bao gồm thẻ nhớ và nguồn do dùng chung. Tiếp đó bạn cần một bộ loa vi tính có jack cắm đầu 3.5, loa này bạn có thể kiếm nhiều hoặc mua trên mạng với giá rất rẻ (mua ở đây)

Bo mạch Orange-Pi-Zero
Bo mạch Orange-Pi-Zero
Bo mở rộng Orange-Pi-Zero-Interface-Board
Bo mở rộng Orange-Pi-Zero-Interface-Board

 

Orange-Pi-Zero-google-assistant
Orange-Pi-Zero-google-assistant

Về HDH tôi sử dụng bản Armbian 5.30, các bản khác có vẻ không sử dụng được tôi không chắc chắn lắm, nhưng bản 5.30 chắc chắn được.

Các bạn hãy flash hệ điều hành Armbian 5.30 vào thẻ nhớ, cắm vào Orange PI Zero và boot lên như đã hướng dẫn trước đây (Hướng dẫn cài Armbian cho Orange PI Zero)

Sau đó hãy đăng nhập bằng root và thử loa xem đã phát được chưa

aplay -l
speaker-test -twav -c2 -Dhw:0

ở câu lệnh đầu, màn hình command phải hiển thị ra như này là chuẩn, câu lệnh sau sẽ phát các câu Left Front, Right Front lặp đi lặp lại phát ra loa là ok.

card 0: audiocodec [audiocodec], device 0: SUNXI-CODEC sndcodec-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndhdmi [sndhdmi], device 0: SUNXI-HDMIAUDIO sndhdmi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0

Ở bài hướng dẫn cài Armbian, tôi có tạo 1 user có tên là admin, tôi sẽ dùng user này để thực thi các câu lệnh của Google Assistant, dùng user root cho user admin vào 2 nhóm sau cho chắc

adduser admin audio
adduser admin su

Sau đó đăng nhập lại bằng user admin với lệnh sau

su - admin

Tạo file .asoundrc, lệnh

nano .asoundrc

điền chính xác nội dung sau vào. Giải thích qua 1 chút là bộ này để cho phép bạn dùng loa và mic của bo extension thay vì loa qua HDMI, cho các ứng dụng của Google Assistant

pcm.!default {
type asym
capture.pcm “mic”
playback.pcm “speaker”
}
pcm.mic {
type plug
slave {
pcm “hw:0,0”
format S16_LE
}
}
pcm.speaker {
type plug
slave {
pcm “hw:0,0”
}
}

Tiếp đó cài Python

sudo apt-get update
sudo apt-get install python3-dev python3-venv
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate

câu lệnh cuối là activate môi trường làm việc phát triển của python, lúc đó màn hình câu lệnh sẽ có thêm chữ (env) phía trước. Môi trường làm việc của Python thực ra không khác gì bash trên Linux cả, nhưng nếu muốn thoát môi trường này, bạn đánh lệnh deactivate là xong.

Tại môi trường phát triển của python, bạn cài các ứng dụng cần thiết

sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
python -m pip install --upgrade google-assistant-library
python -m pip install --upgrade google-assistant-sdk[samples]
python -m pip install --upgrade google-auth-oauthlib[tool]

Đây là phần quan trọng nhất, bạn cần tạo 1 dự án về Google Assistant và yêu cầu Google hỗ trợ Google Assistant API cho nó. Hãy truy cập vào Google dự án (https://console.cloud.google.com/project) tạo 1 dự án mới, đặt tên nó, ở đây tôi đặt là Orange Pi Zero Smart Speaker

Sau đó truy cập đến Google Assistant API và enable cho nó (https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/). Sau khi enable xong, bạn cần tạo 1 OAuth Client ID để thiét bị bạn truy cập đến Google và được cho phép dùng các tài nguyên trên Google Assistant API. Chọn Credentialsvà chọn tab OAuth consent screen, điền đầy đủ thông tin, sau đó chọn lưu; tiếp đến chọn Other và điền 1 cái tên cho Client ID này. Google sẽ cung cấp cho bạn OAuth client tựa như thế này, copy hết lại

Quay trở lại Credentials, tải file OAuth Client ID. File tải về sẽ có đuôi json dạng như thế này client_secret_782370047932-m31n2oh70f61ro4g2g5hb4n2jhj2ha7l.apps.googleusercontent.com.json

OK. Vậy đã có file OAuth, bạn cần tải nó lên Orange PI Zero, may quá tôi dùng MobaXterm nên nó thường có tab sftp bên cạnh, tôi chỉ cần quay lại thư mục home của admin và kéo thả vào đó

cd ~

Kéo thả file OAuth, sau đó copy chính xác lệnh này, thay tên file json bằng tên file của bạn

google-oauthlib-tool --client-secrets ~/client_secret_782370047932-m31n2oh70f61ro4g2g5hb4n2jhj2ha7l.apps.googleusercontent.com.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless

OKey, nếu mọi thứ chính xác, trên màn hình sẽ phải hiện ra dòng này “Please visit this URL to authorize this application: …”. Copy link đó vào trình duyệt, đăng nhập lại tài khoản Google bạn đã tạo dự án bên trên, nó sẽ hiện ra một đoạn code. Copy đoạn code đó và paste lại vào màn hình command line. Fine! Ứng dụng đã được authorized. Credentials lưu vào như bên dưới

Phew! chưa xong đâu bạn ạ, do bài viết trên cnx-software quá cũ, không cập nhật là SDK của Google Assistant mới yêu cầu phải khai báo project_id và device_model_id khi chạy thử. Do đó bạn phải lấy thêm 2 thông tin trên. Đối với project_id, bạn quay lại về Google Project chọn phần setting là thấy project_id của bạn, ở đây tôi là automated-atlas-207518

Đối với device_model_id, bạn cầu truy cập vào Console của Google Action, sau đó đăng kí thiết bị với dự án mà bạn đặt tên bên trên. https://console.actions.google.com/u/0/?pli=1 Sau khi đăng kí xong, thiết bị của tôi tên như vậy

OK. Giờ bắt đầu chạy, một trong 2 câu lệnh sau đều được

google-assistant-demo --project_id automated-atlas-207518 --device_model_id=automated-atlas-207518-orange-pi-zero-smart-speaker-x6qdmb
googlesamples-assistant-hotword --project_id automated-atlas-207518 --device_model_id automated-atlas-207518-orange-pi-zero-smart-speaker-x6qdmb

Dấu hiệu của sự thành côgn là thiết bị phản hồi lại câu lệnh giọng nói Hey Google ! của bạn bằng dòng ON_CONVERSATION_TURN_STARTED, và sau đó trả lời các câu hỏi của bạn theo như dưới đây

Chúc các bạn thành công.

Bài sau tôi hướng dẫn các bạn tùy biến thêm cho thiết bị Google Assisant Orange Pi Zero mượt hơn. Hãy ủng hộ tôi, 1$ cũng có giá trị qua link dưới đây

Gửi phản hồi

Website này sử dụng Akismet để hạn chế spam. Tìm hiểu bình luận của bạn được duyệt như thế nào.