UnityXWhisper240913

導入
自動車の中でAIと会話する未来は「ほぼ確定」だと思う。いろいろ便利だし,気晴らしになるし,運転中一人で寂しいし・・・。OS標準の音声認識はいろいろボタンを押さなければならず,運転中の操作には問題がある。googleSTT(SpeechToText)やWhisperを使えば,ハンズフリーで会話ができるはずだ(OpenAIアプリのように)。PCアプリであっても,キー操作が必要なくなればより没入感というか,人と話してる感が高まるのではないか?
Whisper対応を強化
すでにUnityから利用可能なように知見を貯めていたが,ハンズフリーを目指して大幅介入だ。以前のバージョンはRecordを押して喋りStopを押すと変換されたが,これは2度もボタンを押さねばならん(しかも違うボタン)。次はRecordを押すと録音が始まり離すと変換される形式。最終的には音圧をチェックし,しきい値を超えたら録音開始,下回ったら停止して変換。これなら連続して変換が可能だ。画像じゃわからないので,動作の様子を録画しようと思う。明日にでも・・・。

WebGLTemplates

いきさつ
webglのビルドをする時,ブラウザ上で実行されるアプリの見た目をカスタマイズしたい場合がある。WebGLTemplatesはそのための機能だ。今回はspeechblendでリップシンクを行う必要が出てきたため,ビルド後のindex.htmlにいろいろ追加する必要がある。そこで,WebGLTemplatesの使い方を調べてみた。
UnityのWebGL templatesについて調べてみた
WebGL テンプレート

やりかた
アセットフォルダにWebGLTemplatesというフォルダを作成し,そこにGL6などのテンプレート用のフォルダを作成する。中身は, エディターに入っている標準のテンプレート(C:\Program Files\Unity\Hub\Editor\yyyy.x.z\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\WebGLTemplates深いよ!)を改造するのが良いらしい。すると,Player設定のTemplatesに表示される。webglアプリの左下に表示されるUnityのロゴを,独自の模擬人格ロゴに変えてみた。もちろんindex.htmlもspeechblendに対応しているので,今後はビルドするだけで良い。

Windows ServerでDjango使ってWebアプリ作る

なんの共有もしない記事です。「小生、Win Server 使ってDjangoでWebアプリ作れるようになったデュフゥーw 」っていう自慢話です。正直二度とやりたくない。

事の発端

前にWebアプリケーションのベースを作ったんですが、自分が契約してるWin Serverに移管することにしました。途中までPHPでバックエンドのアプリケーションを作っていましたが、今後PHPを使う予定がないのと、VPSでWebアプリを動かしてみたかったという理由からVPSに移管します。

やったこと

  • 外部に公開するポートの設定(FTP通信の設定と同じ)
  • Windows ServerのIIS設定
  • Djangoでプロジェクト立ち上げ

この3つです。

 ネットワーク関係は大体ネットに書いてある記事をそのままやってもファイヤーウォールに邪魔されて「動かねーじゃねぇか。このxxxxxx(怒怒怒怒怒怒怒)」と台パンすることになります。

 長野研ではFlask使ってるようなので、Djangoは使わないと思うのでいろいろ説明は省略しますが、添付のpdfファイル(Djangoのアプリケーション作成手順書)とWin Server側でWebを行為買いできるようIISを設定したうえでこの記事の通りにやればローカル上では動きます。

 ローカル上では動いているのでシステム的には問題がないんですが、外部からアクセスしようとするとブラウザに「ページが存在しない」といわれます。ここで1台パン。

記事後半に書いてある”python manage.py runserver <Server IPアドレス>:8000”でコマンド実行すれば、問題ないようなことを書いてあるが、これも失敗。ここで2台パン。

「末尾についてる8000というのはポート番号なので、Win Server側でポートを公開する設定がされていないのでは」とひらめきます。Win ServerにFTPでファイル送る設定したさいに60000ポート以降を開放していたの思い出したので60000番を設定して起動したところなんとデバッグ用のページにアクセスできたってわけですよ。いいね。

近況

 残業多すぎて何のやるきも出ねぇっす。

Leonardoで,AI模擬人格との会話用コントローラーを作成(4)

BNO055を使用したコントローラーの開発経緯
 AIagentは,いまやオープンキャンパスなど,色んなとこで引っ張りだこ。前回も本郷OCで高校生たちが興味津々に体験していたが,音声入力キー(Windows+H)など普段使い慣れておらず操作しにくいように見えた。そこで, 9軸センサーBNO055を使用して,キーボードレスの会話用コントローラーを作成しようと思う。使用方法と注意点は,下記の動画に示した。

1. 動画内で使用したプログラム
・BNO055_AIagent:今回使用したArduinoプログラム
・BNO055_tes2:小ネタでしたクォータニオン角でのカーソル操作(上下が弱い)
・BNO055_AgentControleer:カーソル操作+ボタン機能を統合した完成系
・WebcamGPT4V_New.txt:改造後のWebcamGPT4Vのスクリプト
・Changecam.txt:改造前のWebcamGPT4Vのスクリプト

2. ボタンの各機能_240912にカーソル操作を追加

①原点:Unityの基本操作

