Skip to main content

Raspberry Pi を使った入門ガイド

caution

このwikiはReSpeaker 2-Mics Pi HAT v1用に書かれています。v1とv2デバイスを区別するには、ReSpeaker 2-Mics Pi HATハードウェアリビジョンの見分け方を参照してください。

ドライバーのインストールと設定

1. ReSpeaker 2-Mics Pi HATをRaspberry Piに接続

ReSpeaker 2-Mics Pi HATをRaspberry Piに取り付けます。ReSpeaker 2-Mics Pi HATを重ねる際は、ピンが正しく配置されていることを確認してください。

Raspberry Pi接続

connection picture1

Raspberry Pi Zero接続

connection picture2

2. Raspberry Piでドライバーをセットアップ

Piで最新のRaspberry Pi OSを実行していることを確認してください。(2021.05.01時点で更新)

  • ステップ1:ReSpeaker 2-Mics Pi HAT(V1.0)用のDevice Tree Source(DTS)を取得し、コンパイルしてデバイスツリーオーバーレイをインストールします。
git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git  
cd seeed-linux-dtoverlays/
make overlays/rpi/respeaker-2mic-v1_0-overlay.dtbo
sudo cp overlays/rpi/respeaker-2mic-v1_0-overlay.dtbo /boot/firmware/overlays/respeaker-2mic-v1_0.dtbo
echo "dtoverlay=respeaker-2mic-v1_0" | sudo tee -a /boot/firmware/config.txt
  • ステップ2:Piを再起動します。
sudo reboot
  • ステップ3. aplay -larecord -lコマンドでサウンドカード名がソースコードseeed-voicecardと一致することを確認します。
