├── .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 | --------------------------------------------------------------------------------