ボタン機能
ボタン1ゲーム実行/停止(Ctrl+P)
ボタン2カメラの視点交換(F5)
(ボタン2)×2回ボタン2を2回押すとダブルクリック
ボタン3撮影ボタン(F4)

②Y軸(横の傾き)±75°以上:入力の修正ボタン

ボタン1カーソルキー「←」
ボタン2カーソルキー「→」
ボタン3Backspace

③Z軸(前後に倒す)±30°以上:会話ボタン

ボタン1 キャラクタのチェンジ(F6)
ボタン2音声入力(Windows+H)
ボタン3送信(Enter)

3. ピンの接続位置_BNO055
・VIN:5V
・GND:GND
・SDA:D2(PD1)
・SCL:D3(PD0)

黒→赤→黄→緑色の順で,はんだ付けする。

======================================================================

↓240904に,2台目を作成した。

convaiでNPC

CharacterCreatorを購入しようかと思い,Youtubeのチュートリアルを調べていると,なんかconvaiというものが出てくる。なんだろう・・・と思っていると,これはゲームエンジンに「リアルな会話ができるNPCをお気楽に導入しよう」というフレームワークらしい。NvidiaがめちゃリアルなSFゲーム会話場面をデモしていたが,ああいうキャラが簡単に作れるというのだ。ホントにぃ・・・?

設定の手順はおおむね以下のマニュアルの通りである。マジで簡単だ。IDができれば,性格やバックストーリーや声など,クラウド上で設定した通りに動いてくれるというわけだ。

これ・・・料金体系がわからん。と思っていたら,無料で使えるのは1日100会話までであるらしい。恒常的に使いたかったら契約しろ・・・と。そりゃそうだよね。まぁNPC作りたければ使うかもしれぬ。会話の内容はほとんど完璧に思う。日本語の声の選択肢が多くないのが少し残念。これはこれですごいとは思うが,まぁNPCを作りたいわけではないので,あんまり気にしなくても良いと思われる。

本郷OCに持ってくもの

8/17(土), 18(日)に実施される本郷のオープンキャンパスに備え,持っていくものの一覧表をここにメモする。主に計測器やデジタルファブリケーション機器など。

展示するもの
1. デジファブ機器:3Dプリンタ,ミリングマシン,作成物の展示(BF装置など)
2. ジェンガ中の生体計測体験:ジェンガ中のSC・HRを計測する
3. AIエージェント:男性・女性キャラを展示して,AIとの会話体験
(4. 非接触の表情計測:AIによる非接触計測を紹介し,時間があれば体験も)

持っていくもの

1. デジファブ機器
①切削マシーン
・切削マシーン
・両面テープ
・生基板
・六角レンチ
・掃除機
・マジックペン
・スクレーパー
・予備のドリル×3本
・Dell PC,PC充電器
・科研費で作成したM5の完成物

②3Dプリンタ
・3Dプリンタ(Anker)
・TPUフィラメント:透明,オレンジ,緑色など
・工具:ニッパー,ペンチなど
・過去の作成物:BF装置,M5,フィギュアなど

2. ジェンガ中の計測体験
・ジェンガ→金井さんが購入
・計測器:SC計測器×6台(予備含む)
・電極:箱ごと→1日50人来ることもある
・計測器の充電器×2
・手袋×6(予備含む)

3. AIエージェント
・PC:MSI01, 02の2台
・PCの充電器×2
・Webカメラ×2:1台はタクトスイッチがついてるカメラ

(4. 表情の非接触計測→PCとカメラはAIエージェントと同じ)
・タブレット:実験室の水色のタブレット×2
・タブレット置き:木材で作成したタブレット置き

================================================================

向こうで展示した資料を下記に添付いたします。映像資料やその他ブース説明の詳細などは,Playgroundのこちらのブログに載せました。

アプリケーション開発

一つ前の記事で力を使い果たしたし、早く寝たいので概要だけ書きます。

やったこと

  • 計測アプリの基盤になるページを作りました。
  • ページはスマホも対応してます(なんとレスポンシブ)。
  • 目的はたまっているTP,SC,HRのデータを何かに使えないか考えるため(Aiもちょっと興味ある)。
  • 測定~解析までのソフト作るの面白そう。
  • これから自分の装置作って運用しようと思います。

Webは全く開発したことがないし、というかそもそもプログラマではないので開発は気が向いたときにやります。

バックエンドもphpではなくpython(Django)がいいので自分が契約しているvpsに移管するかもしれないです。

要望項目

  1. TP,SC,HRのダウンロードサイトのリンクください(見つけられませんでした)。
  2. いい感じのTP装置の画像をください(可能であれば1920×1095のjpg画像)。
  3. いい感じのHRとSCの両方が映った画像をください(こちらも可能であれば1920×1095のjpg画像)。
  4. でないと下の30minくらいで作成した昔の教材に出てきそうなダサい豆腐の計測器画像が(自分が作成した)ページに残ります。

画像はこちらで加工できるので1920×1095以上の画像をいただきたいです。

よろしくお願いします。

合成音声について

 合成音声を使用する経緯が不明なので用途に合うか不明ですが、現在稼働しているチャット読み上げアプリで開発したことがあるので記事を書きます。

