fffaraz / fffaraz/awesome-cpp

Phonetisaurus G2P / OpenFST

Open
#420 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.