AnkiWeb
- Votes
- 0 (👍 0 · 👎 0)
- Updated
- 2026-10-29
- Anki versions
- 26.09.3~
- Languages
- Python, JSON
- Description language
- en
AnkiWeb addon 717309562
Adds optional local speech practice to mapped review cards, transcribing spoken answers offline and showing a conservative match or mismatch, while leaving Anki's own rating and scheduling controls untouched.
Open on AnkiWeb GitHub Ask about alternatives
active
| Min Anki | Max Anki | Updated |
|---|---|---|
| 26.09 | 26.09.3+ | 2026-10-29 |
Loading…
Lets you answer flashcards by typing, speaking, or handwriting, then has a chosen LLM grade the answer as correct, partly, or totally wrong and explain mistakes.
Provides fast, offline speech-to-text dictation for Anki, with spoken formatting commands and customizable voice macros for card creation and app control.
Enables fully hands-free Anki review by reading cards aloud, recognizing spoken answers, and scoring them with AI, OCR, and multi-language support.
Mimics Quizlet's Learn Mode in Anki with progressive multiple-choice, true/false, typing and matching phases, plus cloze support, text-to-speech, and per-note-type configuration.
Enables fully offline, hands-free deck review using spoken commands to reveal answers, grade cards, and undo actions, with configurable vocabulary, timing, and noise filtering.
Adds automatic text-to-speech playback and assigns TTS tags to selected fields per note type, without editing templates, supporting batch processing and language-specific voices.
Anki Speech Trainer adds optional, local speech practice to selected review cards. On a mapped card, click Speak, say your answer, and receive a conservative transcript match, mismatch, or uncertainty result.
It supports active language recall, not automatic grading. Anki's normal Again, Hard, Good, and Easy buttons remain the only scheduling controls.
On current Speaking templates, I can't speak right now opens Anki's native typed-answer input on the same card. That fallback does not use the microphone worker and works after sync in AnkiDroid and AnkiMobile.
Anki Desktop 26.09 or later
Debian 13 is the currently supported and tested platform
A working microphone
PortAudio:
sudo apt install libportaudio2
A separate local Python environment for the speech worker. Do not install these packages into Anki's bundled Python runtime:
python3 -m venv ~/anki-speech-trainer-worker
~/anki-speech-trainer-worker/bin/python -m pip install --upgrade pip
~/anki-speech-trainer-worker/bin/python -m pip install \
av==19.0.2 \
ctranslate2==4.8.4 \
faster-whisper==1.2.1 \
numpy==2.5.4 \
onnxruntime==1.31.1 \
sounddevice==0.5.6 \
webrtcvad-wheels==2.0.14
The first worker start may download the selected Whisper model. Once available locally, normal use can run offline.
worker_python to the absolute path of the worker environment's Python
executable.If upgrading from version 0.1.1 or earlier, choose Tools → Anki Speech Trainer →
Update Speaking templates…, inspect the preview, and confirm. It adds the
mobile typed fallback only to configured mappings scoped to a Speaking
template; it never alters notes, cards, review history, or scheduling.
New companion deck packages that already contain the current Speaking template
include the fallback immediately; older imported decks need this one-time
action.
Example mapping:
{
"notetype_name": "Italian Practice",
"card_template_name": "Speaking",
"language": "it",
"answer_field": "Target",
"alternatives_field": "SpokenAlternatives"
}
The interface is English by default. To use German, set this in the add-on configuration:
{
"ui_language": "de"
}
Use "en" to switch back to English. Restart Anki or reopen the reviewer after
changing the setting.
For separate Italian, Russian, French, or other language decks, first import
the neutral Language Practice.apkg companion package from the release assets.
Then choose Tools → Anki Speech Trainer → Set up language deck…, select the
language (for example Russian (ru)), review the preview, and confirm it.
The assistant creates a separate <Language> Practice note type, four decks
for Recognition, Speaking, Writing, and Listening, and the fixed speech mapping
for that language. It does not modify existing cards, decks, mappings, options,
or scheduling. A LanguageCode note field is not needed: the selected code is
stored once per created note type.
When speaking is unsuitable, open I can't speak right now, type the answer, then reveal and rate the same card normally. The typed comparison uses the single configured answer; spoken alternatives remain speech-only.
The transcript is learning feedback only. The add-on does not reveal answers, rate cards, alter FSRS, or change scheduling.
Audio is processed locally. Recordings and transcripts are kept only temporarily in memory and are not stored in your collection, notes, or user files. The add-on has no cloud service or telemetry.
Licensed under the GNU Affero General Public License, version 3 or later (AGPL-3.0-or-later).
Source code, installation guidance, and issue reports are available through the Support Page.
Anki Speech Trainer is a local Anki Desktop add-on for active speaking practice. On a configured review card, the learner can click Speak to record an answer. An external local worker transcribes it with Faster-Whisper and compares the transcript conservatively with the configured answer. Speaking templates also include a native typed-answer fallback for quiet situations and mobile review.
After updating from an earlier release, choose Tools → Anki Speech Trainer →
Update Speaking templates…, review the affected templates, and confirm the
one-time update. It changes only mapped Speaking templates and then syncs to
mobile clients.
The add-on does not grade cards, change FSRS or scheduling, persist recordings or transcripts, send data to a cloud service, or provide pronunciation scoring. Anki's normal Again, Hard, Good, and Easy controls remain the only scheduling controls.
Anki Desktop 26.09 or later on Debian 13.
The Debian runtime library libportaudio2 for microphone access:
sudo apt install libportaudio2
A local Python virtual environment for the audio and ML worker; never install worker packages into Anki's bundled Python environment.
A microphone and a configured note-type/answer-field mapping.
The required worker packages are pinned in requirements-worker.txt:
av, ctranslate2, faster-whisper, numpy, onnxruntime, sounddevice,
and webrtcvad-wheels. The first worker start may download the selected Whisper
model; later use can run offline from the local model cache. pytest, ruff,
and pip-audit in requirements-dev.txt are development-only and not required
to use the installed add-on.
Create the worker environment and install dependencies:
python3 -m venv .venv
.venv/bin/python -m pip install -r requirements-worker.txt
Run just build-addon. Install the generated file from dist/ using
Tools → Add-ons → Install from file…, then restart Anki.
In the add-on configuration, set worker_python to the absolute path of
.venv/bin/python. Add a valid notetype_mappings entry. The default
configuration is deliberately inactive until a mapping exists.
The interface is English by default. Set ui_language to "de" in the
same configuration to use German; "en" switches back to English.
Open a mapped review card, click Speak, speak the answer, and read the transcript/match indication. Choose the regular Anki rating yourself.
For an existing legacy Italian Practice deck, import its optional .apkg and
configure the mapping for the exact Speaking template, Target answer field,
and SpokenAlternatives field. The normal review flow and all non-mapped cards
remain unchanged.
For every new language, use the neutral Language Practice.apkg foundation
package from templates/language-practice/ (or the matching release asset):
Language Practice.apkg once.The assistant creates, for example, Russian Practice and the four decks
Russian::Recognition, Russian::Speaking, Russian::Writing, and
Russian::Listening. It also adds the fixed ru speech mapping for that note
type. It never changes an existing deck, note, card, scheduler setting, or
mapping. See docs/18-LANGUAGE-PRACTICE.md
for the field schema and existing-Italian migration guidance.
For a direct generator creating a Russian deck, use the companion
templates/russian-practice/Russian Practice.apkg foundation package. It
already contains the Russian Practice note type; the learner must still add
its separate Speaking mapping with language code ru. See
docs/17-RUSSIAN-PRACTICE.md.
Always test first with a backed-up disposable collection. The add-on and its configuration are global to Anki, not isolated per collection profile.
just check
just build-addon
just check runs Ruff, the deterministic tests, and the package build. The
release archive deliberately excludes .venv, model weights, caches, tests,
and Anki-generated meta.json, and includes the project LICENSE.
Before a public release, install the development requirements and run
just audit-deps. See the
privacy, security, and release guide
for model provenance and the complete publication checklist.
Read docs/README.md for the documentation index. The most useful operational guides are:
docs/09-SETUP-DEBIAN13.md — worker and development setupdocs/15-ITALIAN-PRACTICE.md — optional note-type packagedocs/18-LANGUAGE-PRACTICE.md — create separate language decksdocs/16-DISTRIBUTION.md — archive build, installation, and configurationThe microphone widget has no AnkiDroid or iOS support in V1. The synchronized Speaking card template does provide its native typed-answer fallback on those clients. There is no automatic rating, cloud STT, or stored audio.
Licensed under the GNU Affero General Public License, version 3 or later (AGPL-3.0-or-later). See LICENSE.