合成音声の使用用途 (加藤の場合)

 前述のとおり読み上げボットで合成音声のプログラムを使用しており、いずれは商用利用を検討しています。商用で利用するにあたり以下の要件をクリアしている必要がありました。

  1. 24時間稼働している必要があるため、動作環境はサーバ上であること。また、レンタルするサーバ(VPS)は個人で負担できる範囲のもの。
  2. 入力から出力までのレスポンス速度が速いこと。
  3. 商用利用が可能であること。

要件から発生した制約事項

①の要件で合成音声作成処理に高負荷がかかるようなソフト(VoiceVOX)は使用することは不可能。②の要件でPythonなどのスクリプト言語で開発することも不可能。③は特にネックGoogle Text to Speechの選択も不可能となった。
※公開されている非公式のライブラリはMIT(商用利用可能)ライセンスだがプログラム自体がスクレイピングして作られているものが多いため、Googleの規約違反をしている可能性が高い。

要件を満たしつつ制約を回避するC#ライブラリ

 調査した結果、Microsoft公式からリリースされているSpeechSynthesizerクラスを使用することで、要件を満たし、制約事項を回避して合成音声を作成作成することが可能です。また、SpeechSynthesizerは多言語に対応しているため、日本人だけではなく英語圏(または他言語)の人向けにもアプリケーション開発が可能です。

日本語サンプル

英語サンプル

合成音声作成プロジェクト

zipファイルがWordpressにアップロードできなかったのでコダマサーバーの以下に格納しておきました。必要であればサーバにログインして取得してください。


1
&lt;ユーザ名&gt;/www/hk/WindowsVoiceCreator/WindowsVoiceCreator.zip

 プロジェクトについては不特定多数からよくわからないテキスト情報が入力されることを想定し、日本語と英語以外は作成できないようになっています(その他、エラー処理がガチガチに入っています)。

 プログラムについては多くは書きません。コード上にコメントアウトも残しているので読めばわかると思います(ブン投げ)。

 前提条件として不特定多数からの入力を想定し、原因不明のメモリリークの発生が原因でソフト強制終了を回避するためexeで呼び出すよう設計しています。(dllでの組み込みはexeでの運用より開発コストが高いこともあるため)

使用方法

zipファイル内の以下のフォルダにビルド済みのexeが格納されています。


1
.\WindowsVoiceCreator\bin\Release\net6.0\WindowsVoiceCreator.exe

WindowsVoiceCreator.exeは引数を渡すことで合成音声を作成します。


1
WindowsVoiceCreator.exe &lt;引数1: しゃべらせる内容&gt; &lt;引数2: 合成音声格納先.wav&gt;
  1. コマンドプロンプトを開いて「WindowsVoiceCreator.exe」が格納されているフォルダに移動
  2. WindowsVoiceCreator.exe <しゃべらせる内容> <wavファイル格納先>
  3. <wavファイル格納先>にwavファイルが作成されます。

 文字だと伝わりにくいし、文を書くのが面倒になってきたので使用方法不明な場合は連絡ください。

ソフトの制約事項

 合成ソフトのファイル格納先(第二引数)はファイル名(,wavを含む)で指定してください

 ソフト内部で入力されたテキストから英語と日本語を判定して読み上げてもらう人を切り替えています(日本語ネイティブor英語ネイティブ)。テキスト内に日本語と英語の両方がある場合、入力テキストが皆目見当がつかない言語の場合は日本語判定が優勢されて日本語ネイティブの人が話すようになってます。

留意事項

  • SythesizerはWindowsのシステムを利用して動作しているため、Windows Serverを含む Windows OS上でしか動作しません。Ubuntu, FreeBSD, CentOSなどのLinuxプラットフォームでは実行時にエラーが発生します。
  • 実行には.NET 6のインストールが必要です。
  • 開発する場合Visual StudioのNugetからSystem.Speech(SpeechSynthesizer)のインストールが必要です。 

Fitbit自動化の巻(15)

前回,visualizeHRV_Sleep_Stepsのデータをサーバーにアップして,ユーザーごとにディレクトリを作成し保存するプログラムの開発を行った。今回は,タスクスケジューラを使用して一時間おきに最新データを取得するプログラムの開発を行う。

 

今回の成果
 タスクスケジューラの定時機能を使用することで,1時間ごとにFitbitデータの自動取得が可能になった。これで,手作業での実行作業とおさらば!

タスクスケジューラー
1. 基本的な説明と表示画面
 GPTに,定時機能を使ってFitbitデータの自動取得が行えないか聞いたところ,タスクスケジューラによる一時間毎のデータ取得が可能であることがわかった。

2. 1時間おきの設定方法(画像を参照)
①スタートメニューを開き,タスクスケジューラを選択する
②画面右側の「基本タスクの作成」を作成し,タスク名と説明文を入力して次へ
③トリガーのタスク開始日を「毎日」にチェックを入れて,次へ

④タスクの開始日時に関しては任意です(今回は今日)。次へ
⑤操作は,プログラム回収選択して次へ
⑥プログラムの開始に使うファイルの参照場所を選択して,完了へ

