# wav2letter++: what the repository still contains after the move into Flashlight

> wav2letter++ was FAIR's C++ end-to-end ASR toolkit. The README now says development happens in Flashlight, so the useful question is what this repository still gives you: recipes, data preparation, and pre-trained models.

**flashlight/wav2letter** — Facebook AI Research's Automatic Speech Recognition Toolkit 

- Repository: https://github.com/flashlight/wav2letter
- Website: https://github.com/facebookresearch/wav2letter/wiki
- Stars: 6,437 · Forks: 987
- Language: C++
- License: NOASSERTION
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/flashlight-wav2letter

## What wav2letter++ was built to do, and who the repository still serves

The README describes wav2letter++ as an end-to-end automatic speech recognition toolkit, and the arXiv paper it points to is titled around the same idea: train a single network that maps audio to text, without a separate pronunciation lexicon or a hand-built decoder graph. That framing is the reason the project exists. Classical pipelines assemble an acoustic model, a lexicon and a language model into a search graph; wav2letter++ puts the acoustic modelling inside one trainable system written in C++.

The audience has narrowed since the initial release. The README's first block is an important note stating that wav2letter has been moved and consolidated into Flashlight in the ASR application, and that future development will occur in Flashlight. That single paragraph changes the reader's decision. This repository is no longer the place where new features land. What it still holds is the research record: recipes that reproduce five named papers, pre-trained models, and the data preparation directory those recipes depend on. If you are trying to reproduce a published result, or you want to read a C++ ASR training loop end to end, this is the material. If you want a toolkit to build a product on, the README sends you elsewhere.

## How the pieces fit: recipes, data preparation and a pinned Flashlight

The repository layout is thin at the top level: CMakeLists.txt, a data directory, a recipes directory, and CI configuration. There is no src directory in the listing, because the training and decoding code lives in Flashlight. What this repository contributes is the experiment layer on top of it.

The recipes directory contains one folder per paper, and the README names them: streaming_convnets, sota/2019, self_training, lexicon_free and seq2seq_tds. Each folder corresponds to a published result, and the README states that pre-trained models are included alongside the recipes. The data directory is where corpus preparation for training and evaluation lives, so a recipe is only runnable once the matching dataset has been prepared through those scripts.

The constraint that governs everything is stated plainly: all results reproduction must use Flashlight <= 0.3.2 for exact reproducibility, and building the recipes requires the 0.3 branch of Flashlight with the ASR application. This is a hard pin, not a suggestion. The reason is structural. Once training code moved into Flashlight and continued to evolve, the recipes here stopped tracking it. A newer Flashlight may compile against these recipes or may not, but either way the README does not promise that the numbers come out the same. Anyone treating this repository as a current toolkit is reading against the README's own instruction.

## Building the recipes: install Flashlight 0.3 first

The README gives no standalone install for wav2letter++ itself. The build instructions are for the recipes, and they begin with a prerequisite: install Flashlight from the 0.3 branch with the ASR application. The README states that using the 0.3 branch is required. Once that is in place, the repository builds with CMake from a build directory.

```bash
mkdir build && cd build
cmake .. && make -j8
```

Running this from the repository root produces a build directory and compiles the recipe targets. If Flashlight or ArrayFire were installed under a custom CMAKE_INSTALL_PREFIX, the README says to point CMake at their package config files instead of relying on the default search path.

```bash
-Dflashlight_DIR=[PREFIX]/usr/share/flashlight/cmake/ -DArrayFire_DIR=[PREFIX]/usr/share/ArrayFire/cmake
```

Those two flags are passed when running cmake, replacing [PREFIX] with the install prefix you used. If CMake reports that it cannot find flashlight or ArrayFire, this is the first thing to check. Note what is absent: the README does not document a rollback path, a supported CMake version, or a prebuilt binary. You are compiling a research tree against a pinned dependency, and the wiki linked from the repository homepage is where the project says further information lives.

## The pre-consolidation v0.2 release and the wav2letter-lua branch

Two escape hatches are documented, and they matter because they answer different questions. To build the old, pre-consolidation version of wav2letter, the README says to check out the v0.2 release, which depends on the old Flashlight v0.2 release. That path is for someone who wants the code as it stood before the move, with its own matching dependency rather than the 0.3 branch used by the recipes.

The second is the wav2letter-lua branch, which the README says hosts the wav2letter-lua project. That branch is a separate implementation of the training pipeline, not a wrapper around the C++ one, and it exists because the project predates the C++ rewrite. If you find an older tutorial that refers to Lua configuration files, this is the branch it belongs to. Neither path is described as receiving new work; the README's note about future development covers the repository as a whole. Treat both as historical checkouts with their own dependency pins, and expect to spend time on the build before you get to any experiment.

