├── .gitignore
├── Makefile
├── README.md
├── cmu-text-to-phoneme.js
├── ext
└── cmudict.0.7a
├── followerfreq-analysis-stream.js
├── index.js
├── package-lock.json
├── package.json
├── phoneme-syllable-analyze.js
├── phonemize-analyze-ff.js
├── phonemize-console.js
├── phonemize-file.js
├── phonemize-syllablize.js
├── stringify-through.js
├── syllablefreq-analysis-stream.js
├── syllablize-through.js
└── test
├── phoneme-follow-frequencies-baseline.js
└── phoneme-follow-frequencies-in-syllables-baseline.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | phoneme-follow-frequencies-in-syllables.js
4 | phoneme-follow-frequencies.js
5 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | CMUDICT = ext/cmudict.0.7a
2 |
3 | phoneme-groups-with-syllables.json: $(CMUDICT)
4 | cat $(CMUDICT) | node phonemize-syllablize.js phoneme-groups-with-syllables.json
5 |
6 | syllable-follower-analysis.json: $(CMUDICT)
7 | cat $(CMUDICT) | node phoneme-syllable-analyze.js syllable-follower-analysis.json
8 |
9 | phoneme-follow-frequencies.js: $(CMUDICT)
10 | cat $(CMUDICT) | node phonemize-analyze-ff.js --make-module > phoneme-follow-frequencies.js
11 |
12 | phoneme-follow-frequencies-in-syllables.js: $(CMUDICT)
13 | cat $(CMUDICT) | node phonemize-analyze-ff.js --make-module --analyze-in-syllables > phoneme-follow-frequencies-in-syllables.js
14 |
15 | phoneme-preceding-frequencies-in-syllables.js: $(CMUDICT)
16 | cat $(CMUDICT) | node phonemize-analyze-ff.js --make-module --analyze-in-syllables --reverse true > phoneme-preceding-frequencies-in-syllables.js
17 |
18 | test-followerfreq-analysis-stream: test/phoneme-follow-frequencies-baseline.js
19 | rm phoneme-follow-frequencies.js || echo "phoneme-follow-frequencies.js clear"
20 | make phoneme-follow-frequencies.js
21 | diff phoneme-follow-frequencies.js test/phoneme-follow-frequencies-baseline.js
22 |
23 | test-followerfreq-syllable: test/phoneme-follow-frequencies-in-syllables-baseline.js
24 | rm phoneme-follow-frequencies-in-syllables.js || echo "phoneme-follow-frequencies-in-syllalbles.js clear"
25 | make phoneme-follow-frequencies-in-syllables.js
26 | diff phoneme-follow-frequencies-in-syllables.js test/phoneme-follow-frequencies-in-syllables-baseline.js
27 |
28 | test: test-followerfreq-syllable test-followerfreq-analysis-stream
29 |
30 | pushall:
31 | git push origin master && npm publish
32 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | phonemenon
2 | ==========
3 |
4 | phonemenon is a library of phoneme-related utilities.
5 |
6 | Installation
7 | ------------
8 |
9 | npm install phonemenon
10 |
11 | Data structures
12 | ---------------
13 |
14 |
15 | There's something I'll refer to as a "phoneme group" which will look like this:
16 |
17 | {
18 | "word": "EARTHY",
19 | "phonemes": [
20 | {
21 | "phoneme": "ER",
22 | "stress": 1
23 | },
24 | {
25 | "phoneme": "TH",
26 | "stress": -1
27 | },
28 | {
29 | "phoneme": "IY",
30 | "stress": 0
31 | }
32 | ]
33 | }
34 |
35 | They'll all have a `word` property that is the word that the phoneme group represents and a `phonemes` array that contains objects that each contain a `phoneme` and a `stress` value. A `stress` of 1 indicates that a phoneme has the primary stress and 2 indicates secondary. 0 indicates no stress and -1 indicates a phoneme that does not start a syllable.
36 |
37 | What do all of these things do?
38 | ===============================
39 |
40 | You can run these scripts via make targets. After you clone this repo, cd into it, run `npm install`, you can run make targets, like `make phoneme-groups-with-syllables.json`, for example.
41 |
42 | Makefile targets
43 | ----------------
44 |
45 | **phoneme-groups-with-syllables.json:** All the phoneme groups derivable from the [CMU Pronouncing Dictionary](http://www.speech.cs.cmu.edu/cgi-bin/cmudict).
46 |
47 | **syllable-follower-analysis.json:** A listing of all the syllables and many times other syllables in the corpus follow them.
48 |
49 | **phoneme-follow-frequencies.js** A module that all the phonemes and how many times other phonemes follow them in the corpus.
50 |
51 | Scripts
52 | -------
53 |
54 | **phoneme-syllable-analyze.js**
55 |
56 | A script that pipes [CMU Pronouncing Dictionary](http://www.speech.cs.cmu.edu/cgi-bin/cmudict) text into `syllablize-through`, then pipes that into `syllable-freq-analysis` to get a JSON object that has a key for every possible syllable with a value like this one for "hey/hay":
57 |
58 | "HH-EY": {
59 | "M-IY": 2,
60 | "V-IH-NG": 3,
61 | "M-EY": 3,
62 | "G-AH-N": 10,
63 | "V-AH-N": 5,
64 | "G-AH-N-Z": 3,
65 | "B-ER": 6,
66 | "B-AH-L": 1,
67 | "B-IY": 1,
68 | "D-AH-N": 7,
69 | "D-ER": 2,
70 | "D-IY-Z": 1,
71 | "D-AH": 2,
72 | "F-ER": 1,
73 | "F-IY": 1,
74 | "G-AA-R": 1,
75 | ...
76 | },
77 |
78 | The value lists all of the syllables that could follow it, along with the *number of times* that the syllable did follow it. There is a special key called 'START' that lists all the syllables that can start a word.
79 |
80 | cat ../cmudict/cmudict.0.7a | node phoneme-syllable-analyze.js syllable-analysis.json
81 |
82 | **phonemize-analyze-ff.js**
83 |
84 | A script that converts [CMU Pronouncing Dictionary](http://www.speech.cs.cmu.edu/cgi-bin/cmudict) text into word/phoneme objects, then analyzes those.
85 |
86 | cat cmudict.0.7a | node phonemize-analyze-ff.js out.js --make-module
87 |
88 | **phonemize-console.js**
89 |
90 | A script that converts CMU text that's piped in via stdin into stringified JSON objects. Usage example:
91 |
92 | cat cmudict.0.7a | node phonemize-console.js
93 |
94 | Output will be a whole bunch of [phoneme group](#phoneme-group) JSON objects.
95 |
96 | **phonemize-file.js**
97 |
98 | A script that uses `cmuTextToPhonemeStream.js` to create a line-separated JSON file full of [phoneme groups](#phoneme-group). Example.
99 |
100 | cat cmudict.0.7a | node phonemize-file.js phonemes.json
101 |
102 | **phonemize-syllablize.js**
103 |
104 | A script that pipes [CMU Pronouncing Dictionary](http://www.speech.cs.cmu.edu/cgi-bin/cmudict) lines into `syllablize-through` to get phoneme groups with syllables, then writes those to a file. Example usage:
105 |
106 | cat ../cmudict/cmudict.0.7a | node phonemize-syllablize.js phoneme-groups-with-syllables.json
107 |
108 | Or:
109 |
110 | make phoneme-groups-with-syllables.json
111 |
112 | Modules
113 | -------
114 |
115 | **cmu-text-to-phoneme.js**
116 |
117 | A stream that converts lines of text from the [CMU Pronouncing Dictionary](http://www.speech.cs.cmu.edu/cgi-bin/cmudict), like this –
118 |
119 | EARTHY ER1 TH IY0
120 |
121 | – into [phoneme group](#phoneme-group) objects.
122 |
123 | **followerfreq-analysis-stream.js**
124 |
125 | A stream that analyzes phoneme groups you write to it, then returns the analysis via the callback when the end is reached. The analysis will be a dictionary with entries for each phoneme and the number of times other phonemes follow it, like so:
126 |
127 | "EH": {
128 | "K": 2950,
129 | "N": 4860,
130 | "S": 2451,
131 | "F": 474,
132 | "R": 3885,
133 | "M": 1406,
134 | "TH": 181,
135 | "L": 4080,
136 | "T": 1947,
137 | "D": 1331,
138 | "G": 514,
139 | "P": 633,
140 | "SH": 331,
141 | "V": 655,
142 | "JH": 236,
143 | "B": 296,
144 | "HH": 54,
145 | "Z": 465,
146 | "DH": 101,
147 | "NG": 259,
148 | "CH": 147,
149 | "W": 16,
150 | "ZH": 38,
151 | "Y": 4,
152 | "AH": 3,
153 | "OW": 1,
154 | "IY": 1
155 | }
156 |
157 | **followfreqs.js**
158 |
159 | The output of a run of phoneme-analyze-ff, saved.
160 |
161 | **stringify-through.js**
162 |
163 | A stream that converts JSON objects into strings.
164 |
165 | **syllablefreq-analysis-stream.js**
166 |
167 | A stream that analyzes phoneme groups (that have `syllables` properties) you write to it, then returns the analysis: syllables by frequency and following frequency.
168 |
169 | **syllablize-through.js**
170 |
171 | Creates streams that adds `syllables` properties to [phoneme groups](#phoneme-group). A phoneme group with `syllables` properties looks like this:
172 |
173 | {
174 | "word": "ABDELLA",
175 | "phonemes": [
176 | {
177 | "phoneme": "AE",
178 | "stress": 2
179 | },
180 | {
181 | "phoneme": "B",
182 | "stress": -1
183 | },
184 | {
185 | "phoneme": "D",
186 | "stress": -1
187 | },
188 | {
189 | "phoneme": "EH",
190 | "stress": 1
191 | },
192 | {
193 | "phoneme": "L",
194 | "stress": -1
195 | },
196 | {
197 | "phoneme": "AH",
198 | "stress": 0
199 | }
200 | ],
201 | "syllables": [
202 | [
203 | "AE",
204 | "B"
205 | ],
206 | [
207 | "D",
208 | "EH"
209 | ],
210 | [
211 | "L",
212 | "AH"
213 | ]
214 | ]
215 | }
216 |
217 | **typesofphonemes.js**
218 |
219 | A module for classifying phonemes into the broad categories "consonantish" and "vowelish".
220 |
221 | See also
222 | --------
223 |
224 | If you want a two-way mapping between phonemes and words, [see word-phoneme-map](https://github.com/jimkang/word-phoneme-map).
225 |
226 | License
227 | -------
228 |
229 | The MIT License (MIT)
230 |
231 | Copyright (c) 2015 Jim Kang
232 |
233 | Permission is hereby granted, free of charge, to any person obtaining a copy
234 | of this software and associated documentation files (the "Software"), to deal
235 | in the Software without restriction, including without limitation the rights
236 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
237 | copies of the Software, and to permit persons to whom the Software is
238 | furnished to do so, subject to the following conditions:
239 |
240 | The above copyright notice and this permission notice shall be included in
241 | all copies or substantial portions of the Software.
242 |
243 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
244 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
245 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
246 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
247 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
248 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
249 | THE SOFTWARE.
250 |
--------------------------------------------------------------------------------
/cmu-text-to-phoneme.js:
--------------------------------------------------------------------------------
1 | var through2 = require('through2');
2 |
3 | var settings = {
4 | dictCommentMarker: ';;;',
5 | streamOptions: {
6 | flags: 'r',
7 | encoding: 'utf8'
8 | }
9 | };
10 |
11 | var textToPhonemeStream = through2({
12 | objectMode: true
13 | },
14 | function lineToPhoneme(chunk, enc, callback) {
15 | if (chunk.indexOf(settings.dictCommentMarker) !== 0) {
16 | var annotated = annotateLine(chunk);
17 | if (annotated) {
18 | this.push(annotated);
19 | }
20 | }
21 | callback();
22 | }
23 | );
24 |
25 | function annotateLine(line) {
26 | var wordAndPhonemes = line.split(' ');
27 | if (wordAndPhonemes.length < 2) {
28 | return;
29 | }
30 |
31 | var phonemeStrings = wordAndPhonemes[1].split(' ');
32 |
33 | return {
34 | word: wordAndPhonemes[0],
35 | phonemes: phonemeStrings.map(parsePhonemeToken)
36 | };
37 | }
38 |
39 | function parsePhonemeToken(token, index) {
40 | var phoneme = token;
41 | var stress = -1;
42 | var lastCharPos = token.length - 1;
43 | if (lastCharPos > 0) {
44 | var lastCharAsNumber = +(token.charAt(lastCharPos));
45 | if (lastCharAsNumber > -1) {
46 | stress = lastCharAsNumber;
47 | phoneme = token.substring(0, lastCharPos);
48 | }
49 | }
50 |
51 | return {phoneme: phoneme, stress: stress};
52 | }
53 |
54 | module.exports = textToPhonemeStream;
55 |
--------------------------------------------------------------------------------
/followerfreq-analysis-stream.js:
--------------------------------------------------------------------------------
1 | // It's a stream that analyzes phoneme groups you write to it, then returns the
2 | // analysis via the callback when the end is reached.
3 |
4 | var Writable = require('stream').Writable;
5 | var pluck = require('lodash.pluck');
6 |
7 | function createAnalyzeFollowerStream(opts) {
8 | var followerFreqsForPhonemes = {};
9 |
10 | // Must use object mode.
11 | if (!opts.objectMode) {
12 | opts.objectMode = true;
13 | }
14 |
15 | var analyzeStream = new Writable(opts);
16 |
17 | analyzeStream._write = function writeToStream(group, encoding, callback) {
18 | recordPhonemeGroupFollowFrequencies(group);
19 | callback();
20 | };
21 |
22 | analyzeStream.end = function end() {
23 | if (opts.done) {
24 | opts.done(null, followerFreqsForPhonemes);
25 | }
26 | };
27 |
28 | // Incoming phoneme groups will look like this:
29 | // {
30 | // "word": "ABALONE",
31 | // "phonemes": [
32 | // {"phoneme":"AE","stress":2},
33 | // {"phoneme":"B","stress":-1},
34 | // {"phoneme":"AH","stress":0},
35 | // {"phoneme":"L","stress":-1},
36 | // {"phoneme":"OW","stress":1},
37 | // {"phoneme":"N","stress":-1},
38 | // {"phoneme":"IY","stress":0}
39 | // ]
40 | //
41 | // }
42 | //
43 | // They may also have this optional syllables array:
44 | // "syllables": [
45 | // [
46 | // "AE"
47 | // ],
48 | // [
49 | // "B",
50 | // "AH"
51 | // ],
52 | // [
53 | // "L",
54 | // "OW"
55 | // ],
56 | // [
57 | // "N",
58 | // "IY"
59 | // ]
60 | // ]
61 |
62 | function recordPhonemeGroupFollowFrequencies(group) {
63 | var phonemeSequence;
64 | if (opts.analyzeInSyllables) {
65 | group.syllables.forEach(recordPhonemeSequenceFrequencies);
66 | } else {
67 | phonemeSequence = pluck(group.phonemes, 'phoneme');
68 | recordPhonemeSequenceFrequencies(phonemeSequence);
69 | }
70 | }
71 |
72 | function recordPhonemeSequenceFrequencies(sequence) {
73 | var phonemeSequence;
74 | var previousPhoneme;
75 |
76 | if (opts.reverse) {
77 | phonemeSequence = ['START'].concat(sequence);
78 | previousPhoneme = 'END';
79 | } else {
80 | phonemeSequence = sequence.concat('END');
81 | previousPhoneme = 'START';
82 | }
83 |
84 | for (var i = 0; i < phonemeSequence.length; ++i) {
85 | var phoneme;
86 | if (opts.reverse) {
87 | phoneme = phonemeSequence[phonemeSequence.length - 1 - i];
88 | } else {
89 | phoneme = phonemeSequence[i];
90 | }
91 |
92 | if (previousPhoneme) {
93 | var freqs = {};
94 | if (previousPhoneme in followerFreqsForPhonemes) {
95 | freqs = followerFreqsForPhonemes[previousPhoneme];
96 | } else {
97 | followerFreqsForPhonemes[previousPhoneme] = freqs;
98 | }
99 |
100 | var frequency = 0;
101 | if (phoneme in freqs) {
102 | frequency = freqs[phoneme];
103 | }
104 | frequency += 1;
105 | freqs[phoneme] = frequency;
106 | }
107 | previousPhoneme = phoneme;
108 | }
109 | }
110 |
111 | return analyzeStream;
112 | }
113 |
114 | module.exports = createAnalyzeFollowerStream;
115 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | textToPhonemeStream: require('./cmu-text-to-phoneme'),
3 | createAnalyzeFollowerStream: require('./followerfreq-analysis-stream'),
4 | createStringifyThroughStream: require('./stringify-through'),
5 | AnalyzeSyllableStream: require('./syllablefreq-analysis-stream'),
6 | syllablizeThrough: require('./syllablize-through'),
7 | phonemeTypes: require('./phoneme-types')
8 | };
9 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phonemenon",
3 | "version": "1.3.2",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "ansi-styles": {
8 | "version": "1.0.0",
9 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz",
10 | "integrity": "sha1-yxAt8cVvUSPquLZ817mAJ6AnkXg="
11 | },
12 | "balanced-match": {
13 | "version": "1.0.0",
14 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
15 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
16 | "dev": true
17 | },
18 | "brace-expansion": {
19 | "version": "1.1.11",
20 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
21 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
22 | "dev": true,
23 | "requires": {
24 | "balanced-match": "^1.0.0",
25 | "concat-map": "0.0.1"
26 | }
27 | },
28 | "chalk": {
29 | "version": "0.4.0",
30 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz",
31 | "integrity": "sha1-UZmj3c0MHv4jvAjBsCewYXbgxk8=",
32 | "requires": {
33 | "ansi-styles": "~1.0.0",
34 | "has-color": "~0.1.0",
35 | "strip-ansi": "~0.1.0"
36 | }
37 | },
38 | "concat-map": {
39 | "version": "0.0.1",
40 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
41 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
42 | "dev": true
43 | },
44 | "conform-async": {
45 | "version": "1.1.1",
46 | "resolved": "https://registry.npmjs.org/conform-async/-/conform-async-1.1.1.tgz",
47 | "integrity": "sha1-KPc3ABR9uMo/e2kxhiaMM81AR/Q="
48 | },
49 | "core-util-is": {
50 | "version": "1.0.2",
51 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
52 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
53 | },
54 | "deep-equal": {
55 | "version": "1.1.1",
56 | "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
57 | "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
58 | "dev": true,
59 | "requires": {
60 | "is-arguments": "^1.0.4",
61 | "is-date-object": "^1.0.1",
62 | "is-regex": "^1.0.4",
63 | "object-is": "^1.0.1",
64 | "object-keys": "^1.1.1",
65 | "regexp.prototype.flags": "^1.2.0"
66 | },
67 | "dependencies": {
68 | "object-keys": {
69 | "version": "1.1.1",
70 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
71 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
72 | "dev": true
73 | }
74 | }
75 | },
76 | "define-properties": {
77 | "version": "1.1.3",
78 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
79 | "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
80 | "dev": true,
81 | "requires": {
82 | "object-keys": "^1.0.12"
83 | },
84 | "dependencies": {
85 | "object-keys": {
86 | "version": "1.1.1",
87 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
88 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
89 | "dev": true
90 | }
91 | }
92 | },
93 | "defined": {
94 | "version": "1.0.0",
95 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
96 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
97 | "dev": true
98 | },
99 | "dotignore": {
100 | "version": "0.1.2",
101 | "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz",
102 | "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==",
103 | "dev": true,
104 | "requires": {
105 | "minimatch": "^3.0.4"
106 | }
107 | },
108 | "es-abstract": {
109 | "version": "1.17.6",
110 | "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
111 | "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
112 | "dev": true,
113 | "requires": {
114 | "es-to-primitive": "^1.2.1",
115 | "function-bind": "^1.1.1",
116 | "has": "^1.0.3",
117 | "has-symbols": "^1.0.1",
118 | "is-callable": "^1.2.0",
119 | "is-regex": "^1.1.0",
120 | "object-inspect": "^1.7.0",
121 | "object-keys": "^1.1.1",
122 | "object.assign": "^4.1.0",
123 | "string.prototype.trimend": "^1.0.1",
124 | "string.prototype.trimstart": "^1.0.1"
125 | },
126 | "dependencies": {
127 | "is-regex": {
128 | "version": "1.1.0",
129 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz",
130 | "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==",
131 | "dev": true,
132 | "requires": {
133 | "has-symbols": "^1.0.1"
134 | }
135 | },
136 | "object-keys": {
137 | "version": "1.1.1",
138 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
139 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
140 | "dev": true
141 | }
142 | }
143 | },
144 | "es-to-primitive": {
145 | "version": "1.2.1",
146 | "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
147 | "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
148 | "dev": true,
149 | "requires": {
150 | "is-callable": "^1.1.4",
151 | "is-date-object": "^1.0.1",
152 | "is-symbol": "^1.0.2"
153 | }
154 | },
155 | "for-each": {
156 | "version": "0.3.3",
157 | "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
158 | "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
159 | "dev": true,
160 | "requires": {
161 | "is-callable": "^1.1.3"
162 | }
163 | },
164 | "fs.realpath": {
165 | "version": "1.0.0",
166 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
167 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
168 | "dev": true
169 | },
170 | "function-bind": {
171 | "version": "1.1.1",
172 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
173 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
174 | "dev": true
175 | },
176 | "glob": {
177 | "version": "7.1.6",
178 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
179 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
180 | "dev": true,
181 | "requires": {
182 | "fs.realpath": "^1.0.0",
183 | "inflight": "^1.0.4",
184 | "inherits": "2",
185 | "minimatch": "^3.0.4",
186 | "once": "^1.3.0",
187 | "path-is-absolute": "^1.0.0"
188 | }
189 | },
190 | "has": {
191 | "version": "1.0.3",
192 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
193 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
194 | "dev": true,
195 | "requires": {
196 | "function-bind": "^1.1.1"
197 | }
198 | },
199 | "has-color": {
200 | "version": "0.1.7",
201 | "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz",
202 | "integrity": "sha1-ZxRKUmDDT8PMpnfQQdr1L+e3iy8="
203 | },
204 | "has-symbols": {
205 | "version": "1.0.1",
206 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
207 | "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
208 | "dev": true
209 | },
210 | "inflight": {
211 | "version": "1.0.6",
212 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
213 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
214 | "dev": true,
215 | "requires": {
216 | "once": "^1.3.0",
217 | "wrappy": "1"
218 | }
219 | },
220 | "inherits": {
221 | "version": "2.0.4",
222 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
223 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
224 | },
225 | "is-arguments": {
226 | "version": "1.0.4",
227 | "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
228 | "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
229 | "dev": true
230 | },
231 | "is-callable": {
232 | "version": "1.2.0",
233 | "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
234 | "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
235 | "dev": true
236 | },
237 | "is-date-object": {
238 | "version": "1.0.2",
239 | "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
240 | "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
241 | "dev": true
242 | },
243 | "is-regex": {
244 | "version": "1.0.5",
245 | "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz",
246 | "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==",
247 | "dev": true,
248 | "requires": {
249 | "has": "^1.0.3"
250 | }
251 | },
252 | "is-symbol": {
253 | "version": "1.0.3",
254 | "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
255 | "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
256 | "dev": true,
257 | "requires": {
258 | "has-symbols": "^1.0.1"
259 | }
260 | },
261 | "isarray": {
262 | "version": "0.0.1",
263 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
264 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
265 | },
266 | "lodash._arraymap": {
267 | "version": "3.0.0",
268 | "resolved": "https://registry.npmjs.org/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz",
269 | "integrity": "sha1-Go/Q9MDfS2HeoHbXF83Jfwo8PmY="
270 | },
271 | "lodash._basecallback": {
272 | "version": "3.3.1",
273 | "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz",
274 | "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=",
275 | "requires": {
276 | "lodash._baseisequal": "^3.0.0",
277 | "lodash._bindcallback": "^3.0.0",
278 | "lodash.isarray": "^3.0.0",
279 | "lodash.pairs": "^3.0.0"
280 | }
281 | },
282 | "lodash._baseeach": {
283 | "version": "3.0.4",
284 | "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz",
285 | "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=",
286 | "requires": {
287 | "lodash.keys": "^3.0.0"
288 | }
289 | },
290 | "lodash._baseget": {
291 | "version": "3.7.2",
292 | "resolved": "https://registry.npmjs.org/lodash._baseget/-/lodash._baseget-3.7.2.tgz",
293 | "integrity": "sha1-G2rh1frPPCVTI1ChPBGXy4u2dPQ="
294 | },
295 | "lodash._baseisequal": {
296 | "version": "3.0.7",
297 | "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz",
298 | "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=",
299 | "requires": {
300 | "lodash.isarray": "^3.0.0",
301 | "lodash.istypedarray": "^3.0.0",
302 | "lodash.keys": "^3.0.0"
303 | }
304 | },
305 | "lodash._bindcallback": {
306 | "version": "3.0.1",
307 | "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz",
308 | "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4="
309 | },
310 | "lodash._getnative": {
311 | "version": "3.9.1",
312 | "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz",
313 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U="
314 | },
315 | "lodash._topath": {
316 | "version": "3.8.1",
317 | "resolved": "https://registry.npmjs.org/lodash._topath/-/lodash._topath-3.8.1.tgz",
318 | "integrity": "sha1-PsXiYGAU9MuX91X+aRTt2L/ADqw=",
319 | "requires": {
320 | "lodash.isarray": "^3.0.0"
321 | }
322 | },
323 | "lodash.isarguments": {
324 | "version": "3.1.0",
325 | "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz",
326 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo="
327 | },
328 | "lodash.isarray": {
329 | "version": "3.0.4",
330 | "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz",
331 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U="
332 | },
333 | "lodash.istypedarray": {
334 | "version": "3.0.6",
335 | "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz",
336 | "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I="
337 | },
338 | "lodash.keys": {
339 | "version": "3.1.2",
340 | "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz",
341 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=",
342 | "requires": {
343 | "lodash._getnative": "^3.0.0",
344 | "lodash.isarguments": "^3.0.0",
345 | "lodash.isarray": "^3.0.0"
346 | }
347 | },
348 | "lodash.map": {
349 | "version": "3.1.4",
350 | "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-3.1.4.tgz",
351 | "integrity": "sha1-tIOs0beGxce0ksSV97UmYim8AMI=",
352 | "requires": {
353 | "lodash._arraymap": "^3.0.0",
354 | "lodash._basecallback": "^3.0.0",
355 | "lodash._baseeach": "^3.0.0",
356 | "lodash.isarray": "^3.0.0",
357 | "lodash.keys": "^3.0.0"
358 | }
359 | },
360 | "lodash.pairs": {
361 | "version": "3.0.1",
362 | "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz",
363 | "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=",
364 | "requires": {
365 | "lodash.keys": "^3.0.0"
366 | }
367 | },
368 | "lodash.pluck": {
369 | "version": "3.1.2",
370 | "resolved": "https://registry.npmjs.org/lodash.pluck/-/lodash.pluck-3.1.2.tgz",
371 | "integrity": "sha1-s0fwN0wBafDusE1nLYnOyGMsIjE=",
372 | "requires": {
373 | "lodash._baseget": "^3.0.0",
374 | "lodash._topath": "^3.0.0",
375 | "lodash.isarray": "^3.0.0",
376 | "lodash.map": "^3.0.0"
377 | }
378 | },
379 | "minimatch": {
380 | "version": "3.0.4",
381 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
382 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
383 | "dev": true,
384 | "requires": {
385 | "brace-expansion": "^1.1.7"
386 | }
387 | },
388 | "minimist": {
389 | "version": "1.2.5",
390 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
391 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
392 | "dev": true
393 | },
394 | "nomnom": {
395 | "version": "1.8.1",
396 | "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz",
397 | "integrity": "sha1-IVH3Ikcrp55Qp2/BJbuMjy5Nwqc=",
398 | "requires": {
399 | "chalk": "~0.4.0",
400 | "underscore": "~1.6.0"
401 | }
402 | },
403 | "object-inspect": {
404 | "version": "1.7.0",
405 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz",
406 | "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==",
407 | "dev": true
408 | },
409 | "object-is": {
410 | "version": "1.1.2",
411 | "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
412 | "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
413 | "dev": true,
414 | "requires": {
415 | "define-properties": "^1.1.3",
416 | "es-abstract": "^1.17.5"
417 | }
418 | },
419 | "object-keys": {
420 | "version": "0.4.0",
421 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
422 | "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY="
423 | },
424 | "object.assign": {
425 | "version": "4.1.0",
426 | "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
427 | "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
428 | "dev": true,
429 | "requires": {
430 | "define-properties": "^1.1.2",
431 | "function-bind": "^1.1.1",
432 | "has-symbols": "^1.0.0",
433 | "object-keys": "^1.0.11"
434 | },
435 | "dependencies": {
436 | "object-keys": {
437 | "version": "1.1.1",
438 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
439 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
440 | "dev": true
441 | }
442 | }
443 | },
444 | "once": {
445 | "version": "1.4.0",
446 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
447 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
448 | "dev": true,
449 | "requires": {
450 | "wrappy": "1"
451 | }
452 | },
453 | "path-is-absolute": {
454 | "version": "1.0.1",
455 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
456 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
457 | "dev": true
458 | },
459 | "path-parse": {
460 | "version": "1.0.6",
461 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
462 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
463 | "dev": true
464 | },
465 | "phoneme-types": {
466 | "version": "1.0.0",
467 | "resolved": "https://registry.npmjs.org/phoneme-types/-/phoneme-types-1.0.0.tgz",
468 | "integrity": "sha1-njt8y2Og9BLJxLu2CyxAJoozY/Q="
469 | },
470 | "readable-stream": {
471 | "version": "1.0.34",
472 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
473 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
474 | "requires": {
475 | "core-util-is": "~1.0.0",
476 | "inherits": "~2.0.1",
477 | "isarray": "0.0.1",
478 | "string_decoder": "~0.10.x"
479 | }
480 | },
481 | "regexp.prototype.flags": {
482 | "version": "1.3.0",
483 | "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
484 | "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
485 | "dev": true,
486 | "requires": {
487 | "define-properties": "^1.1.3",
488 | "es-abstract": "^1.17.0-next.1"
489 | }
490 | },
491 | "resolve": {
492 | "version": "1.17.0",
493 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
494 | "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
495 | "dev": true,
496 | "requires": {
497 | "path-parse": "^1.0.6"
498 | }
499 | },
500 | "resumer": {
501 | "version": "0.0.0",
502 | "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz",
503 | "integrity": "sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k=",
504 | "dev": true,
505 | "requires": {
506 | "through": "~2.3.4"
507 | }
508 | },
509 | "split": {
510 | "version": "0.3.3",
511 | "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
512 | "integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
513 | "requires": {
514 | "through": "2"
515 | }
516 | },
517 | "string.prototype.trim": {
518 | "version": "1.2.1",
519 | "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz",
520 | "integrity": "sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw==",
521 | "dev": true,
522 | "requires": {
523 | "define-properties": "^1.1.3",
524 | "es-abstract": "^1.17.0-next.1",
525 | "function-bind": "^1.1.1"
526 | }
527 | },
528 | "string.prototype.trimend": {
529 | "version": "1.0.1",
530 | "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
531 | "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
532 | "dev": true,
533 | "requires": {
534 | "define-properties": "^1.1.3",
535 | "es-abstract": "^1.17.5"
536 | }
537 | },
538 | "string.prototype.trimstart": {
539 | "version": "1.0.1",
540 | "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
541 | "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
542 | "dev": true,
543 | "requires": {
544 | "define-properties": "^1.1.3",
545 | "es-abstract": "^1.17.5"
546 | }
547 | },
548 | "string_decoder": {
549 | "version": "0.10.31",
550 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
551 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
552 | },
553 | "strip-ansi": {
554 | "version": "0.1.1",
555 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz",
556 | "integrity": "sha1-OeipjQRNFQZgq+SmgIrPcLt7yZE="
557 | },
558 | "tape": {
559 | "version": "4.13.3",
560 | "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.3.tgz",
561 | "integrity": "sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw==",
562 | "dev": true,
563 | "requires": {
564 | "deep-equal": "~1.1.1",
565 | "defined": "~1.0.0",
566 | "dotignore": "~0.1.2",
567 | "for-each": "~0.3.3",
568 | "function-bind": "~1.1.1",
569 | "glob": "~7.1.6",
570 | "has": "~1.0.3",
571 | "inherits": "~2.0.4",
572 | "is-regex": "~1.0.5",
573 | "minimist": "~1.2.5",
574 | "object-inspect": "~1.7.0",
575 | "resolve": "~1.17.0",
576 | "resumer": "~0.0.0",
577 | "string.prototype.trim": "~1.2.1",
578 | "through": "~2.3.8"
579 | }
580 | },
581 | "through": {
582 | "version": "2.3.8",
583 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
584 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
585 | },
586 | "through2": {
587 | "version": "0.4.2",
588 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.4.2.tgz",
589 | "integrity": "sha1-2/WGYDEVHsg1K7bE22SiKSqEC5s=",
590 | "requires": {
591 | "readable-stream": "~1.0.17",
592 | "xtend": "~2.1.1"
593 | }
594 | },
595 | "underscore": {
596 | "version": "1.6.0",
597 | "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
598 | "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag="
599 | },
600 | "wrappy": {
601 | "version": "1.0.2",
602 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
603 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
604 | "dev": true
605 | },
606 | "xtend": {
607 | "version": "2.1.2",
608 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
609 | "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
610 | "requires": {
611 | "object-keys": "~0.4.0"
612 | }
613 | }
614 | }
615 | }
616 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "phonemenon",
3 | "version": "1.3.2",
4 | "description": "A collection of modules and scripts for doing things with phonemes.",
5 | "main": "index.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "git@github.com:jimkang/phonemenon.git"
9 | },
10 | "scripts": {
11 | "test": "echo \"Error: no test specified\" && exit 1"
12 | },
13 | "keywords": [
14 | "phonemes",
15 | "syllables"
16 | ],
17 | "author": "Jim Kang",
18 | "license": "ISC",
19 | "dependencies": {
20 | "conform-async": "^1.1.1",
21 | "lodash.pluck": "^3.1.2",
22 | "nomnom": "^1.8.0",
23 | "phoneme-types": "~1.0.0",
24 | "split": "~0.3.0",
25 | "through2": "~0.4.1"
26 | },
27 | "devDependencies": {
28 | "tape": "^4.0.0"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/phoneme-syllable-analyze.js:
--------------------------------------------------------------------------------
1 | // Usage:
2 | // cat phoneme_list.txt | node phoneme-syllable-analyze.js filename.txt [--make-module]
3 | var split = require('split');
4 | var cmuTextToPhonemeStream = require('./cmu-text-to-phoneme');
5 | var syllablizeThrough = require('./syllablize-through');
6 | var stringifyThrough = require('./stringify-through');
7 | var AnalyzeSyllableStream = require('./syllablefreq-analysis-stream');
8 | var fs = require('fs');
9 |
10 | var start = process.hrtime();
11 |
12 | var settings = {
13 | outFilename: process.argv[2],
14 | outputAsModule: process.argv[3]
15 | };
16 |
17 | var writableFileStream = fs.createWriteStream(settings.outFilename, {
18 | flags: 'w',
19 | encoding: 'utf8',
20 | });
21 |
22 | process.stdin.setEncoding('utf8');
23 |
24 | var analysisStream = new AnalyzeSyllableStream({
25 | objectMode: true,
26 | done: function analysisDone(error, syllablesByFrequency) {
27 | if (error) {
28 | console.log(error);
29 | }
30 | else {
31 | var writableFileStream = fs.createWriteStream(settings.outFilename, {
32 | flags: 'w',
33 | encoding: 'utf8',
34 | });
35 | if ('--make-module' === settings.outputAsModule) {
36 | writableFileStream.write('module.exports = ');
37 | }
38 |
39 | writableFileStream.write(
40 | JSON.stringify(syllablesByFrequency, null, ' '));
41 |
42 | if ('--make-module' === settings.outputAsModule) {
43 | writableFileStream.write(';\n');
44 | }
45 |
46 | var elapsedTime = process.hrtime(start);
47 | console.log('Syllablizing and analyzing took %d seconds and %d nanoseconds',
48 | elapsedTime[0], elapsedTime[1]);
49 | }
50 | }
51 | });
52 |
53 | process.stdin
54 | .pipe(split())
55 | .pipe(cmuTextToPhonemeStream)
56 | .pipe(syllablizeThrough.createStream())
57 | .pipe(analysisStream);
58 |
--------------------------------------------------------------------------------
/phonemize-analyze-ff.js:
--------------------------------------------------------------------------------
1 | // Usage:
2 | // cat phoneme_list.txt | node phonemize-analyze-ff.js filename.txt [--make-module]
3 | var cmuTextToPhonemeStream = require('./cmu-text-to-phoneme');
4 | var split = require('split');
5 | var createFollowerFreqAnalyzeStream = require('./followerfreq-analysis-stream');
6 | var syllablizeThrough = require('./syllablize-through');
7 | var fs = require('fs');
8 |
9 | var cmdOpts = require('nomnom')
10 | .option('makeModule', {
11 | full: 'make-module',
12 | flag: true,
13 | help: 'Make a module instead of a JSON file.'
14 | })
15 | .option('analyzeInSyllables', {
16 | full: 'analyze-in-syllables',
17 | metavar: '',
18 | help: 'Analyze phoneme follower frequencies within syllables.',
19 | flag: true
20 | })
21 | .option('reverse', {
22 | full: 'reverse',
23 | metavar: '',
24 | help: 'Analyze phoneme *precedent* frequencies.',
25 | flag: false
26 | })
27 | .parse();
28 |
29 | var analysisStream = createFollowerFreqAnalyzeStream({
30 | objectMode: true,
31 | analyzeInSyllables: cmdOpts.analyzeInSyllables,
32 | reverse: cmdOpts.reverse,
33 | done: function analysisDone(error, followerFreqsForPhonemes) {
34 | if (error) {
35 | console.log(error);
36 | }
37 | else {
38 | var outStream = process.stdout;
39 |
40 | if (cmdOpts.makeModule) {
41 | outStream.write('module.exports = ');
42 | }
43 |
44 | outStream.write(
45 | JSON.stringify(followerFreqsForPhonemes, null, ' '));
46 |
47 | if (cmdOpts.makeModule) {
48 | outStream.write(';\n');
49 | }
50 | }
51 | }
52 | });
53 |
54 | process.stdin.setEncoding('utf8');
55 |
56 |
57 | var stream = process.stdin
58 | .pipe(split())
59 | .pipe(cmuTextToPhonemeStream);
60 |
61 | if (cmdOpts.analyzeInSyllables) {
62 | stream = stream.pipe(syllablizeThrough.createStream());
63 | }
64 |
65 | stream
66 | .pipe(analysisStream);
67 |
--------------------------------------------------------------------------------
/phonemize-console.js:
--------------------------------------------------------------------------------
1 | // Usage:
2 | // cat phoneme_list.txt | node phonemize-console.js
3 | var cmuTextToPhonemeStream = require('./cmu-text-to-phoneme');
4 | var split = require('split');
5 | var stringifyThrough = require('./stringify-through');
6 |
7 | var settings = {
8 | };
9 |
10 | process.stdin.setEncoding('utf8');
11 |
12 | process.stdin
13 | .pipe(split())
14 | .pipe(cmuTextToPhonemeStream)
15 | .pipe(stringifyThrough.createStream({indentString: ' '}))
16 | .pipe(process.stdout);
17 |
18 |
--------------------------------------------------------------------------------
/phonemize-file.js:
--------------------------------------------------------------------------------
1 | // Usage:
2 | // cat phoneme_list.txt | node phonemize-file.js filename.txt
3 | var cmuTextToPhonemeStream = require('./cmu-text-to-phoneme');
4 | var fs = require('fs');
5 | var Writable = require('stream').Writable;
6 | var split = require('split');
7 | var stringifyThrough = require('./stringify-through');
8 |
9 |
10 | var settings = {
11 | outFilename: process.argv[2]
12 | };
13 |
14 | var writableFileStream = fs.createWriteStream(settings.outFilename, {
15 | flags: 'w',
16 | encoding: 'utf8',
17 | });
18 |
19 | process.stdin.setEncoding('utf8');
20 |
21 | process.stdin
22 | .pipe(split())
23 | .pipe(cmuTextToPhonemeStream)
24 | .pipe(stringifyThrough.createStream({followupString: '\n'}))
25 | .pipe(writableFileStream);
26 |
--------------------------------------------------------------------------------
/phonemize-syllablize.js:
--------------------------------------------------------------------------------
1 | // Usage:
2 | // cat phoneme_list.txt | node phonemize-syllablize.js filename.txt [--make-module]
3 | var split = require('split');
4 | var cmuTextToPhonemeStream = require('./cmu-text-to-phoneme');
5 | var syllablizeThrough = require('./syllablize-through');
6 | var stringifyThrough = require('./stringify-through');
7 | var fs = require('fs');
8 |
9 | var start = process.hrtime();
10 |
11 | var settings = {
12 | outFilename: process.argv[2]
13 | };
14 |
15 | var writableFileStream = fs.createWriteStream(settings.outFilename, {
16 | flags: 'w',
17 | encoding: 'utf8',
18 | });
19 |
20 | writableFileStream.on('close', function writableStreamClosed() {
21 | var elapsedTime = process.hrtime(start);
22 | process.stderr.write('Syllablize took %d seconds and %d nanoseconds',
23 | elapsedTime[0], elapsedTime[1]);
24 | });
25 |
26 | if ('--make-module' === process.argv[3]) {
27 | writableFileStream.write('module.exports = ');
28 | }
29 |
30 | process.stdin.setEncoding('utf8');
31 |
32 |
33 | process.stdin
34 | .pipe(split())
35 | .pipe(cmuTextToPhonemeStream)
36 | .pipe(syllablizeThrough.createStream())
37 | .pipe(stringifyThrough.createStream({followupString: '\n'}))
38 | .pipe(writableFileStream);
39 |
40 |
41 |
--------------------------------------------------------------------------------
/stringify-through.js:
--------------------------------------------------------------------------------
1 | var through2 = require('through2');
2 |
3 | function createStream(opts) {
4 | if (opts) {
5 | var indentString = opts.indentString ? opts.indentString : null;
6 | var followupString = opts.followupString ? opts.followupString : '';
7 | }
8 |
9 | var stringifyThroughStream = through2({
10 | objectMode: true
11 | },
12 | function stringifyChunk(chunk, enc, callback) {
13 | this.push(JSON.stringify(chunk, null, indentString) + followupString);
14 | callback();
15 | }
16 | );
17 |
18 | return stringifyThroughStream;
19 | }
20 |
21 | module.exports = {createStream: createStream};
22 |
--------------------------------------------------------------------------------
/syllablefreq-analysis-stream.js:
--------------------------------------------------------------------------------
1 | // A stream that analyzes phoneme+syllable groups you write to it, then returns
2 | // the analysis, syllables by frequency and following frequency, via the
3 | // callback when the end is reached.
4 |
5 | var Writable = require('stream').Writable;
6 | var util = require('util');
7 |
8 | util.inherits(AnalyzeSyllableStream, Writable);
9 |
10 | function AnalyzeSyllableStream(opt) {
11 | Writable.call(this, opt);
12 |
13 | // Must use object mode.
14 | if (!opt.objectMode) {
15 | opt.objectMode = true;
16 | }
17 |
18 | this.opt = opt;
19 | this.syllablesByFrequency = {};
20 | }
21 |
22 | AnalyzeSyllableStream.prototype._write = function(group, encoding,
23 | callback) {
24 |
25 | this.recordSyllableFrequencies(group);
26 | callback();
27 | };
28 |
29 | AnalyzeSyllableStream.prototype.end = function end(callback) {
30 | if (this.opt.done) {
31 | this.opt.done(null, this.syllablesByFrequency);
32 | }
33 | };
34 |
35 | // Groups will look like this:
36 | // {
37 | // "word": "ABALONE",
38 | // "phonemes": [
39 | // {
40 | // "phoneme": "AE",
41 | // "stress": 2
42 | // },
43 | // {
44 | // "phoneme": "B",
45 | // "stress": -1
46 | // },
47 | // {
48 | // "phoneme": "AH",
49 | // "stress": 0
50 | // },
51 | // {
52 | // "phoneme": "L",
53 | // "stress": -1
54 | // },
55 | // {
56 | // "phoneme": "OW",
57 | // "stress": 1
58 | // },
59 | // {
60 | // "phoneme": "N",
61 | // "stress": -1
62 | // },
63 | // {
64 | // "phoneme": "IY",
65 | // "stress": 0
66 | // }
67 | // ],
68 | // "syllables": [
69 | // [
70 | // "AE"
71 | // ],
72 | // [
73 | // "B",
74 | // "AH"
75 | // ],
76 | // [
77 | // "L",
78 | // "OW"
79 | // ],
80 | // [
81 | // "N",
82 | // "IY"
83 | // ]
84 | // ]
85 | // }
86 |
87 | AnalyzeSyllableStream.prototype.recordSyllableFrequencies =
88 | function recordSyllableFrequencies(group) {
89 | var previousSyllable = 'START';
90 |
91 | for (var i = 0; i < group.syllables.length; ++i) {
92 | var syllable = group.syllables[i].join('-');
93 |
94 | var freqs = {};
95 | if (previousSyllable in this.syllablesByFrequency) {
96 | freqs = this.syllablesByFrequency[previousSyllable];
97 | }
98 | else {
99 | this.syllablesByFrequency[previousSyllable] = freqs;
100 | }
101 |
102 | var frequency = 0;
103 | if (syllable in freqs) {
104 | frequency = freqs[syllable];
105 | }
106 | frequency += 1;
107 | freqs[syllable] = frequency;
108 |
109 | previousSyllable = syllable;
110 | }
111 | };
112 |
113 | module.exports = AnalyzeSyllableStream;
114 |
--------------------------------------------------------------------------------
/syllablize-through.js:
--------------------------------------------------------------------------------
1 | var through2 = require('through2');
2 | var typesofphonemes = require('phoneme-types');
3 |
4 | function createStream() {
5 | var syllablizeThroughStream = through2({
6 | objectMode: true
7 | },
8 | function syllablize(phonemeGroup, enc, callback) {
9 |
10 | this.push(syllablizePhonemeGroup(phonemeGroup));
11 | callback();
12 | }
13 | );
14 |
15 | return syllablizeThroughStream;
16 | }
17 |
18 | // Phoneme groups will look like this:
19 | // {
20 | // "word": "ABALONE",
21 | // "phonemes": [
22 | // {"phoneme":"AE","stress":2},
23 | // {"phoneme":"B","stress":-1},
24 | // {"phoneme":"AH","stress":0},
25 | // {"phoneme":"L","stress":-1},
26 | // {"phoneme":"OW","stress":1},
27 | // {"phoneme":"N","stress":-1},
28 | // {"phoneme":"IY","stress":0}
29 | // ]
30 | // }
31 |
32 | function syllablizePhonemeGroup(phonemeGroup) {
33 | var syllables = [];
34 | var currentSyllable = [];
35 | var currentSyllableHasAVowel = false;
36 | var phonemes = phonemeGroup.phonemes;
37 |
38 | for (var i = 0; i < phonemes.length; ++i) {
39 | var phonemeInfo = phonemes[i];
40 | var nextPhonemeInfo = null;
41 | if (i + 1 < phonemes.length) {
42 | nextPhonemeInfo = phonemes[i + 1];
43 | }
44 |
45 | if (shouldBreakToNextSyllable(phonemeInfo, nextPhonemeInfo,
46 | currentSyllableHasAVowel)) {
47 |
48 | syllables.push(currentSyllable);
49 | currentSyllable = [phonemeInfo.phoneme];
50 | currentSyllableHasAVowel = typesofphonemes.isVowelish(phonemeInfo.phoneme);
51 | }
52 | else {
53 | currentSyllable.push(phonemeInfo.phoneme);
54 | if (!currentSyllableHasAVowel) {
55 | currentSyllableHasAVowel =
56 | typesofphonemes.isVowelish(phonemeInfo.phoneme);
57 | }
58 | }
59 | }
60 |
61 | if (currentSyllable.length > 0) {
62 | syllables.push(currentSyllable);
63 | }
64 |
65 | phonemeGroup.syllables = syllables;
66 |
67 | return phonemeGroup;
68 | }
69 |
70 | function shouldBreakToNextSyllable(currentPhoneme, nextPhoneme,
71 | currentSyllableHasAVowel) {
72 |
73 | if (!currentSyllableHasAVowel) {
74 | return false;
75 | }
76 | else if (currentPhoneme.stress > -1) {
77 | return true;
78 | }
79 | else if (nextPhoneme && nextPhoneme.stress > -1) {
80 | return true;
81 | }
82 | else {
83 | return false;
84 | }
85 | }
86 |
87 | module.exports = {createStream: createStream};
88 |
--------------------------------------------------------------------------------
/test/phoneme-follow-frequencies-baseline.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "START": {
3 | "EH": 2928,
4 | "K": 12969,
5 | "D": 7722,
6 | "IH": 4133,
7 | "AH": 3423,
8 | "SH": 2467,
9 | "P": 7833,
10 | "AE": 2906,
11 | "B": 9632,
12 | "F": 5561,
13 | "G": 4963,
14 | "R": 7445,
15 | "S": 12373,
16 | "T": 4854,
17 | "L": 5470,
18 | "OW": 1295,
19 | "HH": 6656,
20 | "EY": 490,
21 | "AA": 1898,
22 | "IY": 590,
23 | "ER": 389,
24 | "AY": 615,
25 | "AO": 883,
26 | "AW": 351,
27 | "CH": 1260,
28 | "Z": 946,
29 | "JH": 2148,
30 | "Y": 1350,
31 | "OY": 28,
32 | "ZH": 91,
33 | "N": 3214,
34 | "M": 9450,
35 | "W": 3773,
36 | "UW": 84,
37 | "TH": 636,
38 | "DH": 67,
39 | "UH": 14,
40 | "V": 2427
41 | },
42 | "EH": {
43 | "K": 2950,
44 | "N": 4860,
45 | "S": 2451,
46 | "F": 474,
47 | "R": 3885,
48 | "M": 1406,
49 | "TH": 181,
50 | "L": 4080,
51 | "T": 1947,
52 | "D": 1331,
53 | "G": 514,
54 | "P": 633,
55 | "SH": 331,
56 | "V": 655,
57 | "END": 34,
58 | "JH": 236,
59 | "B": 296,
60 | "HH": 54,
61 | "Z": 465,
62 | "DH": 101,
63 | "NG": 259,
64 | "CH": 147,
65 | "W": 16,
66 | "ZH": 38,
67 | "Y": 4,
68 | "AH": 3,
69 | "OW": 1,
70 | "IY": 1
71 | },
72 | "K": {
73 | "S": 3613,
74 | "L": 2122,
75 | "W": 1291,
76 | "AH": 5758,
77 | "AO": 1317,
78 | "Y": 702,
79 | "OW": 2112,
80 | "EY": 996,
81 | "AA": 3319,
82 | "END": 5282,
83 | "ER": 1858,
84 | "IH": 1712,
85 | "T": 1858,
86 | "SH": 410,
87 | "R": 2517,
88 | "AE": 1902,
89 | "IY": 2233,
90 | "AW": 442,
91 | "UW": 472,
92 | "UH": 124,
93 | "HH": 148,
94 | "M": 299,
95 | "N": 298,
96 | "CH": 121,
97 | "EH": 813,
98 | "AY": 220,
99 | "B": 125,
100 | "Z": 11,
101 | "D": 102,
102 | "OY": 59,
103 | "F": 100,
104 | "G": 14,
105 | "P": 48,
106 | "V": 37,
107 | "TH": 13,
108 | "JH": 11,
109 | "K": 6
110 | },
111 | "S": {
112 | "K": 3529,
113 | "END": 11261,
114 | "AY": 845,
115 | "EH": 1947,
116 | "AE": 816,
117 | "T": 9657,
118 | "IH": 3658,
119 | "IY": 2289,
120 | "AH": 5073,
121 | "L": 1117,
122 | "CH": 160,
123 | "EY": 513,
124 | "AA": 888,
125 | "OW": 685,
126 | "AO": 436,
127 | "ER": 1187,
128 | "Y": 36,
129 | "SH": 9,
130 | "D": 77,
131 | "M": 743,
132 | "P": 1974,
133 | "TH": 34,
134 | "UW": 592,
135 | "W": 577,
136 | "V": 52,
137 | "B": 330,
138 | "HH": 82,
139 | "Z": 1,
140 | "AW": 116,
141 | "G": 61,
142 | "N": 470,
143 | "F": 221,
144 | "R": 96,
145 | "UH": 23,
146 | "JH": 18,
147 | "S": 26,
148 | "ZH": 6,
149 | "OY": 30,
150 | "DH": 1
151 | },
152 | "L": {
153 | "AH": 5587,
154 | "OW": 1570,
155 | "K": 579,
156 | "END": 7440,
157 | "EH": 1922,
158 | "IH": 5201,
159 | "S": 681,
160 | "AE": 2098,
161 | "EY": 1551,
162 | "ER": 2152,
163 | "Z": 2058,
164 | "IY": 5622,
165 | "N": 138,
166 | "B": 563,
167 | "D": 2066,
168 | "UW": 1012,
169 | "P": 199,
170 | "V": 434,
171 | "TH": 68,
172 | "AO": 876,
173 | "AY": 1559,
174 | "M": 783,
175 | "AA": 1588,
176 | "F": 479,
177 | "T": 1246,
178 | "Y": 395,
179 | "CH": 118,
180 | "G": 192,
181 | "UH": 101,
182 | "HH": 160,
183 | "W": 182,
184 | "JH": 82,
185 | "OY": 160,
186 | "AW": 291,
187 | "R": 109,
188 | "SH": 57,
189 | "DH": 4,
190 | "ZH": 1,
191 | "L": 8
192 | },
193 | "AH": {
194 | "M": 4382,
195 | "N": 21168,
196 | "B": 2349,
197 | "L": 11840,
198 | "V": 982,
199 | "P": 1464,
200 | "F": 1358,
201 | "Z": 1942,
202 | "S": 4955,
203 | "END": 6691,
204 | "D": 2175,
205 | "T": 3928,
206 | "K": 3612,
207 | "G": 1175,
208 | "HH": 290,
209 | "W": 312,
210 | "TH": 239,
211 | "CH": 282,
212 | "JH": 719,
213 | "NG": 430,
214 | "R": 125,
215 | "SH": 306,
216 | "DH": 93,
217 | "AA": 5,
218 | "Y": 43,
219 | "ER": 2,
220 | "AO": 4,
221 | "IY": 3,
222 | "ZH": 10,
223 | "AE": 2,
224 | "EY": 2,
225 | "EH": 4,
226 | "OW": 1,
227 | "IH": 1
228 | },
229 | "M": {
230 | "EY": 817,
231 | "P": 1670,
232 | "END": 2546,
233 | "AH": 6937,
234 | "IY": 1037,
235 | "IH": 2754,
236 | "AA": 2158,
237 | "B": 1079,
238 | "Z": 835,
239 | "EH": 1834,
240 | "AE": 1784,
241 | "S": 222,
242 | "CH": 20,
243 | "OW": 904,
244 | "D": 193,
245 | "Y": 367,
246 | "AY": 713,
247 | "K": 105,
248 | "ER": 1356,
249 | "R": 96,
250 | "N": 91,
251 | "UW": 245,
252 | "L": 185,
253 | "AO": 694,
254 | "G": 30,
255 | "UH": 86,
256 | "AW": 109,
257 | "F": 147,
258 | "JH": 5,
259 | "HH": 38,
260 | "T": 57,
261 | "V": 13,
262 | "W": 49,
263 | "M": 9,
264 | "SH": 29,
265 | "OY": 53,
266 | "TH": 13
267 | },
268 | "EY": {
269 | "SH": 1451,
270 | "END": 1015,
271 | "Z": 660,
272 | "F": 94,
273 | "T": 2827,
274 | "B": 370,
275 | "ZH": 67,
276 | "AH": 97,
277 | "L": 988,
278 | "M": 457,
279 | "S": 677,
280 | "N": 1444,
281 | "D": 784,
282 | "V": 475,
283 | "K": 678,
284 | "JH": 194,
285 | "G": 264,
286 | "IY": 19,
287 | "R": 76,
288 | "P": 253,
289 | "OW": 60,
290 | "HH": 57,
291 | "AY": 2,
292 | "NG": 38,
293 | "CH": 51,
294 | "TH": 35,
295 | "EY": 6,
296 | "Y": 37,
297 | "IH": 89,
298 | "ER": 126,
299 | "EH": 31,
300 | "AA": 14,
301 | "AO": 20,
302 | "DH": 18,
303 | "W": 24,
304 | "AW": 5,
305 | "UW": 2,
306 | "AE": 2
307 | },
308 | "SH": {
309 | "AH": 3463,
310 | "AA": 322,
311 | "END": 710,
312 | "T": 132,
313 | "IH": 725,
314 | "ER": 302,
315 | "IY": 480,
316 | "AY": 110,
317 | "M": 167,
318 | "N": 168,
319 | "L": 147,
320 | "Y": 27,
321 | "EY": 169,
322 | "EH": 369,
323 | "AE": 253,
324 | "AO": 169,
325 | "B": 54,
326 | "K": 54,
327 | "D": 6,
328 | "V": 9,
329 | "F": 18,
330 | "R": 176,
331 | "W": 127,
332 | "UH": 82,
333 | "CH": 2,
334 | "UW": 196,
335 | "OY": 12,
336 | "OW": 180,
337 | "AW": 35,
338 | "G": 2,
339 | "P": 2,
340 | "HH": 4,
341 | "JH": 1
342 | },
343 | "N": {
344 | "P": 139,
345 | "T": 5979,
346 | "D": 5354,
347 | "K": 690,
348 | "END": 14916,
349 | "ER": 1829,
350 | "Z": 4346,
351 | "TH": 203,
352 | "M": 259,
353 | "S": 3693,
354 | "IY": 2732,
355 | "IH": 3083,
356 | "HH": 383,
357 | "AH": 4776,
358 | "AE": 743,
359 | "EH": 1116,
360 | "AO": 512,
361 | "EY": 738,
362 | "SH": 377,
363 | "CH": 571,
364 | "DH": 13,
365 | "B": 708,
366 | "OW": 1492,
367 | "V": 418,
368 | "AA": 1133,
369 | "AY": 517,
370 | "AW": 126,
371 | "OY": 64,
372 | "UW": 545,
373 | "Y": 447,
374 | "G": 146,
375 | "JH": 695,
376 | "L": 343,
377 | "W": 224,
378 | "F": 693,
379 | "R": 290,
380 | "ZH": 7,
381 | "UH": 55,
382 | "N": 27
383 | },
384 | "P": {
385 | "OY": 130,
386 | "S": 753,
387 | "ER": 1799,
388 | "AA": 1345,
389 | "AH": 1678,
390 | "EH": 1398,
391 | "END": 1113,
392 | "IH": 1314,
393 | "L": 1388,
394 | "T": 640,
395 | "SH": 136,
396 | "OW": 693,
397 | "UH": 96,
398 | "N": 61,
399 | "EY": 514,
400 | "Y": 272,
401 | "R": 2732,
402 | "AE": 924,
403 | "AO": 545,
404 | "AW": 167,
405 | "IY": 1045,
406 | "AY": 290,
407 | "K": 101,
408 | "G": 22,
409 | "F": 99,
410 | "UW": 168,
411 | "CH": 41,
412 | "HH": 25,
413 | "W": 41,
414 | "D": 29,
415 | "M": 56,
416 | "B": 27,
417 | "TH": 7,
418 | "JH": 9,
419 | "V": 2,
420 | "P": 3,
421 | "Z": 3
422 | },
423 | "OY": {
424 | "N": 212,
425 | "D": 126,
426 | "T": 80,
427 | "END": 172,
428 | "L": 138,
429 | "Z": 85,
430 | "S": 104,
431 | "AH": 67,
432 | "IH": 25,
433 | "OW": 11,
434 | "M": 22,
435 | "TH": 3,
436 | "K": 26,
437 | "ER": 59,
438 | "P": 4,
439 | "V": 6,
440 | "R": 19,
441 | "ZH": 1,
442 | "G": 9,
443 | "AA": 7,
444 | "AE": 5,
445 | "IY": 8,
446 | "EH": 7,
447 | "F": 14,
448 | "HH": 2,
449 | "CH": 20,
450 | "B": 18,
451 | "SH": 5,
452 | "JH": 1,
453 | "Y": 4,
454 | "DH": 1,
455 | "UW": 5
456 | },
457 | "T": {
458 | "END": 9305,
459 | "S": 4795,
460 | "R": 4077,
461 | "IH": 5312,
462 | "W": 333,
463 | "P": 75,
464 | "AA": 1303,
465 | "UW": 551,
466 | "IY": 2917,
467 | "OW": 1348,
468 | "M": 374,
469 | "AW": 157,
470 | "AH": 5699,
471 | "EH": 1989,
472 | "ER": 4062,
473 | "L": 775,
474 | "N": 323,
475 | "EY": 1085,
476 | "AO": 705,
477 | "Y": 82,
478 | "AY": 851,
479 | "HH": 117,
480 | "AE": 1138,
481 | "K": 214,
482 | "V": 32,
483 | "F": 172,
484 | "OY": 56,
485 | "UH": 94,
486 | "D": 42,
487 | "CH": 24,
488 | "Z": 192,
489 | "B": 139,
490 | "G": 53,
491 | "JH": 23,
492 | "T": 19,
493 | "TH": 7,
494 | "SH": 12,
495 | "DH": 4
496 | },
497 | "OW": {
498 | "Z": 1283,
499 | "T": 931,
500 | "END": 5270,
501 | "P": 443,
502 | "L": 2536,
503 | "N": 1593,
504 | "M": 852,
505 | "D": 750,
506 | "K": 852,
507 | "S": 1060,
508 | "AH": 166,
509 | "CH": 104,
510 | "V": 868,
511 | "B": 621,
512 | "F": 225,
513 | "JH": 86,
514 | "IH": 136,
515 | "W": 38,
516 | "HH": 167,
517 | "Y": 47,
518 | "NG": 27,
519 | "ZH": 37,
520 | "G": 301,
521 | "SH": 244,
522 | "EH": 36,
523 | "R": 38,
524 | "EY": 25,
525 | "ER": 97,
526 | "TH": 48,
527 | "IY": 40,
528 | "AW": 3,
529 | "AE": 22,
530 | "DH": 19,
531 | "AO": 16,
532 | "AA": 48,
533 | "AY": 5,
534 | "OW": 1,
535 | "UW": 1,
536 | "UH": 2
537 | },
538 | "Z": {
539 | "K": 51,
540 | "END": 20453,
541 | "P": 25,
542 | "IY": 660,
543 | "Y": 11,
544 | "AH": 1547,
545 | "IH": 1195,
546 | "OW": 229,
547 | "AA": 297,
548 | "AO": 90,
549 | "D": 465,
550 | "ER": 613,
551 | "M": 274,
552 | "UH": 17,
553 | "EY": 240,
554 | "B": 216,
555 | "N": 127,
556 | "L": 194,
557 | "W": 102,
558 | "AE": 220,
559 | "HH": 18,
560 | "G": 15,
561 | "EH": 339,
562 | "V": 31,
563 | "AY": 147,
564 | "UW": 135,
565 | "T": 30,
566 | "F": 12,
567 | "R": 33,
568 | "S": 8,
569 | "SH": 2,
570 | "OY": 5,
571 | "JH": 3,
572 | "AW": 6,
573 | "CH": 1
574 | },
575 | "W": {
576 | "OW": 157,
577 | "AH": 516,
578 | "EH": 1188,
579 | "IH": 1940,
580 | "EY": 689,
581 | "AA": 837,
582 | "IY": 590,
583 | "AY": 761,
584 | "ER": 679,
585 | "END": 6,
586 | "UH": 369,
587 | "AO": 840,
588 | "AE": 144,
589 | "B": 1,
590 | "UW": 69,
591 | "S": 3,
592 | "R": 1,
593 | "OY": 25,
594 | "AW": 17,
595 | "N": 2
596 | },
597 | "D": {
598 | "AH": 3686,
599 | "K": 146,
600 | "END": 8807,
601 | "IH": 4265,
602 | "P": 51,
603 | "DH": 1,
604 | "AE": 530,
605 | "EH": 1536,
606 | "AA": 881,
607 | "V": 170,
608 | "IY": 2028,
609 | "OW": 864,
610 | "N": 199,
611 | "UW": 507,
612 | "R": 1282,
613 | "Z": 1338,
614 | "L": 569,
615 | "EY": 666,
616 | "UH": 65,
617 | "AY": 584,
618 | "HH": 124,
619 | "ER": 1852,
620 | "W": 261,
621 | "JH": 5,
622 | "M": 297,
623 | "AO": 509,
624 | "S": 285,
625 | "T": 46,
626 | "SH": 42,
627 | "OY": 43,
628 | "AW": 255,
629 | "Y": 71,
630 | "TH": 12,
631 | "B": 184,
632 | "CH": 16,
633 | "F": 125,
634 | "G": 34,
635 | "D": 5
636 | },
637 | "B": {
638 | "AH": 2906,
639 | "AW": 251,
640 | "IH": 1451,
641 | "ER": 2518,
642 | "END": 423,
643 | "IY": 1165,
644 | "AA": 1476,
645 | "AE": 1204,
646 | "EH": 1475,
647 | "EY": 470,
648 | "V": 17,
649 | "UW": 302,
650 | "R": 2429,
651 | "Z": 253,
652 | "K": 60,
653 | "D": 106,
654 | "HH": 16,
655 | "AY": 451,
656 | "JH": 31,
657 | "L": 1305,
658 | "N": 40,
659 | "OW": 850,
660 | "AO": 682,
661 | "P": 6,
662 | "S": 243,
663 | "SH": 7,
664 | "T": 29,
665 | "W": 48,
666 | "Y": 298,
667 | "UH": 325,
668 | "OY": 142,
669 | "M": 47,
670 | "CH": 6,
671 | "G": 3,
672 | "F": 6
673 | },
674 | "V": {
675 | "K": 14,
676 | "AA": 522,
677 | "IH": 1603,
678 | "IY": 824,
679 | "END": 866,
680 | "Z": 304,
681 | "B": 6,
682 | "D": 116,
683 | "L": 230,
684 | "EY": 382,
685 | "EH": 808,
686 | "AH": 1325,
687 | "M": 20,
688 | "ER": 1639,
689 | "AY": 344,
690 | "AE": 734,
691 | "OW": 292,
692 | "N": 60,
693 | "AO": 107,
694 | "R": 150,
695 | "OY": 80,
696 | "AW": 28,
697 | "T": 11,
698 | "S": 47,
699 | "Y": 111,
700 | "W": 19,
701 | "HH": 5,
702 | "UW": 19,
703 | "TH": 3,
704 | "G": 5,
705 | "JH": 2,
706 | "F": 1,
707 | "P": 2,
708 | "CH": 7,
709 | "SH": 1,
710 | "UH": 11
711 | },
712 | "IH": {
713 | "N": 7645,
714 | "S": 5059,
715 | "NG": 7559,
716 | "L": 3705,
717 | "Z": 2541,
718 | "G": 1214,
719 | "P": 1239,
720 | "R": 1636,
721 | "K": 5458,
722 | "D": 2439,
723 | "T": 3178,
724 | "JH": 800,
725 | "M": 1881,
726 | "SH": 1170,
727 | "V": 1421,
728 | "CH": 580,
729 | "ZH": 85,
730 | "B": 649,
731 | "F": 969,
732 | "TH": 245,
733 | "END": 16,
734 | "DH": 56,
735 | "HH": 138,
736 | "W": 42,
737 | "Y": 14,
738 | "AA": 1,
739 | "AO": 2,
740 | "OY": 1,
741 | "OW": 1,
742 | "AE": 2
743 | },
744 | "AA": {
745 | "R": 6339,
746 | "S": 1205,
747 | "M": 1506,
748 | "T": 1308,
749 | "P": 883,
750 | "B": 628,
751 | "K": 1772,
752 | "L": 2477,
753 | "N": 4076,
754 | "D": 838,
755 | "Z": 383,
756 | "CH": 227,
757 | "HH": 80,
758 | "V": 478,
759 | "ZH": 61,
760 | "END": 186,
761 | "IY": 50,
762 | "G": 572,
763 | "F": 314,
764 | "JH": 228,
765 | "ER": 8,
766 | "Y": 55,
767 | "SH": 189,
768 | "W": 97,
769 | "NG": 261,
770 | "TH": 90,
771 | "IH": 17,
772 | "AH": 8,
773 | "AO": 2,
774 | "OW": 23,
775 | "DH": 39,
776 | "EY": 1,
777 | "UW": 22,
778 | "EH": 8,
779 | "AY": 2,
780 | "OY": 1,
781 | "AA": 1
782 | },
783 | "R": {
784 | "P": 299,
785 | "AH": 6099,
786 | "S": 678,
787 | "IH": 4987,
788 | "AW": 391,
789 | "AY": 1327,
790 | "IY": 6206,
791 | "K": 924,
792 | "T": 1841,
793 | "END": 1833,
794 | "D": 1405,
795 | "UW": 1293,
796 | "AO": 662,
797 | "AA": 1997,
798 | "Z": 632,
799 | "M": 834,
800 | "N": 818,
801 | "SH": 171,
802 | "AE": 2793,
803 | "EY": 1860,
804 | "EH": 2903,
805 | "OW": 2885,
806 | "B": 481,
807 | "OY": 177,
808 | "ER": 134,
809 | "TH": 164,
810 | "W": 133,
811 | "F": 240,
812 | "G": 377,
813 | "HH": 89,
814 | "L": 499,
815 | "UH": 137,
816 | "V": 180,
817 | "CH": 160,
818 | "JH": 217,
819 | "Y": 33,
820 | "R": 2,
821 | "ZH": 8,
822 | "DH": 16,
823 | "NG": 4
824 | },
825 | "AY": {
826 | "N": 1558,
827 | "T": 1218,
828 | "F": 181,
829 | "D": 1013,
830 | "R": 502,
831 | "Z": 1413,
832 | "END": 397,
833 | "ER": 444,
834 | "K": 679,
835 | "S": 560,
836 | "V": 281,
837 | "IY": 19,
838 | "EH": 45,
839 | "SH": 36,
840 | "G": 161,
841 | "L": 612,
842 | "AH": 591,
843 | "M": 421,
844 | "P": 243,
845 | "W": 39,
846 | "JH": 60,
847 | "IH": 137,
848 | "B": 273,
849 | "AA": 61,
850 | "TH": 11,
851 | "OW": 116,
852 | "UW": 10,
853 | "AE": 80,
854 | "Y": 10,
855 | "AO": 15,
856 | "DH": 17,
857 | "CH": 20,
858 | "AW": 4,
859 | "EY": 10,
860 | "HH": 23,
861 | "NG": 16,
862 | "AY": 2
863 | },
864 | "ER": {
865 | "S": 1068,
866 | "K": 794,
867 | "EH": 335,
868 | "G": 945,
869 | "END": 10026,
870 | "Z": 3505,
871 | "D": 1441,
872 | "F": 298,
873 | "AH": 830,
874 | "L": 659,
875 | "M": 881,
876 | "N": 1052,
877 | "EY": 495,
878 | "T": 1257,
879 | "IH": 839,
880 | "IY": 765,
881 | "AA": 269,
882 | "AY": 192,
883 | "B": 546,
884 | "ER": 104,
885 | "HH": 141,
886 | "OW": 221,
887 | "SH": 218,
888 | "TH": 211,
889 | "W": 140,
890 | "DH": 37,
891 | "AO": 71,
892 | "P": 283,
893 | "JH": 238,
894 | "AE": 189,
895 | "UW": 63,
896 | "CH": 180,
897 | "V": 404,
898 | "AW": 30,
899 | "OY": 18,
900 | "ZH": 32,
901 | "R": 160,
902 | "Y": 13,
903 | "UH": 1
904 | },
905 | "AE": {
906 | "M": 1752,
907 | "N": 5480,
908 | "SH": 473,
909 | "B": 647,
910 | "K": 2461,
911 | "D": 920,
912 | "L": 2023,
913 | "TH": 238,
914 | "Z": 225,
915 | "HH": 49,
916 | "CH": 323,
917 | "S": 1658,
918 | "T": 1389,
919 | "P": 771,
920 | "JH": 160,
921 | "F": 626,
922 | "G": 698,
923 | "W": 10,
924 | "NG": 964,
925 | "R": 459,
926 | "V": 373,
927 | "ZH": 18,
928 | "DH": 44,
929 | "AH": 2,
930 | "END": 5,
931 | "UW": 1
932 | },
933 | "F": {
934 | "IY": 772,
935 | "R": 1281,
936 | "T": 484,
937 | "AH": 1160,
938 | "UH": 133,
939 | "AO": 817,
940 | "ER": 1171,
941 | "EY": 245,
942 | "AY": 718,
943 | "END": 1002,
944 | "S": 575,
945 | "OW": 325,
946 | "L": 987,
947 | "AA": 553,
948 | "EH": 921,
949 | "IH": 1370,
950 | "G": 22,
951 | "M": 46,
952 | "AW": 80,
953 | "SH": 10,
954 | "UW": 130,
955 | "Y": 219,
956 | "OY": 29,
957 | "AE": 454,
958 | "N": 54,
959 | "D": 16,
960 | "HH": 14,
961 | "K": 45,
962 | "B": 15,
963 | "W": 19,
964 | "TH": 20,
965 | "P": 9,
966 | "Z": 4,
967 | "F": 2,
968 | "V": 1
969 | },
970 | "IY": {
971 | "END": 13308,
972 | "Z": 2473,
973 | "AH": 2655,
974 | "K": 1032,
975 | "EH": 303,
976 | "V": 684,
977 | "EY": 379,
978 | "N": 2536,
979 | "L": 1348,
980 | "OW": 810,
981 | "B": 415,
982 | "D": 1074,
983 | "M": 824,
984 | "IH": 293,
985 | "ER": 435,
986 | "T": 1270,
987 | "SH": 135,
988 | "S": 1005,
989 | "ZH": 34,
990 | "AE": 321,
991 | "AA": 486,
992 | "JH": 165,
993 | "CH": 246,
994 | "HH": 161,
995 | "R": 322,
996 | "Y": 46,
997 | "TH": 85,
998 | "UW": 63,
999 | "W": 118,
1000 | "AO": 95,
1001 | "G": 465,
1002 | "P": 471,
1003 | "NG": 20,
1004 | "F": 314,
1005 | "AY": 14,
1006 | "IY": 21,
1007 | "DH": 17,
1008 | "OY": 3,
1009 | "AW": 9,
1010 | "UH": 2
1011 | },
1012 | "AW": {
1013 | "T": 538,
1014 | "N": 874,
1015 | "S": 405,
1016 | "D": 147,
1017 | "M": 98,
1018 | "R": 96,
1019 | "L": 119,
1020 | "ER": 223,
1021 | "END": 230,
1022 | "AH": 94,
1023 | "IH": 37,
1024 | "Z": 139,
1025 | "TH": 69,
1026 | "IY": 30,
1027 | "SH": 26,
1028 | "UW": 3,
1029 | "Y": 7,
1030 | "B": 62,
1031 | "K": 38,
1032 | "F": 15,
1033 | "G": 31,
1034 | "NG": 3,
1035 | "P": 14,
1036 | "CH": 52,
1037 | "W": 11,
1038 | "V": 6,
1039 | "EH": 3,
1040 | "AA": 9,
1041 | "JH": 8,
1042 | "HH": 4,
1043 | "DH": 5,
1044 | "OW": 2,
1045 | "AY": 1,
1046 | "AE": 1,
1047 | "AO": 1
1048 | },
1049 | "AO": {
1050 | "R": 6034,
1051 | "TH": 115,
1052 | "D": 236,
1053 | "N": 491,
1054 | "S": 492,
1055 | "F": 714,
1056 | "G": 167,
1057 | "T": 389,
1058 | "L": 1237,
1059 | "Z": 146,
1060 | "NG": 277,
1061 | "P": 74,
1062 | "K": 276,
1063 | "END": 246,
1064 | "M": 80,
1065 | "JH": 25,
1066 | "B": 75,
1067 | "CH": 33,
1068 | "EH": 3,
1069 | "SH": 68,
1070 | "AH": 11,
1071 | "ER": 10,
1072 | "V": 45,
1073 | "IY": 8,
1074 | "IH": 20,
1075 | "HH": 6,
1076 | "DH": 2,
1077 | "Y": 13,
1078 | "ZH": 1,
1079 | "W": 3
1080 | },
1081 | "Y": {
1082 | "UW": 2405,
1083 | "AH": 1146,
1084 | "ER": 286,
1085 | "EH": 180,
1086 | "EY": 40,
1087 | "AA": 317,
1088 | "OW": 179,
1089 | "UH": 232,
1090 | "AO": 100,
1091 | "AE": 126,
1092 | "IH": 60,
1093 | "IY": 56,
1094 | "N": 4,
1095 | "AW": 17,
1096 | "T": 1,
1097 | "D": 1,
1098 | "S": 1,
1099 | "AY": 4,
1100 | "END": 6,
1101 | "OY": 2,
1102 | "Z": 2,
1103 | "W": 1
1104 | },
1105 | "UW": {
1106 | "Z": 677,
1107 | "W": 32,
1108 | "EY": 93,
1109 | "D": 578,
1110 | "T": 903,
1111 | "L": 812,
1112 | "END": 757,
1113 | "M": 693,
1114 | "HH": 57,
1115 | "SH": 159,
1116 | "S": 640,
1117 | "AH": 315,
1118 | "IH": 208,
1119 | "AE": 26,
1120 | "EH": 91,
1121 | "N": 800,
1122 | "P": 509,
1123 | "CH": 171,
1124 | "R": 183,
1125 | "IY": 117,
1126 | "AA": 57,
1127 | "Y": 29,
1128 | "K": 419,
1129 | "ZH": 62,
1130 | "V": 183,
1131 | "F": 130,
1132 | "B": 395,
1133 | "NG": 18,
1134 | "JH": 121,
1135 | "TH": 112,
1136 | "G": 210,
1137 | "AY": 10,
1138 | "ER": 113,
1139 | "DH": 20,
1140 | "AW": 3,
1141 | "UH": 4,
1142 | "OW": 27,
1143 | "AO": 13,
1144 | "UW": 1
1145 | },
1146 | "G": {
1147 | "EH": 368,
1148 | "AH": 2054,
1149 | "IH": 726,
1150 | "END": 1058,
1151 | "EY": 430,
1152 | "OW": 681,
1153 | "AO": 295,
1154 | "ER": 1016,
1155 | "N": 400,
1156 | "AA": 869,
1157 | "AE": 561,
1158 | "L": 869,
1159 | "IY": 262,
1160 | "Z": 419,
1161 | "Y": 157,
1162 | "K": 6,
1163 | "F": 20,
1164 | "R": 2174,
1165 | "UW": 170,
1166 | "W": 230,
1167 | "AY": 134,
1168 | "UH": 137,
1169 | "D": 98,
1170 | "M": 138,
1171 | "S": 59,
1172 | "T": 15,
1173 | "B": 34,
1174 | "P": 12,
1175 | "SH": 9,
1176 | "AW": 56,
1177 | "HH": 24,
1178 | "TH": 1,
1179 | "OY": 21,
1180 | "JH": 13,
1181 | "ZH": 5,
1182 | "V": 1
1183 | },
1184 | "NG": {
1185 | "G": 825,
1186 | "END": 5867,
1187 | "D": 44,
1188 | "T": 172,
1189 | "L": 143,
1190 | "K": 1499,
1191 | "Z": 509,
1192 | "ER": 355,
1193 | "HH": 82,
1194 | "S": 63,
1195 | "SH": 25,
1196 | "W": 25,
1197 | "IH": 32,
1198 | "F": 22,
1199 | "AH": 57,
1200 | "M": 36,
1201 | "JH": 10,
1202 | "CH": 4,
1203 | "IY": 6,
1204 | "AE": 1,
1205 | "B": 36,
1206 | "P": 7,
1207 | "AW": 2,
1208 | "OW": 4,
1209 | "Y": 6,
1210 | "EY": 4,
1211 | "R": 11,
1212 | "V": 3,
1213 | "AO": 1,
1214 | "UW": 2,
1215 | "N": 7,
1216 | "TH": 17,
1217 | "AY": 1,
1218 | "EH": 1,
1219 | "AA": 2
1220 | },
1221 | "TH": {
1222 | "AH": 365,
1223 | "END": 666,
1224 | "IY": 279,
1225 | "EH": 105,
1226 | "S": 136,
1227 | "AA": 76,
1228 | "AO": 129,
1229 | "N": 22,
1230 | "EY": 26,
1231 | "ER": 206,
1232 | "IH": 174,
1233 | "AY": 40,
1234 | "R": 218,
1235 | "M": 30,
1236 | "UH": 2,
1237 | "AE": 63,
1238 | "L": 59,
1239 | "W": 60,
1240 | "OW": 32,
1241 | "G": 7,
1242 | "K": 30,
1243 | "SH": 4,
1244 | "T": 11,
1245 | "P": 12,
1246 | "Y": 17,
1247 | "D": 13,
1248 | "B": 26,
1249 | "AW": 16,
1250 | "UW": 20,
1251 | "F": 18,
1252 | "V": 6,
1253 | "JH": 2,
1254 | "CH": 3,
1255 | "HH": 9
1256 | },
1257 | "DH": {
1258 | "AH": 37,
1259 | "IY": 52,
1260 | "OW": 5,
1261 | "ER": 317,
1262 | "M": 5,
1263 | "END": 40,
1264 | "D": 18,
1265 | "Z": 15,
1266 | "IH": 23,
1267 | "R": 3,
1268 | "UW": 1,
1269 | "Y": 3,
1270 | "W": 1,
1271 | "S": 2,
1272 | "AY": 7,
1273 | "AA": 2,
1274 | "OY": 1,
1275 | "L": 1,
1276 | "N": 1,
1277 | "AE": 6,
1278 | "AW": 5,
1279 | "EH": 26,
1280 | "EY": 4,
1281 | "AO": 2
1282 | },
1283 | "HH": {
1284 | "AY": 658,
1285 | "AW": 389,
1286 | "AO": 527,
1287 | "AH": 775,
1288 | "AA": 1261,
1289 | "AE": 1206,
1290 | "EY": 332,
1291 | "EH": 1080,
1292 | "M": 2,
1293 | "OW": 723,
1294 | "IH": 647,
1295 | "IY": 303,
1296 | "UH": 87,
1297 | "ER": 408,
1298 | "OY": 37,
1299 | "UW": 180,
1300 | "Y": 202,
1301 | "W": 386,
1302 | "END": 25,
1303 | "L": 6,
1304 | "N": 1,
1305 | "R": 14
1306 | },
1307 | "UH": {
1308 | "L": 283,
1309 | "R": 840,
1310 | "G": 21,
1311 | "D": 440,
1312 | "T": 88,
1313 | "K": 343,
1314 | "SH": 92,
1315 | "M": 37,
1316 | "END": 3,
1317 | "F": 8,
1318 | "Z": 4,
1319 | "S": 27,
1320 | "N": 36,
1321 | "CH": 10,
1322 | "NG": 5,
1323 | "IH": 1,
1324 | "P": 6,
1325 | "V": 2,
1326 | "B": 11,
1327 | "DH": 2,
1328 | "HH": 6,
1329 | "JH": 2,
1330 | "TH": 2
1331 | },
1332 | "CH": {
1333 | "AH": 612,
1334 | "IH": 602,
1335 | "END": 631,
1336 | "UW": 202,
1337 | "EH": 461,
1338 | "IY": 550,
1339 | "EY": 117,
1340 | "OW": 87,
1341 | "L": 40,
1342 | "ER": 623,
1343 | "AE": 252,
1344 | "R": 30,
1345 | "Y": 9,
1346 | "AA": 194,
1347 | "T": 117,
1348 | "B": 28,
1349 | "D": 8,
1350 | "W": 24,
1351 | "M": 62,
1352 | "UH": 27,
1353 | "K": 34,
1354 | "F": 27,
1355 | "HH": 12,
1356 | "S": 5,
1357 | "AY": 88,
1358 | "N": 21,
1359 | "AO": 54,
1360 | "AW": 25,
1361 | "OY": 11,
1362 | "G": 4,
1363 | "P": 2,
1364 | "JH": 1
1365 | },
1366 | "ZH": {
1367 | "Y": 5,
1368 | "AH": 247,
1369 | "IY": 24,
1370 | "END": 25,
1371 | "ER": 92,
1372 | "UW": 12,
1373 | "AO": 6,
1374 | "IH": 45,
1375 | "D": 12,
1376 | "UH": 4,
1377 | "W": 21,
1378 | "EH": 13,
1379 | "EY": 9,
1380 | "N": 4,
1381 | "M": 2,
1382 | "AA": 24,
1383 | "OW": 6,
1384 | "AY": 3,
1385 | "K": 3,
1386 | "AW": 6,
1387 | "AE": 1
1388 | },
1389 | "JH": {
1390 | "AA": 215,
1391 | "EH": 767,
1392 | "AH": 1129,
1393 | "END": 697,
1394 | "D": 151,
1395 | "M": 55,
1396 | "IH": 931,
1397 | "ER": 487,
1398 | "EY": 109,
1399 | "OY": 78,
1400 | "UW": 265,
1401 | "IY": 654,
1402 | "L": 18,
1403 | "AE": 260,
1404 | "AY": 63,
1405 | "OW": 166,
1406 | "AO": 100,
1407 | "F": 6,
1408 | "HH": 8,
1409 | "P": 8,
1410 | "S": 9,
1411 | "T": 6,
1412 | "W": 25,
1413 | "V": 2,
1414 | "Z": 2,
1415 | "K": 16,
1416 | "Y": 24,
1417 | "N": 7,
1418 | "R": 9,
1419 | "UH": 39,
1420 | "AW": 9,
1421 | "SH": 2,
1422 | "B": 2
1423 | }
1424 | };
1425 |
--------------------------------------------------------------------------------
/test/phoneme-follow-frequencies-in-syllables-baseline.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | "START": {
3 | "EH": 3794,
4 | "L": 27491,
5 | "M": 21337,
6 | "SH": 7342,
7 | "P": 13789,
8 | "K": 25811,
9 | "W": 7070,
10 | "D": 18826,
11 | "B": 18113,
12 | "IH": 5936,
13 | "AH": 8262,
14 | "S": 24560,
15 | "AE": 3556,
16 | "R": 24063,
17 | "F": 10532,
18 | "N": 19173,
19 | "G": 9580,
20 | "T": 26740,
21 | "TH": 1651,
22 | "OW": 2569,
23 | "DH": 489,
24 | "HH": 9158,
25 | "CH": 3913,
26 | "EY": 1501,
27 | "AA": 2856,
28 | "V": 8732,
29 | "Y": 4163,
30 | "Z": 5777,
31 | "JH": 5279,
32 | "ZH": 497,
33 | "ER": 2010,
34 | "IY": 1671,
35 | "AY": 843,
36 | "AO": 1122,
37 | "NG": 468,
38 | "UW": 255,
39 | "AW": 405,
40 | "OY": 51,
41 | "UH": 23
42 | },
43 | "EH": {
44 | "K": 2479,
45 | "N": 3607,
46 | "S": 1709,
47 | "F": 258,
48 | "END": 11849,
49 | "TH": 83,
50 | "R": 985,
51 | "T": 1120,
52 | "L": 2174,
53 | "D": 699,
54 | "P": 390,
55 | "M": 734,
56 | "SH": 100,
57 | "V": 130,
58 | "G": 292,
59 | "JH": 79,
60 | "Z": 253,
61 | "NG": 249,
62 | "B": 112,
63 | "CH": 44,
64 | "DH": 3,
65 | "ZH": 1,
66 | "W": 2,
67 | "HH": 1
68 | },
69 | "K": {
70 | "S": 2675,
71 | "END": 12195,
72 | "L": 997,
73 | "W": 564,
74 | "AH": 5758,
75 | "AO": 1317,
76 | "Y": 198,
77 | "OW": 2112,
78 | "EY": 996,
79 | "AA": 3319,
80 | "ER": 1858,
81 | "IH": 1712,
82 | "T": 770,
83 | "AE": 1902,
84 | "IY": 2233,
85 | "AW": 442,
86 | "UW": 472,
87 | "UH": 124,
88 | "CH": 2,
89 | "EH": 813,
90 | "AY": 220,
91 | "OY": 59,
92 | "D": 3,
93 | "G": 5,
94 | "TH": 7,
95 | "Z": 5,
96 | "R": 1642,
97 | "P": 5,
98 | "B": 26,
99 | "SH": 5,
100 | "N": 14,
101 | "M": 1,
102 | "V": 10,
103 | "F": 3,
104 | "K": 1
105 | },
106 | "S": {
107 | "K": 1438,
108 | "END": 20894,
109 | "AY": 845,
110 | "EH": 1947,
111 | "AE": 816,
112 | "T": 5700,
113 | "IH": 3658,
114 | "IY": 2289,
115 | "AH": 5073,
116 | "L": 406,
117 | "EY": 513,
118 | "AA": 888,
119 | "OW": 685,
120 | "AO": 436,
121 | "ER": 1187,
122 | "P": 1097,
123 | "UW": 592,
124 | "B": 26,
125 | "Z": 1,
126 | "AW": 116,
127 | "TH": 5,
128 | "UH": 23,
129 | "G": 21,
130 | "M": 246,
131 | "OY": 30,
132 | "HH": 7,
133 | "S": 23,
134 | "F": 20,
135 | "CH": 1,
136 | "Y": 5,
137 | "N": 232,
138 | "W": 384,
139 | "R": 12,
140 | "V": 20
141 | },
142 | "L": {
143 | "AH": 5587,
144 | "OW": 1570,
145 | "K": 166,
146 | "END": 12908,
147 | "EH": 1922,
148 | "IH": 5201,
149 | "S": 310,
150 | "AE": 2098,
151 | "EY": 1551,
152 | "ER": 2152,
153 | "Z": 1977,
154 | "IY": 5622,
155 | "N": 8,
156 | "D": 1414,
157 | "UW": 1012,
158 | "P": 71,
159 | "V": 63,
160 | "TH": 33,
161 | "AO": 876,
162 | "AY": 1559,
163 | "AA": 1588,
164 | "T": 548,
165 | "F": 210,
166 | "CH": 24,
167 | "G": 54,
168 | "UH": 101,
169 | "B": 95,
170 | "OY": 160,
171 | "AW": 291,
172 | "M": 121,
173 | "SH": 11,
174 | "W": 6,
175 | "JH": 10,
176 | "R": 1,
177 | "HH": 2,
178 | "Y": 10
179 | },
180 | "AH": {
181 | "END": 29935,
182 | "N": 17956,
183 | "L": 7392,
184 | "V": 127,
185 | "Z": 1497,
186 | "M": 2504,
187 | "D": 1170,
188 | "T": 1581,
189 | "S": 3597,
190 | "B": 809,
191 | "K": 1895,
192 | "P": 737,
193 | "G": 542,
194 | "JH": 140,
195 | "F": 316,
196 | "NG": 415,
197 | "CH": 66,
198 | "TH": 84,
199 | "SH": 106,
200 | "R": 9,
201 | "Y": 3,
202 | "HH": 10,
203 | "DH": 2,
204 | "W": 1
205 | },
206 | "M": {
207 | "EY": 817,
208 | "END": 5362,
209 | "AH": 6937,
210 | "IY": 1037,
211 | "IH": 2754,
212 | "AA": 2158,
213 | "Z": 796,
214 | "EH": 1834,
215 | "AE": 1784,
216 | "OW": 904,
217 | "P": 861,
218 | "D": 161,
219 | "AY": 713,
220 | "S": 128,
221 | "ER": 1356,
222 | "UW": 245,
223 | "B": 239,
224 | "AO": 694,
225 | "G": 7,
226 | "K": 22,
227 | "UH": 86,
228 | "AW": 109,
229 | "T": 17,
230 | "OY": 53,
231 | "F": 36,
232 | "CH": 1,
233 | "JH": 1,
234 | "TH": 2,
235 | "Y": 142,
236 | "HH": 2,
237 | "L": 5,
238 | "N": 1,
239 | "W": 4,
240 | "R": 12
241 | },
242 | "EY": {
243 | "END": 8559,
244 | "Z": 405,
245 | "T": 1289,
246 | "ZH": 6,
247 | "B": 63,
248 | "L": 562,
249 | "N": 990,
250 | "M": 185,
251 | "D": 314,
252 | "S": 348,
253 | "K": 240,
254 | "V": 160,
255 | "P": 95,
256 | "JH": 74,
257 | "NG": 38,
258 | "TH": 14,
259 | "R": 24,
260 | "G": 63,
261 | "CH": 17,
262 | "HH": 4,
263 | "DH": 12,
264 | "F": 37,
265 | "SH": 7,
266 | "Y": 1
267 | },
268 | "SH": {
269 | "AH": 3463,
270 | "AA": 322,
271 | "END": 1196,
272 | "T": 117,
273 | "IH": 725,
274 | "ER": 302,
275 | "IY": 480,
276 | "AY": 110,
277 | "EY": 169,
278 | "EH": 369,
279 | "AE": 253,
280 | "AO": 169,
281 | "B": 2,
282 | "K": 18,
283 | "UH": 82,
284 | "CH": 1,
285 | "UW": 196,
286 | "OY": 12,
287 | "OW": 180,
288 | "F": 2,
289 | "W": 100,
290 | "AW": 35,
291 | "Y": 2,
292 | "L": 81,
293 | "M": 65,
294 | "N": 57,
295 | "R": 164,
296 | "V": 1
297 | },
298 | "N": {
299 | "END": 28900,
300 | "T": 2907,
301 | "D": 2390,
302 | "K": 209,
303 | "ER": 1829,
304 | "Z": 3941,
305 | "IY": 2732,
306 | "IH": 3083,
307 | "AH": 4776,
308 | "AE": 743,
309 | "EH": 1116,
310 | "S": 1807,
311 | "AO": 512,
312 | "EY": 738,
313 | "TH": 78,
314 | "OW": 1492,
315 | "AA": 1133,
316 | "AY": 517,
317 | "AW": 126,
318 | "OY": 64,
319 | "UW": 545,
320 | "JH": 128,
321 | "P": 52,
322 | "G": 63,
323 | "HH": 8,
324 | "SH": 35,
325 | "B": 69,
326 | "CH": 126,
327 | "F": 171,
328 | "UH": 55,
329 | "W": 5,
330 | "V": 10,
331 | "Y": 20,
332 | "DH": 2
333 | },
334 | "P": {
335 | "OY": 130,
336 | "END": 4025,
337 | "ER": 1799,
338 | "AA": 1345,
339 | "AH": 1678,
340 | "EH": 1398,
341 | "IH": 1314,
342 | "T": 284,
343 | "OW": 693,
344 | "S": 584,
345 | "UH": 96,
346 | "EY": 514,
347 | "AE": 924,
348 | "AO": 545,
349 | "AW": 167,
350 | "IY": 1045,
351 | "AY": 290,
352 | "UW": 168,
353 | "G": 13,
354 | "CH": 3,
355 | "TH": 2,
356 | "K": 11,
357 | "D": 5,
358 | "SH": 2,
359 | "F": 46,
360 | "L": 567,
361 | "Y": 89,
362 | "W": 11,
363 | "Z": 2,
364 | "R": 1913,
365 | "B": 3
366 | },
367 | "OY": {
368 | "N": 176,
369 | "D": 94,
370 | "END": 694,
371 | "T": 42,
372 | "L": 88,
373 | "Z": 62,
374 | "S": 61,
375 | "M": 4,
376 | "TH": 2,
377 | "K": 8,
378 | "R": 7,
379 | "F": 7,
380 | "CH": 11,
381 | "B": 2,
382 | "JH": 1,
383 | "G": 5,
384 | "SH": 2
385 | },
386 | "T": {
387 | "END": 14971,
388 | "S": 4290,
389 | "IH": 5312,
390 | "W": 109,
391 | "AA": 1303,
392 | "UW": 551,
393 | "R": 1646,
394 | "IY": 2917,
395 | "OW": 1348,
396 | "AW": 157,
397 | "AH": 5699,
398 | "EH": 1989,
399 | "ER": 4062,
400 | "EY": 1085,
401 | "AO": 705,
402 | "AY": 851,
403 | "AE": 1138,
404 | "P": 15,
405 | "OY": 56,
406 | "UH": 94,
407 | "CH": 3,
408 | "Z": 32,
409 | "F": 12,
410 | "K": 26,
411 | "TH": 7,
412 | "N": 2,
413 | "L": 4,
414 | "G": 11,
415 | "SH": 2,
416 | "HH": 1,
417 | "B": 28,
418 | "V": 3,
419 | "T": 1,
420 | "D": 1,
421 | "Y": 23,
422 | "JH": 2
423 | },
424 | "OW": {
425 | "Z": 949,
426 | "T": 280,
427 | "END": 13659,
428 | "D": 236,
429 | "L": 1515,
430 | "K": 270,
431 | "N": 706,
432 | "S": 589,
433 | "M": 193,
434 | "F": 54,
435 | "V": 57,
436 | "P": 194,
437 | "NG": 27,
438 | "B": 110,
439 | "G": 98,
440 | "CH": 26,
441 | "JH": 12,
442 | "SH": 21,
443 | "TH": 22,
444 | "DH": 14,
445 | "ZH": 3,
446 | "R": 1,
447 | "HH": 1,
448 | "Y": 1
449 | },
450 | "Z": {
451 | "K": 16,
452 | "END": 21572,
453 | "IY": 660,
454 | "AH": 1547,
455 | "IH": 1195,
456 | "OW": 229,
457 | "AA": 297,
458 | "AO": 90,
459 | "D": 384,
460 | "ER": 613,
461 | "UH": 17,
462 | "EY": 240,
463 | "AE": 220,
464 | "B": 23,
465 | "EH": 339,
466 | "M": 20,
467 | "AY": 147,
468 | "UW": 135,
469 | "T": 4,
470 | "P": 4,
471 | "SH": 2,
472 | "N": 1,
473 | "OY": 5,
474 | "G": 10,
475 | "AW": 6,
476 | "S": 2,
477 | "Y": 3,
478 | "L": 11,
479 | "V": 2,
480 | "W": 17
481 | },
482 | "W": {
483 | "OW": 157,
484 | "AH": 516,
485 | "EH": 1188,
486 | "IH": 1940,
487 | "EY": 689,
488 | "AA": 837,
489 | "IY": 590,
490 | "AY": 761,
491 | "ER": 679,
492 | "END": 7,
493 | "UH": 369,
494 | "AO": 840,
495 | "AE": 144,
496 | "B": 1,
497 | "UW": 69,
498 | "S": 3,
499 | "OY": 25,
500 | "AW": 17,
501 | "N": 2
502 | },
503 | "D": {
504 | "AH": 3686,
505 | "K": 27,
506 | "END": 11899,
507 | "IH": 4265,
508 | "AE": 530,
509 | "EH": 1536,
510 | "AA": 881,
511 | "IY": 2028,
512 | "OW": 864,
513 | "UW": 507,
514 | "Z": 1305,
515 | "EY": 666,
516 | "UH": 65,
517 | "AY": 584,
518 | "ER": 1852,
519 | "M": 3,
520 | "AO": 509,
521 | "S": 166,
522 | "OY": 43,
523 | "AW": 255,
524 | "TH": 10,
525 | "B": 25,
526 | "T": 30,
527 | "F": 12,
528 | "G": 14,
529 | "V": 10,
530 | "HH": 2,
531 | "N": 2,
532 | "R": 480,
533 | "W": 44,
534 | "Y": 27,
535 | "P": 9,
536 | "SH": 4,
537 | "D": 1
538 | },
539 | "B": {
540 | "AH": 2906,
541 | "AW": 251,
542 | "IH": 1451,
543 | "ER": 2518,
544 | "END": 2497,
545 | "IY": 1165,
546 | "AA": 1476,
547 | "AE": 1204,
548 | "EH": 1475,
549 | "EY": 470,
550 | "UW": 302,
551 | "Z": 204,
552 | "D": 54,
553 | "AY": 451,
554 | "OW": 850,
555 | "AO": 682,
556 | "P": 5,
557 | "S": 136,
558 | "T": 13,
559 | "UH": 325,
560 | "OY": 142,
561 | "R": 1591,
562 | "Y": 149,
563 | "L": 688,
564 | "W": 25,
565 | "SH": 2,
566 | "F": 1,
567 | "K": 5,
568 | "G": 2,
569 | "HH": 1
570 | },
571 | "V": {
572 | "K": 1,
573 | "AA": 522,
574 | "IH": 1603,
575 | "IY": 824,
576 | "END": 1476,
577 | "Z": 300,
578 | "D": 110,
579 | "EY": 382,
580 | "EH": 808,
581 | "AH": 1325,
582 | "ER": 1639,
583 | "AY": 344,
584 | "AE": 734,
585 | "OW": 292,
586 | "AO": 107,
587 | "OY": 80,
588 | "AW": 28,
589 | "S": 35,
590 | "UW": 19,
591 | "T": 1,
592 | "TH": 3,
593 | "G": 3,
594 | "UH": 11,
595 | "Y": 18,
596 | "L": 16,
597 | "W": 3,
598 | "R": 14
599 | },
600 | "IH": {
601 | "N": 5947,
602 | "END": 16500,
603 | "S": 3673,
604 | "NG": 7194,
605 | "L": 1728,
606 | "Z": 1721,
607 | "P": 720,
608 | "D": 1796,
609 | "T": 1638,
610 | "K": 3834,
611 | "SH": 478,
612 | "V": 650,
613 | "CH": 320,
614 | "JH": 386,
615 | "R": 650,
616 | "M": 962,
617 | "B": 213,
618 | "F": 390,
619 | "TH": 176,
620 | "G": 728,
621 | "DH": 15,
622 | "HH": 19,
623 | "ZH": 8
624 | },
625 | "AA": {
626 | "R": 5268,
627 | "S": 654,
628 | "END": 10277,
629 | "T": 597,
630 | "P": 418,
631 | "L": 876,
632 | "N": 2627,
633 | "D": 276,
634 | "B": 279,
635 | "M": 718,
636 | "Z": 187,
637 | "K": 1156,
638 | "HH": 1,
639 | "G": 316,
640 | "F": 132,
641 | "JH": 33,
642 | "W": 2,
643 | "NG": 259,
644 | "V": 160,
645 | "SH": 65,
646 | "ZH": 31,
647 | "TH": 40,
648 | "CH": 59,
649 | "Y": 2,
650 | "DH": 2
651 | },
652 | "R": {
653 | "P": 135,
654 | "AH": 6099,
655 | "S": 304,
656 | "IH": 4987,
657 | "AW": 391,
658 | "AY": 1327,
659 | "IY": 6206,
660 | "K": 396,
661 | "END": 7873,
662 | "D": 721,
663 | "UW": 1293,
664 | "AO": 662,
665 | "AA": 1997,
666 | "Z": 571,
667 | "N": 368,
668 | "T": 872,
669 | "AE": 2793,
670 | "EY": 1860,
671 | "EH": 2903,
672 | "OW": 2885,
673 | "B": 60,
674 | "OY": 177,
675 | "ER": 134,
676 | "F": 103,
677 | "G": 81,
678 | "M": 209,
679 | "L": 69,
680 | "UH": 137,
681 | "TH": 90,
682 | "CH": 42,
683 | "V": 19,
684 | "JH": 61,
685 | "SH": 47,
686 | "ZH": 5,
687 | "W": 6,
688 | "DH": 1,
689 | "HH": 1,
690 | "Y": 1,
691 | "NG": 3
692 | },
693 | "AY": {
694 | "N": 1122,
695 | "T": 789,
696 | "END": 6106,
697 | "D": 562,
698 | "R": 218,
699 | "Z": 824,
700 | "S": 277,
701 | "F": 74,
702 | "V": 99,
703 | "L": 326,
704 | "K": 361,
705 | "M": 197,
706 | "P": 103,
707 | "B": 101,
708 | "SH": 20,
709 | "G": 51,
710 | "DH": 10,
711 | "TH": 7,
712 | "CH": 10,
713 | "NG": 16,
714 | "JH": 4,
715 | "HH": 1
716 | },
717 | "ER": {
718 | "END": 20895,
719 | "K": 373,
720 | "G": 603,
721 | "Z": 3411,
722 | "D": 1160,
723 | "L": 133,
724 | "T": 654,
725 | "N": 499,
726 | "B": 78,
727 | "S": 437,
728 | "M": 92,
729 | "TH": 176,
730 | "P": 123,
731 | "F": 72,
732 | "V": 85,
733 | "JH": 39,
734 | "SH": 51,
735 | "CH": 44,
736 | "DH": 1,
737 | "R": 17,
738 | "HH": 8
739 | },
740 | "AE": {
741 | "M": 1160,
742 | "N": 4216,
743 | "SH": 217,
744 | "B": 328,
745 | "END": 8173,
746 | "K": 1876,
747 | "Z": 110,
748 | "L": 912,
749 | "D": 534,
750 | "T": 611,
751 | "P": 433,
752 | "S": 1072,
753 | "F": 402,
754 | "TH": 126,
755 | "G": 436,
756 | "CH": 117,
757 | "NG": 913,
758 | "V": 87,
759 | "JH": 13,
760 | "R": 21,
761 | "ZH": 7,
762 | "HH": 3,
763 | "DH": 2
764 | },
765 | "F": {
766 | "IY": 772,
767 | "R": 904,
768 | "T": 286,
769 | "AH": 1160,
770 | "UH": 133,
771 | "AO": 817,
772 | "ER": 1171,
773 | "EY": 245,
774 | "AY": 718,
775 | "END": 2324,
776 | "S": 534,
777 | "OW": 325,
778 | "AA": 553,
779 | "EH": 921,
780 | "IH": 1370,
781 | "AW": 80,
782 | "UW": 130,
783 | "OY": 29,
784 | "AE": 454,
785 | "K": 3,
786 | "M": 1,
787 | "D": 1,
788 | "Y": 107,
789 | "TH": 4,
790 | "L": 648,
791 | "W": 5,
792 | "B": 1,
793 | "G": 2,
794 | "N": 1,
795 | "SH": 1,
796 | "F": 1,
797 | "P": 1,
798 | "Z": 1
799 | },
800 | "IY": {
801 | "END": 27363,
802 | "Z": 2147,
803 | "N": 1144,
804 | "D": 404,
805 | "M": 198,
806 | "K": 409,
807 | "V": 178,
808 | "S": 513,
809 | "L": 734,
810 | "T": 470,
811 | "SH": 35,
812 | "P": 175,
813 | "NG": 20,
814 | "F": 138,
815 | "G": 144,
816 | "HH": 13,
817 | "TH": 47,
818 | "R": 130,
819 | "CH": 79,
820 | "JH": 23,
821 | "DH": 8,
822 | "B": 83,
823 | "W": 1,
824 | "ZH": 1
825 | },
826 | "AW": {
827 | "T": 441,
828 | "N": 751,
829 | "S": 301,
830 | "D": 59,
831 | "END": 1436,
832 | "M": 68,
833 | "R": 61,
834 | "L": 67,
835 | "Z": 64,
836 | "TH": 48,
837 | "K": 22,
838 | "F": 9,
839 | "G": 8,
840 | "NG": 2,
841 | "SH": 12,
842 | "B": 18,
843 | "CH": 22,
844 | "P": 5,
845 | "DH": 3,
846 | "JH": 3,
847 | "W": 1
848 | },
849 | "AO": {
850 | "R": 4297,
851 | "TH": 67,
852 | "END": 3518,
853 | "D": 102,
854 | "N": 417,
855 | "S": 361,
856 | "F": 600,
857 | "G": 112,
858 | "T": 109,
859 | "L": 963,
860 | "NG": 255,
861 | "P": 45,
862 | "K": 177,
863 | "Z": 107,
864 | "B": 37,
865 | "CH": 17,
866 | "JH": 6,
867 | "SH": 36,
868 | "M": 30,
869 | "V": 36,
870 | "DH": 1,
871 | "Y": 3,
872 | "HH": 1
873 | },
874 | "Y": {
875 | "UW": 2405,
876 | "AH": 1146,
877 | "ER": 286,
878 | "EH": 180,
879 | "EY": 40,
880 | "AA": 317,
881 | "OW": 179,
882 | "UH": 232,
883 | "AO": 100,
884 | "AE": 126,
885 | "IH": 60,
886 | "IY": 56,
887 | "END": 13,
888 | "AW": 17,
889 | "AY": 4,
890 | "OY": 2,
891 | "Z": 2,
892 | "W": 1
893 | },
894 | "UW": {
895 | "Z": 404,
896 | "END": 6925,
897 | "D": 227,
898 | "T": 356,
899 | "L": 271,
900 | "M": 225,
901 | "S": 242,
902 | "N": 329,
903 | "P": 176,
904 | "F": 52,
905 | "V": 56,
906 | "K": 135,
907 | "NG": 17,
908 | "JH": 23,
909 | "TH": 88,
910 | "B": 81,
911 | "G": 41,
912 | "R": 54,
913 | "DH": 12,
914 | "CH": 8,
915 | "ZH": 5,
916 | "SH": 15,
917 | "HH": 3,
918 | "W": 3
919 | },
920 | "G": {
921 | "EH": 368,
922 | "AH": 2054,
923 | "IH": 726,
924 | "END": 3583,
925 | "EY": 430,
926 | "OW": 681,
927 | "AO": 295,
928 | "ER": 1016,
929 | "AA": 869,
930 | "AE": 561,
931 | "IY": 262,
932 | "Z": 238,
933 | "N": 4,
934 | "UW": 170,
935 | "AY": 134,
936 | "UH": 137,
937 | "S": 48,
938 | "D": 54,
939 | "AW": 56,
940 | "K": 1,
941 | "SH": 1,
942 | "OY": 21,
943 | "P": 2,
944 | "T": 5,
945 | "Y": 31,
946 | "R": 1290,
947 | "L": 394,
948 | "W": 86,
949 | "F": 4,
950 | "B": 1
951 | },
952 | "NG": {
953 | "END": 7825,
954 | "K": 786,
955 | "Z": 501,
956 | "ER": 355,
957 | "S": 48,
958 | "G": 214,
959 | "SH": 2,
960 | "D": 16,
961 | "IH": 32,
962 | "T": 1,
963 | "AH": 57,
964 | "HH": 2,
965 | "IY": 6,
966 | "AE": 1,
967 | "P": 1,
968 | "AW": 2,
969 | "OW": 4,
970 | "EY": 4,
971 | "B": 6,
972 | "AO": 1,
973 | "UW": 2,
974 | "L": 1,
975 | "TH": 8,
976 | "AY": 1,
977 | "V": 1,
978 | "EH": 1,
979 | "CH": 1,
980 | "AA": 2
981 | },
982 | "TH": {
983 | "AH": 365,
984 | "END": 1077,
985 | "IY": 279,
986 | "EH": 105,
987 | "S": 124,
988 | "AA": 76,
989 | "AO": 129,
990 | "N": 1,
991 | "EY": 26,
992 | "ER": 206,
993 | "IH": 174,
994 | "AY": 40,
995 | "UH": 2,
996 | "AE": 63,
997 | "OW": 32,
998 | "K": 11,
999 | "T": 5,
1000 | "P": 2,
1001 | "AW": 16,
1002 | "UW": 20,
1003 | "B": 3,
1004 | "V": 1,
1005 | "Y": 1,
1006 | "R": 110,
1007 | "W": 7,
1008 | "D": 7
1009 | },
1010 | "DH": {
1011 | "AH": 37,
1012 | "IY": 52,
1013 | "OW": 5,
1014 | "ER": 317,
1015 | "END": 54,
1016 | "D": 18,
1017 | "Z": 15,
1018 | "IH": 23,
1019 | "UW": 1,
1020 | "AY": 7,
1021 | "AA": 2,
1022 | "OY": 1,
1023 | "AE": 6,
1024 | "AW": 5,
1025 | "EH": 26,
1026 | "Y": 1,
1027 | "EY": 4,
1028 | "S": 1,
1029 | "AO": 2
1030 | },
1031 | "HH": {
1032 | "AY": 658,
1033 | "AW": 389,
1034 | "AO": 527,
1035 | "AH": 775,
1036 | "AA": 1261,
1037 | "AE": 1206,
1038 | "EY": 332,
1039 | "EH": 1080,
1040 | "END": 86,
1041 | "OW": 723,
1042 | "IH": 647,
1043 | "IY": 303,
1044 | "UH": 87,
1045 | "ER": 408,
1046 | "OY": 37,
1047 | "UW": 180,
1048 | "Y": 161,
1049 | "L": 6,
1050 | "M": 1,
1051 | "N": 1,
1052 | "R": 13,
1053 | "W": 368
1054 | },
1055 | "UH": {
1056 | "L": 205,
1057 | "R": 288,
1058 | "G": 3,
1059 | "END": 911,
1060 | "D": 389,
1061 | "T": 74,
1062 | "K": 271,
1063 | "SH": 52,
1064 | "F": 6,
1065 | "Z": 1,
1066 | "S": 17,
1067 | "M": 6,
1068 | "N": 28,
1069 | "CH": 3,
1070 | "NG": 5,
1071 | "P": 3,
1072 | "V": 1,
1073 | "B": 2,
1074 | "JH": 2,
1075 | "TH": 2
1076 | },
1077 | "CH": {
1078 | "AH": 612,
1079 | "IH": 602,
1080 | "END": 927,
1081 | "UW": 202,
1082 | "EH": 461,
1083 | "IY": 550,
1084 | "EY": 117,
1085 | "OW": 87,
1086 | "ER": 623,
1087 | "AE": 252,
1088 | "AA": 194,
1089 | "T": 104,
1090 | "UH": 27,
1091 | "F": 2,
1092 | "K": 8,
1093 | "AY": 88,
1094 | "AO": 54,
1095 | "AW": 25,
1096 | "Y": 2,
1097 | "L": 1,
1098 | "OY": 11,
1099 | "R": 4,
1100 | "W": 1,
1101 | "B": 3,
1102 | "S": 3
1103 | },
1104 | "ZH": {
1105 | "END": 63,
1106 | "AH": 247,
1107 | "IY": 24,
1108 | "ER": 92,
1109 | "UW": 12,
1110 | "AO": 6,
1111 | "IH": 45,
1112 | "D": 4,
1113 | "UH": 4,
1114 | "EH": 13,
1115 | "EY": 9,
1116 | "AA": 24,
1117 | "OW": 6,
1118 | "AY": 3,
1119 | "W": 5,
1120 | "AW": 6,
1121 | "AE": 1
1122 | },
1123 | "JH": {
1124 | "AA": 215,
1125 | "EH": 767,
1126 | "AH": 1129,
1127 | "END": 881,
1128 | "D": 149,
1129 | "IH": 931,
1130 | "ER": 487,
1131 | "EY": 109,
1132 | "OY": 78,
1133 | "UW": 265,
1134 | "IY": 654,
1135 | "AE": 260,
1136 | "AY": 63,
1137 | "OW": 166,
1138 | "AO": 100,
1139 | "S": 4,
1140 | "Z": 1,
1141 | "Y": 3,
1142 | "L": 1,
1143 | "UH": 39,
1144 | "F": 1,
1145 | "AW": 9,
1146 | "W": 3,
1147 | "K": 3,
1148 | "B": 1
1149 | }
1150 | };
1151 |
--------------------------------------------------------------------------------