HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
flashlight
wav2letter
C++2017–2021
flashlight / wav2letter

wav2letter

Facebook AI Research's Automatic Speech Recognition Toolkit

18Distinct people
25Mentions
0Explicit recommenders
6.4KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Facebook AI Research's Automatic Speech Recognition Toolkit

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year25 dated mentions

Observed mentions: 2017-12-31 22:21:41 UTC to 2021-01-05 12:12:58 UTC.

0369122017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 12 mentions; 1 submissions, 11 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC110
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC716
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC404
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC12111
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

What Hacker News says

25 sources
Yes, there are really good open source speech to text tools (automatic speech recognition (ASR) is the common name for that). Kaldi (https://kaldi-asr.org/) is probably the most well known, and supports hybrid NN-HMM and lattice-free MMI models. Kaldi is used by many people both in research and in production. Lingvo (https://github.com/tensorflow/lingvo) is the open source version of Google speech recognition toolkit, with support mostly for end-to-end models. ESPNet (https://github.com/espnet/espnet) is good and well known for end-to-end models as well. RASR (https://github.com/rwth-i6/rasr) + RETURNN (https://github.com/rwth-i6/returnn) are very good as well, both for end-to-end models and hybrid NN-HMM, but they are for non-commercial applications only (or you need a commercial licence) (disclaimer: I work at the university chair which
Read the rest
develops these frameworks). Wav2Letter (https://github.com/facebookresearch/wav2letter), the tool by Facebook. These are probably just the most well known. There are many others as well. DeepSpeech is inferior to all the ones above, but maybe simpler. Important is also the data to train these, but you will find quite some resources online for English, e.g. Tedlium, Librispeech, etc. You will find lots of resources actually for ASR. Some random links: https://github.com/gooofy/zamia-speech https://commonvoice.mozilla.org/en/datasets https://www.openslr.org/resources.php To add: If you want to do sth like Descript, you are mostly also interested in accurate time-stamps of the recognized text (start and end time of each spoken word). The end-to-end models are usually not so good at this (the goals is mostly to get a good word-error-rate (WER)). The conventional hybrid NN-HMM is maybe actually a better choice for this task.
In Descript – A collaborative audio/video editor that works like a doc
Not a big problem given so many alternatives around like E.g. some very active projects are: * Kaldi (https://github.com/kaldi-asr/kaldi/) obviously, probably the most famous one, and most mature one. For standard hybrid NN-HMM models and also all their more recent lattice-free MMI (LF-MMI) models / training procedure. This is also heavily used in industry (not just research). * ESPnet (https://github.com/espnet/espnet), for all kind of end-to-end models, like CTC, attention-based encoder-decoder (including Transformer), and transducer models. * Espresso (https://github.com/freewym/espresso). * Google Lingvo (https://github.com/tensorflow/lingvo). This is the open source release of Googles internal ASR system, and used by Google in production (their internal version of it, which is not too much different). * NVIDIA OpenSeq2Seq (https://gi
Read the rest
thub.com/NVIDIA/OpenSeq2Seq). * Facebook Fairseq (https://github.com/pytorch/fairseq). Attention-based encoder-decoder models mostly. * Facebook wav2letter (https://github.com/facebookresearch/wav2letter). ASG model/training. * Vosk (https://github.com/alphacep/vosk-api). Offline lightweight speech recognition API with support for 10 languages. And there are much more.
In Mozilla's Speech-to-Text Engine Is at Risk Following Layoffs
There are a lot of open source projects in this space. DeepSpeech is actually one of the outsiders (they are not represented well in the academic community), and also not quite competitive to other software (at least last time I checked). E.g. some very active projects are: * Kaldi (https://github.com/kaldi-asr/kaldi/) obviously, probably the most famous one, and most mature one. For standard hybrid NN-HMM models and also all their more recent lattice-free MMI (LF-MMI) models / training procedure. This is also heavily used in industry (not just research). * ESPnet (https://github.com/espnet/espnet), for all kind of end-to-end models, like CTC, attention-based encoder-decoder (including Transformer), and transducer models. * Espresso (https://github.com/freewym/espresso). * Google Lingvo (https://github.com/tensorflow/lingvo). This is the
Read the rest
open source release of Googles internal ASR system, and used by Google in production (their internal version of it, which is not too much different). * NVIDIA OpenSeq2Seq (https://github.com/NVIDIA/OpenSeq2Seq). * Facebook Fairseq (https://github.com/pytorch/fairseq). Attention-based encoder-decoder models mostly. * Facebook wav2letter (https://github.com/facebookresearch/wav2letter). ASG model/training. * (RETURNN (https://github.com/rwth-i6/returnn) and RASR (https://github.com/rwth-i6/rasr), our own, although this is currently free for academic use only. It is used in production as well. Supports hybrid NN-HMM, CTC, end-to-end attention-based encoder-decoder, transducer, etc.) And there are much more. You will also find lots of ready-to-use trained models.
In Future of DeepSpeech / STT after recent changes at Mozilla
Great writeup! I like the detail, especially in Making a Great Speech To Text Model. It looks like their research is against an older wav2letter model (likely the conv_glu model from the original 2018 Gated ConvNet paper). Facebook has released a lot of interesting architectures since then, my favorite of which is the Streaming ConvNet arch [1] Ideas from the post compared to my experience with wav2letter: 1. Model Stride - increased model stride to 8x Streaming ConvNet increased the stride to 8, while the original conv_glu model had stride 2 (cite: [2]), so Facebook agrees on this one. 2. Compact Regularized Networks - use separable convolutions, add skip connections, and attention modules Streaming ConvNets use Time-Depth Separable Convolutions, but no skip connections or attention. Facebook's "state of the art 2019" research tried a l
Read the rest
ot of architectures, the most accurate of which was a transformer model trained with attention and seq2seq criterion. However in my experience it was very large and slow to train. 3. Using Byte-Pair Encoding Streaming ConvNets model uses 10,000 word pieces, which is a similar thought (the token set FB uses is here: [4] but I've had better luck with a sentencepiece model trained on more text data) instead of a ~26 letter alphabet from the original conv_glu model. 4. Better Encoder The blog post conclusion here isn't very obvious, it seems to hand wave that you could maybe use a transformer architecture but doesn't go into specifics. 5. Balance Capacity I don't completely understand what they changed here but it seems useful. 6. Stabilize the Training in Different Domains, Balance Generalization When adding domains to wav2letter, I've basically trained entirely from scratch using all available data. I long for a catastrophic forgetting mitigation like EWC but for now I've had a lot of success by just making the data funnel bigger and more varied. Data matters quite a bit, in this post [5] I compare a model I trained on a wide variety of data, with Facebook's equivalent model as well as Facebook's State Of The Art model. The wide-variety model generalized significantly better than both of Facebook's examples that had only trained on audiobooks. 7. Make a very fast decoder. The beam search decoder in this branch [6] of Talon's wav2letter fork was at the time significantly faster than Facebook's decoder. It was hand optimized and even includes some code for threaded decoding (which I'm not using at the moment because single threaded is fast enough for my workload). On single threaded decoding it can hit a realtime factor in the ballpark of 0.01x, or 100 seconds of audio per cpu second. With my smallest model (a significantly reduced size conv_glu wav2letter model), which is also in the 0.01x ballpark for encoding, we can consistently hit around 0.02x end to end on a consumer CPU. To demonstrate, here is a random sample of debug timing information from my machine when recently decoding command phrases with wav2letter during real interactive use (the very long audio samples aren't the model's fault, I was testing a mic in a noisy environment): [audio]=1260.000ms [emit]=16.164ms (0.01x) [decode]=11.326ms (0.01x) [total]=27.490ms (0.02x) [audio]=1260.000ms [emit]=16.164ms (0.01x) [decode]=11.326ms (0.01x) [total]=27.490ms (0.02x) [audio]=930.000ms [emit]=12.853ms (0.01x) [decode]=3.716ms (0.00x) [total]=16.569ms (0.02x) [audio]=1080.000ms [emit]=14.936ms (0.01x) [decode]=3.296ms (0.00x) [total]=18.231ms (0.02x) [audio]=1020.000ms [emit]=12.976ms (0.01x) [decode]=10.058ms (0.01x) [total]=23.034ms (0.02x) [audio]=930.000ms [emit]=13.836ms (0.01x) [decode]=9.998ms (0.01x) [total]=23.834ms (0.03x) [audio]=1140.000ms [emit]=14.535ms (0.01x) [decode]=3.589ms (0.00x) [total]=18.124ms (0.02x) [audio]=1650.000ms [emit]=20.516ms (0.01x) [decode]=5.281ms (0.00x) [total]=25.797ms (0.02x) [audio]=3480.000ms [emit]=31.386ms (0.01x) [decode]=32.966ms (0.01x) [total]=64.352ms (0.02x) [audio]=29760.000ms [emit]=253.671ms (0.01x) [decode]=325.198ms (0.01x) [total]=578.869ms (0.02x) [audio]=8850.000ms [emit]=70.844ms (0.01x) [decode]=76.267ms (0.01x) [total]=147.111ms (0.02x) [audio]=960.000ms [emit]=13.924ms (0.01x) [decode]=8.135ms (0.01x) [total]=22.060ms (0.02x) [audio]=1770.000ms [emit]=19.760ms (0.01x) [decode]=18.612ms (0.01x) [total]=38.372ms (0.02x) [audio]=930.000ms [emit]=12.488ms (0.01x) [decode]=6.842ms (0.01x) [total]=19.330ms (0.02x) [audio]=1050.000ms [emit]=15.726ms (0.01x) [decode]=7.645ms (0.01x) [total]=23.371ms (0.02x) [audio]=930.000ms [emit]=13.899ms (0.01x) [decode]=8.714ms (0.01x) [total]=22.613ms (0.02x) [audio]=40410.000ms [emit]=292.916ms (0.01x) [decode]=289.109ms (0.01x) [total]=582.025ms (0.01x) [1] https://github.com/facebookresearch/wav2letter/tree/master/r... [2] https://github.com/facebookresearch/wav2letter/issues/543#is... [3] https://github.com/facebookresearch/wav2letter/tree/master/r... [4] https://dl.fbaipublicfiles.com/wav2letter/streaming_convnets... [5] https://github.com/facebookresearch/wav2letter/issues/577 [6] https://github.com/talonvoice/wav2letter/tree/decoder
In Towards an ImageNet Moment for Speech-to-Text
Facebook posted some of the models listed in their SOTA paper already. I haven’t tried these yet. https://github.com/facebookresearch/wav2letter/blob/master/r... My models are here: https://talonvoice.com/research/ I haven’t yet posted the model I’ve been working on most recently. I’m 120 epochs into a large size model trained on all of my datasets. I also have another 1000-1500h of audio I haven’t finished prepping to train on. Here is a web demo. It’s currently running a slightly older checkpoint of my WIP large model, and the deepspeech LM: https://web2letter-west-1.talonvoice.com/
In Show HN: Text-to-speech and speech-to-text open-source software stack
Did you miss wav2letter achieving a new 2019 SOTA on librispeech? Both projects have a _lot_ of architectures and papers in play, I know it can be hard to keep up. Aren’t some of the peak Kaldi numbers also with _huge_ language models that aren’t so practical to deploy? The best kaldi results I’ve found here both use “fglarge” LMs, but a quick search didn’t tell me how big that actually is. The best I can find for the test set are (from main RESULTS): test-clean: 4.31% WER test-other: 10.62% WER From here (not sure why buried): https://github.com/kaldi-asr/kaldi/blob/master/egs/librispee... test-clean: 3.80% WER test-other: 8.76% WER This is the 2019 wav2letter SOTA: https://github.com/facebookresearch/wav2letter/blob/master/r... Sure, one of their techniques is to semi supervised train on 60k hours of audio, so I’ll pos
Read the rest
t their best numbers both with and without that step (as you said “if kaldi is trained on the same data”) Without 60k unsupervised audio: test-clean: 2.31% WER test-other: 5.18% WER With 60k audio: test-clean: 2.03% WER test-other: 4.11% WER That’s so far ahead of kaldi’s librispeech RESULTS, let’s go up the list and look at their acoustic model tests that don’t even bother with a language model: Without 60k or language model: (test-clean / test-other WER) 3.05 / 7.01 With 60k without language model: 2.30 / 5.29 Am I missing a kaldi whitepaper here? I found “State-of-the-Art Speech Recognition Using Multi-Stream Self-Attention With Dilated 1D Convolutions” on wer_are_we claiming 2.2 / 5.8 using Kaldi as a base, which is impressive, but they changed the network architecture and I didn’t find this in any of the open-source kaldi librispeech subdirectories. (If arbitrary model changes count, at some point you might as well treat both wav2letter and kaldi as “tensorflow with some speech helpers” because I’m sure you can implement either framework’s best neural architecture in the other framework.) If there’s a better paper on kaldi than 2.2 / 5.8 you should comment with it and PR it to wer_are_we, because wav2letter is currently beating every other LS result posted there.
In Show HN: Text-to-speech and speech-to-text open-source software stack
Sure, that's probably the VAD, which can be tuned (the VAD decides if your phrase is done or not yet). That's part of why I included activity monitor watching w2l, so you could see it wasn't using any CPU while I talked. Would probably be more convincing if I printed something at the moment the VAD cut off the user so you could visually judge from the boundary of what we considered their speech. This video can be partially reproduced with the code and models from here: https://github.com/facebookresearch/wav2letter/issues/327 but most of our decoder optimizations post-date when I compiled that demo. Some of the later code is here: https://github.com/talonvoice/wav2letter/tree/w2lapi_static https://github.com/ckamm/wav2letter/tree/wip-parallel Here is the exact timing loop code I used in that demo: https://bochs.info/p/nhz5cv
In A 2019 Guide for Automatic Speech Recognition
I made a realtime mac demo of the acoustic model part of wav2letter++ including several trained models: https://github.com/facebookresearch/wav2letter/issues/327 Someone in that thread ported it to linux. This demo is just "acoustic model emissions", which are character level predictions (with no repeated characters), but I have "decoding" (turning into english sentences) working locally as well and I'll post a new demo at some point.
In A 2019 Guide for Automatic Speech Recognition

Showing the 15 most recent of 25 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.