ファイルの参照場所に関しては,それぞれ「Pythonのソフトウェア,実行するPythonスクリプト,スクリプトのディレクトリ」を入力します。
 ・Pythonの実行ファイル:C:\Users\proto\anaconda3\envs\Fitbit\python.exe
 ・Pythonスクリプトのフルパス:RTget_visualizeHRV_Sleep_Steps_Web2.py
 ・スクリプトのディレクトリを表示:C:\fitbit

⑦最後に,画面右側のプロパティを選択して,「トリガー > 編集 > 繰り返し時間を1時間毎の無制限」して,ok→okを選択。動作チェックをする場合は繰り返し時間を5分に設定する。
⑧動作チェックをしたい場合は,画面右側の実行ボタンを選択して,コマンドプロンプトが立ち上がるかを確認する。データが取得できていれば完了!

注意点
1. コマンドプロンプトの入力欄

*Pythonの実行ファイルで「envs\Fitbit」を入れないとPythonスクリプトが実行できない方のコマンドプロンプトが立ち上がるようだ。

〇:「C:\Users\proto\anaconda3\envs\Fitbit\python.exe」
×:「C:\Users\proto\anaconda3\python.exe」

2. タスクスケジューラーの履歴
 以前テスト用で作成したものが残っていたらしく、準備完了と表示されていても、ログオンしていないときに稼働していた。そのため、不要なものは紛らわしいから使わなくなったものはどんどん削除したほうがいいみたいだ。

=================================================================

メモ書き
・グラフだけでなく説明文もサーバーにアップできるようにしないとか
・時間があれば模擬人格AIの設定を行う。具体的にはChatGPとの連携と,音声サーバーとの連携を行う。これで一先ず達成。あ,あとグラフを画面右側に表示する。

MotionMatching

Unity ***** storeのセールを見ていたらアニメーション関連のアセットが半額になっていた。アニメーション関連のアセットでどのようなものがあるのかをgptに質問していたらこのセットが出てきた。このアセットは数々の市販トリプルエータイトルで既に利用されているらしい。これを利用することで僕らのAIエージェントもより自然な動きができるようなそんな予感がした。メモしておこう。

23mh203 引用文献

必要な引用文献

先生からご指示を受け、追加した論文を記載する
音声の種類や特徴によって、人間の感情や生理的反応が変化する
Kassam, K. S., & Mendes, W. B. (2013). The effects of measuring emotion: Physiological reactions to emotional situations depend on whether someone is asking. Emotion, 13(6), 1-6.
ASMRの研究の内、人の声を使用した研究
Engelbregt, H. J., Brinkman, K., van Geest, C. C. E., Irrmischer, M., & Deijen, J. B. (2022). The effects of autonomous sensory meridian response (ASMR) on mood, attention, heart rate, skin conductance, and EEG in healthy young adults. Experimental Brain Research, 240(7), 1727-1742.
心拍変動と情動制御の関連を調べた研究
村瀬, 亮一, & 中村, 太一. (2004). 視聴覚刺激による情動の変化とその生理的反応. 産業医科大学雑誌, 26(4), 123-126.
HRVとレジリエンスの関連を調べた研究
An, E., Nolty, A. A. T., Amano, S. S., Rizzo, A. A., Buckwalter, J. G., & Rensberger, J. (2019). Heart rate variability as an index of resilience: A review of recent literature. Military Medicine, 184(11-12), 525-530.
LPPの研究
Reducing auditory hypersensitivities in autistic spectrum disorder: preliminary findings evaluating the listening project protocol(自閉症スペクトラム障害における聴覚過敏の軽減:リスニングプロジェクトプロトコルを評価する予備的知見)


他にもこれらの論文は使えるかもしれない
Different Types of Sounds and Their Relationship With the Electrocardiographic Signals and the Cardiovascular System – Review(さまざまな種類の音と心電図信号および心血管系との関係 – レビュー)
音、騒音、音楽が人体に与える影響についての研究は長年行われているが、未解明な点が多い。本論文はこれらの影響を包括的にレビューし、特にHRV(心拍変動)に焦点を当てた。HRVは、音や騒音の刺激により高周波成分(HF)や低周波/高周波比(LF/HF)が変化し、低周波(LF)も騒音により変動することがわかった。また、GSR(皮膚電気反応)は音楽刺激によって変化した。多くの研究で実験デザインに制約があり、対照群の欠如や刺激の変動がみられた。良い実験デザインの例として、ヘッドフォンの使用や被験者の快適な姿勢が挙げられる。

Vocal Attractiveness Increases by Averaging(声の魅力は平均化によって増す)
声の魅力は、聞き手に大きな影響を与えることが知られており、「美しい音は良い」という固定観念が、声の持ち主の交配、就職、選挙での成功に具体的な影響を及ぼすことが示されています。通常、魅力的な声は潜在的な交際相手に望ましい属性を示すものと考えられていますが、この説明だけでは男女両方の声が評価される一般的な社会的文脈における選好を完全には説明できません。研究では、聴覚モーフィングによって声を平均化すると、話し手や聞き手の性別に関わらず、声がより魅力的になることが示されており、この現象は声の質感の滑らかさとピッチの類似性の向上によってほぼ説明できることが示されています。これらの結果は、顔の加齢効果と同様に、加齢によって声の魅力が増すという現象を初めて証明するものであり、音声知覚の中心的な特徴としてプロトタイプに基づく符号化を強調し、顔と音声知覚のメカニズムの類似性を強調しています。※ブラウザの好感度がうまく調整できなかったら使えそう

