Respiri、喘鳴検出および喘息管理のモバイル アプリとサーバー ソフトウェアを開発
課題
喘鳴検出および喘息管理の音響式呼吸監視システムを開発して実装する
ソリューション
MATLAB で喘鳴と周囲雑音を検出するアルゴリズムを開発し、MATLAB Coder を使用してモバイル デバイスおよび Web サーバー向けのコードをアルゴリズムから生成する
結果
- 手作業によるコーディングの労力軽減
- アルゴリズム開発の繰り返しが高速化
- コード保守のオーバーヘッドが低減
喘息の管理は、医師にとっても患者にとっても困難となる場合があります。医師は、臨床環境で喘息患者を診断するとき、喘息の主な兆候であり、肺における閉塞性のあるエアフローを示す喘鳴を聞きます。しかし、医師は、患者を直接調べることができない場合には、患者や患者の親による喘鳴などの症状の説明に頼らなければなりません。喘息の症状と現在の状態に関するこのような自己報告は信頼性が低く、特に患者が子供である場合には頼ることができません。
Respiri のエンジニアは、喘息患者が自分の呼吸を記録して解析するためのテクノロジーを開発しました。AirSonea® テクノロジーでは、喘鳴音を聞くのではなく、記録された呼吸音から作成した画像で喘鳴のパターンを検出します。Respiriでは、MATLAB® を使用して音響式呼吸監視アルゴリズムを開発し、MATLAB Coder™ を使用してこのアルゴリズムをモバイル アプリおよびクラウドベースのサーバー ソフトウェアとして実装しました。
課題
Respiri では、患者の気管の近くに接触させた特殊なセンサーによって生成された 30 秒の録音からさまざまな周波数、振幅、および継続時間の喘鳴音を識別できるアルゴリズムを開発する必要がありました。周囲雑音の影響を最小限に抑えるために、チームは、ユーザーの環境からの音を測定して解析する必要がありました。
そこで、メルボルンにあるアプリ開発会社である Two Bulls と提携して、モバイル デバイスで録音を処理し、喘鳴解析アルゴリズムを呼び出して、結果を患者に返すアプリを作成することにしました。また、このアプリでは、モバイル デバイスに内蔵されたマイクを使用して周囲の音を記録することによって、外部の雑音を独立で評価できる必要もありました。
それまで、Respiri のエンジニアが手作業によってアルゴリズムを C でコーディングするのに数か月を要していました。そのため、喘鳴検出と周囲雑音解析のアルゴリズムをモバイル デバイス上に展開できる C コードに迅速に変換する方法が必要でした。
ソリューション
Respiri のエンジニアは、MATLAB と Computer Vision Toolbox™ を使用して、喘鳴検出アルゴリズムを開発しました。このアルゴリズムでは、30 秒の録音をスペクトログラムに変換し、そのスペクトログラムを解析して、エネルギー パターンおよび喘鳴のその他の一般的な特性に基づいて喘鳴の可能性がある候補を特定します。また、誤検知を排除するためにさらなる処理を実行します。
周囲雑音検出アルゴリズムを開発するために、エンジニアは、MATLAB と Signal Processing Toolbox を使用して、ハミング ウィンドウを適用し、高速フーリエ変換を実行し、複数の周波数範囲でスペクトルが極大となる位置を特定しました。
MATLAB で両方のアルゴリズムをデバッグおよびテストした後、チームは、MATLAB Coder を使用して、MATLAB コードから実行可能な機能を生成しました。この手順により、コード生成に適したコードであることを確認し、実行時エラーをチェックできるようになりました。
次に、エンジニアは、MATLAB Coder を使用して、アルゴリズムから C コードを生成しました。生成されたコードを確認するために、MATLAB 内からコードを呼び出し、その結果と元の MATLAB アルゴリズムによって生成された結果を比較しました。
次のテストでは、Microsoft® Visual Studio® を使用して、生成された C コードをコンパイルし、検証のために結果を再度比較しました。
また、雑音検出アルゴリズムと喘鳴検出の C コードを Apple iPhone 向けのアプリに統合しました。Google® Android™ デバイス向けのバージョンも計画されています。
最終的なシステムは、チームが MATLAB と MATLAB Coder によって開発したテスト ソフトウェアを使用して無響室でテストされました。
AirSonea は、米国では FDA の許可を申請中であり、欧州連合では Conformité Européenne (CE マーク) 認定を、オーストラリアでは TGA 承認を受けています。
結果
- 手作業によるコーディングの労力軽減. 「過去の同様のプロジェクトでは、C でアルゴリズムを再コーディングしてから、C の実装をデバッグしなければなりませんでした」と Respiri のシニア アルゴリズム エンジニア Yulya Goryachev 氏は述べています。「今では、MATLAB Coder によって C コードが自動的に生成されるので、必要な時間と労力が大幅に減っています。」
- アルゴリズム開発の繰り返しが高速化. 「アルゴリズムに変更を行った後、C コードを再生成し、すぐにそれをテストするだけです」と Goryachev 氏は述べています。「以前は、C プログラマに頼らなければなりませんでした。C プログラマが他のプロジェクトで忙しいときは、変更を実装できるまで数日かかることもよくありました。」
- コード保守のオーバーヘッドが低減. 「アルゴリズムと C ソース コードを別々に維持するには、ソフトウェア エンジニアがフルタイムで対応する必要がありました」と Goryachev 氏は述べています。「MATLAB Coder を使用すると、MATLAB で 1 つのアルゴリズムを維持し、リリース時に C に変換できるので、そのエンジニアが他のプロジェクトで作業できるようになります。」