§  Raspberry Piによる音声信号処理と聴覚補助ツールの製作

取り組みの背景:

 この2~3年、講演会などに参加して、席の位置によって講師の話す内容が聞き取れないことが多くなってきました。また、低い声やスピードのある会話について行けないと感じることがしばしば。もっともやりきれないのは、周囲の人たちがドッと笑っているのに、ネタを聞きもらして合わせ笑いをするときです。
 そろそろ補聴器のお世話になる時節かと調べたら、とんでもなく高額で(私にとっては)お小遣いで気軽に試せるものではないことがわかりました。そんな単純な動機で、身の回りの電子部品を眺めているうちに、何とか自前で製作できないかと考えたのが取り組みのきっかけです。
 当然のことながら、市販品のような小型化はムリであること、アナログデジタル・コンバーターやアンプなどの製作が必要になること、難解な音声信号処理を理解しなければならないこと、等々多くの高いハードルに圧倒されそうになりました。
 けれど、販売のための製品を作るのではなく、「自分の聴力を改善する道具をこさえる」のだからと割り切れば気が楽になります。例えば、大きさはランチボックスほどになってもかまわないとすれば、高いハードルの一つが消えるわけです。
 ただし、アナログもデジタルも、ハードもソフトもすべて手がける必要があるわけで、かなりの困難が予想されます。しかし視点を変えれば、今まで取り組んできた経験や知識を総動員してみる良い機会でもあります。錆びついた物理や数学との再会は大変かも知れないけれど、それにもましてWebに存在する無数の情報から新たな切り口やキーワードで未知の情報と出会えるのも楽しみです。
 新型コロナ感染症で山歩きや外出がままならぬ折り、わずかにウォーキングする近辺の遊歩道ではヒグラシが涼やかな声を響かせています。それを聞くにつけ、以前に渓谷で聞いたカジカガエルの鳴き声が思い出されます。どちらもよく似た、鈴を鳴らすような爽やかな声です。これらの声が明瞭に聞き分けられるツールを、できるだけ費用をかけずにモノにしたいと考えています。
 自分のためのツールづくりという地味な記録ですが、音声信号処理の実際やリアルタイムサウンド処理への取り組みがご参考になれば幸いです。またこれが発端となり、皆様のパワーでさらに発展充実したものにつながれば望外の喜びです。

                                2020年盛夏
== 重要なお知らせ ==
 いつもご愛読いただきありがとうございます。
 昨年秋ごろからコンデンサーマイク版の聴覚補助ツールの開発に着手しましたが、OSとの整合性で正常に動作しない問題が生じています。問題の核心は「外付けの ADコンバータがマスターモードで動くように機能しない」点です。
 このことについて、2023年11月時点での最新のOS(Bookworm)から旧版の Bullseye、さらに Buster(raspbian-2020-02-14版)まで試しましたが、オーディオ関連ライブラリとの整合性が失われていたりでエラーが多発し、Pi Zeroでの開発を断念しました。したがって、ADCの製作や自作ADCを使用する部分の取り組みはお控えくださいますようお願いいたします。
 なお、新たな HATの製作は続行しており、Raspberry Piに替えて、高性能マイクロコントローラー「Teensy」で実現の目処がついています。近日中にご紹介できると思いますのでご期待ください。
 以上、問題発生のお知らせと対応のお願いまで。
                                2024年1月28日

★最初に「1. プロジェクトの概要」末尾の「ご確認とお願い:重要事項」(← ここをクリック)を一読願います。

 以下に大まかな流れを示します。各ボックスをクリックするとそれぞれの内容を表示します。

1. プロジェクトの概要  補聴器とは何か、どのような聴力補助ツールを目指すのか、
 プロジェクトの概要と進め方、想定される制約と留意事項、<重要事項>
2. 開発環境の準備  開発環境、音声信号プロセッサー、インストール用小物類、
 配線用の工具・材料類、測定器類
3. ヘッドフォンアンプの製作  オペアンプNJM4580DD使用のキット、キットを組み立てる
4. アナログ聴力補助ツールの製作  使用部品材料など、アナログマイクの製作、アナログ聴力補助ツールの製作、
 アナログ聴力補助ツールの評価
5. OS(Linux)のインストール  OSダウンロードとSDカード作成、環境設定とIPアドレス固定化、LAMPインストール、
 FTPサーバーの構築、Sambaサーバーの構築、その他のインストール
