パンプキン・パイ
- 2016-12-10 初版 音声認識リモコン登場
- 2016-12-29 第2版 正誤表追加
- 2017-04-28 第3版 インストール方法改善
- 2017-10-22 第4版 不要ファイルの削除方法
- 2017-12-06 第5版 訂正:C1,C2省略
- 2018-05-23 第6版 NOOBS 2.6.0/2.7.0/2.8.0/2.8.1 でのトラブル・シューティング
- 2018-07-08 第7版 赤外線解析の機能追加
- 2019-03-28 第8版 kernel 4.18.x対応、Julius 4.5対応
- 2021-11-22 第9版 bullseye対応
はじめに
- パンプキン・パイ=ラズベリー・パイ用実験拡張ボード
- ラズベリー・パイ(Raspberry Pi)にパンプキン・パイ(Pumpkin Pi)をさします。今はやりの言葉で言えばRPPPです。
- トランジスタ技術2017年1月号の付録基板と部品キットとして誕生しました。
- キットと完成品があります。
- 使い方はトランジスタ技術2017年1月号をご覧ください。
- バックナンバーはこちらで購入できます。
- ここではすべての解説を行いません。
- 補足のみを行います。

- キットは2種類あります。
- 一方は基板付きです。
- 中級者向けの組み立てキットです。