More than a feeling: Autonomous sensory meridian response (ASMR) is characterized by reliable changes in affect and physiology(感覚以上のもの 自律感覚経絡反応(ASMR)は、情動と生理の確実な変化を特徴とする。)

Heart rate variability Can it serve as a marker of mental health resilience (心拍変動は精神的健康の回復力のマーカーとなりえるか?)

Electrophysiological evidence for an early processing of human voices(人間の声の初期処理に関する電気生理学的証拠)
顔の処理と同じように人の声に反応する脳領域のお話

Reliability of Physiological Responses Induced by Basic Emotions: A Pilot Study
感情と生理指標の関連についての論文

Emotional responses to auditory stimuli聴覚刺激に対する感情的反応
リンク切れで断念

The effects of autonomous sensory meridian response (ASMR) on mood, attention, heart rate, skin conductance and EEG in healthy young adults(健康な若年成人における自律感覚絶頂反応(ASMR)の気分、注意力、心拍数、皮膚伝導度、脳波への影響)


使えるか分からない研究
・Music structure determines heart rate variability of singers(音楽構造が歌手の心拍変動を決定する)
 合唱はウェルビーイングを高め、心拍変動(HRV)と呼吸の連動を促進する。特に、ゆったりとした呼吸時の呼吸性洞性不整脈(RSA)は心血管系に良い影響を与える。研究では、歌唱がHRVとRSAに及ぼす効果を健康な成人で検証し、歌唱が心臓と呼吸の調和をもたらすことを示した研究。
・The Pocket Guide to the Polyvagal Theory: The Transformative Power of Feeling Safe
 ポリヴェーガル理論のポケットガイド: 安全を感じることの変容力
 同様の内容。声が身体に与える影響について説明しています。具体的には、歌うことが社会的関与システム全体を活性化する機会を提供し、吸気と呼気のサイクルを通じて迷走神経の影響を調整する方法を示しています。この調整は心拍数を増減させ、自律神経系の状態を安定させることができます。また、声を使うことが顔、頭、咽頭、喉頭の筋肉の神経調節を含むことが強調されています
・The effects of different voice qualities on the perceived personality of a speaker(異なる声質が話し手のパーソナリティ知覚に及ぼす影響)
 話し手の声質が聞き手のパーソナリティ評価に与える影響を調査し、特に微笑み声が肯定的な評価を受け、きしむ声が否定的に受け取られることを発見しました。また、男性と女性の話し手では声質による評価に違いがあることも明らかにしました。

STEM教育評価(3)

心理・生理指標の関連

STEM23113
「集中した」得点に基づく分析

得点が高い学生は最初は皮膚コンダクタンスが低下するものの、中盤以降はむしろ上昇している。得点が低い学生は全体的に低下傾向に見受けられる。

STEM教育評価(2)

心理反応の評価
統計処理は全回出席した12名を対象に行い、多重比較はHolm法を用いた。
「不快-快」、「睡眠-覚醒」
全般的に、座学の解説よりも、機材を使った実習や組み立て作業において快感情が高い傾向が見て取れる。同じく、睡眠-覚醒は、解説において低く、実習において高い傾向が見て取れる。電子回路の組み立てにおいて高い傾向が見て取れる。
「不快-快」に各回で有意な差は認められず、「睡眠-覚醒」は、2回目<5回目、4回目<5回目となり電子回路の組み立てが特に高い覚醒を示し、解説回が特に低い覚醒状態であることが示された(不快-快:F(5/55)=1.89, ns;睡眠-覚醒:F(5/55)=4.38, p<.05)。

「活気のある」、「楽しい」
「活気のある」に関しても測定や組み立てなどの実習において高い傾向が認められた。「楽しい」に関しては全般的に高い傾向にあったが、座学の解説ではやや低い傾向が認められた。
「活気のある」は2回目<5回目となり、解説回が電子回路の組み立てより低かった。「楽しい」は各回で有意な差は認められなかった(活気のある:F(5/55)=3.54, p<.05; 楽しい:F(5/55)=0.92, ns)。

「充実した」・「集中した」
「充実した」は解説においても比較的高い点数を維持しており、座学と実習で明確な差は認められなかった。「集中した」は、測定や組み立て、プログラミングなどの実習において高い傾向が認められた。
「充実した」、「集中した」ともに各回で有意な差は認められなかった(充実した:F(5/55)=0.81, ns; 集中した:F(5/55)=1.48, ns)。
(※最終回(プログラミング)が両方とも妙に高いのは、ひょっとしてチャットGPTによるサポートの影響?)

「主体的な」・「受け身な」
「主体的な」は測定や組み立て、プログラミングなどの実習回において明確に高く、座学で解説を行う回では低い傾向が認められた。「受け身な」は、座学による解説回で高く、組み立てプログラミングでは低い傾向が認められた。
「主体的な」は、1・2・4回目<5回目、2・4回目<6回目、4回目<3回目となり、全体として講義回が実習回(電子回路くみたて、心拍変動測定、Pythonプログラミング)より低い傾向にあった。「受け身な」は1・3・5・6回目<4回目となり、講義のみを行った4回目が特に高かった(主体的な:F(5/55)=10.54, p<.01; 受け身な:F(5/55)=5.25, p<.01)。

