Show HN: KoIME – A BYOK voice-input keyboard for Android

gysakai1 pts1 comments

GitHub - sakai-sktech/koime: BYOK の音声入力 Android IME — OpenAI Whisper API を自分のキーで使う · GitHub

/" data-turbo-transient="true" />

Skip to content

Search or jump to...

Search code, repositories, users, issues, pull requests...

-->

Search

Clear

Search syntax tips

Provide feedback

--><br>We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Cancel

Submit feedback

Saved searches

Use saved searches to filter your results more quickly

-->

Name

Query

To see all available qualifiers, see our documentation.

Cancel

Create saved search

Sign in

/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up

Appearance settings

Resetting focus

You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.

Dismiss alert

{{ message }}

sakai-sktech

koime

Public

Notifications<br>You must be signed in to change notification settings

Fork

Star

main

BranchesTags

Go to file

CodeOpen more actions menu

Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit

History<br>23 Commits<br>23 Commits

app

app

docs

docs

gradle/wrapper

gradle/wrapper

.gitignore

.gitignore

CLAUDE.md

CLAUDE.md

LICENSE

LICENSE

README.en.md

README.en.md

README.md

README.md

THREAT-MODEL.en.md

THREAT-MODEL.en.md

THREAT-MODEL.md

THREAT-MODEL.md

build.gradle.kts

build.gradle.kts

gradle.properties

gradle.properties

gradlew

gradlew

gradlew.bat

gradlew.bat

settings.gradle.kts

settings.gradle.kts

View all files

Repository files navigation

KoIME — 声で打つ Android キーボード

日本語 | English

音声入力特化のカスタム Android IME。マイクボタンを押して話し、停止すると<br>音声バッファを STT(音声認識)API に送り、結果のテキストを現在の入力欄に挿入する。<br>Typeless 系の「バッファ方式」ボイスキーボードの自作実装。

[マイクをタップ] → 録音中(もう一度タップで停止)<br>→ m4a バッファを STT API へ送信 → 転写テキストを入力欄に commitText

どのアプリでも使える(システムキーボードとして動作)

多言語対応(Whisper 系モデルの言語ヒントを設定可能)

挿入位置の調整と取り消し: ◀▶ カーソルキー(長押しリピート)と、<br>直前の転写だけを安全に取り消す UNDO キー

UI 表記は意図的に中学英語のみ (TAP 🎤 & SPEAK / UNDO / SPACE …)。<br>端末の言語設定によらず全員が同じ表記を見る。理由と全文字列の対訳は<br>docs/LOCALIZATION.md(DD-014)

STT はプロバイダ抽象化層(SttEngine)— 現在は OpenAI transcription API 実装

思想 — 鍵も端末も音声もあなたのもの

BYOK(Bring Your Own Key) : API キーは利用者が自分で取得し、自分の端末に<br>入力する。アプリには同梱しない。作者のサーバーも存在しない。利用料金は<br>OpenAI からあなたに直接請求される — コストの把握も、上限の設定も、キーの失効も、<br>全部あなたの手の中にある。中間に誰もいないから、不透明なマージンもクォータもない。

音声の経路 : 録音はマイクボタンを押した間だけ。音声はあなた自身のキーで<br>OpenAI へ直接 送信され、転写後に端末から削除される。作者を含む第三者は<br>経由しない。あなたの声の行き先を決めるのは、あなたのプロバイダ選択だけ。

「API キーの取得」というハードルはわざと残している 。キーとは何かを理解し、<br>取得・課金管理・失効まで自分でできる人が対象(理由は<br>docs/DESIGN-DECISIONS.md の DD-010)。

自分のカスタムアプリが数分で組める時代に、主権を手放す理由がない 。<br>今どきの AI に手伝わせれば、このベースをフォークして自分専用の音声入力に<br>書き換えるのは数分の仕事だ。便利さと引き換えにデータと鍵を誰かに預ける必然は、<br>もうない。データも主権も自分で握っておけ — KoIME はそのための、動くベースである。

