กูเกิ้ลทำโครงการแรกกับ magpi เป็น voice kit
https://aiyprojects.withgoogle.com/voice/
โหลด อิมเมจไฟล์มาเขียนใส่ SD
ใส่ไฟล์ ชื่อ ssh ไม่ต้องมีนามสกุลที่พาร์ติชั่น boot
เสียบสาย Cat 5/6 สแกนไอพี แล้ว ssh -X pi@ip พาสเวิร์ด raspberry เข้าไปได้เลย
--------------------------------------------------------
เสียง
ใช้ USB Audio Device
ดูว่าเจอไหม cat /proc/asound/cards หรือ lsusb
ดูซาวการ์ดทั้งหมด arecord --list-devices หรือ arecord -L
ปรับ alsamixer
ลองเล่น
aplay -D plughw:1 /usr/share/scratch/Media/Sounds/Vocals/Singer1.wav
plughw:1 , หมายเลขการ์ด
ลองบันทึก
-- ไม่จำเป็นต้องทำ--
--------------------------------------------------------
เอาให้แน่ใจว่ามี VNC Server แล้ว
sudo apt-get update
sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer
เปิดใช้
sudo raspi-config
Interfacing Options > VNC > Yes.
reboot
ต่อเข้าไปด้วยโปรแกรม
https://www.realvnc.com/download/viewer/
user/password = pi/raspberry
--------------------------------------------------------
check_audio
ถ้า เล่นคำสั่งนี้ได้
aplay -D plughw:1 /usr/share/sounds/alsa/Front_Center.wav
ก็แก้
src/audio.py
จาก parser.add_argument('-I', '--input-device', default='default'
เป็น
parser.add_argument('-I', '--input-device', default='plughw:1'
จาก parser.add_argument('-O', '--output-device', default='default',
เป็น
parser.add_argument('-O', '--output-device', default='plughw:1',
แก้ใน src/main.py ด้วย
--------------------------------------------------------
สวิตช์และไฟแอลอีดี
Press the button on GPIO 23 - ต่อเข้าสวิตลงกราวด์ได้เลย (16-14)
GPIO pin for the LED (default: 25) - ต่อแอลอีดีใส่ตัวต้านทานลงกราวด์ได้เลย (22-20)
เล่นแบบไม่ใช้ปุ่ม ไม่ใส่หลอดแอลอีดี ดูจอและ ให้เสียงปรบมือแทน VNC เข้าไป คลิก dev_terminal
พิมพ์ src/main.py -T clap
ปล ทดสอบกับ pi 2

คุยอะไรดี
Talk to your Google Assistant
The complete list of Google Home commands so far
เพิ่มฟังวิทยุออนไล์ซักหน่อย
sudo apt-get update
sudo apt-get install mpd mpc
แก้
sudo nano /etc/mpd.conf
audio_output {
type "alsa"
name "USB SOUND CARD"
device "hw:1" # optional
--------------------------------------------------------
เปิดใช้ snd_bcm2835 เพื่อใช้ฟังวิทยุออนไลน์
sudo nano /boot/config.txt
เอา # ของ audio ออก
sudo modprobe snd_bcm2835
echo 'snd_bcm2835' >> /etc/modules หรือ
echo "snd-bcm2835" > /etc/modules-load.d/snd-bcm2835.conf
amixer cset numid=3 n
n Analog=1 HDMI=2 (Auto=0 Not recommended)
แก้
sudo nano /etc/mpd.conf
audio_output {
type "alsa"
name "USB SOUND CARD"
device "hw:0,0" # optional
เพิ่ม
sudo nano /etc/modprobe.d/alsa-base.conf
options snd_soc_googlevoicehat_soundcard index=0
options snd_usb_audio index=1
options snd_bcm2835 index=2
sudo reboot now
แต่จะได้ snd_bcm2835 = 0 ก็ดีเพราะไม่ได้ใช้ voicehat อยู่แล้ว
--------------------------------------------------------
เพิ่ม action ขำๆ
nano src/action.py
เพิ่มก่อน Maker!
# mpd mpc
class mpcPlay():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc play', shell=True)
except:
logging.info("mpc Error")
pass
class mpcStop():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc stop', shell=True)
except:
logging.info("mpc Error")
pass
class mpcNext():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc next', shell=True)
except:
logging.info("mpc Error")
pass
class mpcPrev():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc prev', shell=True)
except:
logging.info("mpc Error")
pass
class shutDown():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('sudo shutdown now', shell=True)
except:
logging.info("can not shutdown")
pass
แล้วเพิ่ม ใน def make_actor(say):
actor.add_keyword(_('turn on radio'), mpcPlay())
actor.add_keyword(_('turn off radio'), mpcStop())
actor.add_keyword(_('next station'), mpcNext())
actor.add_keyword(_('last station'), mpcPrev()) ## ใช้ previous ได้เป็น PBS เลยใช้ last
actor.add_keyword(_('shut down'), shutDown())
--------------------------------------------------------
เสียง
ใช้ USB Audio Device
ดูว่าเจอไหม cat /proc/asound/cards หรือ lsusb
ดูซาวการ์ดทั้งหมด arecord --list-devices หรือ arecord -L
ปรับ alsamixer
ลองเล่น
aplay -D plughw:1 /usr/share/scratch/Media/Sounds/Vocals/Singer1.wav
plughw:1 , หมายเลขการ์ด
ลองบันทึก
arecord -D plughw:1 --duration=10 -f cd -vv ~/rectest.wav
แล้วเล่น aplay -D plughw:1 ~/rectest.wav
-- ไม่จำเป็นต้องทำ--
บันทึกค่า sudo alsactl store 1
ถ้าติดก็
sudo touch /root/.Xauthority
xauth list $DISPLAY
จะเห็นประมาณ
raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 b69e75fb19b0ac6f3d3a06d777107a03
แล้ว
xauth add raspberrypi/unix:10 MIT-MAGIC-COOKIE-1 b69e75fb19b0ac6f3d3a06d777107a03
หรือ อ่านเพิ่มที่นี่ ทำผ่าน vnc ง่ายกว่า - ไอคอนราสเบอรี่ > preference > audio
--------------------------------------------------------
ทดสอบ webcam
ใช้ Macnus มีไมค์ด้วย
sudo apt-get install fswebcam
แล้ว
fswebcam image.jpg
--------------------------------------------------------
ทดสอบ webcam
ใช้ Macnus มีไมค์ด้วย
sudo apt-get install fswebcam
แล้ว
fswebcam image.jpg
เอาให้แน่ใจว่ามี VNC Server แล้ว
sudo apt-get update
sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer
เปิดใช้
sudo raspi-config
Interfacing Options > VNC > Yes.
reboot
ต่อเข้าไปด้วยโปรแกรม
https://www.realvnc.com/download/viewer/
user/password = pi/raspberry
--------------------------------------------------------
check_audio
ถ้า เล่นคำสั่งนี้ได้
aplay -D plughw:1 /usr/share/sounds/alsa/Front_Center.wav
ก็แก้
src/audio.py
จาก parser.add_argument('-I', '--input-device', default='default'
เป็น
parser.add_argument('-I', '--input-device', default='plughw:1'
จาก parser.add_argument('-O', '--output-device', default='default',
เป็น
parser.add_argument('-O', '--output-device', default='plughw:1',
แก้ใน src/main.py ด้วย
--------------------------------------------------------
สวิตช์และไฟแอลอีดี
Press the button on GPIO 23 - ต่อเข้าสวิตลงกราวด์ได้เลย (16-14)
GPIO pin for the LED (default: 25) - ต่อแอลอีดีใส่ตัวต้านทานลงกราวด์ได้เลย (22-20)
เล่นแบบไม่ใช้ปุ่ม ไม่ใส่หลอดแอลอีดี ดูจอและ ให้เสียงปรบมือแทน VNC เข้าไป คลิก dev_terminal
พิมพ์ src/main.py -T clap
ปล ทดสอบกับ pi 2

รูปจาก az835927.vo.msecnd.net
คุยอะไรดี
Talk to your Google Assistant
The complete list of Google Home commands so far
เพิ่มฟังวิทยุออนไล์ซักหน่อย
sudo apt-get update
sudo apt-get install mpd mpc
แก้
sudo nano /etc/mpd.conf
audio_output {
type "alsa"
name "USB SOUND CARD"
device "hw:1" # optional
รีสตาร์ท
sudo /etc/init.d/mpd restart
ใส่สถานีที่อยากฟัง เช่น
mpc add http://relay3.slayradio.org:8000/
หรือ ดูที่ http://www.shoutcast.com/
หรือ ดูที่ http://www.shoutcast.com/
เล่น
mpc play
หยุด
mpc stop
บันทึกสถานี
mpc save my_playlist
แก้
sudo nano /var/lib/mpd/playlists/my_playlist.m3u
โหลด
mpc load my_playlist
อื่นๆ
mpc help
--------------------------------------------------------
เปิดใช้ snd_bcm2835 เพื่อใช้ฟังวิทยุออนไลน์
sudo nano /boot/config.txt
เอา # ของ audio ออก
sudo modprobe snd_bcm2835
echo 'snd_bcm2835' >> /etc/modules หรือ
echo "snd-bcm2835" > /etc/modules-load.d/snd-bcm2835.conf
amixer cset numid=3 n
n Analog=1 HDMI=2 (Auto=0 Not recommended)
แก้
sudo nano /etc/mpd.conf
audio_output {
type "alsa"
name "USB SOUND CARD"
device "hw:0,0" # optional
เพิ่ม
sudo nano /etc/modprobe.d/alsa-base.conf
options snd_soc_googlevoicehat_soundcard index=0
options snd_usb_audio index=1
options snd_bcm2835 index=2
sudo reboot now
แต่จะได้ snd_bcm2835 = 0 ก็ดีเพราะไม่ได้ใช้ voicehat อยู่แล้ว
--------------------------------------------------------
เพิ่ม action ขำๆ
nano src/action.py
เพิ่มก่อน Maker!
# mpd mpc
class mpcPlay():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc play', shell=True)
except:
logging.info("mpc Error")
pass
class mpcStop():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc stop', shell=True)
except:
logging.info("mpc Error")
pass
class mpcNext():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc next', shell=True)
except:
logging.info("mpc Error")
pass
class mpcPrev():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('mpc prev', shell=True)
except:
logging.info("mpc Error")
pass
class shutDown():
def run(self, voice_command):
try:
logging.info("Action: %s", voice_command)
subprocess.call('sudo shutdown now', shell=True)
except:
logging.info("can not shutdown")
pass
แล้วเพิ่ม ใน def make_actor(say):
actor.add_keyword(_('turn on radio'), mpcPlay())
actor.add_keyword(_('turn off radio'), mpcStop())
actor.add_keyword(_('next station'), mpcNext())
actor.add_keyword(_('last station'), mpcPrev()) ## ใช้ previous ได้เป็น PBS เลยใช้ last
actor.add_keyword(_('shut down'), shutDown())

ความคิดเห็น
แสดงความคิดเห็น