「興味深い」・「理解度」
「興味深い」に関しては僕の回の授業が4点を超えており比較的高い評価が得られている。Python言語によるプログラミングが電子回路と同じ得点となっている。「理解度」は、座学が低く実習が高い傾向にある。
「興味深い」に各回で有意な差は認められなかった。「理解度」は5%水準で有意な効果が認められたが、多重比較の結果各回に有意な差はみとめられなかった(興味深い:F(5/55)=1.50, ns; 理解度:F(5/55)=2.95, p<.05)。

AIによる非接触計測(1)

研究の概要
本研究では、知的障害者の表情、身体活動の測定を想定し、AIによる非接触計測の可能性を検討した。ソフトウェア環境は、様々なハードウェアでアプリケーションを作成可能なことを重視しゲームエンジンUnityを用いた。主に検討した環境は、1)Unity+Barracuda、2)Unity+OpenCV、3)Unity+Apple ARKitの3種類であった。ここでは、1)Unity+Barracuda環境における検討を概説する。

Unity+Barracuda環境を用いた非接触計測
 
Barracudaは、Unity Technologiesが開発したニューラルネットワーク推論ライブラリ。ONNXフォーマットのモデルをインポートすることで、開発者はUnityプロジェクトに機械学習モデルを簡単に統合し、リアルタイムでの予測やインタラクションを実現できる。本研究では、身体活動測定用にgoogleのBodypixを、表情測定用に同じくgoogleのFaceMeshを、Barracuda環境で検証した。Barracudaで利用可能なONNXモデルに関しては、UnityTechnology高橋啓治郎氏のリポジトリにまとめられている。

Bodypix
 BodyPixはリアルタイム人体部位セグメンテーションを目的に作成されたニューラルネットであり、ポーズ推定や動作追跡などの機能をもっており、インタラクティブアプリケーションや仮想現実などの分野で用いられる。Unity+Barracuda環境では、Webカメラの映像をもとに、リアルタイムで主要な関節位置(2次元)を取得できる。関節位置の推定精度は、使用するONNX ファイルの規模に依存し、より大きなONNXファイルを用いることで高い精度での推定が可能になるが、そのぶん計算負荷も大きくなる。ある程度おおきな規模のONNXファイルを用いることで、安定した位置検出が可能であると考えられた。

Face Mesh
 MediaPipe FaceMeshは、顔の高精度な3Dメッシュを生成することを目的に作成されたニューラルネットであり、顔のランドマーク検出や顔の表情分析などの機能をもっており、ARフィルターの作成やリアルタイムビデオ通話の顔の追跡などの用途で用いられる。Webカメラの映像をもとに、約450ポイントの顔ランドマークを推定できる。高橋啓治郎氏のリポジトリFaceMeshBarracudaでは、FaceMeshのに加え、目の動きを検出するAIが統合されており、目部分を抽出して瞼の動きを検出ことで、より正確な瞬目行動が可能となることが確認された。一方で、FaceMeshは安価なウェブカメラを使って顔のランドマークを推定できる利点はあるものの、顔が横を向いた際に精度が低くなる傾向が認められた。

生理心理学実験-TA引継ぎ

前書き
 この授業のTAは,他の授業より能動的に動き,高い専門知識を持って優しく教えつつ,時間配分を常に意識しないといけない気がした(足りない資料は自分で作り,先生から指示なくても動く!).なにより大事なのが,限られた授業時間で実現する研究計画作りで,程よい難易度で班員が脱落することなく楽しく終わればいいな3年半を通して感じた.先代のTAには,「フリーライダーを撲滅せよ!」と言われた気がする.このブログに足りない情報は,各代のTAで補足するのじゃ(2023~2025年TAより).

測定リンク
・皮膚温:https://kodamalab.sakura.ne.jp/M2TP/showchannels.php
・発汗(単体):https://kodamalab.sakura.ne.jp/M2/showchannels.php
・心拍数と発汗:https://kodamalab.sakura.ne.jp/M5log/showchannels.php

*引用文献は,各自で探してこのブログに追加しておいてください.
*充電放置して帰ると,計測器内のリチウムイオン電池が爆発する可能性があるので,必ず充電を終えてから帰宅してください.計測器が故障したら適宜メンテしてください.電極の在庫がない場合は,助手に購入依頼を出す.

特殊な装置類
・Coospo:腕に巻く心拍センサー.女性でもHRVを測れる→EliteHRV対応.
・PolarUnite:この解説動画と,152ブログにログインしてこれを確認
・PolarH10:先生作の解説動画を確認.データはkubiosでcsvをダウンロード.
・BF装置:皮膚温BF(重田・長野,2025),ECG(神谷・重田・長野,2025)
・アイトラッカー:この解説動画だが,今はProccesingでなくUnityアプリかな.
・フィノメーター:おすすめしない.

授業スケジュールの概要
・前期はゼミ希望の受講生が多く,後期は色々とあり出席率は低めに感じた.
・あとは,後期の方が長期休みを挟むためプレゼン作りに時間を多くさける.

