10月以来、TAMSIVの音声AIはコマンドを完璧に理解できるようになりました。「タスクを作って」「メモを追加して」「私の予定を確認して」――全部うまくいきました。でもAIはユーザーのことを知らなかったのです。
「子どもたちのことを思い出させて」と言っても、あなたに子どもがいることは分かりませんでした。
公開の2日前、音声ベースのAIパーソナライズを出荷しました。
AIに話しかけて構成する
新しい画面:「私のAIを設定」。タップして、話します:
「私は3人の親で、4人の清掃クルーを管理していて、30秒後には何でも忘れます。」
AIは聞き取り、あなたの状況を要約して保存します。それ以降、すべての応答がカスタマイズされます。「小さい子」はあなたの息子を意味します。「火曜日のサイト」はあなたの現場での作業を意味します。
実装はこうです。カスタムのコンテキストをシステムプロンプトの一部としてOpenRouterに送ります。LLMは会話のあらゆるターンでそれを見ています。シンプルですが、その周りのUX――オンボーディングの流れ、音声録音、保存/編集/削除――そこに1,800行が投入されました。
ライブプレビュー付きのTTSボイスを6種類
声はパーソナルです。同じロボット音声を1日50回も聞くと、飽きます。
そこでボイスセレクターを追加しました。OpenAI TTSボイスを6種類用意し、それぞれにライブプレビューのボタンを付けます。タップ→その声で「こんにちは、TAMSIVアシスタントです」と聞く→選ぶ。ユーザープロフィールに保存され、すべての応答で使用されます。
厄介だったのは、プレビューがメインのディクタフォンと同じWebSocketパイプラインを使っていたことです。つまり――
3時間続いたWebSocketのバグ
AIセットアップ画面とディクタフォンは、1つのWebSocket接続を共有しています。セットアップで音声をプレビューすると、ディクタフォンのコールバックも発火してしまい、セットアップ画面向けではないはずのオーディオを処理してしまいました。
修正: 「アクティブなオーナー」パターンです。セットアップが開くと、WebSocketの所有権を独占で主張します。ディクタフォンのコールバックは、セットアップが閉じるまで何もしない(no-op)ようになります。理論上はきれいですが、3時間のデバッグが必要でした。競合は、強いガベージコレクションを行う特定のAndroidモデルでしか発生しなかったからです。
パーソナライズを機能ゲートに
AIパーソナライズは、料金表のPro/Teamプランの一部になりました。無料ユーザーは基本的なコンテキスト、課金ユーザーは完全なカスタマイズ+ボイス選択を利用できます。ウェブサイトの料金ページにも追加しました。
730回以上のコミット、月曜日は公開日
これが最後の機能でした。アプリは今、誰に話しかけているのかを理解しています。
月曜日、TAMSIVはPlayストアで一般公開されます。ひとりで6か月開発して、ついにAIにコンテキストが入ったのです。
TAMSIVはAIを備えた、音声ベースのタスク&メモ管理アプリです。Androidで試すか、tamsiv.comにアクセスしてください。




