Phonetisaurus G2P / OpenFST
- Dominant language
- No language data
- Stars
- 73.3k
- Forks
- 8.3k
- Avg merge
- 2d 20h
- Merged PRs (30d)
- 5
Description
One part of speech processing is translating from written language (i.e. orthography / "graphemes") to pronunciation ("phonemes"), a task commonly referred to as G2P. These days, what people do is take a pronunciation dictionary, e.g. [CMUDict](https://github.com/cmusphinx/cmudict), then train a machine learning model on it so that words not in the dictionary ("OOV") can be derived on the fly. The field for these kinds of algorithms is full of academic papers without concrete implementations, but I found three relatively recent projects available as open source:
https://github.com/cmusphinx/g2p-seq2seq (uses Tensorflow / LSTM - lowest error rate)
https://github.com/AdolfVonKleist/Phonetisaurus (uses OpenFST / joint multigrams - error rate not far off, trains much faster)
http://kaskade.dwds.de/gramophone/ (uses wapiti, OpenFST & OpenGrm - hybrid joint-multigram/rule-based model, better for smaller pronunciation dictionaries)
Of these, Phonetisaurus is written in C++ and also usable as a library (in addition to the Python wrappers common in research circles). It makes use of [OpenFST](http://openfst.org) which is one of the go-to libraries for working with weighted finite-state transducers (a subset of state machines) and should also be part of the awesome-cpp list. Mozilla's recent speech recognition effort makes use of Phonetisaurus in their own [g2p](https://github.com/mozilla/g2p) repository.
I don't know enough about wapiti and OpenGrm at this point to determine whether those also satisfy the relevance/quality expectations of the awesome-cpp list.
g2p-seq2seq and gramophone are Python only, and likely have no place in this repository but I thought it would be helpful to list them in order to provide context.
Contributor guide
Assessment
This issue has not been assessed yet.