pi@raspberrypi:~/Desktop/mic_hat $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 1: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 3: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [bcm2835-i2s-wm8960-hifi wm8960-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0

pi@raspberrypi:~/Desktop/mic_hat $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 3: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 [bcm2835-i2s-wm8960-hifi wm8960-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
  • ステップ4. テストします。マイクに話しかけた内容が聞こえるはずです(イヤホンまたはスピーカーを接続することを忘れずに):
arecord -D "plughw:3,0" -f S16_LE -r 16000 -d 5 -t wav test.wav
aplay -D "plughw:3,0" test.wav

注意: "plughw:3,0"は録音(または再生デバイス番号)です。システムによってこの番号は異なる場合があります(例えば、Raspberry Pi 0では音声ジャックがないため0になります)。"arecord -l"と"aplay -l"で確認できます。

3. alsamixerでサウンド設定を構成し音量を調整

alsamixerは、サウンド設定の構成と音量調整に使用されるAdvanced Linux Sound Architecture(ALSA)用のグラフィカルミキサープログラムです。

pi@raspberrypi:~ $ alsamixer

左右の矢印キーはチャンネルまたはデバイスの選択に使用され、上下の矢印は現在選択されているデバイスの音量を制御します。ALT+QまたはEscキーでプログラムを終了します。詳細情報

caution

最初にF6を使用してseeed-2mic-voicecardデバイスを選択してください。

使用方法の概要

以下の例を実行するには、https://github.com/respeaker/mic_hat.gitリポジトリをRaspberry Piにクローンしてください

git clone https://github.com/respeaker/mic_hat.git
cd mic_hat

以下の例で言及されているすべてのPythonスクリプトは、このリポジトリ内にあります。必要な依存関係をインストールするには、mic_hatリポジトリフォルダから以下を実行してください

sudo apt-get install portaudio19-dev libatlas-base-dev
pip3 install -r requirements.txt

APA102 LED

各オンボードAPA102 LEDには追加のドライバーチップがあります。ドライバーチップは入力ラインを介して希望の色を受信し、新しいコマンドを受信するまでその色を保持します。

python3 interfaces/pixels.py

ユーザーボタン

GPIO17に接続されたオンボードユーザーボタンがあります。PythonとRPi.GPIOでそれを検出してみましょう。

ステップ4でクローンしたmic_hatフォルダリポジトリから以下のコードを実行してください。

python3 interfaces/button.py

ボタンを押すと"on"と表示されるはずです:

python3 button.py

次のような出力

pi@raspberrypi:~ $ python3 button.py
off
off
on
on
off

Pythonで音声を録音

Pythonで音声を録音するためにPyAudio pythonライブラリを使用します。

まず、以下のスクリプトを実行して2 Mic pi hatのデバイスインデックス番号を取得します:

python3 recording_examples/get_device_index.py

以下のようにデバイスIDが表示されます。

Input Device id  2  -  seeed-2mic-voicecard: - (hw:1,0)

音声を録音するには、recording_examples/record.pyファイルをnanoまたは他のテキストエディタで開き、RESPEAKER_INDEX = 2をシステム上のReSpeakerのインデックス番号に変更します。その後、pythonスクリプトrecord.pyを実行して録音を行います:

python3 recording_examples/record.py

2チャンネルからチャンネル0のデータを抽出したい場合は、record_one_channel.pyの内容を確認してください。他のチャンネルXについては、[0::2]を[X::2]に変更してください。

python3 recording_examples/record_one_channel.py

録音したサンプルを再生するには、aplayシステムユーティリティを使用できます。例えば

aplay -f cd -Dhw:1 output.wav #for Stereo sound
aplay -D plughw:1,0 output_one_channel.wav #for Mono sound from one channel

または、recording_examples/play.pyスクリプトを使用してPyAudioで.wavファイルを再生できます。

python3 recording_examples/play.py path-to-wav-file

play.pyで正しい出力デバイスインデックスを指定してください - そうしないとPyAudioがフリーズします!

ReSpeaker 2-Mic Pi HATとRaspberry PiでのPicovoice

ステップ1. 以下の前に上記のReSpeaker 2-Mic Pi HATとRaspberry Piのステップバイステップチュートリアルに従ってください。

注意: ReSpeaker 2-Mic Pi HATとRaspberry PiでAPA102 LEDが正常に動作していることを確認してください。

ステップ2. ターミナルで以下のコマンドを入力してReSpeaker 2-Mic Pi HAT用のPicovoiceデモをインストールします。

pip3 install pvrespeakerdemo

注意: 新しいRaspberry Pi OSインストールでは、このデモをインストールする際に以下の警告が表示される場合があります: The script picovoice_respeaker_demo is installed in '/home/pi/.local/bin' which is not on PATH.

これは、デモを実行するために/home/pi/.local/binをシステムPATHに追加する必要があることを意味します:

echo 'export PATH="$HOME/bin:$HOME/.local/bin:$PATH"' >> ~/.bashrc

デモの使用方法

このデモは、Raspberry Pi上のReSpeaker 2-Mic Pi HATとPicovoice技術を利用してLEDを制御します。このデモはウェイクワード"Picovoice"によってトリガーされ、LEDのオン/オフや色の変更などのフォローアップアクションを実行する準備が整います。

インストールが完了したら、ターミナルでこのコマンドを入力してデモを実行します:

picovoice_respeaker_demo

音声コマンド

このデモの音声コマンドは以下の通りです:

  • Picovoice

デモの出力:

wake word
  • Turn on the lights

ライトが点灯し、ターミナルに以下のメッセージが表示されるはずです:

{
is_understood : 'true',
intent : 'turnLights',
slots : {
'state' : 'on',
}
}

コマンドのリストがターミナルに表示されます:

context:
expressions:
turnLights:
- "[switch, turn] $state:state (all) (the) [light, lights]"
- "[switch, turn] (all) (the) [light, lights] $state:state"
changeColor:
- "[change, set, switch] (all) (the) (light, lights) (color) (to) $color:color"
slots:
state:
- "off"
- "on"
color:
- "blue"
- "green"
- "orange"
- "pink"
- "purple"
- "red"
- "white"
- "yellow"

また、以下のコマンドで色を変更することもできます:

  • Picovoice, set the lights to orange

ライトを消すには:

  • Picovoice, turn off all lights

デモビデオデモンストレーション

デモソースコード

このデモは**Picovoice SDK**で構築されています。デモのソースコードはGitHubのhttps://github.com/Picovoice/picovoice/tree/master/demo/respeakerで入手できます。

異なるウェイクワード

Picovoice SDKには、Apache 2.0でライセンスされた無料のサンプルウェイクワードが含まれており、主要な音声アシスタント(例:"Hey Google"、"Alexa")や"Computer"や"Jarvis"などの楽しいものも含まれています。

カスタム音声コマンド

照明コマンドは、PicovoiceのSpeech-to-Intentコンテキストによって定義されます。Picovoice Consoleを使用して許可された文法を入力することで、コンテキストを設計および訓練できます。編集中にマイクボタンでブラウザ内で変更をテストできます。Picovoice Console(https://picovoice.ai/console/)にアクセスしてアカウントにサインアップしてください。Rhino Speech-to-Intentエディタを使用してコンテキストを作成し、Raspberry Pi用に訓練してください。

複数ウェイクワードの例

Porcupine

Porcupineは、高精度で軽量なウェイクワードエンジンです。常時リスニング対応の音声アプリケーションの構築を可能にします。特徴は以下の通りです:

  • 実環境で訓練された深層ニューラルネットワークを使用。
  • コンパクトで計算効率が良い。IoTに最適。
  • クロスプラットフォーム。Raspberry Pi、BeagleBone、Android、iOS、Linux(x86_64)、macOS(x86_64)、Windows(x86_64)、および Webブラウザがサポートされています。さらに、エンタープライズ顧客はARM Cortex-M SDKにアクセスできます。
  • スケーラブル。実行時フットプリントを追加することなく、複数の常時リスニング音声コマンドを検出できます。
  • セルフサービス。開発者はPicovoice Consoleを使用してカスタムウェイクワードモデルを訓練できます。

Picovoiceの機能を実証するため、ReSpeaker 2-Mic Pi HATとRaspberry Piを使用した複数ウェイクワードの例も準備しました!異なるウェイクワードで特定のタスクを実行するように設定できます。

このパッケージには、Porcupineを使用してReSpeaker 2-Mic Pi HAT LEDを制御するためのコマンドラインデモが含まれています。

複数ウェイクワード入門ガイド

ターミナルで以下のコマンドを実行してデモドライバをインストールします:

pip3 install ppnrespeakerdemo

複数ウェイクワードの使用方法

ドライバのインストール後、ターミナルで以下を実行します:

porcupine_respeaker_demo

デモが初期化され、ターミナルに[Listening]と表示されるまで待ちます。次のように言ってください:

Picovoice

デモの出力:

detected 'Picovoice'

ライトがgreenに設定されました。次のように言ってください:

Alexa

ライトがyellowに設定されました。次のように言ってください:

Terminator

ライトを消すことができます。

ウェイクワードと色の対応

このデモでサポートされているウェイクワードに関連付けられた色は以下の通りです:

  • #ffff33 Alexa
  • #ff8000 Bumblebee
  • #ffffff Computer
  • #ff0000 Hey Google
  • #800080 Hey Siri
  • #ff3399 Jarvis
  • #00ff00 Picovoice
  • #0000ff Porcupine
  • #000000 Terminator

複数ウェイクワード例のソースコード

この例の完全なソースコードはこちらをご覧ください:https://github.com/Picovoice/porcupine/tree/master/demo/respeaker

ReSpeaker 2-Mic Pi HATとMycroft Preciseを使用したキーワードスポッティング

Mycroft Preciseは完全にオープンソースのキーワード検出エンジンです。Picovoiceと比較して機能は限定的ですが、より寛容なライセンス(Apache 2.0)を持ち、ライセンスが保持される限り、クローズドソースや商用を含む変更と再配布が許可されています。

Mycroft Preciseを開始するには、SeeedのMycroft Preciseフォークの最新安定版をインストールします:

sudo apt-get install libatlas-base-dev
pip3 install git+https://github.com/respeaker/mycroft_runner_simple.git

注意: 新しいRaspberry Pi OSインストールでは、このデモをインストールする際に以下の警告が表示される場合があります: The script picovoice_respeaker_demo is installed in '/home/pi/.local/bin' which is not on PATH.

これは、デモを実行するために/home/pi/.local/binをシステムPATHに追加する必要があることを意味します:

echo 'export PATH="$HOME/bin:$HOME/.local/bin:$PATH"' >> ~/.bashrc

その後、以下を実行するだけでMycroft Preciseのインストールをテストできます:

mycroft-precise --model hey-mycroft

Mycroft Preciseを独自のプロジェクトに統合したい場合は、APIの詳細についてGithubリポジトリのREADMEファイルを確認してください。

ReSpeaker 2-Mic Pi HATとMycroft Coreを使用したインテリジェントアシスタント

Mycroftはハッカブルなオープンソース音声アシスタントです。Amazon AlexaやGoogle Assistantと同様の機能を持ちますが、より寛容なライセンス(Apache 2.0)を持ち、ライセンスが保持される限り、クローズドソースや商用を含む変更と再配布が許可されています。

このセクションは現在開発中です。RespeakerでMycroft Coreを使用することについて、より詳細な情報を追加予定です

ReSpeaker 2-Mic Pi HATとRaspberry Pi ZeroでのPicovoice入門ガイド

ステップ1. ドライバのインストールと設定で説明されているように、ドライバをインストールしてデバイスを設定します。

次に、PicovoiceのGitHubリポジトリをクローンします:

git clone --recurse-submodules https://github.com/Picovoice/picovoice.git
cd picovoice

注意: ReSpeaker 2-Mic Pi HATとRaspberry Pi ZeroでAPA102 LEDが正常に動作していることを確認してください。

ステップ2. ターミナルで以下を入力してwiringpiライブラリをインストールします。

sudo apt-get install wiringpi

ステップ3. リポジトリのルートから、ターミナルで以下のコマンドを入力してReSpeaker 2-Mic Pi HAT用のPicovoiceデモをインストールします。

gcc -std=c99 -O3 -o demo/respeaker-rpi0/picovoice_demo_mic \
-I sdk/c/include/ demo/respeaker-rpi0/picovoice_demo_mic.c \
-ldl -lasound -lwiringPi

デモの使用方法

このデモは、Raspberry Pi ZeroのReSpeaker 2-Mic Pi HATとPicovoice技術を利用してLEDを制御します。このデモはウェイクワード"Picovoice"によってトリガーされ、LEDのオン/オフや色の変更などの後続アクションを実行する準備が整います。

インストールが完了したら、リポジトリのルートから以下のコマンドを入力してターミナルでデモを実行します:

./demo/respeaker-rpi0/picovoice_demo_mic \
sdk/c/lib/raspberry-pi/arm11/libpicovoice.so \
resources/porcupine/lib/common/porcupine_params.pv \
resources/porcupine/resources/keyword_files/raspberry-pi/picovoice_raspberry-pi.ppn \
0.65 \
resources/rhino/lib/common/rhino_params.pv \
demo/respeaker/pvrespeakerdemo/respeaker_raspberry-pi.rhn \
0.5 \
plughw:CARD=seeed2micvoicec,DEV=0

音声コマンド

このデモの音声コマンドは以下の通りです:

  • Picovoice

デモの出力:

wake word
  • Turn on the lights

ライトが点灯し、ターミナルに以下のメッセージが表示されます:

{
is_understood : 'true',
intent : 'turnLights',
slots : {
'state' : 'on',
}
}

コマンドのリストがターミナルに表示されます:

context:
expressions:
turnLights:
- "[switch, turn] $state:state (all) (the) [light, lights]"
- "[switch, turn] (all) (the) [light, lights] $state:state"
changeColor:
- "[change, set, switch] (all) (the) (light, lights) (color) (to) $color:color"
slots:
state:
- "off"
- "on"
color:
- "blue"
- "green"
- "orange"
- "pink"
- "purple"
- "red"
- "white"
- "yellow"

また、以下のコマンドで色を変更することもできます:

  • Picovoice, set the lights to orange

ライトを消すには:

  • Picovoice, turn off all lights

デモビデオ実演

デモソースコード

このデモは**Picovoice SDK**で構築されています。デモのソースコードはGitHubのhttps://github.com/Picovoice/picovoice/tree/master/demo/respeaker-rpi0で入手できます。

異なるウェイクワード

Picovoice SDKには、Apache 2.0でライセンスされた無料のサンプルウェイクワードが含まれており、主要な音声アシスタント(例:"Hey Google"、"Alexa")や"Computer"や"Jarvis"などの楽しいものも含まれています。

カスタム音声コマンド

照明コマンドは、PicovoiceのSpeech-to-Intentコンテキストによって定義されます。Picovoice Consoleを使用して許可された文法を入力することで、コンテキストを設計および訓練できます。編集中にマイクボタンでブラウザ内で変更をテストできます。Picovoice Console(https://picovoice.ai/console/)にアクセスしてアカウントにサインアップしてください。Rhino Speech-to-Intentエディタを使用してコンテキストを作成し、Raspberry Pi Zero用に訓練してください。

複数ウェイクワードの例

Picovoiceの機能を実証するため、ReSpeaker 2-Mic Pi HATとRaspberry Pi Zeroを使用した複数ウェイクワードの例も準備しました!異なるウェイクワードで特定のタスクを実行するように設定できます。

このパッケージには、Porcupine を使用して ReSpeaker 2-Mic Pi HAT LED を制御するためのコマンドラインデモが含まれています。

Porcupine

Porcupine は、高精度で軽量なウェイクワードエンジンです。常時リスニング対応の音声対応 アプリケーションの構築を可能にします。特徴は以下の通りです:

  • 実環境で訓練されたディープニューラルネットワークを使用。
  • コンパクトで計算効率が高い。IoT に最適。
  • クロスプラットフォーム対応。Raspberry Pi、BeagleBone、Android、iOS、Linux (x86_64)、macOS (x86_64)、Windows (x86_64)、および Web ブラウザをサポート。さらに、エンタープライズ顧客は ARM Cortex-M SDK にアクセス可能。
  • スケーラブル。実行時フットプリントを追加することなく、複数の常時リスニング音声コマンドを検出可能。
  • セルフサービス。開発者は Picovoice Console を使用してカスタムウェイクワードモデルを訓練可能。

マルチウェイクワード入門ガイド

ステップ 1 wiringpi ライブラリをインストール(まだインストールしていない場合)するため、ターミナルで以下を入力します。

sudo apt-get install wiringpi

次に、Picovoice の GitHub リポジトリを git clone します:

git clone --recurse-submodules https://github.com/Picovoice/porcupine.git
cd picovoice

ステップ 2. リポジトリのルートから、ターミナルで以下のコマンドを入力して ReSpeaker 2-Mic Pi HAT 用の Porcupine デモをインストール します。

gcc -std=c99 -O3 -o demo/respeaker-rpi0/porcupine_demo_mic \
-I include/ demo/respeaker-rpi0/porcupine_demo_mic.c \
-ldl -lasound -lwiringPi

マルチウェイクワードの使用方法

リポジトリのルートから、ターミナルで以下を実行します:

./demo/respeaker-rpi0/porcupine_demo_mic \
lib/raspberry-pi/arm11/libpv_porcupine.so \
lib/common/porcupine_params.pv \
0.65 \
plughw:CARD=seeed2micvoicec,DEV=0 \
resources/keyword_files/raspberry-pi/alexa_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/computer_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/hey\ google_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/hey\ siri_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/jarvis_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/picovoice_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/porcupine_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/bumblebee_raspberry-pi.ppn \
resources/keyword_files/raspberry-pi/terminator_raspberry-pi.ppn

デモが初期化され、ターミナルに [Listening] と表示されるまで待ちます。次のように言います:

Picovoice

デモの出力:

detected 'Picovoice'

ライトが green に設定されました。次のように言います:

Alexa

ライトが yellow に設定されました。次のように言います:

Terminator

ライトを消灯します。

ウェイクワードと色の対応

このデモでサポートされているウェイクワードに関連付けられた色は以下の通りです:

  • #ffff33 Alexa
  • #ff8000 Bumblebee
  • #ffffff Computer
  • #ff0000 Hey Google
  • #800080 Hey Siri
  • #ff3399 Jarvis
  • #00ff00 Picovoice
  • #0000ff Porcupine
  • #000000 Terminator

マルチウェイクワードサンプルソースコード

この例の完全なソースコードはこちらをご覧ください:https://github.com/Picovoice/porcupine/tree/master/demo/respeaker-rpi0

Picovoice 技術サポート

Picovoice の使用中に技術的な問題が発生した場合は、Picovoice にアクセスしてディスカッションをご覧ください。

FAQ

Q1: "sudo pip install pyaudio" 実行時に #include "portaudio.h" エラーが発生します。

A1: この問題を解決するには、以下のコマンドを実行してください。

sudo apt-get install portaudio19-dev

Q2: Raspbian Mirrors ソースを変更するにはどうすればよいですか?

A2: Raspbian Mirrors を参照し、以下の手順に従って最初にソースを変更してください。

pi@raspberrypi ~ $ sudo nano /etc/apt/sources.list

例えば、中国のユーザーには清華大学のソースを使用することをお勧めします。そのため、sources.list を以下のように変更してください。

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
Loading Comments...