# Mimi, a floating live subtitle and translation overlay for desktop audio

> Mimi is a Tauri desktop app that captures computer or microphone audio, runs speech recognition and translation, and paints the result as a floating, click-through subtitle overlay. The app itself is free under the MIT licence, but the speech and translation work is delegated to services you configure yourself, which is where the cost and the privacy trade-offs live.

**yuxino/Mimi** — 把电脑或麦克风声音转成实时翻译字幕。Live translated subtitles from computer or microphone audio.

- Repository: https://github.com/yuxino/Mimi
- Website: https://mimi.yuxino.cn
- Stars: 728 · Forks: 44
- Language: Rust
- License: MIT
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/yuxino-mimi

## The overlay is the product, not the transcription

Mimi describes itself as turning computer or microphone sound into real-time translated subtitles, and the interesting part is where those subtitles land. They appear as a floating overlay rather than inside a window, with three display modes: bilingual, translation only, or original text only. You can move the overlay, change the font size and the colour, and an immersive mode strips it back to text only. The overlay also supports click-through, meaning clicks pass to whatever application is underneath, so you can keep using the app you are watching while the subtitles sit on top of it. That combination, floating position plus click-through, is what separates this from a media player feature. The two capture targets are computer audio, microphone, or both at once, which is how a phone call or a meeting gets captioned with your own voice included.

## Audio capture granularity differs sharply by operating system

The source selection is where platform differences bite, and the documentation is specific about each one. On macOS and Windows 11 you can pick a particular application as the audio source, so you can caption one program and leave the rest of the system alone. On Linux the documented behaviour is choosing an individual playback stream instead. The repository topics list both pipewire and pulseaudio, and one of the credited contributions specifically adds Linux capture of an individual playback stream, so the Linux path has been worked on deliberately. Android is a separate application rather than a build of the desktop app, contributed separately and documented under its own install and usage page. If your need is per-application capture on Linux, that is the case to test first, because it is the one that the contributors have been actively extending and the one most likely to depend on which of the two audio servers your distribution uses.

## Three steps to a working overlay: service, languages, permissions

The setup sequence is short and worth following in order. First you configure the service: open Settings, go to the models and services section, and add a speech service. The documentation links a configuration guide that covers how to choose a service and where to get the key. Second, in the voice and language section you pick which audio source to capture, the language to recognise, and the language to translate into. Third, in the subtitles tab you switch on live captions, grant the permissions the system asks for, and then play the content you want captioned. The ordering is not arbitrary: the permission prompt only appears once live captions are enabled, so turning that on before configuring the service gets you a permission dialog for an app that has nothing to do yet.

## Mimi is free, the services it calls are not

The README states plainly that Mimi itself is free, while cloud services may charge. That distinction matters because the app does not bundle a recogniser. When you use cloud recognition or translation, the audio or the recognised text is sent to the relevant service, which is the arrangement the documentation calls out explicitly. A local path exists: the configuration guide has a section on the conditions under which Apple's local service applies, and one credited contribution disabled thinking mode for DeepSeek real-time subtitle translation, which tells you the app can point at several model providers rather than one. The privacy consequence is straightforward. With a cloud provider, your meeting or your film audio leaves the machine, and with the local option it does not, but the local option comes with its own eligibility conditions that you have to read rather than assume.

## Saving subtitles and recording audio are opt-in, and separate

The desktop version can write subtitles to a TXT file and can record the selected audio source to a WAV file, and the documentation is careful to say both features must be enabled manually. They are also independent of each other, so you can keep a transcript of what was said without keeping a recording of it, which is the sensible default when the content is a call. Turning both on by reflex is worth avoiding, since the WAV file is a copy of everything the selected source produced. The readme preview image shows a bilingual subtitle sample with an original illustration, and the demo document links to a captions and immersive mode demonstration using an earlier interface, which is a reminder that the overlay has changed shape since the early versions.

## A Tauri shell around a React front end, with a Rust core

The repository layout is a Tauri application with a TypeScript and React front end and a Rust side in src-tauri. The package manifest pins the Node requirement across three ranges, so a local checkout wants a recent Node:

```json
  "engines": {
    "node": "^20.19.0 || ^22.13.0 || >=24.0.0"
  },
```

