JoyVoice
v2.5.5 Windows 10 & 11 · MIT licensed

Press F8. Speak. It pastes.

JoyVoice is a floating-mic voice typing and speech translation app for Windows. Dictate in 10 languages, including বাংলা and English, and get clean text pasted into whatever app your cursor is in. No window switching, no copy and paste.

  • 10 languages
  • Auto-detect
  • No GPU needed
  • Free & offline mode
  • Clipboard-safe paste

You say · Banglaআমি কাল সকালে মিটিং এ যোগ দিতে পারবো না

JoyVoice pastes · EnglishI won’t be able to jointhe meeting tomorrow morning.

Pasted clipboard restored

বাংলাEnglishРусскийहिन्दीEspañolالعربية中文日本語FrançaisPortuguês
Speak, don’t type

Say it in your language. Get it in yours.

Switch from Bangla to Russian to Chinese mid-conversation. Auto-detect means you never touch a language setting, or lock a source language if you prefer.

বাংলা You say

আমি কাল সকালে মিটিং এ যোগ দিতে পারবো না

JoyVoice pastesI won't be able to join the meeting tomorrow morning.
Русский You say

Я не могу присоединиться к встрече завтра утром

JoyVoice pastesI can't join the meeting tomorrow morning.
中文 You say

我明天早上不能参加会议

JoyVoice pastesI can't attend the meeting tomorrow morning.
العربية You say

لا أستطيع الانضمام إلى الاجتماع صباح الغد

JoyVoice pastesI can't join the meeting tomorrow morning.

Examples are taken from the project README. Output depends on the speech engine, the model you configure and your recording.

How it works

From microphone to pasted text in five steps

Press F8, speak, press F8 again. The pipeline runs in the background and pastes where your cursor is.

JoyVoice pipelineMicrophone audio is converted to PCM16, transcribed, translated and styled, then pasted into the focused app. A history store keeps the text before paste, and Free Mode swaps cloud transcription for local Whisper. Microphone Any mic, WASAPIsounddevice capture 16 kHz mono float32 Convert float32 to int16 PCMready for the cloud < 50 ms Speech to text Google Web Speech ASRor native audio route auto-detect Translate + style Gemini text modeltranscript salvage any of 10 targets Paste Ctrl+V, retry x3clipboard restored ~300 ms paste delay FREE & OFFLINE MODElocal faster-whisper replaces cloud ASR HISTORY STOREtext is saved before paste is attemptedJoyVoice pipeline (vertical)Microphone audio is converted to PCM16, transcribed, translated and styled, then pasted into the focused app. A history store keeps the text before paste, and Free Mode swaps cloud transcription for local Whisper. MicrophoneAny mic, WASAPIsounddevice capture16 kHz mono float32 Convertfloat32 to int16 PCMready for the cloud< 50 ms Speech to textGoogle Web Speech ASRor native audio routeauto-detect Translate + styleGemini text modeltranscript salvageany of 10 targets PasteCtrl+V, retry x3clipboard restored~300 ms paste delayFREE & OFFLINE MODElocal faster-whisper replaces cloud ASRHISTORY STOREtext is saved before paste is attempted
  1. RecordYour mic, captured at 16 kHz mono float32 through sounddevice.
  2. Convertfloat32 becomes signed int16 PCM. < 50 ms
  3. TranscribeGoogle Web Speech ASR, or the optional native-audio route that transcribes and translates in one request.
  4. Translate + styleA Gemini text model translates and applies your text style. If cloud translation fails, the transcript is salvaged.
  5. PasteClipboard-safe Ctrl+V with retry, then your clipboard is restored. ~300 ms

Total time varies with recording length and network conditions. The README cites roughly 1–2 seconds for short audio on the optional native gateway route; longer recordings take longer. JoyVoice is batch dictation: it processes when you stop recording.

Features

Built for people who talk across languages

Everything below is in the app today, taken from the JoyVoice README and changelog.

10 languages, auto-detect

Bangla, English, Russian, Hindi, Spanish, Arabic, Chinese, Japanese, French and Portuguese. Speak naturally and JoyVoice detects the language, or lock a source language if you prefer.

Translate to any of the 10

Pick any supported language as the target, not only English. Output modes: original only, translation only, or both together. Labels adapt to your language pair.

Text styles

Clean English, raw transcript, prompt for AI, professional message and Facebook post. The AI styles use a text model and need Cloud mode.

Floating glass widget

A translucent, always-on-top mic pill with a live 5-bar waveform, recording timer, language badge (like BN to EN), live preview and a confidence bar.

Clipboard-safe paste

Saves your clipboard, pastes the result with Ctrl+V (3 attempts, exponential backoff, 300 ms default delay), then restores what you had copied.

History before paste

Every result is written to local history before paste is attempted, so a failed paste never costs you the text. Right-click the mic to re-copy your last 5 dictations.

Free & Offline mode

