Raspberry Pi 4で スマスピ動作

(RaspbianOS 2020-02-05版では、Debian向けのAIYインストールを使って楽になったので、コメント4に投稿)

Raspberry Pi 4でAIY Voice Kit を動作させ、「ね~グーグル」の呼びかけができたので、
備忘録とする。RasPi3でも勿論動作する。
更に、14)のcheck_audio.pyを飛ばせば、AIY Voice Kit が無くても動作したので驚いた。Pulseaudioでマイク・スピーカーを切り替えることで自由に構築・運用ができる。
(下記原稿中、「–ダッシュ2個」の表現が全角文字置換されているので要注意)

【新規SDカードに書き込む場合】
1)MicroSDの初期化
  PCにてExplorerがすべて閉じた状態でディスク管理を開いて
  SDドライブのパーティションをすべてボリューム削除する
2)Win32DiskImager等でMicroSDに最新RaspbianOSを書き込む
  https://downloads.raspberrypi.org/raspbian_full_latest
  2019-09-26-raspbian-buster-full.img(Busterバージョン)
3)bootのconfig.txtに次の追記をする
  dtoverlay=googlevoicehat-soundcard
  また次をコメントアウトする
  #dtparam=audio=on
  なお、ミニLCDを使う場合は、次の追記も必要になることが多い。
  7Inch 1024×600だと、config.txtに次の追加を指示されている。
max_usb_current=1
hdmi_force_hotplug=1
config_hdmi_boost=7
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
4)bootのトップにsshダミーファイルをおく

5)RasPiにMicroSDを入れ、電源をオンにして起動する
  (もしRasPi4だった場合は、まだgooglevoicehat-soundcardの
  ボードをドッキングさせずに電源を入れる)
6)RaspberryPiの設定誘導に対し、Password,Locale,Time zoneを適切に
  変更し、WiFiのPassKeyを設定する(スマホのGoogleツールで
  デバイス設定するとき、同一AP配下となる様に考慮)
  updateはここではskipする
7)PCからSSHツールにてraspberrypi.localに接続する
  SSHで時々の休止が気になるときは、次のコマンドで省エネを停止できる
  sudo iw dev wlan0 set power_save off
8)ダウンロードリストを拡張して、UPGRADEを実施する
  echo “deb https://dl.google.com/aiyprojects/deb stable main” | sudo tee /etc/apt/sources.list.d/aiyprojects.list
  wget -q -O – https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add –
  sudo apt-get update
  sudo apt-get -y upgrade
  sudo reboot する
  (RasPi4については、ここで画面出力を2Kに確定し、Shutdown
   してgooglevoicehat-soundcardのボードをドッキングさせる)

9)仮置きとしてAIY V2のインストールをする
  sudo apt install –fix-missing dkms
  sudo apt-get install -y aiy-voicebonnet-soundcard-dkms aiy-dkms
  処理中に–configureのエラーが発生するが、無視する:
   aiy-dkms
   aiy-voicebonnet-soundcard-dkms

10)AIYのadcとi2cの変更
  sudo cp /usr/src/aiy-1.1/aiy/iio/adc/aiy-adc.c /usr/src/aiy-1.1/aiy/iio/adc/aiy-adc.c.org
  sudo vi +138 /usr/src/aiy-1.1/aiy/iio/adc/aiy-adc.c
   該当1行の削除
  sudo cp /usr/src/aiy-1.1/aiy/mfd/aiy-io-i2c.c /usr/src/aiy-1.1/aiy/mfd/aiy-io-i2c.c.org
  sudo vi /usr/src/aiy-1.1/aiy/mfd/aiy-io-i2c.c
   2か所のi2c_lock_adapter(i2c->adapter);をi2c_lock_bus(i2c->adapter, I2C_LOCK_ROOT_ADAPTER);に変更
   2か所のi2c_unlock_adapter(i2c->adapter);をi2c_unlock_bus(i2c->adapter, I2C_LOCK_ROOT_ADAPTER);に変更
  インストールする
   sudo dkms install aiy/1.1
  sudo dkms remove aiy-voicebonnet-soundcard/1.0 –all
  sudo reboot する