IME は構造上、すべての入力を読める位置にいる 。これがどういうことかと言うと、<br>あなたの行動(キー入力)をすべて盗むことも出来るということだ。ただの Android<br>アプリではない — この認識を持つことが大事。だからこそ、ソースを読めて<br>自分でビルドできることが、キーボードアプリの唯一まともな信頼根拠だと考えている。<br>盲目的に信じるな。読め。そして自分で書き直せ (AI が最大限サポートして<br>くれるのだから): THREAT-MODEL.md — 書き直すための<br>差し替え境界も、そこに示してある。

スナップショット公開について

これは、作者が実務で日常利用しているアプリと同じコードベース の<br>スナップショットです。開発は非公開の原本リポジトリで継続しており、その全てが<br>ここに同期されるとは限りません。ですから issue / PR への反応は薄いかもしれません<br>(正直に書いておきます)。逆に、自分の制御できる範囲で便利な音声入力を<br>拡張するベースとして使ってほしい — そのための公開です。

名前について

旧名は koetype(2026-07 に改名)。同名の既存プロジェクト<br>yasu-888/koetype(KoeType — 無関係の<br>別プロジェクト)との混同を避けるため。経緯は DD-016。KoIME の由来は<br>koe(声)+ IME — 日本語で読むと「濃いめ」。

プライバシー

通常のキー入力の内容を収集・送信することはない。

送信されるのは、マイクをタップして録音した音声だけ。それも利用者自身が<br>設定した API キーで OpenAI へ直接送られる。

広告・解析 SDK・テレメトリはゼロ。

使ってみる

→ docs/GETTING-STARTED.md を読めば、何をすれば<br>よいか分かる。ビルド → インストール → IME 有効化 → API キー設定 → 自分の鍵での<br>release 署名まで、一通りの流れをすべて経験できるはずだ。

Android アプリの開発をしたことがなくても大丈夫。分からなければ、手順書ごと<br>AI に読ませればいい (そのまま実行手順として通じるように書いてある)。<br>あなたにできない理由はない。作者の解説が言葉足らずだったら issue にあげてくれ。

git clone https://github.com/sakai-sktech/koime.git<br>cd koime && ./gradlew assembleDebug<br>adb install app/build/outputs/apk/debug/app-debug.apk

API キー入力欄は Android 標準の Autofill に対応している。Bitwarden / 1Password /<br>Google パスワードマネージャ / KeePassDX 等に保存したキーを、メール・チャット・<br>クリップボードを経由せずに入力できる。これはキー管理の責任をアプリ側へ移す<br>ものではなく、利用者自身の安全な管理方法を妨げないため のもの(DD-012)。

ドキュメント

文書<br>内容

THREAT-MODEL.md<br>何から守り、何は守らないか(設計上のスコープ宣言)

docs/KEY-STORAGE-SECURITY.md<br>API キーが端末のどこに・どう保存され、何から守られるか(iOS 移植者向けの「問いの立て方」も収録)

docs/SIGNING.md<br>Android の署名は何を証明するのか — なぜ「オレオレ署名」が正規設計なのか(図解つき)

docs/DESIGN-DECISIONS.md<br>設計判断ログ DD-001〜016 — なぜこう作ったかは全部ここにある

docs/PRODUCTIZATION.md<br>フォークしてサービス事業化を考える人向けのハードル整理

docs/GETTING-STARTED.md<br>セットアップの全手順

docs/2026-07-08 / 07-09 / 07-21 の各記録<br>実装・検証の実録(エミュレータの罠カタログ、実機クラッシュの診断記録、キー追加の設計記録)

構成

app/src/main/java/dev/sakai/koime/<br>ime/ InputMethodService とキーボード UI<br>audio/ 録音(MediaRecorder → m4a バッファ)<br>stt/ SttEngine 抽象化 + OpenAI 実装<br>settings/ 設定画面・権限フロー

フェーズ2 構想 — このベースの伸びしろ:

AI 推敲の層を追加する : 転写後に LLM を一段挟む。フィラー除去・整文から、<br>特定ドメイン用の正確な言葉にしたテキスト化まで

ストリーミング化 : バッファ方式からリアルタイム文字起こしへ近づける

ローカル STT : いずれスマホ単体でこの精度の文字起こしは出来るようになる。<br>そのときは SttEngine の下に whisper.cpp 等を差すだけでいい

UI ローカライズ :...

docs koime android gradle openai threat

Related Articles