No API key, no cloud. A local faster-whisper model (Tiny, Base or Small) downloads once, then works fully offline. Bangla to English translation is built in.

Spoken language override

Name the target at the end of a sentence (for example saying a language name, or a Bangla phrase like “বাংলায় দাও”) to switch the target for that one dictation.

Global hotkeys

F8 toggles recording (or hold-to-record), Ctrl+Shift+L cycles the language pair, Esc cancels mid-record or mid-transcribe.

Bring your own endpoint

Set the OpenAI-compatible base URL, API key and audio/text models in Settings, API. Fetch models and Test connection buttons included. No environment variables required.

Self-healing

A 2-second visibility watchdog restores the widget if Windows hides it, and a 5-second hotkey health check re-registers F8 after sleep, wake or UAC changes.

Safe by default

In v2.5.5, if English is required and translation fails, JoyVoice pastes nothing untranslated and saves the transcript to History. Logs redact secrets and keep only short previews.

Also:Phrase replacements tableBeeps for start, stop, done and errorLaunch on startupMicrophone pickerSearchable history listTray icon
Two engines, one app

Cloud when you want it. Offline when you don’t.

Switch engines in Settings. Cloud mode is the default; the single JoyVoice.exe includes both.

Cloud mode

Default · needs an API key

  • 10 languages with auto-detect and translation to any of 10 targets
  • Google Web Speech ASR, plus an optional native-audio route for transcript and translation in one request
  • Gemini text model for translation and the AI text styles
  • OpenAI-compatible endpoint, configured in Settings, API
  • No GPU, no CUDA, no PyTorch

Free & Offline mode

No API key · no cloud calls after setup

  • Local Whisper (faster-whisper) on your CPU, or GPU if available
  • One-click Set up Free Mode downloads the model once; then it works offline
  • Choose Tiny, Base or Small (Small is the default)
  • Built-in Test button to confirm offline transcription
  • Built-in Bangla to English translation via Whisper’s translate task
  • Other translation targets are transcription-only for now; AI text styles need Cloud mode

Planned, not shipped: offline multilingual translation (NLLB) and offline AI text styles (Ollama) for Free Mode.

Languages

Ten languages, any direction

Each one works as a source (or via auto-detect) and as a translation target. Bangla gets first-class treatment: Bangladeshi Bengali with English code-switching is handled explicitly in the transcription prompt.

বাংলাBanglabn
EnglishEnglishen
РусскийRussianru
हिन्दीHindihi
EspañolSpanishes
العربيةArabicar
中文Chinesezh
日本語Japaneseja
FrançaisFrenchfr
PortuguêsPortuguesept
AutoDetect languageauto
Reliability

Designed to never lose your words

Voice typing is only useful if you can trust it. These safeguards are in the app.

Widget states

The floating widget changes colour with each state: gray when idle, an orange pulse while recording, blue while transcribing, a green pop when pasted, and red on error. Audio beeps mark start, stop, success and error, so you don’t have to look.

Long recordings are transcribed as ordered chunks. If a later chunk fails, earlier results are kept and usable partial speech is saved to History for review instead of being dropped.
  • 1st
    History before pasteText is saved to local history first, then paste is attempted.
  • ×3
    Paste retryThree attempts with exponential backoff handle focus-switch race conditions.
  • 2 s
    Visibility watchdogRestores the widget if Windows hides it (virtual desktops, UAC, sleep or wake).
  • 5 s
    Hotkey health checkVerifies the global hotkey and re-registers it when needed.
Preview

Always on top, never in the way

Illustration of a code editor with the circular JoyVoice microphone button floating in the bottom-right corner
Illustration from the repo: the floating mic sits over your workspace.
Before and after illustration: a raw transcript with filler words and stutters becomes clean pasted English
Illustration from the repo: rule-based cleanup removes fillers and stutters, then the result is pasted.
Quick start

Up and dictating in minutes

Windows 10 or 11 only. Grab the prebuilt app or run from source.

Download the EXE recommended

A single JoyVoice.exe (about 173 MB) with no Python or venv. It supports both Cloud and Free & Offline mode.

Open GitHub Releases
  1. Download and double-click JoyVoice.exe. The floating mic appears.
  2. Cloud: add your key in Settings, API (stored locally) or set JV_API_KEY.
  3. Free & Offline: open Settings, Free Mode and click Set up Free Mode once.
  4. Focus any app, press F8, speak, press F8 again.

Run from source

Windows only. Uses Python 3.11 and the project’s requirements.txt.

git clone https://github.com/MHJoy99/joyvoice.git
cd joyvoice
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt
set JV_API_KEY=your_bdx_market_api_key
python app\main.py

Prefer a launcher? Double-click run.bat in the repo, or make a desktop shortcut to it.

Heads up: cloud mode sends your recorded speech and transcript text to the services you configure. Use Free & Offline mode if that matters for your use, and respect the terms of the services you connect.

Configuration

Settings that matter

Stored at %APPDATA%\JoyVoice\settings.json and editable from the Settings window (right-click the mic, or use the tray icon).

