もっと賢いメモを、オンデバイスで。
書いているそばからメモにタイトルとタグを付け、見出しに絵文字を提案し、ラフなスケッチをきれいな図形に変え、音声入力や会議を文字起こしします。すべてオンデバイスで。
メモのための AI モデル
端末の外には何も出ない
どのモデルも、ユーザーのスマートフォン、タブレット、ノートパソコン上で動きます。個人的な日記、健康の記録、会社のデータがサーバーで処理されることはないので、どんなメモでも機能を使えます。
呼び出しごとの費用なし
すべてのメモにタイトルを付け、すべての画像を整理し、すべての会議を文字起こししても、呼び出しごとの請求はありません。チームは、先にクラウド費用を見積もらなくても機能を追加できます。
オフラインで動く
モデルをダウンロードしておけば、どの機能も接続なしで動きます。タイトル付け、音声入力、スケッチの清書は、機内でも電波の届かない会議室でも使えます。
動作例
どの例も、モデルの実際の出力を再生しています。詳しくは各モデルのページへ。Gist、Emo、Shapes は、自分のテキストやスケッチで試せます。
Title · タイトルと説明
すべてのメモにタイトルを
ユーザーが書くそばから、Title が短いタイトルと説明を提案し、メモが長くなるにつれて両方を更新します。Title は Apple プラットフォーム専用です。細部を間違えることもあるので、提案された内容はユーザーが編集できるようにしてください。
Gist · コンテンツのトピックタグ付け
メモに自動でタグを付ける
Gist は、36 のトピックタグから 1 つ以上を各メモに付けます。タグを使えば、メモをトピック別のタブに整理したり、検索結果をトピックで絞り込めるようにしたりできます。Gist は 101 言語に対応しています。
Emo · 絵文字の提案
見出しや箇条書きに絵文字を提案する
1 行を書き終えると、Emo がその行に合う絵文字を提案します。パスポートの更新には 🛂、電気代の請求には 💡、チームミーティングには 👥。提案は 2 ms 未満なので、入力に遅れずについていきます。
Eye · 画像分類 · ベータ
画像にラベルを付けて整理する
Eye は、ホワイトボード、スクリーンショット、地図、写真を見分け、それぞれの写真に何が写っているかも判別します。画像を種類別に整理すれば、ユーザーは火曜日のホワイトボードをすぐに見つけられます。
Voz · 音声認識
メモに音声で入力する
ユーザーが話すそばから、Voz が数語ずつメモに書き込みます。リアルタイムの文字起こしは Apple プラットフォームのみで、Android と Web では録音が終わってから文字起こしします。Voz が対応するのは欧州の 25 言語なので、Ear と組み合わせて先に言語を判定してください。
Who · 誰が何を話したか · ベータ
誰が何を話したかを示す
Who を Voz と組み合わせると、議事メモの各行に、どの話者の発言かが表示されます。Who は 5 分ごとに最大 4 人の話者を聞き分け、会議全体ではそれ以上の人数に対応します。Who が最も力を発揮するのは、ビデオ通話のように一人ひとりが自分のマイクを使う場合です。
Shapes · 図形認識
ラフなスケッチを、きれいな図形に
文に下線を引く、単語を丸で囲む、フローチャートを描く。Shapes はそのひと筆ずつを、10 ms 未満できれいな図形に整えます。会議中に描いたメモや図も、そのまま共有できるほどきれいに仕上がります。
はじめる
必要なモデルは、1 つの SDK から Swift、Kotlin、JavaScript でインストールできます。この例では、Gist と Emo でメモにタグを付けます。Apple プラットフォームでは、Title でメモのタイトルも付けます。
iOS, macOS, Linux, Windows
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.3.0",
traits: ["MLX"])
// target dependencies
.product(name: "Title", package: "desert-ant-core")
.product(name: "Gist", package: "desert-ant-core")
.product(name: "Emo", package: "desert-ant-core")
import Title
import Gist
import Emo
let titles = try await Titles(directory: modelFolder)
let gist = Gist()
let emo = Emo()
// after a pause in typing
let card = try await titles.describe(note)
let topic = try await gist.classify(note).first
let emoji = try await emo.suggestions(for: note).first?.emoji
Android
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:4.3.0")
implementation("ai.desertant:emo:4.3.0")
import ai.desertant.emo.Emo
import ai.desertant.gist.Gist
val gist = Gist(context)
val emo = Emo(context)
// after a pause in typing
val topic = gist.classify(note).firstOrNull()
val emoji = emo.suggestions(note).firstOrNull()?.emoji
Web, Node.js
npm i @desert-ant-labs/gist @desert-ant-labs/emo @litertjs/core
import { Emo } from "@desert-ant-labs/emo";
import { Gist } from "@desert-ant-labs/gist";
const gist = await Gist.load();
const emo = await Emo.load();
// after a pause in typing
const [topic] = await gist.classify(note);
const [suggestion] = await emo.suggestions(note);
メモアプリを開発中ですか?
ユーザーのために何を加えたいかを教えてください。モデル選びと組み込みの計画をお手伝いします。