11)Audioのインストール
  sudo apt-get update
  sudo apt-get install -y pulseaudio pavucontrol
  タイムアウトだったら、上手く行くまでinstallを再試行する。
  処理中のaiy-voicebonnet-soundcardに関するエラーは無視する。
   sudo mkdir /etc/pulse/daemon.conf.d/
  echo “default-sample-rate = 48000” | sudo tee /etc/pulse/daemon.conf.d/aiy.conf
  sudo apt-get install -y aiy-python-wheels
  処理中にlinux_armv6lと–configureのエラーが発生するが、無視する:
   aiy-python-wheels
   aiy-voicebonnet-soundcard-dkms

  また、VLCのHDMIからの音声出力を選択したいならば、
  #dtparam=audio=on
  のコメントを外し、カード番号を入れ替え、さらに次の
  定義を、/etc/asound.conf に追加する。
  <AIY VoiceKITのサウンドカードの人は、次のように設定>
options snd_rpi_googlevoicehat_soundcard index=0
pcm.softvol {
    type softvol
   slave.pcm dmix
        control {
        name Master
        card 0
    }
}
pcm.micboost {
    type route
    slave.pcm dsnoop
    ttable {
        0.0 30.0
        1.1 30.0
    }
}
pcm.!default {
    type asym
    playback.pcm “plug:softvol”
    capture.pcm “plug:micboost”
}
ctl.!default {
    type hw
    card 0
}
  <カード番号の入れ替え>/etc/modprobe.d/alsa-base.conf
  options snd slots=snd_rpi_googlevoicehat_soundcard,snd_bcm2835
  options snd_rpi_googlevoicehat_soundcard index=0
  options snd_bcm2835 index=1

12)protobufのインストール
  cd Downloads
  pip3 download protobuf
  pip3 install ./protobuf-3.11.2-py2.py3-none-any.whl
   (3.11.2の部分は、最新Vnoを使う)
  sudo vi +7 /var/lib/dpkg/info/aiy-python-wheels.postinst
   7-8行をコメントアウトする
  sudo dpkg –configure –force-overwrite –force-overwrite-dir -a
  処理中に–configureのエラーが発生するが、無視する:
   aiy-voicebonnet-soundcard-dkms
  sudo reboot する

13)実行準備
  git clone https://github.com/google/aiyprojects-raspbian.git AIY-projects-python
  sudo mv AIY-projects-python /opt/aiy/projects-python
  ln -s /opt/aiy/projects-python AIY-projects-python
  ln -s /home/pi/AIY-projects-python AIY-voice-kit-python
  sudo pip3 install -e AIY-projects-python

  THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.
   このエラーが出たとしても無視する。

  sudo cp /opt/aiy/projects-python/src/aiy/assistant/auth_helpers.py \
                  /opt/aiy/projects-python/src/aiy/assistant/auth_helpers.py.org
  sudo vi +75 /opt/aiy/projects-python/src/aiy/assistant/auth_helpers.py
   この行末カッコ内の最後のパラメタ’,-1’を削除する
  pip3 install google-assistant-library==1.0.0
#  (Segmentation Fault防止のため、1.0.1を推奨するメッセージを
   無視して1.0.0をPre設置)
  pip3 install google-assistant-library
  pip3 install google-auth-oauthlib
  sudo pip3 install grpcio
  AIYプロジェクト内の日本語対応が不完全なところを修正する。
   vi +214 /home/pi/.local/lib/python3.7/site-packages/google/assistant/library/assistant.py
   の.encode(‘ASCII’) を.encode(‘utf-8’) にする。
  AIYボードの初期化のために、命令を追加する。
   vi +284 /home/pi/AIY-voice-kit-python/src/aiy/board.py
   に、GPIO.setwarnings(False) を行追加する。
14)次の確認を実施する
  amixer sset Master 50% で、音量を半分にしておく
  export PYTHONPATH=”/home/pi/AIY-voice-kit-python/src”
  /home/pi/AIY-voice-kit-python/checkpoints/check_audio.py

15)次のURLに基づき、アカウント登録をする
  https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00255/042600011/?P=4
  assistant.json ファイルを /home/piに置く
16)サンプルコードの実行
  export PYTHONPATH=”/home/pi/AIY-voice-kit-python/src”
$PYTHONPATH/examples/voice/assistant_library_with_button_demo.py
   初回のスクリプト実行時にURLが表示され、ブラウザでアクセスする
  ことで認証文字列が返される。
  それをスクリプト実行中の質問に貼り付ける。