KeyDefaultWhat it does
languageautoSource language: auto-detect, or lock to bn, ru, zh and so on
target_languageenTranslation target: any of the 10 supported codes
output_modetranslationoriginal, translation or both
text_styleclean_englishraw, clean_english, prompt_for_ai, professional_message or facebook_post
hotkeyF8Global toggle key (presets or a custom combination)
hotkey_modetoggletoggle, or hold to record while the key is down
paste_delay_ms300Delay before Ctrl+V
restore_clipboardtrueRestore your original clipboard after pasting
engine_modecloudcloud (uses an API key) or free (local models, no API key)
free_asr_modelsmallFree Mode local Whisper model: tiny, base or small

Settings tabs: Output, General, API, Free Mode, Hotkey, Audio, Paste, Replacements and History. Config precedence for API values: settings.json, then environment variable, then built-in default.

Roadmap

What’s planned

Everything on this list is future work from the README roadmap. None of it is shipped yet.

Planned · near term

Make it feel instant

  • Faster-model bake-off on real Bangla and English clips
  • Sentence-stream pipeline that translates while you speak
  • Local usage dashboard
Planned · medium term

Smarter than a dictation box

  • Context-aware style per focused app
  • Personal lexicon for names and brands
  • macOS and Linux backends
  • Plugin outputs
Planned · long term

The hard problems

  • Continuous partial results while you talk
  • Multi-speaker meeting mode
  • An offline-capable dual path
FAQ

Questions people ask

What is JoyVoice?

JoyVoice is a free, open-source (MIT) floating-microphone voice typing and speech translation app for Windows 10 and 11. You press F8, speak, press F8 again, and the cleaned, optionally translated text is pasted into whichever app has your cursor. It supports 10 languages: Bangla, English, Russian, Hindi, Spanish, Arabic, Chinese, Japanese, French and Portuguese.

How do I dictate Bangla or Banglish into English on Windows?

Press F8 and speak naturally in Bengali or mixed Bengali and English. With the default auto-detect source and English target, JoyVoice detects the language, translates, and pastes clean English with Ctrl+V into the app under your cursor. The transcription prompt explicitly handles Bangladeshi Bengali with English code-switching, so you do not switch languages manually.

Do I need a GPU or an API key?

You do not need a GPU. Cloud mode uses cloud services for speech and translation and needs no CUDA or PyTorch. It does need an API key for an OpenAI-compatible endpoint, entered in Settings, API, or set as the JV_API_KEY environment variable. Free and Offline mode needs no API key at all.

Can JoyVoice work offline?

Yes, in Free and Offline mode. Click Set up Free Mode in Settings, Free Mode once to download a local Whisper model (Tiny, Base or Small; Small is the default) into %LOCALAPPDATA%\JoyVoice\models. After that it runs without internet. Bangla to English translation is built in offline through Whisper’s translate task. Other translation targets are transcription-only in Free Mode for now, and the AI text styles need Cloud mode.

Which languages does JoyVoice support?

Ten: Bangla, English, Russian, Hindi, Spanish, Arabic, Chinese, Japanese, French and Portuguese. Any of the 10 can be the spoken source (or use auto-detect) and any of the 10 can be the translation target. Press Ctrl+Shift+L to switch language pair without opening Settings.

Will JoyVoice lose my words if a paste or a long recording fails?

It is designed not to. Text is saved to the local history before JoyVoice tries to paste, so it survives a failed paste. For long recordings, if one chunk fails after earlier chunks succeeded, the translated chunks so far are kept instead of dropping the whole dictation, and usable partial speech is preserved in history for review.

Does JoyVoice overwrite my clipboard?

No. It saves your current clipboard, pastes the result with Ctrl+V (up to 3 attempts with exponential backoff), and then restores your original clipboard. Restoring is on by default through the restore_clipboard setting.

Is my dictated text or API key written to a log file?

Not in the clear. Crash reports store only the exception type, the message length and redacted stack frames. Log lines scrub keys and bearer tokens to [REDACTED], show transcripts only as 80-character previews, and never log raw audio bytes. Your API key lives only in local settings or in the JV_API_KEY environment variable.

What leaves my computer in cloud mode?

In cloud mode the recorded speech is sent for transcription, to the Google Web Speech service or to the optional native-audio route of your configured gateway, and the transcript text is sent to the configured text model for translation and styling. The default gateway is https://gpt.bdx.market/v1 and you can point JoyVoice at any OpenAI-compatible base URL in Settings, API. Free and Offline mode makes no cloud calls after the one-time model download.

Does JoyVoice run on macOS or Linux?

Not today. JoyVoice is Windows-only because global hotkeys, clipboard automation and audio capture are tied to Win32 APIs. macOS and Linux hotkey and paste backends are on the roadmap as planned work, not shipped.

Stop typing. Start talking.

Free, open source and MIT licensed. Download JoyVoice and press F8.