Open Source Developer Tools 123 vues

phuc-nt/my-translator: Real-Time Speech Translation with Zero Server

B
Bright Coding
Auteur
phuc-nt/my-translator: Real-Time Speech Translation with Zero Server

phuc-nt/my-translator: Real-Time Speech Translation with Zero Server

Real-time speech translation usually means routing your audio through cloud pipelines you don't control—paying for compute you can't audit, trusting servers you can't inspect. phuc-nt/my-translator takes a different path: a Tauri-based desktop app that captures system or microphone audio, streams it directly to translation APIs you configure, and renders translated text in a minimal floating overlay. No intermediary server. No telemetry. Your keys, your audio, your machine.

Built in Python↗ Bright Coding Blog and Rust via Tauri 2, the project has attracted 1,205 GitHub stars and 389 forks since its launch, with steady development through its most recent commit on July 11, 2026. It ships under the MIT License and supports macOS (Apple Silicon and Intel) and Windows 10/11. This article breaks down how it works, what it actually delivers, and where it fits in a developer's toolkit.


What is phuc-nt/my-translator?

phuc-nt/my-translator is an open-source desktop application for real-time speech-to-text translation, maintained by phuc-nt on GitHub. It sits at the intersection of audio capture, machine translation, and desktop GUI development—a category that includes commercial tools like Otter.ai or Zoom's live transcription, but with a critical architectural difference: zero server-side processing by the application itself.

The app is built on Tauri 2, which pairs a Rust backend with a WebView frontend. This choice matters for two reasons. First, Tauri produces smaller, faster binaries than Electron while maintaining native OS integration. Second, Rust's memory safety and performance characteristics make it suitable for real-time audio pipelines. The frontend handles overlay rendering; the backend manages audio capture, WebSocket streams to translation providers, and local file I/O for transcript storage.

Audio capture uses platform-native APIs: ScreenCaptureKit on macOS for system audio, WASAPI on Windows, and cpal cross-platform for microphone input. The 16kHz PCM stream fans out to one of four translation engines:

Engine Output Latency Cost
Soniox Text ~2s ~$0.12/hr
OpenAI Realtime Text + native voice ~2s ~$4/hr
Qwen LiveTranslate Flash Text only ~4s Free preview
Local MLX Text ~10s Free (Apple Silicon only)

The project is relevant now because real-time translation is moving from batch/cloud to streaming/edge, but most solutions still require trusting a vendor's infrastructure. phuc-nt/my-translator's "no server" model addresses this directly—though it shifts operational complexity to the user (API key management, provider selection, cost monitoring).


Key Features

Four Translation Engines with Explicit Trade-offs

The app does not hide engine differences behind a unified "AI" label. Each backend exposes distinct latency, cost, and capability profiles. Soniox offers the lowest-cost real-time text translation across 70+ source languages. OpenAI Realtime provides the highest-quality output with native synthesized voice, but at ~33x the hourly cost. Qwen LiveTranslate Flash runs on Alibaba's free preview tier with 60-language support, though it is text-only and requires explicit source language selection. Local MLX enables fully offline operation for Japanese, English, Chinese, Korean → Vietnamese/English, but demands Apple Silicon hardware and tolerates ~10s latency.

Dual-Panel Display with Smart Scroll

Two display modes serve different contexts: Single shows translation text only for minimal distraction; Dual presents source and translation side-by-side with independent scrolling. Auto-scroll activates only when the user is at the bottom—scrolling up to review history does not trigger jumps.

Two-Way Translation for Bilingual Meetings

Beyond one-way source→target translation, the app supports two-way mode: Language A ↔ Language B with automatic speaker detection. This targets video call scenarios (Zoom, Google Meet, MS Teams) where both parties speak different languages. TTS narration auto-disables in this mode to prevent feedback loops.

Custom Translation Terms

Domain-specific vocabulary can be overridden via a terms list:

Original sin = Tội nguyên tổ
Christ = Kitô
Pneumonia = Viêm phổi

This addresses a genuine pain point in specialized fields—religious, medical, technical—where generic translation models fail on proper nouns or established terminology.

TTS with Three Providers

Text-to-speech narration in one-way mode supports Edge TTS (free, neural), Google Chirp 3 HD (free tier: 1M chars/month), and ElevenLabs (premium, ~$5/month+). Edge TTS is the default; quality and Vietnamese voice availability vary by provider. Speed control ranges 0.5x–2.0x for Edge and Google.