6. ALSAとPortAudio  ALSAの概要、ALSAのインストール、ALSAの使い方、PortAudioの概要、
 PortAudioのAPI、PortAudioのインストール、PortAudioによるプログラミング
7. USBミニマイクで動作確認  USBマイクとUSB-Audioデバイス、PWMによる音声出力、USBマイクの組み付け、
 音声信号処理環境の確認、USBマイクのテストと評価、PortAudioサンプルのテスト
8. I2Sとサウンドモジュール  I2Sの概要、I2Sインターフェイスの準備、I2Sモジュールのセットアップ、
 システム情報の確認、動作確認
9. I2Sデジタルマイクのテスト  ADMP441 DIP化基板について、マイク基盤の作成、配線と音出しテスト
 ソフトウェアボリュームの設定とテスト、I2Sデジタル出力マイクの評価
10. リアルタイムサウンド処理 ①  開発方法について、サンプルプログラムの分析(データ構造/API関数/処理フロー)
 分析結果と課題
11. リアルタイムサウンド処理 ②  スケルトンの構造、新たな関数の作成と追加コード、音声入力再生処理の組み立て
 スケルトンプログラムの評価
12. アナログ/デジタル変換  音声データの伝送とデジタル信号処理、アナログ/デジタル変換の原理、
 ADコンバーターの種類、ΔΣ型ADコンバーターの動作原理
13. AudacityとWaveSpectra  外部マイク端子がないPCのために、Audacityの導入、WaveSpectraの導入、
 その他の小道具
14. 簡易オシロスコープの製作  Arduinoの準備、計測回路の作成、ソフトウェアの設定、使ってみる
15. ADコンバーターの製作  ADコンバーターデバイスの選択、 PCM1808のスペックと設定、
 PC1808AD変換ボードの仕様、 ADコンバーターの製作
16. ADCで試すアナログマイク①  アナログマイクの製作、 テスト環境の配線、 I2Sモジュールの再セットアップ、
 ソフトウェアボリュームの設定とテスト
17. ADCで試すアナログマイク②  リアルタイムサウンド処理の組み込み、 ADコンバーターの動作確認、
 ADC+アナログマイクの評価
18. 音声信号デジタル処理の基礎  音声とは何か、 音の三要素、 音波の性質と現象、 音声信号とフーリエ級数
19. デジタルフィルターの設計  デジタルフィルターとは、 フーリエ変換と周波数分析、
 FIRフィルターの理論と特徴、 FIRフィルターの設計、 FIRフィルターと窓関数
20. デジタルフィルターの作成  フィルターによる音声信号処理の仕組み、 対象フィルターとデータ型の検討、
 フィルター係数取得関数の作成、 フィルター係数の検証、 音声信号処理関数の作成
21. デジタルフィルターの実装  所要機能と処理フロー、 デジタルフィルターの実装、 カットオフ周波数の制御、
 ログ情報の記録、 オプション機能とテスト
22. マイクアンプの製作  マイクロフォンのあれこれ、 トランジスターでちょっと試しに、
 オペアンプで作るマイクアンプ、 動作確認
23. イコライザーの設計・作成  前提事項など、 オールパス・フィルター、 ノッチ・フィルター、
 逆ノッチ・フィルター、 イコライザーの設計、 イコライザーのコード
24. イコライザーの実装  追加する新機能、 音声信号処理モジュールの改版、 聴覚補助ツールHAT21の改版、
 HAT21のチューニング、 いくつかの課題と今後の対応
25. リモートコンソールの作成  リモート制御の仕組み、 必要な環境と利用技術、 画面のデザインとイベント、
 共用データの更新処理、 イベントとJavaScript
26. リモートコンソールとの連動  起動・終了処理の仕組み、 基本的な追加・変更、 共用データファイル制御、
 Web連携処理の詳細、 動作検証
27. 電源とHAT21システムの評価  メイン電源とマイク用電源の決定、 ヘッドフォンアンプと電源、 電源ボードの製作、
 HAT21システムの評価と対策
28. MEMSマイクの組み立て  デジタル出力マイクの選定、 マイクの配線と動作確認、 ステレオマイクの製作
29. 聴力補助ツールHAT21の作成  HAT21のシステム仕様、 バラックテストで判明した問題、 完成品の製作要件、
 必要な部品、資材、工具、 ボード類の作成と組立
30.聴力補助ツールHAT21の完成  ボード間とパーツの配線、 稼働環境の整備、 アプリケーションソフトの仕上、
 動作検証、 プロジェクトのレビューと今後の課題