・1回目:ガイダンス.TAが計測機の使用法と生理指標の説明を行うかも.
・2回目:実験計画を立てる.出席率を上げるため楽しさ重視で接する.
・3回目:実験計画を定め先生に確認してもらうため,早めに終わらせ予備実験.
・4~6回目:測定回.実験者・実験参加者・分析を交互にやる.TA繁忙期
 →廊下にパイプ椅子を出し,計測器のメンテや実験刺激等の準備もする.
 →2要因分散分析自体がわからない学生が多いため,解説資料,動画を配布する.
・7回目:分析回.発表会までの1週間でメンバー間の連絡が途切れ仲が悪くなる可能性があるため,なるべくword・パワポ共に考察以外はすべて終わらせる.
・8回目:発表会.次の測定に向けて詳しく講評した方がいい.発表資料は,当日の朝まで作成しているグループが多いため,予め言う目星をつけた方が良い.

2要因分散分析の解説動画
・参加者間計画:こちら
参加者内計画:こちら
・混合計画:こちら
*統計ソフトは,わかりやすさと導入重視でjs-starを推奨する.

授業準備,配布物
(プロジェクター,教室の机掃除,室内温度は前提とする)
・1回目:計測機の準備(皮膚温,発汗)→計測方法の解説動画(一部ミス)
・2,3回目:計測器充電.実験刺激が入った大きい箱×2,ゴルフ,空き缶,ナーフ等を用意する.先生が忘れていたら,下記の研究計画書作成例を必ず添付する.
・4~6回目:計測器充電,実験刺激準備.廊下にパイプ椅子と学習机,扇風機やヒーターも.過去にTAが作成した発表スライドとレポートを作成例として配布.上記の2要因分析の資料も配布する.教室を室温を計測用に整え,パーテーションも用意.
・7回目:基本なし.
・8回目:発表後,次の計画を立てる場合は計測器の充電と実験刺激Boxの用意.

*TAが過去に作成したレポート,パワポは先生から指示はないが絶対,受講者に共有した方が良い.共有しなかった回は,けっこう悲惨で「タイトル→目的→考察」の3スライド構成だった・・・

注意事項
・TAが2人いる場合は,E-151・152に分かれて教える.一緒にいると片方の部屋が教えられないため注意される.
・授業時間の管理には常に注意を払う.実験計画書を提出できなかったり,測定回の時間がおしてしまったり,先生の説明に間に合わなくなるため,心配だったら都度「何時までやればいいか」先生に聞く.
・初回授業前に,履修コードを教務で聞いてチームに入る.先生に管理者権限を追加してもらい,グループごとにチャンネルを作成する.
・先生が遅れた,あるいは休まれた時は,TAが授業を進める.出欠確認はFormsを作成して行い,集計したファイルをそのまま先生に送ると良い.名簿がないため,一人ずつ点呼するより,こっちの方が早いと思う.
・メンバー間で喧嘩が始まったらTAが必ず仲裁に入る.場合によっては,やりやすいチームに移動してもらう.1グループ4名がほどよい.
・受講者数が多い時は,テーブル5つ用意する.パーテーションどける.

TAのレポート・パワポ作成例
・仮想事故直前と直後の心身の変化について→ Unity×VR×ドライブシミュレーター
・オンデマンド授業受講時の視線が課題成績に与える影響→ 視線×学習

COOSPO 心拍センサー

COOSPOという光学心拍センサーがある。先日のミーティングで、安価で装着しやすいセンサーとして候補に上がった。BluetoothとAnt+に対応しているというが、スマホ側でどんなソフトを使えばよいのか・・・。アームバンド式の心拍計という記事で、Heartoolという専用アプリがあることを確認。しかし、EliteHRVのサイトにもBT4.0かAnt+で接続できるとある、のでEliteHRVにも使えるのでは・・・。

このCOOSPOというメーカー、けっこう色んなタイプのセンサーを作っている。HW9とか値段は高いけど、結構洗練された印象・・・評価も154件。どんなかなーと思って、なんとなく見ていると、なんとEliteHRVに接続できるとの表記あり。これはローレンツプロットの結果と思われるが、案外良い感じで測れているように見える。PolarH10よりもUniteよりも安価でHRVもある程度評定できるなら、これが最強なのではなかろうか?

HRVを正確に測定するには、やはりH10が良い事は間違いない。EliteHRVの対応機器解説ページでは、「For accuracy, we strongly recommend the Polar H10 HRV monitor or another compatible heart rate chest strap listed above. (正確さを求めるのであれば、Polar H10 HRVモニターか、上記の他の互換性のある心拍数チェストストラップを強くお勧めします。)」とあり、その理由も示されている。

スマートミラー作成計画

基、転職ポートフォリオ用工作計画。

ハードウェア

材料

木材でフレームを作成し、アクリル板にマジックミラーシートを張り付けて鏡にする。マジックミラーシートを張ったアクリル板の後ろから画面を表示することで鏡越しに投影することができる。マジックミラーシートも完全に反射するわけではないので、背面に黒い板(またはシート)を設置することで反射しやすくする。

壁に立てかけることを想定して木材はなるべく軽量なものを使用する予定。

組み立てイメージ