Privacy-First Architecture

No account creation. No analytics. No telemetry. API keys store locally. Transcripts save as .md files per session. The app connects directly to configured APIs with no relay.


Use Cases

1. Multilingual Video Calls with Real-Time Captions

A developer working in a distributed team can set Audio Source: Both (System + Mic), enable Two-way Translation, and run Vietnamese ↔ Japanese during a Google Meet call. The overlay floats above other windows; transcripts persist as local Markdown↗ Smart Converter files for later reference. This replaces manual note-taking or post-call translation services.

2. Live Presentation Accessibility

Conference speakers presenting in non-native languages can use Single-panel mode with 140px maximum font size for audience-visible translation. The smart scroll ensures the speaker controls pacing, not the auto-advance algorithm. [INTERNAL_LINK: accessibility-tools-for-developers]

3. Offline Translation for Sensitive Content

Journalists, researchers, or legal professionals handling confidential audio can run Local MLX mode on Apple Silicon Macs. The ~10s latency is acceptable for pre-recorded material review where cloud exposure is unacceptable. JA/EN/ZH/KO → VI/EN coverage targets East Asian–Southeast Asian language pairs.

4. Domain-Specific Live Translation

Medical interpreters or religious translators can preload custom term mappings, ensuring consistent rendering of specialized vocabulary across sessions. The .md transcript output integrates with documentation workflows.

5. Cost-Conscious Continuous Translation

For all-day listening (podcasts, streams, background media), Soniox at ~$0.12/hr or Edge TTS (free) keeps costs predictable versus OpenAI Realtime's ~$4/hr. Users switch engines per context rather than accepting a one-size-fits-all pricing model.


Installation & Setup

Prebuilt binaries are available from the latest release. Select the matching artifact:

Platform File
macOS Apple Silicon (M1/M2/M3/M4) MyTranslator_<ver>_aarch64.dmg
macOS Intel (pre-2020) MyTranslator_<ver>_x64.dmg
Windows 10/11 MyTranslator_<ver>_x64-setup.exe

Note: The .app.tar.gz, .sig, and latest.json files are for the built-in auto-updater—do not download these manually.

To verify your Mac architecture: Apple menu → About This Mac → Chip. Apple M-series → aarch64; Intel → x64. Most Macs from late 2020 onward use Apple Silicon.

The macOS build is signed and notarized. Auto-update checks and installs from Settings.

Build from Source

For developers modifying the app or running on unsupported configurations:

# Clone the repository
git clone https://github.com/phuc-nt/my-translator.git

# Enter project directory
cd my-translator

# Install Node.js dependencies
npm install

# Build Tauri application for production
npm run tauri build

Requirements:

Advertisement
  • Rust (stable toolchain)
  • Node.js 18+
  • macOS 13+ or Windows 10+

The npm run tauri build command compiles the Rust backend, bundles the WebView frontend, and produces platform-native artifacts in src-tauri/target/release/bundle/.


Real Code Examples

The README provides one explicit code block for source builds. Below is the exact command sequence with explanatory context.

Building from Source

git clone https://github.com/phuc-nt/my-translator.git
cd my-translator
npm install
npm run tauri build

What happens here: git clone fetches the full repository including Rust source under src-tauri/, web assets, and documentation. npm install resolves the Node.js dependency tree defined in package.json—likely including @tauri-apps/cli for build orchestration and frontend framework packages. npm run tauri build invokes the Tauri CLI, which:

  1. Compiles the Rust crate with cargo build --release
  2. Bundles the compiled binary with the WebView frontend assets
  3. Generates .dmg (macOS) or .exe installer (Windows) via platform-specific tooling

The Rust backend handles audio stream routing, WebSocket management for cloud translation APIs, and OS-level windowing for the overlay. The WebView layer renders the dual-panel UI and processes user interactions.

Custom Translation Terms Format

While not a code snippet per se, the README documents the terms file syntax:

Original sin = Tội nguyên tổ
Christ = Kitô
Pneumonia = Viêm phổi

Implementation note: These mappings are likely loaded at runtime into a dictionary structure passed to translation engines as prompt context or post-processing replacements. The exact mechanism depends on engine API capabilities—Soniox and OpenAI may accept term injection via system prompts, while local MLX could apply string replacement after generation.

