-
Notifications
You must be signed in to change notification settings - Fork 165
/
paper.md
95 lines (83 loc) · 4.78 KB
/
paper.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
title: 'Phonemizer: Text to Phones Transcription for Multiple Languages in Python'
tags:
- Python
- linguistics
- natural language processing
- text-to-speech
authors:
- name: Mathieu Bernard
orcid: 0000-0001-7586-7133
affiliation: 1
- name: Hadrien Titeux
orcid: 0000-0002-8511-1644
affiliation: 1
affiliations:
- name: LSCP/ENS/CNRS/EHESS/Inria/PSL Research University, Paris, France
index: 1
date: 25 October 2021
bibliography: paper.bib
---
# Summary
Phones are elementary sounds the speech is made of, on which syllables and words
are built. The transcription of texts from their orthographic form into a
phonetic alphabet is an important requirement in various applications related to
speech and language processing, for instance for text to speech systems.
`Phonemizer` is a Python package addressing precisely this issue: it transcribes
a text from its orthographic representation into a phonetic one. The package is
user-friendly and exposes a single `phonemize` function, also available as a
command-line interface. It supports about a hundred different languages and
provides end-user functionalities such as punctuation preservation, phones
accentuation, tokenization at phone/syllable/word levels, as well as parallel
processing of large input texts.
# Statement of Need
Whereas the high-level features introduced above are implemented directly by
`phonemizer`, the phonetic transcription itself is delegated to third party
backends, wrapped in an homogeneous interface by the package. The default
backend used by `phonemizer` is eSpeak [@espeak:2019], a text to speech software
built on linguistic expertise and hand written transcription rules. It
transcribes text into the International Phonetic Alphabet and supports more than
a hundred languages. Using MBROLA voices [@mbrola:2019], available for 35
languages, the eSpeak backend transcribes text in the SAMPA computer readable
phonetic alphabet. Festival [@festival:2014] is another text to speech software
used as a backend for `phonemizer`. It is available for American English only,
and uses a non standard phoneset for transcription, but this backend is the only
one to meet the requirement of some applications by preserving syllable
boundaries. The third `phonemizer` backend is Segments [@forkel:2019], a Python
package providing Unicode Standard tokenization routines and orthography
segmentation. It relies on a grapheme to phoneme mapping to generate the
transcription. This backend is mostly useful for low-resource languages, for
which users with linguistic expertise can write their own mappings. Six
languages are provided as examples with `phonemizer`: Chintang, Cree, Inuktitut,
Japanese, Sesotho and Yucatec.
Text to phones transcription is a critical need in different applications
related to natural language and speech processing. So far, the `phonemizer`
package has been used in the preprocessing pipeline of various deep learning
text to speech systems [@mozilla:2021; @asideas:2021; @espnet:2018]. It has also
been used as a preprocessing step in word segmentation studies regarding the
role of speech prosody in segmentability [@ludusan:2017] and the psychology of
child development [@cristia:2019;@bernard:2020]. A phonetic transcription
generated by the package was used to evaluate a phone discrimination task for
the Zero Speech Challenge 2017 [@dunbar:2017]. The `phonemizer` is also very
suitable to prepare datasets for their use with the Kaldi speech recognition
toolkit [@povey:2011], where a phonetic transcription of text is a requirement
for various algorithms. Finally, the package can be used to generate forced
alignments of speech corpora, an important part of the research pipeline
whereby an acoustic signal is segmented and aligned with a text transcript. The
most impactful software in this field [@rosenfelder:2014;@mcauliffe:2017]
require a pronunciation dictionary to transcribe words into phonemes. Such
dictionaries, when available, can be non-exhaustive, thus requiring experimenter
transcription or data exclusion. Replacing the dictionary by the use of the
`phonemizer` can therefore improve the overall pipeline and alignment quality
for compatible languages.
# Acknowledgements
We are thankful to Alex Cristia who initiated this project and to Emmanuel
Dupoux for his support and advices. We also thank the `phonemizer` users for their bug
reports and features requests. This work is funded by the European Research
Council (ERC-2011-AdG-295810 BOOTPHON), the Agence Nationale pour la Recherche
(ANR-17-EURE-0017 Frontcog, ANR-10-IDEX-0001-02 PSL, ANR-19-P3IA-0001 PRAIRIE
3IA Institute) and grants from CIFAR (Learning in Machines and Brains), Facebook
AI Research (Research Grant), Google (Faculty Research Award), Microsoft
Research (Azure Credits and Grant), and Amazon Web Service (AWS Research
Credits).
# References