走っている時に自分が育てたAI が話しかけてくれる ― Garmin LiveTrack × Muse の音声コーチを公開しました

AI

走っている間、自分が育てたAI が話しかけてくれる

走っているとき、イヤホンで聞いている音楽の音量がすっと下がって、声が入ってきます。

距離と平均ペース、心拍の状態。そのあとに一言、その日の話題が続きます。たとえば「明日は楽しみにしているスポーツ中継がある日です」「今日は岡山マラソンの開催日ですね」といった具合です。

Garmin の時計と Muse をつないで、走行中に音声でコーチングを受け取る仕組みを作りました。「Voice Coach for Muse」という名前で、オープンソースとして公開しました。

純正のラップ音声案内と何が違うのか

Garmin にも音声案内はあります。1km ごとにラップタイムを読み上げてくれる、あれです。正確ですが、内容は数字だけです。

走っていて物足りないのは、その数字の先でした。「今日は回復走だから、このペースで十分」「坂が続いているけれど想定内」。そういう文脈のある一言は、時計の定型機能からは出てきません。

この仕組みでは、ペースや心拍の報告に加えて、AI がその場に合わせた発話を時々挟みます。その日の回復度(睡眠や HRV の状態)、目標の大会までの残り期間、走っているコースの特徴、ニュースや予定。材料は走っている人の状況です。

前回の記事から、公開まで

紹介記事を公開した 11月3日から、実際にソースコードを公開するまでは、テストと仕上げの日々でした。

まず約60分で Garmin へのデータ取得が失敗し始める問題が出て、原因は特定できないまま、muse 側で実行される監視プログラムを常駐型から「20秒ごとの単発実行」に作り替えて回避しました。

11月7日には8km・約71分の実走テストを行い、コーチング25件、AI の発話2件を実際に聞くところまで確認しました。muse にフィードバックをチャットで伝えながら走っていたので単なる集中力のないおじさんでしたね。公開の条件として自分で決めていた「60分を超える屋外ランで最後まで動くこと」を、ここで越えられました。同時に、定型文の繰り返しが目立つという内容面の課題もはっきりしました。

公開前日の 11月8日には、配信データの読み取りを認証必須にし、Git の全履歴(102コミット)を走査して秘密情報が紛れていないか監査し、ライセンスを MIT に決めて public に切り替えました。102コミット…長かった。コーディングは Codex に全振りしていましたが、それでも結構時間を費やしました。

仕組みについてはほぼ実用レベルとなりましたが、残る課題は「muse に何を話してもらうか」に集約されます。

自分で育てるコーチ

この仕組みの肝は muse が何を話すかは利用する人次第だという点です。

口調、取り上げる話題、励まし方。指示の文章(プロンプト)を変えれば、コーチの性格が変わります。私の場合は「伴走できる秘書」という位置づけにしました。仕事や私生活を支えるのと同じように、走っている時間を少し充実させる存在です。

たとえば、大会までのカウントダウンを毎回入れる、週末はニュース中心にする、回復の日は静かに数字だけにする。そういう調整もプロンプト側で決められます。発話の間隔も、1km / 500m / 3分 / 1分から選べます。

だから、良いプロンプトが出来たら、ぜひ共有してほしいと思っています。使ってみた感想や「こう言ってほしい」という改善案も歓迎です。プログラミングの知識は要りません。一番欲しいのは、走る人の実感のほうです。

使ってみたい方へ

対象は、Garmin の時計と iPhone を使っていて、Muse を利用できる方です。自分のアカウントで環境を構築する形で、手順は公開しています。受信アプリは iOS のみ、App Store での配布ではなく、自分でビルドして入れる形です。無料の開発用プロファイルでは7日ごとに再インストールが必要、という運用上の注意もあります。本当は AppStore で公開したいところですが、審査に必要な環境が用意できない、アプリがスリープ状態にならないように位置情報のバックグラウンド更新を利用している、などの理由で AppStore では公開していません。ちなみに位置情報は受けるだけで捨てています。審査を通していないアプリは怖くてインストールできないよ!という方は事前にAIに以下のURLを渡してセキュリティ観点でのチェックを依頼してください。

なお、これは Garmin 公式のプロジェクトではありません。LiveTrack の仕組みに依存しているため、Garmin 側の変更で動かなくなる可能性もあります。その前提で公開しています。

おわりに

数字を読み上げるだけなら、時計がやってくれます。走っている時間に「その人にとって意味のある一言」を届けられるかどうかが、この仕組みの挑戦です。

公開はゴールではなく始まりで、ここからは使い込んで育てる段階です。試した方の声も集めていきたいと思っています。フィードバックお待ちしています。