The README does not currently expose additional configuration file formats, API client code, or plugin interfaces. This reflects the project's focus on end-user application packaging rather than library/embeddable use.


Advanced Usage & Best Practices

Engine Selection by Scenario

Match engine to context rather than defaulting to the newest option. OpenAI Realtime excels for high-stakes conversations where voice naturalness matters; its $4/hr cost is justified for short, critical meetings. Soniox is the workhorse for long-duration listening. Qwen is viable for experimentation or non-English-centric pairs before committing to paid tiers. Local MLX is mandatory for air-gapped environments.

Audio Source Configuration for Calls

For two-way translation in video calls, "Both" (System + Mic) is required to capture remote audio and local speech. However, this doubles audio stream processing—expect higher CPU usage and verify that your selected engine handles mixed-source input correctly. Qwen's server-side VAD manages this; Soniox and OpenAI behavior depends on their respective API implementations.

API Key Hygiene

The app stores keys locally, but rotation discipline remains the user's responsibility. For shared machines, consider whether key exposure in plaintext local storage meets your threat model. The MIT license provides no warranty; security auditing of the key storage mechanism (likely OS keychain via Tauri's tauri-plugin-stronghold or similar) is advisable for enterprise deployments.

TTS Feedback Loop Prevention

The app automatically disables TTS in two-way mode, but manual override risks creating feedback: TTS output → mic capture → re-translation of your own translation. If experimenting with custom audio routing, monitor for this condition.


Comparison with Alternatives

phuc-nt/my-translator OBS + Live Caption Plugins Microsoft Translator (Edge)
Architecture Desktop app, direct API calls Streaming software extension Browser-integrated
Privacy No server; your keys Depends on plugin Microsoft cloud
Overlay Native floating window Scene source within OBS Web page only
Engine choice 4 (incl. local) 1–2 (usually cloud STT) 1 (Microsoft)
Two-way Yes, with auto-detect No No
Offline MLX (Apple Silicon) No No
Cost control Direct API billing Varies Free tier, limits
Setup complexity Medium (API keys) Low–Medium Low

OBS + caption plugins (e.g., closed captioning via Web Captioner) offer simpler setup for streamers already in the OBS ecosystem, but lack translation, two-way support, and engine flexibility. Microsoft Translator in Edge provides frictionless webpage translation but no system audio capture, no overlay for non-browser content, and no offline operation.

phuc-nt/my-translator trades setup simplicity for architectural control. It is not the fastest path to "works out of box" but offers transparency that black-box alternatives cannot match.


FAQ

Q: Does phuc-nt/my-translator work on Linux? A: No. The README specifies macOS 13+ and Windows 10+ only.

Q: Can I use it without any API keys? A: Only Local MLX mode on Apple Silicon requires no external API. All cloud engines need provider keys.

Q: Is the macOS build signed? A: Yes, signed and notarized per the README.

Q: What languages does offline mode support? A: JA/EN/ZH/KO source → VI/EN target, Apple Silicon only.

Q: Does two-way mode work with all engines? A: No. OpenAI Realtime and Qwen disable two-way mode and custom TTS.

Q: How are transcripts stored? A: As .md files locally, per session. No cloud sync.

Q: What's the actual license? A: MIT License, confirmed in repo stats and README badge.


Conclusion

phuc-nt/my-translator fills a specific niche: developers and technical users who need real-time speech translation without surrendering audio data to opaque infrastructure. Its four-engine architecture with explicit cost/latency trade-offs, privacy-first local execution path, and native desktop overlay distinguish it from browser-based or fully-managed alternatives.

The tool is best suited for: users comfortable managing API keys and provider accounts; Apple Silicon owners needing offline capability; and professionals in specialized domains requiring custom terminology. It is less ideal for those seeking zero-configuration operation or Linux support.

With 1,205 stars, active maintenance through mid-2026, and a permissive MIT license, the project merits evaluation if your translation workflow demands transparency and control. Download prebuilt binaries or build from source at https://github.com/phuc-nt/my-translator.

Advertisement

Commentaires 0

Aucun commentaire pour l'instant. Soyez le premier à réagir !

Laisser un commentaire

Advertisement