子どもの勉強時間の記録アプリを少し探したのですが、シンプルで毎日使っても負担のない、しっくりくるものがありませんでした。
自作しようかな? でも業務日報システムみたいにチクチク入力するのは使ってもらえないな。そうだ音声入力にしよう! ChatGPTでいい感じにできるのでは? と思ってやってみたメモです。
コンセプトの確認
音声を入力し、それを元にプロンプトを組んでJSONデータを得るというのをやってみます。
命令形なのは横柄だからでなく、トークン短縮や意味の揺らぎを少しでも減らすためです^^;
次の仕様に基づき入力文を解釈し、結果を出力しろ。
# 仕様
- 日付の指定がない場合は、今日の日付(2023年3月21日)を用いる。
- 年の指定がない場合は、今年(2023年)を用いる。
- 月の指定がない場合は、今月(2023年3月)を用いる。
- 教科の指定がない場合は、「不明」を用いる。
# 入力文
「(ここに音声入力した文字列)」
# 出力
- 日付(プロパティ名date、フォーマットは年-月-日)、教科(プロパティ名subject)、勉強時間(プロパティ名minutes、単位は分)のレコードをJSON配列で返せ。
- JSONのソースコードだけを返せ。
ちょっと意地悪な入力文を試してみましたが、おいおい、完璧じゃないか…
数学がやっぱり60分とか英語は追加で15分やった、みたいな訂正まで拾っています。賢すぎる。
思った以上にうまくいきそうなので、動くものを雑に実装してみます。
実装
こんなユースケースを想定します。これなら毎日の入力もイヤにならないはず!
- ボタンを押して音声を入力する。
- 自動で文字起こしする。
- ChatGPTでJSONデータに構造化する。
- 入力インターフェースに反映し、修正があれば手作業で直す。
実際に動かした動画がこちら。ChatGPTのAPIがなんだか遅くて解釈に10秒くらいかかります。 止まったように見えますが、じっくり待ってください。
GUI上だとレスポンスは一瞬なので、そこはAPIの都合っぽいですが、ひとまず期待したものができました。
ソースコード
ソースコードと動かし方をこちらにあげておきました。
このファイルに主要な処理が記述されているので参考にしてください。
感想
スマートスピーカーのアプリ開発ってもっと大変そうな印象でしたが、それ以上に賢いものが、すぐにできてしまいました。思いついてからこの記事をここまで書くのに3時間くらいです。
筋トレやお薬などの習慣化トラッカーはもちろん、券売機などにも応用できるでしょう。
AIに触れるたびに、「今の仕事どんどんなくなるな」と痛感しますね…