17)デバイスの登録
  サンプルコードの実行でしばらく放置し、スマホのHomeアプリの設定・詳細設定の
  「アシスタント」に出現した新たなデバイス(Voice Kit)の言語を
  日本語に設定し、属性参照を許可する。

以下は、SmartTV(PX-W3U4,PX-Q3U4使用)に変身させるときの追加作業
18)TVチューナーサポートシステムのインストール
  curl –silent https://mori1-hakua.tokyo/test/TVget.sh | sh

19)N2TTS,youtube-dl,mojimojiのインストール
  このURLに従う:https://support.kddi-research.jp/n2/service.html
  (wget -O n2-linux-foc.tgz https://support.kddi-research.jp/n2/download.php?type=5)
  sudo -H pip install youtube-dl
  pip3 install mojimoji
  pip3 install –upgrade google-api-python-client

【RasPi4に対応させ、multiTV.shから aiyTV.shを用意】
  MPEG2に対するプレーヤーとして、OMXからVLCメディアプレーヤに
  切り替えるため、
  source ~/.biling
  if [ “$BILING” = “yes” ]; then
   MPG2 =`vcgencmd codec_enabled MPG2`
   if [ “$MPG2” = “MPG2 disabled” ]; then
   BILING=sel
   fi
  fi
  とし、
  elif [ “$BILING” = “sel” ]; then
   (recdvb –dev ${DEV} –b25 –strip –http 8080 ${LCH}; exit) &
   (sleep 2) &
   cvlc -f –no-video-title-show http://localhost:8080/${CH}/
  fi
  と、プレーヤーを取り換える。
  VLCはマルチスレッドではブロックノイズが出やすいため、スレッドを
  シングルに切り替える。
  <sayJ関数の追加>
  vi $PYTHONPATH/aiy/voice/tts.py
<pre>
def sayJ(text, asynch=0, lang=’ja-JP’, volume=60, pitch=130, speed=100, device=’sysdefault:CARD=ALSA’):

    logging.info(text)
    with tempfile.NamedTemporaryFile(suffix='.wav', dir=RUN_DIR) as f:
       cmd = 'n2tts -p VOLUME=%s -o %s "%s" && aplay -q -D %s %s' % \
             (volume, f.name, text, device, f.name)
       if asynch==0: subprocess.check_call(cmd, shell=True)
       else: subprocess.Popen(cmd, shell=True)
</pre>

以上

カテゴリー: RaspberryPi, お知らせ パーマリンク

Raspberry Pi 4で スマスピ動作 への5件のフィードバック

  1. fujii のコメント:

    最初にDKMSを次のモードでインストールする。
      sudo apt install –fix-missing dkms

  2. fujii のコメント:

    vi /etc/udev/rules.d/99-px4video.rules
    KERNEL==”px4video*”, GROUP=”video”, MODE=”0664″
    KERNEL==”isdb2056video*”, GROUP=”video”, MODE=”0664″

  3. fujii のコメント:

    sudo -H pip install –upgrade youtube-dl

  4. fujii のコメント:

    Raspbian2020-0205 向けの正式ドキュメントは、次からDownloadできる。
    https://mori1-hakua.tokyo/test/日本語AssistantV3.txt

    また、音声呼び出しのSmartTV(PX-W3U4,PX-Q3U4使用)は、次でInstallできる。
    curl –silent https://mori1-hakua.tokyo/test/TVget.sh | bash

    これで、次のような声掛けによるテレビ視聴ができるようになる。
    ・aiy でBS-TBSを見たい
    ・aiy でフジテレビに変えて
    ・aiy で1チャンネルに切り替えて
    ・aiy で258チャンネルを見たい
    ・aiy でフジテレビをチラ見したい
    ・裏でTBSを見たい
    ・表でNHKを見たい
    ・aiy の裏を消して
    ・音声を交代して

    aiy を省略すると、一般的には、家庭用のTVの操作になってしまう。

  5. fujii のコメント:
    sudo vi /etc/xdg/openbox/lxde-pi-rc.xml
        <keybind key="Menu">
            <action name="Focus"/>
            <action name="Raise"/>
            <action name="ShowMenu">
              <menu>client-menu</menu>
            </action>
        </keybind>
        <keybind key="XF86AudioPlay">
          <action name="NextWindow">
          </action>
        </keybind>
    

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です