# Transui design - Linux is a GTK3 desktop recorder. It supports hosted transcription with an optional local fallback and can type at the cursor or copy to the clipboard. - Android is remote-only. It provides an Android `RecognitionService`, a voice-only input method, and a floating recognition activity. Do not add a local llama.cpp path to Android. - Both clients call OpenAI-compatible `/v1/audio/transcriptions` endpoints and clean only the Qwen3-ASR `language …` or `language …` prefix. - The Android voice UI is an opaque, compact system surface. Teal is the recording signal. `PushToTalkButton` draws the Apps and Stop Circle glyphs with Canvas because the target device drops `ImageButton` image layers. Keep the glyphs drawn above the button background. ## llama.cpp local endpoint The Linux local fallback begins with this multipart request. `response_format=json` is required; `prompt` is optional and may request transcription or translation. ```sh curl -s -X POST -F response_format=json http://localhost:8080/v1/audio/transcriptions \ -F file="@test.mp3" \ -F 'prompt=Transcribe the following speech segment in English, and translate them into chinese.' ``` llama.cpp may return an event envelope instead of a bare OpenAI response: ```json {"type":"transcript.text.done","text":"这是个测试。你能听到什么?我希望这很好。","usage":{"type":"tokens","input_tokens":241,"output_tokens":516,"total_tokens":757,"input_tokens_details":{"cached_tokens":0}}} ``` Use `text` as the transcript. Accept `transcript.text.done`; do not require a bare `{ "text": "…" }` response.