SSブログ

音検知式 TV消音リモコン

 マイクに向かって音声パターン登録語(約1秒以内)を発声するか、0.2~0.6秒間に2回の音トリガー(2回拍手等) またはスイッチボタンを押すことでテレビ(ソニー製)に赤外線リモコンの消音コマンドを送信する装置です。 TVは消音コマンドに対してトグル動作するので送信の度に消音と出音を繰り返します。 
送信部のソフトを作成すればソニー製以外のTVにも対応可能です。(ソフトウェア関連説明を参照)
外観と回路図をそれぞれ写真1と図1に示します。

写真1 装置外観
消音リモコン写真.jpg

図1 回路図
音検知式消音リモコン回路図.jpg

回路とFFT処理は「dsPIC33 FFT変換とデータ表示・保存装置」をベースにしたもので、dsPIC33FJ64GP802 を使用した ADCサンプリング周波数 8kHz, FFTサンプル数 64, 周波数分解能 8kHz/64 = 125Hz の仕様です。
(但し付属ソフトで判別に使用しているFFTサンプルは周波数の低い方の15個です。)
音声パターンにはFFTデータを使っていますが 極めて簡易的な手法(ソフトウェア関連説明 参照)で判定しているために登録語以外でも動作することがあります。 また、パターンを取った時のマイクの距離と同じような距離で同じような声の大きさでないと判別エラーが起きやすいです。

2トリガー検出方式は、マイク入力が閾値を超えた時に生成するトリガー信号を監視していて、0.2~0.6秒間隔で2回トリガー信号を受信した場合に消音コードを送信するものです。この機能はプログラム書き込み時にマクロ設定で無効にすることもできます。 (ソフトウェア関連説明 参照)
音声パターン認識はマイクとの距離がある程度短くないと判別できないのですがこの方式では数m離れたところで拍手しても反応するので、どちらかというとこちらの方を使うことが多いです。ただ、初めは(ver1.0では)大きな声や咳でも反応してしまう事が多くて使いづらかったです。(私は喘息気味なので咳が多く、いつの間にかTVが消音していることが良くありました。)
そこで拍手と咳のスペクトルの違いをFFTのraw dataで比較したところ、拍手の場合のスペクトルの方が消えるまでの時間(フレーム数)が短いことが分かったのでこれを考慮したプログラム処理にしました。(ver1.0では2トリガー検出方式に FFTデータは使っていませんでした。)
その結果咳での反応はかなり減り、私としては許容頻度になりました。また、同じテーブルの上に茶碗などを置いたときに生じる振動音によっても誤検知が多かったのですがこれも滅多に起きなくなりました。 (このソフトをVer 1.1 としてリリースしました。)
この対処は人や環境によってプログラム処理を変更することが必要になるかもしれません。 FFTのraw dataを取得するソフトはその際に必要になると思いますのでその使い方共々提供しておきます。

ソフトウェアや資料は以下でダウンロード・参照できます。
回路図
製作方法
使用方法
ソフトウェア v1.1 (dsPIC33FJ64G802用、MPLAB X IDE (v5.50) & XC16 (v1.70))
ソフトウェア関連説明
FFTデータ取得ソフトウェア
FFTデータ取得・閲覧方法
<2023.10.02記>「PICライター(PICerFT)の製作」でPICライターの自作方法を紹介しています。

未だ次のような課題はありますが、今のところそこそこ使えているので これらは今後時間があればやってみようと思います。

(1) 現在はスペクトルの周波数のみでの音声パターン判別を行っているので判別精度が低い。これをスペクトルの大きさも考慮した判別方法にしたり、FFTの周波数分解能を上げたりすることで音声判別の精度の改善ができる可能性があります。

(2) 電源にニッケル水素電池(単4x3)を使っていますが、 フル充電したもので連続使用した場合12時間程度しか持ちません。 (dsPIC33は 40mAぐらい消費していると思われます。使わない時はスイッチを切ったり こまめに充電したり、あるいは常時5V供給したりする必要があります。)
dsPIC33のスリープモードが使えないかも検討の余地があります。


===== 関連記事 =====
dsPIC33 FFT変換とデータ表示・保存装置
赤外線リモコン実験機(ソニー製品用)


>> ブログ記事一覧へ
nice!(0) 
共通テーマ:趣味・カルチャー