Anki Speech Trainer – Local speaking practice

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.
AI-generated summary; may contain mistakes.

review-flowdeck-managementcard-templatesquizmobile-compatible

Open on AnkiWeb GitHub Ask about alternatives

AnkiWeb

Votes
0 (👍 0 · 👎 0)
Updated
2026-10-29
Anki versions
26.09.3~
Languages
Python, JSON
Description language
en

Maintenance

active

  • Last update or commit: 2026-10-29 (3 days before the snapshot).
  • Test files: 11.
  • Commits in the last year: 26.
  • Issues: 0 open, 0 closed.
  • Pull requests: 0 open, 0 merged.

Will it work on my Anki?

Version branches
Min AnkiMax AnkiUpdated
26.0926.09.3+2026-10-29
History across monthly snapshots

Loading…

Similar addons

Anki AI Grader

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.

aischedulingreview-flowquiz

1 votes 21% approval 👍 1 · 👎 0 ⭐ 0 Anki 2.1.1~ Updated 2026-10-11
Hands-Free-Anki

Enables fully hands-free Anki review by reading cards aloud, recognizing spoken answers, and scoring them with AI, OCR, and multi-language support.

aischedulingreview-flowaccessibility

1 votes 0% approval 👍 0 · 👎 1 ⭐ 5 Anki 2.1.1~ Updated 2026-02-06
Quizlet Learn Mode Mimic

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.

review-flowgamificationclozequiz

4 votes 51% approval 👍 4 · 👎 0 Anki 2.1.1~ Updated 2026-07-20
Hands-Free Voice Review

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.

review-flowaccessibility

3 votes 21% approval 👍 2 · 👎 1 ⭐ 0 Anki 25.09~ Updated 2026-07-03

Description

Local speaking practice for Anki Desktop

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.

Requirements

  • 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.

First-time setup

  1. Install the add-on and restart Anki.
  2. Open Tools → Add-ons → Anki Speech Trainer → Config.
  3. Set worker_python to the absolute path of the worker environment's Python executable.
  4. Add a note-type mapping for the card template and answer field you want to practise.
  5. Close and reopen the reviewer, then test one mapped card.

Update existing Speaking templates

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"
}

Interface language

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.

Create a language deck

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.

Daily workflow

  1. Review a mapped speaking card normally.
  2. Click Speak.
  3. Speak your answer and pause.
  4. Read the transcript and match result.
  5. Choose Again, Hard, Good, or Easy yourself.

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.

Privacy

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.

License

Licensed under the GNU Affero General Public License, version 3 or later (AGPL-3.0-or-later).

Source code and issues

Source code, installation guidance, and issue reports are available through the Support Page.

README

Anki Speech Trainer

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.

Requirements

  • 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.

Install and use

  1. Create the worker environment and install dependencies:

    python3 -m venv .venv
    .venv/bin/python -m pip install -r requirements-worker.txt
    
  2. Run just build-addon. Install the generated file from dist/ using Tools → Add-ons → Install from file…, then restart Anki.

  3. 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.

  4. 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.

Create a separate language deck

For every new language, use the neutral Language Practice.apkg foundation package from templates/language-practice/ (or the matching release asset):

  1. In Anki, choose File → Import and import Language Practice.apkg once.
  2. Choose Tools → Anki Speech Trainer → Set up language deck….
  3. Select a language such as Italian (it) or Russian (ru), or enter a custom display name and a two- or three-letter Whisper code.
  4. Review the preview and confirm it.

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.

Development

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.

Documentation

Read docs/README.md for the documentation index. The most useful operational guides are:

  • docs/09-SETUP-DEBIAN13.md — worker and development setup
  • docs/15-ITALIAN-PRACTICE.md — optional note-type package
  • docs/18-LANGUAGE-PRACTICE.md — create separate language decks
  • docs/16-DISTRIBUTION.md — archive build, installation, and configuration

Limits

The 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.

License

Licensed under the GNU Affero General Public License, version 3 or later (AGPL-3.0-or-later). See LICENSE.