## Where wav2letter++ is the wrong tool

The clearest failure mode is expecting this repository to be a maintained ASR framework. It is not, by the README's own statement, and the release history supports that reading: the recent releases listed are v0.2 from 2020-12-28, labelled pre Flashlight-consolidation, and v0.1 from 2018-12-21. There is no release that postdates the consolidation. A team that picks wav2letter++ for a production pipeline will be pinning a dependency to Flashlight 0.3 and living with whatever that combination supports.

A second limitation is the dependency chain itself. Building the recipes means building Flashlight, which in turn depends on ArrayFire, and the README only addresses the case where those are installed in nonstandard locations. There is no documented path around the requirement that Flashlight be on the 0.3 branch specifically. On a machine where a newer Flashlight is already installed for another project, you are managing two versions of the same library.

Third, the repository is not a data pipeline. The data directory contains preparation for training and evaluation, but the corpora themselves are not shipped, and the README does not describe how to obtain them. If your goal is to transcribe your own audio tomorrow, nothing here gets you there without the recipe-specific data work first.

## Flashlight versus this repository, and where other toolkits differ

The honest alternative to wav2letter++ is Flashlight itself, and the difference is one of ownership rather than technique. Flashlight is the library where the ASR application now lives, according to the README, and the C++ training and decoding code that once sat here is there. Choosing Flashlight means choosing the code that still receives changes; choosing this repository means choosing the recipes and pre-trained models that were written against Flashlight 0.3.2 and are pinned to it. The two are not competitors so much as a current tree and its frozen experiment layer.

Outside that lineage, the search terms people use around this project include Openseq2seq, which is a fair signal about what wav2letter++ gets compared to. The design difference is worth stating precisely: wav2letter++ is a C++ toolkit whose recipes reproduce published ASR papers end to end, while the Python-first toolkits in the same space tend to trade the compiled training loop for a more approachable model definition and a larger ecosystem of pretrained checkpoints. That trade is not automatically in either direction. If you need to read or modify the training loop itself, C++ is the point. If you need to fine-tune quickly on a small dataset, the compiled route costs you time before it returns anything.

## Licence, maintenance and what an upgrade actually costs

The README states that wav2letter++ is MIT-licensed, as found in the LICENSE file. The repository metadata, however, reports the licence as NOASSERTION, which means the automated classifier did not recognise a standard licence text. Those two facts disagree, and the resolution is in the LICENSE file itself, not in this article. Read it before you ship anything derived from this code, and treat the metadata field as a signal that someone should check rather than as a licence term. Nothing here is legal advice.

Upgrade cost is dominated by the pin. Because the README requires Flashlight <= 0.3.2 for exact reproduction and the 0.3 branch for building, moving off that combination is not a version bump, it is a migration into the Flashlight ASR application. The repository's own release list shows no post-consolidation release to move to, so there is no upgrade path documented here at all. The last push to the repository was on 2026-08-28. That is recent enough that the tree is not abandoned, but the README's note about where development happens is the more useful fact when you are deciding where to send a patch.

## Conclusion

Adopt wav2letter++ only as a reproduction and research artifact: the README states that development moved into the Flashlight ASR application, and the recipes require Flashlight <= 0.3.2 for exact reproduction. If you need a maintained training stack, start in Flashlight instead. Before committing, verify that the Flashlight 0.3 branch still builds with the ASR application on your machine, and check the LICENSE file, since the repository metadata reports NOASSERTION while the README says MIT.

## FAQ

### What is the best free tool for speech-to-text?

The README does not compare free speech-to-text tools, and wav2letter++ is not presented as a general transcription product. It is described as an ASR toolkit with recipes that reproduce research papers and pre-trained models.

### What is the best software for automatic speech recognition?

The repository does not rank ASR software. The README states that wav2letter has been consolidated into Flashlight in the ASR application, so for ongoing work the README points at Flashlight rather than at this repository.

### What are the best automatic speech recognition models?

No model ranking is given. The README lists the papers whose recipes are included, covering streaming convnets, semi-supervised training, self-training, lexicon-free recognition and sequence-to-sequence models with time-depth separable convolutions, and states that pre-trained models accompany them.

### Is ASR considered AI?

The README does not address this question directly. It describes wav2letter++ as an end-to-end automatic speech recognition toolkit with deep learning topics, and links to an arXiv paper for details.

## Sources

- [flashlight/wav2letter on GitHub](https://github.com/flashlight/wav2letter)
- [Issues](https://github.com/flashlight/wav2letter/issues)
- [Project website](https://github.com/facebookresearch/wav2letter/wiki)
- [README](https://github.com/flashlight/wav2letter/blob/main/README.md)
- [Releases](https://github.com/flashlight/wav2letter/releases)

---

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