パンプキン・パイの特徴
- アップル・パイはアナログ出力を得意としています。ハイレゾ再生できます。
- パンプキン・パイはアナログ入力を得意としています。ハイレゾ録音できます。
- パンプキン・パイのすごいところは音声認識します。単なる音声反応ではなく、音声を判別します。
- SiriやOK Googleはバックの巨大なサーバで処理しますが、パンプキン・パイはラズベリー・パイで処理します。
- ※Alexa や Cortana と同じような音声認識ともいえます。
- ラズベリー・パイだけで簡単な音声認識リモコンを実現します。
- 音声でエアコンをつけたり、テレビをつけたりできます。
- これを実現できたのも本格的なオーディオ入力機能を搭載したことが理由の一つです。
- USBマイクよりも高精度で音を取り込みます。
- ※音声認識にはマイクとマイクアンプが必要です。
著作権と免責事項
- 個人利用に限定され、著作権者の許可なく商用利用できません。
- 直接間接に関わらず、使用によって生じたいかなる損害も筆者は責任を負いません。
- Pumpkin Pi (C)2016 All rights reserved by Y.Onodera.
情報のまとめ
動作確認情報
- 2023-03-20現在
- Raspberry Pi 2B/3B/3B+/4B/Zero/ZeroW
- NOOBS 3.0(kernel 4.14.x、4.18.x、4.19.x)
- NOOBS 3.2(kernel 4.19.x)
- NOOBS 3.3(kernel 4.19.x)
- bullseye (kernel 5.10.x)
- bullseye (kernel 6.1.x)
- Julius 4.5
- ※Raspberry Pi 3A+は未確認です。
- ※NOOBS Liteは未確認です。一部パッケージがインストールされていないことがあります。
- RaspberryPi 4B の注意事項はこちらです。
- 4BではwiringPiを更新してください。
Juliusの発音
- 公式ページでもJuliusの発音がわかりません。
- 正式な発音はわかりませんが、古代ローマの政治家Julius Caesarに2種類の読み方があります。
- ユリウス・カエサル(ラテン語読み)
- ジュリアス・シーザー(英語読み)
- ※もともとのラテン語にIとJの区別がなく、次第に派生としてJが区別されるようになったようです。
補足説明
- マイクロSDカードは16GB以上を推奨します。
- 簡易設定手順書です。
- セットアップの詳細は雑誌をご覧ください。
- 音声認識ソフトからキックされるシェルは/home/pi/PumpkinPi/Remoconにあります。
- シェルを追加したり、変更して利用します。
- 読みのキーワードとシェルの紐づけはremocon.pyファイル内です。同時に編集してください。
- 詳細は記事をご覧ください。
- 音声認識コマンドのリストは~/julius-kit/grammar-kit-master/command/command.yomiファイルです。
- コマンドを修正したり、追加する場合はこのファイルをText Editorで編集してください。
- 編集後、Juliusを再設定します。
- シェル ~/julius-kit/grammar-kit-master/command/setup.sh を実行するだけです。
トラブル・シューティング
VoiceCAPインストール時エラー(NOOBS 3.0 で sudo rpi-update を実行後発生)
- 対象:NOOBS 3.0 + sudo rpi-update
- 原因:参照するカーネルのソースをダウンロード後、展開できない。ソースが壊れている。
- 現象:Makefile:595: include/config/auto.conf: そのようなファイルやディレクトリはありません
- 回避策:sudo rpi-update を実行しない。実行後のカーネル 4.19.x で発生する。実行前のカーネル 4.14.x では発生しない。
- 備考:最新バージョンが必ずしも良いとは限らない例です。
インストール時エラー
- 対象:NOOBS 2.6.0/2.7.0/2.8.0
- 原因:参照するカーネルのソースをダウンロードし展開するが、ソースが壊れているために途中で止まる。
- 現象:Expose hardware/virtual IRQ mapping via debugfs (IRQ_DOMAIN_DEBUG) [N/y/?] ここで止まる。
- 回避策:sudo rpi-update 後リブート
- ご注意:正常にインストール完了後、再度回避策を実行すると動かなくなります。
NOOBS 2.8.1の動作問題(一時的な対策です)
- 対象:NOOBS 2.8.1
- 原因:snd-pcm-oss モジュールがOS(カーネル)から削除された
- 現象:failed to begin input stream
- 回避策:sudo apt-get -y install osspd-alsa
動かない方へのアドバイス
- 状況は個々に異なるため、個別対応は不可能です。
- OSをインストールしてから行った操作をすべてお聞きしなければ原因はわかりません。
- 関係がないと思われる内容もすべて必要です。一つでも忘れていると解決できません。
- 例えば、1-wireを有効にしていて、同じGPIO4を使う赤外線受信が動かないという方がおりました。
- 例えば、カーネルを更新して動かなくなったという方がおりました。
- 例えば、古いソフトウェアPumpkinPi.tarを使っている方がおりました。
- 同じOS上で別の実験を行っていると、機能が競合したり、設定が競合したりして正しく動作しません。
- これは一例であり、様々な状況が考えられるので、個別に問い合わせをいただいても解決できません。
- あいまいな記憶だけで原因を追究しても泥沼にはまるだけです。
- 一旦、すべてを忘れましょう。どこかを修正すれば直るはずだという考えを捨てましょう。
確実な方法
- そこで、確実に動かす方法をお知らせします。
- 自分勝手な判断をせず、まずは指示通りに行ってください。
- 方法は簡単で、原因追及をあきらめ、はじめからやり直します。この方が結果的に早く解決します。
- まずパンプキン・パイ専用のマイクロSDカード(16GB)を用意します。他の実験をこのOSで行わないでください。
- マイクロSDカードをSDFormatterでフォーマットします。(Windows標準のフォーマットを使ってはいけません)
- 最新のNOOBS(Rasbian)をwww.raspberrypi.org/downloadsからダウンロードし、中身をマイクロSDカードにコピーします。
- マイクロSDカードをRaspberry Piにセットし、インストールと最小限の初期設定を行います。
- このとき、余計な設定をしないでください。例えば、1-wireやSPIを有効にしないでください。
- あとは上記の「補足説明」にある「PumpkinPiのダウンロードとインストール」を行ってください。
やってはいけない
- パンプキン・パイが利用するピンの想定と競合する使い方や設定を行ってはいけません。
- 例えば、1-wireやSPIを有効にしてはいけません。このほかにもあります。
- カーネルを更新してはいけません。具体的には sudo apt-get updateと sudo apt-get upgradeを実行してはいけません。
- カーネルのバージョンとドライバ(PCM1808)のバージョンが食い違い、動かなくなります。
- ※これはわかる人だけが行ってください。カーネルを更新したら、ドライバも再構築してください。
不要ファイルの削除方法
- PCM1808用のドライバを作成した後、カーネルのソースは不要です。
- ディスク容量を圧迫するので削除してもかまいません。
- 削除にはroot権限が必要です。sudoコマンドを利用できません。
- rootのパスワードを設定します。$ sudo passwd root
- root になります。$ su
- ディレクトに移動します。# cd /root
- ファイルを削除します。# rm -r linix-*
- root を抜けます。# exit
赤外線リモコンの研究
特殊なリモコンの例(Nationalのエアコン)
- 古いNationalエアコン(Panasonicではありません)の例です。
- ネットでリモコン方式を調べると、家電製品協会方式で連続で2つのデータを送信することがわかりました。
- このような送信を行わなければなりません(このデータで反応するとは限りません)。
- $ sudo ./setIR2 AEHA 152 2 32 224 4 0 49 60 128 175 0 0 6 96 0 0 128 0 16 158
- $ sudo ./setIR2 AEHA 64 2 32 224 4 0 0 0 6
- 一つだけ送信しても反応しません。
特殊なリモコンの例(IODATAのテレビ)
- IODATAのテレビの例です。
- ネットでリモコン方式を調べると、NEC方式で連続で2つのデータを送信することがわかりました。
- このような送信を行わなければなりません(このデータで反応するとは限りません)。
- $ sudo ./setIR2 NEC 32 128 232 36 219
- $ sudo ./setIR2 NEC 32 128 232 208 47
- 一つだけ送信しても反応しません。
連続データの解析方法
- ※最新のソフトをダウンロードください。古いソフトでは機能しません。
- 機能を追加し、便利にしました。
- 連続でデータ解析します。高速に連続解析します。
- 最大10回です。たまにノイズを拾うことがあるため、10回以下のこともあります。
- $ cd ~/VoiceCAP/Remocon
- $ sudo ./getIR2 -n
- 長押しするとリピートコードを受信します。
- NEC 32 56 199 132 123
- NEC 0
- NEC 0
- 認識した方式の次の数値はビット数を意味します。
- ビット数がゼロの場合、リピートコードです。
リピートコードの送信方法
- ※最新のソフトをダウンロードください。古いソフトでは機能しません。
- リピートコード送信を追加しました。
- $ cd ~/VoiceCAP/Remocon
- NEC方式のリピートコードを送信します。
- $ sudo ./setIR2 NEC 0
- 家電製品協会方式のリピートコードを送信します。
- $ sudo ./setIR2 AEHA 0
SONY方式について
- ※最新のソフトをダウンロードください。古いソフトでは機能しません。
- こちらに動作確認する機器がないため、動作保証できません。
- SONY方式で動作確認できた方がおりましたら、掲示板にレポートをお願いします。
- $ cd ~/VoiceCAP/Remocon
- SONY方式の受信例です。
- $ sudo ./getIR2
- SONY 12 128 0
- SONY方式の送信例です。SONY方式は一度に3度送信を繰り返します。
- $ sudo ./setIR2 SONY 12 128 0
SHARPのリモコンについて
- 赤外線を受信できるが送信しても反応しないとの報告があります。
- setIR2.cで次のように変更してコンパイルすると動作します。
- #define AEHA 20
ダウンロード・ファイル
正誤表
正誤表(P140,P146)
- 誤:ゲイン20dBのマイク・アンプ
- 正:ゲイン40dBのマイク・アンプ
正誤表(P136 図7)
- 誤:C9=10u
- 正:C9=0.1u
- 誤:R4=240
- 正:R9=240
正誤表(P137 表4)
- 誤:部品番号=C1,C2,C9 数量=2
- 正:部品番号=C9 数量=1
- ※C1,C2を省略
訂正:C1,C2省略
- C1とC2を省略してください。
- 完成品の場合はニッパーでC1とC2をカットしてください。
- 記事で0.01uFと470Ωで約34kHzのLPF(ローパスフィルタ)を構成していると解説していながら、部品表に誤りがありました。
- PCM1808はアンチエイリアスLPFを内蔵しており、外部にLPFがなくても支障ありません。
- ご迷惑をおかけしました。
改善情報
- kernel 5.8.xでカーネルの関数が変更されたため、対応しました。
- kernel 5.3.xでカーネルの関数が変更されたため、対応しました。
- kernel 4.18.xでカーネルの関数が変更されたため、対応しました。
- Julius 4.5で文字コードが変更されたため、対応しました。
- インストール方法を改善しました。
- NOOBS 2.8.1で snd-pcm-oss モジュールがOSから削除されたため、対応しました。
- 具体的にはJuliusの音声入力をOSSからALSA経由に変更しました。
- 再度ダウンロードください。
©2016-2023 All rights reserved by Y.Onodera.