The runtime dependencies are small and tell you what the front end does: the Tauri API and the process and updater plugins, lucide-react for icons, React and React DOM, and zustand for state. The updater plugin is why a Tauri desktop app can ship fixes to itself, and the process plugin is what lets the Rust side spawn and manage processes. The scripts show the split between the two halves, with a Vite dev server for the interface and a separate Tauri dev command that drives the desktop shell:

```json
  "scripts": {
    "dev": "vite --config config/vite.config.ts",
    "dev:app": "bash scripts/dev-app.sh --watch",
    "dev:ui": "bash scripts/dev-app.sh --watch --ui-only",
    "typecheck": "tsc -b",
```

There is also a production build script that verifies the application icons, type checks, runs the Vite build and then runs a check for a production debugger, which is a small sign of how the project treats shipping hygiene.

## Where Mimi is the wrong tool

The first wrong case is anything that must stay on the machine. With a cloud provider configured, the audio or the transcript leaves the device, and there is no general offline mode advertised beyond the specific local provider path the configuration guide describes. The second is scale and control. Mimi is a single-user desktop overlay for one stream, one recognition language and one translation language at a time, with no project structure, no user management and no published API for building a captioning service on top of it. If you need captions for a whole classroom, a conference stage or a video file library with per-speaker attribution, that is a different category of tool. The third is precise per-app capture on Linux, where the feature exists but depends on the audio server in use. The fourth is that the recognition and translation quality is entirely the provider's, so the app cannot be judged good or bad on output accuracy; it is a well-made client for a service you choose.

## Licence, releases and who has been fixing what

The project is MIT licensed, with the copyright line reading MIT (LICENSE) (c) 2026 yuxino, and a third party notices file sits at the repository root for the bundled dependencies. The release history shows a tight cadence, with v1.6.5 published on 2026-10-19, v1.6.4 earlier the same day and v1.6.3 on 2026-10-15, and the last push to the repository was on 2026-10-19. The contributor list is a good map of where the difficulty has been. The Android version came from one contributor, subtitle animation and Windows audio source improvements from another, Gemini continuous captions and connection rotation from a third, a Wayland floating window and control component sync fix plus Linux single playback stream capture from a fourth, and disabling thinking mode for DeepSeek real-time subtitle translation from a fifth. The Wayland fix and the Linux stream capture are the two that tell you the Linux path is the least settled part of the project.

## Conclusion

Adopt Mimi when you want translated subtitles over a specific app or stream, a lecture or a video, on a desktop where a browser tab cannot reach the audio, and when you are willing to point it at a speech and translation service. Do not adopt it for offline work unless the local provider path applies, for team-wide captioning, or for anything where sending raw audio to a cloud endpoint is not acceptable. Check first which recognition provider you will configure and what it costs, decide whether you want TXT subtitle saving and WAV recording turned on, and confirm the audio source selection your OS actually supports, since app-level capture and single-stream capture differ by platform. The last push was on 2026-10-19 and v1.6.5 was published the same day.

## FAQ

### How do I set up Mimi for the first time?

Add a speech service under Settings, then choose the audio source, recognition language and translation language in the voice and language section, then switch on live captions in the subtitles tab and grant the permissions the system requests. A configuration guide covers how to pick a service and where to get its key.

### Is Mimi free to use?

The application itself is free under the MIT licence, but the README notes that cloud services may charge. When you use cloud recognition or translation, the audio or the recognised text is sent to that service.

### Which operating systems does the Mimi desktop app support?

The desktop build covers macOS 13 and later on both Apple chip and Intel, Windows x64, and Linux x86_64. Android is provided as a separate application with its own install and usage documentation.

### Can Mimi capture audio from a single application?

On macOS and Windows 11 you can select a specific application as the source. On Linux the documented option is choosing an individual playback stream, and the repository also lists pipewire and pulseaudio among its topics.

### Can Mimi save subtitles and record the audio?

Yes, the desktop version can write subtitles to a TXT file and record the selected source to a WAV file. Both features must be turned on manually, and they are separate from each other.

## Sources

- [License: MIT](https://github.com/yuxino/Mimi/blob/main/LICENSE)
- [Project website](https://mimi.yuxino.cn)
- [README](https://github.com/yuxino/Mimi/blob/main/README.md)
- [Releases](https://github.com/yuxino/Mimi/releases)
- [yuxino/Mimi on GitHub](https://github.com/yuxino/Mimi)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/yuxino-mimi