前から順に「木材フレーム(1)」、「木材フレーム(2)」、「アクリル板(マジックミラーー)」、「板(黒)」、「ディスプレイ」。Raspberry Piはディスプレイの背面に設置する。

※ディスプレイはテクスチャ作るの面倒だったためメッシュそのまま。ディスプレイの見た目はリンク先参照。

ソフトウェア

  • OS: Ubuntu (検討: Windows IoT / CentOS)
  • 画面制御: Python (Pyside or PyQt) (Processing)

OSはUbuntu(または、Windows IoT)を使用する。OS起動時に画面制御のプログラムをフルスクリーンで自動起動する。

Processingはアニメーションが優秀だが、Javaの勉強が少し必要になるため時間がかかる。また、OS内にあるシェルの実行ができるかが不明なのとJavaのランタイムがLinux上で動くか不明(多分動く)。

OSがGUIの処理ができるかは事前に調べる必要がある。

Ubuntu Desktop

Rapsbery Pi (以降、RPと表記)上では動くようだが、RP zeroはメモリが貧弱(512 mb)なので動くか不明。OSは軽量と噂だが、 内部のシステムと自作ソフトが並列で動くかは怪しい。PC版はPythonがデフォルトで入っているので環境構築が楽だったが、RP版は入っているか不明。

Windows IoT

Windows IoTはタイムスタンプ機能のようなものがあるようで、再起動時に一定のところまで勝手に復元されてしまうことがあるらしい。正直よくわからんOS。単純に興味があるから使用検討。

CentOS

そもそもRP上で動くか不明。よく使うのでOSの設定変更は楽。C言語版Qtが動くのは知ってるがPython版は不明。

画面制御

以下を表示予定

  • 時間
  • 天気
  • ネットニュース

時間の取得はハードウェアから取得し、天気の情報はOpenWhetherMapのAPIから取得する。ネットニュースの取得方法については要検討(APIがあることは知っている)。ディスプレイ自体はタッチに対応しているが、アクリル板を挟むため、タッチ機能は使用できない。ネットニュースの表示はQRコードを表示してスマホで読み取って表示できるようにする(鏡に張り付いてネットニュースを見る人などいない)。

内部処理

画面以外の処理で以下の処理が必要になる

  • WiFiの設定

Windows IoTは画面がWindowsのままなのでわざわざソフトで変更する必要はないかもしれない。Ubuntuも画面上で設定変更可能。CentOSはGUIですらないので、ファイルの設定変更はソフトで行う必要がある。

ssh通信ができればこの辺は解決?

プロトタイプ開発

以下の確認が必要。

  • マジックミラーシートがしっかり反射するか
  • マジックミラーシートの裏から画面を投影できるだけディスプレイが明るいか

余談

組み立てイメージの動画は木材フレームを親に作ってもらうためにstlで渡そうと思っていたのだけど、stlテクスチャつかなくてぱっと見ようわからんかったので、遊び心でアニメーション付けたらたかが5秒の動画をレンダリングするのに5時間かかった。時短のためにサンプリング落としたり解像度下げたせいでテクスチャつけたけど木目見えねぇし。。。人に示すときは二度とCycleエンジンでレンダリングしない。

M3Aアクセスポイント設定

1.サーバーモードにする
電源を入れた後ボタンを3回押して緑のLEDが点灯するようにする。そうするとサーバーモードになり、wi-fiで見つけられるようになる。
2.計測器に接続する
PCのwi-fi設定から、M3で始まるアクセスポイントを探し出し接続する。パスワードは「password」
3.ブラウザからSSIDとパスワードを設定する
設定画面が表示されるので、接続先のSSIDとパスワードを設定する。
4.通常モードで起動して新しいアクセスポイントに接続する
一度電源を入れ直すと通常モードで起動する。そのままにするとSSID1に、ボタンを1回押すとSSID2に接続する(この場合、接続待機時に紫色になる)。

行動定量化240120

燃えてきたぞ・・・!!シリに火がついてな!いくつかのAI&物理測定を統合して,行動定量化システムを構築・・・するぞ!一年近く経ってしまったな。
BODYPIX
・・・Ankerのカメラを繋ぐだけで,そのまま動くようだ。なんとデータも取れるらしい。ちゃんとGPUも使っている・・・完璧だな。Projectネームは,「Bodipix」そのまんまだな。
表情認識DNN
こちらはOpenCV内に含まれる表情&顔認識プロジェクト。正確なモデルはなんていうんだろう・・・。KOSEとの話でも出ていたが,これはこれで需要があるような気がする。シンプルだからね。「CV230601プロジェクト」内の,FacialExpressionRecognitionExampleというプロジェクトらしい。こちらはカメラを番号で指定するのか・・・ちゃんと動くね。
同時に動作させる
おお・・・!同時に動くぞ!しかもCPU負荷がまだ40%だ。エクセル立ち上げてバックグラウンドで仕事しようか?という勢いだ。nVidiaGPUがついたパソコンなら余裕で同時動作するだろう。

環境情報
大島氏の指摘通り,とりあえず温度環境・・・暑い場所は人を攻撃的にするという。そこで,行動定量化とはいいつつも,部屋の環境情報も同時に記録して残しておこうと思う。これはBME280+Wifi対応ArduinoでOKだよね。