From 73f2927967daa6e4ef498c3974dc6a7897916c66 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 24 Feb 2021 01:04:44 +0700 Subject: [PATCH 01/10] :writing_hand: update tf stft to near librosa --- tensorflow_asr/datasets/asr_dataset.py | 6 ++---- .../featurizers/speech_featurizers.py | 21 +++++++++++++++---- tensorflow_asr/utils/utils.py | 4 ---- tests/featurizer/test_speech_featurizer.py | 16 ++++++++------ 4 files changed, 29 insertions(+), 18 deletions(-) diff --git a/tensorflow_asr/datasets/asr_dataset.py b/tensorflow_asr/datasets/asr_dataset.py index 0bfb28377c..a8d8045680 100755 --- a/tensorflow_asr/datasets/asr_dataset.py +++ b/tensorflow_asr/datasets/asr_dataset.py @@ -22,7 +22,7 @@ from .base_dataset import BaseDataset, BUFFER_SIZE, TFRECORD_SHARDS, AUTOTUNE from ..featurizers.speech_featurizers import load_and_convert_to_wav, read_raw_audio, tf_read_raw_audio, SpeechFeaturizer from ..featurizers.text_featurizers import TextFeaturizer -from ..utils.utils import bytestring_feature, get_num_batches, preprocess_paths, get_nsamples_from_duration +from ..utils.utils import bytestring_feature, get_num_batches, preprocess_paths class ASRDataset(BaseDataset): @@ -54,9 +54,7 @@ def __init__(self, def compute_metadata(self): self.read_entries() for _, duration, indices in tqdm.tqdm(self.entries, desc=f"Computing metadata for entries in {self.stage} dataset"): - nsamples = get_nsamples_from_duration(duration, sample_rate=self.speech_featurizer.sample_rate) - # https://www.tensorflow.org/api_docs/python/tf/signal/frame - input_length = -(-nsamples // self.speech_featurizer.frame_step) + input_length = self.speech_featurizer.get_length_from_duration(duration) label = str(indices).split() label_length = len(label) self.speech_featurizer.update_length(input_length) diff --git a/tensorflow_asr/featurizers/speech_featurizers.py b/tensorflow_asr/featurizers/speech_featurizers.py index 7421a61eaa..c6905f9696 100755 --- a/tensorflow_asr/featurizers/speech_featurizers.py +++ b/tensorflow_asr/featurizers/speech_featurizers.py @@ -11,10 +11,12 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + import os import io import abc import six +import math import numpy as np import librosa import soundfile as sf @@ -219,6 +221,7 @@ def __init__(self, speech_config: dict): self.normalize_signal = speech_config.get("normalize_signal", True) self.normalize_feature = speech_config.get("normalize_feature", True) self.normalize_per_feature = speech_config.get("normalize_per_feature", False) + self.center = speech_config.get("center", True) # Length self.max_length = 0 @@ -232,6 +235,11 @@ def shape(self) -> list: """ The shape of extracted features """ raise NotImplementedError() + def get_length_from_duration(self, duration): + nsamples = math.ceil(float(duration) * self.sample_rate) + if self.center: nsamples += self.nfft + return 1 + (nsamples - self.nfft) // self.frame_step # https://www.tensorflow.org/api_docs/python/tf/signal/frame + def update_length(self, length: int): self.max_length = max(self.max_length, length) @@ -280,7 +288,7 @@ def shape(self) -> list: def stft(self, signal): return np.square( np.abs(librosa.core.stft(signal, n_fft=self.nfft, hop_length=self.frame_step, - win_length=self.frame_length, center=False, window="hann"))) + win_length=self.frame_length, center=self.center, window="hann"))) def power_to_db(self, S, ref=1.0, amin=1e-10, top_db=80.0): return librosa.power_to_db(S, ref=ref, amin=amin, top_db=top_db) @@ -409,9 +417,14 @@ def shape(self) -> list: return [length, self.num_feature_bins, 1] def stft(self, signal): - return tf.square( - tf.abs(tf.signal.stft(signal, frame_length=self.frame_length, - frame_step=self.frame_step, fft_length=self.nfft, pad_end=True))) + if self.center: signal = tf.pad(signal, [[self.nfft // 2, self.nfft // 2]], mode="REFLECT") + window = tf.signal.hann_window(self.frame_length, periodic=True) + left_pad = (self.nfft - self.frame_length) // 2 + right_pad = self.nfft - self.frame_length - left_pad + window = tf.pad(window, [[left_pad, right_pad]]) + framed_signals = tf.signal.frame(signal, frame_length=self.nfft, frame_step=self.frame_step) + framed_signals *= window + return tf.square(tf.abs(tf.signal.rfft(framed_signals, [self.nfft]))) def power_to_db(self, S, ref=1.0, amin=1e-10, top_db=80.0): if amin <= 0: diff --git a/tensorflow_asr/utils/utils.py b/tensorflow_asr/utils/utils.py index df509089f6..fef55a0cf6 100755 --- a/tensorflow_asr/utils/utils.py +++ b/tensorflow_asr/utils/utils.py @@ -238,7 +238,3 @@ def body(index, tfarray): index, tfarray = tf.while_loop(condition, body, loop_vars=[index, tfarray], swap_memory=False) return tfarray - - -def get_nsamples_from_duration(duration, sample_rate=16000): - return math.ceil(float(duration) * sample_rate) diff --git a/tests/featurizer/test_speech_featurizer.py b/tests/featurizer/test_speech_featurizer.py index 40a060a890..7ba729a32f 100644 --- a/tests/featurizer/test_speech_featurizer.py +++ b/tests/featurizer/test_speech_featurizer.py @@ -16,7 +16,9 @@ setup_environment() import librosa import numpy as np +import tensorflow as tf import matplotlib.pyplot as plt +import librosa.display from tensorflow_asr.featurizers.speech_featurizers import read_raw_audio, TFSpeechFeaturizer, NumpySpeechFeaturizer @@ -33,26 +35,28 @@ def main(argv): "normalize_feature": True, "normalize_per_feature": False, "num_feature_bins": 80, + "center": True } signal = read_raw_audio(speech_file, speech_conf["sample_rate"]) nsf = NumpySpeechFeaturizer(speech_conf) sf = TFSpeechFeaturizer(speech_conf) - ft = nsf.stft(signal) + nft = nsf.stft(signal) + print(nft.shape, np.mean(nft)) + ft = sf.stft(signal).numpy().T print(ft.shape, np.mean(ft)) - ft = sf.stft(signal).numpy() - print(ft.shape, np.mean(ft)) - ft = sf.extract(signal) + print(nft == ft) + ft = tf.squeeze(sf.extract(signal)).numpy().T plt.figure(figsize=(16, 2.5)) ax = plt.gca() ax.set_title(f"{feature_type}", fontweight="bold") - librosa.display.specshow(ft.T, cmap="magma") + librosa.display.specshow(ft, cmap="magma") v1 = np.linspace(ft.min(), ft.max(), 8, endpoint=True) plt.colorbar(pad=0.01, fraction=0.02, ax=ax, format="%.2f", ticks=v1) plt.tight_layout() # plt.savefig(argv[3]) - # plt.show() + plt.show() # plt.figure(figsize=(15, 5)) # for i in range(4): # plt.subplot(2, 2, i + 1) From e070c5ce0d836b471caf5c86ae9e6fc1621b4cd6 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 24 Feb 2021 01:10:25 +0700 Subject: [PATCH 02/10] :writing_hand: update keras losses --- tensorflow_asr/losses/keras/ctc_losses.py | 4 ++-- tensorflow_asr/losses/keras/rnnt_losses.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tensorflow_asr/losses/keras/ctc_losses.py b/tensorflow_asr/losses/keras/ctc_losses.py index e1ee12cbd1..9b46fa6670 100644 --- a/tensorflow_asr/losses/keras/ctc_losses.py +++ b/tensorflow_asr/losses/keras/ctc_losses.py @@ -17,8 +17,8 @@ class CtcLoss(tf.keras.losses.Loss): - def __init__(self, blank=0, global_batch_size=None, reduction=tf.keras.losses.Reduction.NONE, name=None): - super(CtcLoss, self).__init__(reduction=reduction, name=name) + def __init__(self, blank=0, global_batch_size=None, name=None): + super(CtcLoss, self).__init__(reduction=tf.keras.losses.Reduction.NONE, name=name) self.blank = blank self.global_batch_size = global_batch_size diff --git a/tensorflow_asr/losses/keras/rnnt_losses.py b/tensorflow_asr/losses/keras/rnnt_losses.py index 76f5c92e31..14e0915e55 100644 --- a/tensorflow_asr/losses/keras/rnnt_losses.py +++ b/tensorflow_asr/losses/keras/rnnt_losses.py @@ -17,8 +17,8 @@ class RnntLoss(tf.keras.losses.Loss): - def __init__(self, blank=0, global_batch_size=None, reduction=tf.keras.losses.Reduction.NONE, name=None): - super(RnntLoss, self).__init__(reduction=reduction, name=name) + def __init__(self, blank=0, global_batch_size=None, name=None): + super(RnntLoss, self).__init__(reduction=tf.keras.losses.Reduction.NONE, name=name) self.blank = blank self.global_batch_size = global_batch_size From b16ed2dfd7c9888f410cc12c745d0ea3c202e2e7 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 24 Feb 2021 19:31:11 +0700 Subject: [PATCH 03/10] :writing_hand: update version --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 11f12cd8bb..17c5719d42 100644 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ setuptools.setup( name="TensorFlowASR", - version="0.7.8", + version="0.8.0", author="Huy Le Nguyen", author_email="nlhuy.cs.16@gmail.com", description="Almost State-of-the-art Automatic Speech Recognition using Tensorflow 2", From f7737561e6969cb2d3a9322dae7f7470b337146f Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Mon, 1 Mar 2021 19:36:59 +0700 Subject: [PATCH 04/10] :writing_hand: update vocabularies --- .../librispeech_train_4_1030.subwords | 4426 ++++++++++++++--- .../librispeech_train_4_1030.subwords | 3849 -------------- 2 files changed, 3750 insertions(+), 4525 deletions(-) delete mode 100644 vocabularies/librispeech_train_4_1030.subwords diff --git a/vocabularies/librispeech/librispeech_train_4_1030.subwords b/vocabularies/librispeech/librispeech_train_4_1030.subwords index ee4f8a364d..e7b225b355 100644 --- a/vocabularies/librispeech/librispeech_train_4_1030.subwords +++ b/vocabularies/librispeech/librispeech_train_4_1030.subwords @@ -4,772 +4,3846 @@ 'and_' 'of_' 'to_' +'e_' 's_' -'d_' 'a_' -'e_' -'t_' -'y_' +'d_' 'in_' -'ed_' -'r_' +'t_' 'i_' +'was_' 'he_' 'that' -'was_' -'ing_' +'r_' +'ed_' 'it_' -'n_' -'her_' +'y_' 'his_' -'with' +'ing_' 'on_' +'with' +'n_' +'er_' +'her_' +'had_' 'as_' +'h_' +'g_' 'for_' 'you_' -'had_' -'h_' +'but_' 'is_' 'not_' -'l_' -'but_' 'at_' 'she_' -'er_' -'ly_' 'be_' -'me_' -'le_' -'es_' +'ly_' +'ng_' +'l_' 'they' -'ther' -'ar' -'or_' -'all_' +'him_' 'by_' 'have' -'g_' -'an_' -'him_' -'ri' 'my_' -'k_' 'this' -'in' -'bo' -'whic' -'ro' -'si' -'po' 'were' -'de' -'un' -'said' +'whic' +'me_' +'le_' +'ther' +'all_' 'from' -'fi' -'vi' -'an' +'said' 'so_' 'one_' -'la' -'di' -'ho' -'ve_' -'se_' -'le' -'ne' -'th' -'so' -'on' -'pa' -'su' -'ci' -'al' -'pe' -'ha' -'do' -'ti' -'or' -'w_' -'er' -'ce' -'out_' -'them' -'il' -'thin' -'when' -'ma' -'ic' +'or_' +'k_' +'es_' +'an_' 'we_' -'re' -'li' -'are_' -'fa' +'them' 'some' -'pro' +'when' +'thei' +'out_' 'no_' -'th_' 're_' -'el' -'it' -'what' -'m_' +'thin' 'woul' -'ce_' -'en' -'me' -'thei' -'lo' -'ld_' -'al_' -'to' -'ra' +'what' 'if_' -'sta' -'go' -'sa' -'will' -'ment' -'st_' -'ca' -'ba' -'ke' -'us_' -'thou' +'are_' 'who_' -'no' -'pi' -'te' -'ir' -'ion_' -'sp' -'da' -'fe' -'man_' -'ent' -'be' -'te_' -'ga' 'been' -'ad' +'us_' +'thou' +'ever' +'will' 'then' -'bl' -'dis' -'am' -'va' -'bi' -'con' +'coul' +'ce_' 'time' -'ever' -'ng_' -'ie' 'up_' -'hi' -'per' -'we' -'bu' -'sto' -'he' -'coul' -'se' -'co' -'na' +'nd_' 'more' -'ble_' -'ou' -'em' -'mi' +'red_' +'into' 'your' -'min' -'res' +'othe' +'like' +'over' +'man_' +'than' 'know' -'mo' -'cu' -'sc' -'ne_' -'ta' -'p_' -'ted_' -'do_' -'sl' -'into' -'gi' -'ed' -'ver' -'as' -'nt' 'very' -'ul' -'ee' -'like' -'king' -'nd' -'ll_' -'ru' -'ur' -'nc' -'now_' +'nt_' +'ty_' +'do_' +'litt' 'tion' +'hear' +'ted_' +'abou' 'en_' -'nd_' -'dre' -'at' -'qui' -'othe' -'ll' -'ut' -'dr' -'litt' -'than' -'come' -'du' -'gu' +'now_' 'look' -'over' -'ia' -'et' -'ty_' -'che' -'ct' -'ac' -'ye' -'ep' -'vo' -'is' -'hear' -'ch_' -'rt' -'ide' -'pos' -'ry_' -'car' -'ol' +'afte' +'did_' +'any_' +'well' +'agai' +'ion_' 'rs_' -'ste' -'mar' -'spe' -'ous_' -'for' -'ni' -'rea' -'sho' -'abou' -'ag' -'lea' -'ght_' -'ss_' -'fl' -'ter' -'red_' -'well' -'ff' -'ter_' 'shou' -'im' -'os' -'any_' -'gra' -'fin' -'did_' -'ex' 'grea' 'upon' -'ow' -'lu' -'ab' -'afte' -'don' -'des' +'st_' 'hand' -'agai' -'ge_' -'rec' -'inte' -'mp' -'tt' -'pu' 'only' -'low' -'jo' -'nt_' -'ins' -'cr' -'es' -'its_' -'has_' -'fo' -'ns' -'bro' -'tra' -'ak' -'wi' -'wher' -'pt' -'good' -'man' -'o_' -'her' -'unde' -'part' -'atio' -'mon' -'ts_' 'mist' -'sm' -'hu' -'st' -'wa' +'has_' +'its_' +'our_' 'two_' -'ent_' -'down' -'ot' -'dea' +'m_' +'made' 'even' -'cons' -'wo' -'ch' -'our_' -'most' -'who' -'elf_' +'down' +'miss' 'befo' -'ven' -'can_' -'ind' -'ine' -'gh_' -'win' -'um' -'exp' -'tan' -'ck_' -'ef' -'thes' +'ld_' +'inte' 'long' -'made' -'sed_' -'see_' -'miss' -'pre' -'sur' 'thro' -'ph' -'wor' -'rep' -'rr' -'sen' -'ber' -'que' -'ting' +'elf_' +'ght_' +'good' +'come' +'unde' +'gh_' +'such' +'thes' 'old_' -'how_' -'neve' -'day_' -'fr' -'must' -'am_' -'je' -'fu' +'cons' +'see_' +'wher' +'king' 'came' -'such' -'rem' -'ning' -'sti' -'take' -'ard' -'ok' -'gen' -'est' -'op' -'bea' -'dd' -'us' -'ei' -'nat' -'here' -'rou' -'de_' -'ring' -'mu' -'pl' -'bel' -'go_' -'ist' -'ea' -'pla' -'she' -'much' +'day_' +'way_' 'comp' +'how_' +'ers_' +'neve' +'it' 'cont' -'tre' -'ur_' -'use_' -'mor' -'ns_' -'clo' -'ob' -'pri' -'ar_' -'ving' -'str' -'rn' -'pres' -'ish' -'mil' -'ved_' -'men_' -'bet' +'ment' +'can_' +'part' +'much' 'back' +'ent_' +'take' +'hous' +'ts_' +'se_' +'must' +'ness' 'just' -'tru' -'way_' -'able' -'ck' -'der' -'ze' -'int' -'gl' -'nce_' -'rs' -'ded_' -'rat' -'bri' -'fel' -'rl' -'imp' -'may_' -'ct_' -'of' -'tain' -'ful_' -'read' -'shi' -'self' -'ig' -'ster' -'ain' -'ve' -'fort' -'ught' +'al_' +'ve_' +'pres' +'ous_' +'here' +'ow_' +'atio' +'ied_' 'firs' -'wh' -'act' -'ure_' -'ret' -'rest' -'lle' -'ned_' -'give' -'rd' -'sha' -'head' -'nde' -'ord' 'make' -'den' -'od_' -'cti' -'ing' -'end' -'cri' -'can' +'seem' +'migh' +'am_' 'own_' -'went' -'nor' -'nigh' -'hims' -'gs_' -'acc' -'ite' -'id' -'fee' +'p_' +'er' +'head' +'ns_' +'men_' 'plac' -'ge' -'wer' -'ys_' -'ying' -'ys' -'att' -'ity_' -'rie' -'wr' 'thre' -'migh' -'ps_' -'ua' -'ness' -'ope' -'sw' -'ant' -'mb' -'ling' -'gre' -'tal' -'ugh_' -'har' -'led_' -'hous' -'age_' -'ask' -'gro' -'hel' -'ers_' -'iti' -'mat' -'ver_' -'seem' -'ds_' +'hims' +'go_' +'ble_' +'may_' 'less' -'ey' -'exc' -'ear' -'ligh' -'sou' -'beg' -'love' -'ding' -'wat' -'pp' -'ence' -'iv' +'went' 'et_' -'cas' -'form' -'cer' -'ss' -'tri' -'if' -'tle' -'fai' -'ud' -'til' -'ves_' -'say_' -'ner' -'ate' -'ld' -'col' -'stil' -'coun' -'par' -'cour' -'away' -'stra' -'cle' -'oo' -'face' -'san' -'gn' -'qua' -'f_' -'mer' -'too' -'see' -'gar' -'lie' -'ue' +'most' +'rest' +'ugh_' +'love' +'give' 'pass' -'ft_' -'mot' +'beca' +'say_' 'life' -'chi' -'sk' -'om' -'bre' -'ran' -'shal' -'eri' +'eyes' +'whil' 'call' -'fre' -'ance' -'ice_' -'liv' +'nigh' +'use_' +'bein' +'thos' +'many' +'away' 'turn' -'sion' -'ger' -'whil' -'ls' -'hol' -'far' -'nn' -'foun' -'whi' -'sit' -'tw' -'aw' -'too_' -'sat' -'lt' -'sup' -'sin' -'uc' +'coun' +'hing' +'hed_' +'youn' +'stra' +'th_' 'comm' -'hal' -'gg' -'cre' -'thos' -'ene' -'oc' -'lat' -'eyes' -'cha' -'ren' -'ten' -'tow' -'wom' -'wal' -'bein' -'gla' -'new' -'work' -'app' -'cap' -'bes' +'too_' +'stil' +'foun' +'ons_' +'don' 'last' -'wis' -'lly_' -'und' -'ses' -'hin' -'alo' -'mou' -'beca' -'af' -'ight' -'ward' +'ch_' +'able' +'ered' 'mean' -'sea' -'wan' -'gh' -'au' -'many' +'face' +'gs_' +'ds_' 'tell' -'dl' 'noth' -'get_' -'put' -'kne' -'son_' -'ack' -'ough' -'nea' -'sing' -'ai' -'tter' -'pers' -'ess_' -'hun' -'ju' -'sy' -'rt_' -'arm' -'side' -'serv' -'lad' -'med' -'ally' +'cour' +'work' +'ance' +'peop' +'righ' +'ht_' +'room' +'chil' +'year' +'ry_' +'sure' +'ys_' +'sed_' 'word' -'eas' -'fol' -'com' -'ong_' -'ans' -'tes' -'eat' -'ec' -'cess' +'pers' +'o_' +'ral_' +'yet_' +'ligh' +'get_' +'ence' +'ll_' +'aske' +'happ' +'shal' +'stre' +'ting' +'saw_' +'same' +'f_' +'te_' +'off_' +'w_' 'fath' -'ble' -'les' -'ten_' -'hor' -'tu' -'lit' -'ng' +'want' +'prin' +'brea' +'chan' +'inst' 'char' -'ton' -'chil' -'appe' -'als' -'use' -'rai' +'ge_' +'hers' +'anot' +'ss_' +'left' +'lf_' +'seve' +'once' +'ain_' +'open' +'girl' +'dist' +'ding' +'took' +'alon' +'fort' +'ped_' 'land' -'dg' -'let_' +'expe' +'on' +'nce_' +'led_' +'near' +'alwa' +'supp' 'frie' -'chan' -'year' -'peop' -'ass' -'get' -'lar' -'dn' -'ure' +'mome' +'door' +'een_' +'let_' +'new_' +'appe' +'full' +'told' +'age_' +'plea' +'ver_' +'side' +'ente' +'moth' +'mind' +'de_' +'real' +'why_' +'put_' +'soon' +'form' +'ded_' +'stat' +'poss' +'fell' +'home' +'ring' +'ter_' +'star' +'indi' +'live' +'we' +'acco' +'read' +'answ' +'wind' +'goin' +'essi' +'repl' +'care' +'diff' +'rd_' +'disc' +'name' +'natu' +'feel' +'worl' +'find' +'beli' +'ity_' 'ies_' -'rc' +'stan' +'wate' +'whit' +'stor' +'kind' +'cert' +'high' +'me' +'ant_' +'woma' +'retu' +'prop' +'wish' +'est_' +'foll' +'rema' +'ined' +'carr' +'whol' +'knew' +'show' +'ged_' +'each' +'tly_' +'conc' +'serv' +'hard' +'havi' +'sing' +'gene' +'c_' +'nst_' 'you' -'happ' -'room' -'wee' -'got' -'hea' -'flo' -'sel' -'set' -'youn' -'sil' -'once' -'vel' -'urn' -'ere' -'ght' -'fer' -'cke' -'nge' -'dar' -'cla' +'bett' +'ned_' +'bega' +'quit' +'far_' +'few_' +'enou' +'eigh' +'ible' +'four' +'voic' +'ct_' +'ure_' +'shor' +'conf' +'matt' +'ks_' +'ic_' +'yes_' +'ough' +'beau' +'clos' +'ck_' +'leav' +'atte' +'got_' +'seen' +'done' +'inde' +'sir_' +'morn' +'betw' +'ess_' +'ls_' +'walk' +'fore' +'late' +'hope' +'ared' +'grou' +'hund' +'man' +'fall' +'ate_' +'orde' +'ect_' +'powe' +'ated' +'felt' +'poin' +'hour' +'reco' +'el_' +'towa' +'spea' +'her' +'wond' +'howe' +'amon' +'ed' +'half' +'ling' +'talk' +'rece' +'wood' +'try_' +'lly_' +'conv' +'poor' +'ce' +'both' +'also' +'stoo' +'perh' +'keep' +'ar_' +'ish_' +'does' +'ot_' +'icul' +'aps_' +'ened' +'myse' +'clea' +'ctio' +'oh_' +'fact' +'gent' +'co' +'smal' +'exce' +'erin' +'set_' +'nor_' +'sent' +'him' +'admi' +'gave' +'ne_' +'whom' +'tree' +'days' +'re' +'almo' +'unti' +'deli' +'sion' +'ions' +'ing' +'sand' +'mast' +'drea' +'stro' +'son_' +'best' +'thir' +'esse' +'es' +'ful_' +'ely_' +'need' +'engl' +'end_' +'ress' +'impo' +'gree' +'toge' +'step' +'so' +'fran' +'suff' +'sinc' +'sigh' +'se' +'or' +'ma' +'ly' +'tain' +'ta' +'dear' +'lo' +'doub' +'ques' +'marr' +'feet' +'roun' +'sens' +'nds_' +'anyt' +'next' +'move' +'laug' +'do' +'dark' +'reac' +'brou' +'blac' +'pt_' +'ard_' +'prov' +'ider' +'ur_' +'crie' +'smil' +'larg' +'fami' +'eve_' +'help' +'gran' +'fire' +'ming' +'lay_' +'five' +'twen' +'play' +'ose_' +'hors' +'visi' +'sudd' +'arou' +'ro' +'teen' +'capt' +'moun' +'wait' +'john' +'stru' +'go' +'forg' +'reas' +'mone' +'po' +'mber' +'lett' +'fear' +'eren' +'rath' +'ious' +'doct' +'stri' +'ship' +'case' +'appr' +'line' +'le' +'idea' +'body' +'cent' +'ved_' +'id_' +'ho' +'selv' +'uncl' +'soun' +'reme' +'terr' +'cond' +'heav' +'les_' +'grow' +'can' +'writ' +'perf' +'mont' +'he' +'gone' +'air_' +'ten_' +'cted' +'whos' +'city' +'sile' +'dire' +'desi' +'trou' +'lady' +'ked_' +'mo' +'till' +'spec' +'leas' +'wife' +'resp' +'med_' +'ice_' +'deat' +'plan' +'nge_' +'in' +'hold' +'forc' +'cann' +'prom' +'true' +'rned' +'rise' +'offi' +'fair' +'sat_' +'pret' +'ping' +'dren' +'slee' +'ofte' +'comi' +'behi' +'stop' +'ster' +'nded' +'free' +'en' +'mann' +'nts_' +'colo' +'brot' +'bed_' +'hter' +'foot' +'reli' +'enti' +'ecti' +'wome' +'spir' +'ve' +'succ' +'shed' +'belo' +'temp' +'tabl' +'duri' +'self' +'ru' +'na' +'circ' +'crea' +'la' +'beco' +'rds_' +'lord' +'el' +'book' +'al' +'trea' +'nati' +'crow' +'ces_' +'ily_' +'town' +'dy_' +'used' +'fine' +'disa' +'tifu' +'thus' +'du' +'alre' +'imme' +'fift' +'acti' +'ntio' +'draw' +'sign' +'rn_' +'poli' +'ady_' +'adva' +'watc' +'pape' +'ive_' +'expr' +'caus' +'tati' +'didn' +'at' +'prof' +'fish' +'inue' +'simp' +'held' +'rt_' +'rati' +'entl' +'bo' +'proc' +'bear' +'ythi' +'vi' +'sist' +'occu' +'ja' +'imag' +'dead' +'ward' +'says' +'sa' +'meet' +'rsta' +'owed' +'nd' +'ar' +'ac' +'road' +'red' +'obse' +'boy_' +'to' +'disp' +'chee' +'abov' +'seco' +'dang' +'us' +'sh_' +'ms_' +'si' +'offe' +'list' +'desc' +'brok' +'rose' +'ni' +'minu' +'huma' +'earl' +'acte' +'wall' +'vill' +'pe' +'et' +'rs' +'nt' +'ga' +'ying' +'quic' +'efor' +'onal' +'cra' +'hair' +'god_' +'expl' +'deep' +'coll' +'ning' +'gi' +'enly' +'ende' +'dres' +'spok' +'ory_' +'inat' +'impr' +'cove' +'va' +'quar' +'tes_' +'pain' +'ings' +'di' +'rich' +'kept' 'ke_' -'ged' -'cor' -'saw_' -'tly_' +'obje' +'rive' +'ows_' +'iden' +'gold' +'brow' +'trai' +'oppo' +'st' +'rega' +'flow' +'fill' +'da' +'lear' +'ey_' +'eart' +'chur' +'buil' +'maki' +'whet' +'sort' +'lu' +'ced_' +'soci' +'port' +'pe_' +'pu' +'ific' +'besi' 'bar' -'yet' -'righ' -'kin' -'rel' -'fect' -'tur' -'ways' -'prin' +'scho' +'ine_' +'brin' +'ea' +'rate' +'od_' +'su' +'ines' +'ches' +'begi' +'ah_' +'eith' +'de' +'bill' +'purp' +'itse' +'and' +'posi' +'itio' +'daug' +'sati' +'mile' +'ical' +'hill' +'perc' +'numb' +'ived' +'extr' +'busi' +'hs_' +'ured' +'rela' +'publ' +'past' +'lost' +'cast' +'up' +'trie' +'six_' +'else' +'chai' +'ture' +'th' +'swee' +'ir' +'surp' +'gove' +'om_' +'jo' +'is' +'allo' +'subj' +'stea' +'ousl' +'mate' +'big_' +'cold' +'out' +'ia' +'ali' +'pa' +'ally' +'scar' +'ng' +'ha' +'corn' +'bloo' +'nece' +'glad' +'gard' +'driv' +'dn' +'quee' +'plai' +'pen' +'cur' +'cla' +'lead' +'kill' +'diat' +'ti' +'shar' +'pris' +'hono' +'hast' +'chie' +'arms' +'ston' +'week' +'pete' +'har' +'cess' +'ber' +'reso' +'ob' +'noti' +'mill' +'iage' +'atta' +'snow' +'excl' +'prob' +'prec' +'ol' +'mark' +'fiel' +'wa' +'low_' +'gues' +'evid' +'acro' +'wild' +'tor' +'thy_' +'gro' +'ging' +'blue' +'arri' +'adde' +'acce' +'shad' +'osit' +'nort' +'ecte' +'prod' +'prev' +'mere' +'soul' +'clas' +'ainl' +'stic' +'quie' +'occa' +'nine' +'ial_' +'b_' +'touc' +'summ' +'osed' +'car' +'brig' +'te' +'secr' +'requ' +'favo' +'ery_' +'ched' +'ult' +'sold' +'insi' +'farm' +'an' +'sea_' +'ound' +'decl' +'resu' +'ol_' +'met_' +'husb' +'dest' +'view' +'one' +'ap' +'ants' +'ses_' +'oach' +'pi' +'mb' +'cial' +'whis' +'seat' +'peri' +'ia_' +'ge' +'figu' +'tone' +'ki' +'effe' +'deci' +'ures' +'repr' +'dam' +'ur' +'tran' +'spen' +'rabl' +'news' +'dar' +'ck' +'amer' +'ine' +'hung' +'fail' +'ask_' +'alth' +'ut' +'run_' +'dete' +'she' +'hist' +'ety_' +'equa' +'dis' +'bell' +'ay_' +'affe' +'acqu' +'wort' +'vo' +'ven' +'taki' +'prep' +'bu' +'ty' +'trav' +'mode' +'mari' +'ary_' +'x_' +'cu' +'safe' +'merc' +'forw' +'doin' +'trut' +'ton_' +'tend' +'sout' +'pati' +'hes_' +'as' +'ves_' +'stay' +'ps_' +'fa' +'ease' +'bank' +'assi' +'west' +'wed_' +'slow' +'livi' +'exam' +'bene' +'save' +'ill_' +'floo' +'blin' +'won' +'ul' +'pre' +'ican' +'drop' +'desp' +'usua' +'sugg' +'stud' +'rais' +'fi' +'emen' +'comf' +'war_' +'vari' +'scen' +'ents' +'test' +'sixt' +'eye_' +'exci' +'easi' +'boys' +'act_' +'wing' +'um' +'stu' +'sayi' +'rien' +'ntly' +'li' +'fast' +'esta' +'des_' +'cros' +'boar' +'wors' +'tear' +'susp' +'ri' +'ours' +'ired' +'incr' +'ight' +'ht' +'grav' +'beyo' +'ably' +'no' +'moti' +'fron' +'fo' +'chap' +'aw' +'sorr' +'soft' +'ley_' +'repe' +'op' +'nu' +'glan' +'der_' 'bra' -'ions' -'try' -'ely' -'war' +'ul_' +'thee' +'rt' +'fer' +'exis' +'ec' +'chin' +'ben' +'agre' +'reve' +'lar_' +'ide_' +'grac' +'ft' +'exte' +'ersa' +'enjo' +'ca' +'un' +'shin' +'che' +'ving' +'spee' +'sett' +'sal' +'roll' +'rdin' +'ran_' +'ow' +'infl' +'guar' +'ets_' +'anim' +'ties' +'pick' +'opin' +'men' +'anio' +'warm' +'sail' +'remo' +'phys' +'ee' +'clot' +'camp' +'tive' +'furt' +'figh' +'ch' +'unit' +'race' +'oc' +'neig' +'mout' +'mada' +'leng' +'deal' +'corr' +'als_' +'rmin' +'nnin' +'ne' +'info' +'boat' +'yout' +'rese' +'ny_' +'nger' +'ange' +'sk' +'pict' +'lete' +'fing' +'curi' +'ba' +'arti' +'ssar' +'rent' +'rely' +'owin' +'outs' +'none' +'mine' +'inct' +'hi' +'appl' +'rly_' +'ra' +'priv' +'cal' +'anne' +'unt_' +'ort_' +'nti' +'den' +'ciou' +'ble' +'bad_' +'adve' +'thor' +'rted' +'qui' +'prot' +'ishe' 'ion' -'ad_' -'same' +'beat' +'inco' +'assu' +'ans_' +'rock' +'lder' +'hurr' +'grew' +'grat' +'esti' +'ars_' +'anxi' +'ad' +'wear' +'path' +'ise_' +'im' +'gras' +'gar' +'ami' +'vere' +'thic' +'tail' +'supe' +'spri' +'piec' +'ors_' +'kly_' +'fina' +'east' +'cut_' +'cre' +'batt' +'wide' +'ver' +'tena' +'ssib' +'neit' +'caug' +'asse' +'sun_' +'sha' +'main' +'hy_' +'gath' +'drew' +'cal_' +'refu' +'musi' +'hall' +'fic' +'eive' +'born' +'affa' +'ndin' +'ka' +'ju' +'esca' +'chri' +'bi' +'ball' +'ue_' +'tica' +'que' +'od' +'nel_' +'habi' +'gett' +'frig' +'ds' +'incl' +'hy' +'fres' +'empt' +'cate' +'bea' +'sted' +'judg' +'il_' +'day' +'clou' +'aime' +'swa' +'moon' +'let' +'hel' +'enem' +'dly_' +'utte' +'repo' +'lies' +'liar' +'ko' +'eved' +'ale' +'afra' +'za' +'woun' +'phil' +'orm' +'note' +'mu' +'lt_' +'laid' +'ke' +'hat' +'ern_' +'atin' +'ant' +'rtan' +'rous' +'carl' +'barr' +'abso' +'und' +'shoo' +'seri' +'pray' +'per_' +'ns' +'mon' +'meas' +'inqu' +'inal' +'ghts' +'fro' +'erfu' +'ele' +'ard' +'ai' +'wo' +'viol' +'tt' +'rved' +'res_' +'rall' +'pan' +'myst' +'mass' +'hunt' +'dent' +'bird' +'arm_' +'vict' +'resi' +'mble' +'ill' +'icie' +'ian_' +'este' +'bles' +'ag' +'war' +'trem' +'pala' +'jour' +'eg' 'ect' -'yth' -'stre' -'x_' -'full' +'died' +'chi' +'tu' +'sitt' +'sain' +'rnme' +'prac' +'pay_' +'boun' +'bb' +'aran' +'ago_' +'uni' +'trac' +'shee' +'lema' +'givi' +'ep' +'drag' +'cy_' +'bor' +'ain' +'ace_' +'vall' +'unco' +'til' +'swe' +'pped' +'ina' +'fren' +'coat' +'ci' +'ane' +'aint' +'purs' +'obli' +'nted' +'ft_' +'defe' +'bri' +'tru' +'swor' +'sin' +'law_' +'est' +'erty' +'enga' +'ead_' +'ya' +'wise' +'rain' +'oner' +'medi' +'lowe' +'fanc' +'suit' +'sant' +'san' +'ry' +'pt' +'min' +'labo' +'horr' +'gain' +'fly_' +'eu' +'entr' +'arch' +'all' +'accu' +'umst' +'rwar' +'pock' +'ot' +'lips' +'join' +'ex' +'espe' +'dema' +'danc' +'cely' +'brid' +'wn_' +'ual_' +'stai' +'rtun' +'roma' +'pot' +'narr' +'invi' +'em_' +'cloc' +'bott' +'wash' +'symp' +'regi' +'pin' +'impe' +'gs' +'dese' +'vel' +'tie' +'sco' +'rm' +'pil' +'os' +'ome_' +'nge' +'memo' +'lond' +'jane' +'isab' +'ic' +'god' +'fini' +'dra' +'top_' +'subs' +'soli' +'rush' +'og' +'mp' +'itte' +'gg' +'fla' +'eat_' +'conn' +'burn' +'rnoo' +'rful' +'maid' +'ins_' +'hero' +'ers' +'degr' +'bran' +'ban' +'arra' +'army' +'appa' +'aine' +'yl' +'wint' +'tra' +'ser' +'om' +'mal' +'hu' +'empl' +'effo' +'dinn' +'dare' +'uenc' +'tis' +'spar' +'sm_' +'seei' +'ric' +'psyc' +'intr' +'ifie' +'exac' +'ens_' +'auth' +'ab' +'sun' +'sta' +'secu' +'nish' +'majo' +'lift' +'lake' +'if' +'fait' +'enin' +'dom_' +'cap' +'be' +'wron' +'ua' +'surr' +'send' +'pale' +'nic' +'ngth' +'mm' +'eful' +'eede' +'dece' +'con' +'vent' +'theo' +'tche' +'ste' +'oi' +'mora' +'mess' +'lute' +'lity' +'ier_' +'cro' +'cham' +'am' +'um_' +'ters' +'rec' +'rage' +'peac' +'indu' +'id' +'hten' +'gate' +'food' +'au' +'una' +'tted' +'slig' +'shak' +'rial' +'nch' +'lad' +'devo' +'shi' +'shel' +'ruct' +'rebe' +'mos' +'doll' +'yell' +'tter' +'situ' +'sit_' +'sick' +'shop' +'ral' +'par' +'mer' +'mary' +'heal' +'hang' +'glas' +'ert' +'enco' +'easy' +'cts_' +'bled' +'uct' +'sts_' +'paus' +'ney_' +'neg' +'leme' +'je' +'fool' +'erly' +'emi' +'elle' +'bit_' +'tar' +'sy' +'swi' +'sell' +'rtai' +'pull' +'popu' +'oy' +'mor' +'mons' +'mar' +'lean' +'hal' +'bly_' +'blow' +'abr' +'tere' +'teac' +'tast' +'ssi' +'rsto' +'per' +'luck' +'lie_' +'iste' +'ici' +'harm' +'era' +'eage' +'ways' +'loud' +'kle' +'issi' +'ire_' +'hesi' +'fur' +'ew' +'elf' +'ze' +'ts' +'sel' +'rule' +'ptio' +'oti' +'oper' +'ons' +'ones' +'merr' +'lop' +'hone' +'esen' +'dom' +'cath' +'ath_' +'twel' +'tor_' +'shut' +'perm' +'llec' +'itie' +'ised' +'hol' +'fu' +'for' +'civi' +'uri' +'shot' +'sear' +'rit' +'rh' +'ret' +'ranc' +'ph' +'not' +'mana' +'lose' +'evil' +'eque' +'dle' +'dd' +'corp' +'catc' +'barb' +'air' +'wine' +'wand' +'slav' +'post' +'magi' +'llen' +'law' +'il' +'gall' +'end' +'divi' +'din' +'ade' +'addr' +'ze_' +'yed_' +'tryi' +'sole' +'silv' +'pari' +'orig' +'inve' +'ini' +'ince' +'ham' +'crim' +'advi' +'weak' +'ted' +'tall' +'shap' +'neck' +'latt' +'ital' +'blis' +'bit' +'ay' +'ande' +'ages' +'ad_' +'xi' +'wave' +'valu' +'trus' +'tre' +'ter' +'spot' +'refl' +'pp' +'mic' +'mas' +'grap' +'gen' +'duty' +'die_' +'cous' +'art_' +'val' +'tin' +'tan' +'sub' +'sla' +'sca' +'repu' +'pted' +'murd' +'mis' +'memb' +'legs' +'clu' +'broa' +'ber_' +'aunt' +'way' +'trad' +'son' +'sky_' +'ria' +'lea' +'lar' +'ip' +'holl' +'hant' +'gu' +'gle' +'ges_' +'cott' +'by' +'bed' +'avo' +'univ' +'ner_' +'mp_' +'len' +'ledg' +'knee' +'joy_' +'ggle' +'game' +'flee' +'feat' +'calm' +'asto' +'uns' +'rel' +'pet' +'ond' +'nobl' +'ll' +'isla' +'ione' +'imen' +'hypn' +'heat' +'elo' +'depa' +'bon' +'bitt' +'yard' +'titu' +'tant' +'sp' +'lled' +'inin' +'ger_' +'fain' +'comb' +'coa' +'tmen' +'term' +'smok' +'sh' +'seiz' +'see' +'sacr' +'ppea' +'nse_' +'lati' +'insu' +'ingl' +'ff_' +'citi' +'vidu' +'ut_' +'ure' +'trib' +'squa' +'rior' +'oo' +'ntag' +'mini' +'joy' +'isn' +'ies' +'fash' +'cas' +'spo' +'sle' +'pect' +'now' +'nois' +'mise' +'marc' +'ladi' +'fli' +'chas' +'bull' +'tit' +'runn' +'rts_' +'mus' +'luti' +'lock' +'itud' +'iri' +'impa' +'ey' +'erou' +'eme' +'deve' +'cry_' +'cri' +'ari' +'are' +'anci' +'urb' +'rin' +'qual' +'nged' +'nes_' +'ger' +'geor' +'flat' +'firm' +'devi' +'der' +'ave' +'art' +'une_' +'tire' +'tim' +'stag' +'slip' +'sil' +'pros' +'iers' +'hful' +'hate' +'erne' +'disg' +'bur' +'arm' +'age' +'uall' +'twi' +'tac' +'spit' +'seek' +'seas' +'row' +'ree' +'pur' +'otte' +'nn' +'mart' +'cked' +'butt' +'apar' +'york' +'tic' +'sepa' +'sea' +'ries' +'ribe' +'rapi' +'push' +'oni' +'mort' +'lt' +'lang' +'jun' +'ir_' +'eo' +'coro' +'cher' +'bla' +'zed_' +'wasn' +'ura' +'unle' +'unce' +'unc' +'ude' +'tude' +'tom' +'stin' +'skin' +'sen' +'sad' +'pond' +'orit' +'lved' +'llig' +'ig' +'ibly' +'fit_' +'ena' +'emp' +'bl' +'antl' +'anti' +'van' +'ren' +'ove' +'morr' +'mati' +'lit' +'libe' +'iron' +'gray' +'gnan' +'fun' +'awak' +'angr' +'tric' +'sty_' +'site' +'ori' +'lyin' +'lun' +'ise' +'host' +'gniz' +'fe' +'ener' +'enc' +'ybod' +'usio' +'tom_' +'stoc' +'radi' +'pric' +'parl' +'ous' +'ora' +'mil' +'inc' +'ie_' +'ie' +'hor' +'hen_' +'fra' +'ectl' +'dim' +'dan' +'capa' +'attr' +'alo' +'ado' +'welc' +'virt' +'sham' +'ruin' +'risi' +'py' +'orte' +'mous' +'ida' +'ict' +'hbor' +'grad' +'germ' +'eni' +'ef_' +'edge' +'cke' +'bre' +'ass' +'arat' +'wag' +'uced' +'tles' +'ss' +'sho' +'scra' +'rrup' +'rang' +'pure' +'patr' +'ordi' +'obta' +'ngin' +'ish' +'henr' +'grie' +'gn' +'eliz' +'ct' +'bag' +'bad' +'anno' +'abse' +'abo' +'volu' +'vic' +'too' +'sf' +'rmed' +'regu' +'rded' +'para' +'of' +'nor' +'net' +'glor' +'gloo' +'ath' +'actu' +'ume' +'sple' +'spi' +'rob' +'renc' +'pol' +'igno' +'earn' +'bare' +'use' +'sy_' +'spre' +'ror_' +'rk' +'prou' +'plat' +'owne' +'orn' +'mach' +'ken' +'jack' +'iona' +'hood' +'eli' +'dian' +'dee' +'cy' +'ctly' +'crac' +'clai' +'ceas' +'cabi' +'teet' +'spac' +'rea' +'pied' +'kiss' +'ham_' +'gly_' +'erat' +'cho' +'burg' +'aris' +'wi' +'weal' +'ten' +'spra' +'sfac' +'roug' +'rie' +'ras' +'ple_' +'orga' +'mpan' +'mel' +'magn' +'ians' +'hip_' +'hen' +'ful' +'flas' +'ei' +'depe' +'defi' +'dec' +'cca_' +'bath' +'bab' +'argu' +'vess' +'unp' +'ug' +'tled' +'tle_' +'tale' +'stee' +'sfie' +'rred' +'ron' +'ray' +'ndan' +'nary' +'ist' +'hum' +'hop' +'exec' +'elde' +'bun' +'brai' +'ator' +'ash' +'yle_' +'ws_' +'tri' +'tary' +'rp' +'rd' +'prie' +'pon' +'nced' +'marg' +'liz' +'cien' +'aliv' +'vers' +'uti' +'tur' +'toby' +'tent' +'scre' +'rity' +'reti' +'rary' +'qua' +'paid' +'orta' +'oli' +'nci' +'nce' +'mn' +'mes_' +'ice' +'hee' +'eva' +'ett' +'clim' +'brav' +'boug' +'weat' +'tors' +'tong' +'scor' +'sake' +'pier' +'pecu' +'pare' +'nk' +'ist_' +'inia' +'ingu' +'gni' +'fee' +'fart' +'esso' +'ent' +'edwa' +'ects' +'dism' +'ast' +'alte' +'zen_' +'vain' +'uc' +'tro' +'tol' +'tenc' +'rail' +'rach' +'peas' +'nty_' +'lin' +'lian' +'kfas' +'ker_' +'juli' +'ita' +'hoo' +'hat_' +'gaze' +'exer' +'enge' +'em' +'elev' +'die' +'burs' +'blo' +'asha' +'ulat' +'tal' +'stup' +'song' +'shri' +'scie' +'rip' +'rb' +'pho' +'pats' +'orti' +'oa' +'nobo' +'may' +'lf' +'ld' +'knit' +'key_' +'hern' +'futu' +'drin' +'demo' +'deb' +'cow' +'cart' +'aut' +'top' +'ski' +'roof' +'revo' +'rei' +'prai' +'patt' +'papa' +'oned' +'ona' +'mpt_' +'midd' +'jerr' +'irs_' +'inn' +'ign_' +'ial' +'furn' +'flor' +'fet' +'fan' +'excu' +'err' +'ens' +'dela' +'athy' +'ang' +'alar' +'ake' +'wre' +'whi' +'virg' +'rend' +'ose' +'odi' +'nice' +'nerv' +'nda' +'mead' +'lude' +'lain' +'knig' +'ile' +'hole' +'hm' +'fat' +'due_' +'deta' +'cs_' +'cru' +'cop' +'bili' +'abet' +'wl' +'syst' +'ride' +'pref' +'pl' +'pit' +'pere' +'ntee' +'nder' +'nat' +'mpli' +'maje' +'knoc' +'ject' +'ite' +'illu' +'ili' +'hot_' +'geni' +'gas' +'flu' +'euro' +'ee_' +'eal' +'cipa' +'bore' +'baby' +'ye' +'val_' +'ub' +'troo' +'ruth' +'rop' +'pear' +'pack' +'oral' +'nly_' +'log' +'itu' +'hic' +'fold' +'ern' +'eric' +'edit' +'cord' +'cook' +'club' +'cle_' +'cipl' +'box_' +'band' +'atti' +'ywhe' +'wil' +'ue' +'u_' +'tea_' +'shr' +'que_' +'ppoi' +'pira' +'nist' +'net_' +'nea' +'mac' +'lucy' +'lex' +'ison' +'impu' +'han' +'ess' +'elec' +'dro' +'dign' +'bush' +'amus' +'amen' +'af' +'yn' +'wore' +'unte' +'snap' +'row_' +'ratu' +'pla' +'mpt' +'ket' +'ker' +'ken_' +'ire' +'icia' +'gger' +'geth' +'get' +'gest' +'fond' +'env' +'cost' +'cong' +'cles' +'beha' +'bas' +'awfu' +'ati' +'win' +'span' +'rked' +'regr' +'ps' +'prog' +'perp' +'orat' +'ms' +'limi' +'jos' +'jer' +'inci' +'herd' +'fri' +'ears' +'dge' +'deck' +'dat' +'cree' +'chu' +'cat' +'awar' +'witn' +'unt' +'uch' +'task' +'suns' +'rpr' +'ros' +'rl' +'rim' +'rat' +'nose' +'nity' +'nite' +'nal_' +'meth' +'lem' +'jen' +'ive' +'inar' +'hurt' +'heig' +'gor' +'glo' +'ghtf' +'empe' +'elve' +'chos' +'bos' +'baro' +'wrot' +'wit' +'vani' +'uste' +'unw' +'teme' +'sti' +'spe' +'rkab' +'ra_' +'pat' +'oduc' +'lle' +'ler_' +'leap' +'las' +'ins' +'ided' +'icio' +'fixe' +'fier' +'erse' +'epti' +'elli' +'broo' +'brie' +'bold' +'bodi' +'begg' +'alto' +'zi' +'z_' +'warr' +'ussi' +'uppe' +'surf' +'stom' +'russ' +'retr' +'pti' +'pr' +'pole' +'plen' +'oe' +'nsi' +'movi' +'hide' +'gan' +'frui' +'fest' +'ere' +'ear_' +'cup' +'cing' +'cha' +'cc' +'ambi' +'ama' +'addi' +'wra' +'whe' +'tw' +'rvi' +'pour' +'pher' +'ntur' +'ner' +'lei' +'inno' +'gun' +'greg' +'don_' +'dick' +'cust' +'cool' +'coas' +'bing' +'bel' +'asso' +'aff' +'weig' +'upt' +'tate' +'roar' +'phr' +'pea' +'olat' +'nk_' +'mph' +'mir' +'lic' +'lace' +'icat' +'humo' +'hem' +'gla' +'gil' +'ffe' +'erve' +'endo' +'ede' +'yo' +'wret' +'tic_' +'sad_' +'rc' +'ov' +'mpe' +'meal' +'loos' +'loca' +'lime' +'hur' +'hote' +'hadn' +'grah' +'gli' +'folk' +'flew' +'ffi' +'fals' +'educ' +'eb' +'dle_' +'dish' +'coup' +'bee' +'ame' +'wig' +'warn' +'vast' +'urd' +'uent' +'uage' +'stir' +'stal' +'scu' +'scri' +'rve_' +'rty_' +'rti' +'ris' +'nces' +'mour' +'loss' +'llin' +'inju' +'ica' +'hbou' +'ghte' +'fs_' +'ensi' +'dor' +'dily' +'dale' +'cult' +'cula' +'crue' +'adam' +'zing' +'ye_' +'wick' +'wha' +'vol' +'ust' +'ular' +'stia' +'smoo' +'sar' +'repa' +'prem' +'poet' +'ono' +'nta' +'mult' +'mul' +'moo' +'mit' +'gion' +'freq' +'expo' +'enth' +'dwel' +'dry_' +'doze' +'dful' +'cry' +'colu' +'ciat' +'cand' +'ava' +'augu' +'asce' +'arta' +'vit' +'uit' +'tte_' +'trim' +'thom' +'size' +'rmat' +'rant' +'ract' +'putt' +'poun' +'pipe' +'osi' +'nia' +'ndo' +'mond' +'mat' +'lay' +'ized' +'ingt' +'infe' +'het' +'ght' +'ell' +'eles' +'edin' +'dri' +'dm' +'crit' +'craw' +'cli' +'cks_' +'bowe' +'bal' +'xt' +'utio' +'ury_' +'tum' +'tual' +'stif' +'sob' +'lte' +'lla_' +'idi' +'gm' +'dge_' +'cul' +'cris' +'caro' +'bet' +'asle' +'andr' +'alle' +'ail' +'agon' +'abu' +'abil' +'zen' +'wast' +'urs' +'uct_' +'trip' +'tch_' +'spor' +'simi' +'roya' +'ref' +'rare' +'prid' +'phe' +'ored' +'loui' +'lodg' +'llo' +'iz' +'ite_' +'hie' +'gra' +'ffer' +'emb' +'bow' +'asp' +'who' +'unkn' +'unfo' +'tele' 'sse' -'ary' +'sol' +'sava' +'sat' +'rve' +'prim' +'pend' +'pair' +'onsi' +'olde' +'obey' +'lot_' +'leg' +'la_' +'ks' +'invo' +'gn_' +'drov' +'cab' +'busy' +'bril' +'bent' +'ativ' +'asid' +'appo' +'ana' +'ald' +'ahea' +'achi' +'zz' +'usi' +'une' +'tram' +'tien' +'tea' +'sund' +'sor' +'rume' +'rubb' +'rne' +'rfe' +'pant' +'oke' +'oat' +'ndid' +'musk' +'mamm' +'ls' +'lite' +'lest' +'lamp' +'jimm' +'issu' +'irre' +'hly_' +'gw' +'gian' +'fen' +'fal' +'eti' +'endu' +'eh' +'edi' +'duc' +'dog_' +'com' +'clif' +'cer_' +'card' +'bul' +'bone' +'aid' +'adj' +'vin' +'unl' +'unha' +'swif' +'smit' +'sim' +'risk' +'pro' +'plun' +'pity' +'pard' +'ody_' +'odd' +'mut' +'murm' +'mn_' +'meri' +'lus' +'lse' +'lack' +'jeff' +'ib' +'hil' +'hid' +'gul' +'guid' +'grim' +'gri' +'fles' +'faul' +'ew_' +'ete' +'els_' +'eati' +'dig' +'deri' +'cil' +'cana' +'beas' +'audi' +'atel' +'arth' +'anat' +'wn' +'ute_' +'usia' +'urag' +'unic' +'ung' +'stl' +'sn' +'root' +'rejo' +'rank' +'ram' +'ounc' +'ony_' +'oma' +'ngs_' +'ngly' +'nes' +'kins' +'kat' +'jump' +'inha' +'iam_' +'huge' +'hidd' +'gue_' +'embr' +'dep' +'ctiv' +'cred' +'cie' +'capi' +'blan' +'yest' +'unus' +'unex' +'ues' +'ton' +'tia' +'subm' +'sli' +'sl' +'sam' +'res' +'reck' +'puni' +'pill' +'pal' +'owle' +'obst' +'nurs' +'new' +'nar' +'my' +'mid' +'inti' +'idl' +'ica_' +'hw' +'gy_' +'ghos' +'flam' +'emot' +'clo' +'begu' +'anni' +'ackn' +'v_' +'unea' +'triu' +'tful' +'tes' +'ssit' +'seld' +'revi' +'pul' +'por' +'ou' +'olen' +'matc' +'linc' +'jame' +'hau' +'grey' +'fit' +'eve' +'erie' +'diam' +'cor' +'chic' +'cel' +'buri' +'boy' +'bid' +'aten' +'aros' +'ani' +'ake_' +'ah' +'act' +'acci' +'zo' +'yt' +'xa' +'unto' +'unat' +'ught' +'type' +'turt' +'soug' +'sly_' +'rthe' +'rome' +'rg' +'refe' +'rap' +'ppin' +'phan' +'page' +'oon_' +'onab' +'omi' +'non' +'nest' +'mids' +'lp' +'ivi' +'inva' +'inua' +'infi' +'ign' +'hos' +'goes' +'gne' +'glim' +'erda' +'emma' +'eggs' +'dil' +'ders' +'dept' +'crop' +'chm' +'buy_' +'buck' +'bree' +'birt' +'bin' +'aski' +'ache' +'wai' +'viou' +'ssa' +'slep' +'slat' +'rra' +'rog' +'rnal' +'ribu' +'pse' +'onin' +'nora' +'nodd' +'nds' +'mili' +'lie' +'laws' +'isi' +'htly' +'guil' +'gui' +'forb' +'ferr' +'fate' +'erio' +'ep_' +'eil_' +'eho' +'den_' +'ded' +'ctin' +'crus' +'clev' +'cis' +'cers' +'bite' +'berr' +'bask' +'anyw' +'amaz' +'alas' +'zzle' +'wea' +'sw' +'squi' +'skil' +'rvat' +'rre' +'roc' +'robe' +'remi' +'rag' +'pper' +'penc' +'owe' +'nie' +'mbli' +'lect' +'iti' +'ism_' +'insp' +'impl' +'imm' +'how' +'gru' +'gnat' +'glow' +'engi' +'emba' +'elsi' +'eed' +'dru' +'diss' +'dea' +'dail' +'bow_' +'beho' +'avoi' +'yo_' +'wis' +'whir' +'unf' +'thu' +'thr' +'shoe' +'shaw' +'say' +'sanc' +'roy' +'ridi' +'ridg' +'refr' +'ran' +'plum' +'peep' +'oria' +'oly' +'nsci' +'nove' +'nde' +'lan' +'hosp' +'geo' +'ema' +'eed_' +'duke' +'choi' +'cav' +'but' +'bert' +'base' +'arly' +'anyo' +'abs' +'yon' +'wido' +'wedd' +'vote' +'veil' +'urin' +'tria' +'ssed' +'sma' +'sive' +'shme' +'sche' +'scat' +'rig' +'rid' +'pron' +'ole' +'mer_' +'marv' +'lm' +'lis' +'ilit' +'hut' +'horn' +'heap' +'flig' +'fare' +'exha' +'eta' +'eate' +'dust' +'dur' +'ars' +'arme' +'arin' +'aord' +'ace' +'aba' +'worn' +'veri' +'udo' +'twic' +'tn' +'thi' +'tera' +'rus' +'plo' +'outl' +'ost' +'ore_' +'load' +'lia' +'kitc' +'infa' +'geme' +'gal' +'floa' +'fat_' +'exch' +'eth' +'ersi' +'enta' +'ege_' +'ea_' +'dull' +'dive' +'dise' +'deni' +'cta' +'cler' +'cill' +'cen' +'cati' +'bs_' +'bob' +'ara' +'amou' +'whee' +'urge' +'uous' +'ugly' +'tnes' +'thea' +'sylv' +'surv' +'stab' +'snak' +'sir' +'robb' +'ril' +'rehe' +'proo' +'plu' +'oyed' +'ort' +'nie_' +'monk' +'moni' +'misc' +'mete' +'med' +'mag' +'los' +'legi' +'kn' +'jew' +'japa' +'iame' +'humb' +'hith' +'gh' +'flo' +'feve' +'famo' +'equi' +'eno' +'elea' +'ek' +'cit' +'bobb' +'bluf' +'ak' +'yer' +'wri' +'ware' +'vert' +'uted' +'ueri' +'toi' +'tip' +'tess' +'tely' +'taug' +'sto' +'shoc' +'rict' +'pine' +'orie' +'ood_' +'nut' +'nate' +'misf' +'mina' +'meta' +'mars' +'mani' +'lot' +'leve' +'lars' +'ky_' +'klin' +'judi' +'jesu' +'ivel' +'itua' +'igu' +'hed' +'gram' +'glea' +'frog' +'fled' +'fil' +'fied' +'fel' +'fac' +'ext' +'erm' +'ends' +'ech' +'dne' +'dict' +'chat' +'cell' +'boot' +'alli' +'agen' +'affo' +'ae' +'add_' +'ach' +'ves' +'twin' +'tiny' +'thru' +'sher' +'sex' +'rud' +'rtis' +'rai' +'prud' +'ppy_' +'park' +'ox' +'ortu' +'ont' +'nsiv' +'noo' +'na_' +'leg_' +'kni' +'int' +'his' +'hin' +'hew' +'hes' +'has' +'harr' +'ha_' +'giou' +'gay' +'fre' +'fox' +'ffl' +'ff' +'eter' +'espo' +'ecia' +'eabl' +'ddl' +'dawn' +'cele' +'bel_' +'ada' +'acin' +'vita' +'vagu' +'unb' +'uin' +'ugho' +'try' +'styl' +'soa' +'snes' +'sm' +'rva' +'rode' +'rn' +'rav' +'quis' +'pic' +'peer' +'pace' +'ok' +'nom' +'naut' +'mmen' +'lve' +'lone' +'lieu' +'kas' +'jewe' +'jaso' +'ipl' +'ileg' +'ieu' +'gift' +'fred' +'fram' +'flus' +'fem' +'dogs' +'ctur' +'zy_' +'yone' +'yiel' +'vis' +'tun' +'trul' +'the' +'sum_' +'sso' +'sons' +'smo' +'rwis' +'rou' +'rol_' +'reca' +'proj' +'ntme' +'nal' +'milk' +'mb_' +'lev' +'kin_' +'ka_' +'ize_' +'ists' +'isio' +'ile_' +'fl' +'fitt' +'ere_' +'ench' +'desk' +'cake' +'aus' +'anyb' +'ann' +'ale_' +'zar' +'wder' +'voya' +'unre' +'unab' +'ugh' +'uade' +'tle' +'tl' +'tanc' +'stol' +'sme' +'siti' +'shep' +'scal' +'sc' +'roni' +'rnin' +'rac' +'quot' +'pool' +'nent' +'mutt' +'mud_' +'mi' +'lio' +'lant' +'jeal' +'iors' 'io' -'off_' -'sec' +'inse' +'ied' +'ick' +'hus' +'grin' +'gat' +'eyed' +'drun' +'dit' +'depr' +'del' +'cose' +'brus' +'bes' +'bble' +'ase_' +'yr' +'xed_' +'worr' +'ull' +'udi' +'tot' +'teri' +'sus' +'sne' +'slop' +'rust' +'rum' +'rtak' +'rse_' +'rot' +'rna' +'rade' +'ples' +'pitc' +'our' +'ote' +'nte' +'ntar' +'nl' +'nan' +'mira' +'mela' +'logi' +'lli' +'lap' +'kne' +'kers' +'ivat' +'ip_' +'holy' +'hind' +'harv' +'gged' +'gant' +'fe_' +'far' +'exi' +'essf' +'enes' +'davi' +'das' +'cow_' +'conq' +'cat_' +'bru' +'bis' +'bib' +'ates' +'ase' +'any' +'ams' +'yse' +'yme' +'vigo' +'vati' +'tice' +'surg' +'stou' +'spu' +'sie' +'rist' +'piti' +'orme' +'onl' +'ntin' +'ney' +'ndly' +'ncy' +'kee' +'jim' +'jes' +'iot' +'inu' +'ics_' +'hine' +'goo' +'fun_' +'fid' +'fed_' +'exhi' +'etr' +'erre' +'dyin' +'drow' +'dia' +'dere' +'dai' +'cub' 'cl' -'lin' -'ive_' -'plea' -'sh_' -'doo' -'ki' -'let' -'bod' -'anot' -'ate_' -'all' -'ks' +'caut' +'brut' +'br' +'arab' +'ak_' +'win_' +'uss' +'ud' +'thun' +'spa' +'sour' +'shir' +'rnor' +'rewa' +'pon_' +'pis' +'own' +'otic' +'orch' +'ome' +'oln_' +'nstr' +'nee' +'lyn' +'iv' +'ils_' +'ify_' +'ier' +'gean' +'gane' +'foug' +'feas' +'esh' +'eke' +'drif' +'choo' +'chec' +'cave' +'bew' +'beg' +'bbi' +'apol' +'alit' +'won_' +'wir' +'was' +'wake' +'vid' +'uis' +'ud_' +'tel' +'sav' +'sau' +'salt' +'rtur' +'rsi' +'rch' +'raw' +'pian' +'pay' +'oub' +'ook' +'omed' +'nse' +'nai' +'lux' +'lusi' +'lou' +'loa' +'lid' +'lict' +'lica' +'libr' +'les' +'ler' +'lanc' +'lame' +'kw' +'inen' +'imit' +'ices' +'hire' +'hei' +'hay' +'gun_' +'fy' +'flyi' +'flou' +'evi' +'esc' +'erit' +'emer' +'diti' +'dfa' +'des' +'date' +'curr' +'cine' +'chok' +'chal' +'cere' +'burd' +'box' +'boil' +'blam' +'betr' +'behe' +'bec' +'aste' +'ape' +'weep' +'uce_' +'towe' +'torn' +'tigh' +'sna' +'slim' +'sci' +'pop' +'ple' +'pau' +'ocea' +'oak_' +'nth_' +'nel' +'nay' +'lily' +'laun' +'inh' +'ilus' +'ibi' +'flun' +'eye' +'exa' +'erer' +'erc' +'enl' +'eff' +'dutc' +'cutt' +'cum' +'cise' +'car_' +'cano' +'buff' +'blus' +'bala' +'bach' +'arre' +'ardi' +'ante' +'agit' +'aced' +'zer' +'ym' +'usef' +'unn' +'ued_' +'tti' +'tou' +'tob' +'tlin' +'titl' +'tch' +'stam' +'roye' +'riva' +'quan' +'osop' +'oad' +'mol' +'mix' +'manu' +'mad_' +'lty' +'lts_' +'limb' +'leo' +'kes_' +'jol' +'ior_' +'hn' +'hit' +'herb' +'hai' +'funn' +'etic' +'ese' +'dh' +'cut' +'coc' +'ciga' +'ca_' +'bour' +'bloc' +'bay_' +'bat' +'atu' +'ats' +'ast_' +'amp' +'aged' diff --git a/vocabularies/librispeech_train_4_1030.subwords b/vocabularies/librispeech_train_4_1030.subwords deleted file mode 100644 index e7b225b355..0000000000 --- a/vocabularies/librispeech_train_4_1030.subwords +++ /dev/null @@ -1,3849 +0,0 @@ -### SubwordTextEncoder -### Metadata: {} -'the_' -'and_' -'of_' -'to_' -'e_' -'s_' -'a_' -'d_' -'in_' -'t_' -'i_' -'was_' -'he_' -'that' -'r_' -'ed_' -'it_' -'y_' -'his_' -'ing_' -'on_' -'with' -'n_' -'er_' -'her_' -'had_' -'as_' -'h_' -'g_' -'for_' -'you_' -'but_' -'is_' -'not_' -'at_' -'she_' -'be_' -'ly_' -'ng_' -'l_' -'they' -'him_' -'by_' -'have' -'my_' -'this' -'were' -'whic' -'me_' -'le_' -'ther' -'all_' -'from' -'said' -'so_' -'one_' -'or_' -'k_' -'es_' -'an_' -'we_' -'them' -'some' -'when' -'thei' -'out_' -'no_' -'re_' -'thin' -'woul' -'what' -'if_' -'are_' -'who_' -'been' -'us_' -'thou' -'ever' -'will' -'then' -'coul' -'ce_' -'time' -'up_' -'nd_' -'more' -'red_' -'into' -'your' -'othe' -'like' -'over' -'man_' -'than' -'know' -'very' -'nt_' -'ty_' -'do_' -'litt' -'tion' -'hear' -'ted_' -'abou' -'en_' -'now_' -'look' -'afte' -'did_' -'any_' -'well' -'agai' -'ion_' -'rs_' -'shou' -'grea' -'upon' -'st_' -'hand' -'only' -'mist' -'has_' -'its_' -'our_' -'two_' -'m_' -'made' -'even' -'down' -'miss' -'befo' -'ld_' -'inte' -'long' -'thro' -'elf_' -'ght_' -'good' -'come' -'unde' -'gh_' -'such' -'thes' -'old_' -'cons' -'see_' -'wher' -'king' -'came' -'day_' -'way_' -'comp' -'how_' -'ers_' -'neve' -'it' -'cont' -'ment' -'can_' -'part' -'much' -'back' -'ent_' -'take' -'hous' -'ts_' -'se_' -'must' -'ness' -'just' -'al_' -'ve_' -'pres' -'ous_' -'here' -'ow_' -'atio' -'ied_' -'firs' -'make' -'seem' -'migh' -'am_' -'own_' -'p_' -'er' -'head' -'ns_' -'men_' -'plac' -'thre' -'hims' -'go_' -'ble_' -'may_' -'less' -'went' -'et_' -'most' -'rest' -'ugh_' -'love' -'give' -'pass' -'beca' -'say_' -'life' -'eyes' -'whil' -'call' -'nigh' -'use_' -'bein' -'thos' -'many' -'away' -'turn' -'coun' -'hing' -'hed_' -'youn' -'stra' -'th_' -'comm' -'too_' -'stil' -'foun' -'ons_' -'don' -'last' -'ch_' -'able' -'ered' -'mean' -'face' -'gs_' -'ds_' -'tell' -'noth' -'cour' -'work' -'ance' -'peop' -'righ' -'ht_' -'room' -'chil' -'year' -'ry_' -'sure' -'ys_' -'sed_' -'word' -'pers' -'o_' -'ral_' -'yet_' -'ligh' -'get_' -'ence' -'ll_' -'aske' -'happ' -'shal' -'stre' -'ting' -'saw_' -'same' -'f_' -'te_' -'off_' -'w_' -'fath' -'want' -'prin' -'brea' -'chan' -'inst' -'char' -'ge_' -'hers' -'anot' -'ss_' -'left' -'lf_' -'seve' -'once' -'ain_' -'open' -'girl' -'dist' -'ding' -'took' -'alon' -'fort' -'ped_' -'land' -'expe' -'on' -'nce_' -'led_' -'near' -'alwa' -'supp' -'frie' -'mome' -'door' -'een_' -'let_' -'new_' -'appe' -'full' -'told' -'age_' -'plea' -'ver_' -'side' -'ente' -'moth' -'mind' -'de_' -'real' -'why_' -'put_' -'soon' -'form' -'ded_' -'stat' -'poss' -'fell' -'home' -'ring' -'ter_' -'star' -'indi' -'live' -'we' -'acco' -'read' -'answ' -'wind' -'goin' -'essi' -'repl' -'care' -'diff' -'rd_' -'disc' -'name' -'natu' -'feel' -'worl' -'find' -'beli' -'ity_' -'ies_' -'stan' -'wate' -'whit' -'stor' -'kind' -'cert' -'high' -'me' -'ant_' -'woma' -'retu' -'prop' -'wish' -'est_' -'foll' -'rema' -'ined' -'carr' -'whol' -'knew' -'show' -'ged_' -'each' -'tly_' -'conc' -'serv' -'hard' -'havi' -'sing' -'gene' -'c_' -'nst_' -'you' -'bett' -'ned_' -'bega' -'quit' -'far_' -'few_' -'enou' -'eigh' -'ible' -'four' -'voic' -'ct_' -'ure_' -'shor' -'conf' -'matt' -'ks_' -'ic_' -'yes_' -'ough' -'beau' -'clos' -'ck_' -'leav' -'atte' -'got_' -'seen' -'done' -'inde' -'sir_' -'morn' -'betw' -'ess_' -'ls_' -'walk' -'fore' -'late' -'hope' -'ared' -'grou' -'hund' -'man' -'fall' -'ate_' -'orde' -'ect_' -'powe' -'ated' -'felt' -'poin' -'hour' -'reco' -'el_' -'towa' -'spea' -'her' -'wond' -'howe' -'amon' -'ed' -'half' -'ling' -'talk' -'rece' -'wood' -'try_' -'lly_' -'conv' -'poor' -'ce' -'both' -'also' -'stoo' -'perh' -'keep' -'ar_' -'ish_' -'does' -'ot_' -'icul' -'aps_' -'ened' -'myse' -'clea' -'ctio' -'oh_' -'fact' -'gent' -'co' -'smal' -'exce' -'erin' -'set_' -'nor_' -'sent' -'him' -'admi' -'gave' -'ne_' -'whom' -'tree' -'days' -'re' -'almo' -'unti' -'deli' -'sion' -'ions' -'ing' -'sand' -'mast' -'drea' -'stro' -'son_' -'best' -'thir' -'esse' -'es' -'ful_' -'ely_' -'need' -'engl' -'end_' -'ress' -'impo' -'gree' -'toge' -'step' -'so' -'fran' -'suff' -'sinc' -'sigh' -'se' -'or' -'ma' -'ly' -'tain' -'ta' -'dear' -'lo' -'doub' -'ques' -'marr' -'feet' -'roun' -'sens' -'nds_' -'anyt' -'next' -'move' -'laug' -'do' -'dark' -'reac' -'brou' -'blac' -'pt_' -'ard_' -'prov' -'ider' -'ur_' -'crie' -'smil' -'larg' -'fami' -'eve_' -'help' -'gran' -'fire' -'ming' -'lay_' -'five' -'twen' -'play' -'ose_' -'hors' -'visi' -'sudd' -'arou' -'ro' -'teen' -'capt' -'moun' -'wait' -'john' -'stru' -'go' -'forg' -'reas' -'mone' -'po' -'mber' -'lett' -'fear' -'eren' -'rath' -'ious' -'doct' -'stri' -'ship' -'case' -'appr' -'line' -'le' -'idea' -'body' -'cent' -'ved_' -'id_' -'ho' -'selv' -'uncl' -'soun' -'reme' -'terr' -'cond' -'heav' -'les_' -'grow' -'can' -'writ' -'perf' -'mont' -'he' -'gone' -'air_' -'ten_' -'cted' -'whos' -'city' -'sile' -'dire' -'desi' -'trou' -'lady' -'ked_' -'mo' -'till' -'spec' -'leas' -'wife' -'resp' -'med_' -'ice_' -'deat' -'plan' -'nge_' -'in' -'hold' -'forc' -'cann' -'prom' -'true' -'rned' -'rise' -'offi' -'fair' -'sat_' -'pret' -'ping' -'dren' -'slee' -'ofte' -'comi' -'behi' -'stop' -'ster' -'nded' -'free' -'en' -'mann' -'nts_' -'colo' -'brot' -'bed_' -'hter' -'foot' -'reli' -'enti' -'ecti' -'wome' -'spir' -'ve' -'succ' -'shed' -'belo' -'temp' -'tabl' -'duri' -'self' -'ru' -'na' -'circ' -'crea' -'la' -'beco' -'rds_' -'lord' -'el' -'book' -'al' -'trea' -'nati' -'crow' -'ces_' -'ily_' -'town' -'dy_' -'used' -'fine' -'disa' -'tifu' -'thus' -'du' -'alre' -'imme' -'fift' -'acti' -'ntio' -'draw' -'sign' -'rn_' -'poli' -'ady_' -'adva' -'watc' -'pape' -'ive_' -'expr' -'caus' -'tati' -'didn' -'at' -'prof' -'fish' -'inue' -'simp' -'held' -'rt_' -'rati' -'entl' -'bo' -'proc' -'bear' -'ythi' -'vi' -'sist' -'occu' -'ja' -'imag' -'dead' -'ward' -'says' -'sa' -'meet' -'rsta' -'owed' -'nd' -'ar' -'ac' -'road' -'red' -'obse' -'boy_' -'to' -'disp' -'chee' -'abov' -'seco' -'dang' -'us' -'sh_' -'ms_' -'si' -'offe' -'list' -'desc' -'brok' -'rose' -'ni' -'minu' -'huma' -'earl' -'acte' -'wall' -'vill' -'pe' -'et' -'rs' -'nt' -'ga' -'ying' -'quic' -'efor' -'onal' -'cra' -'hair' -'god_' -'expl' -'deep' -'coll' -'ning' -'gi' -'enly' -'ende' -'dres' -'spok' -'ory_' -'inat' -'impr' -'cove' -'va' -'quar' -'tes_' -'pain' -'ings' -'di' -'rich' -'kept' -'ke_' -'obje' -'rive' -'ows_' -'iden' -'gold' -'brow' -'trai' -'oppo' -'st' -'rega' -'flow' -'fill' -'da' -'lear' -'ey_' -'eart' -'chur' -'buil' -'maki' -'whet' -'sort' -'lu' -'ced_' -'soci' -'port' -'pe_' -'pu' -'ific' -'besi' -'bar' -'scho' -'ine_' -'brin' -'ea' -'rate' -'od_' -'su' -'ines' -'ches' -'begi' -'ah_' -'eith' -'de' -'bill' -'purp' -'itse' -'and' -'posi' -'itio' -'daug' -'sati' -'mile' -'ical' -'hill' -'perc' -'numb' -'ived' -'extr' -'busi' -'hs_' -'ured' -'rela' -'publ' -'past' -'lost' -'cast' -'up' -'trie' -'six_' -'else' -'chai' -'ture' -'th' -'swee' -'ir' -'surp' -'gove' -'om_' -'jo' -'is' -'allo' -'subj' -'stea' -'ousl' -'mate' -'big_' -'cold' -'out' -'ia' -'ali' -'pa' -'ally' -'scar' -'ng' -'ha' -'corn' -'bloo' -'nece' -'glad' -'gard' -'driv' -'dn' -'quee' -'plai' -'pen' -'cur' -'cla' -'lead' -'kill' -'diat' -'ti' -'shar' -'pris' -'hono' -'hast' -'chie' -'arms' -'ston' -'week' -'pete' -'har' -'cess' -'ber' -'reso' -'ob' -'noti' -'mill' -'iage' -'atta' -'snow' -'excl' -'prob' -'prec' -'ol' -'mark' -'fiel' -'wa' -'low_' -'gues' -'evid' -'acro' -'wild' -'tor' -'thy_' -'gro' -'ging' -'blue' -'arri' -'adde' -'acce' -'shad' -'osit' -'nort' -'ecte' -'prod' -'prev' -'mere' -'soul' -'clas' -'ainl' -'stic' -'quie' -'occa' -'nine' -'ial_' -'b_' -'touc' -'summ' -'osed' -'car' -'brig' -'te' -'secr' -'requ' -'favo' -'ery_' -'ched' -'ult' -'sold' -'insi' -'farm' -'an' -'sea_' -'ound' -'decl' -'resu' -'ol_' -'met_' -'husb' -'dest' -'view' -'one' -'ap' -'ants' -'ses_' -'oach' -'pi' -'mb' -'cial' -'whis' -'seat' -'peri' -'ia_' -'ge' -'figu' -'tone' -'ki' -'effe' -'deci' -'ures' -'repr' -'dam' -'ur' -'tran' -'spen' -'rabl' -'news' -'dar' -'ck' -'amer' -'ine' -'hung' -'fail' -'ask_' -'alth' -'ut' -'run_' -'dete' -'she' -'hist' -'ety_' -'equa' -'dis' -'bell' -'ay_' -'affe' -'acqu' -'wort' -'vo' -'ven' -'taki' -'prep' -'bu' -'ty' -'trav' -'mode' -'mari' -'ary_' -'x_' -'cu' -'safe' -'merc' -'forw' -'doin' -'trut' -'ton_' -'tend' -'sout' -'pati' -'hes_' -'as' -'ves_' -'stay' -'ps_' -'fa' -'ease' -'bank' -'assi' -'west' -'wed_' -'slow' -'livi' -'exam' -'bene' -'save' -'ill_' -'floo' -'blin' -'won' -'ul' -'pre' -'ican' -'drop' -'desp' -'usua' -'sugg' -'stud' -'rais' -'fi' -'emen' -'comf' -'war_' -'vari' -'scen' -'ents' -'test' -'sixt' -'eye_' -'exci' -'easi' -'boys' -'act_' -'wing' -'um' -'stu' -'sayi' -'rien' -'ntly' -'li' -'fast' -'esta' -'des_' -'cros' -'boar' -'wors' -'tear' -'susp' -'ri' -'ours' -'ired' -'incr' -'ight' -'ht' -'grav' -'beyo' -'ably' -'no' -'moti' -'fron' -'fo' -'chap' -'aw' -'sorr' -'soft' -'ley_' -'repe' -'op' -'nu' -'glan' -'der_' -'bra' -'ul_' -'thee' -'rt' -'fer' -'exis' -'ec' -'chin' -'ben' -'agre' -'reve' -'lar_' -'ide_' -'grac' -'ft' -'exte' -'ersa' -'enjo' -'ca' -'un' -'shin' -'che' -'ving' -'spee' -'sett' -'sal' -'roll' -'rdin' -'ran_' -'ow' -'infl' -'guar' -'ets_' -'anim' -'ties' -'pick' -'opin' -'men' -'anio' -'warm' -'sail' -'remo' -'phys' -'ee' -'clot' -'camp' -'tive' -'furt' -'figh' -'ch' -'unit' -'race' -'oc' -'neig' -'mout' -'mada' -'leng' -'deal' -'corr' -'als_' -'rmin' -'nnin' -'ne' -'info' -'boat' -'yout' -'rese' -'ny_' -'nger' -'ange' -'sk' -'pict' -'lete' -'fing' -'curi' -'ba' -'arti' -'ssar' -'rent' -'rely' -'owin' -'outs' -'none' -'mine' -'inct' -'hi' -'appl' -'rly_' -'ra' -'priv' -'cal' -'anne' -'unt_' -'ort_' -'nti' -'den' -'ciou' -'ble' -'bad_' -'adve' -'thor' -'rted' -'qui' -'prot' -'ishe' -'ion' -'beat' -'inco' -'assu' -'ans_' -'rock' -'lder' -'hurr' -'grew' -'grat' -'esti' -'ars_' -'anxi' -'ad' -'wear' -'path' -'ise_' -'im' -'gras' -'gar' -'ami' -'vere' -'thic' -'tail' -'supe' -'spri' -'piec' -'ors_' -'kly_' -'fina' -'east' -'cut_' -'cre' -'batt' -'wide' -'ver' -'tena' -'ssib' -'neit' -'caug' -'asse' -'sun_' -'sha' -'main' -'hy_' -'gath' -'drew' -'cal_' -'refu' -'musi' -'hall' -'fic' -'eive' -'born' -'affa' -'ndin' -'ka' -'ju' -'esca' -'chri' -'bi' -'ball' -'ue_' -'tica' -'que' -'od' -'nel_' -'habi' -'gett' -'frig' -'ds' -'incl' -'hy' -'fres' -'empt' -'cate' -'bea' -'sted' -'judg' -'il_' -'day' -'clou' -'aime' -'swa' -'moon' -'let' -'hel' -'enem' -'dly_' -'utte' -'repo' -'lies' -'liar' -'ko' -'eved' -'ale' -'afra' -'za' -'woun' -'phil' -'orm' -'note' -'mu' -'lt_' -'laid' -'ke' -'hat' -'ern_' -'atin' -'ant' -'rtan' -'rous' -'carl' -'barr' -'abso' -'und' -'shoo' -'seri' -'pray' -'per_' -'ns' -'mon' -'meas' -'inqu' -'inal' -'ghts' -'fro' -'erfu' -'ele' -'ard' -'ai' -'wo' -'viol' -'tt' -'rved' -'res_' -'rall' -'pan' -'myst' -'mass' -'hunt' -'dent' -'bird' -'arm_' -'vict' -'resi' -'mble' -'ill' -'icie' -'ian_' -'este' -'bles' -'ag' -'war' -'trem' -'pala' -'jour' -'eg' -'ect' -'died' -'chi' -'tu' -'sitt' -'sain' -'rnme' -'prac' -'pay_' -'boun' -'bb' -'aran' -'ago_' -'uni' -'trac' -'shee' -'lema' -'givi' -'ep' -'drag' -'cy_' -'bor' -'ain' -'ace_' -'vall' -'unco' -'til' -'swe' -'pped' -'ina' -'fren' -'coat' -'ci' -'ane' -'aint' -'purs' -'obli' -'nted' -'ft_' -'defe' -'bri' -'tru' -'swor' -'sin' -'law_' -'est' -'erty' -'enga' -'ead_' -'ya' -'wise' -'rain' -'oner' -'medi' -'lowe' -'fanc' -'suit' -'sant' -'san' -'ry' -'pt' -'min' -'labo' -'horr' -'gain' -'fly_' -'eu' -'entr' -'arch' -'all' -'accu' -'umst' -'rwar' -'pock' -'ot' -'lips' -'join' -'ex' -'espe' -'dema' -'danc' -'cely' -'brid' -'wn_' -'ual_' -'stai' -'rtun' -'roma' -'pot' -'narr' -'invi' -'em_' -'cloc' -'bott' -'wash' -'symp' -'regi' -'pin' -'impe' -'gs' -'dese' -'vel' -'tie' -'sco' -'rm' -'pil' -'os' -'ome_' -'nge' -'memo' -'lond' -'jane' -'isab' -'ic' -'god' -'fini' -'dra' -'top_' -'subs' -'soli' -'rush' -'og' -'mp' -'itte' -'gg' -'fla' -'eat_' -'conn' -'burn' -'rnoo' -'rful' -'maid' -'ins_' -'hero' -'ers' -'degr' -'bran' -'ban' -'arra' -'army' -'appa' -'aine' -'yl' -'wint' -'tra' -'ser' -'om' -'mal' -'hu' -'empl' -'effo' -'dinn' -'dare' -'uenc' -'tis' -'spar' -'sm_' -'seei' -'ric' -'psyc' -'intr' -'ifie' -'exac' -'ens_' -'auth' -'ab' -'sun' -'sta' -'secu' -'nish' -'majo' -'lift' -'lake' -'if' -'fait' -'enin' -'dom_' -'cap' -'be' -'wron' -'ua' -'surr' -'send' -'pale' -'nic' -'ngth' -'mm' -'eful' -'eede' -'dece' -'con' -'vent' -'theo' -'tche' -'ste' -'oi' -'mora' -'mess' -'lute' -'lity' -'ier_' -'cro' -'cham' -'am' -'um_' -'ters' -'rec' -'rage' -'peac' -'indu' -'id' -'hten' -'gate' -'food' -'au' -'una' -'tted' -'slig' -'shak' -'rial' -'nch' -'lad' -'devo' -'shi' -'shel' -'ruct' -'rebe' -'mos' -'doll' -'yell' -'tter' -'situ' -'sit_' -'sick' -'shop' -'ral' -'par' -'mer' -'mary' -'heal' -'hang' -'glas' -'ert' -'enco' -'easy' -'cts_' -'bled' -'uct' -'sts_' -'paus' -'ney_' -'neg' -'leme' -'je' -'fool' -'erly' -'emi' -'elle' -'bit_' -'tar' -'sy' -'swi' -'sell' -'rtai' -'pull' -'popu' -'oy' -'mor' -'mons' -'mar' -'lean' -'hal' -'bly_' -'blow' -'abr' -'tere' -'teac' -'tast' -'ssi' -'rsto' -'per' -'luck' -'lie_' -'iste' -'ici' -'harm' -'era' -'eage' -'ways' -'loud' -'kle' -'issi' -'ire_' -'hesi' -'fur' -'ew' -'elf' -'ze' -'ts' -'sel' -'rule' -'ptio' -'oti' -'oper' -'ons' -'ones' -'merr' -'lop' -'hone' -'esen' -'dom' -'cath' -'ath_' -'twel' -'tor_' -'shut' -'perm' -'llec' -'itie' -'ised' -'hol' -'fu' -'for' -'civi' -'uri' -'shot' -'sear' -'rit' -'rh' -'ret' -'ranc' -'ph' -'not' -'mana' -'lose' -'evil' -'eque' -'dle' -'dd' -'corp' -'catc' -'barb' -'air' -'wine' -'wand' -'slav' -'post' -'magi' -'llen' -'law' -'il' -'gall' -'end' -'divi' -'din' -'ade' -'addr' -'ze_' -'yed_' -'tryi' -'sole' -'silv' -'pari' -'orig' -'inve' -'ini' -'ince' -'ham' -'crim' -'advi' -'weak' -'ted' -'tall' -'shap' -'neck' -'latt' -'ital' -'blis' -'bit' -'ay' -'ande' -'ages' -'ad_' -'xi' -'wave' -'valu' -'trus' -'tre' -'ter' -'spot' -'refl' -'pp' -'mic' -'mas' -'grap' -'gen' -'duty' -'die_' -'cous' -'art_' -'val' -'tin' -'tan' -'sub' -'sla' -'sca' -'repu' -'pted' -'murd' -'mis' -'memb' -'legs' -'clu' -'broa' -'ber_' -'aunt' -'way' -'trad' -'son' -'sky_' -'ria' -'lea' -'lar' -'ip' -'holl' -'hant' -'gu' -'gle' -'ges_' -'cott' -'by' -'bed' -'avo' -'univ' -'ner_' -'mp_' -'len' -'ledg' -'knee' -'joy_' -'ggle' -'game' -'flee' -'feat' -'calm' -'asto' -'uns' -'rel' -'pet' -'ond' -'nobl' -'ll' -'isla' -'ione' -'imen' -'hypn' -'heat' -'elo' -'depa' -'bon' -'bitt' -'yard' -'titu' -'tant' -'sp' -'lled' -'inin' -'ger_' -'fain' -'comb' -'coa' -'tmen' -'term' -'smok' -'sh' -'seiz' -'see' -'sacr' -'ppea' -'nse_' -'lati' -'insu' -'ingl' -'ff_' -'citi' -'vidu' -'ut_' -'ure' -'trib' -'squa' -'rior' -'oo' -'ntag' -'mini' -'joy' -'isn' -'ies' -'fash' -'cas' -'spo' -'sle' -'pect' -'now' -'nois' -'mise' -'marc' -'ladi' -'fli' -'chas' -'bull' -'tit' -'runn' -'rts_' -'mus' -'luti' -'lock' -'itud' -'iri' -'impa' -'ey' -'erou' -'eme' -'deve' -'cry_' -'cri' -'ari' -'are' -'anci' -'urb' -'rin' -'qual' -'nged' -'nes_' -'ger' -'geor' -'flat' -'firm' -'devi' -'der' -'ave' -'art' -'une_' -'tire' -'tim' -'stag' -'slip' -'sil' -'pros' -'iers' -'hful' -'hate' -'erne' -'disg' -'bur' -'arm' -'age' -'uall' -'twi' -'tac' -'spit' -'seek' -'seas' -'row' -'ree' -'pur' -'otte' -'nn' -'mart' -'cked' -'butt' -'apar' -'york' -'tic' -'sepa' -'sea' -'ries' -'ribe' -'rapi' -'push' -'oni' -'mort' -'lt' -'lang' -'jun' -'ir_' -'eo' -'coro' -'cher' -'bla' -'zed_' -'wasn' -'ura' -'unle' -'unce' -'unc' -'ude' -'tude' -'tom' -'stin' -'skin' -'sen' -'sad' -'pond' -'orit' -'lved' -'llig' -'ig' -'ibly' -'fit_' -'ena' -'emp' -'bl' -'antl' -'anti' -'van' -'ren' -'ove' -'morr' -'mati' -'lit' -'libe' -'iron' -'gray' -'gnan' -'fun' -'awak' -'angr' -'tric' -'sty_' -'site' -'ori' -'lyin' -'lun' -'ise' -'host' -'gniz' -'fe' -'ener' -'enc' -'ybod' -'usio' -'tom_' -'stoc' -'radi' -'pric' -'parl' -'ous' -'ora' -'mil' -'inc' -'ie_' -'ie' -'hor' -'hen_' -'fra' -'ectl' -'dim' -'dan' -'capa' -'attr' -'alo' -'ado' -'welc' -'virt' -'sham' -'ruin' -'risi' -'py' -'orte' -'mous' -'ida' -'ict' -'hbor' -'grad' -'germ' -'eni' -'ef_' -'edge' -'cke' -'bre' -'ass' -'arat' -'wag' -'uced' -'tles' -'ss' -'sho' -'scra' -'rrup' -'rang' -'pure' -'patr' -'ordi' -'obta' -'ngin' -'ish' -'henr' -'grie' -'gn' -'eliz' -'ct' -'bag' -'bad' -'anno' -'abse' -'abo' -'volu' -'vic' -'too' -'sf' -'rmed' -'regu' -'rded' -'para' -'of' -'nor' -'net' -'glor' -'gloo' -'ath' -'actu' -'ume' -'sple' -'spi' -'rob' -'renc' -'pol' -'igno' -'earn' -'bare' -'use' -'sy_' -'spre' -'ror_' -'rk' -'prou' -'plat' -'owne' -'orn' -'mach' -'ken' -'jack' -'iona' -'hood' -'eli' -'dian' -'dee' -'cy' -'ctly' -'crac' -'clai' -'ceas' -'cabi' -'teet' -'spac' -'rea' -'pied' -'kiss' -'ham_' -'gly_' -'erat' -'cho' -'burg' -'aris' -'wi' -'weal' -'ten' -'spra' -'sfac' -'roug' -'rie' -'ras' -'ple_' -'orga' -'mpan' -'mel' -'magn' -'ians' -'hip_' -'hen' -'ful' -'flas' -'ei' -'depe' -'defi' -'dec' -'cca_' -'bath' -'bab' -'argu' -'vess' -'unp' -'ug' -'tled' -'tle_' -'tale' -'stee' -'sfie' -'rred' -'ron' -'ray' -'ndan' -'nary' -'ist' -'hum' -'hop' -'exec' -'elde' -'bun' -'brai' -'ator' -'ash' -'yle_' -'ws_' -'tri' -'tary' -'rp' -'rd' -'prie' -'pon' -'nced' -'marg' -'liz' -'cien' -'aliv' -'vers' -'uti' -'tur' -'toby' -'tent' -'scre' -'rity' -'reti' -'rary' -'qua' -'paid' -'orta' -'oli' -'nci' -'nce' -'mn' -'mes_' -'ice' -'hee' -'eva' -'ett' -'clim' -'brav' -'boug' -'weat' -'tors' -'tong' -'scor' -'sake' -'pier' -'pecu' -'pare' -'nk' -'ist_' -'inia' -'ingu' -'gni' -'fee' -'fart' -'esso' -'ent' -'edwa' -'ects' -'dism' -'ast' -'alte' -'zen_' -'vain' -'uc' -'tro' -'tol' -'tenc' -'rail' -'rach' -'peas' -'nty_' -'lin' -'lian' -'kfas' -'ker_' -'juli' -'ita' -'hoo' -'hat_' -'gaze' -'exer' -'enge' -'em' -'elev' -'die' -'burs' -'blo' -'asha' -'ulat' -'tal' -'stup' -'song' -'shri' -'scie' -'rip' -'rb' -'pho' -'pats' -'orti' -'oa' -'nobo' -'may' -'lf' -'ld' -'knit' -'key_' -'hern' -'futu' -'drin' -'demo' -'deb' -'cow' -'cart' -'aut' -'top' -'ski' -'roof' -'revo' -'rei' -'prai' -'patt' -'papa' -'oned' -'ona' -'mpt_' -'midd' -'jerr' -'irs_' -'inn' -'ign_' -'ial' -'furn' -'flor' -'fet' -'fan' -'excu' -'err' -'ens' -'dela' -'athy' -'ang' -'alar' -'ake' -'wre' -'whi' -'virg' -'rend' -'ose' -'odi' -'nice' -'nerv' -'nda' -'mead' -'lude' -'lain' -'knig' -'ile' -'hole' -'hm' -'fat' -'due_' -'deta' -'cs_' -'cru' -'cop' -'bili' -'abet' -'wl' -'syst' -'ride' -'pref' -'pl' -'pit' -'pere' -'ntee' -'nder' -'nat' -'mpli' -'maje' -'knoc' -'ject' -'ite' -'illu' -'ili' -'hot_' -'geni' -'gas' -'flu' -'euro' -'ee_' -'eal' -'cipa' -'bore' -'baby' -'ye' -'val_' -'ub' -'troo' -'ruth' -'rop' -'pear' -'pack' -'oral' -'nly_' -'log' -'itu' -'hic' -'fold' -'ern' -'eric' -'edit' -'cord' -'cook' -'club' -'cle_' -'cipl' -'box_' -'band' -'atti' -'ywhe' -'wil' -'ue' -'u_' -'tea_' -'shr' -'que_' -'ppoi' -'pira' -'nist' -'net_' -'nea' -'mac' -'lucy' -'lex' -'ison' -'impu' -'han' -'ess' -'elec' -'dro' -'dign' -'bush' -'amus' -'amen' -'af' -'yn' -'wore' -'unte' -'snap' -'row_' -'ratu' -'pla' -'mpt' -'ket' -'ker' -'ken_' -'ire' -'icia' -'gger' -'geth' -'get' -'gest' -'fond' -'env' -'cost' -'cong' -'cles' -'beha' -'bas' -'awfu' -'ati' -'win' -'span' -'rked' -'regr' -'ps' -'prog' -'perp' -'orat' -'ms' -'limi' -'jos' -'jer' -'inci' -'herd' -'fri' -'ears' -'dge' -'deck' -'dat' -'cree' -'chu' -'cat' -'awar' -'witn' -'unt' -'uch' -'task' -'suns' -'rpr' -'ros' -'rl' -'rim' -'rat' -'nose' -'nity' -'nite' -'nal_' -'meth' -'lem' -'jen' -'ive' -'inar' -'hurt' -'heig' -'gor' -'glo' -'ghtf' -'empe' -'elve' -'chos' -'bos' -'baro' -'wrot' -'wit' -'vani' -'uste' -'unw' -'teme' -'sti' -'spe' -'rkab' -'ra_' -'pat' -'oduc' -'lle' -'ler_' -'leap' -'las' -'ins' -'ided' -'icio' -'fixe' -'fier' -'erse' -'epti' -'elli' -'broo' -'brie' -'bold' -'bodi' -'begg' -'alto' -'zi' -'z_' -'warr' -'ussi' -'uppe' -'surf' -'stom' -'russ' -'retr' -'pti' -'pr' -'pole' -'plen' -'oe' -'nsi' -'movi' -'hide' -'gan' -'frui' -'fest' -'ere' -'ear_' -'cup' -'cing' -'cha' -'cc' -'ambi' -'ama' -'addi' -'wra' -'whe' -'tw' -'rvi' -'pour' -'pher' -'ntur' -'ner' -'lei' -'inno' -'gun' -'greg' -'don_' -'dick' -'cust' -'cool' -'coas' -'bing' -'bel' -'asso' -'aff' -'weig' -'upt' -'tate' -'roar' -'phr' -'pea' -'olat' -'nk_' -'mph' -'mir' -'lic' -'lace' -'icat' -'humo' -'hem' -'gla' -'gil' -'ffe' -'erve' -'endo' -'ede' -'yo' -'wret' -'tic_' -'sad_' -'rc' -'ov' -'mpe' -'meal' -'loos' -'loca' -'lime' -'hur' -'hote' -'hadn' -'grah' -'gli' -'folk' -'flew' -'ffi' -'fals' -'educ' -'eb' -'dle_' -'dish' -'coup' -'bee' -'ame' -'wig' -'warn' -'vast' -'urd' -'uent' -'uage' -'stir' -'stal' -'scu' -'scri' -'rve_' -'rty_' -'rti' -'ris' -'nces' -'mour' -'loss' -'llin' -'inju' -'ica' -'hbou' -'ghte' -'fs_' -'ensi' -'dor' -'dily' -'dale' -'cult' -'cula' -'crue' -'adam' -'zing' -'ye_' -'wick' -'wha' -'vol' -'ust' -'ular' -'stia' -'smoo' -'sar' -'repa' -'prem' -'poet' -'ono' -'nta' -'mult' -'mul' -'moo' -'mit' -'gion' -'freq' -'expo' -'enth' -'dwel' -'dry_' -'doze' -'dful' -'cry' -'colu' -'ciat' -'cand' -'ava' -'augu' -'asce' -'arta' -'vit' -'uit' -'tte_' -'trim' -'thom' -'size' -'rmat' -'rant' -'ract' -'putt' -'poun' -'pipe' -'osi' -'nia' -'ndo' -'mond' -'mat' -'lay' -'ized' -'ingt' -'infe' -'het' -'ght' -'ell' -'eles' -'edin' -'dri' -'dm' -'crit' -'craw' -'cli' -'cks_' -'bowe' -'bal' -'xt' -'utio' -'ury_' -'tum' -'tual' -'stif' -'sob' -'lte' -'lla_' -'idi' -'gm' -'dge_' -'cul' -'cris' -'caro' -'bet' -'asle' -'andr' -'alle' -'ail' -'agon' -'abu' -'abil' -'zen' -'wast' -'urs' -'uct_' -'trip' -'tch_' -'spor' -'simi' -'roya' -'ref' -'rare' -'prid' -'phe' -'ored' -'loui' -'lodg' -'llo' -'iz' -'ite_' -'hie' -'gra' -'ffer' -'emb' -'bow' -'asp' -'who' -'unkn' -'unfo' -'tele' -'sse' -'sol' -'sava' -'sat' -'rve' -'prim' -'pend' -'pair' -'onsi' -'olde' -'obey' -'lot_' -'leg' -'la_' -'ks' -'invo' -'gn_' -'drov' -'cab' -'busy' -'bril' -'bent' -'ativ' -'asid' -'appo' -'ana' -'ald' -'ahea' -'achi' -'zz' -'usi' -'une' -'tram' -'tien' -'tea' -'sund' -'sor' -'rume' -'rubb' -'rne' -'rfe' -'pant' -'oke' -'oat' -'ndid' -'musk' -'mamm' -'ls' -'lite' -'lest' -'lamp' -'jimm' -'issu' -'irre' -'hly_' -'gw' -'gian' -'fen' -'fal' -'eti' -'endu' -'eh' -'edi' -'duc' -'dog_' -'com' -'clif' -'cer_' -'card' -'bul' -'bone' -'aid' -'adj' -'vin' -'unl' -'unha' -'swif' -'smit' -'sim' -'risk' -'pro' -'plun' -'pity' -'pard' -'ody_' -'odd' -'mut' -'murm' -'mn_' -'meri' -'lus' -'lse' -'lack' -'jeff' -'ib' -'hil' -'hid' -'gul' -'guid' -'grim' -'gri' -'fles' -'faul' -'ew_' -'ete' -'els_' -'eati' -'dig' -'deri' -'cil' -'cana' -'beas' -'audi' -'atel' -'arth' -'anat' -'wn' -'ute_' -'usia' -'urag' -'unic' -'ung' -'stl' -'sn' -'root' -'rejo' -'rank' -'ram' -'ounc' -'ony_' -'oma' -'ngs_' -'ngly' -'nes' -'kins' -'kat' -'jump' -'inha' -'iam_' -'huge' -'hidd' -'gue_' -'embr' -'dep' -'ctiv' -'cred' -'cie' -'capi' -'blan' -'yest' -'unus' -'unex' -'ues' -'ton' -'tia' -'subm' -'sli' -'sl' -'sam' -'res' -'reck' -'puni' -'pill' -'pal' -'owle' -'obst' -'nurs' -'new' -'nar' -'my' -'mid' -'inti' -'idl' -'ica_' -'hw' -'gy_' -'ghos' -'flam' -'emot' -'clo' -'begu' -'anni' -'ackn' -'v_' -'unea' -'triu' -'tful' -'tes' -'ssit' -'seld' -'revi' -'pul' -'por' -'ou' -'olen' -'matc' -'linc' -'jame' -'hau' -'grey' -'fit' -'eve' -'erie' -'diam' -'cor' -'chic' -'cel' -'buri' -'boy' -'bid' -'aten' -'aros' -'ani' -'ake_' -'ah' -'act' -'acci' -'zo' -'yt' -'xa' -'unto' -'unat' -'ught' -'type' -'turt' -'soug' -'sly_' -'rthe' -'rome' -'rg' -'refe' -'rap' -'ppin' -'phan' -'page' -'oon_' -'onab' -'omi' -'non' -'nest' -'mids' -'lp' -'ivi' -'inva' -'inua' -'infi' -'ign' -'hos' -'goes' -'gne' -'glim' -'erda' -'emma' -'eggs' -'dil' -'ders' -'dept' -'crop' -'chm' -'buy_' -'buck' -'bree' -'birt' -'bin' -'aski' -'ache' -'wai' -'viou' -'ssa' -'slep' -'slat' -'rra' -'rog' -'rnal' -'ribu' -'pse' -'onin' -'nora' -'nodd' -'nds' -'mili' -'lie' -'laws' -'isi' -'htly' -'guil' -'gui' -'forb' -'ferr' -'fate' -'erio' -'ep_' -'eil_' -'eho' -'den_' -'ded' -'ctin' -'crus' -'clev' -'cis' -'cers' -'bite' -'berr' -'bask' -'anyw' -'amaz' -'alas' -'zzle' -'wea' -'sw' -'squi' -'skil' -'rvat' -'rre' -'roc' -'robe' -'remi' -'rag' -'pper' -'penc' -'owe' -'nie' -'mbli' -'lect' -'iti' -'ism_' -'insp' -'impl' -'imm' -'how' -'gru' -'gnat' -'glow' -'engi' -'emba' -'elsi' -'eed' -'dru' -'diss' -'dea' -'dail' -'bow_' -'beho' -'avoi' -'yo_' -'wis' -'whir' -'unf' -'thu' -'thr' -'shoe' -'shaw' -'say' -'sanc' -'roy' -'ridi' -'ridg' -'refr' -'ran' -'plum' -'peep' -'oria' -'oly' -'nsci' -'nove' -'nde' -'lan' -'hosp' -'geo' -'ema' -'eed_' -'duke' -'choi' -'cav' -'but' -'bert' -'base' -'arly' -'anyo' -'abs' -'yon' -'wido' -'wedd' -'vote' -'veil' -'urin' -'tria' -'ssed' -'sma' -'sive' -'shme' -'sche' -'scat' -'rig' -'rid' -'pron' -'ole' -'mer_' -'marv' -'lm' -'lis' -'ilit' -'hut' -'horn' -'heap' -'flig' -'fare' -'exha' -'eta' -'eate' -'dust' -'dur' -'ars' -'arme' -'arin' -'aord' -'ace' -'aba' -'worn' -'veri' -'udo' -'twic' -'tn' -'thi' -'tera' -'rus' -'plo' -'outl' -'ost' -'ore_' -'load' -'lia' -'kitc' -'infa' -'geme' -'gal' -'floa' -'fat_' -'exch' -'eth' -'ersi' -'enta' -'ege_' -'ea_' -'dull' -'dive' -'dise' -'deni' -'cta' -'cler' -'cill' -'cen' -'cati' -'bs_' -'bob' -'ara' -'amou' -'whee' -'urge' -'uous' -'ugly' -'tnes' -'thea' -'sylv' -'surv' -'stab' -'snak' -'sir' -'robb' -'ril' -'rehe' -'proo' -'plu' -'oyed' -'ort' -'nie_' -'monk' -'moni' -'misc' -'mete' -'med' -'mag' -'los' -'legi' -'kn' -'jew' -'japa' -'iame' -'humb' -'hith' -'gh' -'flo' -'feve' -'famo' -'equi' -'eno' -'elea' -'ek' -'cit' -'bobb' -'bluf' -'ak' -'yer' -'wri' -'ware' -'vert' -'uted' -'ueri' -'toi' -'tip' -'tess' -'tely' -'taug' -'sto' -'shoc' -'rict' -'pine' -'orie' -'ood_' -'nut' -'nate' -'misf' -'mina' -'meta' -'mars' -'mani' -'lot' -'leve' -'lars' -'ky_' -'klin' -'judi' -'jesu' -'ivel' -'itua' -'igu' -'hed' -'gram' -'glea' -'frog' -'fled' -'fil' -'fied' -'fel' -'fac' -'ext' -'erm' -'ends' -'ech' -'dne' -'dict' -'chat' -'cell' -'boot' -'alli' -'agen' -'affo' -'ae' -'add_' -'ach' -'ves' -'twin' -'tiny' -'thru' -'sher' -'sex' -'rud' -'rtis' -'rai' -'prud' -'ppy_' -'park' -'ox' -'ortu' -'ont' -'nsiv' -'noo' -'na_' -'leg_' -'kni' -'int' -'his' -'hin' -'hew' -'hes' -'has' -'harr' -'ha_' -'giou' -'gay' -'fre' -'fox' -'ffl' -'ff' -'eter' -'espo' -'ecia' -'eabl' -'ddl' -'dawn' -'cele' -'bel_' -'ada' -'acin' -'vita' -'vagu' -'unb' -'uin' -'ugho' -'try' -'styl' -'soa' -'snes' -'sm' -'rva' -'rode' -'rn' -'rav' -'quis' -'pic' -'peer' -'pace' -'ok' -'nom' -'naut' -'mmen' -'lve' -'lone' -'lieu' -'kas' -'jewe' -'jaso' -'ipl' -'ileg' -'ieu' -'gift' -'fred' -'fram' -'flus' -'fem' -'dogs' -'ctur' -'zy_' -'yone' -'yiel' -'vis' -'tun' -'trul' -'the' -'sum_' -'sso' -'sons' -'smo' -'rwis' -'rou' -'rol_' -'reca' -'proj' -'ntme' -'nal' -'milk' -'mb_' -'lev' -'kin_' -'ka_' -'ize_' -'ists' -'isio' -'ile_' -'fl' -'fitt' -'ere_' -'ench' -'desk' -'cake' -'aus' -'anyb' -'ann' -'ale_' -'zar' -'wder' -'voya' -'unre' -'unab' -'ugh' -'uade' -'tle' -'tl' -'tanc' -'stol' -'sme' -'siti' -'shep' -'scal' -'sc' -'roni' -'rnin' -'rac' -'quot' -'pool' -'nent' -'mutt' -'mud_' -'mi' -'lio' -'lant' -'jeal' -'iors' -'io' -'inse' -'ied' -'ick' -'hus' -'grin' -'gat' -'eyed' -'drun' -'dit' -'depr' -'del' -'cose' -'brus' -'bes' -'bble' -'ase_' -'yr' -'xed_' -'worr' -'ull' -'udi' -'tot' -'teri' -'sus' -'sne' -'slop' -'rust' -'rum' -'rtak' -'rse_' -'rot' -'rna' -'rade' -'ples' -'pitc' -'our' -'ote' -'nte' -'ntar' -'nl' -'nan' -'mira' -'mela' -'logi' -'lli' -'lap' -'kne' -'kers' -'ivat' -'ip_' -'holy' -'hind' -'harv' -'gged' -'gant' -'fe_' -'far' -'exi' -'essf' -'enes' -'davi' -'das' -'cow_' -'conq' -'cat_' -'bru' -'bis' -'bib' -'ates' -'ase' -'any' -'ams' -'yse' -'yme' -'vigo' -'vati' -'tice' -'surg' -'stou' -'spu' -'sie' -'rist' -'piti' -'orme' -'onl' -'ntin' -'ney' -'ndly' -'ncy' -'kee' -'jim' -'jes' -'iot' -'inu' -'ics_' -'hine' -'goo' -'fun_' -'fid' -'fed_' -'exhi' -'etr' -'erre' -'dyin' -'drow' -'dia' -'dere' -'dai' -'cub' -'cl' -'caut' -'brut' -'br' -'arab' -'ak_' -'win_' -'uss' -'ud' -'thun' -'spa' -'sour' -'shir' -'rnor' -'rewa' -'pon_' -'pis' -'own' -'otic' -'orch' -'ome' -'oln_' -'nstr' -'nee' -'lyn' -'iv' -'ils_' -'ify_' -'ier' -'gean' -'gane' -'foug' -'feas' -'esh' -'eke' -'drif' -'choo' -'chec' -'cave' -'bew' -'beg' -'bbi' -'apol' -'alit' -'won_' -'wir' -'was' -'wake' -'vid' -'uis' -'ud_' -'tel' -'sav' -'sau' -'salt' -'rtur' -'rsi' -'rch' -'raw' -'pian' -'pay' -'oub' -'ook' -'omed' -'nse' -'nai' -'lux' -'lusi' -'lou' -'loa' -'lid' -'lict' -'lica' -'libr' -'les' -'ler' -'lanc' -'lame' -'kw' -'inen' -'imit' -'ices' -'hire' -'hei' -'hay' -'gun_' -'fy' -'flyi' -'flou' -'evi' -'esc' -'erit' -'emer' -'diti' -'dfa' -'des' -'date' -'curr' -'cine' -'chok' -'chal' -'cere' -'burd' -'box' -'boil' -'blam' -'betr' -'behe' -'bec' -'aste' -'ape' -'weep' -'uce_' -'towe' -'torn' -'tigh' -'sna' -'slim' -'sci' -'pop' -'ple' -'pau' -'ocea' -'oak_' -'nth_' -'nel' -'nay' -'lily' -'laun' -'inh' -'ilus' -'ibi' -'flun' -'eye' -'exa' -'erer' -'erc' -'enl' -'eff' -'dutc' -'cutt' -'cum' -'cise' -'car_' -'cano' -'buff' -'blus' -'bala' -'bach' -'arre' -'ardi' -'ante' -'agit' -'aced' -'zer' -'ym' -'usef' -'unn' -'ued_' -'tti' -'tou' -'tob' -'tlin' -'titl' -'tch' -'stam' -'roye' -'riva' -'quan' -'osop' -'oad' -'mol' -'mix' -'manu' -'mad_' -'lty' -'lts_' -'limb' -'leo' -'kes_' -'jol' -'ior_' -'hn' -'hit' -'herb' -'hai' -'funn' -'etic' -'ese' -'dh' -'cut' -'coc' -'ciga' -'ca_' -'bour' -'bloc' -'bay_' -'bat' -'atu' -'ats' -'ast_' -'amp' -'aged' From 38cf416da351bc29a5f25d23b49231c2e56c38d1 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Tue, 2 Mar 2021 00:49:06 +0700 Subject: [PATCH 05/10] :writing_hand: update vocabularies --- .../librispeech_train_4_1030.subwords | 4426 +++-------------- 1 file changed, 676 insertions(+), 3750 deletions(-) diff --git a/vocabularies/librispeech/librispeech_train_4_1030.subwords b/vocabularies/librispeech/librispeech_train_4_1030.subwords index e7b225b355..ee4f8a364d 100644 --- a/vocabularies/librispeech/librispeech_train_4_1030.subwords +++ b/vocabularies/librispeech/librispeech_train_4_1030.subwords @@ -4,3846 +4,772 @@ 'and_' 'of_' 'to_' -'e_' 's_' -'a_' 'd_' -'in_' +'a_' +'e_' 't_' +'y_' +'in_' +'ed_' +'r_' 'i_' -'was_' 'he_' 'that' -'r_' -'ed_' -'it_' -'y_' -'his_' +'was_' 'ing_' -'on_' -'with' +'it_' 'n_' -'er_' 'her_' -'had_' +'his_' +'with' +'on_' 'as_' -'h_' -'g_' 'for_' 'you_' -'but_' +'had_' +'h_' 'is_' 'not_' +'l_' +'but_' 'at_' 'she_' -'be_' +'er_' 'ly_' -'ng_' -'l_' +'be_' +'me_' +'le_' +'es_' 'they' -'him_' +'ther' +'ar' +'or_' +'all_' 'by_' 'have' +'g_' +'an_' +'him_' +'ri' 'my_' +'k_' 'this' -'were' +'in' +'bo' 'whic' -'me_' -'le_' -'ther' -'all_' -'from' +'ro' +'si' +'po' +'were' +'de' +'un' 'said' +'from' +'fi' +'vi' +'an' 'so_' 'one_' -'or_' -'k_' -'es_' -'an_' -'we_' +'la' +'di' +'ho' +'ve_' +'se_' +'le' +'ne' +'th' +'so' +'on' +'pa' +'su' +'ci' +'al' +'pe' +'ha' +'do' +'ti' +'or' +'w_' +'er' +'ce' +'out_' 'them' -'some' +'il' +'thin' 'when' -'thei' -'out_' +'ma' +'ic' +'we_' +'re' +'li' +'are_' +'fa' +'some' +'pro' 'no_' +'th_' 're_' -'thin' -'woul' +'el' +'it' 'what' +'m_' +'woul' +'ce_' +'en' +'me' +'thei' +'lo' +'ld_' +'al_' +'to' +'ra' 'if_' -'are_' -'who_' -'been' +'sta' +'go' +'sa' +'will' +'ment' +'st_' +'ca' +'ba' +'ke' 'us_' 'thou' -'ever' -'will' +'who_' +'no' +'pi' +'te' +'ir' +'ion_' +'sp' +'da' +'fe' +'man_' +'ent' +'be' +'te_' +'ga' +'been' +'ad' 'then' -'coul' -'ce_' +'bl' +'dis' +'am' +'va' +'bi' +'con' 'time' +'ever' +'ng_' +'ie' 'up_' -'nd_' +'hi' +'per' +'we' +'bu' +'sto' +'he' +'coul' +'se' +'co' +'na' 'more' -'red_' -'into' +'ble_' +'ou' +'em' +'mi' 'your' -'othe' -'like' -'over' -'man_' -'than' +'min' +'res' 'know' -'very' -'nt_' -'ty_' +'mo' +'cu' +'sc' +'ne_' +'ta' +'p_' +'ted_' 'do_' -'litt' +'sl' +'into' +'gi' +'ed' +'ver' +'as' +'nt' +'very' +'ul' +'ee' +'like' +'king' +'nd' +'ll_' +'ru' +'ur' +'nc' +'now_' 'tion' -'hear' -'ted_' -'abou' 'en_' -'now_' +'nd_' +'dre' +'at' +'qui' +'othe' +'ll' +'ut' +'dr' +'litt' +'than' +'come' +'du' +'gu' 'look' -'afte' -'did_' -'any_' -'well' -'agai' -'ion_' +'over' +'ia' +'et' +'ty_' +'che' +'ct' +'ac' +'ye' +'ep' +'vo' +'is' +'hear' +'ch_' +'rt' +'ide' +'pos' +'ry_' +'car' +'ol' 'rs_' +'ste' +'mar' +'spe' +'ous_' +'for' +'ni' +'rea' +'sho' +'abou' +'ag' +'lea' +'ght_' +'ss_' +'fl' +'ter' +'red_' +'well' +'ff' +'ter_' 'shou' +'im' +'os' +'any_' +'gra' +'fin' +'did_' +'ex' 'grea' 'upon' -'st_' +'ow' +'lu' +'ab' +'afte' +'don' +'des' 'hand' +'agai' +'ge_' +'rec' +'inte' +'mp' +'tt' +'pu' 'only' -'mist' -'has_' +'low' +'jo' +'nt_' +'ins' +'cr' +'es' 'its_' -'our_' +'has_' +'fo' +'ns' +'bro' +'tra' +'ak' +'wi' +'wher' +'pt' +'good' +'man' +'o_' +'her' +'unde' +'part' +'atio' +'mon' +'ts_' +'mist' +'sm' +'hu' +'st' +'wa' 'two_' -'m_' -'made' -'even' +'ent_' 'down' -'miss' -'befo' -'ld_' -'inte' -'long' -'thro' +'ot' +'dea' +'even' +'cons' +'wo' +'ch' +'our_' +'most' +'who' 'elf_' -'ght_' -'good' -'come' -'unde' +'befo' +'ven' +'can_' +'ind' +'ine' 'gh_' -'such' +'win' +'um' +'exp' +'tan' +'ck_' +'ef' 'thes' -'old_' -'cons' +'long' +'made' +'sed_' 'see_' -'wher' -'king' -'came' -'day_' -'way_' -'comp' +'miss' +'pre' +'sur' +'thro' +'ph' +'wor' +'rep' +'rr' +'sen' +'ber' +'que' +'ting' +'old_' 'how_' -'ers_' 'neve' -'it' -'cont' -'ment' -'can_' -'part' +'day_' +'fr' +'must' +'am_' +'je' +'fu' +'came' +'such' +'rem' +'ning' +'sti' +'take' +'ard' +'ok' +'gen' +'est' +'op' +'bea' +'dd' +'us' +'ei' +'nat' +'here' +'rou' +'de_' +'ring' +'mu' +'pl' +'bel' +'go_' +'ist' +'ea' +'pla' +'she' 'much' +'comp' +'cont' +'tre' +'ur_' +'use_' +'mor' +'ns_' +'clo' +'ob' +'pri' +'ar_' +'ving' +'str' +'rn' +'pres' +'ish' +'mil' +'ved_' +'men_' +'bet' 'back' -'ent_' -'take' -'hous' -'ts_' -'se_' -'must' -'ness' 'just' -'al_' -'ve_' -'pres' -'ous_' -'here' -'ow_' -'atio' -'ied_' +'tru' +'way_' +'able' +'ck' +'der' +'ze' +'int' +'gl' +'nce_' +'rs' +'ded_' +'rat' +'bri' +'fel' +'rl' +'imp' +'may_' +'ct_' +'of' +'tain' +'ful_' +'read' +'shi' +'self' +'ig' +'ster' +'ain' +'ve' +'fort' +'ught' 'firs' +'wh' +'act' +'ure_' +'ret' +'rest' +'lle' +'ned_' +'give' +'rd' +'sha' +'head' +'nde' +'ord' 'make' -'seem' -'migh' -'am_' +'den' +'od_' +'cti' +'ing' +'end' +'cri' +'can' 'own_' -'p_' -'er' -'head' -'ns_' -'men_' +'went' +'nor' +'nigh' +'hims' +'gs_' +'acc' +'ite' +'id' +'fee' 'plac' +'ge' +'wer' +'ys_' +'ying' +'ys' +'att' +'ity_' +'rie' +'wr' 'thre' -'hims' -'go_' -'ble_' -'may_' -'less' -'went' -'et_' -'most' -'rest' +'migh' +'ps_' +'ua' +'ness' +'ope' +'sw' +'ant' +'mb' +'ling' +'gre' +'tal' 'ugh_' +'har' +'led_' +'hous' +'age_' +'ask' +'gro' +'hel' +'ers_' +'iti' +'mat' +'ver_' +'seem' +'ds_' +'less' +'ey' +'exc' +'ear' +'ligh' +'sou' +'beg' 'love' -'give' -'pass' -'beca' +'ding' +'wat' +'pp' +'ence' +'iv' +'et_' +'cas' +'form' +'cer' +'ss' +'tri' +'if' +'tle' +'fai' +'ud' +'til' +'ves_' 'say_' +'ner' +'ate' +'ld' +'col' +'stil' +'coun' +'par' +'cour' +'away' +'stra' +'cle' +'oo' +'face' +'san' +'gn' +'qua' +'f_' +'mer' +'too' +'see' +'gar' +'lie' +'ue' +'pass' +'ft_' +'mot' 'life' -'eyes' -'whil' +'chi' +'sk' +'om' +'bre' +'ran' +'shal' +'eri' 'call' -'nigh' -'use_' -'bein' -'thos' -'many' -'away' +'fre' +'ance' +'ice_' +'liv' 'turn' -'coun' -'hing' -'hed_' -'youn' -'stra' -'th_' -'comm' -'too_' -'stil' +'sion' +'ger' +'whil' +'ls' +'hol' +'far' +'nn' 'foun' -'ons_' -'don' +'whi' +'sit' +'tw' +'aw' +'too_' +'sat' +'lt' +'sup' +'sin' +'uc' +'comm' +'hal' +'gg' +'cre' +'thos' +'ene' +'oc' +'lat' +'eyes' +'cha' +'ren' +'ten' +'tow' +'wom' +'wal' +'bein' +'gla' +'new' +'work' +'app' +'cap' +'bes' 'last' -'ch_' -'able' -'ered' +'wis' +'lly_' +'und' +'ses' +'hin' +'alo' +'mou' +'beca' +'af' +'ight' +'ward' 'mean' -'face' -'gs_' -'ds_' +'sea' +'wan' +'gh' +'au' +'many' 'tell' +'dl' 'noth' -'cour' -'work' -'ance' -'peop' -'righ' -'ht_' -'room' -'chil' -'year' -'ry_' -'sure' -'ys_' -'sed_' -'word' -'pers' -'o_' -'ral_' -'yet_' -'ligh' 'get_' -'ence' -'ll_' -'aske' -'happ' -'shal' -'stre' -'ting' -'saw_' -'same' -'f_' -'te_' -'off_' -'w_' +'put' +'kne' +'son_' +'ack' +'ough' +'nea' +'sing' +'ai' +'tter' +'pers' +'ess_' +'hun' +'ju' +'sy' +'rt_' +'arm' +'side' +'serv' +'lad' +'med' +'ally' +'word' +'eas' +'fol' +'com' +'ong_' +'ans' +'tes' +'eat' +'ec' +'cess' 'fath' -'want' -'prin' -'brea' -'chan' -'inst' +'ble' +'les' +'ten_' +'hor' +'tu' +'lit' +'ng' 'char' -'ge_' -'hers' -'anot' -'ss_' -'left' -'lf_' -'seve' -'once' -'ain_' -'open' -'girl' -'dist' -'ding' -'took' -'alon' -'fort' -'ped_' +'ton' +'chil' +'appe' +'als' +'use' +'rai' 'land' -'expe' -'on' -'nce_' -'led_' -'near' -'alwa' -'supp' -'frie' -'mome' -'door' -'een_' +'dg' 'let_' -'new_' -'appe' -'full' -'told' -'age_' -'plea' -'ver_' -'side' -'ente' -'moth' -'mind' -'de_' -'real' -'why_' -'put_' -'soon' -'form' -'ded_' -'stat' -'poss' -'fell' -'home' -'ring' -'ter_' -'star' -'indi' -'live' -'we' -'acco' -'read' -'answ' -'wind' -'goin' -'essi' -'repl' -'care' -'diff' -'rd_' -'disc' -'name' -'natu' -'feel' -'worl' -'find' -'beli' -'ity_' +'frie' +'chan' +'year' +'peop' +'ass' +'get' +'lar' +'dn' +'ure' 'ies_' -'stan' -'wate' -'whit' -'stor' -'kind' -'cert' -'high' -'me' -'ant_' -'woma' -'retu' -'prop' -'wish' -'est_' -'foll' -'rema' -'ined' -'carr' -'whol' -'knew' -'show' -'ged_' -'each' -'tly_' -'conc' -'serv' -'hard' -'havi' -'sing' -'gene' -'c_' -'nst_' +'rc' 'you' -'bett' -'ned_' -'bega' -'quit' -'far_' -'few_' -'enou' -'eigh' -'ible' -'four' -'voic' -'ct_' -'ure_' -'shor' -'conf' -'matt' -'ks_' -'ic_' -'yes_' -'ough' -'beau' -'clos' -'ck_' -'leav' -'atte' -'got_' -'seen' -'done' -'inde' -'sir_' -'morn' -'betw' -'ess_' -'ls_' -'walk' -'fore' -'late' -'hope' -'ared' -'grou' -'hund' -'man' -'fall' -'ate_' -'orde' -'ect_' -'powe' -'ated' -'felt' -'poin' -'hour' -'reco' -'el_' -'towa' -'spea' -'her' -'wond' -'howe' -'amon' -'ed' -'half' -'ling' -'talk' -'rece' -'wood' -'try_' -'lly_' -'conv' -'poor' -'ce' -'both' -'also' -'stoo' -'perh' -'keep' -'ar_' -'ish_' -'does' -'ot_' -'icul' -'aps_' -'ened' -'myse' -'clea' -'ctio' -'oh_' -'fact' -'gent' -'co' -'smal' -'exce' -'erin' -'set_' -'nor_' -'sent' -'him' -'admi' -'gave' -'ne_' -'whom' -'tree' -'days' -'re' -'almo' -'unti' -'deli' -'sion' -'ions' -'ing' -'sand' -'mast' -'drea' -'stro' -'son_' -'best' -'thir' -'esse' -'es' -'ful_' -'ely_' -'need' -'engl' -'end_' -'ress' -'impo' -'gree' -'toge' -'step' -'so' -'fran' -'suff' -'sinc' -'sigh' -'se' -'or' -'ma' -'ly' -'tain' -'ta' -'dear' -'lo' -'doub' -'ques' -'marr' -'feet' -'roun' -'sens' -'nds_' -'anyt' -'next' -'move' -'laug' -'do' -'dark' -'reac' -'brou' -'blac' -'pt_' -'ard_' -'prov' -'ider' -'ur_' -'crie' -'smil' -'larg' -'fami' -'eve_' -'help' -'gran' -'fire' -'ming' -'lay_' -'five' -'twen' -'play' -'ose_' -'hors' -'visi' -'sudd' -'arou' -'ro' -'teen' -'capt' -'moun' -'wait' -'john' -'stru' -'go' -'forg' -'reas' -'mone' -'po' -'mber' -'lett' -'fear' -'eren' -'rath' -'ious' -'doct' -'stri' -'ship' -'case' -'appr' -'line' -'le' -'idea' -'body' -'cent' -'ved_' -'id_' -'ho' -'selv' -'uncl' -'soun' -'reme' -'terr' -'cond' -'heav' -'les_' -'grow' -'can' -'writ' -'perf' -'mont' -'he' -'gone' -'air_' -'ten_' -'cted' -'whos' -'city' -'sile' -'dire' -'desi' -'trou' -'lady' -'ked_' -'mo' -'till' -'spec' -'leas' -'wife' -'resp' -'med_' -'ice_' -'deat' -'plan' -'nge_' -'in' -'hold' -'forc' -'cann' -'prom' -'true' -'rned' -'rise' -'offi' -'fair' -'sat_' -'pret' -'ping' -'dren' -'slee' -'ofte' -'comi' -'behi' -'stop' -'ster' -'nded' -'free' -'en' -'mann' -'nts_' -'colo' -'brot' -'bed_' -'hter' -'foot' -'reli' -'enti' -'ecti' -'wome' -'spir' -'ve' -'succ' -'shed' -'belo' -'temp' -'tabl' -'duri' -'self' -'ru' -'na' -'circ' -'crea' -'la' -'beco' -'rds_' -'lord' -'el' -'book' -'al' -'trea' -'nati' -'crow' -'ces_' -'ily_' -'town' -'dy_' -'used' -'fine' -'disa' -'tifu' -'thus' -'du' -'alre' -'imme' -'fift' -'acti' -'ntio' -'draw' -'sign' -'rn_' -'poli' -'ady_' -'adva' -'watc' -'pape' -'ive_' -'expr' -'caus' -'tati' -'didn' -'at' -'prof' -'fish' -'inue' -'simp' -'held' -'rt_' -'rati' -'entl' -'bo' -'proc' -'bear' -'ythi' -'vi' -'sist' -'occu' -'ja' -'imag' -'dead' -'ward' -'says' -'sa' -'meet' -'rsta' -'owed' -'nd' -'ar' -'ac' -'road' -'red' -'obse' -'boy_' -'to' -'disp' -'chee' -'abov' -'seco' -'dang' -'us' -'sh_' -'ms_' -'si' -'offe' -'list' -'desc' -'brok' -'rose' -'ni' -'minu' -'huma' -'earl' -'acte' -'wall' -'vill' -'pe' -'et' -'rs' -'nt' -'ga' -'ying' -'quic' -'efor' -'onal' -'cra' -'hair' -'god_' -'expl' -'deep' -'coll' -'ning' -'gi' -'enly' -'ende' -'dres' -'spok' -'ory_' -'inat' -'impr' -'cove' -'va' -'quar' -'tes_' -'pain' -'ings' -'di' -'rich' -'kept' -'ke_' -'obje' -'rive' -'ows_' -'iden' -'gold' -'brow' -'trai' -'oppo' -'st' -'rega' -'flow' -'fill' -'da' -'lear' -'ey_' -'eart' -'chur' -'buil' -'maki' -'whet' -'sort' -'lu' -'ced_' -'soci' -'port' -'pe_' -'pu' -'ific' -'besi' -'bar' -'scho' -'ine_' -'brin' -'ea' -'rate' -'od_' -'su' -'ines' -'ches' -'begi' -'ah_' -'eith' -'de' -'bill' -'purp' -'itse' -'and' -'posi' -'itio' -'daug' -'sati' -'mile' -'ical' -'hill' -'perc' -'numb' -'ived' -'extr' -'busi' -'hs_' -'ured' -'rela' -'publ' -'past' -'lost' -'cast' -'up' -'trie' -'six_' -'else' -'chai' -'ture' -'th' -'swee' -'ir' -'surp' -'gove' -'om_' -'jo' -'is' -'allo' -'subj' -'stea' -'ousl' -'mate' -'big_' -'cold' -'out' -'ia' -'ali' -'pa' -'ally' -'scar' -'ng' -'ha' -'corn' -'bloo' -'nece' -'glad' -'gard' -'driv' -'dn' -'quee' -'plai' -'pen' -'cur' -'cla' -'lead' -'kill' -'diat' -'ti' -'shar' -'pris' -'hono' -'hast' -'chie' -'arms' -'ston' -'week' -'pete' -'har' -'cess' -'ber' -'reso' -'ob' -'noti' -'mill' -'iage' -'atta' -'snow' -'excl' -'prob' -'prec' -'ol' -'mark' -'fiel' -'wa' -'low_' -'gues' -'evid' -'acro' -'wild' -'tor' -'thy_' -'gro' -'ging' -'blue' -'arri' -'adde' -'acce' -'shad' -'osit' -'nort' -'ecte' -'prod' -'prev' -'mere' -'soul' -'clas' -'ainl' -'stic' -'quie' -'occa' -'nine' -'ial_' -'b_' -'touc' -'summ' -'osed' -'car' -'brig' -'te' -'secr' -'requ' -'favo' -'ery_' -'ched' -'ult' -'sold' -'insi' -'farm' -'an' -'sea_' -'ound' -'decl' -'resu' -'ol_' -'met_' -'husb' -'dest' -'view' -'one' -'ap' -'ants' -'ses_' -'oach' -'pi' -'mb' -'cial' -'whis' -'seat' -'peri' -'ia_' -'ge' -'figu' -'tone' -'ki' -'effe' -'deci' -'ures' -'repr' -'dam' -'ur' -'tran' -'spen' -'rabl' -'news' -'dar' -'ck' -'amer' -'ine' -'hung' -'fail' -'ask_' -'alth' -'ut' -'run_' -'dete' -'she' -'hist' -'ety_' -'equa' -'dis' -'bell' -'ay_' -'affe' -'acqu' -'wort' -'vo' -'ven' -'taki' -'prep' -'bu' -'ty' -'trav' -'mode' -'mari' -'ary_' -'x_' -'cu' -'safe' -'merc' -'forw' -'doin' -'trut' -'ton_' -'tend' -'sout' -'pati' -'hes_' -'as' -'ves_' -'stay' -'ps_' -'fa' -'ease' -'bank' -'assi' -'west' -'wed_' -'slow' -'livi' -'exam' -'bene' -'save' -'ill_' -'floo' -'blin' -'won' -'ul' -'pre' -'ican' -'drop' -'desp' -'usua' -'sugg' -'stud' -'rais' -'fi' -'emen' -'comf' -'war_' -'vari' -'scen' -'ents' -'test' -'sixt' -'eye_' -'exci' -'easi' -'boys' -'act_' -'wing' -'um' -'stu' -'sayi' -'rien' -'ntly' -'li' -'fast' -'esta' -'des_' -'cros' -'boar' -'wors' -'tear' -'susp' -'ri' -'ours' -'ired' -'incr' -'ight' -'ht' -'grav' -'beyo' -'ably' -'no' -'moti' -'fron' -'fo' -'chap' -'aw' -'sorr' -'soft' -'ley_' -'repe' -'op' -'nu' -'glan' -'der_' -'bra' -'ul_' -'thee' -'rt' -'fer' -'exis' -'ec' -'chin' -'ben' -'agre' -'reve' -'lar_' -'ide_' -'grac' -'ft' -'exte' -'ersa' -'enjo' -'ca' -'un' -'shin' -'che' -'ving' -'spee' -'sett' -'sal' -'roll' -'rdin' -'ran_' -'ow' -'infl' -'guar' -'ets_' -'anim' -'ties' -'pick' -'opin' -'men' -'anio' -'warm' -'sail' -'remo' -'phys' -'ee' -'clot' -'camp' -'tive' -'furt' -'figh' -'ch' -'unit' -'race' -'oc' -'neig' -'mout' -'mada' -'leng' -'deal' -'corr' -'als_' -'rmin' -'nnin' -'ne' -'info' -'boat' -'yout' -'rese' -'ny_' -'nger' -'ange' -'sk' -'pict' -'lete' -'fing' -'curi' -'ba' -'arti' -'ssar' -'rent' -'rely' -'owin' -'outs' -'none' -'mine' -'inct' -'hi' -'appl' -'rly_' -'ra' -'priv' -'cal' -'anne' -'unt_' -'ort_' -'nti' -'den' -'ciou' -'ble' -'bad_' -'adve' -'thor' -'rted' -'qui' -'prot' -'ishe' -'ion' -'beat' -'inco' -'assu' -'ans_' -'rock' -'lder' -'hurr' -'grew' -'grat' -'esti' -'ars_' -'anxi' -'ad' -'wear' -'path' -'ise_' -'im' -'gras' -'gar' -'ami' -'vere' -'thic' -'tail' -'supe' -'spri' -'piec' -'ors_' -'kly_' -'fina' -'east' -'cut_' -'cre' -'batt' -'wide' -'ver' -'tena' -'ssib' -'neit' -'caug' -'asse' -'sun_' -'sha' -'main' -'hy_' -'gath' -'drew' -'cal_' -'refu' -'musi' -'hall' -'fic' -'eive' -'born' -'affa' -'ndin' -'ka' -'ju' -'esca' -'chri' -'bi' -'ball' -'ue_' -'tica' -'que' -'od' -'nel_' -'habi' -'gett' -'frig' -'ds' -'incl' -'hy' -'fres' -'empt' -'cate' -'bea' -'sted' -'judg' -'il_' -'day' -'clou' -'aime' -'swa' -'moon' -'let' -'hel' -'enem' -'dly_' -'utte' -'repo' -'lies' -'liar' -'ko' -'eved' -'ale' -'afra' -'za' -'woun' -'phil' -'orm' -'note' -'mu' -'lt_' -'laid' -'ke' -'hat' -'ern_' -'atin' -'ant' -'rtan' -'rous' -'carl' -'barr' -'abso' -'und' -'shoo' -'seri' -'pray' -'per_' -'ns' -'mon' -'meas' -'inqu' -'inal' -'ghts' -'fro' -'erfu' -'ele' -'ard' -'ai' -'wo' -'viol' -'tt' -'rved' -'res_' -'rall' -'pan' -'myst' -'mass' -'hunt' -'dent' -'bird' -'arm_' -'vict' -'resi' -'mble' -'ill' -'icie' -'ian_' -'este' -'bles' -'ag' -'war' -'trem' -'pala' -'jour' -'eg' -'ect' -'died' -'chi' -'tu' -'sitt' -'sain' -'rnme' -'prac' -'pay_' -'boun' -'bb' -'aran' -'ago_' -'uni' -'trac' -'shee' -'lema' -'givi' -'ep' -'drag' -'cy_' -'bor' -'ain' -'ace_' -'vall' -'unco' -'til' -'swe' -'pped' -'ina' -'fren' -'coat' -'ci' -'ane' -'aint' -'purs' -'obli' -'nted' -'ft_' -'defe' -'bri' -'tru' -'swor' -'sin' -'law_' -'est' -'erty' -'enga' -'ead_' -'ya' -'wise' -'rain' -'oner' -'medi' -'lowe' -'fanc' -'suit' -'sant' -'san' -'ry' -'pt' -'min' -'labo' -'horr' -'gain' -'fly_' -'eu' -'entr' -'arch' -'all' -'accu' -'umst' -'rwar' -'pock' -'ot' -'lips' -'join' -'ex' -'espe' -'dema' -'danc' -'cely' -'brid' -'wn_' -'ual_' -'stai' -'rtun' -'roma' -'pot' -'narr' -'invi' -'em_' -'cloc' -'bott' -'wash' -'symp' -'regi' -'pin' -'impe' -'gs' -'dese' -'vel' -'tie' -'sco' -'rm' -'pil' -'os' -'ome_' -'nge' -'memo' -'lond' -'jane' -'isab' -'ic' -'god' -'fini' -'dra' -'top_' -'subs' -'soli' -'rush' -'og' -'mp' -'itte' -'gg' -'fla' -'eat_' -'conn' -'burn' -'rnoo' -'rful' -'maid' -'ins_' -'hero' -'ers' -'degr' -'bran' -'ban' -'arra' -'army' -'appa' -'aine' -'yl' -'wint' -'tra' -'ser' -'om' -'mal' -'hu' -'empl' -'effo' -'dinn' -'dare' -'uenc' -'tis' -'spar' -'sm_' -'seei' -'ric' -'psyc' -'intr' -'ifie' -'exac' -'ens_' -'auth' -'ab' -'sun' -'sta' -'secu' -'nish' -'majo' -'lift' -'lake' -'if' -'fait' -'enin' -'dom_' -'cap' -'be' -'wron' -'ua' -'surr' -'send' -'pale' -'nic' -'ngth' -'mm' -'eful' -'eede' -'dece' -'con' -'vent' -'theo' -'tche' -'ste' -'oi' -'mora' -'mess' -'lute' -'lity' -'ier_' -'cro' -'cham' -'am' -'um_' -'ters' -'rec' -'rage' -'peac' -'indu' -'id' -'hten' -'gate' -'food' -'au' -'una' -'tted' -'slig' -'shak' -'rial' -'nch' -'lad' -'devo' -'shi' -'shel' -'ruct' -'rebe' -'mos' -'doll' -'yell' -'tter' -'situ' -'sit_' -'sick' -'shop' -'ral' -'par' -'mer' -'mary' -'heal' -'hang' -'glas' -'ert' -'enco' -'easy' -'cts_' -'bled' -'uct' -'sts_' -'paus' -'ney_' -'neg' -'leme' -'je' -'fool' -'erly' -'emi' -'elle' -'bit_' -'tar' -'sy' -'swi' -'sell' -'rtai' -'pull' -'popu' -'oy' -'mor' -'mons' -'mar' -'lean' -'hal' -'bly_' -'blow' -'abr' -'tere' -'teac' -'tast' -'ssi' -'rsto' -'per' -'luck' -'lie_' -'iste' -'ici' -'harm' -'era' -'eage' -'ways' -'loud' -'kle' -'issi' -'ire_' -'hesi' -'fur' -'ew' -'elf' -'ze' -'ts' +'happ' +'room' +'wee' +'got' +'hea' +'flo' 'sel' -'rule' -'ptio' -'oti' -'oper' -'ons' -'ones' -'merr' -'lop' -'hone' -'esen' -'dom' -'cath' -'ath_' -'twel' -'tor_' -'shut' -'perm' -'llec' -'itie' -'ised' -'hol' -'fu' -'for' -'civi' -'uri' -'shot' -'sear' -'rit' -'rh' -'ret' -'ranc' -'ph' -'not' -'mana' -'lose' -'evil' -'eque' -'dle' -'dd' -'corp' -'catc' -'barb' -'air' -'wine' -'wand' -'slav' -'post' -'magi' -'llen' -'law' -'il' -'gall' -'end' -'divi' -'din' -'ade' -'addr' -'ze_' -'yed_' -'tryi' -'sole' -'silv' -'pari' -'orig' -'inve' -'ini' -'ince' -'ham' -'crim' -'advi' -'weak' -'ted' -'tall' -'shap' -'neck' -'latt' -'ital' -'blis' -'bit' -'ay' -'ande' -'ages' -'ad_' -'xi' -'wave' -'valu' -'trus' -'tre' -'ter' -'spot' -'refl' -'pp' -'mic' -'mas' -'grap' -'gen' -'duty' -'die_' -'cous' -'art_' -'val' -'tin' -'tan' -'sub' -'sla' -'sca' -'repu' -'pted' -'murd' -'mis' -'memb' -'legs' -'clu' -'broa' -'ber_' -'aunt' -'way' -'trad' -'son' -'sky_' -'ria' -'lea' -'lar' -'ip' -'holl' -'hant' -'gu' -'gle' -'ges_' -'cott' -'by' -'bed' -'avo' -'univ' -'ner_' -'mp_' -'len' -'ledg' -'knee' -'joy_' -'ggle' -'game' -'flee' -'feat' -'calm' -'asto' -'uns' -'rel' -'pet' -'ond' -'nobl' -'ll' -'isla' -'ione' -'imen' -'hypn' -'heat' -'elo' -'depa' -'bon' -'bitt' -'yard' -'titu' -'tant' -'sp' -'lled' -'inin' -'ger_' -'fain' -'comb' -'coa' -'tmen' -'term' -'smok' -'sh' -'seiz' -'see' -'sacr' -'ppea' -'nse_' -'lati' -'insu' -'ingl' -'ff_' -'citi' -'vidu' -'ut_' -'ure' -'trib' -'squa' -'rior' -'oo' -'ntag' -'mini' -'joy' -'isn' -'ies' -'fash' -'cas' -'spo' -'sle' -'pect' -'now' -'nois' -'mise' -'marc' -'ladi' -'fli' -'chas' -'bull' -'tit' -'runn' -'rts_' -'mus' -'luti' -'lock' -'itud' -'iri' -'impa' -'ey' -'erou' -'eme' -'deve' -'cry_' -'cri' -'ari' -'are' -'anci' -'urb' -'rin' -'qual' -'nged' -'nes_' -'ger' -'geor' -'flat' -'firm' -'devi' -'der' -'ave' -'art' -'une_' -'tire' -'tim' -'stag' -'slip' +'set' +'youn' 'sil' -'pros' -'iers' -'hful' -'hate' -'erne' -'disg' -'bur' -'arm' -'age' -'uall' -'twi' -'tac' -'spit' -'seek' -'seas' -'row' -'ree' -'pur' -'otte' -'nn' -'mart' -'cked' -'butt' -'apar' -'york' -'tic' -'sepa' -'sea' -'ries' -'ribe' -'rapi' -'push' -'oni' -'mort' -'lt' -'lang' -'jun' -'ir_' -'eo' -'coro' -'cher' -'bla' -'zed_' -'wasn' -'ura' -'unle' -'unce' -'unc' -'ude' -'tude' -'tom' -'stin' -'skin' -'sen' -'sad' -'pond' -'orit' -'lved' -'llig' -'ig' -'ibly' -'fit_' -'ena' -'emp' -'bl' -'antl' -'anti' -'van' -'ren' -'ove' -'morr' -'mati' -'lit' -'libe' -'iron' -'gray' -'gnan' -'fun' -'awak' -'angr' -'tric' -'sty_' -'site' -'ori' -'lyin' -'lun' -'ise' -'host' -'gniz' -'fe' -'ener' -'enc' -'ybod' -'usio' -'tom_' -'stoc' -'radi' -'pric' -'parl' -'ous' -'ora' -'mil' -'inc' -'ie_' -'ie' -'hor' -'hen_' -'fra' -'ectl' -'dim' -'dan' -'capa' -'attr' -'alo' -'ado' -'welc' -'virt' -'sham' -'ruin' -'risi' -'py' -'orte' -'mous' -'ida' -'ict' -'hbor' -'grad' -'germ' -'eni' -'ef_' -'edge' -'cke' -'bre' -'ass' -'arat' -'wag' -'uced' -'tles' -'ss' -'sho' -'scra' -'rrup' -'rang' -'pure' -'patr' -'ordi' -'obta' -'ngin' -'ish' -'henr' -'grie' -'gn' -'eliz' -'ct' -'bag' -'bad' -'anno' -'abse' -'abo' -'volu' -'vic' -'too' -'sf' -'rmed' -'regu' -'rded' -'para' -'of' -'nor' -'net' -'glor' -'gloo' -'ath' -'actu' -'ume' -'sple' -'spi' -'rob' -'renc' -'pol' -'igno' -'earn' -'bare' -'use' -'sy_' -'spre' -'ror_' -'rk' -'prou' -'plat' -'owne' -'orn' -'mach' -'ken' -'jack' -'iona' -'hood' -'eli' -'dian' -'dee' -'cy' -'ctly' -'crac' -'clai' -'ceas' -'cabi' -'teet' -'spac' -'rea' -'pied' -'kiss' -'ham_' -'gly_' -'erat' -'cho' -'burg' -'aris' -'wi' -'weal' -'ten' -'spra' -'sfac' -'roug' -'rie' -'ras' -'ple_' -'orga' -'mpan' -'mel' -'magn' -'ians' -'hip_' -'hen' -'ful' -'flas' -'ei' -'depe' -'defi' -'dec' -'cca_' -'bath' -'bab' -'argu' -'vess' -'unp' -'ug' -'tled' -'tle_' -'tale' -'stee' -'sfie' -'rred' -'ron' -'ray' -'ndan' -'nary' -'ist' -'hum' -'hop' -'exec' -'elde' -'bun' -'brai' -'ator' -'ash' -'yle_' -'ws_' -'tri' -'tary' -'rp' -'rd' -'prie' -'pon' -'nced' -'marg' -'liz' -'cien' -'aliv' -'vers' -'uti' -'tur' -'toby' -'tent' -'scre' -'rity' -'reti' -'rary' -'qua' -'paid' -'orta' -'oli' -'nci' -'nce' -'mn' -'mes_' -'ice' -'hee' -'eva' -'ett' -'clim' -'brav' -'boug' -'weat' -'tors' -'tong' -'scor' -'sake' -'pier' -'pecu' -'pare' -'nk' -'ist_' -'inia' -'ingu' -'gni' -'fee' -'fart' -'esso' -'ent' -'edwa' -'ects' -'dism' -'ast' -'alte' -'zen_' -'vain' -'uc' -'tro' -'tol' -'tenc' -'rail' -'rach' -'peas' -'nty_' -'lin' -'lian' -'kfas' -'ker_' -'juli' -'ita' -'hoo' -'hat_' -'gaze' -'exer' -'enge' -'em' -'elev' -'die' -'burs' -'blo' -'asha' -'ulat' -'tal' -'stup' -'song' -'shri' -'scie' -'rip' -'rb' -'pho' -'pats' -'orti' -'oa' -'nobo' -'may' -'lf' -'ld' -'knit' -'key_' -'hern' -'futu' -'drin' -'demo' -'deb' -'cow' -'cart' -'aut' -'top' -'ski' -'roof' -'revo' -'rei' -'prai' -'patt' -'papa' -'oned' -'ona' -'mpt_' -'midd' -'jerr' -'irs_' -'inn' -'ign_' -'ial' -'furn' -'flor' -'fet' -'fan' -'excu' -'err' -'ens' -'dela' -'athy' -'ang' -'alar' -'ake' -'wre' -'whi' -'virg' -'rend' -'ose' -'odi' -'nice' -'nerv' -'nda' -'mead' -'lude' -'lain' -'knig' -'ile' -'hole' -'hm' -'fat' -'due_' -'deta' -'cs_' -'cru' -'cop' -'bili' -'abet' -'wl' -'syst' -'ride' -'pref' -'pl' -'pit' -'pere' -'ntee' -'nder' -'nat' -'mpli' -'maje' -'knoc' -'ject' -'ite' -'illu' -'ili' -'hot_' -'geni' -'gas' -'flu' -'euro' -'ee_' -'eal' -'cipa' -'bore' -'baby' -'ye' -'val_' -'ub' -'troo' -'ruth' -'rop' -'pear' -'pack' -'oral' -'nly_' -'log' -'itu' -'hic' -'fold' -'ern' -'eric' -'edit' -'cord' -'cook' -'club' -'cle_' -'cipl' -'box_' -'band' -'atti' -'ywhe' -'wil' -'ue' -'u_' -'tea_' -'shr' -'que_' -'ppoi' -'pira' -'nist' -'net_' -'nea' -'mac' -'lucy' -'lex' -'ison' -'impu' -'han' -'ess' -'elec' -'dro' -'dign' -'bush' -'amus' -'amen' -'af' -'yn' -'wore' -'unte' -'snap' -'row_' -'ratu' -'pla' -'mpt' -'ket' -'ker' -'ken_' -'ire' -'icia' -'gger' -'geth' -'get' -'gest' -'fond' -'env' -'cost' -'cong' -'cles' -'beha' -'bas' -'awfu' -'ati' -'win' -'span' -'rked' -'regr' -'ps' -'prog' -'perp' -'orat' -'ms' -'limi' -'jos' -'jer' -'inci' -'herd' -'fri' -'ears' -'dge' -'deck' -'dat' -'cree' -'chu' -'cat' -'awar' -'witn' -'unt' -'uch' -'task' -'suns' -'rpr' -'ros' -'rl' -'rim' -'rat' -'nose' -'nity' -'nite' -'nal_' -'meth' -'lem' -'jen' -'ive' -'inar' -'hurt' -'heig' -'gor' -'glo' -'ghtf' -'empe' -'elve' -'chos' -'bos' -'baro' -'wrot' -'wit' -'vani' -'uste' -'unw' -'teme' -'sti' -'spe' -'rkab' -'ra_' -'pat' -'oduc' -'lle' -'ler_' -'leap' -'las' -'ins' -'ided' -'icio' -'fixe' -'fier' -'erse' -'epti' -'elli' -'broo' -'brie' -'bold' -'bodi' -'begg' -'alto' -'zi' -'z_' -'warr' -'ussi' -'uppe' -'surf' -'stom' -'russ' -'retr' -'pti' -'pr' -'pole' -'plen' -'oe' -'nsi' -'movi' -'hide' -'gan' -'frui' -'fest' +'once' +'vel' +'urn' 'ere' -'ear_' -'cup' -'cing' -'cha' -'cc' -'ambi' -'ama' -'addi' -'wra' -'whe' -'tw' -'rvi' -'pour' -'pher' -'ntur' -'ner' -'lei' -'inno' -'gun' -'greg' -'don_' -'dick' -'cust' -'cool' -'coas' -'bing' -'bel' -'asso' -'aff' -'weig' -'upt' -'tate' -'roar' -'phr' -'pea' -'olat' -'nk_' -'mph' -'mir' -'lic' -'lace' -'icat' -'humo' -'hem' -'gla' -'gil' -'ffe' -'erve' -'endo' -'ede' -'yo' -'wret' -'tic_' -'sad_' -'rc' -'ov' -'mpe' -'meal' -'loos' -'loca' -'lime' -'hur' -'hote' -'hadn' -'grah' -'gli' -'folk' -'flew' -'ffi' -'fals' -'educ' -'eb' -'dle_' -'dish' -'coup' -'bee' -'ame' -'wig' -'warn' -'vast' -'urd' -'uent' -'uage' -'stir' -'stal' -'scu' -'scri' -'rve_' -'rty_' -'rti' -'ris' -'nces' -'mour' -'loss' -'llin' -'inju' -'ica' -'hbou' -'ghte' -'fs_' -'ensi' -'dor' -'dily' -'dale' -'cult' -'cula' -'crue' -'adam' -'zing' -'ye_' -'wick' -'wha' -'vol' -'ust' -'ular' -'stia' -'smoo' -'sar' -'repa' -'prem' -'poet' -'ono' -'nta' -'mult' -'mul' -'moo' -'mit' -'gion' -'freq' -'expo' -'enth' -'dwel' -'dry_' -'doze' -'dful' -'cry' -'colu' -'ciat' -'cand' -'ava' -'augu' -'asce' -'arta' -'vit' -'uit' -'tte_' -'trim' -'thom' -'size' -'rmat' -'rant' -'ract' -'putt' -'poun' -'pipe' -'osi' -'nia' -'ndo' -'mond' -'mat' -'lay' -'ized' -'ingt' -'infe' -'het' 'ght' -'ell' -'eles' -'edin' -'dri' -'dm' -'crit' -'craw' -'cli' -'cks_' -'bowe' -'bal' -'xt' -'utio' -'ury_' -'tum' -'tual' -'stif' -'sob' -'lte' -'lla_' -'idi' -'gm' -'dge_' -'cul' -'cris' -'caro' -'bet' -'asle' -'andr' -'alle' -'ail' -'agon' -'abu' -'abil' -'zen' -'wast' -'urs' -'uct_' -'trip' -'tch_' -'spor' -'simi' -'roya' -'ref' -'rare' -'prid' -'phe' -'ored' -'loui' -'lodg' -'llo' -'iz' -'ite_' -'hie' -'gra' -'ffer' -'emb' -'bow' -'asp' -'who' -'unkn' -'unfo' -'tele' -'sse' -'sol' -'sava' -'sat' -'rve' -'prim' -'pend' -'pair' -'onsi' -'olde' -'obey' -'lot_' -'leg' -'la_' -'ks' -'invo' -'gn_' -'drov' -'cab' -'busy' -'bril' -'bent' -'ativ' -'asid' -'appo' -'ana' -'ald' -'ahea' -'achi' -'zz' -'usi' -'une' -'tram' -'tien' -'tea' -'sund' -'sor' -'rume' -'rubb' -'rne' -'rfe' -'pant' -'oke' -'oat' -'ndid' -'musk' -'mamm' -'ls' -'lite' -'lest' -'lamp' -'jimm' -'issu' -'irre' -'hly_' -'gw' -'gian' -'fen' -'fal' -'eti' -'endu' -'eh' -'edi' -'duc' -'dog_' -'com' -'clif' -'cer_' -'card' -'bul' -'bone' -'aid' -'adj' -'vin' -'unl' -'unha' -'swif' -'smit' -'sim' -'risk' -'pro' -'plun' -'pity' -'pard' -'ody_' -'odd' -'mut' -'murm' -'mn_' -'meri' -'lus' -'lse' -'lack' -'jeff' -'ib' -'hil' -'hid' -'gul' -'guid' -'grim' -'gri' -'fles' -'faul' -'ew_' -'ete' -'els_' -'eati' -'dig' -'deri' -'cil' -'cana' -'beas' -'audi' -'atel' -'arth' -'anat' -'wn' -'ute_' -'usia' -'urag' -'unic' -'ung' -'stl' -'sn' -'root' -'rejo' -'rank' -'ram' -'ounc' -'ony_' -'oma' -'ngs_' -'ngly' -'nes' -'kins' -'kat' -'jump' -'inha' -'iam_' -'huge' -'hidd' -'gue_' -'embr' -'dep' -'ctiv' -'cred' -'cie' -'capi' -'blan' -'yest' -'unus' -'unex' -'ues' -'ton' -'tia' -'subm' -'sli' -'sl' -'sam' -'res' -'reck' -'puni' -'pill' -'pal' -'owle' -'obst' -'nurs' -'new' -'nar' -'my' -'mid' -'inti' -'idl' -'ica_' -'hw' -'gy_' -'ghos' -'flam' -'emot' -'clo' -'begu' -'anni' -'ackn' -'v_' -'unea' -'triu' -'tful' -'tes' -'ssit' -'seld' -'revi' -'pul' -'por' -'ou' -'olen' -'matc' -'linc' -'jame' -'hau' -'grey' -'fit' -'eve' -'erie' -'diam' +'fer' +'cke' +'nge' +'dar' +'cla' +'ke_' +'ged' 'cor' -'chic' -'cel' -'buri' -'boy' -'bid' -'aten' -'aros' -'ani' -'ake_' -'ah' -'act' -'acci' -'zo' -'yt' -'xa' -'unto' -'unat' -'ught' -'type' -'turt' -'soug' -'sly_' -'rthe' -'rome' -'rg' -'refe' -'rap' -'ppin' -'phan' -'page' -'oon_' -'onab' -'omi' -'non' -'nest' -'mids' -'lp' -'ivi' -'inva' -'inua' -'infi' -'ign' -'hos' -'goes' -'gne' -'glim' -'erda' -'emma' -'eggs' -'dil' -'ders' -'dept' -'crop' -'chm' -'buy_' -'buck' -'bree' -'birt' -'bin' -'aski' -'ache' -'wai' -'viou' -'ssa' -'slep' -'slat' -'rra' -'rog' -'rnal' -'ribu' -'pse' -'onin' -'nora' -'nodd' -'nds' -'mili' -'lie' -'laws' -'isi' -'htly' -'guil' -'gui' -'forb' -'ferr' -'fate' -'erio' -'ep_' -'eil_' -'eho' -'den_' -'ded' -'ctin' -'crus' -'clev' -'cis' -'cers' -'bite' -'berr' -'bask' -'anyw' -'amaz' -'alas' -'zzle' -'wea' -'sw' -'squi' -'skil' -'rvat' -'rre' -'roc' -'robe' -'remi' -'rag' -'pper' -'penc' -'owe' -'nie' -'mbli' -'lect' -'iti' -'ism_' -'insp' -'impl' -'imm' -'how' -'gru' -'gnat' -'glow' -'engi' -'emba' -'elsi' -'eed' -'dru' -'diss' -'dea' -'dail' -'bow_' -'beho' -'avoi' -'yo_' -'wis' -'whir' -'unf' -'thu' -'thr' -'shoe' -'shaw' -'say' -'sanc' -'roy' -'ridi' -'ridg' -'refr' -'ran' -'plum' -'peep' -'oria' -'oly' -'nsci' -'nove' -'nde' -'lan' -'hosp' -'geo' -'ema' -'eed_' -'duke' -'choi' -'cav' -'but' -'bert' -'base' -'arly' -'anyo' -'abs' -'yon' -'wido' -'wedd' -'vote' -'veil' -'urin' -'tria' -'ssed' -'sma' -'sive' -'shme' -'sche' -'scat' -'rig' -'rid' -'pron' -'ole' -'mer_' -'marv' -'lm' -'lis' -'ilit' -'hut' -'horn' -'heap' -'flig' -'fare' -'exha' -'eta' -'eate' -'dust' -'dur' -'ars' -'arme' -'arin' -'aord' -'ace' -'aba' -'worn' -'veri' -'udo' -'twic' -'tn' -'thi' -'tera' -'rus' -'plo' -'outl' -'ost' -'ore_' -'load' -'lia' -'kitc' -'infa' -'geme' -'gal' -'floa' -'fat_' -'exch' -'eth' -'ersi' -'enta' -'ege_' -'ea_' -'dull' -'dive' -'dise' -'deni' -'cta' -'cler' -'cill' -'cen' -'cati' -'bs_' -'bob' -'ara' -'amou' -'whee' -'urge' -'uous' -'ugly' -'tnes' -'thea' -'sylv' -'surv' -'stab' -'snak' -'sir' -'robb' -'ril' -'rehe' -'proo' -'plu' -'oyed' -'ort' -'nie_' -'monk' -'moni' -'misc' -'mete' -'med' -'mag' -'los' -'legi' -'kn' -'jew' -'japa' -'iame' -'humb' -'hith' -'gh' -'flo' -'feve' -'famo' -'equi' -'eno' -'elea' -'ek' -'cit' -'bobb' -'bluf' -'ak' -'yer' -'wri' -'ware' -'vert' -'uted' -'ueri' -'toi' -'tip' -'tess' -'tely' -'taug' -'sto' -'shoc' -'rict' -'pine' -'orie' -'ood_' -'nut' -'nate' -'misf' -'mina' -'meta' -'mars' -'mani' -'lot' -'leve' -'lars' -'ky_' -'klin' -'judi' -'jesu' -'ivel' -'itua' -'igu' -'hed' -'gram' -'glea' -'frog' -'fled' -'fil' -'fied' -'fel' -'fac' -'ext' -'erm' -'ends' -'ech' -'dne' -'dict' -'chat' -'cell' -'boot' -'alli' -'agen' -'affo' -'ae' -'add_' -'ach' -'ves' -'twin' -'tiny' -'thru' -'sher' -'sex' -'rud' -'rtis' -'rai' -'prud' -'ppy_' -'park' -'ox' -'ortu' -'ont' -'nsiv' -'noo' -'na_' -'leg_' -'kni' -'int' -'his' -'hin' -'hew' -'hes' -'has' -'harr' -'ha_' -'giou' -'gay' -'fre' -'fox' -'ffl' -'ff' -'eter' -'espo' -'ecia' -'eabl' -'ddl' -'dawn' -'cele' -'bel_' -'ada' -'acin' -'vita' -'vagu' -'unb' -'uin' -'ugho' +'saw_' +'tly_' +'bar' +'yet' +'righ' +'kin' +'rel' +'fect' +'tur' +'ways' +'prin' +'bra' +'ions' 'try' -'styl' -'soa' -'snes' -'sm' -'rva' -'rode' -'rn' -'rav' -'quis' -'pic' -'peer' -'pace' -'ok' -'nom' -'naut' -'mmen' -'lve' -'lone' -'lieu' -'kas' -'jewe' -'jaso' -'ipl' -'ileg' -'ieu' -'gift' -'fred' -'fram' -'flus' -'fem' -'dogs' -'ctur' -'zy_' -'yone' -'yiel' -'vis' -'tun' -'trul' -'the' -'sum_' -'sso' -'sons' -'smo' -'rwis' -'rou' -'rol_' -'reca' -'proj' -'ntme' -'nal' -'milk' -'mb_' -'lev' -'kin_' -'ka_' -'ize_' -'ists' -'isio' -'ile_' -'fl' -'fitt' -'ere_' -'ench' -'desk' -'cake' -'aus' -'anyb' -'ann' -'ale_' -'zar' -'wder' -'voya' -'unre' -'unab' -'ugh' -'uade' -'tle' -'tl' -'tanc' -'stol' -'sme' -'siti' -'shep' -'scal' -'sc' -'roni' -'rnin' -'rac' -'quot' -'pool' -'nent' -'mutt' -'mud_' -'mi' -'lio' -'lant' -'jeal' -'iors' +'ely' +'war' +'ion' +'ad_' +'same' +'ect' +'yth' +'stre' +'x_' +'full' +'sse' +'ary' 'io' -'inse' -'ied' -'ick' -'hus' -'grin' -'gat' -'eyed' -'drun' -'dit' -'depr' -'del' -'cose' -'brus' -'bes' -'bble' -'ase_' -'yr' -'xed_' -'worr' -'ull' -'udi' -'tot' -'teri' -'sus' -'sne' -'slop' -'rust' -'rum' -'rtak' -'rse_' -'rot' -'rna' -'rade' -'ples' -'pitc' -'our' -'ote' -'nte' -'ntar' -'nl' -'nan' -'mira' -'mela' -'logi' -'lli' -'lap' -'kne' -'kers' -'ivat' -'ip_' -'holy' -'hind' -'harv' -'gged' -'gant' -'fe_' -'far' -'exi' -'essf' -'enes' -'davi' -'das' -'cow_' -'conq' -'cat_' -'bru' -'bis' -'bib' -'ates' -'ase' -'any' -'ams' -'yse' -'yme' -'vigo' -'vati' -'tice' -'surg' -'stou' -'spu' -'sie' -'rist' -'piti' -'orme' -'onl' -'ntin' -'ney' -'ndly' -'ncy' -'kee' -'jim' -'jes' -'iot' -'inu' -'ics_' -'hine' -'goo' -'fun_' -'fid' -'fed_' -'exhi' -'etr' -'erre' -'dyin' -'drow' -'dia' -'dere' -'dai' -'cub' +'off_' +'sec' 'cl' -'caut' -'brut' -'br' -'arab' -'ak_' -'win_' -'uss' -'ud' -'thun' -'spa' -'sour' -'shir' -'rnor' -'rewa' -'pon_' -'pis' -'own' -'otic' -'orch' -'ome' -'oln_' -'nstr' -'nee' -'lyn' -'iv' -'ils_' -'ify_' -'ier' -'gean' -'gane' -'foug' -'feas' -'esh' -'eke' -'drif' -'choo' -'chec' -'cave' -'bew' -'beg' -'bbi' -'apol' -'alit' -'won_' -'wir' -'was' -'wake' -'vid' -'uis' -'ud_' -'tel' -'sav' -'sau' -'salt' -'rtur' -'rsi' -'rch' -'raw' -'pian' -'pay' -'oub' -'ook' -'omed' -'nse' -'nai' -'lux' -'lusi' -'lou' -'loa' -'lid' -'lict' -'lica' -'libr' -'les' -'ler' -'lanc' -'lame' -'kw' -'inen' -'imit' -'ices' -'hire' -'hei' -'hay' -'gun_' -'fy' -'flyi' -'flou' -'evi' -'esc' -'erit' -'emer' -'diti' -'dfa' -'des' -'date' -'curr' -'cine' -'chok' -'chal' -'cere' -'burd' -'box' -'boil' -'blam' -'betr' -'behe' -'bec' -'aste' -'ape' -'weep' -'uce_' -'towe' -'torn' -'tigh' -'sna' -'slim' -'sci' -'pop' -'ple' -'pau' -'ocea' -'oak_' -'nth_' -'nel' -'nay' -'lily' -'laun' -'inh' -'ilus' -'ibi' -'flun' -'eye' -'exa' -'erer' -'erc' -'enl' -'eff' -'dutc' -'cutt' -'cum' -'cise' -'car_' -'cano' -'buff' -'blus' -'bala' -'bach' -'arre' -'ardi' -'ante' -'agit' -'aced' -'zer' -'ym' -'usef' -'unn' -'ued_' -'tti' -'tou' -'tob' -'tlin' -'titl' -'tch' -'stam' -'roye' -'riva' -'quan' -'osop' -'oad' -'mol' -'mix' -'manu' -'mad_' -'lty' -'lts_' -'limb' -'leo' -'kes_' -'jol' -'ior_' -'hn' -'hit' -'herb' -'hai' -'funn' -'etic' -'ese' -'dh' -'cut' -'coc' -'ciga' -'ca_' -'bour' -'bloc' -'bay_' -'bat' -'atu' -'ats' -'ast_' -'amp' -'aged' +'lin' +'ive_' +'plea' +'sh_' +'doo' +'ki' +'let' +'bod' +'anot' +'ate_' +'all' +'ks' From 3a2822254be915449398d268c01656b89dde4839 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 3 Mar 2021 00:23:29 +0700 Subject: [PATCH 06/10] :rocket: add CER to validation metrics for keras training transducer --- examples/conformer/config.yml | 13 ++-- tensorflow_asr/models/keras/transducer.py | 11 +++- tensorflow_asr/utils/metrics.py | 73 +++++++++++++++-------- 3 files changed, 62 insertions(+), 35 deletions(-) diff --git a/examples/conformer/config.yml b/examples/conformer/config.yml index e370a1a9eb..d3c2d3fa2e 100755 --- a/examples/conformer/config.yml +++ b/examples/conformer/config.yml @@ -24,14 +24,14 @@ speech_config: normalize_per_feature: False decoder_config: - vocabulary: ./vocabularies/librispeech_train_4_4076.subwords + vocabulary: ./vocabularies/librispeech/librispeech_train_4_1030.subwords target_vocab_size: 4096 max_subword_length: 4 blank_at_zero: True beam_width: 5 norm_score: True corpus_files: - - /mnt/Miscellanea/Datasets/Speech/LibriSpeech/train-clean-100/transcripts.tsv + - /media/nlhuy/Data/ML/Datasets/ASR/Raw/LibriSpeech/train-clean-100/transcripts.tsv model_config: name: conformer @@ -74,7 +74,7 @@ learning_config: num_masks: 1 mask_factor: 27 data_paths: - - /mnt/Miscellanea/Datasets/Speech/LibriSpeech/train-clean-100/transcripts.tsv + - /media/nlhuy/Data/ML/Datasets/ASR/Raw/LibriSpeech/train-clean-100/transcripts.tsv tfrecords_dir: /mnt/Miscellanea/Datasets/Speech/LibriSpeech/tfrecords shuffle: True cache: True @@ -84,9 +84,7 @@ learning_config: eval_dataset_config: use_tf: True - data_paths: - - /mnt/Miscellanea/Datasets/Speech/LibriSpeech/dev-clean/transcripts.tsv - - /mnt/Miscellanea/Datasets/Speech/LibriSpeech/dev-other/transcripts.tsv + data_paths: null tfrecords_dir: /mnt/Miscellanea/Datasets/Speech/LibriSpeech/tfrecords shuffle: False cache: True @@ -96,8 +94,7 @@ learning_config: test_dataset_config: use_tf: True - data_paths: - - /mnt/Miscellanea/Datasets/Speech/LibriSpeech/test-clean/transcripts.tsv + data_paths: null tfrecords_dir: /mnt/Miscellanea/Datasets/Speech/LibriSpeech/tfrecords shuffle: False cache: True diff --git a/tensorflow_asr/models/keras/transducer.py b/tensorflow_asr/models/keras/transducer.py index 269ad65b90..69de9f003d 100644 --- a/tensorflow_asr/models/keras/transducer.py +++ b/tensorflow_asr/models/keras/transducer.py @@ -17,6 +17,7 @@ from tensorflow.keras import mixed_precision as mxp from ..transducer import Transducer as BaseTransducer +from ...utils.metrics import ErrorRate, tf_cer from ...utils.utils import get_reduced_length from ...losses.keras.rnnt_losses import RnntLoss @@ -27,6 +28,10 @@ class Transducer(BaseTransducer): def metrics(self): return [self.loss_metric] + @property + def eval_metrics(self): + return self.metrics + [self.cer] + def _build(self, input_shape, prediction_shape=[None], batch_size=None): inputs = tf.keras.Input(shape=input_shape, batch_size=batch_size, dtype=tf.float32) input_length = tf.keras.Input(shape=[], batch_size=batch_size, dtype=tf.int32) @@ -57,6 +62,7 @@ def compile(self, optimizer, global_batch_size, blank=0, use_loss_scale=False, r if self.use_loss_scale: optimizer = mxp.experimental.LossScaleOptimizer(tf.keras.optimizers.get(optimizer), "dynamic") self.loss_metric = tf.keras.metrics.Mean(name="rnnt_loss", dtype=tf.float32) + self.cer = ErrorRate(tf_cer, name="cer", dtype=tf.float32) super(Transducer, self).compile(optimizer=optimizer, loss=loss, run_eagerly=run_eagerly, **kwargs) def train_step(self, batch): @@ -90,4 +96,7 @@ def test_step(self, batch): }, training=False) loss = self.loss(y_true, y_pred) self.loss_metric.update_state(loss) - return {m.name: m.result() for m in self.metrics} + target = self.model.text_featurizer.iextract(y_true["label"]) + decoded = self.recognize(x["input"], x["input_length"]) + self.cer.update_state(decoded, target) + return {m.name: m.result() for m in self.eval_metrics} diff --git a/tensorflow_asr/utils/metrics.py b/tensorflow_asr/utils/metrics.py index eb8049ebbc..42a6d019e8 100644 --- a/tensorflow_asr/utils/metrics.py +++ b/tensorflow_asr/utils/metrics.py @@ -13,13 +13,12 @@ # limitations under the License. from typing import Tuple -import numpy as np import tensorflow as tf from nltk.metrics import distance from .utils import bytes_to_string -def wer(decode: np.ndarray, target: np.ndarray) -> Tuple[tf.Tensor, tf.Tensor]: +def wer(_decode: tf.Tensor, _target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: """Word Error Rate Args: @@ -29,23 +28,26 @@ def wer(decode: np.ndarray, target: np.ndarray) -> Tuple[tf.Tensor, tf.Tensor]: Returns: tuple: a tuple of tf.Tensor of (edit distances, number of words) of each text """ - decode = bytes_to_string(decode) - target = bytes_to_string(target) - dis = 0.0 - length = 0.0 - for dec, tar in zip(decode, target): - words = set(dec.split() + tar.split()) - word2char = dict(zip(words, range(len(words)))) + def fn(decode, target): + decode = bytes_to_string(decode) + target = bytes_to_string(target) + dis = 0.0 + length = 0.0 + for dec, tar in zip(decode, target): + words = set(dec.split() + tar.split()) + word2char = dict(zip(words, range(len(words)))) - new_decode = [chr(word2char[w]) for w in dec.split()] - new_target = [chr(word2char[w]) for w in tar.split()] + new_decode = [chr(word2char[w]) for w in dec.split()] + new_target = [chr(word2char[w]) for w in tar.split()] - dis += distance.edit_distance(''.join(new_decode), ''.join(new_target)) - length += len(tar.split()) - return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) + dis += distance.edit_distance(''.join(new_decode), ''.join(new_target)) + length += len(tar.split()) + return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) + return tf.numpy_function(fn, inp=[_decode, _target], Tout=[tf.float32, tf.float32]) -def cer(decode: np.ndarray, target: np.ndarray) -> Tuple[tf.Tensor, tf.Tensor]: + +def cer(_decode: tf.Tensor, _target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: """Character Error Rate Args: @@ -55,14 +57,34 @@ def cer(decode: np.ndarray, target: np.ndarray) -> Tuple[tf.Tensor, tf.Tensor]: Returns: tuple: a tuple of tf.Tensor of (edit distances, number of characters) of each text """ - decode = bytes_to_string(decode) - target = bytes_to_string(target) - dis = 0 - length = 0 - for dec, tar in zip(decode, target): - dis += distance.edit_distance(dec, tar) - length += len(tar) - return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) + def fn(decode, target): + decode = bytes_to_string(decode) + target = bytes_to_string(target) + dis = 0 + length = 0 + for dec, tar in zip(decode, target): + dis += distance.edit_distance(dec, tar) + length += len(tar) + return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) + + return tf.numpy_function(fn, inp=[_decode, _target], Tout=[tf.float32, tf.float32]) + + +def tf_cer(decode: tf.Tensor, target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: + """Tensorflwo Charactor Error rate + + Args: + decoder (tf.Tensor): tensor shape [B] + target (tf.Tensor): tensor shape [B] + + Returns: + tuple: a tuple of tf.Tensor of (edit distances, number of characters) of each text + """ + decode = tf.strings.bytes_split(decode) # [B, N] + target = tf.strings.bytes_split(target) # [B, M] + distances = tf.edit_distance(decode.to_sparse(), target.to_sparse(), normalize=False) # [B] + lengths = tf.cast(target.row_lengths(axis=1), dtype=tf.float32) # [B] + return tf.reduce_sum(distances), tf.reduce_sum(lengths) class ErrorRate(tf.keras.metrics.Metric): @@ -75,10 +97,9 @@ def __init__(self, func, name="error_rate", **kwargs): self.func = func def update_state(self, decode: tf.Tensor, target: tf.Tensor): - n, d = tf.numpy_function(self.func, inp=[decode, target], Tout=[tf.float32, tf.float32]) + n, d = self.func(decode, target) self.numerator.assign_add(n) self.denominator.assign_add(d) def result(self): - if self.denominator == 0.0: return 0.0 - return (self.numerator / self.denominator) * 100 + return tf.math.divide_no_nan(self.numerator, self.denominator) * 100 From 16f7d06c25023fa092dd1e7f0818c7030339a8e1 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 3 Mar 2021 10:12:50 +0700 Subject: [PATCH 07/10] :writing_hand: update test step --- tensorflow_asr/models/keras/transducer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tensorflow_asr/models/keras/transducer.py b/tensorflow_asr/models/keras/transducer.py index 69de9f003d..d98540e6d5 100644 --- a/tensorflow_asr/models/keras/transducer.py +++ b/tensorflow_asr/models/keras/transducer.py @@ -96,7 +96,7 @@ def test_step(self, batch): }, training=False) loss = self.loss(y_true, y_pred) self.loss_metric.update_state(loss) - target = self.model.text_featurizer.iextract(y_true["label"]) + target = self.text_featurizer.iextract(y_true["label"]) decoded = self.recognize(x["input"], x["input_length"]) self.cer.update_state(decoded, target) return {m.name: m.result() for m in self.eval_metrics} From 3ceae2314869e60a8c1ad88c4254ad9cbff80b9e Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 3 Mar 2021 19:45:19 +0700 Subject: [PATCH 08/10] :writing_hand: update test step --- tensorflow_asr/models/keras/transducer.py | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/tensorflow_asr/models/keras/transducer.py b/tensorflow_asr/models/keras/transducer.py index d98540e6d5..269ad65b90 100644 --- a/tensorflow_asr/models/keras/transducer.py +++ b/tensorflow_asr/models/keras/transducer.py @@ -17,7 +17,6 @@ from tensorflow.keras import mixed_precision as mxp from ..transducer import Transducer as BaseTransducer -from ...utils.metrics import ErrorRate, tf_cer from ...utils.utils import get_reduced_length from ...losses.keras.rnnt_losses import RnntLoss @@ -28,10 +27,6 @@ class Transducer(BaseTransducer): def metrics(self): return [self.loss_metric] - @property - def eval_metrics(self): - return self.metrics + [self.cer] - def _build(self, input_shape, prediction_shape=[None], batch_size=None): inputs = tf.keras.Input(shape=input_shape, batch_size=batch_size, dtype=tf.float32) input_length = tf.keras.Input(shape=[], batch_size=batch_size, dtype=tf.int32) @@ -62,7 +57,6 @@ def compile(self, optimizer, global_batch_size, blank=0, use_loss_scale=False, r if self.use_loss_scale: optimizer = mxp.experimental.LossScaleOptimizer(tf.keras.optimizers.get(optimizer), "dynamic") self.loss_metric = tf.keras.metrics.Mean(name="rnnt_loss", dtype=tf.float32) - self.cer = ErrorRate(tf_cer, name="cer", dtype=tf.float32) super(Transducer, self).compile(optimizer=optimizer, loss=loss, run_eagerly=run_eagerly, **kwargs) def train_step(self, batch): @@ -96,7 +90,4 @@ def test_step(self, batch): }, training=False) loss = self.loss(y_true, y_pred) self.loss_metric.update_state(loss) - target = self.text_featurizer.iextract(y_true["label"]) - decoded = self.recognize(x["input"], x["input_length"]) - self.cer.update_state(decoded, target) - return {m.name: m.result() for m in self.eval_metrics} + return {m.name: m.result() for m in self.metrics} From 7c8d239cc3f6a661f06d708773a8454229b074b0 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Sat, 6 Mar 2021 00:55:43 +0700 Subject: [PATCH 09/10] :writing_hand: update training tpu script --- examples/conformer/train_tpu_keras_subword_conformer.py | 5 +++++ examples/contextnet/train_tpu_keras_subword_contextnet.py | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/examples/conformer/train_tpu_keras_subword_conformer.py b/examples/conformer/train_tpu_keras_subword_conformer.py index a6126c6933..cb78ce4db3 100644 --- a/examples/conformer/train_tpu_keras_subword_conformer.py +++ b/examples/conformer/train_tpu_keras_subword_conformer.py @@ -46,6 +46,8 @@ parser.add_argument("--subwords_corpus", nargs="*", type=str, default=[], help="Transcript files for generating subwords") +parser.add_argument("--saved", type=str, default=None, help="Path to saved model") + args = parser.parse_args() tf.config.optimizer.set_experimental_options({"auto_mixed_precision": args.mxp}) @@ -108,6 +110,9 @@ conformer._build(speech_featurizer.shape, prediction_shape=text_featurizer.prepand_shape, batch_size=global_batch_size) conformer.summary(line_length=120) + if args.saved: + conformer.load_weights(args.saved, by_name=True, skip_mismatch=True) + optimizer = tf.keras.optimizers.Adam( TransformerSchedule( d_model=conformer.dmodel, diff --git a/examples/contextnet/train_tpu_keras_subword_contextnet.py b/examples/contextnet/train_tpu_keras_subword_contextnet.py index b75e541d34..97b172add6 100644 --- a/examples/contextnet/train_tpu_keras_subword_contextnet.py +++ b/examples/contextnet/train_tpu_keras_subword_contextnet.py @@ -46,6 +46,8 @@ parser.add_argument("--subwords_corpus", nargs="*", type=str, default=[], help="Transcript files for generating subwords") +parser.add_argument("--saved", type=str, default=None, help="Path to saved model") + args = parser.parse_args() tf.config.optimizer.set_experimental_options({"auto_mixed_precision": args.mxp}) @@ -108,6 +110,9 @@ contextnet._build(speech_featurizer.shape, prediction_shape=text_featurizer.prepand_shape, batch_size=global_batch_size) contextnet.summary(line_length=120) + if args.saved: + contextnet.load_weights(args.saved, by_name=True, skip_mismatch=True) + optimizer = tf.keras.optimizers.Adam( TransformerSchedule( d_model=contextnet.dmodel, From 839e5fa94394c4dfefe4a11918609de9b3d130a3 Mon Sep 17 00:00:00 2001 From: Huy Le Nguyen Date: Wed, 10 Mar 2021 00:41:30 +0700 Subject: [PATCH 10/10] :writing_hand: update metrics --- tensorflow_asr/utils/metrics.py | 54 +++++++++++++++++---------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/tensorflow_asr/utils/metrics.py b/tensorflow_asr/utils/metrics.py index 42a6d019e8..efb59ed452 100644 --- a/tensorflow_asr/utils/metrics.py +++ b/tensorflow_asr/utils/metrics.py @@ -18,6 +18,23 @@ from .utils import bytes_to_string +def _wer(decode, target): + decode = bytes_to_string(decode) + target = bytes_to_string(target) + dis = 0.0 + length = 0.0 + for dec, tar in zip(decode, target): + words = set(dec.split() + tar.split()) + word2char = dict(zip(words, range(len(words)))) + + new_decode = [chr(word2char[w]) for w in dec.split()] + new_target = [chr(word2char[w]) for w in tar.split()] + + dis += distance.edit_distance(''.join(new_decode), ''.join(new_target)) + length += len(tar.split()) + return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) + + def wer(_decode: tf.Tensor, _target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: """Word Error Rate @@ -28,23 +45,18 @@ def wer(_decode: tf.Tensor, _target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: Returns: tuple: a tuple of tf.Tensor of (edit distances, number of words) of each text """ - def fn(decode, target): - decode = bytes_to_string(decode) - target = bytes_to_string(target) - dis = 0.0 - length = 0.0 - for dec, tar in zip(decode, target): - words = set(dec.split() + tar.split()) - word2char = dict(zip(words, range(len(words)))) - - new_decode = [chr(word2char[w]) for w in dec.split()] - new_target = [chr(word2char[w]) for w in tar.split()] + return tf.numpy_function(_wer, inp=[_decode, _target], Tout=[tf.float32, tf.float32]) - dis += distance.edit_distance(''.join(new_decode), ''.join(new_target)) - length += len(tar.split()) - return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) - return tf.numpy_function(fn, inp=[_decode, _target], Tout=[tf.float32, tf.float32]) +def _cer(decode, target): + decode = bytes_to_string(decode) + target = bytes_to_string(target) + dis = 0 + length = 0 + for dec, tar in zip(decode, target): + dis += distance.edit_distance(dec, tar) + length += len(tar) + return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) def cer(_decode: tf.Tensor, _target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: @@ -57,17 +69,7 @@ def cer(_decode: tf.Tensor, _target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: Returns: tuple: a tuple of tf.Tensor of (edit distances, number of characters) of each text """ - def fn(decode, target): - decode = bytes_to_string(decode) - target = bytes_to_string(target) - dis = 0 - length = 0 - for dec, tar in zip(decode, target): - dis += distance.edit_distance(dec, tar) - length += len(tar) - return tf.convert_to_tensor(dis, tf.float32), tf.convert_to_tensor(length, tf.float32) - - return tf.numpy_function(fn, inp=[_decode, _target], Tout=[tf.float32, tf.float32]) + return tf.numpy_function(_cer, inp=[_decode, _target], Tout=[tf.float32, tf.float32]) def tf_cer(decode: tf.Tensor, target: tf.Tensor) -> Tuple[tf.Tensor, tf.Tensor]: