見出し画像

AppleWatchで録音して自動的に文字起こししてエージェントが1日を振り返るアプリを作った

LimitlessというAI録音デバイスをとても気に入っていたのだが、Metaが買収してだいぶきな臭くなってきたので使うのをやめた。

あと、Limitlessは使っているとたまに気になることがあって、音声の生データを取り出すこともできるんだけど、生データを取り出すのが面倒だったりしてイマイチ実用性が乏しかった。

そこで、AppeWatchアプリとして、録音して自動的に文字起こしするアプリを作った。

iPhoneとずっと繋がっていて、発言をiPhoneに送信し、iPhoneからクラウドのエージェントに送信。やばそうな時はエージェントが教えてくれるというツールだ。

海外とかにいると、目の前の人が知らない言葉で話し始めたりするのはしょっちゅうで、英語ならともかく、タミル語とかタイ語とかコプト語で喋られても全くわからない。

そう言う時に、常に周囲の声を監視して、いざという時に「そいつやばい話してるよ」と警告してくれるAIがあれば、海外でもトラブルに巻き込まれる危険性を減らせるだろう。

また、ふとしたアイデアを思いついた時、すぐに忘れてしまいそうになるが、つぶやいておけばあとからエージェントに命じて「昨日思いついた新しい企画ってなんだっけ?」と聞けば教えてくれるようになる。これは便利。

とりあえず文字起こしするところまで作った。文字起こしそのものはiPhoneの中でWhisper Smallで動いてるのでちょっとバカ。だけど音声の生データがあるのでこれをクラウド上ではちゃんと料理すればいい。

画像

少し前までだったら、AppleWatchのアプリなんて面倒だから作ろうとは全く思わなかったと思うが、いざ作ってみると半日くらいで完成してちょっと嬉しい。

もうアイデアさえあればなんでも作れちゃう時代なんだよなあ。

(6/17追記)
試しに昨日1日の記録をClaude Codeで要約させてみた。

(AIここから)


AI WRIST LOG / 2026.06.16

AIリストバンドが録った、俺の6月16日
── 深夜の与太話から四次元の旅まで

清水亮(shi3z)|記録時間 00:00〜16:06|発話クリップ 2,065本/約124分
文字起こし:Whisper large-v3(MLX / Apple Silicon・時系列処理)
腕につけたAIリストバンドが、今日も俺の一日を勝手に録音し続けていた。深夜の飲み屋で吐いた毒、昼に食った肉そうめん、配信で2時間しゃべり倒したテンソルの話、そして夜の四次元への旅。2,065本の音声クリップをWhisper large-v3に全部流し込んで、時系列に並べて読み返してみた。……これがまあ、ひどくて、面白い一日だったわけです。
本日のログ

11:07AIリストバンドができた

Apple Watch用のAIアプリを作った、という報告からはじまる。

このログ自体が、その成果物

仕組みはシンプルで、しかも今まさにこの記事がその証明になっている:

  • 身につけたデバイスが音声を常時録音する

  • 音声データはちゃんと別に保存され、リアルタイムに文字起こしされる

  • その結果をClaude Code(エージェント)に投げると、まとめてくれる

…という構想を朝に語っていた本人が、夜にはそのClaudeにこの一日を要約させている。マッチポンプというか、有言実行というか。
「次のハッカソンで引退する」と言っている後輩を惜しんだり、デバイスのブレ具合に「意外と京子さんやるな」と感心したり。作る側の人間の、地に足のついた朝だった。

11:11肉そうめんは発明である

そして昼。テンションが分かりやすく上がる。連れて行かれた(連れて行った?)店の肉そうめん/カレーそうめんに、俺は完全にやられた。そうめんの上に生姜焼きが乗っている。冷たいカレーがかかっている。

これはなかなか発明と言っていい。
冷たくてカレーでそうめん、最高やん。── 11:44ごろ、心の底から

ポイントは、「少なめ」で頼んでも2.5人前来るという狂った量。それでも「すげーうまそう」「確かにうまい」を連発している。地元のうまいものを発信するXアカウント、マイバスケットのレジが4台増えた喜び、Googleの口コミに「女の子だけで行くと殺される」と書かれた店の話……食と街の与太話が止まらない。
合間に飛び出すのがガジェットのアイデアたち。変形してロボットになる携帯、EMSで体に電気を流して「弾が来たら体で避ける」体感ゲーム筐体、ポーズ検出で筐体が動く仕組み、そして「AIゲームセンター」構想。昼飯を食いながら次の作品の話をしている。これがこの人のデフォルト状態らしい。


12:25今更聞けないAI講座・第3回

ここからが本日のメインイベント。昼の生配信、「教養としてのAI講座/今更聞けないAIとコンピューターのこと」第3回。聞き手の鋭いツッコミ役と二人で、今日のテーマはハルシネーションとプロンプト。……のはずが、例によって前段の説明だけで終盤までいく。だがその前段が、めちゃくちゃ良かった。録音から再構成すると、こういう講義だ。

① 分類 → 認識 → 生成は、ぜんぶ同じもの

90年代の郵便番号読み取り(0〜9の10種類に分類)から、2012年にようやくできた1000種類の画像認識、そして翻訳のような生成へ。出てくる答えの数が増えただけで、中の構造は完全に一緒。「分類と認識と生成は同じもの」というのが第一の核。

② テンソルとは「データの集まり」である

ここで世界一わかりやすいテンソルの説明が始まる。Excelで喩えるのがミソ:

  • 数字1個=スカラー(0階/0次元)── セル1個

  • 縦に並ぶ=ベクトル(1階)── 縦に何個並ぶかが次元

  • 縦横に並ぶ=行列(マトリックス)(2階)── Excelの表

  • 表が何枚も重なる=3階テンソル── Excelのシートで分かれてる状態(例:カラー写真=RGB3枚)

「新しい名前をつけるのはもうやめよう」と、無限に増える概念を“○階のテンソル”に統一した。AIの入力も出力も、画像も音声も、全部テンソル。

③ 特徴ベクトルと、ハロプロで理解する特徴空間

784次元(28×28ピクセル)の手書き数字を、特徴をつかんで3次元まで次元圧縮する。最初はぼんやり混沌としているのが、学習が進むと7は7へ、9は9へと分かれていく。これを本人が昔作ったVRの特徴空間ビジュアライザで「AIの頭の中」に入って見せる。

説明なしに猫や犬を見せられた赤ちゃんの状態。それが「30人のアイドルのどれがモーニング娘。でどれがJuice=Juiceか」を、衣装(特徴)で見分けられるようになっていく感じ。── アイドルで全部を喩える女

④ パーセプトロンと「XORは学習できない」

一番簡単なAI=パーセプトロン。AND/OR/NOR/NAND論理を「今日の昼飯、辛くないもので(OR)」「カツカレーしか食わん(AND)」みたいに喩える。そしてXOR(排他的論理和)は1層では学習できない──線形分離不能だから。だが層をもう1枚足す(多層パーセプトロン)と、考える次元を1つ上げて分離できる

⑤ トークン=ベクトル、そしてハルシネーションの正体

単語=トークンは、それぞれのベクトル次元に割り当てられている(この事実を知ってる人は驚くほど少ない、と)。トークナイザーの良し悪しで結果が変わる。GPT=Transformerは、文脈から「統計的に次に続く確率が最も高い単語」を選ぶ連鎖反応でしかない。富士山と聞けば「3,776m」を答えるべきだと学習しているだけ。

ハルシネーションが起きる理由は、学習したデータに強烈に引っ張られるから。2ちゃんねるみたいな“嘘か本当か分からない”文章を食わせれば、ずっとそんな調子になる。初期のChatGPTが日本について出鱈目だったのは、単に日本語の文章をほとんど読んでいなかったからですよ。

⑥ そして核心 ──「プロンプトは、本当はLLMの中に無い」

これが今日いちばん刺さった一言。LLMは原理的にはただ次の単語を選び続けているだけ。だから本来「プロンプト」なんてものは存在しない。ベースモデルは続きを書くだけのポンコツ。それをインストラクションモデルとして躾けて、なんとかまともに返事させているにすぎない。

生で触ると、LLMはものすごい暴れ馬なんですよ。それをテクニックで抑え込んで、まともな返答に見せてるだけ。── 続きは来週。だいたいいつも時間が足りない


13:25配信のあと ── 世界と地球の話

配信が終わり、小豆バーをかじりながらリバーサイドへ。iPadを店に置き忘れたかと一瞬焦る(無事だった)。話題は一気にスケールが飛ぶ。
2026年の夏は平年よりかなり暑くなる予想。問題は昼より夜で、最低気温が下がらないから一日中暑い。その流れで出てくる強烈なエピソードが、去年、田んぼのザリガニが暑さで茹で上がって死んでいたという話。稲にしがみついたまま茹で上がるザリガニ。駆除する手間が省けたという、笑っていいのか分からないオチ付き。
合間に「漫画の最終回を描かなきゃ」と悩む声。日本一原稿料が安いという連載の、最終回。ネタが思いつかない、AI日常系で、ハッカソンのことを書くか……と独り言が続く。そして 15:04、ぽつりと「よし、描いた」
🎧 14時〜15時台の“沈黙”について:この時間帯は移動や作業が中心で発話がほとんど無く、Whisperが無音やノイズに対して「ご視聴ありがとうございました」「両端を切り取ります」「卵黄を入れて混ぜます」といった幻聴(ハルシネーション)を大量に生成していた。皮肉にも、午後の講義テーマそのものを、文字起こしAIが身をもって実演してくれた格好。本記事ではこれらを除外して再構成している。


15:39四次元への旅

一日の最後は、配信のアフタートーク兼・復習セッション。聞き手が「配信を見返してメモを取っていたら、さっきまで分からなかったことが急に分かってきた」と興奮している。分類・認識・生成は同じ。テンソルはデータ。点が次元の中で散らばっているだけ──。
ここで俺の個人史が漏れる。23〜24歳の頃、大学院に通う友人に「テンソルをやった方がいい」と言われ、有限テンソル解析の教科書を渡された。当時は読んでもさっぱりで「一生やらなくていい」と思った。それから20年。AIの時代になって、「テンソルって便利やん」と腑に落ちた。京大数学科を舞台にした漫画『数字で遊ぼう。』の、「お前たちの数学と工学部の数学は、同じ言葉で全く違う話をしている」というくだりを引きながら。
そして締めは四次元の可視化。3×3行列を「3次元」と言ったのは3DCG文脈の癖で、今日の話とは別物だと丁寧に訂正したうえで、超立方体(テッセラクト)を見せる。

我々は、4次元空間で回転させたものを3次元に投影し、それをさらに2次元(画面)に投影したものしか見ることができない。

箱の中に箱があるように見える立方体が、4次元回転でぐにゃりと歪む。聞き手が漏らす感想がいい。

うぇー、すごい……もう、催眠術かけられた。
やばい、脳がバグりそう。── これを見せられた人類の正しい反応

「人間は何次元で生きてるの?」とGPTに聞いたら、xyz+時間軸という無難な答えが返ってきた。──まあ、そんなもんだ。深夜の与太話で始まり、四次元で脳がバグって終わる。悪くない一日だったわけです。


(AIここまで)

面白いなあ。しばらく使ってみよう。
Limitlessではこういう面白さはなかった。

電池は全然持ちました。


ピックアップされています

shi3z note

  • 828本
さすらいのプログラマー 知能と生命の研究者
AppleWatchで録音して自動的に文字起こししてエージェントが1日を振り返るアプリを作った|shi3z
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1