diff --git a/docs/docs_ch/get_start/mac_quickstart.md b/docs/docs_ch/get_start/mac_quickstart.md index ba765fdf6343a9a65f92191ac2cfcf85fbbd402c..f49160d19ca72dddd6c313f256d1c1fcb2d12798 100755 --- a/docs/docs_ch/get_start/mac_quickstart.md +++ b/docs/docs_ch/get_start/mac_quickstart.md @@ -192,7 +192,7 @@ - output image ## 第6步:飞桨预训练模型探索之旅 -- 恭喜你,到这里PaddleHub在windows环境下的安装和入门案例就全部完成了,快快开启你更多的深度学习模型探索之旅吧。[【更多模型探索,跳转飞桨官网】](https://www.paddlepaddle.org.cn/hublist) +- 恭喜你,到这里PaddleHub在mac环境下的安装和入门案例就全部完成了,快快开启你更多的深度学习模型探索之旅吧。[【更多模型探索,跳转飞桨官网】](https://www.paddlepaddle.org.cn/hublist) diff --git a/modules/audio/asr/deepspeech2_aishell/README.md b/modules/audio/asr/deepspeech2_aishell/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a75ba672279a75e60d7465989c6452dcb65817fa --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/README.md @@ -0,0 +1,153 @@ +# deepspeech2_aishell + +|模型名称|deepspeech2_aishell| +| :--- | :---: | +|类别|语音-语音识别| +|网络|DeepSpeech2| +|数据集|AISHELL-1| +|是否支持Fine-tuning|否| +|模型大小|306MB| +|最新更新日期|2021-10-20| +|数据指标|中文CER 0.065| + +## 一、模型基本信息 + +### 模型介绍 + +DeepSpeech2是百度于2015年提出的适用于英文和中文的end-to-end语音识别模型。deepspeech2_aishell使用了DeepSpeech2离线模型的结构,模型主要由2层卷积网络和3层GRU组成,并在中文普通话开源语音数据集[AISHELL-1](http://www.aishelltech.com/kysjcp)进行了预训练,该模型在其测试集上的CER指标是0.065。 + + +

+
+

+ +更多详情请参考[Deep Speech 2: End-to-End Speech Recognition in English and Mandarin](https://arxiv.org/abs/1512.02595) + +## 二、安装 + +- ### 1、系统依赖 + + - libsndfile, swig >= 3.0 + - Linux + ```shell + $ sudo apt-get install libsndfile swig + or + $ sudo yum install libsndfile swig + ``` + - MacOs + ``` + $ brew install libsndfile swig + ``` + +- ### 2、环境依赖 + - swig_decoder: + ``` + git clone https://github.com/PaddlePaddle/DeepSpeech.git && cd DeepSpeech && git reset --hard b53171694e7b87abe7ea96870b2f4d8e0e2b1485 && cd deepspeech/decoders/ctcdecoder/swig && sh setup.sh + ``` + + - paddlepaddle >= 2.1.0 + + - paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) + +- ### 3、安装 + + - ```shell + $ hub install deepspeech2_aishell + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) + + +## 三、模型API预测 + +- ### 1、预测代码示例 + + ```python + import paddlehub as hub + + # 采样率为16k,格式为wav的中文语音音频 + wav_file = '/PATH/TO/AUDIO' + + model = hub.Module( + name='deepspeech2_aishell', + version='1.0.0') + text = model.speech_recognize(wav_file) + + print(text) + ``` + +- ### 2、API + - ```python + def check_audio(audio_file) + ``` + - 检查输入音频格式和采样率是否满足为16000 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + + - ```python + def speech_recognize( + audio_file, + device='cpu', + ) + ``` + - 将输入的音频识别成文字 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + - `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。 + + - **返回** + + - `text`:str类型,返回输入音频的识别文字结果。 + + +## 四、服务部署 + +- PaddleHub Serving可以部署一个在线的语音识别服务。 + +- ### 第一步:启动PaddleHub Serving + + - ```shell + $ hub serving start -m deepspeech2_aishell + ``` + + - 这样就完成了一个语音识别服务化API的部署,默认端口号为8866。 + + - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。 + +- ### 第二步:发送预测请求 + + - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果 + + - ```python + import requests + import json + + # 需要识别的音频的存放路径,确保部署服务的机器可访问 + file = '/path/to/input.wav' + + # 以key的方式指定text传入预测方法的时的参数,此例中为"audio_file" + data = {"audio_file": file} + + # 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip + url = "http://127.0.0.1:8866/predict/deepspeech2_aishell" + + # 指定post请求的headers为application/json方式 + headers = {"Content-Type": "application/json"} + + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) + ``` + +## 五、更新历史 + +* 1.0.0 + + 初始发布 + + ```shell + $ hub install deepspeech2_aishell + ``` diff --git a/modules/audio/asr/deepspeech2_aishell/__init__.py b/modules/audio/asr/deepspeech2_aishell/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/audio/asr/deepspeech2_aishell/assets/conf/augmentation.json b/modules/audio/asr/deepspeech2_aishell/assets/conf/augmentation.json new file mode 100644 index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93 --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/assets/conf/augmentation.json @@ -0,0 +1 @@ +{} diff --git a/modules/audio/asr/deepspeech2_aishell/assets/conf/deepspeech2.yaml b/modules/audio/asr/deepspeech2_aishell/assets/conf/deepspeech2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..ecbe912386c1968d2f399dfca9769080d7537dfc --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/assets/conf/deepspeech2.yaml @@ -0,0 +1,68 @@ +# https://yaml.org/type/float.html +data: + train_manifest: data/manifest.train + dev_manifest: data/manifest.dev + test_manifest: data/manifest.test + min_input_len: 0.0 + max_input_len: 27.0 # second + min_output_len: 0.0 + max_output_len: .inf + min_output_input_ratio: 0.00 + max_output_input_ratio: .inf + +collator: + batch_size: 64 # one gpu + mean_std_filepath: data/mean_std.json + unit_type: char + vocab_filepath: data/vocab.txt + augmentation_config: conf/augmentation.json + random_seed: 0 + spm_model_prefix: + spectrum_type: linear + feat_dim: + delta_delta: False + stride_ms: 10.0 + window_ms: 20.0 + n_fft: None + max_freq: None + target_sample_rate: 16000 + use_dB_normalization: True + target_dB: -20 + dither: 1.0 + keep_transcription_text: False + sortagrad: True + shuffle_method: batch_shuffle + num_workers: 2 + +model: + num_conv_layers: 2 + num_rnn_layers: 3 + rnn_layer_size: 1024 + use_gru: True + share_rnn_weights: False + blank_id: 0 + ctc_grad_norm_type: instance + +training: + n_epoch: 80 + accum_grad: 1 + lr: 2e-3 + lr_decay: 0.83 + weight_decay: 1e-06 + global_grad_clip: 3.0 + log_interval: 100 + checkpoint: + kbest_n: 50 + latest_n: 5 + +decoding: + batch_size: 128 + error_rate_type: cer + decoding_method: ctc_beam_search + lang_model_path: data/lm/zh_giga.no_cna_cmn.prune01244.klm + alpha: 1.9 + beta: 5.0 + beam_size: 300 + cutoff_prob: 0.99 + cutoff_top_n: 40 + num_proc_bsearch: 10 diff --git a/modules/audio/asr/deepspeech2_aishell/assets/data/mean_std.json b/modules/audio/asr/deepspeech2_aishell/assets/data/mean_std.json new file mode 100644 index 0000000000000000000000000000000000000000..6770184f3522056a533ead7a68537686f799ecc5 --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/assets/data/mean_std.json @@ -0,0 +1 @@ +{"mean_stat": [-13505966.65209869, -12778154.889588555, -13487728.30750011, -12897344.94123812, -12472281.490772562, -12631566.475106332, -13391790.349327326, -14045382.570026815, -14159320.465516506, -14273422.438486755, -14639805.161347123, -15145380.07768254, -15612893.133258691, -15938542.05012206, -16115293.502621327, -16188225.698757892, -16317206.280373082, -16500598.476283036, -16671564.297937019, -16804599.860397574, -16916423.142814968, -17011785.59439087, -17075067.62262626, -17154580.16740178, -17257812.961825978, -17355683.228599995, -17441455.258318607, -17473199.925130684, -17488835.5763828, -17491232.15414511, -17485000.29006962, -17499471.646940477, -17551398.97122984, -17641732.10682403, -17757209.077974595, -17843801.500521667, -17935647.58641936, -18020362.347413756, -18117633.806080323, -18232427.58935143, -18316024.35215119, -18378789.145393644, -18421147.25807373, -18445805.18294822, -18460946.27810118, -18467914.04034822, -18469404.319909714, -18469606.974339806, -18470754.294192698, -18458320.91921723, -18441354.111811973, -18428332.216321833, -18422281.413955193, -18433421.585668042, -18460521.025954794, -18494800.856363494, -18539532.288011573, -18583823.79899225, -18614474.56256926, -18646872.180154275, -18661137.85367877, -18673590.719379324, -18702967.62040798, -18736434.748098046, -18777912.13098326, -18794675.486509323, -18837225.856196072, -18874872.796128694, -18927340.44407057, -18994929.076545004, -19060701.164406348, -19118006.18996682, -19175792.05766062, -19230755.996405277, -19270174.594219487, -19334788.35904946, -19401456.988906194, -19484580.095938426, -19582040.4715673, -19696598.86662636, -19810401.513227757, -19931755.37941177, -20021867.47620737, -20082298.984455004, -20114708.336475413, -20143802.72793865, -20146821.988139726, -20165613.317683898, -20189938.602584295, -20220059.08673595, -20242848.528134122, -20250859.979931064, -20267382.93048284, -20267964.544716164, -20261372.89563879, -20252878.74023849, -20247550.771284755, -20231778.31093504, -20231376.103159923, -20236926.52293088, -20248068.41488535, -20255076.901920393, -20262924.167151034, -20263926.583205637, -20263790.273742784, -20268560.080967404, -20268997.150654405, -20269810.816284582, -20267771.864327505, -20256472.703380838, -20241790.559690386, -20241865.794732895, -20244924.716114976, -20249736.631184842, -20257257.816903576, -20268027.212145977, -20277399.95533857, -20281840.8112546, -20270512.52002465, -20255938.63066214, -20242421.685443826, -20241986.654626504, -20237836.034444932, -20231458.31132546, -20218092.819713395, -20204994.19634715, -20198880.142133974, -20197376.49014031, -20198117.60450857, -20197443.473929476, -20191142.03632657, -20174428.452719454, -20159204.32090646, -20137981.294740904, -20124944.79897834, -20112774.604521394, -20109389.248600915, -20115248.61302806, -20117743.853294585, -20123076.93515528, -20132224.95454374, -20147099.26793121, -20169581.367630124, -20190957.518733896, -20215197.057997894, -20242033.589256056, -20282032.217160087, -20316778.653784916, -20360354.215504933, -20425089.908502825, -20534553.0465662, -20737928.349233944, -21091705.14104186, -21646013.197923105, -22403182.076235127, -23313516.63322832, -24244679.879594248, -25027534.00417361, -25502455.708560493, -25665136.744125813, -26602318.88405537], "var_stat": [209924783.1093623, 185218712.4577822, 209991180.89829063, 196198511.40798286, 186098265.7827955, 191905798.58923203, 214281935.29191792, 235042114.51049897, 240179456.24597096, 244657890.3963041, 256099586.32657292, 271849135.9872555, 287174069.13527167, 298171137.28863454, 304112589.91933817, 306553976.2206335, 310813670.30674237, 316958840.3099824, 322651440.3639528, 327213725.196089, 331252123.26114285, 334856188.3081607, 337217897.6545214, 340385427.82557064, 344400488.5633641, 348086880.08086526, 351349070.53148264, 352648076.18415344, 353409462.33704513, 353598061.4967693, 353405322.74993587, 353917215.6834277, 355784796.898883, 359222461.3224974, 363671441.7428676, 366908651.69908494, 370304677.0615045, 373477194.79721, 377174088.9808273, 381531608.6574547, 384703574.426059, 387104126.9474883, 388723211.11308575, 389687817.27351815, 390351031.4418706, 390659006.3690262, 390704649.89417714, 390702370.1919126, 390731862.59274197, 390216004.4126628, 389516083.054853, 389017745.636457, 388788872.1127645, 389269311.2239042, 390401819.5968815, 391842612.97859454, 393708801.05223197, 395569598.4694, 396868892.67152405, 398210915.02133286, 398743299.4753882, 399330344.88417244, 400565940.1325846, 401901693.4656316, 403513855.43933284, 404103248.96526104, 405986814.274556, 407507145.4104169, 409598353.6517908, 412453848.0248063, 415138273.0558441, 417479272.96907294, 419785633.3276395, 422003065.1681787, 423610264.8868346, 426260552.96545905, 428973536.3620236, 432368654.40899384, 436359561.5468266, 441119512.777527, 445884989.25794005, 451037422.65838546, 454872292.24179226, 457497136.8780015, 458904066.0675219, 460155836.4432799, 460272943.80738074, 461087498.6828549, 462144907.7850926, 463483598.81228757, 464530694.44478536, 464971538.85301507, 465771535.6019992, 465936698.93801653, 465741012.7287712, 465448625.0011534, 465296363.8603534, 464718299.2207512, 464720391.25778216, 465016640.5248736, 465564374.0248998, 465982788.8695927, 466425068.01245564, 466595649.90489674, 466707658.8296169, 467015570.78026086, 467099213.08769494, 467201640.15951264, 467163862.3709329, 466727597.56313753, 466174871.71213347, 466255498.45248336, 466439062.65458614, 466693130.99620277, 467068587.1422199, 467536070.1402474, 467955819.1549621, 468187227.1069643, 467742976.2778335, 467159585.250493, 466592359.52916145, 466583195.8099961, 466424348.9572719, 466155323.6074322, 465569620.1801811, 465021642.5158305, 464757658.6383867, 464713882.60103834, 464724239.2941314, 464679163.728191, 464407007.8705965, 463660736.0136739, 463001339.2385198, 462077058.47595775, 461505071.67199403, 460946277.95973784, 460816158.9197017, 461123589.268546, 461232998.1572812, 461445601.0442877, 461803238.28569543, 462436966.22005004, 463391404.7434971, 464299608.85523456, 465319405.3931429, 466432961.70208246, 468168080.3331244, 469640808.6809098, 471501539.22440934, 474301795.1694898, 479155711.93441755, 488314271.10405815, 504537056.23994666, 530509400.5201074, 566892036.4437443, 611792826.0442055, 658913502.9004005, 699716882.9169292, 725237302.8248898, 734259159.9571886, 789267050.8287783], "frame_num": 899422} diff --git a/modules/audio/asr/deepspeech2_aishell/assets/data/vocab.txt b/modules/audio/asr/deepspeech2_aishell/assets/data/vocab.txt new file mode 100644 index 0000000000000000000000000000000000000000..e272b5760cafeeec94bbbb7161e9c23f1358af3b --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/assets/data/vocab.txt @@ -0,0 +1,4301 @@ + + +一 +丁 +七 +万 +丈 +三 +上 +下 +不 +与 +丐 +丑 +专 +且 +世 +丘 +丙 +业 +丛 +东 +丝 +丞 +丢 +两 +严 +丧 +个 +丫 +中 +丰 +串 +临 +丸 +丹 +为 +主 +丽 +举 +乃 +久 +么 +义 +之 +乌 +乍 +乎 +乏 +乐 +乒 +乓 +乔 +乖 +乘 +乙 +九 +乞 +也 +习 +乡 +书 +买 +乱 +乳 +乾 +了 +予 +争 +事 +二 +于 +亏 +云 +互 +五 +井 +亚 +些 +亟 +亡 +亢 +交 +亥 +亦 +产 +亨 +亩 +享 +京 +亭 +亮 +亲 +亳 +亵 +人 +亿 +什 +仁 +仄 +仅 +仇 +今 +介 +仍 +从 +仑 +仓 +仔 +仕 +他 +仗 +付 +仙 +仡 +代 +令 +以 +仨 +仪 +们 +仰 +仲 +件 +价 +任 +份 +仿 +企 +伉 +伊 +伍 +伎 +伏 +伐 +休 +众 +优 +伙 +会 +伞 +伟 +传 +伢 +伤 +伦 +伪 +伯 +估 +伴 +伶 +伸 +伺 +似 +伽 +佃 +但 +位 +低 +住 +佐 +佑 +体 +何 +佘 +余 +佛 +作 +佟 +你 +佣 +佩 +佬 +佳 +佶 +佼 +使 +侃 +侄 +侈 +例 +侍 +侑 +侗 +供 +依 +侠 +侣 +侥 +侦 +侧 +侨 +侬 +侮 +侯 +侵 +便 +促 +俄 +俊 +俏 +俐 +俗 +俘 +俚 +保 +俞 +信 +俨 +俩 +俪 +俭 +修 +俯 +俱 +俸 +俺 +俾 +倍 +倒 +倘 +候 +倚 +倜 +借 +倡 +倦 +倩 +倪 +债 +值 +倾 +假 +偏 +做 +停 +健 +偶 +偷 +偿 +傅 +傍 +傥 +储 +催 +傲 +傻 +像 +僚 +僧 +僮 +僵 +僻 +儒 +儿 +兀 +允 +元 +兄 +充 +兆 +先 +光 +克 +免 +兑 +兔 +兖 +党 +兜 +兢 +入 +全 +八 +公 +六 +兰 +共 +关 +兴 +兵 +其 +具 +典 +兹 +养 +兼 +兽 +冀 +内 +冈 +冉 +册 +再 +冒 +冕 +冗 +写 +军 +农 +冠 +冤 +冥 +冬 +冯 +冰 +冲 +决 +况 +冶 +冷 +冻 +净 +凄 +准 +凇 +凉 +凋 +凌 +减 +凑 +凝 +几 +凡 +凤 +凭 +凯 +凰 +凳 +凶 +凸 +凹 +出 +击 +函 +凿 +刀 +刁 +刃 +分 +切 +刊 +刑 +划 +列 +刘 +则 +刚 +创 +初 +删 +判 +刨 +利 +别 +刮 +到 +制 +刷 +券 +刹 +刺 +刻 +剁 +剂 +剃 +削 +前 +剐 +剑 +剔 +剖 +剥 +剧 +剩 +剪 +副 +割 +剽 +剿 +劈 +力 +劝 +办 +功 +加 +务 +劣 +动 +助 +努 +劫 +励 +劲 +劳 +劵 +势 +勃 +勇 +勉 +勋 +勒 +勘 +募 +勤 +勺 +勾 +勿 +匀 +包 +匆 +匈 +匕 +化 +北 +匙 +匝 +匠 +匡 +匣 +匪 +匮 +匹 +区 +医 +匾 +匿 +十 +千 +升 +午 +卉 +半 +华 +协 +卑 +卒 +卓 +单 +卖 +南 +博 +卜 +卞 +占 +卡 +卢 +卤 +卦 +卧 +卫 +卯 +印 +危 +卲 +即 +却 +卵 +卷 +卸 +卿 +厂 +厄 +厅 +历 +厉 +压 +厌 +厕 +厘 +厚 +原 +厢 +厥 +厦 +厨 +厩 +厮 +去 +县 +参 +又 +叉 +及 +友 +双 +反 +发 +叔 +取 +受 +变 +叙 +叛 +叠 +口 +古 +句 +另 +叨 +叩 +只 +叫 +召 +叭 +叮 +可 +台 +叱 +史 +右 +叵 +叶 +号 +司 +叹 +叼 +吁 +吃 +各 +吆 +合 +吉 +吊 +同 +名 +后 +吏 +吐 +向 +吓 +吕 +吗 +君 +吝 +吞 +吟 +否 +吧 +吨 +吩 +含 +听 +吭 +启 +吴 +吵 +吸 +吹 +吻 +吼 +吾 +吿 +呀 +呃 +呆 +呈 +告 +呐 +呕 +呗 +员 +呛 +呜 +呢 +呦 +周 +呲 +味 +呵 +呼 +命 +咀 +咄 +咋 +和 +咎 +咏 +咐 +咒 +咔 +咕 +咖 +咙 +咚 +咣 +咤 +咧 +咨 +咪 +咫 +咬 +咯 +咱 +咳 +咸 +咽 +哀 +品 +哄 +哆 +哇 +哈 +哉 +响 +哎 +哑 +哒 +哗 +哟 +哥 +哦 +哨 +哪 +哭 +哲 +哺 +哼 +哽 +唁 +唇 +唉 +唏 +唐 +唠 +唤 +唬 +售 +唯 +唱 +唾 +啃 +商 +啊 +啕 +啡 +啤 +啥 +啦 +啧 +啪 +啬 +啰 +啵 +啶 +啸 +啼 +喀 +喂 +善 +喆 +喇 +喉 +喊 +喔 +喘 +喜 +喝 +喧 +喱 +喵 +喷 +喻 +喽 +嗅 +嗑 +嗒 +嗓 +嗡 +嗣 +嗤 +嗦 +嗨 +嗬 +嗯 +嗲 +嗷 +嗽 +嘀 +嘈 +嘉 +嘎 +嘘 +嘛 +嘟 +嘭 +嘱 +嘲 +嘴 +嘶 +嘻 +噎 +噘 +器 +噩 +噪 +噬 +噱 +噼 +嚎 +嚏 +嚓 +嚣 +嚷 +嚼 +囊 +囚 +四 +回 +因 +团 +囤 +囧 +园 +困 +围 +固 +国 +图 +圃 +圆 +圈 +土 +圣 +在 +圩 +圪 +圭 +地 +圳 +场 +圾 +址 +坂 +均 +坊 +坍 +坎 +坏 +坐 +坑 +块 +坚 +坛 +坝 +坞 +坟 +坠 +坡 +坤 +坦 +坪 +坯 +坷 +垂 +垃 +垄 +垅 +型 +垌 +垒 +垛 +垡 +垢 +垣 +垤 +垦 +垫 +垮 +埃 +埋 +城 +埔 +埜 +域 +埠 +培 +基 +堂 +堆 +堕 +堡 +堤 +堪 +堰 +堵 +塌 +塍 +塑 +塔 +塘 +塞 +填 +塬 +塾 +境 +墅 +墓 +墙 +增 +墟 +墨 +墩 +壁 +壑 +壕 +壤 +士 +壮 +声 +壳 +壶 +壹 +处 +备 +复 +夏 +夕 +外 +夙 +多 +夜 +够 +大 +天 +太 +夫 +夭 +央 +夯 +失 +头 +夷 +夸 +夹 +夺 +奂 +奇 +奈 +奉 +奋 +奎 +奏 +契 +奔 +奕 +奖 +套 +奘 +奚 +奠 +奢 +奥 +女 +奴 +奶 +奸 +她 +好 +如 +妃 +妄 +妆 +妇 +妈 +妊 +妍 +妒 +妖 +妙 +妞 +妤 +妥 +妧 +妨 +妩 +妮 +妯 +妹 +妻 +姆 +姊 +始 +姐 +姑 +姓 +委 +姗 +姚 +姜 +姝 +姣 +姥 +姨 +姬 +姻 +姿 +威 +娃 +娄 +娅 +娇 +娌 +娘 +娜 +娟 +娠 +娥 +娩 +娱 +娴 +娶 +娼 +婀 +婆 +婉 +婕 +婚 +婧 +婪 +婴 +婵 +婶 +婷 +婿 +媒 +媚 +媛 +媞 +媲 +媳 +嫁 +嫂 +嫉 +嫌 +嫔 +嫖 +嫚 +嫡 +嫣 +嫦 +嫩 +嬉 +嬛 +嬷 +孀 +子 +孔 +孕 +字 +存 +孙 +孚 +孜 +孝 +孟 +孢 +季 +孤 +学 +孩 +孪 +孰 +孱 +孵 +孺 +宁 +它 +宅 +宇 +守 +安 +宋 +完 +宏 +宓 +宕 +宗 +官 +宙 +定 +宛 +宜 +宝 +实 +宠 +审 +客 +宣 +室 +宦 +宪 +宫 +宰 +害 +宴 +宵 +家 +宸 +容 +宽 +宾 +宿 +寂 +寄 +寅 +密 +寇 +富 +寐 +寒 +寓 +寝 +寞 +察 +寡 +寥 +寨 +寮 +寰 +寸 +对 +寺 +寻 +导 +寿 +封 +射 +将 +尊 +小 +少 +尔 +尖 +尘 +尚 +尝 +尤 +尧 +尬 +就 +尴 +尸 +尹 +尺 +尼 +尽 +尾 +尿 +局 +屁 +层 +居 +屈 +届 +屋 +屌 +屎 +屏 +屑 +展 +属 +屠 +屡 +履 +屯 +山 +屹 +屿 +岁 +岂 +岌 +岐 +岔 +岖 +岗 +岚 +岛 +岩 +岬 +岭 +岱 +岳 +岷 +岸 +峁 +峙 +峡 +峥 +峨 +峪 +峭 +峰 +峻 +崂 +崃 +崇 +崎 +崔 +崖 +崛 +崧 +崩 +崭 +崴 +嵋 +嵌 +嵘 +嵛 +嵩 +嶝 +巅 +巍 +川 +州 +巡 +巢 +工 +左 +巧 +巨 +巩 +巫 +差 +己 +已 +巴 +巷 +巾 +巿 +币 +市 +布 +帅 +帆 +师 +希 +帐 +帕 +帖 +帘 +帚 +帜 +帝 +带 +席 +帮 +帷 +常 +帼 +帽 +幂 +幄 +幅 +幌 +幕 +幢 +干 +平 +年 +并 +幸 +幺 +幻 +幼 +幽 +广 +庄 +庆 +庇 +床 +序 +庐 +库 +应 +底 +店 +庙 +庚 +府 +庞 +废 +度 +座 +庭 +庵 +庶 +康 +庸 +庾 +廉 +廊 +廓 +廖 +延 +廷 +建 +开 +异 +弃 +弄 +弈 +弊 +式 +弑 +弓 +引 +弗 +弘 +弛 +弟 +张 +弥 +弦 +弧 +弩 +弯 +弱 +弹 +强 +归 +当 +录 +彝 +形 +彤 +彦 +彩 +彪 +彬 +彭 +彰 +影 +彷 +役 +彻 +彼 +彿 +往 +征 +径 +待 +徇 +很 +徉 +徊 +律 +徐 +徒 +得 +徘 +徙 +御 +循 +微 +德 +徽 +心 +必 +忆 +忌 +忍 +忐 +忑 +志 +忘 +忙 +忠 +忧 +忪 +快 +忱 +念 +忻 +忽 +怀 +态 +怂 +怅 +怎 +怒 +怕 +怖 +怜 +思 +怠 +怡 +急 +怦 +性 +怨 +怪 +怯 +怵 +总 +恋 +恍 +恐 +恒 +恙 +恢 +恣 +恤 +恨 +恩 +恪 +恬 +恭 +息 +恰 +恳 +恶 +恸 +恺 +恼 +恿 +悄 +悉 +悌 +悍 +悔 +悖 +悚 +悟 +悠 +患 +悦 +您 +悬 +悯 +悲 +悴 +悸 +悼 +情 +惆 +惊 +惋 +惑 +惕 +惚 +惜 +惟 +惠 +惦 +惧 +惨 +惩 +惫 +惬 +惮 +惯 +惰 +想 +惶 +惹 +惺 +愁 +愈 +愉 +意 +愕 +愚 +感 +愤 +愧 +愿 +慈 +慌 +慎 +慑 +慕 +慢 +慧 +慨 +慰 +慷 +憋 +憔 +憧 +憨 +憩 +憬 +憷 +憾 +懂 +懈 +懊 +懋 +懒 +懵 +懿 +戈 +戎 +戏 +成 +我 +戒 +或 +战 +戚 +戛 +戟 +截 +戬 +戮 +戳 +戴 +户 +房 +所 +扁 +扇 +扉 +手 +才 +扎 +扑 +扒 +打 +扔 +托 +扛 +扣 +执 +扩 +扫 +扬 +扭 +扮 +扯 +扰 +扳 +扶 +批 +扼 +找 +承 +技 +抄 +抉 +把 +抑 +抒 +抓 +投 +抖 +抗 +折 +抚 +抛 +抠 +抡 +抢 +护 +报 +抨 +披 +抬 +抱 +抵 +抹 +押 +抽 +抿 +拄 +担 +拆 +拇 +拈 +拉 +拌 +拍 +拎 +拐 +拒 +拓 +拔 +拖 +拗 +拘 +拙 +招 +拜 +拟 +拢 +拣 +拥 +拦 +拧 +拨 +择 +括 +拭 +拮 +拯 +拱 +拳 +拴 +拷 +拼 +拽 +拾 +拿 +持 +挂 +指 +按 +挎 +挑 +挖 +挚 +挛 +挝 +挟 +挠 +挡 +挣 +挤 +挥 +挨 +挪 +挫 +振 +挺 +挽 +捂 +捅 +捆 +捉 +捍 +捎 +捏 +捐 +捕 +捞 +损 +捡 +换 +捣 +捧 +据 +捷 +捺 +捻 +掀 +掂 +授 +掉 +掌 +掏 +掐 +排 +掖 +掘 +掠 +探 +掣 +接 +控 +推 +掩 +措 +掬 +掮 +掰 +掳 +掴 +掷 +掺 +揄 +揉 +揍 +描 +提 +插 +握 +揣 +揩 +揪 +揭 +援 +揶 +揽 +搀 +搁 +搂 +搅 +搏 +搜 +搞 +搡 +搪 +搬 +搭 +携 +搽 +摁 +摄 +摆 +摇 +摊 +摒 +摔 +摘 +摧 +摩 +摸 +摹 +撂 +撇 +撑 +撒 +撕 +撞 +撤 +撩 +撬 +播 +撮 +撰 +撵 +撸 +撼 +擂 +擅 +操 +擎 +擒 +擘 +擞 +擦 +攀 +攒 +攥 +支 +收 +改 +攻 +放 +政 +故 +效 +敌 +敏 +救 +敖 +教 +敛 +敝 +敞 +敢 +散 +敦 +敬 +数 +敲 +整 +敷 +文 +斋 +斌 +斐 +斑 +斓 +斗 +料 +斛 +斜 +斟 +斡 +斤 +斥 +斧 +斩 +断 +斯 +新 +方 +施 +旁 +旅 +旋 +族 +旗 +无 +既 +日 +旦 +旧 +旨 +早 +旬 +旭 +旱 +时 +旷 +旺 +昀 +昂 +昆 +昊 +昌 +明 +昏 +易 +昔 +昕 +昙 +星 +映 +春 +昧 +昨 +昭 +是 +昱 +昵 +昼 +显 +晃 +晋 +晏 +晒 +晓 +晔 +晕 +晖 +晗 +晚 +晟 +晤 +晦 +晨 +普 +景 +晰 +晴 +晶 +智 +晾 +暂 +暄 +暇 +暑 +暖 +暗 +暧 +暨 +暮 +暴 +曙 +曝 +曦 +曰 +曲 +更 +曹 +曼 +曾 +替 +最 +月 +有 +朋 +服 +朐 +朔 +朗 +望 +朝 +期 +朦 +木 +未 +末 +本 +札 +术 +朱 +朴 +朵 +机 +朽 +杀 +杂 +权 +杆 +杉 +李 +杏 +材 +村 +杖 +杜 +杞 +束 +杠 +条 +来 +杨 +杭 +杯 +杰 +杳 +松 +板 +极 +构 +枉 +析 +枕 +林 +枚 +果 +枝 +枞 +枢 +枣 +枪 +枫 +枭 +枯 +架 +枷 +柄 +柏 +某 +染 +柔 +柚 +柜 +柞 +柠 +查 +柬 +柯 +柱 +柳 +柴 +柿 +栅 +标 +栈 +栋 +栏 +树 +栓 +栖 +栗 +校 +株 +样 +核 +根 +格 +栽 +栾 +桂 +桃 +框 +案 +桉 +桌 +桎 +桐 +桑 +桓 +桔 +档 +桥 +桦 +桩 +桶 +梁 +梅 +梓 +梗 +梦 +梧 +梨 +梭 +梯 +械 +梳 +梵 +检 +棉 +棋 +棍 +棒 +棕 +棘 +棚 +棠 +森 +棱 +棵 +棺 +椅 +椋 +植 +椎 +椒 +椰 +椿 +楂 +楔 +楚 +楞 +楠 +楣 +楷 +楼 +概 +榄 +榆 +榈 +榉 +榔 +榕 +榜 +榨 +榭 +榴 +榷 +榻 +槌 +槎 +槐 +槛 +槟 +槽 +槿 +樊 +樟 +模 +横 +樱 +橄 +橘 +橙 +橡 +橱 +檀 +檐 +檬 +欠 +次 +欢 +欣 +欧 +欲 +欺 +款 +歆 +歇 +歉 +歌 +止 +正 +此 +步 +武 +歧 +歪 +歹 +死 +殃 +殆 +殉 +殊 +残 +殒 +殓 +殖 +殚 +殡 +殭 +殴 +段 +殷 +殿 +毁 +毂 +毅 +毋 +母 +每 +毒 +毓 +比 +毕 +毗 +毙 +毛 +毫 +毯 +毽 +氏 +民 +氓 +气 +氛 +氟 +氢 +氦 +氧 +氨 +氪 +氮 +氯 +氰 +水 +永 +氾 +汀 +汁 +求 +汇 +汉 +汕 +汗 +汛 +汝 +汞 +江 +池 +污 +汤 +汪 +汰 +汲 +汴 +汶 +汹 +汽 +汾 +沁 +沂 +沃 +沅 +沈 +沉 +沏 +沐 +沓 +沙 +沛 +沟 +没 +沣 +沥 +沦 +沧 +沪 +沫 +沮 +沱 +河 +沸 +油 +治 +沼 +沽 +沾 +沿 +泄 +泉 +泊 +泌 +泓 +泔 +法 +泗 +泛 +泞 +泠 +泡 +波 +泣 +泥 +注 +泪 +泯 +泰 +泱 +泳 +泵 +泷 +泸 +泻 +泼 +泽 +泾 +洁 +洋 +洒 +洗 +洙 +洛 +洞 +津 +洪 +洱 +洲 +洵 +活 +洼 +洽 +派 +流 +浅 +浆 +浇 +浈 +浊 +测 +济 +浏 +浑 +浓 +浙 +浚 +浦 +浩 +浪 +浮 +浴 +海 +浸 +涂 +涅 +消 +涉 +涌 +涎 +涓 +涕 +涛 +涝 +涞 +涟 +涠 +涡 +涤 +润 +涧 +涨 +涩 +涮 +涯 +液 +涵 +涿 +淀 +淄 +淆 +淇 +淋 +淌 +淑 +淖 +淘 +淝 +淞 +淡 +淤 +淫 +淮 +深 +淳 +混 +淹 +添 +淼 +渀 +清 +渊 +渍 +渎 +渐 +渔 +渗 +渚 +渝 +渠 +渡 +渣 +渤 +渥 +温 +渭 +港 +渲 +渴 +游 +渺 +湃 +湄 +湍 +湖 +湘 +湛 +湾 +湿 +溃 +溅 +溉 +源 +溜 +溢 +溥 +溧 +溪 +溯 +溶 +溺 +滁 +滇 +滋 +滑 +滔 +滕 +滚 +滞 +满 +滢 +滤 +滥 +滨 +滩 +滴 +漂 +漆 +漏 +漓 +演 +漕 +漠 +漩 +漫 +漭 +漯 +漱 +漳 +漾 +潇 +潘 +潜 +潞 +潢 +潦 +潭 +潮 +潼 +澄 +澈 +澎 +澜 +澡 +澳 +激 +濑 +濒 +濠 +濡 +濮 +瀑 +瀚 +瀛 +灌 +灞 +火 +灭 +灯 +灰 +灵 +灶 +灸 +灼 +灾 +灿 +炅 +炉 +炊 +炎 +炒 +炕 +炖 +炙 +炜 +炫 +炬 +炭 +炮 +炯 +炳 +炷 +炸 +点 +炼 +炽 +烁 +烂 +烃 +烈 +烊 +烘 +烙 +烛 +烟 +烤 +烦 +烧 +烨 +烫 +热 +烯 +烷 +烹 +烽 +焉 +焊 +焕 +焖 +焘 +焚 +焦 +焯 +焰 +焱 +然 +煊 +煌 +煎 +煜 +煞 +煤 +煦 +照 +煮 +煲 +熄 +熊 +熏 +熔 +熙 +熟 +熠 +熨 +熬 +熹 +燃 +燊 +燎 +燕 +燥 +爆 +爪 +爬 +爱 +爵 +父 +爷 +爸 +爹 +爽 +片 +版 +牌 +牙 +牛 +牟 +牡 +牢 +牧 +物 +牲 +牵 +特 +牺 +牾 +犀 +犁 +犄 +犊 +犒 +犬 +犯 +状 +犷 +犹 +狂 +狄 +狈 +狐 +狒 +狗 +狙 +狞 +狠 +狡 +狩 +独 +狭 +狮 +狰 +狱 +狸 +狼 +猎 +猖 +猛 +猜 +猝 +猥 +猩 +猪 +猫 +猬 +献 +猴 +猾 +猿 +獒 +獗 +獾 +玄 +率 +玉 +王 +玖 +玛 +玟 +玥 +玩 +玫 +玮 +环 +现 +玲 +玳 +玺 +玻 +珀 +珉 +珊 +珍 +珏 +珑 +珜 +珠 +班 +珮 +珲 +珺 +球 +琅 +理 +琉 +琊 +琏 +琐 +琛 +琢 +琥 +琦 +琨 +琪 +琬 +琰 +琳 +琴 +琵 +琶 +琼 +瑁 +瑄 +瑕 +瑙 +瑚 +瑛 +瑜 +瑞 +瑟 +瑰 +瑶 +瑾 +璀 +璃 +璇 +璋 +璐 +璞 +璧 +璨 +瓜 +瓢 +瓣 +瓦 +瓮 +瓯 +瓶 +瓷 +甄 +甘 +甚 +甜 +生 +甥 +用 +甩 +甫 +甬 +甯 +田 +由 +甲 +申 +电 +男 +甸 +町 +画 +畅 +畊 +界 +畏 +畔 +留 +畜 +略 +番 +畴 +畸 +畿 +疃 +疆 +疏 +疑 +疗 +疚 +疝 +疤 +疫 +疯 +疲 +疵 +疹 +疼 +疾 +病 +症 +痉 +痊 +痒 +痕 +痘 +痛 +痣 +痪 +痫 +痰 +痱 +痴 +痹 +痼 +瘀 +瘁 +瘟 +瘠 +瘤 +瘦 +瘩 +瘪 +瘫 +瘸 +瘾 +癌 +癖 +癣 +癫 +登 +白 +百 +皂 +的 +皆 +皇 +皋 +皎 +皓 +皖 +皙 +皮 +皱 +盆 +盈 +益 +盎 +盐 +监 +盒 +盔 +盖 +盗 +盘 +盛 +盟 +目 +盯 +盲 +直 +相 +盹 +盼 +盾 +省 +眈 +眉 +看 +真 +眠 +眨 +眬 +眯 +眶 +眷 +眺 +眼 +着 +睁 +睐 +睛 +睡 +督 +睦 +睫 +睬 +睹 +睾 +睿 +瞄 +瞅 +瞌 +瞎 +瞒 +瞟 +瞧 +瞩 +瞪 +瞬 +瞰 +瞳 +瞻 +瞿 +矗 +矛 +矜 +矢 +矣 +知 +矩 +矫 +短 +矮 +石 +矶 +矸 +矿 +码 +砂 +砌 +砍 +砒 +研 +砖 +砚 +砝 +砥 +砰 +砲 +破 +砷 +砸 +砺 +砾 +础 +硅 +硕 +硚 +硝 +硫 +硬 +确 +碉 +碌 +碍 +碎 +碑 +碗 +碘 +碚 +碟 +碧 +碰 +碱 +碳 +碴 +碾 +磁 +磅 +磊 +磋 +磐 +磕 +磡 +磨 +磴 +磷 +磺 +礁 +示 +礼 +社 +祁 +祈 +祉 +祖 +祛 +祝 +神 +祠 +祢 +祥 +票 +祭 +祯 +祷 +祸 +祺 +禀 +禁 +禄 +禅 +福 +禧 +禹 +禺 +离 +禽 +禾 +秀 +私 +秃 +秆 +秉 +秋 +种 +科 +秒 +秘 +租 +秣 +秤 +秦 +秧 +秩 +积 +称 +秸 +移 +秽 +稀 +程 +稍 +税 +稚 +稠 +稣 +稳 +稻 +稼 +稽 +稿 +穆 +穗 +穴 +究 +穷 +空 +穿 +突 +窃 +窄 +窈 +窍 +窑 +窒 +窕 +窖 +窗 +窘 +窜 +窝 +窟 +窥 +窦 +窨 +窿 +立 +竖 +站 +竞 +竟 +章 +竣 +童 +竭 +端 +竲 +竹 +竺 +竽 +竿 +笃 +笈 +笋 +笑 +笔 +笙 +笛 +符 +笨 +第 +笼 +等 +筋 +筏 +筐 +筑 +筒 +答 +策 +筛 +筱 +筵 +筷 +筹 +签 +简 +箍 +箔 +箕 +算 +管 +箫 +箭 +箱 +篇 +篡 +篪 +篮 +篷 +簇 +簧 +簸 +簿 +籁 +籍 +米 +类 +籽 +粉 +粒 +粕 +粗 +粘 +粟 +粤 +粥 +粪 +粮 +粱 +粹 +粽 +精 +糊 +糕 +糖 +糗 +糙 +糟 +糯 +系 +紊 +素 +索 +紧 +紫 +累 +絮 +綦 +繁 +纠 +红 +纣 +纤 +约 +级 +纪 +纬 +纯 +纰 +纱 +纲 +纳 +纵 +纶 +纷 +纸 +纹 +纺 +纽 +线 +练 +组 +绅 +细 +织 +终 +绊 +绌 +绍 +绎 +经 +绑 +绒 +结 +绕 +绘 +给 +绚 +络 +绝 +绞 +统 +绢 +绣 +继 +绩 +绪 +续 +绮 +绯 +绰 +绳 +维 +绵 +绷 +绸 +综 +绽 +绿 +缀 +缄 +缅 +缆 +缇 +缉 +缓 +缔 +缕 +编 +缘 +缙 +缚 +缜 +缝 +缠 +缤 +缨 +缩 +缪 +缭 +缮 +缰 +缴 +缸 +缺 +罂 +罄 +罐 +网 +罕 +罗 +罚 +罡 +罢 +罩 +罪 +置 +署 +罹 +羁 +羊 +美 +羔 +羚 +羞 +羡 +羣 +群 +羲 +羹 +羽 +羿 +翁 +翅 +翌 +翔 +翘 +翟 +翠 +翡 +翩 +翰 +翱 +翻 +翼 +耀 +老 +考 +耄 +者 +耋 +而 +耍 +耐 +耒 +耕 +耗 +耘 +耳 +耶 +耷 +耸 +耻 +耽 +耿 +聂 +聆 +聊 +聋 +职 +联 +聘 +聚 +聪 +肃 +肆 +肇 +肉 +肋 +肌 +肖 +肘 +肚 +肛 +肝 +肠 +股 +肢 +肤 +肥 +肩 +肪 +肮 +肯 +育 +肴 +肺 +肾 +肿 +胀 +胁 +胃 +胆 +背 +胎 +胖 +胚 +胛 +胜 +胞 +胡 +胤 +胧 +胫 +胯 +胰 +胱 +胳 +胶 +胸 +胺 +能 +脂 +脆 +脉 +脊 +脍 +脏 +脐 +脑 +脖 +脚 +脯 +脱 +脸 +脾 +腆 +腊 +腋 +腌 +腐 +腑 +腓 +腔 +腕 +腥 +腩 +腮 +腰 +腱 +腹 +腺 +腻 +腼 +腾 +腿 +膀 +膊 +膏 +膑 +膛 +膜 +膝 +膨 +膳 +膺 +臀 +臂 +臃 +臆 +臣 +自 +臭 +至 +致 +臻 +舀 +舅 +舆 +舌 +舍 +舒 +舛 +舜 +舞 +舟 +航 +般 +舰 +舱 +舵 +舶 +舸 +船 +艇 +艋 +艘 +良 +艰 +色 +艳 +艺 +艾 +节 +芊 +芋 +芒 +芙 +芜 +芝 +芦 +芪 +芬 +芭 +芮 +芯 +花 +芳 +芷 +芸 +芽 +苇 +苍 +苏 +苑 +苗 +苛 +苟 +苡 +苣 +若 +苦 +苯 +英 +苹 +茁 +茂 +范 +茄 +茅 +茆 +茎 +茗 +茜 +茨 +茫 +茬 +茵 +茶 +茸 +茹 +荃 +荆 +荇 +草 +荐 +荒 +荔 +荚 +荞 +荟 +荡 +荣 +荤 +荧 +荫 +药 +荷 +荼 +莅 +莆 +莉 +莎 +莓 +莘 +莞 +莠 +莫 +莱 +莲 +莴 +获 +莹 +莺 +莽 +菁 +菇 +菊 +菌 +菜 +菠 +菡 +菩 +菱 +菲 +萃 +萄 +萋 +萌 +萍 +萎 +萝 +萤 +营 +萦 +萧 +萨 +萱 +落 +葆 +著 +葛 +葡 +董 +葩 +葫 +葬 +葱 +葵 +蒂 +蒋 +蒙 +蒜 +蒲 +蒸 +蒿 +蓁 +蓄 +蓉 +蓝 +蓟 +蓬 +蔑 +蔓 +蔗 +蔚 +蔡 +蔫 +蔬 +蔷 +蔺 +蔽 +蕉 +蕊 +蕙 +蕲 +蕴 +蕾 +薄 +薇 +薙 +薛 +薪 +薯 +薰 +藏 +藜 +藤 +藩 +藻 +蘑 +虎 +虏 +虐 +虑 +虚 +虞 +虫 +虱 +虹 +虽 +虾 +蚀 +蚁 +蚂 +蚊 +蚌 +蚓 +蚕 +蚝 +蚣 +蚯 +蛀 +蛆 +蛇 +蛋 +蛐 +蛙 +蛛 +蛟 +蛮 +蛰 +蜀 +蜂 +蜇 +蜈 +蜊 +蜒 +蜓 +蜕 +蜗 +蜘 +蜚 +蜜 +蜡 +蜥 +蜴 +蜷 +蜻 +蜿 +蝇 +蝉 +蝎 +蝗 +蝙 +蝠 +蝴 +蝶 +螂 +螃 +融 +螳 +螺 +蟀 +蟋 +蟑 +蟒 +蟹 +蠕 +蠢 +血 +衅 +行 +衍 +衔 +街 +衙 +衡 +衣 +补 +表 +衫 +衬 +衰 +衷 +袁 +袂 +袄 +袆 +袈 +袋 +袍 +袒 +袖 +袜 +被 +袭 +袱 +裁 +裂 +装 +裆 +裔 +裕 +裙 +裟 +裤 +裳 +裴 +裸 +裹 +褂 +褒 +褓 +褚 +褛 +褪 +褴 +褶 +襁 +襄 +襟 +西 +要 +覃 +覆 +见 +观 +规 +觅 +视 +览 +觉 +觊 +觎 +觐 +觑 +角 +解 +觥 +触 +言 +詹 +誉 +誓 +警 +譬 +计 +订 +认 +讧 +讨 +让 +讪 +训 +议 +讯 +记 +讲 +讳 +讶 +许 +讹 +论 +讼 +讽 +设 +访 +诀 +证 +评 +诅 +识 +诈 +诉 +诊 +词 +译 +诓 +试 +诗 +诙 +诚 +话 +诞 +诟 +诠 +诡 +询 +该 +详 +诧 +诩 +诫 +诬 +语 +误 +诱 +诲 +说 +诵 +诶 +请 +诸 +诺 +读 +诽 +课 +诿 +谀 +谁 +调 +谅 +谈 +谊 +谋 +谌 +谍 +谎 +谐 +谑 +谓 +谕 +谙 +谚 +谜 +谢 +谣 +谤 +谦 +谨 +谩 +谬 +谭 +谱 +谴 +谷 +豁 +豆 +豚 +象 +豪 +豫 +豹 +貅 +貉 +貌 +貔 +贝 +贞 +负 +贡 +财 +责 +贤 +败 +账 +货 +质 +贩 +贪 +贫 +贬 +购 +贮 +贯 +贱 +贴 +贵 +贷 +贸 +费 +贺 +贼 +贾 +贿 +赁 +赂 +赃 +资 +赋 +赌 +赎 +赏 +赐 +赔 +赖 +赘 +赚 +赛 +赝 +赞 +赠 +赡 +赢 +赣 +赤 +赦 +赫 +走 +赴 +赵 +赶 +起 +趁 +超 +越 +趋 +趟 +趣 +足 +趴 +趸 +趾 +跃 +跄 +跆 +跌 +跑 +跛 +距 +跟 +跤 +跨 +跪 +路 +跳 +践 +跷 +跺 +跻 +踉 +踊 +踏 +踝 +踞 +踢 +踩 +踪 +踵 +踹 +蹂 +蹄 +蹈 +蹊 +蹚 +蹦 +蹬 +蹭 +蹲 +蹴 +蹶 +蹼 +蹿 +躁 +躏 +身 +躬 +躯 +躲 +躺 +车 +轧 +轨 +轩 +转 +轮 +软 +轰 +轴 +轶 +轻 +载 +轿 +较 +辄 +辅 +辆 +辈 +辉 +辍 +辐 +辑 +输 +辖 +辗 +辘 +辙 +辛 +辜 +辞 +辟 +辣 +辨 +辩 +辫 +辰 +辱 +边 +辽 +达 +迁 +迂 +迄 +迅 +过 +迈 +迎 +运 +近 +返 +还 +这 +进 +远 +违 +连 +迟 +迢 +迥 +迪 +迫 +迭 +述 +迷 +迸 +迹 +追 +退 +送 +适 +逃 +逅 +逆 +选 +逊 +逍 +透 +逐 +递 +途 +逗 +通 +逛 +逝 +逞 +速 +造 +逡 +逢 +逮 +逵 +逸 +逻 +逼 +逾 +遁 +遂 +遇 +遍 +遏 +遐 +道 +遗 +遛 +遢 +遣 +遥 +遨 +遭 +遮 +遴 +遵 +避 +邀 +邂 +邃 +邋 +邑 +邓 +邛 +邝 +邢 +那 +邦 +邪 +邬 +邮 +邯 +邱 +邵 +邹 +邺 +邻 +郁 +郊 +郎 +郑 +郜 +郝 +郡 +部 +郫 +郭 +郸 +都 +鄂 +鄙 +鄞 +鄢 +酋 +酌 +配 +酒 +酗 +酝 +酣 +酪 +酬 +酯 +酱 +酵 +酶 +酷 +酸 +酿 +醇 +醉 +醋 +醍 +醐 +醒 +醛 +采 +釉 +释 +里 +重 +野 +量 +金 +釜 +鉴 +鏖 +鑫 +针 +钉 +钊 +钒 +钓 +钛 +钜 +钝 +钞 +钟 +钠 +钢 +钥 +钦 +钧 +钩 +钮 +钰 +钱 +钴 +钵 +钻 +钾 +铀 +铁 +铂 +铃 +铅 +铆 +铉 +铎 +铐 +铜 +铝 +铠 +铡 +铣 +铨 +铬 +铭 +铮 +铰 +铲 +银 +铸 +铺 +链 +铿 +销 +锁 +锂 +锄 +锅 +锆 +锈 +锋 +锌 +锏 +锐 +错 +锚 +锜 +锟 +锡 +锢 +锣 +锤 +锥 +锦 +锭 +键 +锯 +锰 +锵 +锷 +锹 +锻 +镀 +镁 +镇 +镉 +镊 +镍 +镐 +镑 +镖 +镜 +镯 +镳 +镶 +长 +门 +闪 +闫 +闭 +问 +闯 +闰 +闲 +闳 +间 +闵 +闷 +闸 +闹 +闺 +闻 +闽 +阀 +阁 +阂 +阅 +阎 +阐 +阔 +阙 +阚 +阜 +队 +阮 +阱 +防 +阳 +阴 +阵 +阶 +阻 +阿 +陀 +陂 +附 +际 +陆 +陇 +陈 +陋 +陌 +降 +限 +陕 +陡 +院 +除 +陨 +险 +陪 +陬 +陵 +陶 +陷 +隅 +隆 +隋 +隍 +随 +隐 +隔 +隘 +隙 +障 +隧 +隶 +隼 +隽 +难 +雀 +雁 +雄 +雅 +集 +雇 +雌 +雍 +雏 +雕 +雨 +雪 +雯 +雳 +零 +雷 +雾 +需 +霁 +霄 +霆 +震 +霈 +霉 +霍 +霎 +霏 +霖 +霜 +霞 +露 +霸 +霹 +霾 +靑 +青 +靓 +靖 +静 +靛 +非 +靠 +靡 +面 +革 +靳 +靴 +靶 +鞋 +鞍 +鞘 +鞠 +鞭 +韦 +韧 +韩 +韬 +音 +韵 +韶 +页 +顶 +顷 +项 +顺 +须 +顽 +顾 +顿 +颁 +颂 +预 +颅 +领 +颇 +颈 +颊 +颍 +颐 +频 +颓 +颖 +颗 +题 +颚 +颜 +额 +颠 +颤 +风 +飒 +飓 +飘 +飙 +飚 +飞 +食 +餐 +餮 +饕 +饥 +饪 +饭 +饮 +饰 +饱 +饲 +饵 +饶 +饺 +饼 +饽 +饿 +馀 +馅 +馆 +馈 +馊 +馋 +馑 +馒 +首 +馗 +香 +馥 +馨 +马 +驭 +驯 +驰 +驱 +驳 +驴 +驶 +驻 +驼 +驾 +驿 +骁 +骂 +骄 +骅 +骆 +骇 +骊 +骋 +验 +骏 +骐 +骑 +骗 +骚 +骜 +骤 +骥 +骨 +骷 +骸 +骼 +髅 +髋 +髌 +髓 +高 +髦 +鬼 +魁 +魂 +魄 +魅 +魇 +魏 +魔 +鱼 +鲁 +鲍 +鲜 +鲟 +鲤 +鲨 +鲶 +鲷 +鲸 +鳄 +鳅 +鳌 +鳖 +鳝 +鳞 +鸟 +鸠 +鸡 +鸣 +鸥 +鸦 +鸭 +鸯 +鸳 +鸵 +鸽 +鸾 +鸿 +鹃 +鹅 +鹊 +鹏 +鹜 +鹞 +鹤 +鹭 +鹰 +鹿 +麋 +麒 +麓 +麟 +麦 +麻 +麾 +黄 +黍 +黎 +黏 +黑 +黔 +默 +黛 +黝 +黯 +鼎 +鼓 +鼠 +鼻 +鼾 +齐 +齿 +龄 +龙 +龚 +龟 +a +c +k +t + diff --git a/modules/audio/asr/deepspeech2_aishell/deepspeech_tester.py b/modules/audio/asr/deepspeech2_aishell/deepspeech_tester.py new file mode 100644 index 0000000000000000000000000000000000000000..6b1f89759aa4e156e4e8c9f99d22a5c5b738139f --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/deepspeech_tester.py @@ -0,0 +1,81 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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. +"""Evaluation for DeepSpeech2 model.""" +import os +import sys +from pathlib import Path + +import paddle + +from deepspeech.frontend.featurizer.text_featurizer import TextFeaturizer +from deepspeech.io.collator import SpeechCollator +from deepspeech.models.ds2 import DeepSpeech2Model +from deepspeech.utils import mp_tools +from deepspeech.utils.utility import UpdateConfig + + +class DeepSpeech2Tester: + def __init__(self, config): + self.config = config + self.collate_fn_test = SpeechCollator.from_config(config) + self._text_featurizer = TextFeaturizer(unit_type=config.collator.unit_type, vocab_filepath=None) + + def compute_result_transcripts(self, audio, audio_len, vocab_list, cfg): + result_transcripts = self.model.decode( + audio, + audio_len, + vocab_list, + decoding_method=cfg.decoding_method, + lang_model_path=cfg.lang_model_path, + beam_alpha=cfg.alpha, + beam_beta=cfg.beta, + beam_size=cfg.beam_size, + cutoff_prob=cfg.cutoff_prob, + cutoff_top_n=cfg.cutoff_top_n, + num_processes=cfg.num_proc_bsearch) + #replace the '' with ' ' + result_transcripts = [self._text_featurizer.detokenize(sentence) for sentence in result_transcripts] + + return result_transcripts + + @mp_tools.rank_zero_only + @paddle.no_grad() + def test(self, audio_file): + self.model.eval() + cfg = self.config + collate_fn_test = self.collate_fn_test + audio, _ = collate_fn_test.process_utterance(audio_file=audio_file, transcript=" ") + audio_len = audio.shape[0] + audio = paddle.to_tensor(audio, dtype='float32') + audio_len = paddle.to_tensor(audio_len) + audio = paddle.unsqueeze(audio, axis=0) + vocab_list = collate_fn_test.vocab_list + result_transcripts = self.compute_result_transcripts(audio, audio_len, vocab_list, cfg.decoding) + return result_transcripts + + def setup_model(self): + config = self.config.clone() + with UpdateConfig(config): + config.model.feat_size = self.collate_fn_test.feature_size + config.model.dict_size = self.collate_fn_test.vocab_size + + model = DeepSpeech2Model.from_config(config.model) + self.model = model + + def resume(self, checkpoint): + """Resume from the checkpoint at checkpoints in the output + directory or load a specified checkpoint. + """ + model_dict = paddle.load(checkpoint) + self.model.set_state_dict(model_dict) diff --git a/modules/audio/asr/deepspeech2_aishell/module.py b/modules/audio/asr/deepspeech2_aishell/module.py new file mode 100644 index 0000000000000000000000000000000000000000..3e18e4b000fe90270158b9d0295f770409359497 --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/module.py @@ -0,0 +1,92 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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 +from pathlib import Path +import sys + +import numpy as np +from paddlehub.env import MODULE_HOME +from paddlehub.module.module import moduleinfo, serving +from paddlehub.utils.log import logger +from paddle.utils.download import get_path_from_url + +try: + import swig_decoders +except ModuleNotFoundError as e: + logger.error(e) + logger.info('The module requires additional dependencies: swig_decoders. ' + 'please install via:\n\'git clone https://github.com/PaddlePaddle/DeepSpeech.git ' + '&& cd DeepSpeech && git reset --hard b53171694e7b87abe7ea96870b2f4d8e0e2b1485 ' + '&& cd deepspeech/decoders/ctcdecoder/swig && sh setup.sh\'') + sys.exit(1) + +import paddle +import soundfile as sf + +# TODO: Remove system path when deepspeech can be installed via pip. +sys.path.append(os.path.join(MODULE_HOME, 'deepspeech2_aishell')) +from deepspeech.exps.deepspeech2.config import get_cfg_defaults +from deepspeech.utils.utility import UpdateConfig +from .deepspeech_tester import DeepSpeech2Tester + +LM_URL = 'https://deepspeech.bj.bcebos.com/zh_lm/zh_giga.no_cna_cmn.prune01244.klm' +LM_MD5 = '29e02312deb2e59b3c8686c7966d4fe3' + + +@moduleinfo(name="deepspeech2_aishell", version="1.0.0", summary="", author="Baidu", author_email="", type="audio/asr") +class DeepSpeech2(paddle.nn.Layer): + def __init__(self): + super(DeepSpeech2, self).__init__() + + # resource + res_dir = os.path.join(MODULE_HOME, 'deepspeech2_aishell', 'assets') + conf_file = os.path.join(res_dir, 'conf/deepspeech2.yaml') + checkpoint = os.path.join(res_dir, 'checkpoints/avg_1.pdparams') + # Download LM manually cause its large size. + lm_path = os.path.join(res_dir, 'data', 'lm') + lm_file = os.path.join(lm_path, LM_URL.split('/')[-1]) + if not os.path.isfile(lm_file): + logger.info(f'Downloading lm from {LM_URL}.') + get_path_from_url(url=LM_URL, root_dir=lm_path, md5sum=LM_MD5) + + # config + self.model_type = 'offline' + self.config = get_cfg_defaults(self.model_type) + self.config.merge_from_file(conf_file) + + # TODO: Remove path updating snippet. + with UpdateConfig(self.config): + self.config.collator.mean_std_filepath = os.path.join(res_dir, self.config.collator.mean_std_filepath) + self.config.collator.vocab_filepath = os.path.join(res_dir, self.config.collator.vocab_filepath) + self.config.collator.augmentation_config = os.path.join(res_dir, self.config.collator.augmentation_config) + self.config.decoding.lang_model_path = os.path.join(res_dir, self.config.decoding.lang_model_path) + + # model + self.tester = DeepSpeech2Tester(self.config) + self.tester.setup_model() + self.tester.resume(checkpoint) + + @staticmethod + def check_audio(audio_file): + sig, sample_rate = sf.read(audio_file) + assert sample_rate == 16000, 'Excepting sample rate of input audio is 16000, but got {}'.format(sample_rate) + + @serving + def speech_recognize(self, audio_file, device='cpu'): + assert os.path.isfile(audio_file), 'File not exists: {}'.format(audio_file) + self.check_audio(audio_file) + + paddle.set_device(device) + return self.tester.test(audio_file)[0] diff --git a/modules/audio/asr/deepspeech2_aishell/requirements.txt b/modules/audio/asr/deepspeech2_aishell/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..e6f929d0109a8669c9e67c13eae20e029303f2b6 --- /dev/null +++ b/modules/audio/asr/deepspeech2_aishell/requirements.txt @@ -0,0 +1,12 @@ +# system level: libsnd swig +loguru +yacs +jsonlines +scipy==1.2.1 +sentencepiece +resampy==0.2.2 +SoundFile==0.9.0.post1 +soxbindings +kaldiio +typeguard +editdistance diff --git a/modules/audio/asr/deepspeech2_librispeech/README.md b/modules/audio/asr/deepspeech2_librispeech/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a7d4aee0dcf6b0ac4754e6ba9db580c0a79daeed --- /dev/null +++ b/modules/audio/asr/deepspeech2_librispeech/README.md @@ -0,0 +1,153 @@ +# deepspeech2_librispeech + +|模型名称|deepspeech2_librispeech| +| :--- | :---: | +|类别|语音-语音识别| +|网络|DeepSpeech2| +|数据集|LibriSpeech| +|是否支持Fine-tuning|否| +|模型大小|518MB| +|最新更新日期|2021-10-20| +|数据指标|英文WER 0.072| + +## 一、模型基本信息 + +### 模型介绍 + +DeepSpeech2是百度于2015年提出的适用于英文和中文的end-to-end语音识别模型。deepspeech2_librispeech使用了DeepSpeech2离线模型的结构,模型主要由2层卷积网络和3层GRU组成,并在英文开源语音数据集[LibriSpeech ASR corpus](http://www.openslr.org/12/)进行了预训练,该模型在其测试集上的WER指标是0.072。 + + +

+
+

+ +更多详情请参考[Deep Speech 2: End-to-End Speech Recognition in English and Mandarin](https://arxiv.org/abs/1512.02595) + +## 二、安装 + +- ### 1、系统依赖 + + - libsndfile, swig >= 3.0 + - Linux + ```shell + $ sudo apt-get install libsndfile swig + or + $ sudo yum install libsndfile swig + ``` + - MacOs + ``` + $ brew install libsndfile swig + ``` + +- ### 2、环境依赖 + - swig_decoder: + ``` + git clone https://github.com/paddlepaddle/deepspeech && cd DeepSpeech && git reset --hard b53171694e7b87abe7ea96870b2f4d8e0e2b1485 && cd deepspeech/decoders/ctcdecoder/swig && sh setup.sh + ``` + + - paddlepaddle >= 2.1.0 + + - paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) + +- ### 3、安装 + + - ```shell + $ hub install deepspeech2_librispeech + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) + + +## 三、模型API预测 + +- ### 1、预测代码示例 + + ```python + import paddlehub as hub + + # 采样率为16k,格式为wav的英文语音音频 + wav_file = '/PATH/TO/AUDIO' + + model = hub.Module( + name='deepspeech2_librispeech', + version='1.0.0') + text = model.speech_recognize(wav_file) + + print(text) + ``` + +- ### 2、API + - ```python + def check_audio(audio_file) + ``` + - 检查输入音频格式和采样率是否满足为16000 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + + - ```python + def speech_recognize( + audio_file, + device='cpu', + ) + ``` + - 将输入的音频识别成文字 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + - `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。 + + - **返回** + + - `text`:str类型,返回输入音频的识别文字结果。 + + +## 四、服务部署 + +- PaddleHub Serving可以部署一个在线的语音识别服务。 + +- ### 第一步:启动PaddleHub Serving + + - ```shell + $ hub serving start -m deepspeech2_librispeech + ``` + + - 这样就完成了一个语音识别服务化API的部署,默认端口号为8866。 + + - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。 + +- ### 第二步:发送预测请求 + + - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果 + + - ```python + import requests + import json + + # 需要识别的音频的存放路径,确保部署服务的机器可访问 + file = '/path/to/input.wav' + + # 以key的方式指定text传入预测方法的时的参数,此例中为"audio_file" + data = {"audio_file": file} + + # 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip + url = "http://127.0.0.1:8866/predict/deepspeech2_librispeech" + + # 指定post请求的headers为application/json方式 + headers = {"Content-Type": "application/json"} + + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) + ``` + +## 五、更新历史 + +* 1.0.0 + + 初始发布 + + ```shell + $ hub install deepspeech2_librispeech + ``` diff --git a/modules/audio/asr/deepspeech2_librispeech/__init__.py b/modules/audio/asr/deepspeech2_librispeech/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/audio/asr/deepspeech2_librispeech/assets/conf/augmentation.json b/modules/audio/asr/deepspeech2_librispeech/assets/conf/augmentation.json new file mode 100644 index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93 --- /dev/null +++ b/modules/audio/asr/deepspeech2_librispeech/assets/conf/augmentation.json @@ -0,0 +1 @@ +{} diff --git a/modules/audio/asr/deepspeech2_librispeech/assets/conf/deepspeech2.yaml b/modules/audio/asr/deepspeech2_librispeech/assets/conf/deepspeech2.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c5c2e4668239c63ff457eb5b75dbeb33039da891 --- /dev/null +++ b/modules/audio/asr/deepspeech2_librispeech/assets/conf/deepspeech2.yaml @@ -0,0 +1,68 @@ +# https://yaml.org/type/float.html +data: + train_manifest: data/manifest.train + dev_manifest: data/manifest.dev-clean + test_manifest: data/manifest.test-clean + min_input_len: 0.0 + max_input_len: 30.0 # second + min_output_len: 0.0 + max_output_len: .inf + min_output_input_ratio: 0.00 + max_output_input_ratio: .inf + +collator: + batch_size: 20 + mean_std_filepath: data/mean_std.json + unit_type: char + vocab_filepath: data/vocab.txt + augmentation_config: conf/augmentation.json + random_seed: 0 + spm_model_prefix: + spectrum_type: linear + target_sample_rate: 16000 + max_freq: None + n_fft: None + stride_ms: 10.0 + window_ms: 20.0 + delta_delta: False + dither: 1.0 + use_dB_normalization: True + target_dB: -20 + random_seed: 0 + keep_transcription_text: False + sortagrad: True + shuffle_method: batch_shuffle + num_workers: 2 + +model: + num_conv_layers: 2 + num_rnn_layers: 3 + rnn_layer_size: 2048 + use_gru: False + share_rnn_weights: True + blank_id: 0 + ctc_grad_norm_type: instance + +training: + n_epoch: 50 + accum_grad: 1 + lr: 1e-3 + lr_decay: 0.83 + weight_decay: 1e-06 + global_grad_clip: 5.0 + log_interval: 100 + checkpoint: + kbest_n: 50 + latest_n: 5 + +decoding: + batch_size: 128 + error_rate_type: wer + decoding_method: ctc_beam_search + lang_model_path: data/lm/common_crawl_00.prune01111.trie.klm + alpha: 1.9 + beta: 0.3 + beam_size: 500 + cutoff_prob: 1.0 + cutoff_top_n: 40 + num_proc_bsearch: 8 diff --git a/modules/audio/asr/deepspeech2_librispeech/deepspeech_tester.py b/modules/audio/asr/deepspeech2_librispeech/deepspeech_tester.py new file mode 100644 index 0000000000000000000000000000000000000000..6b1f89759aa4e156e4e8c9f99d22a5c5b738139f --- /dev/null +++ b/modules/audio/asr/deepspeech2_librispeech/deepspeech_tester.py @@ -0,0 +1,81 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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. +"""Evaluation for DeepSpeech2 model.""" +import os +import sys +from pathlib import Path + +import paddle + +from deepspeech.frontend.featurizer.text_featurizer import TextFeaturizer +from deepspeech.io.collator import SpeechCollator +from deepspeech.models.ds2 import DeepSpeech2Model +from deepspeech.utils import mp_tools +from deepspeech.utils.utility import UpdateConfig + + +class DeepSpeech2Tester: + def __init__(self, config): + self.config = config + self.collate_fn_test = SpeechCollator.from_config(config) + self._text_featurizer = TextFeaturizer(unit_type=config.collator.unit_type, vocab_filepath=None) + + def compute_result_transcripts(self, audio, audio_len, vocab_list, cfg): + result_transcripts = self.model.decode( + audio, + audio_len, + vocab_list, + decoding_method=cfg.decoding_method, + lang_model_path=cfg.lang_model_path, + beam_alpha=cfg.alpha, + beam_beta=cfg.beta, + beam_size=cfg.beam_size, + cutoff_prob=cfg.cutoff_prob, + cutoff_top_n=cfg.cutoff_top_n, + num_processes=cfg.num_proc_bsearch) + #replace the '' with ' ' + result_transcripts = [self._text_featurizer.detokenize(sentence) for sentence in result_transcripts] + + return result_transcripts + + @mp_tools.rank_zero_only + @paddle.no_grad() + def test(self, audio_file): + self.model.eval() + cfg = self.config + collate_fn_test = self.collate_fn_test + audio, _ = collate_fn_test.process_utterance(audio_file=audio_file, transcript=" ") + audio_len = audio.shape[0] + audio = paddle.to_tensor(audio, dtype='float32') + audio_len = paddle.to_tensor(audio_len) + audio = paddle.unsqueeze(audio, axis=0) + vocab_list = collate_fn_test.vocab_list + result_transcripts = self.compute_result_transcripts(audio, audio_len, vocab_list, cfg.decoding) + return result_transcripts + + def setup_model(self): + config = self.config.clone() + with UpdateConfig(config): + config.model.feat_size = self.collate_fn_test.feature_size + config.model.dict_size = self.collate_fn_test.vocab_size + + model = DeepSpeech2Model.from_config(config.model) + self.model = model + + def resume(self, checkpoint): + """Resume from the checkpoint at checkpoints in the output + directory or load a specified checkpoint. + """ + model_dict = paddle.load(checkpoint) + self.model.set_state_dict(model_dict) diff --git a/modules/audio/asr/deepspeech2_librispeech/module.py b/modules/audio/asr/deepspeech2_librispeech/module.py new file mode 100644 index 0000000000000000000000000000000000000000..c05d484f95002f1daf532cab9128aa0c592e1dce --- /dev/null +++ b/modules/audio/asr/deepspeech2_librispeech/module.py @@ -0,0 +1,93 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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 +from pathlib import Path +import sys + +import numpy as np +from paddlehub.env import MODULE_HOME +from paddlehub.module.module import moduleinfo, serving +from paddlehub.utils.log import logger +from paddle.utils.download import get_path_from_url + +try: + import swig_decoders +except ModuleNotFoundError as e: + logger.error(e) + logger.info('The module requires additional dependencies: swig_decoders. ' + 'please install via:\n\'git clone https://github.com/PaddlePaddle/DeepSpeech.git ' + '&& cd DeepSpeech && git reset --hard b53171694e7b87abe7ea96870b2f4d8e0e2b1485 ' + '&& cd deepspeech/decoders/ctcdecoder/swig && sh setup.sh\'') + sys.exit(1) + +import paddle +import soundfile as sf + +# TODO: Remove system path when deepspeech can be installed via pip. +sys.path.append(os.path.join(MODULE_HOME, 'deepspeech2_librispeech')) +from deepspeech.exps.deepspeech2.config import get_cfg_defaults +from deepspeech.utils.utility import UpdateConfig +from .deepspeech_tester import DeepSpeech2Tester + +LM_URL = 'https://deepspeech.bj.bcebos.com/en_lm/common_crawl_00.prune01111.trie.klm' +LM_MD5 = '099a601759d467cd0a8523ff939819c5' + + +@moduleinfo( + name="deepspeech2_librispeech", version="1.0.0", summary="", author="Baidu", author_email="", type="audio/asr") +class DeepSpeech2(paddle.nn.Layer): + def __init__(self): + super(DeepSpeech2, self).__init__() + + # resource + res_dir = os.path.join(MODULE_HOME, 'deepspeech2_librispeech', 'assets') + conf_file = os.path.join(res_dir, 'conf/deepspeech2.yaml') + checkpoint = os.path.join(res_dir, 'checkpoints/avg_1.pdparams') + # Download LM manually cause its large size. + lm_path = os.path.join(res_dir, 'data', 'lm') + lm_file = os.path.join(lm_path, LM_URL.split('/')[-1]) + if not os.path.isfile(lm_file): + logger.info(f'Downloading lm from {LM_URL}.') + get_path_from_url(url=LM_URL, root_dir=lm_path, md5sum=LM_MD5) + + # config + self.model_type = 'offline' + self.config = get_cfg_defaults(self.model_type) + self.config.merge_from_file(conf_file) + + # TODO: Remove path updating snippet. + with UpdateConfig(self.config): + self.config.collator.mean_std_filepath = os.path.join(res_dir, self.config.collator.mean_std_filepath) + self.config.collator.vocab_filepath = os.path.join(res_dir, self.config.collator.vocab_filepath) + self.config.collator.augmentation_config = os.path.join(res_dir, self.config.collator.augmentation_config) + self.config.decoding.lang_model_path = os.path.join(res_dir, self.config.decoding.lang_model_path) + + # model + self.tester = DeepSpeech2Tester(self.config) + self.tester.setup_model() + self.tester.resume(checkpoint) + + @staticmethod + def check_audio(audio_file): + sig, sample_rate = sf.read(audio_file) + assert sample_rate == 16000, 'Excepting sample rate of input audio is 16000, but got {}'.format(sample_rate) + + @serving + def speech_recognize(self, audio_file, device='cpu'): + assert os.path.isfile(audio_file), 'File not exists: {}'.format(audio_file) + self.check_audio(audio_file) + + paddle.set_device(device) + return self.tester.test(audio_file)[0] diff --git a/modules/audio/asr/deepspeech2_librispeech/requirements.txt b/modules/audio/asr/deepspeech2_librispeech/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..66d8ba6c0edcbc893f3722aadabc5d7e0fa7d669 --- /dev/null +++ b/modules/audio/asr/deepspeech2_librispeech/requirements.txt @@ -0,0 +1,11 @@ +loguru +yacs +jsonlines +scipy==1.2.1 +sentencepiece +resampy==0.2.2 +SoundFile==0.9.0.post1 +soxbindings +kaldiio +typeguard +editdistance diff --git a/modules/audio/asr/u2_conformer_aishell/README.md b/modules/audio/asr/u2_conformer_aishell/README.md new file mode 100644 index 0000000000000000000000000000000000000000..bd0bc64f7d200d22ad6d437541d92fdb4c405610 --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/README.md @@ -0,0 +1,156 @@ +# u2_conformer_aishell + +|模型名称|u2_conformer_aishell| +| :--- | :---: | +|类别|语音-语音识别| +|网络|DeepSpeech2| +|数据集|AISHELL-1| +|是否支持Fine-tuning|否| +|模型大小|284MB| +|最新更新日期|2021-11-01| +|数据指标|中文CER 0.055| + +## 一、模型基本信息 + +### 模型介绍 + +U2 Conformer模型是一种适用于英文和中文的end-to-end语音识别模型。u2_conformer_aishell采用了conformer的encoder和transformer的decoder的模型结构,并且使用了ctc-prefix beam search的方式进行一遍打分,再利用attention decoder进行二次打分的方式进行解码来得到最终结果。 + +u2_conformer_aishell在中文普通话开源语音数据集[AISHELL-1](http://www.aishelltech.com/kysjcp)进行了预训练,该模型在其测试集上的CER指标是0.055257。 + +

+
+

+ +

+
+

+ +更多详情请参考: +- [Unified Streaming and Non-streaming Two-pass End-to-end Model for Speech Recognition](https://arxiv.org/abs/2012.05481) +- [Conformer: Convolution-augmented Transformer for Speech Recognition](https://arxiv.org/abs/2005.08100) + +## 二、安装 + +- ### 1、系统依赖 + + - libsndfile + - Linux + ```shell + $ sudo apt-get install libsndfile + or + $ sudo yum install libsndfile + ``` + - MacOs + ``` + $ brew install libsndfile + ``` + +- ### 2、环境依赖 + + - paddlepaddle >= 2.1.0 + + - paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) + +- ### 3、安装 + + - ```shell + $ hub install u2_conformer_aishell + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) + + +## 三、模型API预测 + +- ### 1、预测代码示例 + + ```python + import paddlehub as hub + + # 采样率为16k,格式为wav的中文语音音频 + wav_file = '/PATH/TO/AUDIO' + + model = hub.Module( + name='u2_conformer_aishell', + version='1.0.0') + text = model.speech_recognize(wav_file) + + print(text) + ``` + +- ### 2、API + - ```python + def check_audio(audio_file) + ``` + - 检查输入音频格式和采样率是否满足为16000 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + + - ```python + def speech_recognize( + audio_file, + device='cpu', + ) + ``` + - 将输入的音频识别成文字 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + - `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。 + + - **返回** + + - `text`:str类型,返回输入音频的识别文字结果。 + + +## 四、服务部署 + +- PaddleHub Serving可以部署一个在线的语音识别服务。 + +- ### 第一步:启动PaddleHub Serving + + - ```shell + $ hub serving start -m u2_conformer_aishell + ``` + + - 这样就完成了一个语音识别服务化API的部署,默认端口号为8866。 + + - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。 + +- ### 第二步:发送预测请求 + + - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果 + + - ```python + import requests + import json + + # 需要识别的音频的存放路径,确保部署服务的机器可访问 + file = '/path/to/input.wav' + + # 以key的方式指定text传入预测方法的时的参数,此例中为"audio_file" + data = {"audio_file": file} + + # 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip + url = "http://127.0.0.1:8866/predict/u2_conformer_aishell" + + # 指定post请求的headers为application/json方式 + headers = {"Content-Type": "application/json"} + + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) + ``` + +## 五、更新历史 + +* 1.0.0 + + 初始发布 + + ```shell + $ hub install u2_conformer_aishell + ``` diff --git a/modules/audio/asr/u2_conformer_aishell/__init__.py b/modules/audio/asr/u2_conformer_aishell/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/audio/asr/u2_conformer_aishell/assets/conf/augmentation.json b/modules/audio/asr/u2_conformer_aishell/assets/conf/augmentation.json new file mode 100644 index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93 --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/assets/conf/augmentation.json @@ -0,0 +1 @@ +{} diff --git a/modules/audio/asr/u2_conformer_aishell/assets/conf/conformer.yaml b/modules/audio/asr/u2_conformer_aishell/assets/conf/conformer.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b6925dfcf4ddb1a8f1b3d2dac2367e58ecabaa74 --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/assets/conf/conformer.yaml @@ -0,0 +1,102 @@ +data: + train_manifest: data/manifest.train + dev_manifest: data/manifest.dev + test_manifest: data/manifest.test + min_input_len: 0.5 + max_input_len: 20.0 # second + min_output_len: 0.0 + max_output_len: 400.0 + min_output_input_ratio: 0.05 + max_output_input_ratio: 10.0 + +collator: + vocab_filepath: data/vocab.txt + unit_type: 'char' + spm_model_prefix: '' + augmentation_config: conf/augmentation.json + batch_size: 64 + raw_wav: True # use raw_wav or kaldi feature + spectrum_type: fbank #linear, mfcc, fbank + feat_dim: 80 + delta_delta: False + dither: 1.0 + target_sample_rate: 16000 + max_freq: None + n_fft: None + stride_ms: 10.0 + window_ms: 25.0 + use_dB_normalization: False + target_dB: -20 + random_seed: 0 + keep_transcription_text: False + sortagrad: True + shuffle_method: batch_shuffle + num_workers: 2 + +decoding: + alpha: 2.5 + batch_size: 128 + beam_size: 10 + beta: 0.3 + ctc_weight: 0.0 + cutoff_prob: 1.0 + cutoff_top_n: 0 + decoding_chunk_size: -1 + decoding_method: attention + error_rate_type: cer + lang_model_path: data/lm/common_crawl_00.prune01111.trie.klm + num_decoding_left_chunks: -1 + num_proc_bsearch: 8 + simulate_streaming: False +model: + cmvn_file: data/mean_std.json + cmvn_file_type: json + decoder: transformer + decoder_conf: + attention_heads: 4 + dropout_rate: 0.1 + linear_units: 2048 + num_blocks: 6 + positional_dropout_rate: 0.1 + self_attention_dropout_rate: 0.0 + src_attention_dropout_rate: 0.0 + encoder: conformer + encoder_conf: + activation_type: swish + attention_dropout_rate: 0.0 + attention_heads: 4 + cnn_module_kernel: 15 + dropout_rate: 0.1 + input_layer: conv2d + linear_units: 2048 + normalize_before: True + num_blocks: 12 + output_size: 256 + pos_enc_layer_type: rel_pos + positional_dropout_rate: 0.1 + selfattention_layer_type: rel_selfattn + use_cnn_module: True + input_dim: 0 + model_conf: + ctc_weight: 0.3 + ctc_dropoutrate: 0.0 + ctc_grad_norm_type: instance + length_normalized_loss: False + lsm_weight: 0.1 + output_dim: 0 +training: + accum_grad: 2 + global_grad_clip: 5.0 + log_interval: 100 + n_epoch: 300 + optim: adam + optim_conf: + lr: 0.002 + weight_decay: 1e-06 + scheduler: warmuplr + scheduler_conf: + lr_decay: 1.0 + warmup_steps: 25000 + checkpoint: + kbest_n: 50 + latest_n: 5 diff --git a/modules/audio/asr/u2_conformer_aishell/assets/data/mean_std.json b/modules/audio/asr/u2_conformer_aishell/assets/data/mean_std.json new file mode 100644 index 0000000000000000000000000000000000000000..fff0005df2937e09e3651089b55decf0f58dc47b --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/assets/data/mean_std.json @@ -0,0 +1 @@ +{"mean_stat": [533749178.75492024, 537379151.9412827, 553560684.251823, 587164297.7995199, 631868827.5506272, 662598279.7375823, 684377628.7270963, 695391900.076011, 692470493.5234187, 679434068.1698124, 666124153.9164762, 656323498.7897255, 665750586.0282139, 678693518.7836165, 681921713.5434498, 679622373.0941861, 669891550.4909347, 656595089.7941492, 653838531.0994304, 637678601.7858486, 628412248.7348012, 644835299.462052, 638840698.1892803, 646181879.4332589, 639724189.2981818, 642757470.3933163, 637471382.8647255, 642368839.4687729, 643414999.4559816, 647384269.1630985, 649348352.9727564, 649293860.0141628, 650234047.7200857, 654485430.6703687, 660474314.9996675, 667417041.2224753, 673157601.3226709, 675674470.304284, 675124085.6890339, 668017589.4583111, 670061307.6169846, 662625614.6886193, 663144526.4351237, 662504003.7634674, 666413530.1149732, 672263295.5639057, 678483738.2530766, 685387098.3034457, 692570857.529439, 699066050.4399202, 700784878.5879861, 701201520.50868, 702666292.305144, 705443439.2278953, 706070270.9023902, 705988909.8337733, 702843339.0362502, 699318566.4701376, 696089900.3030818, 687559674.541517, 675279201.9502573, 663676352.2301354, 662963751.7464145, 664300133.8414352, 666095384.4212626, 671682092.7777623, 676652386.6696675, 680097668.2490273, 683810023.0071762, 688701544.3655603, 692082724.9923568, 695788849.6782106, 701085780.0070009, 706389529.7959046, 711492753.1344281, 717637923.73355, 719691678.2081754, 715810733.4964175, 696362890.4862831, 604649423.9932467], "var_stat": [5413314850.92017, 5559847287.933615, 6150990253.613769, 6921242242.585692, 7999776708.347419, 8789877370.390867, 9405801233.462742, 9768050110.323652, 9759783206.942099, 9430647265.679018, 9090547056.72849, 8873147345.425886, 9155912918.518642, 9542539953.84679, 9653547618.806402, 9593434792.936714, 9316633026.420147, 8959273999.588833, 8863548125.445953, 8450615911.730164, 8211598033.615433, 8587083872.162145, 8432613574.987708, 8583943640.722399, 8401731458.393406, 8439359231.367369, 8293779802.711447, 8401506934.147289, 8427506949.839874, 8525176341.071184, 8577080109.482346, 8575106681.347283, 8594987363.896849, 8701703698.13697, 8854967559.695303, 9029484499.828356, 9168774993.437275, 9221457044.693224, 9194525496.858181, 8997085233.031223, 9024585998.805922, 8819398159.92156, 8807895653.788486, 8777245867.886335, 8869681168.825321, 9017397167.041729, 9173402827.38027, 9345595113.30765, 9530638054.282673, 9701241750.610865, 9749002220.142677, 9762753891.356327, 9802020174.527405, 9874432300.977995, 9883303068.689241, 9873499335.610315, 9780680890.924107, 9672603363.913414, 9569436761.47915, 9321842521.985804, 8968140697.297707, 8646348638.918655, 8616965457.523136, 8648620220.395298, 8702086138.675117, 8859213220.99842, 8999405313.087536, 9105949447.399998, 9220413227.016796, 9358601578.269663, 9451405873.00428, 9552727080.824707, 9695443509.54488, 9836687193.669691, 9970962418.410656, 10135881535.317768, 10189390919.400673, 10070483257.345238, 9532953296.22076, 7261219636.045063], "frame_num": 54068199} diff --git a/modules/audio/asr/u2_conformer_aishell/assets/data/vocab.txt b/modules/audio/asr/u2_conformer_aishell/assets/data/vocab.txt new file mode 100644 index 0000000000000000000000000000000000000000..bf3f823b382998d734b885bb4c9718222b01d3fd --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/assets/data/vocab.txt @@ -0,0 +1,4233 @@ + + +一 +丁 +七 +万 +丈 +三 +上 +下 +不 +与 +丐 +丑 +专 +且 +世 +丘 +丙 +业 +丛 +东 +丝 +丞 +丢 +两 +严 +丧 +个 +丫 +中 +丰 +串 +临 +丸 +丹 +为 +主 +丽 +举 +乃 +久 +么 +义 +之 +乌 +乍 +乎 +乏 +乐 +乒 +乓 +乔 +乖 +乘 +乙 +九 +乞 +也 +习 +乡 +书 +买 +乱 +乳 +乾 +了 +予 +争 +事 +二 +于 +亏 +云 +互 +五 +井 +亚 +些 +亟 +亡 +亢 +交 +亥 +亦 +产 +亨 +亩 +享 +京 +亭 +亮 +亲 +亳 +亵 +人 +亿 +什 +仁 +仄 +仅 +仇 +今 +介 +仍 +从 +仑 +仓 +仔 +仕 +他 +仗 +付 +仙 +仡 +代 +令 +以 +仨 +仪 +们 +仰 +仲 +件 +价 +任 +份 +仿 +企 +伉 +伊 +伍 +伎 +伏 +伐 +休 +众 +优 +伙 +会 +伞 +伟 +传 +伢 +伤 +伦 +伪 +伯 +估 +伴 +伶 +伸 +伺 +似 +伽 +佃 +但 +位 +低 +住 +佐 +佑 +体 +何 +佘 +余 +佛 +作 +佟 +你 +佣 +佩 +佬 +佳 +佶 +佼 +使 +侃 +侄 +侈 +例 +侍 +侑 +侗 +供 +依 +侠 +侣 +侥 +侦 +侧 +侨 +侬 +侮 +侯 +侵 +便 +促 +俄 +俊 +俏 +俐 +俗 +俘 +俚 +保 +俞 +信 +俨 +俩 +俪 +俭 +修 +俯 +俱 +俸 +俺 +俾 +倍 +倒 +倘 +候 +倚 +倜 +借 +倡 +倦 +倩 +倪 +债 +值 +倾 +假 +偏 +做 +停 +健 +偶 +偷 +偿 +傅 +傍 +傥 +储 +催 +傲 +傻 +像 +僚 +僧 +僮 +僵 +僻 +儒 +儿 +兀 +允 +元 +兄 +充 +兆 +先 +光 +克 +免 +兑 +兔 +兖 +党 +兜 +兢 +入 +全 +八 +公 +六 +兰 +共 +关 +兴 +兵 +其 +具 +典 +兹 +养 +兼 +兽 +冀 +内 +冈 +冉 +册 +再 +冒 +冕 +写 +军 +农 +冠 +冤 +冥 +冬 +冯 +冰 +冲 +决 +况 +冶 +冷 +冻 +净 +凄 +准 +凇 +凉 +凋 +凌 +减 +凑 +凝 +几 +凡 +凤 +凭 +凯 +凰 +凳 +凶 +凸 +凹 +出 +击 +函 +凿 +刀 +刁 +刃 +分 +切 +刊 +刑 +划 +列 +刘 +则 +刚 +创 +初 +删 +判 +刨 +利 +别 +刮 +到 +制 +刷 +券 +刹 +刺 +刻 +剁 +剂 +剃 +削 +前 +剐 +剑 +剔 +剖 +剥 +剧 +剩 +剪 +副 +割 +剽 +剿 +劈 +力 +劝 +办 +功 +加 +务 +劣 +动 +助 +努 +劫 +励 +劲 +劳 +劵 +势 +勃 +勇 +勉 +勋 +勒 +勘 +募 +勤 +勺 +勾 +勿 +匀 +包 +匆 +匈 +匕 +化 +北 +匙 +匝 +匠 +匡 +匣 +匪 +匮 +匹 +区 +医 +匾 +匿 +十 +千 +升 +午 +卉 +半 +华 +协 +卑 +卒 +卓 +单 +卖 +南 +博 +卜 +卞 +占 +卡 +卢 +卤 +卦 +卧 +卫 +卯 +印 +危 +卲 +即 +却 +卵 +卷 +卸 +卿 +厂 +厄 +厅 +历 +厉 +压 +厌 +厕 +厘 +厚 +原 +厢 +厥 +厦 +厨 +厩 +厮 +去 +县 +参 +又 +叉 +及 +友 +双 +反 +发 +叔 +取 +受 +变 +叙 +叛 +叠 +口 +古 +句 +另 +叨 +叩 +只 +叫 +召 +叭 +叮 +可 +台 +叱 +史 +右 +叵 +叶 +号 +司 +叹 +叼 +吁 +吃 +各 +吆 +合 +吉 +吊 +同 +名 +后 +吏 +吐 +向 +吓 +吕 +吗 +君 +吝 +吞 +吟 +否 +吧 +吨 +吩 +含 +听 +吭 +启 +吴 +吵 +吸 +吹 +吻 +吼 +吾 +吿 +呀 +呃 +呆 +呈 +告 +呐 +呕 +呗 +员 +呛 +呜 +呢 +呦 +周 +呲 +味 +呵 +呼 +命 +咀 +咄 +咋 +和 +咎 +咏 +咐 +咒 +咔 +咕 +咖 +咚 +咣 +咤 +咧 +咨 +咪 +咫 +咬 +咯 +咱 +咳 +咸 +咽 +哀 +品 +哄 +哆 +哇 +哈 +哉 +响 +哎 +哑 +哒 +哗 +哟 +哥 +哦 +哨 +哪 +哭 +哲 +哺 +哼 +哽 +唁 +唇 +唉 +唏 +唐 +唠 +唤 +唬 +售 +唯 +唱 +唾 +啃 +商 +啊 +啕 +啡 +啤 +啥 +啦 +啧 +啪 +啬 +啰 +啵 +啶 +啸 +啼 +喀 +喂 +善 +喆 +喇 +喉 +喊 +喔 +喘 +喜 +喝 +喧 +喱 +喵 +喷 +喻 +喽 +嗅 +嗑 +嗒 +嗓 +嗡 +嗣 +嗤 +嗦 +嗨 +嗬 +嗯 +嗲 +嗷 +嗽 +嘀 +嘉 +嘎 +嘘 +嘛 +嘟 +嘭 +嘱 +嘲 +嘴 +嘻 +噎 +器 +噩 +噪 +噬 +噱 +噼 +嚎 +嚏 +嚓 +嚣 +嚷 +嚼 +囊 +囚 +四 +回 +因 +团 +囤 +囧 +园 +困 +围 +固 +国 +图 +圆 +圈 +土 +圣 +在 +圩 +圪 +圭 +地 +圳 +场 +圾 +址 +坂 +均 +坊 +坍 +坎 +坏 +坐 +坑 +块 +坚 +坛 +坝 +坞 +坟 +坠 +坡 +坤 +坦 +坪 +坯 +坷 +垂 +垃 +垄 +垅 +型 +垌 +垒 +垛 +垢 +垣 +垤 +垦 +垫 +垮 +埃 +埋 +城 +埔 +埜 +域 +培 +基 +堂 +堆 +堕 +堡 +堤 +堪 +堰 +堵 +塌 +塑 +塔 +塘 +塞 +填 +塬 +塾 +境 +墅 +墓 +墙 +增 +墟 +墨 +墩 +壁 +壑 +壕 +壤 +士 +壮 +声 +壳 +壶 +壹 +处 +备 +复 +夏 +夕 +外 +夙 +多 +夜 +够 +大 +天 +太 +夫 +夭 +央 +夯 +失 +头 +夷 +夸 +夹 +夺 +奂 +奇 +奈 +奉 +奋 +奎 +奏 +契 +奔 +奕 +奖 +套 +奘 +奚 +奠 +奢 +奥 +女 +奴 +奶 +奸 +她 +好 +如 +妃 +妄 +妆 +妇 +妈 +妊 +妍 +妒 +妖 +妙 +妞 +妤 +妥 +妧 +妨 +妩 +妮 +妯 +妹 +妻 +姆 +姊 +始 +姐 +姑 +姓 +委 +姗 +姚 +姜 +姝 +姣 +姥 +姨 +姬 +姻 +姿 +威 +娃 +娄 +娅 +娇 +娌 +娘 +娜 +娟 +娠 +娥 +娩 +娱 +娴 +娶 +娼 +婀 +婆 +婉 +婕 +婚 +婧 +婪 +婴 +婵 +婶 +婷 +婿 +媒 +媚 +媛 +媞 +媲 +媳 +嫁 +嫂 +嫉 +嫌 +嫔 +嫖 +嫚 +嫣 +嫦 +嫩 +嬉 +嬛 +嬷 +孀 +子 +孔 +孕 +字 +存 +孙 +孚 +孜 +孝 +孟 +孢 +季 +孤 +学 +孩 +孪 +孰 +孱 +孵 +孺 +宁 +它 +宅 +宇 +守 +安 +宋 +完 +宏 +宓 +宕 +宗 +官 +宙 +定 +宛 +宜 +宝 +实 +宠 +审 +客 +宣 +室 +宦 +宪 +宫 +宰 +害 +宴 +宵 +家 +宸 +容 +宽 +宾 +宿 +寂 +寄 +寅 +密 +寇 +富 +寐 +寒 +寓 +寝 +寞 +察 +寡 +寥 +寨 +寮 +寰 +寸 +对 +寺 +寻 +导 +寿 +封 +射 +将 +尊 +小 +少 +尔 +尖 +尘 +尚 +尝 +尤 +尧 +尬 +就 +尴 +尸 +尹 +尺 +尼 +尽 +尾 +尿 +局 +屁 +层 +居 +屈 +届 +屋 +屌 +屎 +屏 +屑 +展 +属 +屠 +屡 +履 +屯 +山 +屹 +屿 +岁 +岂 +岌 +岐 +岔 +岖 +岗 +岚 +岛 +岩 +岬 +岭 +岱 +岳 +岷 +岸 +峁 +峙 +峡 +峥 +峨 +峪 +峭 +峰 +峻 +崂 +崃 +崇 +崎 +崔 +崖 +崛 +崧 +崩 +崭 +崴 +嵋 +嵌 +嵘 +嵛 +嵩 +嶝 +巅 +巍 +川 +州 +巡 +巢 +工 +左 +巧 +巨 +巩 +巫 +差 +己 +已 +巴 +巷 +巾 +巿 +币 +市 +布 +帅 +帆 +师 +希 +帐 +帕 +帖 +帘 +帚 +帜 +帝 +带 +席 +帮 +帷 +常 +帼 +帽 +幂 +幄 +幅 +幌 +幕 +幢 +干 +平 +年 +并 +幸 +幺 +幻 +幼 +幽 +广 +庄 +庆 +庇 +床 +序 +庐 +库 +应 +底 +店 +庙 +庚 +府 +庞 +废 +度 +座 +庭 +庵 +康 +庸 +庾 +廉 +廊 +廓 +廖 +延 +廷 +建 +开 +异 +弃 +弄 +弈 +弊 +式 +弓 +引 +弗 +弘 +弛 +弟 +张 +弥 +弦 +弧 +弩 +弯 +弱 +弹 +强 +归 +当 +录 +彝 +形 +彤 +彦 +彩 +彪 +彬 +彭 +彰 +影 +彷 +役 +彻 +彼 +彿 +往 +征 +径 +待 +徇 +很 +徉 +徊 +律 +徐 +徒 +得 +徘 +徙 +御 +循 +微 +德 +徽 +心 +必 +忆 +忌 +忍 +忐 +忑 +志 +忘 +忙 +忠 +忧 +忪 +快 +忱 +念 +忽 +怀 +态 +怂 +怎 +怒 +怕 +怖 +怜 +思 +怠 +怡 +急 +怦 +性 +怨 +怪 +怯 +怵 +总 +恋 +恍 +恐 +恒 +恙 +恢 +恣 +恤 +恨 +恩 +恪 +恬 +恭 +息 +恰 +恳 +恶 +恸 +恺 +恼 +恿 +悄 +悉 +悍 +悔 +悖 +悚 +悟 +悠 +患 +悦 +您 +悬 +悯 +悲 +悴 +悸 +悼 +情 +惊 +惋 +惑 +惕 +惚 +惜 +惟 +惠 +惦 +惧 +惨 +惩 +惫 +惬 +惮 +惯 +惰 +想 +惶 +惹 +惺 +愁 +愈 +愉 +意 +愕 +愚 +感 +愤 +愧 +愿 +慈 +慌 +慎 +慑 +慕 +慢 +慧 +慨 +慰 +慷 +憋 +憔 +憧 +憨 +憩 +憬 +憷 +憾 +懂 +懈 +懊 +懋 +懒 +懵 +懿 +戈 +戎 +戏 +成 +我 +戒 +或 +战 +戚 +戛 +戟 +截 +戬 +戮 +戳 +戴 +户 +房 +所 +扁 +扇 +扉 +手 +才 +扎 +扑 +扒 +打 +扔 +托 +扛 +扣 +执 +扩 +扫 +扬 +扭 +扮 +扯 +扰 +扳 +扶 +批 +扼 +找 +承 +技 +抄 +抉 +把 +抑 +抒 +抓 +投 +抖 +抗 +折 +抚 +抛 +抠 +抡 +抢 +护 +报 +抨 +披 +抬 +抱 +抵 +抹 +押 +抽 +抿 +拄 +担 +拆 +拇 +拈 +拉 +拌 +拍 +拎 +拐 +拒 +拓 +拔 +拖 +拗 +拘 +拙 +招 +拜 +拟 +拢 +拣 +拥 +拦 +拧 +拨 +择 +括 +拭 +拮 +拯 +拱 +拳 +拴 +拷 +拼 +拽 +拾 +拿 +持 +挂 +指 +按 +挎 +挑 +挖 +挚 +挛 +挝 +挟 +挠 +挡 +挣 +挤 +挥 +挨 +挪 +挫 +振 +挺 +挽 +捂 +捅 +捆 +捉 +捍 +捎 +捏 +捐 +捕 +捞 +损 +捡 +换 +捣 +捧 +据 +捷 +捺 +捻 +掀 +掂 +授 +掉 +掌 +掏 +掐 +排 +掖 +掘 +掠 +探 +掣 +接 +控 +推 +掩 +措 +掬 +掮 +掰 +掴 +掷 +掺 +揉 +揍 +描 +提 +插 +握 +揣 +揩 +揪 +揭 +援 +揽 +搀 +搁 +搂 +搅 +搏 +搜 +搞 +搡 +搪 +搬 +搭 +携 +搽 +摁 +摄 +摆 +摇 +摊 +摒 +摔 +摘 +摧 +摩 +摸 +摹 +撂 +撇 +撑 +撒 +撕 +撞 +撤 +撩 +撬 +播 +撮 +撰 +撵 +撸 +撼 +擂 +擅 +操 +擎 +擒 +擘 +擞 +擦 +攀 +攒 +攥 +支 +收 +改 +攻 +放 +政 +故 +效 +敌 +敏 +救 +敖 +教 +敛 +敝 +敞 +敢 +散 +敦 +敬 +数 +敲 +整 +敷 +文 +斌 +斐 +斑 +斓 +斗 +料 +斛 +斜 +斟 +斤 +斥 +斧 +斩 +断 +斯 +新 +方 +施 +旁 +旅 +旋 +族 +旗 +无 +既 +日 +旦 +旧 +旨 +早 +旬 +旭 +旱 +时 +旷 +旺 +昀 +昂 +昆 +昊 +昌 +明 +昏 +易 +昔 +昕 +昙 +星 +映 +春 +昧 +昨 +昭 +是 +昱 +昵 +昼 +显 +晃 +晋 +晏 +晒 +晓 +晔 +晕 +晖 +晗 +晚 +晟 +晤 +晦 +晨 +普 +景 +晰 +晴 +晶 +智 +晾 +暂 +暄 +暇 +暑 +暖 +暗 +暧 +暨 +暮 +暴 +曙 +曝 +曦 +曰 +曲 +更 +曹 +曼 +曾 +替 +最 +月 +有 +朋 +服 +朐 +朔 +朗 +望 +朝 +期 +朦 +木 +未 +末 +本 +札 +术 +朱 +朴 +朵 +机 +朽 +杀 +杂 +权 +杆 +杉 +李 +杏 +材 +村 +杖 +杜 +杞 +束 +杠 +条 +来 +杨 +杭 +杯 +杰 +杳 +松 +板 +极 +构 +枉 +析 +枕 +林 +枚 +果 +枝 +枞 +枢 +枣 +枪 +枫 +枭 +枯 +架 +枷 +柄 +柏 +某 +染 +柔 +柜 +柞 +柠 +查 +柬 +柯 +柱 +柳 +柴 +柿 +栅 +标 +栈 +栋 +栏 +树 +栓 +栖 +栗 +校 +株 +样 +核 +根 +格 +栽 +栾 +桂 +桃 +框 +案 +桉 +桌 +桎 +桐 +桑 +桓 +桔 +档 +桥 +桦 +桩 +桶 +梁 +梅 +梓 +梗 +梦 +梧 +梨 +梭 +梯 +械 +梳 +梵 +检 +棉 +棋 +棍 +棒 +棕 +棘 +棚 +棠 +森 +棱 +棵 +棺 +椅 +椋 +植 +椎 +椒 +椰 +椿 +楂 +楔 +楚 +楞 +楠 +楣 +楷 +楼 +概 +榄 +榆 +榈 +榉 +榔 +榕 +榜 +榨 +榭 +榴 +榷 +榻 +槌 +槎 +槐 +槛 +槟 +槽 +槿 +樊 +樟 +模 +横 +樱 +橄 +橘 +橙 +橡 +橱 +檀 +檐 +檬 +欠 +次 +欢 +欣 +欧 +欲 +欺 +款 +歆 +歇 +歉 +歌 +止 +正 +此 +步 +武 +歧 +歪 +歹 +死 +殃 +殆 +殉 +殊 +残 +殒 +殓 +殖 +殚 +殡 +殭 +殴 +段 +殷 +殿 +毁 +毂 +毅 +毋 +母 +每 +毒 +毓 +比 +毕 +毗 +毙 +毛 +毫 +毯 +毽 +氏 +民 +氓 +气 +氛 +氟 +氢 +氦 +氧 +氨 +氪 +氮 +氯 +氰 +水 +永 +汀 +汁 +求 +汇 +汉 +汕 +汗 +汛 +汝 +汞 +江 +池 +污 +汤 +汪 +汰 +汲 +汴 +汶 +汹 +汽 +汾 +沁 +沃 +沅 +沈 +沉 +沏 +沐 +沓 +沙 +沛 +沟 +没 +沣 +沥 +沦 +沧 +沪 +沫 +沮 +沱 +河 +沸 +油 +治 +沼 +沽 +沾 +沿 +泄 +泉 +泊 +泌 +泓 +泔 +法 +泗 +泛 +泞 +泠 +泡 +波 +泣 +泥 +注 +泪 +泯 +泰 +泱 +泳 +泵 +泷 +泸 +泻 +泼 +泽 +泾 +洁 +洋 +洒 +洗 +洙 +洛 +洞 +津 +洪 +洱 +洲 +洵 +活 +洼 +洽 +派 +流 +浅 +浆 +浇 +浈 +浊 +测 +济 +浏 +浑 +浓 +浙 +浚 +浦 +浩 +浪 +浮 +浴 +海 +浸 +涂 +涅 +消 +涉 +涌 +涎 +涓 +涕 +涛 +涝 +涞 +涠 +涡 +涤 +润 +涧 +涨 +涩 +涮 +涯 +液 +涵 +涿 +淀 +淄 +淆 +淇 +淋 +淌 +淑 +淖 +淘 +淝 +淞 +淡 +淤 +淫 +淮 +深 +淳 +混 +淹 +添 +淼 +渀 +清 +渊 +渍 +渎 +渐 +渔 +渗 +渚 +渝 +渠 +渡 +渣 +渤 +渥 +温 +渭 +港 +渲 +渴 +游 +渺 +湃 +湍 +湖 +湘 +湛 +湾 +湿 +溃 +溅 +溉 +源 +溜 +溢 +溥 +溧 +溪 +溯 +溶 +溺 +滁 +滇 +滋 +滑 +滔 +滕 +滚 +滞 +满 +滢 +滤 +滥 +滨 +滩 +滴 +漂 +漆 +漏 +漓 +演 +漕 +漠 +漩 +漫 +漭 +漯 +漱 +漳 +漾 +潇 +潘 +潜 +潞 +潢 +潭 +潮 +潼 +澄 +澈 +澎 +澜 +澡 +澳 +激 +濑 +濒 +濠 +濡 +濮 +瀑 +瀚 +瀛 +灌 +灞 +火 +灭 +灯 +灰 +灵 +灶 +灼 +灾 +灿 +炅 +炉 +炊 +炎 +炒 +炕 +炖 +炙 +炜 +炫 +炬 +炭 +炮 +炯 +炳 +炷 +炸 +点 +炼 +炽 +烁 +烂 +烃 +烈 +烊 +烘 +烙 +烟 +烤 +烦 +烧 +烨 +烫 +热 +烯 +烷 +烹 +烽 +焉 +焊 +焕 +焖 +焘 +焚 +焦 +焯 +焰 +焱 +然 +煊 +煌 +煎 +煜 +煞 +煤 +煦 +照 +煮 +煲 +熄 +熊 +熏 +熔 +熙 +熟 +熠 +熨 +熬 +熹 +燃 +燊 +燎 +燕 +燥 +爆 +爪 +爬 +爱 +爵 +父 +爷 +爸 +爹 +爽 +片 +版 +牌 +牙 +牛 +牟 +牡 +牢 +牧 +物 +牲 +牵 +特 +牺 +牾 +犀 +犊 +犒 +犬 +犯 +状 +犷 +犹 +狂 +狄 +狈 +狐 +狗 +狙 +狞 +狠 +狡 +狩 +独 +狭 +狮 +狰 +狱 +狸 +狼 +猎 +猖 +猛 +猜 +猝 +猥 +猩 +猪 +猫 +猬 +献 +猴 +猾 +猿 +獒 +獗 +獾 +玄 +率 +玉 +王 +玖 +玛 +玟 +玥 +玩 +玫 +玮 +环 +现 +玲 +玳 +玺 +玻 +珀 +珉 +珊 +珍 +珏 +珑 +珜 +珠 +班 +珮 +珲 +珺 +球 +琅 +理 +琉 +琊 +琏 +琐 +琛 +琢 +琥 +琦 +琪 +琬 +琰 +琳 +琴 +琵 +琶 +琼 +瑁 +瑄 +瑕 +瑙 +瑚 +瑛 +瑜 +瑞 +瑟 +瑰 +瑶 +瑾 +璀 +璃 +璇 +璋 +璐 +璞 +璧 +璨 +瓜 +瓢 +瓣 +瓦 +瓮 +瓯 +瓶 +瓷 +甄 +甘 +甚 +甜 +生 +甥 +用 +甩 +甫 +甬 +田 +由 +甲 +申 +电 +男 +甸 +町 +画 +畅 +畊 +界 +畏 +畔 +留 +畜 +略 +番 +畴 +畸 +畿 +疃 +疆 +疏 +疑 +疗 +疚 +疝 +疤 +疫 +疯 +疲 +疵 +疹 +疼 +疾 +病 +症 +痉 +痊 +痒 +痕 +痘 +痛 +痣 +痪 +痫 +痰 +痱 +痴 +痹 +痼 +瘀 +瘁 +瘟 +瘠 +瘤 +瘦 +瘩 +瘪 +瘫 +瘸 +瘾 +癌 +癖 +癣 +癫 +登 +白 +百 +皂 +的 +皆 +皇 +皋 +皎 +皓 +皖 +皙 +皮 +皱 +盆 +盈 +益 +盎 +盐 +监 +盒 +盔 +盖 +盗 +盘 +盛 +盟 +目 +盯 +盲 +直 +相 +盹 +盼 +盾 +省 +眈 +眉 +看 +真 +眠 +眨 +眬 +眯 +眶 +眷 +眺 +眼 +着 +睁 +睐 +睛 +睡 +督 +睦 +睫 +睬 +睹 +睿 +瞄 +瞅 +瞌 +瞎 +瞒 +瞟 +瞧 +瞩 +瞪 +瞬 +瞰 +瞳 +瞻 +瞿 +矗 +矛 +矜 +矢 +矣 +知 +矩 +矫 +短 +矮 +石 +矶 +矿 +码 +砂 +砌 +砍 +砒 +研 +砖 +砚 +砝 +砥 +砰 +砲 +破 +砷 +砸 +砺 +砾 +础 +硅 +硕 +硚 +硝 +硫 +硬 +确 +碉 +碌 +碍 +碎 +碑 +碗 +碘 +碚 +碟 +碧 +碰 +碱 +碳 +碴 +碾 +磁 +磅 +磊 +磋 +磐 +磕 +磡 +磨 +磴 +磷 +磺 +礁 +示 +礼 +社 +祁 +祈 +祉 +祖 +祛 +祝 +神 +祠 +祢 +祥 +票 +祭 +祯 +祷 +祸 +祺 +禀 +禁 +禄 +禅 +福 +禧 +禹 +禺 +离 +禽 +禾 +秀 +私 +秃 +秆 +秉 +秋 +种 +科 +秒 +秘 +租 +秣 +秤 +秦 +秧 +秩 +积 +称 +秸 +移 +秽 +稀 +程 +稍 +税 +稚 +稠 +稣 +稳 +稻 +稼 +稽 +稿 +穆 +穗 +穴 +究 +穷 +空 +穿 +突 +窃 +窄 +窈 +窍 +窑 +窒 +窕 +窖 +窗 +窘 +窜 +窝 +窟 +窥 +窦 +窨 +窿 +立 +竖 +站 +竞 +竟 +章 +竣 +童 +竭 +端 +竲 +竹 +竺 +竽 +竿 +笃 +笈 +笋 +笑 +笔 +笙 +笛 +符 +笨 +第 +笼 +等 +筋 +筐 +筑 +筒 +答 +策 +筛 +筱 +筵 +筷 +筹 +签 +简 +箍 +算 +管 +箫 +箭 +箱 +篇 +篡 +篪 +篮 +篷 +簇 +簧 +簸 +簿 +籁 +籍 +米 +类 +籽 +粉 +粒 +粕 +粗 +粘 +粟 +粤 +粥 +粪 +粮 +粱 +粹 +精 +糊 +糕 +糖 +糗 +糙 +糟 +糯 +系 +紊 +素 +索 +紧 +紫 +累 +絮 +綦 +繁 +纠 +红 +纣 +纤 +约 +级 +纪 +纬 +纯 +纰 +纱 +纲 +纳 +纵 +纶 +纷 +纸 +纹 +纺 +纽 +线 +练 +组 +绅 +细 +织 +终 +绊 +绌 +绍 +绎 +经 +绑 +绒 +结 +绕 +绘 +给 +绚 +络 +绝 +绞 +统 +绣 +继 +绩 +绪 +续 +绮 +绯 +绰 +绳 +维 +绵 +绷 +绸 +综 +绽 +绿 +缀 +缄 +缅 +缆 +缇 +缉 +缓 +缔 +缕 +编 +缘 +缙 +缚 +缜 +缝 +缠 +缤 +缨 +缩 +缪 +缭 +缮 +缰 +缴 +缸 +缺 +罂 +罄 +罐 +网 +罕 +罗 +罚 +罡 +罢 +罩 +罪 +置 +署 +罹 +羁 +羊 +美 +羚 +羞 +羡 +羣 +群 +羲 +羹 +羽 +羿 +翁 +翅 +翌 +翔 +翘 +翟 +翠 +翡 +翩 +翰 +翱 +翻 +翼 +耀 +老 +考 +耄 +者 +耋 +而 +耍 +耐 +耒 +耕 +耗 +耘 +耳 +耶 +耷 +耸 +耻 +耽 +耿 +聂 +聆 +聊 +聋 +职 +联 +聘 +聚 +聪 +肃 +肆 +肇 +肉 +肋 +肌 +肖 +肘 +肚 +肛 +肝 +肠 +股 +肢 +肤 +肥 +肩 +肪 +肮 +肯 +育 +肴 +肺 +肾 +肿 +胀 +胁 +胃 +胆 +背 +胎 +胖 +胚 +胛 +胜 +胞 +胡 +胤 +胧 +胫 +胯 +胰 +胱 +胳 +胶 +胸 +胺 +能 +脂 +脆 +脉 +脊 +脍 +脏 +脐 +脑 +脖 +脚 +脯 +脱 +脸 +脾 +腆 +腊 +腋 +腌 +腐 +腑 +腓 +腔 +腕 +腥 +腩 +腰 +腱 +腹 +腺 +腻 +腼 +腾 +腿 +膀 +膊 +膏 +膑 +膛 +膜 +膝 +膨 +膳 +膺 +臀 +臂 +臃 +臆 +臣 +自 +臭 +至 +致 +臻 +舀 +舅 +舆 +舌 +舍 +舒 +舛 +舜 +舞 +舟 +航 +般 +舰 +舱 +舵 +舶 +舸 +船 +艇 +艋 +艘 +良 +艰 +色 +艳 +艺 +艾 +节 +芊 +芋 +芒 +芙 +芜 +芝 +芦 +芬 +芭 +芮 +芯 +花 +芳 +芷 +芸 +芽 +苇 +苍 +苏 +苑 +苗 +苛 +苟 +苡 +苣 +若 +苦 +苯 +英 +苹 +茁 +茂 +范 +茄 +茅 +茆 +茎 +茗 +茜 +茨 +茫 +茵 +茶 +茸 +茹 +荃 +荆 +草 +荐 +荒 +荔 +荚 +荞 +荟 +荡 +荣 +荤 +荧 +荫 +药 +荷 +荼 +莅 +莆 +莉 +莎 +莓 +莘 +莞 +莠 +莫 +莱 +莲 +莴 +获 +莹 +莺 +莽 +菁 +菇 +菊 +菌 +菜 +菠 +菡 +菩 +菱 +菲 +萃 +萄 +萋 +萌 +萍 +萎 +萝 +萤 +营 +萦 +萧 +萨 +萱 +落 +葆 +著 +葛 +葡 +董 +葩 +葫 +葬 +葱 +葵 +蒂 +蒋 +蒙 +蒜 +蒲 +蒸 +蒿 +蓁 +蓄 +蓉 +蓝 +蓟 +蓬 +蔑 +蔓 +蔗 +蔚 +蔡 +蔫 +蔬 +蔷 +蔺 +蔽 +蕉 +蕊 +蕙 +蕲 +蕴 +蕾 +薄 +薇 +薛 +薪 +薯 +薰 +藏 +藜 +藤 +藩 +藻 +蘑 +虎 +虐 +虑 +虚 +虞 +虫 +虱 +虹 +虽 +虾 +蚀 +蚁 +蚂 +蚊 +蚌 +蚓 +蚕 +蚝 +蚣 +蚯 +蛀 +蛇 +蛋 +蛐 +蛙 +蛛 +蛟 +蛮 +蛰 +蜀 +蜂 +蜇 +蜈 +蜊 +蜒 +蜓 +蜕 +蜘 +蜚 +蜜 +蜡 +蜥 +蜴 +蜷 +蜿 +蝇 +蝉 +蝎 +蝗 +蝙 +蝠 +蝴 +蝶 +螂 +螃 +融 +螳 +螺 +蟑 +蟹 +蠢 +血 +衅 +行 +衍 +衔 +街 +衙 +衡 +衣 +补 +表 +衫 +衬 +衰 +衷 +袁 +袂 +袄 +袆 +袈 +袋 +袍 +袒 +袖 +袜 +被 +袭 +袱 +裁 +裂 +装 +裆 +裔 +裕 +裙 +裟 +裤 +裳 +裴 +裸 +裹 +褂 +褒 +褓 +褚 +褛 +褪 +褴 +褶 +襁 +襄 +襟 +西 +要 +覃 +覆 +见 +观 +规 +觅 +视 +览 +觉 +觊 +觎 +觐 +觑 +角 +解 +觥 +触 +言 +詹 +誉 +誓 +警 +譬 +计 +订 +认 +讧 +讨 +让 +讪 +训 +议 +讯 +记 +讲 +讳 +讶 +许 +讹 +论 +讼 +讽 +设 +访 +诀 +证 +评 +诅 +识 +诈 +诉 +诊 +词 +译 +诓 +试 +诗 +诙 +诚 +话 +诞 +诟 +诠 +诡 +询 +该 +详 +诧 +诩 +诫 +诬 +语 +误 +诱 +诲 +说 +诵 +诶 +请 +诸 +诺 +读 +诽 +课 +诿 +谀 +谁 +调 +谅 +谈 +谊 +谋 +谌 +谍 +谎 +谐 +谑 +谓 +谕 +谙 +谚 +谜 +谢 +谣 +谤 +谦 +谨 +谩 +谬 +谭 +谱 +谴 +谷 +豁 +豆 +豚 +象 +豪 +豫 +豹 +貅 +貉 +貌 +貔 +贝 +贞 +负 +贡 +财 +责 +贤 +败 +账 +货 +质 +贩 +贪 +贫 +贬 +购 +贮 +贯 +贱 +贴 +贵 +贷 +贸 +费 +贺 +贼 +贾 +贿 +赁 +赂 +赃 +资 +赋 +赌 +赎 +赏 +赐 +赔 +赖 +赘 +赚 +赛 +赝 +赞 +赠 +赡 +赢 +赣 +赤 +赦 +赫 +走 +赴 +赵 +赶 +起 +趁 +超 +越 +趋 +趟 +趣 +足 +趴 +趸 +趾 +跃 +跄 +跆 +跌 +跑 +跛 +距 +跟 +跤 +跨 +跪 +路 +跳 +践 +跷 +跺 +跻 +踉 +踊 +踏 +踝 +踞 +踢 +踩 +踪 +踵 +踹 +蹂 +蹄 +蹈 +蹊 +蹚 +蹦 +蹬 +蹭 +蹲 +蹴 +蹶 +蹼 +蹿 +躁 +躏 +身 +躬 +躯 +躲 +躺 +车 +轧 +轨 +轩 +转 +轮 +软 +轰 +轴 +轶 +轻 +载 +轿 +较 +辄 +辅 +辆 +辈 +辉 +辍 +辐 +辑 +输 +辖 +辗 +辘 +辙 +辛 +辜 +辞 +辟 +辣 +辨 +辩 +辫 +辰 +辱 +边 +辽 +达 +迁 +迂 +迄 +迅 +过 +迈 +迎 +运 +近 +返 +还 +这 +进 +远 +违 +连 +迟 +迢 +迥 +迪 +迫 +迭 +述 +迷 +迸 +迹 +追 +退 +送 +适 +逃 +逅 +逆 +选 +逊 +逍 +透 +逐 +递 +途 +逗 +通 +逛 +逝 +逞 +速 +造 +逡 +逢 +逮 +逵 +逸 +逻 +逼 +逾 +遁 +遂 +遇 +遍 +遏 +遐 +道 +遗 +遛 +遢 +遣 +遥 +遨 +遭 +遮 +遴 +遵 +避 +邀 +邂 +邃 +邋 +邑 +邓 +邛 +邝 +邢 +那 +邦 +邪 +邬 +邮 +邯 +邱 +邵 +邹 +邺 +邻 +郁 +郊 +郎 +郑 +郜 +郝 +郡 +部 +郫 +郭 +郸 +都 +鄂 +鄙 +鄞 +鄢 +酋 +酌 +配 +酒 +酗 +酝 +酣 +酪 +酬 +酯 +酱 +酵 +酶 +酷 +酸 +酿 +醇 +醉 +醋 +醍 +醐 +醒 +醛 +采 +釉 +释 +里 +重 +野 +量 +金 +釜 +鉴 +鏖 +鑫 +针 +钉 +钊 +钓 +钛 +钝 +钞 +钟 +钠 +钢 +钥 +钦 +钧 +钩 +钮 +钰 +钱 +钵 +钻 +钾 +铀 +铁 +铂 +铃 +铅 +铆 +铉 +铎 +铐 +铜 +铝 +铠 +铣 +铨 +铬 +铭 +铮 +铰 +铲 +银 +铸 +铺 +链 +铿 +销 +锁 +锂 +锄 +锅 +锆 +锈 +锋 +锌 +锏 +锐 +错 +锜 +锟 +锡 +锢 +锣 +锤 +锥 +锦 +锭 +键 +锯 +锰 +锵 +锷 +锹 +锻 +镀 +镁 +镇 +镉 +镊 +镍 +镑 +镖 +镜 +镯 +镳 +镶 +长 +门 +闪 +闫 +闭 +问 +闯 +闰 +闲 +闳 +间 +闵 +闷 +闸 +闹 +闺 +闻 +闽 +阀 +阁 +阂 +阅 +阎 +阐 +阔 +阙 +阚 +阜 +队 +阮 +阱 +防 +阳 +阴 +阵 +阶 +阻 +阿 +陀 +陂 +附 +际 +陆 +陈 +陋 +陌 +降 +限 +陕 +陡 +院 +除 +陨 +险 +陪 +陬 +陵 +陶 +陷 +隅 +隆 +隋 +隍 +随 +隐 +隔 +隘 +隙 +障 +隧 +隶 +隼 +隽 +难 +雀 +雁 +雄 +雅 +集 +雇 +雌 +雍 +雏 +雕 +雨 +雪 +雯 +雳 +零 +雷 +雾 +需 +霁 +霄 +霆 +震 +霈 +霉 +霍 +霎 +霏 +霖 +霜 +霞 +露 +霸 +霹 +霾 +靑 +青 +靓 +靖 +静 +靛 +非 +靠 +靡 +面 +革 +靳 +靴 +靶 +鞋 +鞍 +鞘 +鞠 +鞭 +韦 +韧 +韩 +韬 +音 +韵 +韶 +页 +顶 +顷 +项 +顺 +须 +顽 +顾 +顿 +颁 +颂 +预 +颅 +领 +颇 +颈 +颊 +颍 +颐 +频 +颓 +颖 +颗 +题 +颚 +颜 +额 +颠 +颤 +风 +飒 +飓 +飘 +飙 +飚 +飞 +食 +餐 +餮 +饕 +饥 +饪 +饭 +饮 +饰 +饱 +饲 +饵 +饶 +饺 +饼 +饽 +饿 +馀 +馅 +馆 +馈 +馊 +馋 +馑 +馒 +首 +馗 +香 +馥 +馨 +马 +驭 +驯 +驰 +驱 +驳 +驴 +驶 +驻 +驼 +驾 +驿 +骁 +骂 +骄 +骅 +骆 +骇 +骊 +骋 +验 +骏 +骐 +骑 +骗 +骚 +骜 +骤 +骥 +骨 +骷 +骸 +骼 +髅 +髋 +髓 +高 +髦 +鬼 +魁 +魂 +魄 +魅 +魇 +魏 +魔 +鱼 +鲁 +鲍 +鲜 +鲟 +鲨 +鲶 +鲷 +鲸 +鳄 +鳅 +鳌 +鳖 +鳝 +鳞 +鸟 +鸠 +鸡 +鸣 +鸥 +鸦 +鸭 +鸯 +鸳 +鸵 +鸽 +鸾 +鸿 +鹃 +鹅 +鹊 +鹏 +鹜 +鹞 +鹤 +鹭 +鹰 +鹿 +麋 +麒 +麓 +麟 +麦 +麻 +麾 +黄 +黍 +黎 +黏 +黑 +黔 +默 +黛 +黝 +黯 +鼎 +鼓 +鼠 +鼻 +鼾 +齐 +齿 +龄 +龙 +龚 +龟 + diff --git a/modules/audio/asr/u2_conformer_aishell/module.py b/modules/audio/asr/u2_conformer_aishell/module.py new file mode 100644 index 0000000000000000000000000000000000000000..8ce728041a036a66a44014378f965cea1c4b04d6 --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/module.py @@ -0,0 +1,73 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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 +from pathlib import Path +import sys + +import numpy as np +from paddlehub.env import MODULE_HOME +from paddlehub.module.module import moduleinfo, serving +from paddlehub.utils.log import logger + +import paddle +import soundfile as sf + +# TODO: Remove system path when deepspeech can be installed via pip. +sys.path.append(os.path.join(MODULE_HOME, 'u2_conformer_aishell')) +from deepspeech.exps.u2.config import get_cfg_defaults +from deepspeech.utils.utility import UpdateConfig +from .u2_conformer_tester import U2ConformerTester + + +@moduleinfo(name="u2_conformer_aishell", version="1.0.0", summary="", author="Baidu", author_email="", type="audio/asr") +class U2Conformer(paddle.nn.Layer): + def __init__(self): + super(U2Conformer, self).__init__() + + # resource + res_dir = os.path.join(MODULE_HOME, 'u2_conformer_aishell', 'assets') + conf_file = os.path.join(res_dir, 'conf/conformer.yaml') + checkpoint = os.path.join(res_dir, 'checkpoints/avg_20.pdparams') + + # config + self.config = get_cfg_defaults() + self.config.merge_from_file(conf_file) + + # TODO: Remove path updating snippet. + with UpdateConfig(self.config): + self.config.collator.vocab_filepath = os.path.join(res_dir, self.config.collator.vocab_filepath) + # self.config.collator.spm_model_prefix = os.path.join(res_dir, self.config.collator.spm_model_prefix) + self.config.collator.augmentation_config = os.path.join(res_dir, self.config.collator.augmentation_config) + self.config.model.cmvn_file = os.path.join(res_dir, self.config.model.cmvn_file) + self.config.decoding.decoding_method = 'attention_rescoring' + self.config.decoding.batch_size = 1 + + # model + self.tester = U2ConformerTester(self.config) + self.tester.setup_model() + self.tester.resume(checkpoint) + + @staticmethod + def check_audio(audio_file): + sig, sample_rate = sf.read(audio_file) + assert sample_rate == 16000, 'Excepting sample rate of input audio is 16000, but got {}'.format(sample_rate) + + @serving + def speech_recognize(self, audio_file, device='cpu'): + assert os.path.isfile(audio_file), 'File not exists: {}'.format(audio_file) + self.check_audio(audio_file) + + paddle.set_device(device) + return self.tester.test(audio_file)[0][0] diff --git a/modules/audio/asr/u2_conformer_aishell/requirements.txt b/modules/audio/asr/u2_conformer_aishell/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..49fb307f43939536be9ee5661a5a712aeba0792b --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/requirements.txt @@ -0,0 +1,12 @@ +loguru +yacs +jsonlines +scipy==1.2.1 +sentencepiece +resampy==0.2.2 +SoundFile==0.9.0.post1 +soxbindings +kaldiio +typeguard +editdistance +textgrid diff --git a/modules/audio/asr/u2_conformer_aishell/u2_conformer_tester.py b/modules/audio/asr/u2_conformer_aishell/u2_conformer_tester.py new file mode 100644 index 0000000000000000000000000000000000000000..c4f8d47055e29d1522c224e15439c9575270cc96 --- /dev/null +++ b/modules/audio/asr/u2_conformer_aishell/u2_conformer_tester.py @@ -0,0 +1,80 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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. +"""Evaluation for U2 model.""" +import os +import sys + +import paddle + +from deepspeech.frontend.featurizer.text_featurizer import TextFeaturizer +from deepspeech.io.collator import SpeechCollator +from deepspeech.models.u2 import U2Model +from deepspeech.utils import mp_tools +from deepspeech.utils.utility import UpdateConfig + + +class U2ConformerTester: + def __init__(self, config): + self.config = config + self.collate_fn_test = SpeechCollator.from_config(config) + self._text_featurizer = TextFeaturizer( + unit_type=config.collator.unit_type, vocab_filepath=None, spm_model_prefix=config.collator.spm_model_prefix) + + @mp_tools.rank_zero_only + @paddle.no_grad() + def test(self, audio_file): + self.model.eval() + cfg = self.config.decoding + collate_fn_test = self.collate_fn_test + audio, _ = collate_fn_test.process_utterance(audio_file=audio_file, transcript="Hello") + audio_len = audio.shape[0] + audio = paddle.to_tensor(audio, dtype='float32') + audio_len = paddle.to_tensor(audio_len) + audio = paddle.unsqueeze(audio, axis=0) + vocab_list = collate_fn_test.vocab_list + + text_feature = self.collate_fn_test.text_feature + result_transcripts = self.model.decode( + audio, + audio_len, + text_feature=text_feature, + decoding_method=cfg.decoding_method, + lang_model_path=cfg.lang_model_path, + beam_alpha=cfg.alpha, + beam_beta=cfg.beta, + beam_size=cfg.beam_size, + cutoff_prob=cfg.cutoff_prob, + cutoff_top_n=cfg.cutoff_top_n, + num_processes=cfg.num_proc_bsearch, + ctc_weight=cfg.ctc_weight, + decoding_chunk_size=cfg.decoding_chunk_size, + num_decoding_left_chunks=cfg.num_decoding_left_chunks, + simulate_streaming=cfg.simulate_streaming) + + return result_transcripts + + def setup_model(self): + config = self.config.clone() + with UpdateConfig(config): + config.model.input_dim = self.collate_fn_test.feature_size + config.model.output_dim = self.collate_fn_test.vocab_size + + self.model = U2Model.from_config(config.model) + + def resume(self, checkpoint): + """Resume from the checkpoint at checkpoints in the output + directory or load a specified checkpoint. + """ + model_dict = paddle.load(checkpoint) + self.model.set_state_dict(model_dict) diff --git a/modules/audio/asr/u2_conformer_librispeech/README.md b/modules/audio/asr/u2_conformer_librispeech/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f16da3f58cda36d36337c9f974b7464da38e8a19 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/README.md @@ -0,0 +1,156 @@ +# u2_conformer_librispeech + +|模型名称|u2_conformer_librispeech| +| :--- | :---: | +|类别|语音-语音识别| +|网络|DeepSpeech2| +|数据集|LibriSpeech| +|是否支持Fine-tuning|否| +|模型大小|191MB| +|最新更新日期|2021-11-01| +|数据指标|英文WER 0.034| + +## 一、模型基本信息 + +### 模型介绍 + +U2 Conformer模型是一种适用于英文和中文的end-to-end语音识别模型。u2_conformer_libirspeech采用了conformer的encoder和transformer的decoder的模型结构,并且使用了ctc-prefix beam search的方式进行一遍打分,再利用attention decoder进行二次打分的方式进行解码来得到最终结果。 + +u2_conformer_libirspeech在英文开源语音数据集[LibriSpeech ASR corpus](http://www.openslr.org/12/)进行了预训练,该模型在其测试集上的WER指标是0.034655。 + +

+
+

+ +

+
+

+ +更多详情请参考: +- [Unified Streaming and Non-streaming Two-pass End-to-end Model for Speech Recognition](https://arxiv.org/abs/2012.05481) +- [Conformer: Convolution-augmented Transformer for Speech Recognition](https://arxiv.org/abs/2005.08100) + +## 二、安装 + +- ### 1、系统依赖 + + - libsndfile + - Linux + ```shell + $ sudo apt-get install libsndfile + or + $ sudo yum install libsndfile + ``` + - MacOs + ``` + $ brew install libsndfile + ``` + +- ### 2、环境依赖 + + - paddlepaddle >= 2.1.0 + + - paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) + +- ### 3、安装 + + - ```shell + $ hub install u2_conformer_librispeech + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) + + +## 三、模型API预测 + +- ### 1、预测代码示例 + + - ```python + import paddlehub as hub + + # 采样率为16k,格式为wav的英文语音音频 + wav_file = '/PATH/TO/AUDIO' + + model = hub.Module( + name='u2_conformer_librispeech', + version='1.0.0') + text = model.speech_recognize(wav_file) + + print(text) + ``` + +- ### 2、API + - ```python + def check_audio(audio_file) + ``` + - 检查输入音频格式和采样率是否满足为16000 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + + - ```python + def speech_recognize( + audio_file, + device='cpu', + ) + ``` + - 将输入的音频识别成文字 + + - **参数** + + - `audio_file`:本地音频文件(*.wav)的路径,如`/path/to/input.wav` + - `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。 + + - **返回** + + - `text`:str类型,返回输入音频的识别文字结果。 + + +## 四、服务部署 + +- PaddleHub Serving可以部署一个在线的语音识别服务。 + +- ### 第一步:启动PaddleHub Serving + + - ```shell + $ hub serving start -m u2_conformer_librispeech + ``` + + - 这样就完成了一个语音识别服务化API的部署,默认端口号为8866。 + + - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。 + +- ### 第二步:发送预测请求 + + - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果 + + - ```python + import requests + import json + + # 需要识别的音频的存放路径,确保部署服务的机器可访问 + file = '/path/to/input.wav' + + # 以key的方式指定text传入预测方法的时的参数,此例中为"audio_file" + data = {"audio_file": file} + + # 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip + url = "http://127.0.0.1:8866/predict/u2_conformer_librispeech" + + # 指定post请求的headers为application/json方式 + headers = {"Content-Type": "application/json"} + + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) + ``` + +## 五、更新历史 + +* 1.0.0 + + 初始发布 + + ```shell + $ hub install u2_conformer_librispeech + ``` diff --git a/modules/audio/asr/u2_conformer_librispeech/__init__.py b/modules/audio/asr/u2_conformer_librispeech/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/audio/asr/u2_conformer_librispeech/assets/conf/augmentation.json b/modules/audio/asr/u2_conformer_librispeech/assets/conf/augmentation.json new file mode 100644 index 0000000000000000000000000000000000000000..0967ef424bce6791893e9a57bb952f80fd536e93 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/assets/conf/augmentation.json @@ -0,0 +1 @@ +{} diff --git a/modules/audio/asr/u2_conformer_librispeech/assets/conf/conformer.yaml b/modules/audio/asr/u2_conformer_librispeech/assets/conf/conformer.yaml new file mode 100644 index 0000000000000000000000000000000000000000..72342e449eb1837a3965f3662a221d8adec61ab4 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/assets/conf/conformer.yaml @@ -0,0 +1,116 @@ +# https://yaml.org/type/float.html +data: + train_manifest: data/manifest.test-clean + dev_manifest: data/manifest.test-clean + test_manifest: data/manifest.test-clean + min_input_len: 0.5 # seconds + max_input_len: 30.0 # seconds + min_output_len: 0.0 # tokens + max_output_len: 400.0 # tokens + min_output_input_ratio: 0.05 + max_output_input_ratio: 100.0 + +collator: + vocab_filepath: data/vocab.txt + unit_type: 'spm' + spm_model_prefix: 'data/bpe_unigram_5000' + mean_std_filepath: "" + augmentation_config: conf/augmentation.json + batch_size: 16 + raw_wav: True # use raw_wav or kaldi feature + spectrum_type: fbank #linear, mfcc, fbank + feat_dim: 80 + delta_delta: False + dither: 1.0 + target_sample_rate: 16000 + max_freq: None + n_fft: None + stride_ms: 10.0 + window_ms: 25.0 + use_dB_normalization: True + target_dB: -20 + random_seed: 0 + keep_transcription_text: False + sortagrad: True + shuffle_method: batch_shuffle + num_workers: 2 + + +# network architecture +model: + cmvn_file: "data/mean_std.json" + cmvn_file_type: "json" + # encoder related + encoder: conformer + encoder_conf: + output_size: 256 # dimension of attention + attention_heads: 4 + linear_units: 2048 # the number of units of position-wise feed forward + num_blocks: 12 # the number of encoder blocks + dropout_rate: 0.1 + positional_dropout_rate: 0.1 + attention_dropout_rate: 0.0 + input_layer: conv2d # encoder input type, you can chose conv2d, conv2d6 and conv2d8 + normalize_before: True + use_cnn_module: True + cnn_module_kernel: 15 + activation_type: 'swish' + pos_enc_layer_type: 'rel_pos' + selfattention_layer_type: 'rel_selfattn' + + # decoder related + decoder: transformer + decoder_conf: + attention_heads: 4 + linear_units: 2048 + num_blocks: 6 + dropout_rate: 0.1 + positional_dropout_rate: 0.1 + self_attention_dropout_rate: 0.0 + src_attention_dropout_rate: 0.0 + + # hybrid CTC/attention + model_conf: + ctc_weight: 0.3 + ctc_dropoutrate: 0.0 + ctc_grad_norm_type: instance + lsm_weight: 0.1 # label smoothing option + length_normalized_loss: false + + +training: + n_epoch: 120 + accum_grad: 8 + global_grad_clip: 3.0 + optim: adam + optim_conf: + lr: 0.004 + weight_decay: 1e-06 + scheduler: warmuplr # pytorch v1.1.0+ required + scheduler_conf: + warmup_steps: 25000 + lr_decay: 1.0 + log_interval: 100 + checkpoint: + kbest_n: 50 + latest_n: 5 + + +decoding: + batch_size: 64 + error_rate_type: wer + decoding_method: attention # 'attention', 'ctc_greedy_search', 'ctc_prefix_beam_search', 'attention_rescoring' + lang_model_path: data/lm/common_crawl_00.prune01111.trie.klm + alpha: 2.5 + beta: 0.3 + beam_size: 10 + cutoff_prob: 1.0 + cutoff_top_n: 0 + num_proc_bsearch: 8 + ctc_weight: 0.5 # ctc weight for attention rescoring decode mode. + decoding_chunk_size: -1 # decoding chunk size. Defaults to -1. + # <0: for decoding, use full chunk. + # >0: for decoding, use fixed chunk size as set. + # 0: used for training, it's prohibited here. + num_decoding_left_chunks: -1 # number of left chunks for decoding. Defaults to -1. + simulate_streaming: False # simulate streaming inference. Defaults to False. diff --git a/modules/audio/asr/u2_conformer_librispeech/assets/data/bpe_unigram_5000.model b/modules/audio/asr/u2_conformer_librispeech/assets/data/bpe_unigram_5000.model new file mode 100644 index 0000000000000000000000000000000000000000..ad6748af9e3f3ab9c36052b28d46084b7c8f315d Binary files /dev/null and b/modules/audio/asr/u2_conformer_librispeech/assets/data/bpe_unigram_5000.model differ diff --git a/modules/audio/asr/u2_conformer_librispeech/assets/data/bpe_unigram_5000.vocab b/modules/audio/asr/u2_conformer_librispeech/assets/data/bpe_unigram_5000.vocab new file mode 100644 index 0000000000000000000000000000000000000000..7e0ff98ce2e00bf26a8ae3a015556bbd21f8bdc5 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/assets/data/bpe_unigram_5000.vocab @@ -0,0 +1,5000 @@ + 0 + 0 + 0 +▁the -2.9911 +s -3.44691 +▁and -3.58286 +▁of -3.70894 +▁to -3.78001 +▁a -3.89871 +▁in -4.20996 +▁i -4.36145 +▁he -4.48281 +▁that -4.55289 +ed -4.59016 +▁was -4.59181 +▁it -4.62484 +' -4.81583 +▁his -4.84177 +ing -4.88039 +▁you -4.99998 +▁with -5.00838 +▁for -5.02039 +t -5.0555 +▁had -5.07751 +▁as -5.09744 +▁her -5.13191 +▁be -5.19505 +▁is -5.19882 +▁but -5.21324 +▁not -5.22608 +▁she -5.23394 +d -5.27841 +▁at -5.34023 +▁on -5.34498 +ly -5.40443 +▁him -5.50709 +▁they -5.56045 +▁all -5.58704 +▁have -5.59768 +▁by -5.60002 +▁ -5.60186 +▁so -5.61262 +e -5.61903 +▁this -5.62164 +▁my -5.64057 +▁which -5.64669 +▁me -5.69076 +▁said -5.70437 +▁from -5.70664 +▁one -5.7513 +▁were -5.78541 +▁we -5.82874 +y -5.85619 +▁no -5.88631 +▁there -5.90758 +n -5.91704 +er -5.92896 +▁or -5.93481 +▁an -5.95345 +▁when -5.96716 +▁are -6.01743 +▁their -6.0437 +▁would -6.05331 +▁if -6.06359 +▁what -6.0895 +▁them -6.08963 +▁who -6.10441 +▁do -6.134 +▁out -6.14848 +▁will -6.16929 +▁up -6.18755 +m -6.19966 +▁been -6.20889 +▁man -6.28662 +▁then -6.31167 +▁could -6.37658 +r -6.38978 +p -6.401 +▁more -6.40231 +▁into -6.4095 +▁now -6.45621 +es -6.45723 +▁very -6.46767 +▁your -6.47768 +c -6.49829 +▁some -6.5032 +▁little -6.52174 +▁time -6.53362 +▁can -6.57863 +▁like -6.58001 +ll -6.58456 +re -6.59459 +▁about -6.6011 +▁has -6.63724 +▁than -6.64773 +▁did -6.64974 +▁upon -6.66755 +l -6.67708 +▁over -6.6829 +▁any -6.69691 +in -6.70055 +▁well -6.70679 +▁only -6.70884 +▁see -6.72382 +▁good -6.7302 +▁other -6.73256 +▁two -6.73281 +al -6.76971 +▁know -6.77014 +b -6.77332 +▁go -6.78028 +▁down -6.78382 +▁before -6.79386 +a -6.80864 +▁our -6.81482 +▁old -6.82309 +▁should -6.82836 +▁made -6.82895 +▁after -6.84628 +▁great -6.85243 +▁day -6.85544 +▁must -6.87627 +▁come -6.87777 +▁how -6.87869 +▁such -6.88362 +▁came -6.88807 +▁where -6.89779 +▁us -6.90031 +▁never -6.92945 +le -6.93511 +▁these -6.95338 +▁much -6.95525 +▁mister -6.96536 +▁de -6.975 +or -6.98345 +▁may -6.98676 +▁long -7.01388 +▁way -7.01809 +▁first -7.04141 +▁back -7.05466 +▁own -7.05634 +▁am -7.05808 +▁again -7.06591 +▁say -7.07176 +▁men -7.07357 +▁went -7.07513 +▁himself -7.07891 +▁here -7.09085 +ion -7.10388 +▁think -7.10393 +ness -7.10433 +en -7.11572 +▁even -7.12414 +g -7.12655 +▁thought -7.12694 +▁hand -7.1271 +u -7.13322 +▁just -7.13401 +ve -7.14094 +▁its -7.15029 +o -7.16142 +▁un -7.16965 +▁re -7.1721 +▁make -7.17463 +▁might -7.1793 +ation -7.18013 +▁too -7.18635 +on -7.1907 +▁away -7.19477 +st -7.19708 +▁life -7.20558 +▁without -7.21952 +▁o -7.22087 +▁through -7.22747 +▁most -7.22784 +ic -7.22971 +▁take -7.23593 +▁don -7.23927 +▁every -7.24535 +th -7.25167 +▁shall -7.25978 +▁those -7.26214 +▁eyes -7.27376 +▁still -7.28725 +▁last -7.29948 +▁house -7.30575 +▁head -7.3073 +▁nothing -7.31319 +▁night -7.3151 +able -7.32761 +▁off -7.33689 +ity -7.33883 +▁let -7.33975 +▁many -7.34144 +ar -7.34535 +▁being -7.34757 +▁found -7.34819 +▁while -7.35326 +i -7.36804 +▁saw -7.37042 +▁get -7.37494 +an -7.37662 +▁people -7.38318 +▁face -7.38748 +▁young -7.39215 +▁under -7.40057 +▁once -7.40078 +▁tell -7.40791 +▁three -7.413 +▁place -7.41377 +▁room -7.41704 +li -7.42158 +▁yet -7.42442 +▁same -7.42976 +ri -7.42985 +v -7.4311 +▁father -7.44096 +▁though -7.45043 +k -7.45091 +▁another -7.45131 +▁right -7.46533 +▁heart -7.46662 +▁put -7.48293 +▁took -7.48368 +▁give -7.48808 +▁ever -7.4903 +▁work -7.50099 +el -7.50309 +it -7.50743 +▁e -7.51169 +▁look -7.51181 +ry -7.5122 +▁new -7.51353 +il -7.51571 +ers -7.51791 +▁part -7.52099 +▁king -7.52387 +▁missus -7.52455 +▁sir -7.53014 +▁mind -7.5303 +▁looked -7.53104 +us -7.53328 +▁love -7.53458 +ra -7.53906 +▁asked -7.53965 +▁left -7.54703 +▁light -7.56075 +▁moment -7.57071 +ro -7.57073 +et -7.5746 +ive -7.57948 +▁world -7.58543 +▁things -7.58651 +▁home -7.58975 +▁thing -7.6002 +f -7.60068 +h -7.60196 +ful -7.60292 +▁why -7.60735 +▁mother -7.61051 +▁always -7.61115 +▁far -7.61265 +▁water -7.61901 +▁s -7.61926 +la -7.62405 +ce -7.62873 +ck -7.62955 +▁heard -7.63327 +▁something -7.63489 +w -7.63624 +▁seemed -7.63649 +ch -7.64796 +▁because -7.65167 +▁end -7.65457 +▁told -7.66091 +▁yes -7.66365 +▁door -7.6662 +ted -7.6708 +▁going -7.67276 +▁got -7.67607 +is -7.68689 +ter -7.68801 +▁woman -7.68896 +▁god -7.68943 +ol -7.69186 +est -7.69247 +ent -7.69838 +ur -7.70382 +te -7.70972 +ling -7.71225 +▁find -7.71593 +▁knew -7.72124 +ne -7.72399 +▁soon -7.72471 +▁each -7.72548 +▁side -7.72953 +▁oh -7.73896 +ul -7.74838 +▁against -7.75871 +▁name -7.77125 +▁miss -7.77191 +▁quite -7.77406 +▁con -7.77659 +▁ma -7.7812 +▁want -7.78461 +▁years -7.78825 +▁few -7.78901 +▁better -7.79308 +▁half -7.79628 +ton -7.79945 +▁done -7.80176 +ment -7.81027 +▁also -7.81536 +se -7.81952 +▁began -7.82133 +▁having -7.82983 +▁enough -7.83157 +▁lady -7.84016 +▁whole -7.84092 +▁both -7.8452 +▁seen -7.84696 +led -7.85123 +▁set -7.8565 +▁white -7.85755 +▁course -7.86189 +tion -7.86283 +▁voice -7.86482 +ir -7.865 +▁called -7.86562 +ma -7.88043 +lo -7.88068 +▁turned -7.88486 +▁gave -7.88561 +man -7.89007 +▁poor -7.89153 +▁dear -7.89597 +▁girl -7.89892 +▁morning -7.90137 +less -7.90146 +▁between -7.90202 +▁nor -7.90275 +▁among -7.9053 +ate -7.90969 +ies -7.91089 +▁p -7.91307 +ff -7.91729 +na -7.92272 +▁small -7.92689 +ty -7.92942 +ous -7.93067 +▁ga -7.93278 +▁whom -7.93725 +▁felt -7.93876 +▁hands -7.93947 +▁myself -7.94602 +▁high -7.94632 +▁ex -7.94686 +▁however -7.94887 +ia -7.94934 +▁herself -7.95264 +▁stood -7.95858 +▁kind -7.95874 +▁hundred -7.95955 +▁la -7.96684 +▁round -7.97066 +▁almost -7.97354 +om -7.98129 +▁since -7.9813 +sh -7.98849 +▁c -7.98852 +▁ten -7.9898 +▁rest -7.9973 +▁boy -7.99935 +▁mo -8.00015 +▁perhaps -8.00311 +ish -8.0036 +ru -8.0045 +▁words -8.00475 +mp -8.00876 +▁sat -8.01874 +co -8.02001 +▁replied -8.02087 +▁four -8.02469 +▁anything -8.02776 +as -8.02812 +▁till -8.02843 +x -8.02978 +ting -8.0301 +▁until -8.03441 +▁black -8.03588 +ated -8.03649 +me -8.03831 +▁b -8.04278 +id -8.04354 +▁cried -8.04406 +▁fact -8.05064 +▁help -8.05169 +▁next -8.05191 +ie -8.05368 +▁looking -8.05378 +▁friend -8.05529 +▁does -8.05546 +▁lay -8.05695 +▁brought -8.06229 +▁fire -8.06598 +▁keep -8.06679 +ver -8.07005 +▁sea -8.07356 +▁country -8.07394 +▁word -8.07524 +▁days -8.07754 +▁together -8.0803 +▁reason -8.0831 +ut -8.08642 +ance -8.0867 +▁indeed -8.08859 +▁matter -8.08986 +▁ra -8.09017 +▁li -8.09673 +▁air -8.09835 +▁full -8.09927 +▁rather -8.10244 +▁hope -8.10365 +▁land -8.1041 +gg -8.10417 +am -8.10449 +▁open -8.10788 +tic -8.10921 +▁feet -8.11058 +▁imp -8.11102 +ke -8.11263 +ine -8.11421 +▁d -8.11547 +▁five -8.11674 +▁point -8.11763 +▁large -8.1235 +ci -8.12437 +vi -8.1256 +▁child -8.13099 +▁gone -8.13104 +▁ho -8.1317 +pp -8.13272 +▁best -8.13427 +▁hard -8.13582 +ant -8.13757 +▁lord -8.13785 +▁wife -8.13848 +▁sure -8.13962 +de -8.14218 +po -8.14226 +▁form -8.14557 +▁death -8.14965 +▁care -8.15583 +ence -8.15604 +▁nature -8.15699 +▁co -8.15856 +▁believe -8.15947 +▁near -8.16247 +▁red -8.16407 +▁ro -8.16449 +▁ha -8.16607 +▁speak -8.16703 +▁fear -8.16889 +▁case -8.16944 +▁taken -8.17098 +▁cannot -8.17343 +▁hear -8.17518 +▁along -8.17564 +▁themselves -8.17588 +um -8.17641 +▁present -8.18164 +▁master -8.18704 +▁son -8.18955 +▁war -8.19388 +▁po -8.19446 +▁thus -8.19772 +▁true -8.20459 +▁car -8.20477 +▁less -8.20846 +▁thousand -8.21254 +▁w -8.21417 +mi -8.2162 +▁money -8.21713 +nd -8.21716 +▁da -8.21888 +▁power -8.22077 +▁behind -8.22087 +ard -8.2226 +to -8.22274 +▁children -8.2228 +▁doctor -8.22317 +▁dis -8.22371 +▁twenty -8.22732 +▁wish -8.22739 +▁sound -8.22843 +▁whose -8.23097 +▁leave -8.23197 +▁answered -8.23298 +▁thou -8.23321 +ac -8.23461 +▁dur -8.23471 +▁certain -8.2375 +ge -8.24317 +▁cl -8.24703 +▁g -8.24779 +▁passed -8.24862 +▁arm -8.25095 +mo -8.25395 +ious -8.2544 +▁state -8.25486 +▁alone -8.25597 +▁show -8.25689 +▁ba -8.25864 +▁need -8.25881 +▁live -8.26099 +▁dead -8.26254 +▁pro -8.26311 +▁mu -8.26701 +▁strong -8.26733 +▁en -8.26801 +▁bo -8.26981 +▁ground -8.27309 +▁short -8.27476 +▁st -8.27974 +▁horse -8.28616 +▁prince -8.28817 +▁pre -8.28817 +ian -8.29122 +at -8.29216 +un -8.29302 +▁fell -8.2982 +▁order -8.29901 +▁call -8.29938 +▁ca -8.30443 +▁sun -8.30517 +ta -8.30566 +▁given -8.30619 +▁therefore -8.30754 +▁dark -8.30758 +▁close -8.30816 +▁body -8.31022 +▁others -8.31043 +▁sent -8.31212 +ad -8.3132 +▁second -8.316 +red -8.31726 +▁often -8.31883 +▁manner -8.32481 +▁vi -8.32632 +▁f -8.33096 +▁lo -8.33173 +▁question -8.33377 +▁hour -8.33469 +▁turn -8.33975 +▁table -8.34248 +▁general -8.34277 +▁earth -8.34496 +▁bed -8.34708 +age -8.3481 +ward -8.35051 +▁really -8.35139 +▁six -8.35374 +▁become -8.35755 +▁read -8.36081 +▁use -8.36236 +▁coming -8.37141 +▁everything -8.37319 +▁above -8.37882 +▁evening -8.37903 +▁beautiful -8.3822 +▁feel -8.38244 +▁least -8.3841 +ical -8.38416 +▁law -8.38452 +▁already -8.38637 +▁rose -8.38677 +▁mean -8.38681 +▁ran -8.38738 +▁itself -8.38828 +▁soul -8.39221 +▁suddenly -8.39493 +▁around -8.39553 +▁ti -8.39629 +▁sa -8.39657 +▁answer -8.39921 +▁em -8.40114 +ber -8.40546 +que -8.40812 +ti -8.40975 +▁won -8.41017 +▁wind -8.41105 +▁fine -8.41304 +▁whether -8.41526 +▁known -8.41725 +▁captain -8.42272 +▁eye -8.42551 +▁person -8.42656 +▁women -8.42706 +▁sort -8.42764 +▁ask -8.42963 +▁per -8.43123 +▁brother -8.43586 +ni -8.43821 +▁used -8.44025 +▁held -8.44066 +▁big -8.44256 +▁returned -8.44473 +▁strange -8.44488 +no -8.45273 +▁free -8.45451 +▁either -8.45513 +▁within -8.45564 +▁doubt -8.45671 +▁year -8.45862 +▁clear -8.46003 +▁sight -8.46043 +▁lost -8.46111 +ho -8.46112 +▁se -8.46255 +▁le -8.46257 +▁kept -8.46289 +▁bar -8.46341 +▁bu -8.46354 +▁town -8.46388 +ring -8.46594 +▁sleep -8.46906 +ist -8.47099 +▁hair -8.47372 +▁friends -8.47427 +nt -8.4756 +▁dream -8.47568 +▁fellow -8.47629 +▁deep -8.47799 +▁past -8.4783 +▁became -8.47901 +op -8.48024 +▁making -8.48051 +▁act -8.48477 +bo -8.48576 +im -8.48695 +▁bad -8.4879 +ary -8.49097 +▁ta -8.49642 +ily -8.4979 +▁bring -8.498 +ster -8.49837 +▁ye -8.50127 +▁means -8.50147 +▁run -8.50334 +men -8.50338 +▁daughter -8.50689 +▁sense -8.50862 +cy -8.51181 +▁city -8.51186 +▁sometimes -8.51205 +▁towards -8.51344 +▁road -8.51845 +▁gra -8.51919 +▁ready -8.52448 +dy -8.5251 +ure -8.52531 +son -8.52666 +▁mar -8.52707 +▁cold -8.53015 +▁foot -8.53033 +▁else -8.53193 +▁letter -8.5321 +ud -8.53213 +▁k -8.53803 +▁sp -8.53997 +▁truth -8.54012 +▁idea -8.54104 +▁sta -8.54296 +▁business -8.54487 +▁subject -8.54754 +▁john -8.54757 +▁court -8.54846 +▁river -8.55047 +▁ru -8.55137 +▁di -8.5541 +▁family -8.5565 +▁didn -8.56006 +▁several -8.56147 +▁glad -8.56226 +ens -8.56422 +▁understand -8.56476 +▁possible -8.56873 +▁return -8.56875 +▁different -8.56878 +▁arms -8.5689 +he -8.57005 +▁low -8.57062 +▁hold -8.57171 +ating -8.57288 +▁talk -8.57294 +▁window -8.57563 +▁lu -8.57574 +▁sh -8.57632 +▁interest -8.57875 +▁sister -8.57949 +▁blood -8.58666 +▁says -8.58691 +land -8.59031 +▁th -8.59363 +▁human -8.59452 +▁cause -8.59568 +go -8.59691 +▁thank -8.59812 +▁late -8.59857 +▁cut -8.59993 +▁across -8.60115 +ng -8.60191 +▁story -8.6039 +ial -8.60458 +▁count -8.60531 +by -8.61141 +▁number -8.61156 +▁stand -8.61173 +▁able -8.61219 +per -8.61242 +▁church -8.61299 +che -8.61435 +les -8.61602 +▁thy -8.61746 +▁comp -8.61815 +▁suppose -8.6189 +▁effect -8.62111 +▁si -8.62299 +ba -8.62734 +▁spoke -8.62957 +▁green -8.6315 +▁husband -8.63174 +▁respect -8.63174 +cu -8.63314 +▁remember -8.63324 +▁followed -8.63382 +▁longer -8.63684 +ions -8.63877 +tro -8.63906 +▁taking -8.64065 +▁seem -8.64106 +▁t -8.64367 +▁happy -8.64443 +pe -8.64475 +▁line -8.64596 +ley -8.64671 +▁stay -8.6532 +▁play -8.6534 +▁common -8.65531 +be -8.65623 +▁times -8.65717 +▁book -8.65736 +und -8.65793 +▁object -8.66012 +▁seven -8.66091 +▁met -8.66215 +ca -8.66333 +▁age -8.66376 +▁sha -8.66505 +▁pretty -8.6663 +▁fair -8.66837 +do -8.66895 +▁wood -8.66965 +os -8.67011 +▁reached -8.6731 +▁sweet -8.67437 +▁appeared -8.67453 +▁fall -8.67545 +▁pass -8.67577 +▁sign -8.67655 +▁art -8.67659 +da -8.67771 +▁tree -8.68022 +▁garden -8.68055 +▁fl -8.68212 +▁remain -8.68618 +▁opened -8.68883 +qui -8.69114 +▁bright -8.69391 +▁street -8.6983 +▁hu -8.69925 +▁tu -8.70032 +▁trouble -8.70065 +▁pain -8.7029 +▁continued -8.70344 +▁school -8.70366 +▁carried -8.70421 +▁saying -8.70493 +▁follow -8.71325 +▁change -8.71328 +nce -8.71349 +▁gold -8.71391 +▁bear -8.71554 +▁su -8.71566 +▁feeling -8.71637 +▁command -8.71679 +▁certainly -8.71824 +▁blue -8.71904 +▁wild -8.72003 +▁account -8.72368 +▁ne -8.72403 +▁ought -8.72848 +▁fi -8.73365 +▁breath -8.73491 +▁wanted -8.73914 +ov -8.74173 +lt -8.74286 +▁ill -8.74353 +ow -8.74421 +▁sc -8.74663 +der -8.74682 +▁heaven -8.74684 +▁purpose -8.74686 +ha -8.74759 +▁character -8.74843 +▁rich -8.7515 +our -8.75547 +▁dress -8.75781 +▁english -8.76108 +▁chance -8.76254 +▁view -8.76496 +▁ship -8.76584 +▁toward -8.76672 +▁real -8.76718 +▁joy -8.76779 +▁cap -8.77235 +▁plan -8.77246 +▁neither -8.77275 +▁force -8.77285 +▁uncle -8.77317 +▁princess -8.77387 +▁har -8.77474 +▁hat -8.77801 +way -8.77869 +▁chief -8.77894 +▁lived -8.78017 +▁na -8.78141 +▁visit -8.7824 +▁mor -8.78381 +▁wall -8.78652 +▁pleasure -8.78739 +▁pe -8.7879 +▁smile -8.78797 +▁front -8.78866 +▁mine -8.78902 +▁ri -8.79253 +▁deal -8.79282 +ier -8.79326 +▁further -8.79368 +▁tried -8.79541 +▁none -8.80009 +uc -8.80166 +▁entered -8.80167 +▁pay -8.80408 +▁queen -8.80455 +▁except -8.80579 +va -8.80801 +▁forward -8.80805 +ot -8.80998 +▁eight -8.81171 +▁added -8.81314 +▁public -8.81323 +▁eighteen -8.81324 +ft -8.81377 +▁star -8.81398 +▁happened -8.81873 +ned -8.81953 +▁although -8.822 +▁later -8.82204 +▁walked -8.82218 +▁walk -8.82238 +▁spirit -8.8225 +▁bit -8.82313 +▁meet -8.82432 +▁led -8.82559 +fa -8.82849 +▁mouth -8.82946 +▁wait -8.83231 +rs -8.83281 +▁gu -8.83416 +▁hours -8.83454 +lin -8.83526 +▁living -8.83739 +▁yourself -8.83798 +em -8.83827 +▁fast -8.83971 +▁hall -8.84497 +▁beyond -8.84576 +▁boat -8.84732 +▁secret -8.84736 +▁chair -8.84911 +▁pu -8.85297 +▁received -8.85389 +▁pa -8.85426 +▁cat -8.8545 +▁desire -8.85826 +▁ja -8.8592 +▁gentleman -8.85927 +▁cra -8.85959 +ress -8.8609 +▁laid -8.86415 +▁party -8.86721 +▁wonder -8.86748 +▁occasion -8.86751 +ig -8.86771 +▁fish -8.87005 +▁mi -8.87027 +▁send -8.87486 +vo -8.87515 +ged -8.87522 +ak -8.87728 +▁nearly -8.87803 +con -8.87846 +▁try -8.8788 +▁seems -8.88114 +▁silence -8.88499 +▁bell -8.88523 +ever -8.88574 +▁bra -8.88685 +▁guard -8.88716 +▁rep -8.88973 +▁die -8.89013 +▁doing -8.89179 +▁early -8.89211 +ugh -8.89235 +▁bank -8.89235 +▁figure -8.89252 +den -8.89326 +▁england -8.89568 +▁mary -8.896 +▁fo -8.89799 +▁cor -8.89892 +▁afraid -8.90011 +▁watch -8.90402 +▁gre -8.90554 +▁aunt -8.91001 +tur -8.91229 +▁service -8.91353 +▁je -8.91387 +▁minutes -8.91421 +▁trees -8.91568 +▁glass -8.91774 +▁pan -8.91942 +▁va -8.91977 +▁tone -8.91998 +▁please -8.92034 +▁forth -8.92051 +▁cur -8.92101 +▁cross -8.92166 +▁fa -8.92184 +▁exclaimed -8.92273 +ler -8.92342 +▁pen -8.92344 +ten -8.92376 +▁pi -8.92426 +▁eat -8.92444 +▁drew -8.92453 +ble -8.92499 +ably -8.9255 +▁grave -8.92616 +▁miles -8.92876 +▁ago -8.92887 +▁position -8.9304 +▁warm -8.93052 +▁length -8.93236 +▁necessary -8.93236 +▁thinking -8.93313 +▁soft -8.9336 +▁picture -8.93367 +ship -8.93369 +ations -8.9338 +av -8.93443 +ible -8.93462 +▁ah -8.93999 +▁heavy -8.94029 +▁attention -8.94092 +▁dog -8.94119 +▁standing -8.94354 +rn -8.94361 +ron -8.94363 +▁natural -8.94438 +▁appear -8.94438 +▁caught -8.94556 +gra -8.94669 +▁spring -8.94922 +▁experience -8.94955 +▁pat -8.95299 +▁pri -8.95372 +▁stopped -8.95569 +▁regard -8.95615 +▁hardly -8.95978 +▁self -8.96008 +▁strength -8.96095 +kin -8.96238 +▁grew -8.96282 +▁knight -8.96298 +▁opinion -8.96298 +▁ab -8.96388 +rk -8.96526 +▁wide -8.96661 +▁instead -8.96774 +▁south -8.96781 +▁trans -8.96816 +▁learn -8.9712 +▁corner -8.97137 +▁island -8.97439 +▁third -8.97591 +▁straight -8.97728 +▁tea -8.97822 +▁bound -8.97901 +▁seeing -8.97967 +▁cha -8.98025 +▁dinner -8.98079 +▁beauty -8.98209 +▁peace -8.98292 +▁silent -8.98762 +▁cre -8.98909 +▁sw -8.99093 +▁step -8.99147 +▁jo -8.99178 +▁wa -8.99194 +▁sitting -8.99214 +▁thirty -8.99247 +▁save -8.99425 +▁glance -8.99532 +▁loved -8.99677 +▁reach -8.99979 +▁action -9.00043 +▁ver -9.0005 +ger -9.00278 +▁sad -9.00395 +▁stone -9.00628 +ened -9.00671 +▁french -9.00862 +▁m -9.0087 +▁struck -9.01003 +▁paper -9.01106 +ally -9.01111 +▁whatever -9.01193 +▁sub -9.01227 +▁distance -9.01287 +▁wrong -9.01358 +▁knowledge -9.01358 +▁safe -9.01474 +▁snow -9.01501 +▁fifty -9.01643 +▁attempt -9.01714 +▁music -9.01799 +▁government -9.01876 +▁crowd -9.02244 +▁besides -9.02296 +▁box -9.02356 +▁direction -9.02387 +▁train -9.02393 +▁north -9.02395 +ped -9.02429 +▁el -9.02475 +▁thick -9.02509 +▁getting -9.02554 +▁floor -9.0289 +▁company -9.03007 +▁blow -9.03021 +bu -9.03086 +▁plain -9.03126 +▁beside -9.0315 +ities -9.03293 +▁rock -9.03348 +▁immediately -9.03354 +▁shadow -9.03442 +▁sit -9.03601 +▁drink -9.03952 +king -9.04249 +▁spot -9.04416 +▁danger -9.04433 +▁wi -9.04538 +▁saint -9.04685 +▁slowly -9.04691 +ah -9.04742 +▁palace -9.04831 +ors -9.04944 +▁peter -9.05013 +▁result -9.05052 +ric -9.05115 +▁forest -9.05173 +▁tears -9.0564 +ism -9.05656 +▁belong -9.05664 +▁appearance -9.05678 +▁par -9.05711 +▁gate -9.05778 +▁ju -9.06233 +▁quickly -9.06437 +▁fit -9.06524 +▁quiet -9.06573 +ris -9.06619 +▁london -9.06688 +▁start -9.06791 +rt -9.06846 +▁brown -9.06949 +▁consider -9.07025 +▁battle -9.07145 +▁anne -9.07195 +▁piece -9.07248 +▁died -9.07512 +▁success -9.07617 +▁post -9.07672 +▁lips -9.07702 +▁filled -9.078 +▁forget -9.07832 +ified -9.08089 +▁margaret -9.08123 +▁food -9.08284 +▁pleasant -9.08657 +ner -9.08809 +▁expression -9.08909 +▁pocket -9.08963 +fi -9.08995 +▁wear -9.09356 +▁fresh -9.09425 +au -9.09646 +ham -9.09714 +▁broken -9.09722 +▁laughed -9.09757 +▁following -9.09843 +▁youth -9.09887 +▁touch -9.10015 +▁sal -9.10107 +▁week -9.10288 +▁remained -9.10418 +▁leg -9.10432 +▁easy -9.1051 +▁al -9.10564 +▁enter -9.10865 +▁ste -9.1089 +▁ch -9.10922 +▁fight -9.10933 +▁placed -9.10947 +▁travel -9.10964 +▁simple -9.11135 +▁girls -9.11236 +▁waiting -9.11512 +▁stop -9.11684 +if -9.11804 +ile -9.11906 +ning -9.11982 +▁camp -9.12002 +▁ni -9.12035 +▁wise -9.12043 +▁office -9.12111 +▁fe -9.12205 +▁grand -9.12295 +▁judge -9.12363 +ny -9.12381 +▁quick -9.12617 +tri -9.12647 +▁du -9.12874 +▁fra -9.12979 +▁flo -9.1301 +ging -9.13045 +▁comfort -9.13208 +▁particular -9.13305 +▁suit -9.1338 +▁started -9.13391 +▁top -9.13613 +▁hot -9.13623 +▁impossible -9.13675 +ach -9.13707 +▁pale -9.13732 +ments -9.13795 +▁ve -9.13914 +▁conversation -9.13917 +▁scene -9.14081 +▁boys -9.14082 +▁society -9.14402 +▁outside -9.14432 +▁write -9.14476 +▁effort -9.14645 +▁talking -9.14693 +▁fortune -9.14726 +▁nine -9.14985 +▁single -9.151 +▁cro -9.152 +▁port -9.15411 +▁happen -9.15427 +▁rule -9.15463 +▁cast -9.15628 +▁shut -9.15709 +▁noble -9.15917 +▁gun -9.15924 +▁path -9.15997 +▁begin -9.16092 +▁win -9.16136 +▁sky -9.16149 +▁wonderful -9.16515 +▁sudden -9.16577 +▁army -9.16589 +ga -9.16805 +▁mountain -9.16841 +▁worth -9.16959 +▁grace -9.17162 +▁below -9.17203 +▁chapter -9.17215 +▁turning -9.17273 +▁afternoon -9.17612 +▁iron -9.17626 +▁bow -9.17691 +up -9.17693 +▁evil -9.17696 +▁trust -9.17749 +ag -9.17757 +▁recogni -9.1778 +▁ring -9.17871 +▁lad -9.17907 +▁sail -9.18071 +▁content -9.18118 +▁horses -9.18165 +▁silver -9.18199 +ory -9.18236 +ay -9.18273 +▁tri -9.18493 +▁running -9.18731 +▁hill -9.18744 +▁beginning -9.18888 +▁habit -9.1913 +▁mad -9.19289 +pa -9.19389 +▁clothes -9.19512 +▁morrow -9.19566 +▁cry -9.19577 +▁fashion -9.1964 +▁presence -9.19642 +▁min -9.19708 +▁tra -9.19725 +▁arrived -9.19781 +▁quarter -9.19811 +▁perfect -9.19902 +▁usual -9.19961 +▁neck -9.19975 +▁married -9.19983 +▁seat -9.20022 +wi -9.20071 +▁sand -9.20413 +▁shore -9.20419 +ries -9.20447 +▁giving -9.20584 +▁probably -9.2067 +▁expect -9.20736 +▁minute -9.20838 +▁shot -9.20958 +▁instant -9.21089 +▁degree -9.21275 +▁color -9.21461 +▁west -9.21547 +▁winter -9.21587 +ran -9.21593 +val -9.21703 +▁march -9.21721 +▁gar -9.21774 +▁bird -9.21826 +▁serious -9.21896 +▁greater -9.21909 +▁showed -9.21924 +▁covered -9.21941 +▁former -9.21951 +▁carry -9.21985 +▁loud -9.22023 +▁moved -9.2207 +▁mass -9.22168 +▁tom -9.22175 +lar -9.22214 +▁roman -9.22598 +▁moon -9.22677 +▁stream -9.22937 +▁easily -9.23026 +▁couldn -9.2303 +ey -9.23089 +▁search -9.23115 +▁board -9.23122 +▁wished -9.23148 +ap -9.23201 +▁months -9.23242 +▁sick -9.23317 +▁bla -9.23394 +▁duty -9.23511 +▁twelve -9.23557 +▁faint -9.23649 +▁hi -9.23676 +▁stranger -9.23765 +▁surprise -9.23849 +▁kill -9.23864 +fe -9.239 +▁leaving -9.23913 +ub -9.23923 +▁journey -9.24091 +▁raised -9.24202 +▁scarcely -9.24209 +▁speaking -9.2426 +▁terrible -9.24359 +▁game -9.24488 +▁field -9.24561 +▁mer -9.24586 +▁promise -9.24657 +▁condition -9.24771 +▁personal -9.24929 +▁tall -9.24935 +▁stick -9.25 +▁threw -9.25168 +ip -9.25241 +▁marry -9.25282 +ative -9.25306 +gi -9.25323 +▁van -9.25378 +▁according -9.25484 +▁burn -9.25574 +▁sei -9.25721 +▁lie -9.25726 +▁attack -9.25802 +▁sword -9.25809 +▁rise -9.25828 +▁thoughts -9.25867 +side -9.25899 +▁guess -9.25901 +▁dar -9.26041 +▁calm -9.26116 +▁thin -9.2615 +▁village -9.26256 +▁anxious -9.26439 +▁expected -9.26601 +▁ball -9.26745 +▁especially -9.26805 +▁charge -9.26831 +▁measure -9.26897 +gn -9.26921 +▁seek -9.26938 +▁te -9.26963 +▁nice -9.2709 +her -9.27108 +▁trying -9.27193 +▁allow -9.27357 +▁bread -9.27449 +▁sharp -9.27462 +gu -9.27478 +▁honour -9.27541 +▁honor -9.27635 +▁entirely -9.2768 +▁bill -9.27739 +rous -9.27784 +▁bri -9.27788 +▁written -9.27819 +▁broke -9.27946 +▁killed -9.2795 +wa -9.28007 +▁offer -9.28008 +▁ladies -9.28047 +▁mark -9.28091 +▁flowers -9.28165 +▁learned -9.28181 +▁forty -9.28372 +▁happiness -9.28469 +▁pray -9.28486 +▁class -9.28584 +▁principle -9.28749 +▁ven -9.28892 +gen -9.28901 +▁fer -9.28919 +▁shape -9.28928 +▁summer -9.28943 +▁books -9.2895 +▁jack -9.28989 +▁draw -9.29038 +tin -9.2915 +▁golden -9.29273 +▁decided -9.29353 +▁unless -9.29627 +▁lead -9.29655 +▁listen -9.29844 +▁shook -9.29892 +▁noise -9.29931 +▁influence -9.29972 +eth -9.30032 +▁perfectly -9.30091 +▁marriage -9.30257 +▁broad -9.30274 +▁states -9.30314 +▁escape -9.30317 +▁middle -9.30362 +▁plant -9.30436 +▁movement -9.30501 +▁enemy -9.30542 +▁break -9.30544 +▁history -9.30549 +▁understood -9.30637 +▁latter -9.30638 +▁comes -9.30659 +wn -9.30685 +▁merely -9.3078 +▁simply -9.30828 +▁imagine -9.31019 +▁lower -9.3121 +▁born -9.31282 +▁conduct -9.31306 +▁yard -9.31406 +▁den -9.31624 +▁closed -9.31666 +▁fro -9.31877 +▁makes -9.31891 +lie -9.32113 +▁exist -9.32174 +▁speech -9.3227 +▁bitter -9.3235 +jo -9.3246 +hi -9.3254 +ib -9.32565 +▁grass -9.32705 +▁reply -9.32779 +▁changed -9.32821 +▁ka -9.3295 +▁dance -9.3312 +▁lying -9.33191 +▁finally -9.33222 +▁american -9.33343 +▁enjoy -9.33348 +▁contain -9.33439 +▁observed -9.33536 +▁meant -9.33571 +▁flu -9.3378 +ev -9.33858 +▁laugh -9.34134 +oo -9.34138 +▁afterwards -9.34164 +pose -9.34235 +▁beat -9.34266 +▁equal -9.3437 +▁race -9.34393 +▁rain -9.34564 +▁steps -9.34565 +▁gi -9.3462 +▁beneath -9.34821 +io -9.34833 +▁tail -9.34953 +▁taste -9.35112 +▁che -9.3514 +▁char -9.35243 +▁grow -9.35273 +clock -9.35505 +▁repeated -9.3551 +▁move -9.3553 +▁mon -9.35718 +▁lot -9.35898 +▁note -9.36107 +ther -9.36128 +▁madame -9.36149 +▁brave -9.36158 +ians -9.36183 +▁castle -9.36196 +bi -9.36309 +▁future -9.36322 +▁relation -9.36426 +▁sorry -9.36427 +▁health -9.36434 +▁dick -9.36447 +▁building -9.36547 +lf -9.36874 +▁edge -9.36921 +▁bless -9.36973 +▁mis -9.36985 +▁spite -9.36994 +mer -9.37185 +▁mill -9.37444 +▁prisoner -9.37517 +▁allowed -9.37651 +▁catch -9.379 +▁coat -9.38075 +▁complete -9.38129 +▁wouldn -9.382 +the -9.38299 +▁yellow -9.3836 +▁important -9.38367 +▁creature -9.38369 +▁passing -9.38461 +▁darkness -9.38601 +▁carriage -9.38669 +▁fifteen -9.38772 +▁hung -9.38791 +▁spread -9.38876 +▁pleased -9.38883 +▁curious -9.38918 +▁reali -9.38934 +▁worse -9.3898 +ement -9.39043 +▁circumstances -9.39055 +▁qua -9.39079 +▁din -9.39256 +▁jane -9.39383 +▁add -9.39383 +▁east -9.3941 +▁cup -9.39472 +▁blind -9.39499 +▁passion -9.39519 +▁discovered -9.39614 +▁notice -9.39644 +▁report -9.39752 +we -9.39837 +▁space -9.39918 +▁com -9.4017 +▁presently -9.40287 +▁sorrow -9.40336 +▁pack -9.40421 +▁dry -9.40549 +▁ancient -9.40651 +fer -9.40713 +▁cover -9.40802 +▁dressed -9.40804 +▁existence -9.40998 +▁exactly -9.41068 +▁beast -9.41096 +▁proper -9.41119 +▁dropped -9.41192 +▁clean -9.41286 +▁colour -9.41297 +▁host -9.41436 +▁mere -9.41572 +and -9.4175 +▁determined -9.41801 +▁chamber -9.41816 +cent -9.41871 +▁faith -9.41872 +▁sto -9.4188 +▁skin -9.421 +▁storm -9.42138 +▁persons -9.42186 +▁priest -9.42212 +▁pick -9.42288 +▁support -9.4235 +▁narrow -9.4235 +▁private -9.42457 +▁smiled -9.42561 +▁cousin -9.42672 +▁drawing -9.42682 +▁attend -9.42755 +▁cook -9.42811 +▁prevent -9.42995 +▁various -9.43011 +▁hole -9.43205 +▁weak -9.43221 +▁fixed -9.43226 +let -9.43406 +▁bottom -9.43427 +▁nobody -9.43427 +▁eli -9.43557 +▁legs -9.43638 +▁ar -9.43728 +ade -9.4384 +▁individual -9.43861 +▁dare -9.43865 +▁ears -9.44178 +ug -9.44328 +▁advantage -9.44516 +▁france -9.44539 +▁lives -9.44639 +▁wine -9.44744 +▁walls -9.44867 +▁tired -9.44922 +▁shop -9.44987 +▁cru -9.45028 +▁animal -9.45076 +▁wrote -9.45175 +▁royal -9.45176 +ki -9.45265 +▁isn -9.45395 +▁bon -9.45485 +▁considered -9.45562 +▁moral -9.45564 +▁companion -9.4577 +▁lose -9.45813 +▁lake -9.45864 +▁bag -9.46002 +▁letters -9.46007 +▁luck -9.46037 +▁sy -9.46198 +hood -9.46307 +▁inter -9.46621 +▁german -9.46634 +▁sake -9.46706 +▁drop -9.46715 +▁paid -9.4679 +▁ear -9.46913 +▁breakfast -9.46953 +▁labor -9.46955 +▁desert -9.47071 +▁declared -9.47139 +▁study -9.47178 +▁instance -9.47184 +▁song -9.47236 +▁somewhat -9.47291 +▁cloth -9.47377 +▁colonel -9.47403 +▁special -9.47403 +▁value -9.47527 +ld -9.47606 +▁main -9.47694 +▁proud -9.47697 +▁express -9.47824 +▁nation -9.47829 +▁handsome -9.47938 +▁confess -9.47973 +ps -9.48006 +▁passage -9.48021 +▁period -9.48082 +▁gen -9.4815 +▁christ -9.48187 +▁custom -9.48309 +row -9.4831 +▁hurt -9.48337 +▁shoulder -9.48433 +▁cu -9.48495 +▁sin -9.48574 +▁receive -9.48598 +ite -9.48641 +light -9.48678 +▁difficult -9.48784 +ple -9.48865 +▁depend -9.48879 +▁meeting -9.48891 +▁heat -9.48893 +▁believed -9.48972 +▁social -9.48997 +▁difficulty -9.4905 +▁greatest -9.4908 +▁drawn -9.49088 +▁grant -9.49184 +▁birds -9.49301 +▁angry -9.49342 +ign -9.49466 +▁places -9.49511 +▁gri -9.4964 +▁courage -9.49683 +▁disc -9.4972 +▁evidently -9.49722 +▁gentle -9.49742 +▁cruel -9.49742 +▁george -9.49798 +▁due -9.49871 +▁paris -9.50034 +▁knows -9.50057 +▁knowing -9.50084 +▁servant -9.50088 +▁writing -9.50377 +▁pure -9.50397 +▁holding -9.50448 +▁remembered -9.50481 +▁tender -9.5049 +▁whi -9.50695 +▁burst -9.50701 +▁surely -9.50748 +▁valley -9.50855 +hy -9.51064 +▁conf -9.51116 +▁spoken -9.51131 +▁christian -9.51262 +▁store -9.51318 +▁henry -9.51332 +▁finished -9.51369 +▁qui -9.51369 +▁ob -9.51392 +▁prove -9.51443 +▁fool -9.51478 +▁ban -9.51521 +▁soldiers -9.51612 +▁language -9.51779 +▁inside -9.51827 +▁fallen -9.5209 +itch -9.52244 +▁baby -9.52317 +▁pot -9.52331 +▁situation -9.5237 +▁ruin -9.52474 +▁watched -9.52482 +▁gentlemen -9.52509 +▁fancy -9.52617 +▁accept -9.52659 +▁mal -9.52755 +▁season -9.52821 +▁ourselves -9.52844 +▁speed -9.53094 +ans -9.53103 +nic -9.53266 +▁fu -9.53441 +▁cool -9.53512 +form -9.53515 +▁vessel -9.53561 +▁william -9.53563 +▁serve -9.53642 +▁obliged -9.53681 +▁group -9.53691 +my -9.53852 +od -9.53859 +▁leaves -9.53884 +▁goes -9.53981 +▁peculiar -9.54041 +▁news -9.54053 +▁vain -9.54213 +▁everybody -9.54282 +▁pin -9.5434 +▁forgotten -9.54412 +▁carefully -9.54456 +▁flash -9.54524 +uous -9.54561 +ook -9.54675 +ched -9.54731 +▁murder -9.54736 +▁und -9.54748 +▁delight -9.54769 +▁waited -9.54905 +▁roll -9.54927 +▁property -9.54931 +▁noticed -9.54941 +▁hum -9.54975 +han -9.54979 +▁fur -9.55108 +▁knock -9.55131 +▁earnest -9.55152 +▁ge -9.55239 +uch -9.55241 +▁honest -9.55375 +▁promised -9.55457 +wood -9.55616 +▁san -9.55635 +▁walking -9.55738 +▁quietly -9.55865 +▁square -9.55866 +▁cloud -9.5589 +one -9.55892 +▁higher -9.56088 +▁built -9.5611 +▁formed -9.56135 +▁teach -9.56201 +▁fate -9.56269 +▁false -9.56356 +▁york -9.56368 +▁bal -9.56386 +▁climb -9.56479 +▁dust -9.56506 +▁fond -9.56536 +▁grown -9.56693 +▁fruit -9.5685 +▁generally -9.56896 +▁offered -9.57025 +▁nurse -9.57101 +▁spent -9.57227 +▁join -9.57301 +▁meaning -9.57367 +▁smoke -9.57471 +▁station -9.57515 +▁rough -9.57528 +line -9.5754 +ju -9.57649 +▁likely -9.57725 +▁surface -9.57845 +▁month -9.57879 +▁r -9.5807 +▁possession -9.58089 +▁tongue -9.58102 +for -9.58136 +ang -9.58153 +▁duke -9.5827 +stra -9.58404 +▁laughing -9.58435 +▁weather -9.58474 +▁whispered -9.58519 +gan -9.58545 +▁rag -9.58575 +▁system -9.58599 +▁laws -9.58622 +▁touched -9.58764 +▁nose -9.58808 +▁surprised -9.58815 +▁wealth -9.58855 +▁trade -9.58885 +▁nu -9.58947 +▁temper -9.58978 +▁frank -9.58978 +▁arch -9.59065 +▁opportunity -9.59231 +▁animals -9.59345 +▁bare -9.59353 +▁claim -9.59358 +▁cost -9.59584 +▁opposite -9.59739 +▁police -9.59739 +▁key -9.59776 +▁ideas -9.59836 +▁wave -9.5985 +▁cal -9.5994 +▁reading -9.60061 +▁corn -9.6011 +▁collect -9.60123 +ker -9.60382 +▁gray -9.60456 +▁crown -9.60465 +▁shoulders -9.60493 +▁swift -9.60507 +▁wash -9.60516 +▁ice -9.60591 +▁tar -9.60632 +use -9.6067 +▁prepared -9.6068 +▁gro -9.60782 +lac -9.60967 +▁empty -9.61022 +▁share -9.61049 +▁smiling -9.61152 +▁avoid -9.61153 +▁difference -9.61161 +▁explain -9.61169 +▁pour -9.61217 +▁fat -9.61242 +▁attract -9.61281 +▁opening -9.61463 +▁breast -9.6154 +▁material -9.6154 +▁wheel -9.6154 +ius -9.61563 +▁suffering -9.61577 +▁distinct -9.61639 +▁rever -9.61748 +▁sing -9.61819 +▁chi -9.61843 +▁fingers -9.61874 +▁altogether -9.6193 +▁papa -9.6196 +dding -9.62028 +▁brain -9.62096 +▁row -9.62113 +▁asleep -9.62191 +▁grey -9.62254 +▁windows -9.62363 +▁alive -9.62446 +▁proceed -9.62486 +▁flower -9.62538 +▁pieces -9.6261 +▁leap -9.62618 +pping -9.62686 +ef -9.6269 +▁alter -9.62705 +▁memory -9.62717 +aw -9.62815 +▁fill -9.62844 +▁thrown -9.62844 +▁rode -9.6292 +▁kingdom -9.6298 +▁dish -9.62982 +▁mat -9.63055 +▁maid -9.6322 +▁band -9.63234 +some -9.63329 +▁virtue -9.63374 +▁clo -9.63425 +▁guest -9.63479 +▁loss -9.63491 +▁caused -9.63624 +bra -9.63641 +▁motion -9.63672 +▁lovely -9.63741 +▁swa -9.63749 +▁million -9.63758 +▁fault -9.63772 +▁united -9.63911 +oc -9.64057 +▁mountains -9.64071 +▁pur -9.64112 +▁dim -9.64149 +▁satisfied -9.6417 +▁lover -9.64196 +▁harm -9.64233 +▁dollars -9.64303 +▁hero -9.64369 +▁conceal -9.64437 +▁vast -9.64488 +▁hath -9.64582 +▁rush -9.64604 +▁despair -9.64704 +▁pull -9.64708 +lan -9.64708 +▁height -9.64721 +ex -9.64763 +▁pet -9.64824 +ney -9.64929 +▁spi -9.64936 +▁remark -9.64976 +▁pity -9.64999 +▁rising -9.65036 +▁bent -9.65173 +▁hurry -9.65242 +▁bree -9.65243 +ddle -9.65325 +▁pride -9.65356 +▁settled -9.65371 +▁justice -9.65381 +▁finding -9.65389 +▁lifted -9.65406 +▁soldier -9.65444 +▁regular -9.65511 +▁struggle -9.65511 +▁machine -9.65512 +▁sum -9.65631 +▁hurried -9.65647 +▁sufficient -9.65738 +▁throw -9.65747 +▁represent -9.65772 +▁supper -9.65918 +▁double -9.65922 +▁alarm -9.65924 +▁dreadful -9.65954 +▁stock -9.66116 +▁flow -9.66166 +▁example -9.66189 +▁roof -9.66189 +▁ce -9.66229 +▁supposed -9.66546 +▁preserv -9.666 +▁listened -9.66708 +▁col -9.66819 +▁secure -9.67009 +▁frightened -9.67014 +ka -9.6705 +▁drive -9.67127 +▁disturb -9.67145 +▁emotion -9.67283 +▁servants -9.6735 +▁buy -9.674 +▁forced -9.67485 +▁kitchen -9.67558 +rin -9.6761 +▁terror -9.67696 +▁stairs -9.677 +▁sixty -9.67838 +▁ordinary -9.67972 +▁directly -9.67979 +▁heads -9.67985 +▁greatly -9.68092 +▁method -9.68111 +▁forgive -9.68116 +▁awful -9.68119 +▁reflect -9.68138 +▁talked -9.68277 +▁favour -9.6838 +ties -9.68388 +▁welcome -9.68388 +▁tin -9.6845 +▁yo -9.68486 +▁butter -9.68532 +▁control -9.68668 +▁angel -9.68714 +▁vo -9.68747 +stone -9.68797 +▁ordered -9.6884 +▁usually -9.68842 +▁poet -9.68918 +▁bold -9.68985 +ridge -9.69084 +▁adventure -9.69092 +▁watching -9.69214 +▁ride -9.69302 +▁folk -9.69436 +▁mistress -9.69518 +▁rate -9.69657 +▁growing -9.69734 +▁evidence -9.69788 +▁cave -9.69821 +▁j -9.69842 +▁finger -9.69866 +bbe -9.699 +▁seventeen -9.69929 +▁moving -9.69932 +▁cow -9.69957 +▁doesn -9.69962 +ator -9.70019 +▁type -9.70071 +▁tale -9.70074 +▁boil -9.70121 +▁deliver -9.70212 +ire -9.70237 +▁farm -9.70249 +▁mil -9.70318 +▁feelings -9.70333 +▁monsieur -9.70353 +▁gathered -9.7039 +▁putting -9.70417 +▁remarked -9.70434 +▁er -9.70444 +▁contrary -9.70495 +iness -9.70602 +▁crime -9.7078 +▁nearer -9.70882 +▁shame -9.71081 +▁loose -9.71084 +▁discover -9.71192 +▁flat -9.71232 +▁fail -9.7131 +▁twice -9.7135 +▁pla -9.71489 +▁europe -9.71637 +▁patient -9.71637 +▁unto -9.71665 +▁pair -9.71729 +▁suffer -9.7173 +tte -9.71755 +ea -9.71796 +▁hy -9.71815 +▁treasure -9.71925 +▁eager -9.72052 +▁bi -9.72074 +▁salt -9.72239 +▁fly -9.72313 +▁parts -9.7254 +pec -9.72573 +▁arthur -9.72647 +▁affairs -9.7268 +▁slow -9.72704 +▁consist -9.72808 +▁devil -9.72834 +▁affection -9.73001 +▁bore -9.7301 +▁kiss -9.73036 +▁engaged -9.73052 +▁officer -9.73173 +ification -9.73228 +▁milk -9.73339 +▁process -9.73375 +▁gift -9.73398 +▁dan -9.73398 +▁lamp -9.73427 +▁hid -9.73427 +▁pulled -9.73464 +▁excellent -9.73521 +▁impression -9.73522 +▁telling -9.73545 +▁proved -9.73575 +▁authority -9.73576 +▁tower -9.73802 +▁consequence -9.73814 +▁ray -9.73837 +▁favor -9.73953 +▁flew -9.73962 +▁charles -9.73993 +▁address -9.73994 +▁familiar -9.74108 +▁confidence -9.74112 +▁limit -9.74112 +▁weeks -9.74244 +▁woods -9.74288 +▁direct -9.74355 +▁intention -9.74383 +▁rare -9.74439 +▁perform -9.74547 +▁solemn -9.74551 +▁distant -9.74552 +▁bur -9.74558 +▁image -9.74713 +▁president -9.74847 +▁firm -9.74855 +▁indian -9.74876 +▁rid -9.74907 +▁rank -9.74916 +▁liked -9.74918 +▁houses -9.74982 +▁agree -9.75016 +▁ya -9.7506 +▁matters -9.7508 +▁working -9.75208 +▁prison -9.75226 +▁major -9.75227 +▁slip -9.75273 +like -9.75278 +▁mode -9.75344 +▁aware -9.75452 +▁looks -9.75466 +▁weight -9.75468 +▁busy -9.75475 +▁wound -9.7562 +▁bath -9.75727 +hen -9.75879 +▁wore -9.75892 +▁exercise -9.7604 +▁similar -9.7604 +▁amount -9.7619 +▁questions -9.76376 +▁violent -9.76642 +▁excuse -9.76643 +▁aside -9.76705 +▁dull -9.76778 +▁emperor -9.76793 +▁nevertheless -9.76793 +▁shout -9.76836 +gue -9.76895 +▁explained -9.76923 +▁accomplish -9.76944 +lung -9.77072 +▁instantly -9.77126 +▁mistake -9.77134 +▁smooth -9.77248 +▁strike -9.77248 +▁horror -9.77552 +▁science -9.77552 +▁protest -9.77553 +▁bob -9.77559 +▁obey -9.77567 +▁manage -9.77573 +▁ama -9.77643 +▁press -9.77671 +▁necessity -9.77704 +▁splendid -9.77704 +▁holy -9.77754 +▁interesting -9.7778 +ath -9.7784 +▁religion -9.77857 +▁unknown -9.77857 +▁fierce -9.7801 +▁disappeared -9.78045 +▁unc -9.78099 +▁naturally -9.7813 +▁louis -9.78163 +▁drove -9.78164 +▁played -9.78241 +▁brand -9.78401 +ford -9.78471 +▁hate -9.78556 +▁lines -9.78597 +▁shoot -9.78625 +▁consent -9.78635 +▁agreed -9.7869 +▁seated -9.78715 +▁stir -9.78774 +▁circle -9.78778 +▁streets -9.78825 +bble -9.78905 +▁task -9.78939 +▁produced -9.7904 +▁accident -9.79087 +burg -9.79088 +▁lin -9.79162 +▁witness -9.79162 +▁liberty -9.79241 +▁detail -9.79242 +▁minister -9.79242 +▁powerful -9.79327 +▁savage -9.79397 +▁sixteen -9.79397 +▁pretend -9.79552 +▁coast -9.79554 +▁utter -9.79799 +▁named -9.79837 +▁clever -9.7993 +▁admit -9.79966 +▁couple -9.80019 +▁message -9.80021 +▁wicked -9.80023 +▁bro -9.80067 +▁temple -9.80175 +▁stones -9.80204 +▁yesterday -9.80332 +▁hills -9.80372 +▁plea -9.80428 +▁sca -9.80497 +▁slight -9.80546 +▁squ -9.80554 +▁diamond -9.80646 +▁possibly -9.80646 +▁affair -9.80767 +▁hearing -9.8086 +▁original -9.80867 +▁sell -9.80869 +▁worthy -9.80872 +▁cottage -9.8096 +▁progress -9.8096 +▁sacrifice -9.8096 +▁shock -9.80961 +▁sunday -9.80961 +▁design -9.80964 +▁sought -9.80966 +lus -9.81045 +▁otherwise -9.81118 +right -9.81118 +▁prayer -9.81126 +▁cabin -9.81127 +▁dwell -9.81146 +▁rev -9.81234 +▁bridge -9.81314 +▁particularly -9.81374 +ied -9.81392 +▁yield -9.81434 +▁treat -9.81442 +▁oak -9.81465 +▁gain -9.81614 +win -9.81616 +▁rope -9.81746 +tan -9.81759 +ou -9.81816 +▁orders -9.81844 +▁suspect -9.8191 +▁edward -9.82087 +▁eleven -9.82229 +ability -9.82243 +▁occurred -9.82244 +▁teeth -9.82246 +▁val -9.82333 +▁lion -9.82382 +▁america -9.82547 +▁falling -9.8255 +ists -9.82559 +▁depart -9.82607 +▁keeping -9.82633 +▁demand -9.82658 +nny -9.82735 +▁paused -9.82763 +▁ceased -9.82864 +▁cheer -9.83045 +▁pardon -9.83193 +▁native -9.83194 +oon -9.83204 +▁beg -9.83285 +itude -9.83312 +▁dogs -9.83322 +▁required -9.8337 +▁elect -9.83506 +▁entertain -9.83514 +ina -9.83517 +▁blu -9.83533 +▁huge -9.83628 +▁carrying -9.83629 +▁insist -9.83641 +▁satisfaction -9.83676 +board -9.83736 +▁upper -9.83744 +ord -9.8376 +▁hunt -9.83761 +▁countenance -9.83838 +▁maiden -9.83958 +▁james -9.84004 +▁foreign -9.84011 +▁failed -9.84019 +▁gather -9.8402 +▁fun -9.8409 +▁test -9.84104 +▁pal -9.84163 +▁mighty -9.84183 +▁pit -9.8431 +▁silk -9.84328 +▁terms -9.8435 +▁page -9.84434 +▁knees -9.84447 +▁brothers -9.84472 +▁shown -9.8448 +▁professor -9.84527 +▁log -9.84552 +more -9.84553 +▁defi -9.8461 +▁cart -9.84746 +▁charm -9.84749 +▁require -9.84799 +▁proof -9.84816 +▁softly -9.84961 +▁unfortunate -9.8498 +▁possessed -9.84987 +▁severe -9.85032 +▁singing -9.85039 +▁stage -9.8507 +▁medi -9.85097 +▁price -9.85122 +▁freedom -9.85145 +▁farther -9.85228 +▁shouted -9.85263 +▁majesty -9.85309 +▁previous -9.85309 +▁guide -9.85355 +▁match -9.85362 +▁chest -9.85369 +▁intended -9.85443 +▁excitement -9.85485 +▁officers -9.85487 +▁shake -9.85565 +▁sentiment -9.85639 +▁gently -9.85644 +▁succeeded -9.85691 +▁sur -9.85879 +▁ki -9.8588 +pha -9.85914 +▁mention -9.85927 +▁acquaintance -9.85969 +▁imagination -9.85969 +▁physical -9.85969 +▁leading -9.85978 +▁slave -9.8605 +▁lock -9.8607 +▁base -9.86187 +▁steam -9.86204 +▁term -9.86288 +▁pointed -9.86301 +▁pipe -9.86304 +▁shade -9.86323 +▁invent -9.86325 +▁regret -9.86468 +▁alas -9.86474 +▁faithful -9.86713 +▁worked -9.86766 +▁bay -9.86795 +▁record -9.86801 +▁complain -9.86802 +▁mentioned -9.86831 +▁superior -9.86969 +▁hotel -9.87087 +▁seventy -9.87096 +▁sheep -9.87201 +▁advice -9.87304 +▁hidden -9.8732 +▁demanded -9.87361 +▁fore -9.8737 +▁meal -9.87387 +▁conscious -9.8739 +ky -9.87404 +▁possess -9.87473 +▁praise -9.87488 +▁brow -9.87501 +▁fourth -9.87589 +▁events -9.87621 +▁advanced -9.87786 +▁resolved -9.87809 +▁stuff -9.87809 +▁cheerful -9.87861 +▁fri -9.87884 +▁fairy -9.87922 +▁birth -9.87978 +▁afford -9.8798 +▁grief -9.87988 +▁sides -9.88093 +▁substance -9.88147 +▁article -9.88148 +▁level -9.8815 +▁wake -9.88165 +ville -9.88325 +▁joined -9.88349 +▁mist -9.88439 +▁practical -9.88486 +▁clearly -9.88488 +▁trace -9.88538 +▁awake -9.8864 +▁lack -9.88656 +▁basket -9.88656 +▁observe -9.88658 +ette -9.88747 +▁spirits -9.88853 +▁excited -9.88955 +▁abandon -9.88997 +▁shining -9.89001 +▁fully -9.89019 +▁calling -9.89202 +van -9.89205 +▁considerable -9.89318 +▁sprang -9.8934 +▁mile -9.89356 +▁dangerous -9.89425 +▁pounds -9.89446 +▁jew -9.89454 +▁fox -9.89599 +▁information -9.89684 +▁wit -9.89688 +▁deck -9.8973 +▁lies -9.8975 +▁paul -9.89839 +▁stars -9.90127 +▁anger -9.90188 +▁strain -9.90201 +▁faces -9.90244 +▁settle -9.90251 +▁adam -9.90281 +▁smith -9.90373 +▁citi -9.90381 +▁importance -9.90385 +▁feather -9.9072 +▁willing -9.90763 +▁served -9.90764 +▁author -9.90817 +▁perceived -9.90847 +▁haven -9.90898 +▁flame -9.90907 +▁divine -9.90945 +▁trail -9.91006 +▁anybody -9.91068 +▁sigh -9.91159 +▁delicate -9.91243 +▁desired -9.91307 +war -9.91329 +▁curiosity -9.91418 +▁practice -9.91418 +▁fold -9.91533 +▁absolutely -9.91541 +▁bottle -9.91607 +▁consideration -9.91616 +▁prop -9.91638 +▁meat -9.91639 +▁choose -9.91768 +▁occupied -9.91768 +▁interested -9.91782 +▁throat -9.91978 +▁candle -9.91985 +▁dawn -9.91996 +cha -9.92028 +▁protect -9.92033 +▁sentence -9.92088 +▁rocks -9.92105 +▁apparently -9.9218 +▁portion -9.92182 +▁aid -9.92242 +▁tight -9.92315 +▁actually -9.92396 +▁presented -9.92442 +▁dying -9.92675 +▁daily -9.92765 +▁political -9.92827 +▁bodies -9.92828 +▁suffered -9.9284 +▁modern -9.92845 +▁completely -9.92895 +▁sooner -9.92933 +▁advance -9.93029 +▁refused -9.93067 +▁farmer -9.93074 +▁polite -9.93183 +▁plate -9.93356 +▁thunder -9.93361 +▁elsie -9.93364 +▁sailor -9.93371 +▁brief -9.93374 +▁suggested -9.93403 +▁anti -9.93442 +▁flesh -9.93541 +▁buck -9.93573 +▁weep -9.93586 +▁dri -9.93665 +▁ocean -9.93719 +▁spend -9.93721 +▁odd -9.9377 +▁governor -9.93809 +well -9.93829 +▁entrance -9.93898 +▁suspicion -9.93898 +▁stepped -9.93935 +▁rapidly -9.93971 +▁check -9.93987 +low -9.94128 +▁club -9.94131 +▁flight -9.94132 +▁hide -9.94165 +▁entire -9.94167 +▁indians -9.94179 +▁sam -9.94213 +▁capital -9.94257 +▁mamma -9.94258 +▁jud -9.94284 +▁correct -9.94437 +▁haste -9.94579 +▁pace -9.9458 +▁crack -9.94583 +▁sensation -9.94619 +▁worst -9.94619 +▁driven -9.94787 +▁midst -9.94797 +▁august -9.94799 +▁proportion -9.94799 +▁innocent -9.94799 +ja -9.94854 +▁doors -9.94913 +▁regarded -9.95005 +▁education -9.95016 +▁employ -9.95052 +▁truly -9.95138 +liness -9.9516 +▁instrument -9.95161 +▁foolish -9.95213 +ility -9.95287 +▁frame -9.95289 +▁taught -9.95343 +▁nay -9.95365 +▁hang -9.95432 +▁argument -9.95525 +▁nineteen -9.95525 +▁elder -9.95574 +og -9.95638 +▁spar -9.95647 +▁papers -9.95683 +▁neighbor -9.957 +▁instruct -9.95708 +▁reward -9.95728 +▁fields -9.95806 +▁equally -9.95809 +▁needed -9.95816 +▁conditions -9.95965 +▁ways -9.95977 +▁request -9.96074 +▁worn -9.96075 +▁dig -9.96135 +▁load -9.96212 +▁remarkable -9.96225 +▁worship -9.96257 +▁park -9.96344 +▁interrupted -9.96393 +▁skill -9.96396 +▁critic -9.96441 +▁distress -9.96442 +▁belief -9.96442 +▁stern -9.9649 +▁track -9.96546 +▁hunting -9.96568 +▁jewel -9.96585 +▁gradually -9.96625 +▁glow -9.96653 +▁mental -9.96704 +▁rushed -9.96737 +▁powers -9.96763 +▁visitor -9.96783 +ight -9.96826 +▁behold -9.96859 +▁ski -9.96872 +▁picked -9.96903 +▁expressed -9.96991 +artagnan -9.96994 +▁moreover -9.96997 +▁keen -9.96998 +▁operation -9.97029 +▁careful -9.97036 +▁hence -9.97131 +▁wander -9.97162 +▁enemies -9.9718 +▁mysterious -9.9718 +▁assert -9.97181 +▁depth -9.97182 +ium -9.97185 +▁prefer -9.97198 +▁charming -9.97301 +▁crossed -9.97306 +▁dread -9.97315 +nnie -9.97438 +▁robin -9.97446 +▁relief -9.97556 +▁inquired -9.9758 +▁apple -9.97602 +▁urge -9.97616 +▁wings -9.97698 +▁choice -9.97737 +▁tre -9.97846 +▁species -9.97924 +▁delighted -9.97997 +▁rapid -9.98035 +▁appeal -9.98111 +▁famous -9.98111 +▁civili -9.98157 +▁helen -9.98168 +▁useful -9.9818 +▁card -9.98181 +▁newspaper -9.98298 +▁plenty -9.98298 +qua -9.98375 +▁bearing -9.98432 +▁nervous -9.98486 +▁rub -9.98727 +▁roar -9.98756 +▁wounded -9.98825 +▁chain -9.98829 +▁produce -9.98919 +▁reflection -9.99014 +▁baron -9.99026 +▁merchant -9.99051 +▁quarrel -9.99051 +▁glory -9.99051 +▁begun -9.99086 +▁queer -9.99244 +▁mix -9.9934 +▁whisper -9.99361 +rg -9.99439 +▁buried -9.9944 +▁bid -9.99446 +▁tip -9.99521 +▁frequently -9.99541 +▁div -9.99601 +▁knee -9.99684 +▁region -9.99813 +ctor -9.99893 +▁root -9.99909 +▁trip -9.99947 +▁jealous -10 +head -10.0005 +▁saved -10.0006 +▁pig -10.0007 +▁phil -10.0019 +▁union -10.0028 +▁ships -10.0029 +▁companions -10.0031 +▁approached -10.0038 +▁harry -10.0038 +▁arrival -10.0038 +▁drunk -10.0038 +▁slept -10.0038 +▁furnish -10.0038 +▁hale -10.0039 +▁para -10.004 +▁heap -10.0047 +▁absence -10.0058 +▁shoes -10.0065 +▁consciousness -10.0067 +▁kindly -10.008 +bel -10.0083 +▁evident -10.0089 +▁lest -10.0095 +▁grasp -10.0104 +▁steal -10.0106 +lon -10.0107 +▁knife -10.0115 +▁precious -10.0115 +▁element -10.0118 +▁proceeded -10.013 +▁fever -10.013 +▁leader -10.0134 +▁risk -10.0137 +▁ease -10.0139 +▁mount -10.0149 +▁meanwhile -10.0154 +▁century -10.0154 +▁grim -10.0155 +▁owe -10.0167 +▁judgment -10.0173 +▁arose -10.0174 +▁vision -10.0176 +▁sang -10.0177 +▁extreme -10.0186 +▁constant -10.0186 +▁asking -10.0188 +▁observation -10.0192 +▁thrust -10.0192 +▁delay -10.0193 +▁hit -10.0211 +▁includ -10.0212 +▁admire -10.0212 +▁lift -10.0219 +▁lesson -10.022 +▁friendship -10.0221 +▁spare -10.0222 +▁issue -10.0223 +▁principal -10.0231 +▁mourn -10.0232 +▁capable -10.0235 +▁burning -10.0241 +▁accepted -10.0242 +▁extraordinary -10.0251 +▁hoped -10.0256 +▁removed -10.0257 +▁horn -10.0261 +▁cent -10.0262 +▁alice -10.0272 +▁chap -10.028 +▁apartment -10.0284 +▁fighting -10.0284 +▁trembling -10.029 +▁somebody -10.029 +▁anyone -10.0291 +▁blame -10.0294 +▁bride -10.0299 +▁reader -10.0304 +▁everywhere -10.031 +▁labour -10.031 +▁recall -10.031 +▁rob -10.0317 +▁bull -10.0324 +▁council -10.0329 +▁popular -10.0329 +▁trial -10.0337 +▁wishes -10.0348 +▁dun -10.0349 +▁assured -10.0349 +▁brilliant -10.0349 +▁forgot -10.035 +▁cab -10.0352 +▁continue -10.0358 +▁acknowledg -10.0369 +▁retreat -10.0369 +▁increased -10.0374 +▁contempt -10.0389 +▁grandfather -10.0389 +▁sympathy -10.0389 +▁ghost -10.0389 +▁creatures -10.0407 +▁ken -10.0408 +▁stretched -10.0409 +▁playing -10.0415 +▁hind -10.0417 +▁members -10.0428 +▁miserable -10.0428 +▁kindness -10.0435 +▁gla -10.0444 +▁highest -10.0447 +aries -10.0457 +▁eighty -10.0467 +▁kissed -10.0468 +▁deserve -10.0468 +▁begged -10.0474 +▁hut -10.0478 +▁closely -10.0485 +▁wondered -10.0499 +▁larger -10.0505 +▁accordingly -10.0508 +▁military -10.0508 +▁remind -10.0508 +▁destroy -10.0527 +▁maintain -10.0528 +▁engine -10.0528 +▁motive -10.0529 +wick -10.0531 +▁strip -10.0543 +ison -10.0544 +▁hans -10.0548 +▁ahead -10.0562 +▁magic -10.0565 +▁infinite -10.0569 +▁prompt -10.0569 +▁informed -10.0571 +▁peer -10.0594 +▁pressed -10.0603 +▁somewhere -10.0609 +▁bought -10.0609 +▁trap -10.0621 +▁scar -10.0623 +▁visible -10.063 +▁ashamed -10.0631 +gar -10.0643 +▁neighbour -10.0649 +▁constitution -10.065 +▁intelligence -10.065 +▁tear -10.0651 +▁profession -10.0655 +▁hungry -10.0661 +▁smell -10.067 +▁listening -10.0671 +▁stories -10.0672 +▁approach -10.0676 +▁aim -10.0681 +▁ham -10.0682 +▁string -10.0684 +▁explanation -10.0691 +▁immense -10.0691 +▁religious -10.0691 +▁hollow -10.0691 +abeth -10.0691 +▁throughout -10.0691 +▁await -10.0691 +▁flying -10.0699 +cum -10.071 +▁scream -10.0711 +▁active -10.0716 +port -10.0718 +ett -10.0729 +▁product -10.0731 +▁unhappy -10.0731 +▁vague -10.0733 +▁stupid -10.0752 +▁dignity -10.0752 +▁isabel -10.0752 +▁pitch -10.0767 +▁comrade -10.0773 +▁reckon -10.0773 +▁stiff -10.0773 +rick -10.0779 +▁spark -10.078 +▁sold -10.0785 +▁stro -10.0806 +▁crying -10.0812 +▁repeat -10.0817 +▁comfortable -10.0831 +▁marked -10.0834 +▁project -10.0835 +▁becoming -10.0835 +▁parents -10.0835 +▁shelter -10.0836 +field -10.0839 +▁nest -10.0841 +▁stole -10.0843 +▁hint -10.0844 +▁trick -10.0849 +▁thoroughly -10.0852 +▁hospital -10.0855 +▁weapon -10.0855 +▁style -10.0856 +▁rome -10.0857 +▁admitted -10.0862 +▁safety -10.0866 +▁understanding -10.0871 +▁weary -10.0872 +▁slaves -10.088 +▁print -10.0886 +▁credit -10.0897 +▁unable -10.0914 +▁clouds -10.0917 +▁conclusion -10.0918 +▁seldom -10.0918 +▁unusual -10.0918 +▁hanging -10.0942 +▁david -10.096 +▁bowed -10.0963 +mond -10.0969 +▁pushed -10.0983 +▁escaped -10.0988 +▁warn -10.099 +▁betray -10.1002 +▁eggs -10.1024 +▁plainly -10.1028 +▁ser -10.1036 +▁exhibit -10.1044 +▁gay -10.1047 +▁display -10.1065 +▁member -10.1066 +▁grin -10.1078 +▁prospect -10.1086 +▁brush -10.1086 +▁waves -10.1087 +▁successful -10.11 +▁extent -10.1108 +▁persuade -10.1129 +▁mood -10.1136 +▁mid -10.1138 +▁arranged -10.115 +▁universal -10.115 +▁jim -10.1153 +▁signal -10.116 +▁whilst -10.1172 +▁wolf -10.1172 +▁philip -10.1173 +▁billy -10.1195 +▁eagerly -10.1196 +▁returning -10.1207 +▁conscience -10.1215 +▁fortunate -10.1215 +▁gleam -10.1215 +▁female -10.1215 +▁hastily -10.1216 +▁provided -10.1218 +▁obtain -10.1221 +▁render -10.1221 +▁instinct -10.1236 +▁concerning -10.1239 +▁concerned -10.1241 +▁rum -10.1247 +▁vol -10.1256 +▁somehow -10.1258 +▁gall -10.1259 +▁pink -10.126 +▁artist -10.1267 +▁accustomed -10.128 +▁unconscious -10.128 +▁advise -10.128 +mmed -10.1283 +▁tiny -10.1288 +▁mud -10.1288 +▁branches -10.1291 +▁refuse -10.1294 +▁rage -10.1295 +▁bishop -10.1301 +▁supply -10.1301 +▁peasant -10.1301 +▁lawyer -10.1302 +▁connection -10.1306 +▁develop -10.1316 +▁correspond -10.1323 +▁rang -10.1325 +house -10.1336 +▁plum -10.1345 +▁nodded -10.1345 +▁slipped -10.1347 +▁kit -10.1349 +▁constantly -10.1352 +▁earl -10.1356 +▁fairly -10.1365 +▁features -10.138 +▁pause -10.1384 +▁painful -10.1388 +▁super -10.1397 +▁laughter -10.1399 +▁whence -10.14 +▁opera -10.1401 +▁joe -10.1402 +▁eating -10.1408 +▁christmas -10.1411 +time -10.1412 +▁wholly -10.1416 +▁apart -10.1418 +▁coach -10.1418 +▁crew -10.143 +▁cheeks -10.1431 +▁revolution -10.1432 +▁lonely -10.1433 +▁attain -10.1433 +▁luc -10.1436 +▁established -10.1437 +▁throne -10.1439 +▁dash -10.144 +▁friendly -10.1443 +▁exhaust -10.1454 +▁cliff -10.1455 +▁reveal -10.1455 +▁adopt -10.1455 +▁centre -10.1457 +▁merry -10.1469 +▁sylvia -10.1477 +▁misfortune -10.1499 +▁feast -10.1499 +▁arab -10.1509 +▁fetch -10.1521 +▁descend -10.153 +ick -10.1531 +▁nut -10.1542 +▁fought -10.1543 +ko -10.1545 +▁setting -10.1558 +▁source -10.1566 +▁persist -10.1566 +▁mercy -10.1571 +▁compare -10.1581 +▁deeply -10.1584 +▁pile -10.1584 +▁attitude -10.1588 +▁delightful -10.1597 +▁endure -10.1602 +▁patience -10.161 +▁local -10.161 +▁victory -10.1615 +▁uttered -10.1622 +▁treated -10.1623 +▁separate -10.1626 +▁dragg -10.1627 +▁beard -10.1643 +▁rear -10.1652 +▁tied -10.1657 +▁title -10.1657 +▁triumph -10.1674 +▁gained -10.1688 +▁defend -10.17 +bury -10.1714 +▁increase -10.1717 +▁bark -10.172 +▁fled -10.1725 +▁pond -10.1728 +▁conquer -10.1746 +▁forehead -10.1746 +▁wag -10.1749 +▁organi -10.1751 +▁anxiety -10.1768 +▁encounter -10.1768 +▁sex -10.1773 +▁sank -10.1779 +▁halt -10.1784 +ella -10.1789 +▁cheek -10.1792 +▁writer -10.1793 +chi -10.1796 +▁employed -10.1805 +▁humble -10.1806 +▁raise -10.181 +▁troops -10.1814 +▁distinguished -10.1816 +▁giant -10.1821 +▁sink -10.1822 +▁flag -10.1826 +car -10.1826 +▁obtained -10.183 +▁discovery -10.1836 +▁national -10.1842 +▁jumped -10.1842 +▁commission -10.1859 +▁positive -10.1859 +▁loving -10.186 +▁exact -10.1861 +▁ideal -10.1862 +▁range -10.1864 +▁refer -10.1874 +▁murmured -10.1877 +▁encourage -10.1882 +▁college -10.1882 +▁novel -10.1884 +worth -10.1892 +▁mortal -10.1906 +▁fan -10.1914 +▁rolled -10.1915 +▁guilty -10.1918 +▁victor -10.1926 +▁approaching -10.1945 +▁relative -10.1952 +▁estate -10.1952 +▁ugly -10.1952 +▁metal -10.1967 +▁dared -10.1969 +▁boots -10.1969 +▁robert -10.1976 +▁clock -10.198 +▁admiration -10.1998 +▁fourteen -10.1998 +▁witch -10.1999 +▁barbar -10.2001 +▁pra -10.2017 +▁cake -10.2022 +▁shone -10.2025 +▁managed -10.2031 +▁volume -10.2045 +▁greek -10.2045 +▁dancing -10.2045 +j -10.2055 +▁wretched -10.2055 +▁condemn -10.2068 +▁magnificent -10.2068 +▁consult -10.2068 +▁fleet -10.2083 +▁arrangement -10.2092 +▁incident -10.2092 +▁misery -10.2092 +▁arrow -10.2094 +▁stroke -10.2099 +▁assist -10.21 +▁succeed -10.2108 +▁recent -10.2109 +▁build -10.211 +▁desperate -10.2115 +▁widow -10.2115 +▁market -10.2129 +fall -10.213 +▁wisdom -10.2139 +▁current -10.2139 +▁spoil -10.2139 +▁resist -10.2161 +▁obvious -10.2163 +▁sensible -10.2163 +▁wooden -10.2166 +▁addressed -10.2184 +▁bade -10.2185 +▁counsel -10.2186 +▁select -10.2186 +▁purchase -10.2186 +▁useless -10.2187 +▁fin -10.2195 +▁bringing -10.2207 +▁arrest -10.221 +▁stared -10.2212 +▁poison -10.2213 +▁gil -10.2214 +▁swallow -10.2234 +▁anna -10.2234 +rate -10.2234 +▁slid -10.2236 +▁block -10.2237 +▁sport -10.2242 +▁ninety -10.2245 +▁provide -10.2255 +▁lamb -10.2259 +▁interval -10.226 +▁described -10.228 +▁provision -10.2282 +▁striking -10.2282 +▁proposed -10.2285 +▁jump -10.2287 +▁suggest -10.2303 +▁melancholy -10.2306 +▁warrior -10.2306 +▁burden -10.2308 +▁departure -10.2309 +▁limb -10.2316 +▁troubled -10.2325 +▁meadow -10.233 +▁sacred -10.233 +▁straw -10.233 +▁tru -10.2332 +▁solid -10.2334 +▁soil -10.2348 +▁lucy -10.2348 +▁civil -10.2348 +▁recover -10.2348 +▁energy -10.2354 +▁powder -10.2354 +▁resumed -10.2354 +▁intense -10.2354 +▁british -10.2378 +▁agreeable -10.2389 +▁trot -10.2393 +▁everyone -10.2393 +▁concern -10.2394 +▁voyage -10.2402 +▁southern -10.2402 +▁bosom -10.2406 +▁utterly -10.2424 +▁essential -10.2426 +▁feed -10.2427 +▁household -10.243 +▁extremely -10.2434 +▁wondering -10.2435 +▁list -10.2446 +▁experiment -10.2451 +▁joseph -10.2451 +▁mystery -10.2451 +▁restore -10.2455 +▁blush -10.2456 +fold -10.2459 +▁lap -10.2464 +▁chosen -10.2471 +▁epi -10.2472 +▁intellect -10.2475 +▁curtain -10.2475 +ology -10.2475 +▁pine -10.2477 +▁mounted -10.2481 +har -10.249 +▁punish -10.2492 +▁drift -10.2502 +▁wedding -10.2506 +▁ko -10.2508 +▁preparation -10.2524 +▁resolution -10.2524 +▁oppress -10.2524 +▁fix -10.2535 +▁sch -10.2548 +▁victim -10.2549 +▁summon -10.2549 +▁julia -10.2549 +▁flood -10.2551 +▁slightly -10.257 +▁lodge -10.2578 +▁unexpected -10.2598 +▁confusion -10.2598 +▁addition -10.2598 +▁conceive -10.2598 +▁jesus -10.2599 +▁wire -10.2608 +long -10.2615 +▁rude -10.2624 +▁fatal -10.2627 +▁patch -10.2629 +▁careless -10.2629 +▁vari -10.2635 +▁wal -10.2643 +▁catherine -10.2647 +▁parliament -10.2647 +▁profound -10.2647 +▁aloud -10.2648 +▁relieve -10.2649 +▁push -10.266 +▁accompanied -10.2672 +▁sovereign -10.2672 +▁singular -10.2672 +▁composed -10.2672 +▁assistance -10.2676 +▁echo -10.2678 +▁shaking -10.2679 +▁teacher -10.2684 +▁horrible -10.2697 +▁strict -10.2697 +▁gown -10.2703 +▁punishment -10.2704 +▁verse -10.2712 +atory -10.2712 +▁mistaken -10.2716 +▁swept -10.2722 +▁gesture -10.2722 +▁steel -10.2724 +▁bush -10.2735 +▁affected -10.2739 +▁directed -10.2745 +▁absurd -10.2747 +▁surrounded -10.2747 +▁scrap -10.2749 +▁sugar -10.2749 +▁immediate -10.2753 +▁saddle -10.2753 +▁sighed -10.2768 +▁govern -10.2768 +▁pea -10.2769 +▁snap -10.2769 +▁arise -10.277 +▁exchange -10.2772 +▁impatient -10.2772 +▁whip -10.2794 +▁stretch -10.2797 +▁embrace -10.2798 +▁disease -10.2798 +▁profit -10.2798 +▁riding -10.2802 +▁recovered -10.2803 +▁convinced -10.2814 +▁leaning -10.2815 +▁domestic -10.2823 +▁complex -10.2823 +▁manifest -10.2823 +▁indulge -10.2823 +▁genius -10.2824 +▁agent -10.2841 +▁veil -10.2841 +▁description -10.2848 +▁inclined -10.2848 +▁deceive -10.2848 +▁mac -10.2851 +▁darling -10.2861 +▁reign -10.2866 +▁enormous -10.2874 +▁restrain -10.2874 +▁duties -10.2876 +▁enable -10.2899 +ttered -10.2902 +▁pole -10.2906 +▁exception -10.292 +▁intimate -10.2925 +▁countess -10.2927 +▁tribe -10.2931 +▁oil -10.2938 +cast -10.2944 +▁handkerchief -10.295 +▁midnight -10.295 +▁problem -10.295 +▁reli -10.2951 +▁unre -10.2952 +▁crush -10.2959 +▁discuss -10.296 +▁tramp -10.296 +▁whirl -10.2977 +▁hori -10.2985 +hin -10.2992 +▁official -10.3001 +▁drown -10.3002 +▁pierre -10.3002 +▁scheme -10.3002 +▁locked -10.3006 +▁permitted -10.3007 +▁carr -10.3007 +▁connected -10.3008 +▁assure -10.3015 +▁cock -10.3018 +▁utmost -10.3027 +▁devoted -10.3027 +▁sufficiently -10.3036 +ulation -10.304 +▁intellectual -10.3053 +▁carpet -10.3053 +▁objection -10.3062 +▁afterward -10.3067 +▁reality -10.3067 +cho -10.3068 +gate -10.3074 +▁negro -10.3079 +▁retain -10.3079 +▁ascend -10.3079 +▁cease -10.308 +▁marvel -10.3081 +most -10.3086 +▁bond -10.3092 +▁kate -10.3101 +▁breaking -10.3104 +▁coal -10.3105 +▁ignorant -10.3106 +▁twin -10.3109 +▁astonishment -10.3131 +▁coffee -10.3131 +▁execut -10.3146 +▁origin -10.3147 +▁final -10.3151 +▁inhabitants -10.3157 +▁stable -10.3164 +▁parties -10.3169 +▁cities -10.3169 +▁generous -10.3183 +▁describe -10.3185 +▁jar -10.3187 +▁plunge -10.3192 +▁announced -10.3202 +▁merit -10.3207 +▁ere -10.3222 +▁disappoint -10.3228 +▁suggestion -10.3233 +▁doubtless -10.3234 +▁trunk -10.3236 +▁job -10.3253 +▁stamp -10.3257 +▁divided -10.3258 +▁appointed -10.3259 +▁acquainted -10.3262 +▁absolute -10.327 +▁fearful -10.3279 +▁privilege -10.3289 +▁steep -10.3291 +▁vote -10.3291 +▁craft -10.3296 +▁hunter -10.3296 +▁modest -10.3303 +▁forbid -10.3305 +▁endeavour -10.3315 +▁sweep -10.3315 +▁beheld -10.3315 +acious -10.332 +▁absorb -10.3342 +▁construct -10.3342 +▁expedition -10.3342 +▁empire -10.3342 +▁erect -10.3343 +▁offend -10.3344 +▁intend -10.3351 +▁chin -10.3356 +▁permit -10.3363 +▁contract -10.3368 +▁thirst -10.3369 +▁destroyed -10.337 +▁ger -10.3375 +▁wagon -10.3378 +▁gloom -10.3393 +▁atmosphere -10.3395 +▁reserve -10.3395 +lock -10.3412 +▁nonsense -10.3422 +▁prevail -10.3422 +▁quality -10.3422 +▁clasp -10.3422 +▁concluded -10.3426 +▁katy -10.3433 +▁eternal -10.3449 +▁neglect -10.3449 +▁creep -10.345 +▁squire -10.345 +▁muttered -10.3452 +▁electric -10.3452 +▁hay -10.3456 +▁expense -10.3476 +▁scorn -10.3476 +▁retired -10.3476 +▁murmur -10.3482 +▁stout -10.3484 +▁sharply -10.35 +▁district -10.3503 +▁leaf -10.3503 +▁failure -10.3507 +▁numerous -10.353 +▁infant -10.3531 +▁traveller -10.3535 +▁crep -10.354 +▁june -10.3547 +work -10.3547 +▁hunger -10.3548 +▁recommend -10.3557 +▁jean -10.3562 +▁richard -10.3571 +▁monte -10.3588 +▁preach -10.3593 +▁palm -10.3594 +▁tap -10.36 +▁anywhere -10.3612 +▁disposition -10.3612 +▁mirror -10.3612 +▁venture -10.3616 +▁pound -10.3638 +▁cigar -10.3639 +▁invited -10.364 +▁bench -10.3645 +▁protection -10.3653 +▁benefit -10.3667 +▁thomas -10.3667 +▁reproach -10.3694 +▁clerk -10.3694 +hu -10.3707 +▁uniform -10.3722 +▁generation -10.3722 +▁compass -10.3722 +▁warning -10.3723 +▁extended -10.3728 +▁difficulties -10.3731 +▁affect -10.374 +▁maybe -10.3741 +▁comb -10.3743 +▁seal -10.3743 +▁groan -10.3743 +▁western -10.3751 +▁chop -10.3753 +▁earn -10.3756 +▁score -10.3758 +▁idle -10.3761 +▁astonished -10.3777 +▁introduced -10.3777 +▁lieutenant -10.3777 +▁leisure -10.3777 +▁violence -10.3777 +▁firmly -10.3778 +▁monster -10.3784 +▁properly -10.3785 +▁rendered -10.3797 +▁twist -10.3805 +▁pirate -10.3807 +▁batter -10.3808 +▁robber -10.3809 +▁wept -10.3815 +▁descended -10.3821 +▁throwing -10.3822 +▁leaned -10.3823 +▁ornament -10.3834 +▁andrew -10.3839 +▁capture -10.3841 +▁bushes -10.3852 +▁republic -10.3861 +▁confident -10.3862 +▁lean -10.3902 +▁date -10.3904 +▁counter -10.3909 +▁northern -10.3918 +▁pearl -10.3924 +▁nearest -10.3933 +▁francis -10.3946 +▁wandering -10.3948 +▁frequent -10.3957 +▁startled -10.3961 +▁statement -10.3965 +▁occur -10.3971 +▁bloom -10.3974 +▁nerve -10.3974 +▁induce -10.3978 +▁flatter -10.3984 +▁ambition -10.4002 +▁madam -10.4005 +▁monk -10.4018 +▁rent -10.4023 +▁investigat -10.4031 +▁rabbit -10.4031 +▁confirm -10.4031 +▁regiment -10.4031 +▁submit -10.4031 +▁spell -10.4032 +▁eva -10.4033 +▁slope -10.4036 +▁furious -10.4037 +▁bestow -10.4047 +▁rail -10.4057 +▁ralph -10.4059 +▁compelled -10.4059 +▁thread -10.4059 +▁scattered -10.406 +▁deny -10.4067 +▁curl -10.4068 +▁chill -10.4075 +▁pronounc -10.4088 +▁mankind -10.4088 +▁cattle -10.4091 +▁male -10.4097 +▁execution -10.41 +▁tide -10.4115 +▁supreme -10.4117 +▁valuable -10.4117 +▁likewise -10.4117 +▁convey -10.4117 +▁gloomy -10.4119 +▁coin -10.4122 +▁actual -10.4129 +▁fog -10.4136 +▁tax -10.4139 +▁province -10.4146 +▁grateful -10.4146 +▁spiritual -10.4146 +▁vanished -10.4146 +▁diana -10.4146 +▁haunt -10.4146 +▁dragon -10.4151 +▁crawl -10.4153 +▁neat -10.4154 +▁china -10.4171 +▁gratitude -10.4174 +▁gasp -10.4179 +▁irre -10.419 +▁finish -10.4193 +▁intent -10.4198 +▁fright -10.4202 +▁embarrass -10.4203 +▁thirteen -10.4203 +▁ruth -10.4209 +▁slightest -10.4212 +▁development -10.4213 +▁interview -10.4233 +▁spectacle -10.4233 +▁brook -10.4233 +▁weakness -10.4255 +▁audience -10.4262 +▁consequently -10.4262 +▁abroad -10.4262 +▁release -10.4262 +▁aspect -10.4263 +▁painted -10.4263 +▁insult -10.4263 +▁sooth -10.4269 +▁disappointment -10.427 +▁emerg -10.4271 +▁brig -10.4284 +▁esteem -10.4291 +▁publish -10.4291 +▁passenger -10.4291 +▁invitation -10.4291 +▁piano -10.4291 +▁irish -10.4295 +▁desk -10.4297 +▁beaten -10.4318 +▁fifth -10.432 +▁impulse -10.432 +▁swear -10.432 +▁purple -10.4322 +▁committed -10.4324 +▁countries -10.4327 +▁perceive -10.4328 +▁eaten -10.4329 +▁celebrat -10.435 +▁grandmother -10.435 +▁shudder -10.435 +▁spanish -10.435 +▁sunshine -10.435 +▁hitherto -10.4352 +▁amid -10.4366 +▁mock -10.4378 +▁marilla -10.4379 +▁snake -10.4379 +▁interfere -10.4381 +▁walter -10.4385 +▁marble -10.4388 +terior -10.4394 +▁mission -10.4399 +▁boot -10.4407 +▁furniture -10.4409 +▁driving -10.4409 +▁steady -10.4409 +stead -10.4414 +▁circumstance -10.4417 +▁interpret -10.4438 +▁enchant -10.4438 +▁error -10.4439 +▁conviction -10.4449 +▁helpless -10.445 +▁qualities -10.4468 +▁medicine -10.4468 +▁italian -10.447 +▁hastened -10.4472 +▁occasionally -10.4474 +▁pursued -10.4475 +ux -10.4475 +▁hesitated -10.4493 +▁chase -10.4496 +▁independent -10.4498 +▁oliver -10.4498 +▁linger -10.4503 +▁examined -10.4508 +▁repent -10.4521 +▁physician -10.4528 +▁beloved -10.4558 +▁attached -10.4558 +▁florence -10.4558 +▁honey -10.4565 +▁mouse -10.4569 +▁cries -10.457 +▁poem -10.4573 +▁ram -10.4588 +▁destruction -10.4588 +▁messenger -10.4588 +▁tristram -10.4588 +▁fulfil -10.4588 +▁fancied -10.4588 +▁excess -10.4588 +▁bake -10.4604 +mont -10.4613 +▁thornton -10.4618 +▁quantity -10.4618 +▁wh -10.4628 +▁created -10.4633 +▁curse -10.4637 +▁continually -10.4638 +▁lightning -10.4642 +▁borne -10.4669 +▁mild -10.4673 +ttle -10.4677 +▁disposed -10.4679 +▁rifle -10.4679 +▁polly -10.468 +▁goat -10.4682 +▁total -10.4686 +▁virginia -10.4689 +▁backward -10.469 +▁peril -10.469 +▁kick -10.4691 +▁quo -10.4702 +▁glorious -10.471 +▁multitude -10.471 +▁leather -10.471 +▁absent -10.471 +▁demon -10.4711 +▁torture -10.4711 +▁debt -10.4712 +▁accord -10.4725 +▁catholic -10.474 +▁pill -10.475 +▁flour -10.4764 +▁library -10.4771 +▁pursuit -10.4771 +▁shirt -10.4771 +▁dearest -10.4772 +▁collar -10.4773 +▁declare -10.4781 +▁tempt -10.4784 +▁branch -10.4785 +▁steadily -10.4802 +▁disgust -10.4802 +▁silly -10.4803 +▁robe -10.481 +▁arrive -10.4812 +▁drank -10.4832 +▁communicat -10.4847 +▁mate -10.485 +▁rachel -10.4863 +▁washington -10.4863 +▁resign -10.4864 +▁meantime -10.4867 +▁engagement -10.4869 +▁separated -10.4872 +▁quiver -10.4872 +▁discussion -10.4882 +▁ventured -10.489 +▁nail -10.4894 +▁surrounding -10.4894 +▁polish -10.4895 +▁lace -10.4896 +▁swell -10.4906 +▁lincoln -10.4926 +▁student -10.4926 +▁glitter -10.4926 +▁joke -10.4931 +▁russian -10.4941 +▁readily -10.4943 +▁poverty -10.4957 +▁disgrace -10.4957 +▁heavily -10.4957 +▁cheese -10.4957 +▁staff -10.4984 +▁entreat -10.4988 +▁farewell -10.4988 +▁lunch -10.4988 +▁peep -10.4989 +▁someone -10.4997 +▁chris -10.5008 +▁disappear -10.5012 +▁decision -10.502 +▁pistol -10.502 +▁spur -10.5021 +▁assumed -10.5027 +▁extend -10.5044 +▁definite -10.5051 +▁enthusiasm -10.5051 +▁undertake -10.5052 +▁committee -10.5083 +▁simon -10.5083 +▁scale -10.5094 +▁applied -10.5115 +▁fence -10.5115 +▁related -10.5117 +▁vice -10.5129 +▁unpleasant -10.5146 +▁probable -10.5146 +▁procure -10.5147 +▁frown -10.515 +istic -10.5168 +▁cloak -10.5182 +▁humanity -10.5191 +▁dwarf -10.521 +▁families -10.521 +▁philosopher -10.521 +▁overcome -10.521 +▁defeat -10.5211 +▁plac -10.5215 +▁fastened -10.5217 +▁tomb -10.5219 +▁classes -10.5236 +▁marsh -10.5239 +▁gracious -10.5243 +▁remote -10.5243 +▁cell -10.5247 +▁shriek -10.5275 +▁rescue -10.5276 +▁chose -10.5281 +▁pool -10.529 +▁slo -10.5298 +▁cutting -10.5301 +▁coward -10.5307 +▁dirty -10.5307 +▁border -10.5307 +▁hook -10.5308 +▁monkey -10.5308 +▁chuck -10.5311 +▁weigh -10.5321 +▁emily -10.5325 +▁jest -10.5328 +▁mule -10.5328 +▁associate -10.534 +▁glimpse -10.534 +▁stuck -10.534 +▁bolt -10.5369 +▁murderer -10.538 +▁pony -10.5385 +▁rattl -10.5401 +▁distinguish -10.5401 +▁institution -10.5405 +▁cunning -10.5405 +▁compliment -10.5405 +▁spin -10.5406 +▁appetite -10.5438 +▁reputation -10.5438 +▁feeble -10.5438 +▁series -10.5452 +▁graceful -10.5457 +▁phrase -10.5471 +▁platform -10.5471 +▁clay -10.5481 +▁opposition -10.5504 +▁boast -10.5505 +▁lane -10.551 +▁growth -10.5527 +▁inclination -10.5537 +▁behave -10.5537 +▁susan -10.5538 +▁dislike -10.5543 +▁distinction -10.5545 +▁illustrat -10.557 +▁nicholas -10.557 +▁satisfy -10.557 +▁drama -10.557 +▁elbow -10.557 +▁consum -10.5571 +▁oath -10.5586 +▁channel -10.5603 +▁spear -10.5603 +▁slain -10.5603 +▁characteristic -10.5605 +▁sauce -10.5609 +▁frog -10.5629 +▁conception -10.5637 +▁timid -10.5637 +▁apparent -10.5659 +▁center -10.567 +▁variety -10.567 +▁dusk -10.5679 +shire -10.5689 +▁apt -10.5693 +▁column -10.5704 +▁revenge -10.5704 +▁rival -10.571 +▁imitat -10.571 +▁passionate -10.5716 +▁selfish -10.5721 +▁norman -10.5725 +▁extra -10.5737 +▁repair -10.5738 +▁thrill -10.5738 +▁treatment -10.5747 +▁rosa -10.575 +▁organ -10.5768 +▁martin -10.5771 +▁indifferent -10.5772 +▁thither -10.5772 +▁pepper -10.5772 +▁gallant -10.5776 +▁recollect -10.5784 +▁scarce -10.5804 +▁trembled -10.5804 +▁shield -10.5806 +▁mingled -10.5806 +▁brick -10.5829 +▁harsh -10.583 +▁humor -10.5838 +▁mischief -10.584 +▁tremendous -10.584 +▁function -10.584 +▁smart -10.584 +▁sultan -10.5874 +▁dismiss -10.5874 +▁threatened -10.5875 +ji -10.5876 +▁cheap -10.5878 +▁vine -10.5878 +▁flock -10.5898 +▁endeavor -10.5908 +▁italy -10.5912 +▁flutter -10.5913 +▁whisk -10.5916 +▁waist -10.5922 +▁monarch -10.5943 +▁smoking -10.5943 +▁africa -10.5943 +▁accuse -10.5943 +▁herbert -10.5946 +▁refresh -10.5977 +▁rejoice -10.5977 +▁pillow -10.5979 +▁hopeless -10.5989 +▁poetry -10.5991 +▁perish -10.6007 +▁philosophy -10.6012 +▁bernard -10.6012 +▁whistle -10.6013 +▁lament -10.6014 +▁expectation -10.6028 +▁improve -10.6034 +▁fountain -10.6047 +▁perplex -10.6047 +▁despise -10.6047 +▁league -10.6047 +▁narrat -10.6047 +▁ignorance -10.6049 +▁reference -10.6051 +▁sunk -10.6052 +sail -10.6055 +▁wip -10.6057 +▁duck -10.6068 +▁partner -10.6076 +▁grove -10.6081 +▁prophet -10.6082 +▁shiver -10.6083 +▁neighbourhood -10.6083 +▁purse -10.6084 +▁representative -10.6084 +▁precisely -10.6104 +▁angle -10.6115 +▁acquired -10.6117 +▁chimney -10.6117 +▁doctrine -10.6117 +▁maxim -10.6117 +▁majority -10.6132 +▁autumn -10.6152 +▁cristo -10.6152 +▁disguise -10.6152 +▁achieve -10.6152 +▁confused -10.6152 +▁reduced -10.6152 +▁earlier -10.6155 +▁theatre -10.616 +▁decide -10.6172 +ological -10.6188 +▁continent -10.6188 +▁occupation -10.6188 +▁vigorous -10.6188 +▁decline -10.6188 +▁community -10.6193 +▁motionless -10.6198 +▁hatred -10.6205 +▁communication -10.6206 +▁determin -10.6218 +▁comment -10.6223 +▁approve -10.6223 +▁ceremony -10.6223 +▁criminal -10.6223 +▁scientific -10.6223 +▁duchess -10.6223 +▁vivid -10.6223 +▁shift -10.6223 +▁avail -10.6224 +▁bowl -10.6234 +▁johnson -10.6241 +▁contrast -10.6259 +▁slender -10.6259 +▁amusement -10.6259 +▁plot -10.6259 +▁damp -10.6261 +▁association -10.6294 +▁uncertain -10.6294 +▁snatch -10.6294 +▁pressure -10.6299 +▁apply -10.6306 +▁restless -10.6311 +▁perch -10.6315 +▁notwithstanding -10.633 +▁swung -10.633 +▁planet -10.633 +▁stirred -10.6337 +▁attendant -10.634 +▁thro -10.6354 +▁enjoyment -10.6364 +▁worry -10.6366 +▁albert -10.6366 +▁naked -10.6367 +▁talent -10.6372 +▁marian -10.6387 +▁reform -10.639 +▁lyn -10.6402 +▁deliberate -10.6402 +▁intelligent -10.6402 +▁sensitive -10.6402 +▁yonder -10.6402 +▁pupil -10.6402 +▁frightful -10.6409 +▁doubtful -10.6411 +▁standard -10.6423 +▁deposit -10.6439 +▁magistrate -10.6439 +▁shepherd -10.6439 +▁stomach -10.6439 +▁renew -10.6439 +▁hedge -10.6458 +▁possibility -10.6475 +▁fatigue -10.6475 +▁francs -10.6475 +▁portrait -10.6475 +▁resemble -10.6475 +▁favorite -10.6477 +▁cream -10.6491 +▁pope -10.651 +▁secretary -10.6524 +▁divers -10.6526 +▁activity -10.6548 +▁speculat -10.6548 +▁humour -10.6553 +▁fitted -10.6575 +▁external -10.6585 +▁cetera -10.6585 +▁wrapped -10.6586 +▁jaw -10.6612 +▁fred -10.6615 +▁examination -10.6622 +▁lodging -10.6622 +▁crow -10.6623 +▁owing -10.6625 +▁balance -10.6631 +▁puff -10.6644 +▁tenderness -10.6648 +▁porthos -10.6659 +▁anchor -10.666 +▁interrupt -10.6668 +▁driver -10.6689 +▁necessarily -10.6696 +▁perpetual -10.6696 +▁agony -10.6703 +▁scholar -10.6733 +▁scotland -10.6733 +▁suppress -10.6733 +▁wrath -10.6733 +▁wreck -10.6733 +▁exceed -10.6734 +▁perfection -10.6758 +▁doorway -10.6765 +▁india -10.6766 +▁clergy -10.6771 +▁tradition -10.6771 +▁section -10.6771 +▁eastern -10.6771 +▁wives -10.6774 +▁convention -10.6779 +▁announc -10.6782 +▁egypt -10.6797 +▁contradict -10.6808 +▁scratch -10.6808 +▁glove -10.6808 +▁central -10.6808 +▁wax -10.6826 +ifying -10.6831 +▁prepare -10.6833 +▁accompany -10.6846 +▁increasing -10.6846 +▁liberal -10.6846 +▁raising -10.6846 +▁orange -10.6847 +▁shoe -10.687 +▁attribute -10.6884 +▁literature -10.6884 +▁withdraw -10.6884 +▁hawk -10.6885 +thorpe -10.6886 +▁whither -10.6887 +▁moonlight -10.6887 +▁examine -10.6909 +▁happily -10.6922 +▁precede -10.6925 +▁detective -10.6927 +▁inches -10.6927 +▁solitary -10.696 +▁dutch -10.696 +▁napoleon -10.6998 +▁uneasy -10.6998 +▁cardinal -10.6998 +▁blew -10.6999 +▁fowl -10.6999 +▁decorat -10.6999 +▁childhood -10.7009 +▁torment -10.7012 +▁scent -10.7016 +▁losing -10.7024 +▁permission -10.7037 +▁blank -10.707 +▁upstairs -10.7075 +▁capacity -10.7075 +▁trifle -10.7076 +▁folly -10.7076 +▁remove -10.7102 +▁vengeance -10.7114 +▁enterprise -10.7114 +▁bedroom -10.7114 +▁anyhow -10.7114 +▁inquiry -10.7115 +▁ashes -10.714 +▁hush -10.7148 +▁awkward -10.7153 +▁saturday -10.7153 +▁genuine -10.7153 +▁surviv -10.7154 +▁drag -10.7156 +▁skirt -10.7156 +▁affectionate -10.7163 +▁tang -10.7179 +▁mutual -10.7192 +▁dispute -10.7192 +▁eagle -10.7192 +▁income -10.7193 +▁bind -10.7201 +▁wilt -10.7204 +▁fame -10.7206 +▁improvement -10.7208 +▁differ -10.7224 +▁awoke -10.7231 +▁sleeve -10.7231 +▁solitude -10.7231 +▁favourite -10.7234 +▁detect -10.7266 +▁comprehend -10.7271 +▁preparing -10.7271 +▁serpent -10.7271 +▁summit -10.7271 +▁knot -10.7271 +▁knit -10.7271 +▁copy -10.7271 +▁woe -10.7273 +▁stopping -10.7274 +▁faded -10.7274 +▁hideous -10.7279 +▁julie -10.7279 +▁shine -10.7306 +▁axe -10.731 +▁conflict -10.731 +▁proposition -10.731 +▁refuge -10.731 +▁gallery -10.731 +▁bundle -10.7311 +▁slavery -10.7324 +▁mask -10.733 +▁alyosha -10.735 +▁ladder -10.7359 +▁department -10.737 +▁discharge -10.739 +▁depress -10.739 +▁scarlet -10.7392 +▁gallop -10.7394 +▁kitty -10.7397 +▁paw -10.7403 +▁receiving -10.743 +▁surrender -10.743 +▁sustain -10.743 +▁twilight -10.743 +▁congress -10.743 +▁ireland -10.7431 +▁funny -10.7435 +▁lend -10.7459 +▁constitute -10.747 +▁crystal -10.747 +▁lofty -10.747 +▁funeral -10.747 +▁spain -10.747 +▁exceedingly -10.747 +▁damn -10.7473 +▁commun -10.7503 +▁prejudice -10.751 +▁porch -10.7511 +▁assistant -10.7515 +▁today -10.7521 +▁smot -10.7543 +▁enclos -10.7545 +▁industry -10.7551 +▁defence -10.7551 +▁hither -10.7554 +▁coloni -10.7567 +▁marguerite -10.7591 +▁miracle -10.7591 +▁inherit -10.7592 +▁beggar -10.7594 +▁unlike -10.7613 +▁envelope -10.7632 +▁indignation -10.7632 +▁natasha -10.7632 +▁proposal -10.7632 +▁fragment -10.7632 +▁roast -10.7634 +▁roused -10.7635 +encies -10.7651 +▁commenced -10.7673 +▁resource -10.7673 +▁population -10.7673 +▁quoth -10.7683 +▁tumble -10.7702 +▁pursue -10.7705 +▁educat -10.7706 +▁afflict -10.7714 +▁contact -10.7714 +▁crimson -10.7714 +▁division -10.7714 +▁disorder -10.7714 +▁copper -10.7715 +▁moderate -10.7716 +▁drum -10.772 +▁swim -10.7727 +▁salute -10.7732 +▁assume -10.7746 +▁nav -10.7747 +▁emphasi -10.7756 +▁overwhelm -10.7756 +▁shakespeare -10.7756 +▁struggling -10.7756 +▁tranquil -10.7756 +▁muscle -10.7756 +▁chicken -10.7756 +▁tread -10.7761 +▁claw -10.7764 +▁solicit -10.7766 +▁bible -10.778 +▁threat -10.7796 +▁velvet -10.7797 +▁exposed -10.7797 +▁idiot -10.7797 +▁barrel -10.7798 +▁ripe -10.7799 +▁penny -10.7809 +▁temptation -10.7822 +▁danglars -10.7839 +mbled -10.7841 +keep -10.7867 +▁chu -10.787 +▁centuries -10.7881 +▁distribut -10.7881 +▁reject -10.7881 +▁retorted -10.7881 +▁concentrat -10.7881 +▁cordial -10.7881 +▁motor -10.7882 +▁cannon -10.7884 +▁wretch -10.7905 +▁assurance -10.7923 +▁thief -10.7923 +▁survey -10.7923 +▁railway -10.7925 +▁vital -10.7925 +▁jackson -10.7933 +▁combat -10.7935 +▁recollection -10.7949 +▁security -10.7965 +▁nancy -10.7965 +▁jacob -10.7965 +▁clutch -10.7965 +▁growl -10.797 +▁blanket -10.7971 +▁cellar -10.7973 +▁indignant -10.8007 +▁convenient -10.8007 +▁worm -10.8008 +▁screen -10.8008 +▁coarse -10.8008 +▁transport -10.801 +▁determination -10.8019 +▁bullet -10.8019 +▁appreciate -10.805 +▁invisible -10.805 +▁devotion -10.805 +▁mixture -10.805 +▁candid -10.8051 +▁performance -10.8059 +▁rebel -10.8078 +▁exquisite -10.8093 +▁bargain -10.8093 +▁tobacco -10.8093 +▁loyal -10.8094 +▁mould -10.8094 +▁attentive -10.8135 +▁dorothy -10.8135 +▁brute -10.8136 +▁establishment -10.8145 +▁glen -10.8163 +▁inhabit -10.8179 +▁obscure -10.8179 +▁borrow -10.8179 +▁essence -10.8179 +▁dismay -10.8179 +hurst -10.8185 +▁vow -10.8195 +▁flee -10.82 +▁pluck -10.8222 +▁coffin -10.8222 +▁sunset -10.8224 +▁stephen -10.8226 +▁blade -10.8228 +▁holiday -10.8265 +▁mechanical -10.8265 +▁cotton -10.8266 +▁awakened -10.827 +hold -10.8309 +▁ridiculous -10.8309 +▁hesitation -10.8309 +▁corpse -10.8309 +▁saving -10.831 +▁sancho -10.831 +foot -10.8316 +▁eldest -10.8353 +▁peak -10.8374 +▁despite -10.8397 +▁edith -10.8397 +▁wilson -10.8397 +▁cherish -10.8397 +▁resistance -10.8403 +▁argue -10.8405 +▁inquire -10.8437 +▁apprehension -10.8441 +▁avenue -10.8441 +▁drake -10.8441 +▁propose -10.8446 +▁inferior -10.8486 +▁staircase -10.8486 +▁wherefore -10.8486 +▁carlyle -10.8486 +▁couch -10.8496 +▁route -10.8504 +▁politics -10.853 +▁tomorrow -10.853 +▁confined -10.8531 +▁naught -10.8531 +▁throng -10.8533 +▁sunlight -10.854 +▁imperfect -10.8575 +▁indifference -10.8575 +▁obedience -10.8575 +▁reception -10.8575 +▁turkey -10.8575 +▁vegetable -10.8575 +▁residence -10.8575 +▁violet -10.8575 +▁sarah -10.8575 +▁altar -10.8577 +▁grieve -10.8579 +▁jerk -10.8587 +▁magician -10.8589 +▁ensu -10.8609 +▁blossom -10.862 +▁lantern -10.862 +▁resolute -10.862 +▁thoughtfully -10.8621 +▁fortnight -10.8665 +▁trumpet -10.8665 +▁unwilling -10.8665 +▁valjean -10.8665 +▁lecture -10.8665 +▁whereupon -10.8665 +▁holland -10.8665 +▁creek -10.8666 +▁changing -10.8666 +▁slice -10.8666 +▁accent -10.8667 +▁normal -10.8667 +▁disagreeable -10.8711 +▁frederick -10.8711 +▁rubbed -10.8711 +▁dumb -10.8711 +▁establish -10.8736 +▁import -10.8754 +▁affirm -10.8757 +▁matthew -10.8757 +▁bunch -10.8757 +▁hoping -10.8758 +▁convert -10.8759 +▁brisk -10.8759 +▁bending -10.8763 +▁michael -10.8802 +▁mademoiselle -10.8802 +▁easier -10.8802 +▁facing -10.8803 +▁jones -10.8804 +▁excellency -10.8848 +▁literary -10.8849 +▁gossip -10.8849 +▁devour -10.8849 +▁stagger -10.8849 +▁pencil -10.8849 +▁average -10.8849 +▁hammer -10.8851 +▁triumphant -10.8855 +▁preferred -10.8855 +burn -10.8877 +▁application -10.8895 +▁occupy -10.8895 +▁authorities -10.8898 +▁ascertain -10.8941 +▁corridor -10.8941 +▁delicious -10.8941 +▁practise -10.8941 +▁universe -10.8941 +▁shilling -10.8941 +▁contest -10.8942 +▁ashore -10.8942 +▁commit -10.8983 +▁administration -10.8988 +▁studied -10.8988 +▁rigid -10.8988 +▁adorn -10.8989 +▁elsewhere -10.9035 +▁innocence -10.9035 +▁journal -10.9035 +▁landscape -10.9035 +▁telegraph -10.9035 +▁angrily -10.9035 +▁campaign -10.9035 +▁unjust -10.9035 +▁flourish -10.904 +▁challenge -10.9082 +▁torrent -10.9082 +▁relate -10.9127 +▁assembled -10.913 +▁impressed -10.913 +▁canoe -10.915 +▁conclud -10.9171 +▁quixote -10.9177 +▁satisfactory -10.9177 +▁niece -10.9177 +▁deaf -10.9178 +▁glid -10.9179 +▁jimmy -10.9179 +▁regulat -10.9179 +▁chatter -10.9215 +▁statue -10.9225 +▁glacier -10.9225 +▁envy -10.9225 +▁boston -10.9227 +▁richmond -10.9229 +▁denied -10.9229 +▁fanny -10.9232 +▁solomon -10.9273 +▁vulgar -10.9273 +▁stalk -10.9274 +▁spoon -10.9279 +▁abuse -10.928 +▁basin -10.9291 +▁feature -10.9293 +▁convict -10.9304 +▁admiral -10.9321 +▁architect -10.9321 +▁ribbon -10.9321 +▁permanent -10.9321 +▁april -10.9321 +▁jolly -10.9322 +borough -10.9322 +▁neighborhood -10.9323 +▁impart -10.9324 +▁horrid -10.937 +▁immortal -10.937 +▁penetrate -10.937 +▁prudence -10.937 +▁reconcil -10.937 +▁spaniard -10.937 +▁supposing -10.937 +▁telephone -10.937 +▁temperature -10.937 +▁oyster -10.937 +▁appointment -10.9375 +▁egyptian -10.9384 +▁dwelt -10.9419 +▁nephew -10.9419 +▁railroad -10.9419 +▁september -10.9419 +▁gilbert -10.9419 +▁wheat -10.9419 +▁device -10.9419 +▁squee -10.9453 +▁elegant -10.9468 +▁advertise -10.9517 +▁turtle -10.9517 +▁rational -10.9517 +▁brood -10.9519 +comb -10.9563 +▁assembly -10.9566 +▁cultivate -10.9566 +▁specimen -10.9566 +▁undoubtedly -10.9566 +▁editor -10.9567 +▁dropping -10.9567 +▁medical -10.9569 +▁balloon -10.9569 +▁whale -10.9574 +▁composition -10.9616 +▁footsteps -10.9616 +▁launcelot -10.9616 +▁discourse -10.9616 +▁errand -10.9616 +▁converse -10.9618 +▁advancing -10.9666 +▁downstairs -10.9666 +▁tumult -10.9666 +▁corrupt -10.9666 +▁suffice -10.9666 +▁anguish -10.9666 +▁shaggy -10.9666 +▁retire -10.9716 +▁timber -10.9717 +▁abstract -10.9767 +▁embroider -10.9767 +▁photograph -10.9767 +▁prosperity -10.9767 +▁terribly -10.9767 +▁territory -10.9767 +▁threshold -10.9767 +▁pavement -10.9767 +▁injured -10.9767 +▁levin -10.9767 +▁agitation -10.9818 +▁rascal -10.9818 +▁presume -10.9819 +▁strat -10.9842 +▁observing -10.9869 +▁obstacle -10.9869 +▁simplicity -10.9869 +▁slumber -10.9869 +▁supplied -10.9869 +▁combination -10.9869 +▁drain -10.9869 +▁wilderness -10.9869 +▁believing -10.992 +▁villain -10.992 +▁friday -10.992 +▁reckless -10.992 +▁injury -10.992 +▁clapp -10.9921 +▁symptom -10.9972 +▁kennedy -10.9972 +▁sledge -10.9972 +▁monday -10.9972 +▁hercules -10.9972 +▁ceiling -10.9972 +▁lemon -10.9972 +▁plague -10.9974 +▁canvas -10.9976 +▁impatience -11.0023 +▁uncomfortable -11.0023 +▁access -11.0023 +▁senator -11.0023 +▁swimming -11.0024 +▁barrier -11.0024 +▁adjust -11.0076 +▁comparison -11.0076 +▁proclaim -11.0076 +▁wrinkl -11.0076 +▁overlook -11.0076 +▁mitya -11.0076 +▁guilt -11.01 +▁distract -11.0128 +▁perception -11.0128 +▁precaution -11.0128 +▁spectator -11.0128 +▁surprising -11.0128 +▁disdain -11.0128 +▁bonnet -11.0128 +▁bapti -11.0129 +▁profess -11.0154 +▁inspector -11.018 +▁sketch -11.018 +▁structure -11.018 +▁ultimate -11.018 +▁confound -11.0181 +▁globe -11.0181 +▁insect -11.0181 +▁orchard -11.0181 +▁descent -11.0182 +▁amiable -11.0183 +▁independence -11.0233 +▁manufacture -11.0233 +▁sprinkle -11.0233 +▁nightingale -11.0233 +▁cushion -11.0233 +▁eminent -11.0233 +▁array -11.0234 +▁scott -11.0234 +▁troop -11.0234 +▁cosette -11.0234 +▁waving -11.0234 +▁irregular -11.0287 +▁persecut -11.0287 +▁derived -11.0287 +▁withdrew -11.0287 +▁caution -11.0287 +▁extract -11.0288 +▁suspicious -11.034 +▁memories -11.034 +▁nowhere -11.0341 +▁tremble -11.0343 +▁subtle -11.0343 +▁thorough -11.0349 +q -11.0372 +▁appropriate -11.0394 +▁slaughter -11.0394 +▁yourselves -11.0394 +▁thumb -11.0394 +▁twas -11.0394 +▁stray -11.0395 +▁abode -11.0395 +▁conspicuous -11.0448 +▁rebecca -11.0448 +▁sergeant -11.0448 +▁woke -11.0448 +▁apron -11.0451 +▁anticipate -11.0502 +▁discipline -11.0502 +▁glancing -11.0502 +▁pilgrim -11.0502 +▁sullen -11.0502 +▁contribute -11.0557 +▁prairie -11.0557 +▁carved -11.0559 +▁hypnoti -11.0612 +▁commerce -11.0612 +▁exclamation -11.0612 +▁muscular -11.0612 +▁november -11.0612 +▁phenomena -11.0612 +▁symbol -11.0612 +▁umbrella -11.0612 +▁diminish -11.0612 +▁parlour -11.0612 +▁threatening -11.0612 +▁stump -11.0612 +▁extensive -11.0667 +▁remembrance -11.0667 +▁combined -11.0667 +▁sheriff -11.0668 +▁laura -11.0673 +▁intercourse -11.0723 +▁supplies -11.0723 +▁landlord -11.0723 +▁stricken -11.0723 +▁shrink -11.0723 +▁caesar -11.0723 +▁drug -11.0726 +▁bewildered -11.0778 +▁commercial -11.0778 +▁nautilus -11.0778 +▁brutal -11.0779 +▁maggie -11.0779 +▁sphere -11.0779 +▁virgin -11.0816 +▁brethren -11.0835 +▁terrified -11.0835 +▁destiny -11.0835 +▁policy -11.0835 +▁housekeeper -11.0835 +▁ardent -11.0835 +▁discern -11.0836 +▁marquis -11.0836 +mouth -11.0854 +▁russia -11.0864 +▁wrap -11.0871 +▁britain -11.0891 +▁harbour -11.0891 +▁concert -11.0891 +▁harmony -11.0891 +▁donkey -11.0892 +▁damage -11.0892 +▁slim -11.0896 +about -11.0911 +▁luxury -11.0948 +▁paradise -11.0948 +▁culture -11.0948 +▁monstrous -11.0948 +▁tendency -11.0948 +▁julius -11.0948 +▁remedy -11.0948 +▁raoul -11.0948 +▁scold -11.0948 +▁decay -11.0948 +▁split -11.0949 +▁assault -11.1005 +▁december -11.1005 +▁moscow -11.1005 +▁explore -11.1005 +▁trousers -11.1005 +▁wrist -11.1006 +piece -11.1026 +▁tyrant -11.1063 +▁valentine -11.1063 +▁musket -11.1063 +▁abraham -11.1063 +▁strait -11.1063 +▁artificial -11.112 +▁faculty -11.112 +▁obligation -11.112 +▁resemblance -11.112 +▁inquiries -11.1121 +▁detain -11.1121 +▁swarm -11.1121 +▁pledge -11.1121 +▁admirable -11.1179 +▁defect -11.1179 +▁superintend -11.1179 +▁patriot -11.1179 +▁breton -11.1179 +▁dismal -11.1181 +▁recit -11.1191 +▁ignor -11.1232 +▁amelia -11.1237 +▁elephant -11.1296 +▁estimate -11.1296 +▁knelt -11.1296 +▁serving -11.1296 +▁shrill -11.1296 +▁text -11.1296 +▁studio -11.13 +▁alexander -11.1355 +▁wrought -11.1355 +▁abundant -11.1355 +▁situated -11.1355 +▁regain -11.1355 +▁sneer -11.1356 +▁sweat -11.1357 +▁wren -11.1359 +▁justify -11.138 +▁nigh -11.1409 +▁escort -11.1415 +▁inevitable -11.1415 +▁psmith -11.1415 +▁reluctant -11.1415 +▁preceding -11.1415 +▁resort -11.1415 +▁outrage -11.1419 +▁ambassador -11.1474 +▁consolation -11.1474 +▁remorse -11.1474 +▁behalf -11.1474 +▁formidable -11.1474 +▁gravity -11.1475 +▁apologi -11.1482 +▁divide -11.1484 +▁gigantic -11.1535 +▁october -11.1535 +▁flank -11.1535 +▁stooped -11.1535 +▁slew -11.1535 +▁confront -11.1535 +▁clara -11.1535 +▁film -11.1536 +▁bulk -11.1536 +dolph -11.1545 +▁eleanor -11.1595 +▁exclusive -11.1595 +▁japanese -11.1595 +▁sympathi -11.1595 +▁cavalry -11.1595 +▁perfume -11.1595 +▁federal -11.1595 +▁liquid -11.1595 +▁rubbing -11.1596 +▁oven -11.1597 +▁convuls -11.1656 +▁significant -11.1656 +▁deprived -11.1656 +▁responsibility -11.1656 +▁waistcoat -11.1656 +▁cluster -11.1656 +▁martha -11.1657 +▁attorney -11.1718 +▁droop -11.1718 +▁skilful -11.1718 +▁habitual -11.1718 +▁interven -11.1719 +▁owl -11.172 +▁conjecture -11.1779 +▁fantastic -11.1779 +▁responsible -11.1779 +▁destined -11.1779 +▁thereupon -11.1779 +▁goddess -11.178 +▁pacific -11.178 +▁warrant -11.178 +▁costume -11.178 +▁document -11.178 +▁bridle -11.1783 +▁california -11.1841 +▁democratic -11.1841 +▁eustace -11.1841 +▁squirrel -11.1841 +▁uncommon -11.1841 +▁plough -11.1841 +▁marvellous -11.1841 +▁tragedy -11.1841 +▁vault -11.1842 +▁hesitate -11.1853 +▁admiring -11.1904 +▁corporal -11.1904 +▁entitled -11.1904 +▁refrain -11.1904 +▁shrewd -11.1904 +▁strap -11.1927 +▁accurate -11.1967 +▁tempest -11.1967 +▁monument -11.1967 +▁siege -11.1967 +▁chinese -11.1967 +▁raven -11.1968 +▁loung -11.1969 +leigh -11.1985 +▁assassin -11.203 +▁inflict -11.203 +▁agitated -11.203 +▁desirable -11.203 +▁earliest -11.203 +▁launch -11.203 +▁pilot -11.2031 +▁pulse -11.2031 +▁liquor -11.2094 +▁scarecrow -11.2094 +▁skull -11.2094 +▁desolate -11.2094 +▁ticket -11.2094 +▁sublime -11.2094 +▁recess -11.2094 +▁serene -11.2094 +▁righteous -11.2094 +▁pinocchio -11.2158 +▁priscilla -11.2158 +▁charlotte -11.2158 +▁circular -11.2158 +▁injustice -11.2158 +▁thyself -11.2158 +▁occurrence -11.2158 +▁casual -11.2158 +▁trout -11.2158 +▁legend -11.2158 +▁fertil -11.2178 +▁background -11.2222 +▁comparatively -11.2222 +▁delicacy -11.2222 +▁estralla -11.2222 +▁manuscript -11.2222 +▁response -11.2222 +▁university -11.2222 +▁wolves -11.2222 +▁scandal -11.2222 +▁hoarse -11.2223 +▁stumble -11.2223 +▁convent -11.2272 +▁utili -11.2278 +▁examining -11.2287 +▁incapable -11.2287 +▁perceiving -11.2287 +▁philadelphia -11.2287 +▁subsequent -11.2287 +▁thieves -11.2287 +▁accumulat -11.2287 +▁damsel -11.2287 +▁scotch -11.2287 +▁underneath -11.2287 +▁smash -11.2287 +▁nobility -11.2287 +▁revolt -11.2288 +▁engage -11.229 +▁cathedral -11.2353 +▁despatch -11.2353 +▁eternity -11.2353 +▁january -11.2353 +▁probability -11.2353 +▁parallel -11.2353 +▁jimmie -11.2353 +▁champion -11.2353 +▁fisherman -11.2353 +▁jerry -11.2353 +▁swore -11.2353 +▁draught -11.2419 +▁opponent -11.2419 +▁primitive -11.2419 +▁significance -11.2419 +▁substantial -11.2419 +▁dunbar -11.2419 +▁commend -11.2419 +▁jasper -11.2419 +▁contemplate -11.2485 +▁testimony -11.2485 +▁imperial -11.2485 +▁adapt -11.2485 +▁juice -11.2485 +▁calamit -11.2489 +▁phoenix -11.2551 +▁prudent -11.2551 +▁solution -11.2551 +▁villefort -11.2551 +▁chateau -11.2551 +▁reaction -11.2551 +▁relax -11.2552 +▁quaint -11.2552 +▁plunder -11.2619 +▁distrust -11.2619 +▁prohibit -11.2619 +▁welfare -11.2619 +▁parlor -11.2619 +▁navigat -11.262 +▁tank -11.2624 +think -11.2657 +▁discourage -11.2686 +▁obstinate -11.2686 +▁rejoicing -11.2686 +▁vehicle -11.2686 +▁fancies -11.2686 +▁enlighten -11.2686 +▁sermon -11.2686 +▁illusion -11.2686 +▁anthea -11.2686 +▁martian -11.2688 +▁excite -11.2698 +▁attachment -11.2754 +▁generosity -11.2754 +▁unworthy -11.2754 +▁kettle -11.2754 +▁internal -11.2755 +▁incense -11.2756 +▁vibrat -11.2757 +▁adhere -11.2767 +▁february -11.2823 +▁incessant -11.2823 +▁mexican -11.2823 +▁interposed -11.2823 +▁granite -11.2823 +▁parcel -11.2823 +▁vexed -11.2823 +▁promote -11.2826 +▁debate -11.2839 +midst -11.2854 +▁cyril -11.2892 +▁embark -11.2892 +▁terrace -11.2892 +▁abundance -11.2892 +▁surgeon -11.2892 +▁aristocrat -11.2892 +▁literally -11.2892 +▁atlantic -11.2892 +▁martyr -11.2892 +▁senate -11.2892 +▁speck -11.2892 +▁loaf -11.2892 +vocation -11.2902 +▁administer -11.2961 +▁apprehend -11.2961 +▁elaborate -11.2961 +▁subdued -11.2961 +▁temporary -11.2961 +▁dominion -11.2961 +▁dignified -11.2961 +▁splash -11.2961 +▁conseil -11.2961 +▁dexter -11.2961 +▁unseen -11.2961 +▁tragic -11.2962 +ologist -11.3023 +▁sympathetic -11.3031 +▁bachelor -11.3031 +▁defense -11.3031 +▁excursion -11.3031 +▁faculties -11.3031 +▁proprietor -11.3031 +▁radiant -11.3031 +▁unnecessary -11.3031 +▁vacant -11.3031 +▁screw -11.3031 +▁ounce -11.3031 +▁gratify -11.3032 +▁calculated -11.3101 +▁keith -11.3101 +▁phenomenon -11.3101 +▁prominent -11.3101 +▁worried -11.3101 +▁climate -11.3101 +▁studies -11.3101 +▁aramis -11.3101 +▁bliss -11.3102 +▁contend -11.3102 +close -11.312 +▁continual -11.3127 +▁surpass -11.3172 +▁hebrew -11.3172 +▁identity -11.3172 +▁provoke -11.3172 +▁temperament -11.3172 +▁chariot -11.3172 +▁ninth -11.3172 +▁harbor -11.3173 +▁desirous -11.3244 +▁jerusalem -11.3244 +▁undertaking -11.3244 +▁chorus -11.3244 +▁scout -11.3244 +▁mirth -11.3244 +▁hymn -11.3244 +▁particle -11.3246 +▁apparatus -11.3316 +▁intelligible -11.3316 +▁invariably -11.3316 +▁pierced -11.3316 +▁review -11.3316 +▁flicker -11.3316 +▁exciting -11.3316 +▁gospel -11.3316 +▁dixon -11.3316 +▁revelation -11.3316 +▁constance -11.3316 +▁overtake -11.3316 +▁guinea -11.3316 +▁drap -11.3322 +▁precise -11.3343 +▁aladdin -11.3388 +▁chicago -11.3388 +▁tulliver -11.3388 +▁hamilton -11.3388 +▁garrison -11.3388 +▁disciple -11.3388 +▁intensity -11.3388 +▁traitor -11.3388 +▁chancellor -11.3388 +▁proverb -11.3388 +▁dagger -11.3389 +▁foresee -11.3399 +▁chauvelin -11.3461 +▁glimmer -11.3461 +▁volunteer -11.3461 +▁jungle -11.3461 +▁streak -11.3461 +▁sunrise -11.3461 +▁dissolv -11.3461 +▁confide -11.3482 +▁awhile -11.3535 +▁felicity -11.3535 +▁legislature -11.3535 +▁leonora -11.3535 +▁pitiful -11.3535 +▁colony -11.3535 +▁shawl -11.3536 +▁harmoni -11.3552 +▁arriving -11.3609 +▁carpenter -11.3609 +▁fundamental -11.3609 +▁overflow -11.3609 +▁expand -11.3609 +▁harvest -11.3609 +▁tidings -11.3609 +folk -11.3636 +▁feminine -11.3683 +▁innumerable -11.3683 +▁twentieth -11.3683 +▁trifling -11.3683 +▁ghastl -11.3683 +▁conquest -11.3683 +▁butterfly -11.3683 +▁daniel -11.3684 +▁scramble -11.3684 +▁facilit -11.3685 +▁forsake -11.3687 +▁behaviour -11.3759 +▁gorgeous -11.3759 +▁producing -11.3759 +▁happier -11.3759 +▁promising -11.3759 +▁rainbow -11.3759 +▁instinctively -11.3759 +▁decree -11.376 +▁copie -11.3764 +▁strew -11.3765 +▁eyebrows -11.3834 +▁irresistible -11.3834 +▁pharaoh -11.3834 +▁scrooge -11.3834 +▁unnatural -11.3834 +▁crumbs -11.3834 +▁refined -11.3834 +▁dreary -11.3834 +▁trench -11.3835 +▁clair -11.3838 +▁convince -11.386 +▁fringe -11.3877 +▁extremity -11.3911 +▁intimacy -11.3911 +▁scoundrel -11.3911 +▁suffrage -11.3911 +▁uneasiness -11.3911 +▁barricade -11.3911 +▁circulat -11.3911 +▁samuel -11.3911 +▁bruce -11.3911 +▁spake -11.3911 +▁ambitious -11.3988 +▁energetic -11.3988 +▁splendor -11.3988 +▁tuesday -11.3988 +▁virtuous -11.3988 diff --git a/modules/audio/asr/u2_conformer_librispeech/assets/data/mean_std.json b/modules/audio/asr/u2_conformer_librispeech/assets/data/mean_std.json new file mode 100644 index 0000000000000000000000000000000000000000..c42cf7fbc3b12dd25e05f218a091c88bf93f4a6b --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/assets/data/mean_std.json @@ -0,0 +1 @@ +{"mean_stat": [3419817384.9589553, 3554070049.1888413, 3818511309.9166613, 4066044518.3850017, 4291564631.2871633, 4447813845.146345, 4533096457.680424, 4535743891.989957, 4529762966.952207, 4506798370.255702, 4563810141.721841, 4621582319.277632, 4717208210.814803, 4782916961.295261, 4800534153.252695, 4816978042.979026, 4813370098.242317, 4783029495.131413, 4797780594.144404, 4697681126.278327, 4615891408.325888, 4660549391.6024275, 4576180438.146472, 4609080513.250168, 4575296489.058092, 4602504837.872262, 4568039825.650208, 4596829549.204861, 4590634987.343898, 4604371982.549804, 4623782318.317643, 4643582410.8842745, 4681460771.788484, 4759470876.31175, 4808639788.683043, 4828470941.416027, 4868984035.113543, 4906503986.801533, 4945995579.443381, 4936645225.986488, 4975902400.919519, 4960230208.656678, 4986734786.199859, 4983472199.8246765, 5002204376.162232, 5030432036.352981, 5060386169.086892, 5093482058.577236, 5118330657.308789, 5137270836.326198, 5140137363.319094, 5144296534.330122, 5158812605.654329, 5166263515.51458, 5156261604.282723, 5155820011.532965, 5154511256.8968, 5152063882.193671, 5153425524.412178, 5149000486.683038, 5154587156.35868, 5134412165.07972, 5092874838.792056, 5062281231.5140915, 5029059442.072953, 4996045017.917702, 4962203662.170533, 4928110046.282831, 4900476581.092096, 4881407033.533021, 4859626116.955097, 4851430742.3865795, 4850317443.454599, 4848197040.155383, 4837178106.464577, 4818448202.7298765, 4803345264.527405, 4765785994.104498, 4735296707.352132, 4699957946.40757], "var_stat": [39487786239.20539, 42865198005.60155, 49718916704.468704, 55953639455.490585, 62156293826.00315, 66738657819.12445, 69416921986.47835, 69657873431.17258, 69240303799.53061, 68286972351.43054, 69718367152.18843, 71405427710.7103, 74174200331.87572, 76047347951.43869, 76478048614.40665, 76810929560.19212, 76540466184.85634, 75538479521.34026, 75775624554.07217, 72775991318.16557, 70350402972.93352, 71358602366.48341, 68872845697.9878, 69552396791.49916, 68471390455.59991, 69022047288.07498, 67982260910.11236, 68656154716.71916, 68461419064.9241, 68795285460.65717, 69270474608.52791, 69754495937.76433, 70596044579.14969, 72207936275.97945, 73629619360.65047, 74746445259.57487, 75925168496.81197, 76973508692.04265, 78074337163.3413, 77765963787.96971, 78839167623.49733, 78328768943.2287, 79016127287.03778, 78922638306.99306, 79489768324.9408, 80354861037.44005, 81311991408.12526, 82368205917.26112, 83134782296.1741, 83667769421.23245, 83673751953.46239, 83806087685.62842, 84193971202.07523, 84424752763.34825, 84092846117.64104, 84039114093.08766, 83982515225.7085, 83909645482.75613, 83947278563.15077, 83800767707.19617, 83851106027.8772, 83089292432.37892, 82056425825.3622, 81138570746.92316, 80131843258.75557, 79130160837.19037, 78092166878.71533, 77104785522.79205, 76308548392.10454, 75709445890.58063, 75084778641.6033, 74795849006.19067, 74725807683.832, 74645651838.2169, 74300193368.39339, 73696619147.86806, 73212785808.97992, 72240491743.0697, 71420246227.32545, 70457076435.4593], "frame_num": 345484372} diff --git a/modules/audio/asr/u2_conformer_librispeech/assets/data/vocab.txt b/modules/audio/asr/u2_conformer_librispeech/assets/data/vocab.txt new file mode 100644 index 0000000000000000000000000000000000000000..62d35f25e95fd80599bda9c14238797468a319b1 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/assets/data/vocab.txt @@ -0,0 +1,5002 @@ + + +' +a +abeth +ability +able +ably +about +ac +ach +acious +ad +ade +ag +age +ah +ak +al +ally +am +an +ance +and +ang +ans +ant +ap +ar +ard +aries +artagnan +ary +as +at +ate +ated +ath +ating +ation +ations +ative +ator +atory +au +av +aw +ay +b +ba +bbe +bble +be +bel +ber +bi +ble +bo +board +borough +bra +bu +burg +burn +bury +by +c +ca +car +cast +ce +cent +ch +cha +che +ched +chi +cho +ci +ck +clock +close +co +comb +con +ctor +cu +cum +cy +d +da +dding +ddle +de +den +der +do +dolph +dy +e +ea +ed +ef +el +ella +em +ement +en +ence +encies +ened +ens +ent +er +ers +es +est +et +eth +ett +ette +ev +ever +ex +ey +f +fa +fall +fe +fer +ff +fi +field +fold +folk +foot +for +ford +form +ft +ful +g +ga +gan +gar +gate +ge +ged +gen +ger +gg +gi +ging +gn +go +gra +gu +gue +h +ha +ham +han +har +he +head +hen +her +hi +hin +ho +hold +hood +house +hu +hurst +hy +i +ia +ial +ian +ians +ib +ible +ic +ical +ick +id +ie +ied +ier +ies +if +ification +ified +ifying +ig +ight +ign +il +ile +ility +ily +im +in +ina +ine +iness +ing +io +ion +ions +ious +ip +ir +ire +is +ish +ism +ison +ist +istic +ists +it +itch +ite +ities +itude +ity +ium +ius +ive +j +ja +ji +jo +ju +k +ka +ke +keep +ker +ki +kin +king +ko +ky +l +la +lac +lan +land +lar +ld +le +led +leigh +ler +les +less +let +ley +lf +li +lie +light +like +lin +line +liness +ling +ll +lo +lock +lon +long +low +lt +lung +lus +ly +m +ma +man +mbled +me +men +ment +ments +mer +mi +midst +mmed +mo +mond +mont +more +most +mouth +mp +my +n +na +nce +nd +ne +ned +ner +ness +ney +ng +ni +nic +ning +nnie +nny +no +nt +ny +o +oc +od +og +ol +ological +ologist +ology +om +on +one +oo +ook +oon +op +or +ord +ors +ory +os +ot +ou +our +ous +ov +ow +p +pa +pe +pec +ped +per +pha +piece +ple +po +port +pose +pp +pping +ps +q +qua +que +qui +r +ra +ran +rate +re +red +ress +rg +ri +ric +rick +ridge +ries +right +rin +ring +ris +rk +rn +ro +ron +rous +row +rs +rt +ru +ry +s +sail +se +sh +ship +shire +side +some +son +st +stead +ster +stone +stra +t +ta +tan +te +ted +ten +ter +terior +th +the +ther +think +thorpe +ti +tic +ties +time +tin +ting +tion +to +ton +tri +tro +tte +ttered +ttle +tur +ty +u +ub +uc +uch +ud +ug +ugh +ul +ulation +um +un +und +uous +up +ur +ure +us +use +ut +ux +v +va +val +van +ve +ver +vi +ville +vo +vocation +w +wa +war +ward +way +we +well +wi +wick +win +wn +wood +work +worth +x +y +z +zz +▁ +▁a +▁ab +▁abandon +▁able +▁abode +▁about +▁above +▁abraham +▁abroad +▁absence +▁absent +▁absolute +▁absolutely +▁absorb +▁abstract +▁absurd +▁abundance +▁abundant +▁abuse +▁accent +▁accept +▁accepted +▁access +▁accident +▁accompanied +▁accompany +▁accomplish +▁accord +▁according +▁accordingly +▁account +▁accumulat +▁accurate +▁accuse +▁accustomed +▁achieve +▁acknowledg +▁acquaintance +▁acquainted +▁acquired +▁across +▁act +▁action +▁active +▁activity +▁actual +▁actually +▁adam +▁adapt +▁add +▁added +▁addition +▁address +▁addressed +▁adhere +▁adjust +▁administer +▁administration +▁admirable +▁admiral +▁admiration +▁admire +▁admiring +▁admit +▁admitted +▁adopt +▁adorn +▁advance +▁advanced +▁advancing +▁advantage +▁adventure +▁advertise +▁advice +▁advise +▁affair +▁affairs +▁affect +▁affected +▁affection +▁affectionate +▁affirm +▁afflict +▁afford +▁afraid +▁africa +▁after +▁afternoon +▁afterward +▁afterwards +▁again +▁against +▁age +▁agent +▁agitated +▁agitation +▁ago +▁agony +▁agree +▁agreeable +▁agreed +▁ah +▁ahead +▁aid +▁aim +▁air +▁al +▁aladdin +▁alarm +▁alas +▁albert +▁alexander +▁alice +▁alive +▁all +▁allow +▁allowed +▁almost +▁alone +▁along +▁aloud +▁already +▁also +▁altar +▁alter +▁although +▁altogether +▁always +▁alyosha +▁am +▁ama +▁ambassador +▁ambition +▁ambitious +▁amelia +▁america +▁american +▁amiable +▁amid +▁among +▁amount +▁amusement +▁an +▁anchor +▁ancient +▁and +▁andrew +▁angel +▁anger +▁angle +▁angrily +▁angry +▁anguish +▁animal +▁animals +▁anna +▁anne +▁announc +▁announced +▁another +▁answer +▁answered +▁anthea +▁anti +▁anticipate +▁anxiety +▁anxious +▁any +▁anybody +▁anyhow +▁anyone +▁anything +▁anywhere +▁apart +▁apartment +▁apologi +▁apparatus +▁apparent +▁apparently +▁appeal +▁appear +▁appearance +▁appeared +▁appetite +▁apple +▁application +▁applied +▁apply +▁appointed +▁appointment +▁appreciate +▁apprehend +▁apprehension +▁approach +▁approached +▁approaching +▁appropriate +▁approve +▁april +▁apron +▁apt +▁ar +▁arab +▁aramis +▁arch +▁architect +▁ardent +▁are +▁argue +▁argument +▁arise +▁aristocrat +▁arm +▁arms +▁army +▁arose +▁around +▁arranged +▁arrangement +▁array +▁arrest +▁arrival +▁arrive +▁arrived +▁arriving +▁arrow +▁art +▁arthur +▁article +▁artificial +▁artist +▁as +▁ascend +▁ascertain +▁ashamed +▁ashes +▁ashore +▁aside +▁ask +▁asked +▁asking +▁asleep +▁aspect +▁assassin +▁assault +▁assembled +▁assembly +▁assert +▁assist +▁assistance +▁assistant +▁associate +▁association +▁assume +▁assumed +▁assurance +▁assure +▁assured +▁astonished +▁astonishment +▁at +▁atlantic +▁atmosphere +▁attached +▁attachment +▁attack +▁attain +▁attempt +▁attend +▁attendant +▁attention +▁attentive +▁attitude +▁attorney +▁attract +▁attribute +▁audience +▁august +▁aunt +▁author +▁authorities +▁authority +▁autumn +▁avail +▁avenue +▁average +▁avoid +▁await +▁awake +▁awakened +▁aware +▁away +▁awful +▁awhile +▁awkward +▁awoke +▁axe +▁b +▁ba +▁baby +▁bachelor +▁back +▁background +▁backward +▁bad +▁bade +▁bag +▁bake +▁bal +▁balance +▁ball +▁balloon +▁ban +▁band +▁bank +▁bapti +▁bar +▁barbar +▁bare +▁bargain +▁bark +▁baron +▁barrel +▁barricade +▁barrier +▁base +▁basin +▁basket +▁bath +▁batter +▁battle +▁bay +▁be +▁bear +▁beard +▁bearing +▁beast +▁beat +▁beaten +▁beautiful +▁beauty +▁became +▁because +▁become +▁becoming +▁bed +▁bedroom +▁been +▁before +▁beg +▁began +▁beggar +▁begged +▁begin +▁beginning +▁begun +▁behalf +▁behave +▁behaviour +▁beheld +▁behind +▁behold +▁being +▁belief +▁believe +▁believed +▁believing +▁bell +▁belong +▁beloved +▁below +▁bench +▁bending +▁beneath +▁benefit +▁bent +▁bernard +▁beside +▁besides +▁best +▁bestow +▁betray +▁better +▁between +▁bewildered +▁beyond +▁bi +▁bible +▁bid +▁big +▁bill +▁billy +▁bind +▁bird +▁birds +▁birth +▁bishop +▁bit +▁bitter +▁bla +▁black +▁blade +▁blame +▁blank +▁blanket +▁bless +▁blew +▁blind +▁bliss +▁block +▁blood +▁bloom +▁blossom +▁blow +▁blu +▁blue +▁blush +▁bo +▁board +▁boast +▁boat +▁bob +▁bodies +▁body +▁boil +▁bold +▁bolt +▁bon +▁bond +▁bonnet +▁book +▁books +▁boot +▁boots +▁border +▁bore +▁born +▁borne +▁borrow +▁bosom +▁boston +▁both +▁bottle +▁bottom +▁bought +▁bound +▁bow +▁bowed +▁bowl +▁box +▁boy +▁boys +▁bra +▁brain +▁branch +▁branches +▁brand +▁brave +▁bread +▁break +▁breakfast +▁breaking +▁breast +▁breath +▁bree +▁brethren +▁breton +▁bri +▁brick +▁bride +▁bridge +▁bridle +▁brief +▁brig +▁bright +▁brilliant +▁bring +▁bringing +▁brisk +▁britain +▁british +▁bro +▁broad +▁broke +▁broken +▁brood +▁brook +▁brother +▁brothers +▁brought +▁brow +▁brown +▁bruce +▁brush +▁brutal +▁brute +▁bu +▁buck +▁build +▁building +▁built +▁bulk +▁bull +▁bullet +▁bunch +▁bundle +▁bur +▁burden +▁buried +▁burn +▁burning +▁burst +▁bush +▁bushes +▁business +▁busy +▁but +▁butter +▁butterfly +▁buy +▁by +▁c +▁ca +▁cab +▁cabin +▁caesar +▁cake +▁cal +▁calamit +▁calculated +▁california +▁call +▁called +▁calling +▁calm +▁came +▁camp +▁campaign +▁can +▁candid +▁candle +▁cannon +▁cannot +▁canoe +▁canvas +▁cap +▁capable +▁capacity +▁capital +▁captain +▁capture +▁car +▁card +▁cardinal +▁care +▁careful +▁carefully +▁careless +▁carlyle +▁carpenter +▁carpet +▁carr +▁carriage +▁carried +▁carry +▁carrying +▁cart +▁carved +▁case +▁cast +▁castle +▁casual +▁cat +▁catch +▁cathedral +▁catherine +▁catholic +▁cattle +▁caught +▁cause +▁caused +▁caution +▁cavalry +▁cave +▁ce +▁cease +▁ceased +▁ceiling +▁celebrat +▁cell +▁cellar +▁cent +▁center +▁central +▁centre +▁centuries +▁century +▁ceremony +▁certain +▁certainly +▁cetera +▁ch +▁cha +▁chain +▁chair +▁challenge +▁chamber +▁champion +▁chance +▁chancellor +▁change +▁changed +▁changing +▁channel +▁chap +▁chapter +▁char +▁character +▁characteristic +▁charge +▁chariot +▁charles +▁charlotte +▁charm +▁charming +▁chase +▁chateau +▁chatter +▁chauvelin +▁che +▁cheap +▁check +▁cheek +▁cheeks +▁cheer +▁cheerful +▁cheese +▁cherish +▁chest +▁chi +▁chicago +▁chicken +▁chief +▁child +▁childhood +▁children +▁chill +▁chimney +▁chin +▁china +▁chinese +▁choice +▁choose +▁chop +▁chorus +▁chose +▁chosen +▁chris +▁christ +▁christian +▁christmas +▁chu +▁chuck +▁church +▁cigar +▁circle +▁circular +▁circulat +▁circumstance +▁circumstances +▁citi +▁cities +▁city +▁civil +▁civili +▁cl +▁claim +▁clair +▁clapp +▁clara +▁clasp +▁class +▁classes +▁claw +▁clay +▁clean +▁clear +▁clearly +▁clergy +▁clerk +▁clever +▁cliff +▁climate +▁climb +▁clo +▁cloak +▁clock +▁close +▁closed +▁closely +▁cloth +▁clothes +▁cloud +▁clouds +▁club +▁cluster +▁clutch +▁co +▁coach +▁coal +▁coarse +▁coast +▁coat +▁cock +▁coffee +▁coffin +▁coin +▁col +▁cold +▁collar +▁collect +▁college +▁colonel +▁coloni +▁colony +▁color +▁colour +▁column +▁com +▁comb +▁combat +▁combination +▁combined +▁come +▁comes +▁comfort +▁comfortable +▁coming +▁command +▁commenced +▁commend +▁comment +▁commerce +▁commercial +▁commission +▁commit +▁committed +▁committee +▁common +▁commun +▁communicat +▁communication +▁community +▁comp +▁companion +▁companions +▁company +▁comparatively +▁compare +▁comparison +▁compass +▁compelled +▁complain +▁complete +▁completely +▁complex +▁compliment +▁composed +▁composition +▁comprehend +▁comrade +▁con +▁conceal +▁conceive +▁concentrat +▁conception +▁concern +▁concerned +▁concerning +▁concert +▁conclud +▁concluded +▁conclusion +▁condemn +▁condition +▁conditions +▁conduct +▁conf +▁confess +▁confide +▁confidence +▁confident +▁confined +▁confirm +▁conflict +▁confound +▁confront +▁confused +▁confusion +▁congress +▁conjecture +▁connected +▁connection +▁conquer +▁conquest +▁conscience +▁conscious +▁consciousness +▁conseil +▁consent +▁consequence +▁consequently +▁consider +▁considerable +▁consideration +▁considered +▁consist +▁consolation +▁conspicuous +▁constance +▁constant +▁constantly +▁constitute +▁constitution +▁construct +▁consult +▁consum +▁contact +▁contain +▁contemplate +▁contempt +▁contend +▁content +▁contest +▁continent +▁continual +▁continually +▁continue +▁continued +▁contract +▁contradict +▁contrary +▁contrast +▁contribute +▁control +▁convenient +▁convent +▁convention +▁conversation +▁converse +▁convert +▁convey +▁convict +▁conviction +▁convince +▁convinced +▁convuls +▁cook +▁cool +▁copie +▁copper +▁copy +▁cor +▁cordial +▁corn +▁corner +▁corporal +▁corpse +▁correct +▁correspond +▁corridor +▁corrupt +▁cosette +▁cost +▁costume +▁cottage +▁cotton +▁couch +▁could +▁couldn +▁council +▁counsel +▁count +▁countenance +▁counter +▁countess +▁countries +▁country +▁couple +▁courage +▁course +▁court +▁cousin +▁cover +▁covered +▁cow +▁coward +▁cra +▁crack +▁craft +▁crawl +▁cre +▁cream +▁created +▁creature +▁creatures +▁credit +▁creek +▁creep +▁crep +▁crew +▁cried +▁cries +▁crime +▁criminal +▁crimson +▁cristo +▁critic +▁cro +▁cross +▁crossed +▁crow +▁crowd +▁crown +▁cru +▁cruel +▁crumbs +▁crush +▁cry +▁crying +▁crystal +▁cu +▁cultivate +▁culture +▁cunning +▁cup +▁cur +▁curiosity +▁curious +▁curl +▁current +▁curse +▁curtain +▁cushion +▁custom +▁cut +▁cutting +▁cyril +▁d +▁da +▁dagger +▁daily +▁damage +▁damn +▁damp +▁damsel +▁dan +▁dance +▁dancing +▁danger +▁dangerous +▁danglars +▁daniel +▁dar +▁dare +▁dared +▁dark +▁darkness +▁darling +▁dash +▁date +▁daughter +▁david +▁dawn +▁day +▁days +▁de +▁dead +▁deaf +▁deal +▁dear +▁dearest +▁death +▁debate +▁debt +▁decay +▁deceive +▁december +▁decide +▁decided +▁decision +▁deck +▁declare +▁declared +▁decline +▁decorat +▁decree +▁deep +▁deeply +▁defeat +▁defect +▁defence +▁defend +▁defense +▁defi +▁definite +▁degree +▁delay +▁deliberate +▁delicacy +▁delicate +▁delicious +▁delight +▁delighted +▁delightful +▁deliver +▁demand +▁demanded +▁democratic +▁demon +▁den +▁denied +▁deny +▁depart +▁department +▁departure +▁depend +▁deposit +▁depress +▁deprived +▁depth +▁derived +▁descend +▁descended +▁descent +▁describe +▁described +▁description +▁desert +▁deserve +▁design +▁desirable +▁desire +▁desired +▁desirous +▁desk +▁desolate +▁despair +▁despatch +▁desperate +▁despise +▁despite +▁destined +▁destiny +▁destroy +▁destroyed +▁destruction +▁detail +▁detain +▁detect +▁detective +▁determin +▁determination +▁determined +▁develop +▁development +▁device +▁devil +▁devoted +▁devotion +▁devour +▁dexter +▁di +▁diamond +▁diana +▁dick +▁did +▁didn +▁die +▁died +▁differ +▁difference +▁different +▁difficult +▁difficulties +▁difficulty +▁dig +▁dignified +▁dignity +▁dim +▁diminish +▁din +▁dinner +▁direct +▁directed +▁direction +▁directly +▁dirty +▁dis +▁disagreeable +▁disappear +▁disappeared +▁disappoint +▁disappointment +▁disc +▁discern +▁discharge +▁disciple +▁discipline +▁discourage +▁discourse +▁discover +▁discovered +▁discovery +▁discuss +▁discussion +▁disdain +▁disease +▁disgrace +▁disguise +▁disgust +▁dish +▁dislike +▁dismal +▁dismay +▁dismiss +▁disorder +▁display +▁disposed +▁disposition +▁dispute +▁dissolv +▁distance +▁distant +▁distinct +▁distinction +▁distinguish +▁distinguished +▁distract +▁distress +▁distribut +▁district +▁distrust +▁disturb +▁div +▁divers +▁divide +▁divided +▁divine +▁division +▁dixon +▁do +▁doctor +▁doctrine +▁document +▁does +▁doesn +▁dog +▁dogs +▁doing +▁dollars +▁domestic +▁dominion +▁don +▁done +▁donkey +▁door +▁doors +▁doorway +▁dorothy +▁double +▁doubt +▁doubtful +▁doubtless +▁down +▁downstairs +▁drag +▁dragg +▁dragon +▁drain +▁drake +▁drama +▁drank +▁drap +▁draught +▁draw +▁drawing +▁drawn +▁dread +▁dreadful +▁dream +▁dreary +▁dress +▁dressed +▁drew +▁dri +▁drift +▁drink +▁drive +▁driven +▁driver +▁driving +▁droop +▁drop +▁dropped +▁dropping +▁drove +▁drown +▁drug +▁drum +▁drunk +▁dry +▁du +▁duchess +▁duck +▁due +▁duke +▁dull +▁dumb +▁dun +▁dunbar +▁dur +▁dusk +▁dust +▁dutch +▁duties +▁duty +▁dwarf +▁dwell +▁dwelt +▁dying +▁e +▁each +▁eager +▁eagerly +▁eagle +▁ear +▁earl +▁earlier +▁earliest +▁early +▁earn +▁earnest +▁ears +▁earth +▁ease +▁easier +▁easily +▁east +▁eastern +▁easy +▁eat +▁eaten +▁eating +▁echo +▁edge +▁edith +▁editor +▁educat +▁education +▁edward +▁effect +▁effort +▁eggs +▁egypt +▁egyptian +▁eight +▁eighteen +▁eighty +▁either +▁el +▁elaborate +▁elbow +▁elder +▁eldest +▁eleanor +▁elect +▁electric +▁elegant +▁element +▁elephant +▁eleven +▁eli +▁else +▁elsewhere +▁elsie +▁em +▁embark +▁embarrass +▁embrace +▁embroider +▁emerg +▁emily +▁eminent +▁emotion +▁emperor +▁emphasi +▁empire +▁employ +▁employed +▁empty +▁en +▁enable +▁enchant +▁enclos +▁encounter +▁encourage +▁end +▁endeavor +▁endeavour +▁endure +▁enemies +▁enemy +▁energetic +▁energy +▁engage +▁engaged +▁engagement +▁engine +▁england +▁english +▁enjoy +▁enjoyment +▁enlighten +▁enormous +▁enough +▁ensu +▁enter +▁entered +▁enterprise +▁entertain +▁enthusiasm +▁entire +▁entirely +▁entitled +▁entrance +▁entreat +▁envelope +▁envy +▁epi +▁equal +▁equally +▁er +▁ere +▁erect +▁errand +▁error +▁escape +▁escaped +▁escort +▁especially +▁essence +▁essential +▁establish +▁established +▁establishment +▁estate +▁esteem +▁estimate +▁estralla +▁eternal +▁eternity +▁europe +▁eustace +▁eva +▁even +▁evening +▁events +▁ever +▁every +▁everybody +▁everyone +▁everything +▁everywhere +▁evidence +▁evident +▁evidently +▁evil +▁ex +▁exact +▁exactly +▁examination +▁examine +▁examined +▁examining +▁example +▁exceed +▁exceedingly +▁excellency +▁excellent +▁except +▁exception +▁excess +▁exchange +▁excite +▁excited +▁excitement +▁exciting +▁exclaimed +▁exclamation +▁exclusive +▁excursion +▁excuse +▁execut +▁execution +▁exercise +▁exhaust +▁exhibit +▁exist +▁existence +▁expand +▁expect +▁expectation +▁expected +▁expedition +▁expense +▁experience +▁experiment +▁explain +▁explained +▁explanation +▁explore +▁exposed +▁express +▁expressed +▁expression +▁exquisite +▁extend +▁extended +▁extensive +▁extent +▁external +▁extra +▁extract +▁extraordinary +▁extreme +▁extremely +▁extremity +▁eye +▁eyebrows +▁eyes +▁f +▁fa +▁face +▁faces +▁facilit +▁facing +▁fact +▁faculties +▁faculty +▁faded +▁fail +▁failed +▁failure +▁faint +▁fair +▁fairly +▁fairy +▁faith +▁faithful +▁fall +▁fallen +▁falling +▁false +▁fame +▁familiar +▁families +▁family +▁famous +▁fan +▁fancied +▁fancies +▁fancy +▁fanny +▁fantastic +▁far +▁farewell +▁farm +▁farmer +▁farther +▁fashion +▁fast +▁fastened +▁fat +▁fatal +▁fate +▁father +▁fatigue +▁fault +▁favor +▁favorite +▁favour +▁favourite +▁fe +▁fear +▁fearful +▁feast +▁feather +▁feature +▁features +▁february +▁federal +▁feeble +▁feed +▁feel +▁feeling +▁feelings +▁feet +▁felicity +▁fell +▁fellow +▁felt +▁female +▁feminine +▁fence +▁fer +▁fertil +▁fetch +▁fever +▁few +▁fi +▁field +▁fields +▁fierce +▁fifteen +▁fifth +▁fifty +▁fight +▁fighting +▁figure +▁fill +▁filled +▁film +▁fin +▁final +▁finally +▁find +▁finding +▁fine +▁finger +▁fingers +▁finish +▁finished +▁fire +▁firm +▁firmly +▁first +▁fish +▁fisherman +▁fit +▁fitted +▁five +▁fix +▁fixed +▁fl +▁flag +▁flame +▁flank +▁flash +▁flat +▁flatter +▁fled +▁flee +▁fleet +▁flesh +▁flew +▁flicker +▁flight +▁flo +▁flock +▁flood +▁floor +▁florence +▁flour +▁flourish +▁flow +▁flower +▁flowers +▁flu +▁flutter +▁fly +▁flying +▁fo +▁fog +▁fold +▁folk +▁follow +▁followed +▁following +▁folly +▁fond +▁food +▁fool +▁foolish +▁foot +▁footsteps +▁for +▁forbid +▁force +▁forced +▁fore +▁forehead +▁foreign +▁foresee +▁forest +▁forget +▁forgive +▁forgot +▁forgotten +▁form +▁formed +▁former +▁formidable +▁forsake +▁forth +▁fortnight +▁fortunate +▁fortune +▁forty +▁forward +▁fought +▁found +▁fountain +▁four +▁fourteen +▁fourth +▁fowl +▁fox +▁fra +▁fragment +▁frame +▁france +▁francis +▁francs +▁frank +▁fred +▁frederick +▁free +▁freedom +▁french +▁frequent +▁frequently +▁fresh +▁fri +▁friday +▁friend +▁friendly +▁friends +▁friendship +▁fright +▁frightened +▁frightful +▁fringe +▁fro +▁frog +▁from +▁front +▁frown +▁fruit +▁fu +▁fulfil +▁full +▁fully +▁fun +▁function +▁fundamental +▁funeral +▁funny +▁fur +▁furious +▁furnish +▁furniture +▁further +▁future +▁g +▁ga +▁gain +▁gained +▁gall +▁gallant +▁gallery +▁gallop +▁game +▁gar +▁garden +▁garrison +▁gasp +▁gate +▁gather +▁gathered +▁gave +▁gay +▁ge +▁gen +▁general +▁generally +▁generation +▁generosity +▁generous +▁genius +▁gentle +▁gentleman +▁gentlemen +▁gently +▁genuine +▁george +▁ger +▁german +▁gesture +▁get +▁getting +▁ghastl +▁ghost +▁gi +▁giant +▁gift +▁gigantic +▁gil +▁gilbert +▁girl +▁girls +▁give +▁given +▁giving +▁gla +▁glacier +▁glad +▁glance +▁glancing +▁glass +▁gleam +▁glen +▁glid +▁glimmer +▁glimpse +▁glitter +▁globe +▁gloom +▁gloomy +▁glorious +▁glory +▁glove +▁glow +▁go +▁goat +▁god +▁goddess +▁goes +▁going +▁gold +▁golden +▁gone +▁good +▁gorgeous +▁gospel +▁gossip +▁got +▁govern +▁government +▁governor +▁gown +▁gra +▁grace +▁graceful +▁gracious +▁gradually +▁grand +▁grandfather +▁grandmother +▁granite +▁grant +▁grasp +▁grass +▁grateful +▁gratify +▁gratitude +▁grave +▁gravity +▁gray +▁gre +▁great +▁greater +▁greatest +▁greatly +▁greek +▁green +▁grew +▁grey +▁gri +▁grief +▁grieve +▁grim +▁grin +▁gro +▁groan +▁ground +▁group +▁grove +▁grow +▁growing +▁growl +▁grown +▁growth +▁gu +▁guard +▁guess +▁guest +▁guide +▁guilt +▁guilty +▁guinea +▁gun +▁ha +▁habit +▁habitual +▁had +▁hair +▁hale +▁half +▁hall +▁halt +▁ham +▁hamilton +▁hammer +▁hand +▁handkerchief +▁hands +▁handsome +▁hang +▁hanging +▁hans +▁happen +▁happened +▁happier +▁happily +▁happiness +▁happy +▁har +▁harbor +▁harbour +▁hard +▁hardly +▁harm +▁harmoni +▁harmony +▁harry +▁harsh +▁harvest +▁has +▁haste +▁hastened +▁hastily +▁hat +▁hate +▁hath +▁hatred +▁haunt +▁have +▁haven +▁having +▁hawk +▁hay +▁he +▁head +▁heads +▁health +▁heap +▁hear +▁heard +▁hearing +▁heart +▁heat +▁heaven +▁heavily +▁heavy +▁hebrew +▁hedge +▁height +▁held +▁helen +▁help +▁helpless +▁hence +▁henry +▁her +▁herbert +▁hercules +▁here +▁hero +▁herself +▁hesitate +▁hesitated +▁hesitation +▁hi +▁hid +▁hidden +▁hide +▁hideous +▁high +▁higher +▁highest +▁hill +▁hills +▁him +▁himself +▁hind +▁hint +▁his +▁history +▁hit +▁hither +▁hitherto +▁ho +▁hoarse +▁hold +▁holding +▁hole +▁holiday +▁holland +▁hollow +▁holy +▁home +▁honest +▁honey +▁honor +▁honour +▁hook +▁hope +▁hoped +▁hopeless +▁hoping +▁hori +▁horn +▁horrible +▁horrid +▁horror +▁horse +▁horses +▁hospital +▁host +▁hot +▁hotel +▁hour +▁hours +▁house +▁household +▁housekeeper +▁houses +▁how +▁however +▁hu +▁huge +▁hum +▁human +▁humanity +▁humble +▁humor +▁humour +▁hundred +▁hung +▁hunger +▁hungry +▁hunt +▁hunter +▁hunting +▁hurried +▁hurry +▁hurt +▁husband +▁hush +▁hut +▁hy +▁hymn +▁hypnoti +▁i +▁ice +▁idea +▁ideal +▁ideas +▁identity +▁idiot +▁idle +▁if +▁ignor +▁ignorance +▁ignorant +▁ill +▁illusion +▁illustrat +▁image +▁imagination +▁imagine +▁imitat +▁immediate +▁immediately +▁immense +▁immortal +▁imp +▁impart +▁impatience +▁impatient +▁imperfect +▁imperial +▁import +▁importance +▁important +▁impossible +▁impressed +▁impression +▁improve +▁improvement +▁impulse +▁in +▁incapable +▁incense +▁incessant +▁inches +▁incident +▁inclination +▁inclined +▁includ +▁income +▁increase +▁increased +▁increasing +▁indeed +▁independence +▁independent +▁india +▁indian +▁indians +▁indifference +▁indifferent +▁indignant +▁indignation +▁individual +▁induce +▁indulge +▁industry +▁inevitable +▁infant +▁inferior +▁infinite +▁inflict +▁influence +▁information +▁informed +▁inhabit +▁inhabitants +▁inherit +▁injured +▁injury +▁injustice +▁innocence +▁innocent +▁innumerable +▁inquire +▁inquired +▁inquiries +▁inquiry +▁insect +▁inside +▁insist +▁inspector +▁instance +▁instant +▁instantly +▁instead +▁instinct +▁instinctively +▁institution +▁instruct +▁instrument +▁insult +▁intellect +▁intellectual +▁intelligence +▁intelligent +▁intelligible +▁intend +▁intended +▁intense +▁intensity +▁intent +▁intention +▁inter +▁intercourse +▁interest +▁interested +▁interesting +▁interfere +▁internal +▁interposed +▁interpret +▁interrupt +▁interrupted +▁interval +▁interven +▁interview +▁intimacy +▁intimate +▁into +▁introduced +▁invariably +▁invent +▁investigat +▁invisible +▁invitation +▁invited +▁ireland +▁irish +▁iron +▁irre +▁irregular +▁irresistible +▁is +▁isabel +▁island +▁isn +▁issue +▁it +▁italian +▁italy +▁its +▁itself +▁j +▁ja +▁jack +▁jackson +▁jacob +▁james +▁jane +▁january +▁japanese +▁jar +▁jasper +▁jaw +▁je +▁jealous +▁jean +▁jerk +▁jerry +▁jerusalem +▁jest +▁jesus +▁jew +▁jewel +▁jim +▁jimmie +▁jimmy +▁jo +▁job +▁joe +▁john +▁johnson +▁join +▁joined +▁joke +▁jolly +▁jones +▁joseph +▁journal +▁journey +▁joy +▁ju +▁jud +▁judge +▁judgment +▁juice +▁julia +▁julie +▁julius +▁jump +▁jumped +▁june +▁jungle +▁just +▁justice +▁justify +▁k +▁ka +▁kate +▁katy +▁keen +▁keep +▁keeping +▁keith +▁ken +▁kennedy +▁kept +▁kettle +▁key +▁ki +▁kick +▁kill +▁killed +▁kind +▁kindly +▁kindness +▁king +▁kingdom +▁kiss +▁kissed +▁kit +▁kitchen +▁kitty +▁knee +▁knees +▁knelt +▁knew +▁knife +▁knight +▁knit +▁knock +▁knot +▁know +▁knowing +▁knowledge +▁known +▁knows +▁ko +▁la +▁labor +▁labour +▁lace +▁lack +▁lad +▁ladder +▁ladies +▁lady +▁laid +▁lake +▁lamb +▁lament +▁lamp +▁land +▁landlord +▁landscape +▁lane +▁language +▁lantern +▁lap +▁large +▁larger +▁last +▁late +▁later +▁latter +▁laugh +▁laughed +▁laughing +▁laughter +▁launcelot +▁launch +▁laura +▁law +▁laws +▁lawyer +▁lay +▁le +▁lead +▁leader +▁leading +▁leaf +▁league +▁lean +▁leaned +▁leaning +▁leap +▁learn +▁learned +▁least +▁leather +▁leave +▁leaves +▁leaving +▁lecture +▁led +▁left +▁leg +▁legend +▁legislature +▁legs +▁leisure +▁lemon +▁lend +▁length +▁leonora +▁less +▁lesson +▁lest +▁let +▁letter +▁letters +▁level +▁levin +▁li +▁liberal +▁liberty +▁library +▁lie +▁lies +▁lieutenant +▁life +▁lift +▁lifted +▁light +▁lightning +▁like +▁liked +▁likely +▁likewise +▁limb +▁limit +▁lin +▁lincoln +▁line +▁lines +▁linger +▁lion +▁lips +▁liquid +▁liquor +▁list +▁listen +▁listened +▁listening +▁literally +▁literary +▁literature +▁little +▁live +▁lived +▁lives +▁living +▁lo +▁load +▁loaf +▁local +▁lock +▁locked +▁lodge +▁lodging +▁lofty +▁log +▁london +▁lonely +▁long +▁longer +▁look +▁looked +▁looking +▁looks +▁loose +▁lord +▁lose +▁losing +▁loss +▁lost +▁lot +▁loud +▁louis +▁loung +▁love +▁loved +▁lovely +▁lover +▁loving +▁low +▁lower +▁loyal +▁lu +▁luc +▁luck +▁lucy +▁lunch +▁luxury +▁lying +▁lyn +▁m +▁ma +▁mac +▁machine +▁mad +▁madam +▁madame +▁made +▁mademoiselle +▁maggie +▁magic +▁magician +▁magistrate +▁magnificent +▁maid +▁maiden +▁main +▁maintain +▁majesty +▁major +▁majority +▁make +▁makes +▁making +▁mal +▁male +▁mamma +▁man +▁manage +▁managed +▁manifest +▁mankind +▁manner +▁manufacture +▁manuscript +▁many +▁mar +▁marble +▁march +▁margaret +▁marguerite +▁marian +▁marilla +▁mark +▁marked +▁market +▁marquis +▁marriage +▁married +▁marry +▁marsh +▁martha +▁martian +▁martin +▁martyr +▁marvel +▁marvellous +▁mary +▁mask +▁mass +▁master +▁mat +▁match +▁mate +▁material +▁matter +▁matters +▁matthew +▁maxim +▁may +▁maybe +▁me +▁meadow +▁meal +▁mean +▁meaning +▁means +▁meant +▁meantime +▁meanwhile +▁measure +▁meat +▁mechanical +▁medi +▁medical +▁medicine +▁meet +▁meeting +▁melancholy +▁member +▁members +▁memories +▁memory +▁men +▁mental +▁mention +▁mentioned +▁mer +▁merchant +▁mercy +▁mere +▁merely +▁merit +▁merry +▁message +▁messenger +▁met +▁metal +▁method +▁mexican +▁mi +▁michael +▁mid +▁middle +▁midnight +▁midst +▁might +▁mighty +▁mil +▁mild +▁mile +▁miles +▁military +▁milk +▁mill +▁million +▁min +▁mind +▁mine +▁mingled +▁minister +▁minute +▁minutes +▁miracle +▁mirror +▁mirth +▁mis +▁mischief +▁miserable +▁misery +▁misfortune +▁miss +▁mission +▁missus +▁mist +▁mistake +▁mistaken +▁mister +▁mistress +▁mitya +▁mix +▁mixture +▁mo +▁mock +▁mode +▁moderate +▁modern +▁modest +▁moment +▁mon +▁monarch +▁monday +▁money +▁monk +▁monkey +▁monsieur +▁monster +▁monstrous +▁monte +▁month +▁months +▁monument +▁mood +▁moon +▁moonlight +▁mor +▁moral +▁more +▁moreover +▁morning +▁morrow +▁mortal +▁moscow +▁most +▁mother +▁motion +▁motionless +▁motive +▁motor +▁mould +▁mount +▁mountain +▁mountains +▁mounted +▁mourn +▁mouse +▁mouth +▁move +▁moved +▁movement +▁moving +▁mu +▁much +▁mud +▁mule +▁multitude +▁murder +▁murderer +▁murmur +▁murmured +▁muscle +▁muscular +▁music +▁musket +▁must +▁muttered +▁mutual +▁my +▁myself +▁mysterious +▁mystery +▁na +▁nail +▁naked +▁name +▁named +▁nancy +▁napoleon +▁narrat +▁narrow +▁natasha +▁nation +▁national +▁native +▁natural +▁naturally +▁nature +▁naught +▁nautilus +▁nav +▁navigat +▁nay +▁ne +▁near +▁nearer +▁nearest +▁nearly +▁neat +▁necessarily +▁necessary +▁necessity +▁neck +▁need +▁needed +▁neglect +▁negro +▁neighbor +▁neighborhood +▁neighbour +▁neighbourhood +▁neither +▁nephew +▁nerve +▁nervous +▁nest +▁never +▁nevertheless +▁new +▁news +▁newspaper +▁next +▁ni +▁nice +▁nicholas +▁niece +▁nigh +▁night +▁nightingale +▁nine +▁nineteen +▁ninety +▁ninth +▁no +▁nobility +▁noble +▁nobody +▁nodded +▁noise +▁none +▁nonsense +▁nor +▁normal +▁norman +▁north +▁northern +▁nose +▁not +▁note +▁nothing +▁notice +▁noticed +▁notwithstanding +▁novel +▁november +▁now +▁nowhere +▁nu +▁number +▁numerous +▁nurse +▁nut +▁o +▁oak +▁oath +▁ob +▁obedience +▁obey +▁object +▁objection +▁obligation +▁obliged +▁obscure +▁observation +▁observe +▁observed +▁observing +▁obstacle +▁obstinate +▁obtain +▁obtained +▁obvious +▁occasion +▁occasionally +▁occupation +▁occupied +▁occupy +▁occur +▁occurred +▁occurrence +▁ocean +▁october +▁odd +▁of +▁off +▁offend +▁offer +▁offered +▁office +▁officer +▁officers +▁official +▁often +▁oh +▁oil +▁old +▁oliver +▁on +▁once +▁one +▁only +▁open +▁opened +▁opening +▁opera +▁operation +▁opinion +▁opponent +▁opportunity +▁opposite +▁opposition +▁oppress +▁or +▁orange +▁orchard +▁order +▁ordered +▁orders +▁ordinary +▁organ +▁organi +▁origin +▁original +▁ornament +▁other +▁others +▁otherwise +▁ought +▁ounce +▁our +▁ourselves +▁out +▁outrage +▁outside +▁oven +▁over +▁overcome +▁overflow +▁overlook +▁overtake +▁overwhelm +▁owe +▁owing +▁owl +▁own +▁oyster +▁p +▁pa +▁pace +▁pacific +▁pack +▁page +▁paid +▁pain +▁painful +▁painted +▁pair +▁pal +▁palace +▁pale +▁palm +▁pan +▁papa +▁paper +▁papers +▁par +▁para +▁paradise +▁parallel +▁parcel +▁pardon +▁parents +▁paris +▁park +▁parliament +▁parlor +▁parlour +▁part +▁particle +▁particular +▁particularly +▁parties +▁partner +▁parts +▁party +▁pass +▁passage +▁passed +▁passenger +▁passing +▁passion +▁passionate +▁past +▁pat +▁patch +▁path +▁patience +▁patient +▁patriot +▁paul +▁pause +▁paused +▁pavement +▁paw +▁pay +▁pe +▁pea +▁peace +▁peak +▁pearl +▁peasant +▁peculiar +▁peep +▁peer +▁pen +▁pencil +▁penetrate +▁penny +▁people +▁pepper +▁per +▁perceive +▁perceived +▁perceiving +▁perception +▁perch +▁perfect +▁perfection +▁perfectly +▁perform +▁performance +▁perfume +▁perhaps +▁peril +▁period +▁perish +▁permanent +▁permission +▁permit +▁permitted +▁perpetual +▁perplex +▁persecut +▁persist +▁person +▁personal +▁persons +▁persuade +▁pet +▁peter +▁pharaoh +▁phenomena +▁phenomenon +▁phil +▁philadelphia +▁philip +▁philosopher +▁philosophy +▁phoenix +▁photograph +▁phrase +▁physical +▁physician +▁pi +▁piano +▁pick +▁picked +▁picture +▁piece +▁pieces +▁pierced +▁pierre +▁pig +▁pile +▁pilgrim +▁pill +▁pillow +▁pilot +▁pin +▁pine +▁pink +▁pinocchio +▁pipe +▁pirate +▁pistol +▁pit +▁pitch +▁pitiful +▁pity +▁pla +▁plac +▁place +▁placed +▁places +▁plague +▁plain +▁plainly +▁plan +▁planet +▁plant +▁plate +▁platform +▁play +▁played +▁playing +▁plea +▁pleasant +▁please +▁pleased +▁pleasure +▁pledge +▁plenty +▁plot +▁plough +▁pluck +▁plum +▁plunder +▁plunge +▁po +▁pocket +▁poem +▁poet +▁poetry +▁point +▁pointed +▁poison +▁pole +▁police +▁policy +▁polish +▁polite +▁political +▁politics +▁polly +▁pond +▁pony +▁pool +▁poor +▁pope +▁popular +▁population +▁porch +▁port +▁porthos +▁portion +▁portrait +▁position +▁positive +▁possess +▁possessed +▁possession +▁possibility +▁possible +▁possibly +▁post +▁pot +▁pound +▁pounds +▁pour +▁poverty +▁powder +▁power +▁powerful +▁powers +▁pra +▁practical +▁practice +▁practise +▁prairie +▁praise +▁pray +▁prayer +▁pre +▁preach +▁precaution +▁precede +▁preceding +▁precious +▁precise +▁precisely +▁prefer +▁preferred +▁prejudice +▁preparation +▁prepare +▁prepared +▁preparing +▁presence +▁present +▁presented +▁presently +▁preserv +▁president +▁press +▁pressed +▁pressure +▁presume +▁pretend +▁pretty +▁prevail +▁prevent +▁previous +▁pri +▁price +▁pride +▁priest +▁primitive +▁prince +▁princess +▁principal +▁principle +▁print +▁priscilla +▁prison +▁prisoner +▁private +▁privilege +▁pro +▁probability +▁probable +▁probably +▁problem +▁proceed +▁proceeded +▁process +▁proclaim +▁procure +▁produce +▁produced +▁producing +▁product +▁profess +▁profession +▁professor +▁profit +▁profound +▁progress +▁prohibit +▁project +▁prominent +▁promise +▁promised +▁promising +▁promote +▁prompt +▁pronounc +▁proof +▁prop +▁proper +▁properly +▁property +▁prophet +▁proportion +▁proposal +▁propose +▁proposed +▁proposition +▁proprietor +▁prospect +▁prosperity +▁protect +▁protection +▁protest +▁proud +▁prove +▁proved +▁proverb +▁provide +▁provided +▁province +▁provision +▁provoke +▁prudence +▁prudent +▁psmith +▁pu +▁public +▁publish +▁puff +▁pull +▁pulled +▁pulse +▁punish +▁punishment +▁pupil +▁pur +▁purchase +▁pure +▁purple +▁purpose +▁purse +▁pursue +▁pursued +▁pursuit +▁push +▁pushed +▁put +▁putting +▁qua +▁quaint +▁qualities +▁quality +▁quantity +▁quarrel +▁quarter +▁queen +▁queer +▁question +▁questions +▁qui +▁quick +▁quickly +▁quiet +▁quietly +▁quite +▁quiver +▁quixote +▁quo +▁quoth +▁r +▁ra +▁rabbit +▁race +▁rachel +▁radiant +▁rag +▁rage +▁rail +▁railroad +▁railway +▁rain +▁rainbow +▁raise +▁raised +▁raising +▁ralph +▁ram +▁ran +▁rang +▁range +▁rank +▁raoul +▁rapid +▁rapidly +▁rare +▁rascal +▁rate +▁rather +▁rational +▁rattl +▁raven +▁ray +▁re +▁reach +▁reached +▁reaction +▁read +▁reader +▁readily +▁reading +▁ready +▁real +▁reali +▁reality +▁really +▁rear +▁reason +▁rebecca +▁rebel +▁recall +▁receive +▁received +▁receiving +▁recent +▁reception +▁recess +▁recit +▁reckless +▁reckon +▁recogni +▁recollect +▁recollection +▁recommend +▁reconcil +▁record +▁recover +▁recovered +▁red +▁reduced +▁refer +▁reference +▁refined +▁reflect +▁reflection +▁reform +▁refrain +▁refresh +▁refuge +▁refuse +▁refused +▁regain +▁regard +▁regarded +▁regiment +▁region +▁regret +▁regular +▁regulat +▁reign +▁reject +▁rejoice +▁rejoicing +▁relate +▁related +▁relation +▁relative +▁relax +▁release +▁reli +▁relief +▁relieve +▁religion +▁religious +▁reluctant +▁remain +▁remained +▁remark +▁remarkable +▁remarked +▁remedy +▁remember +▁remembered +▁remembrance +▁remind +▁remorse +▁remote +▁remove +▁removed +▁render +▁rendered +▁renew +▁rent +▁rep +▁repair +▁repeat +▁repeated +▁repent +▁replied +▁reply +▁report +▁represent +▁representative +▁reproach +▁republic +▁reputation +▁request +▁require +▁required +▁rescue +▁resemblance +▁resemble +▁reserve +▁residence +▁resign +▁resist +▁resistance +▁resolute +▁resolution +▁resolved +▁resort +▁resource +▁respect +▁response +▁responsibility +▁responsible +▁rest +▁restless +▁restore +▁restrain +▁result +▁resumed +▁retain +▁retire +▁retired +▁retorted +▁retreat +▁return +▁returned +▁returning +▁rev +▁reveal +▁revelation +▁revenge +▁rever +▁review +▁revolt +▁revolution +▁reward +▁ri +▁ribbon +▁rich +▁richard +▁richmond +▁rid +▁ride +▁ridiculous +▁riding +▁rifle +▁right +▁righteous +▁rigid +▁ring +▁ripe +▁rise +▁rising +▁risk +▁rival +▁river +▁ro +▁road +▁roar +▁roast +▁rob +▁robber +▁robe +▁robert +▁robin +▁rock +▁rocks +▁rode +▁roll +▁rolled +▁roman +▁rome +▁roof +▁room +▁root +▁rope +▁rosa +▁rose +▁rough +▁round +▁roused +▁route +▁row +▁royal +▁ru +▁rub +▁rubbed +▁rubbing +▁rude +▁ruin +▁rule +▁rum +▁run +▁running +▁rush +▁rushed +▁russia +▁russian +▁ruth +▁s +▁sa +▁sacred +▁sacrifice +▁sad +▁saddle +▁safe +▁safety +▁said +▁sail +▁sailor +▁saint +▁sake +▁sal +▁salt +▁salute +▁sam +▁same +▁samuel +▁san +▁sancho +▁sand +▁sang +▁sank +▁sarah +▁sat +▁satisfaction +▁satisfactory +▁satisfied +▁satisfy +▁saturday +▁sauce +▁savage +▁save +▁saved +▁saving +▁saw +▁say +▁saying +▁says +▁sc +▁sca +▁scale +▁scandal +▁scar +▁scarce +▁scarcely +▁scarecrow +▁scarlet +▁scattered +▁scene +▁scent +▁sch +▁scheme +▁scholar +▁school +▁science +▁scientific +▁scold +▁score +▁scorn +▁scotch +▁scotland +▁scott +▁scoundrel +▁scout +▁scramble +▁scrap +▁scratch +▁scream +▁screen +▁screw +▁scrooge +▁se +▁sea +▁seal +▁search +▁season +▁seat +▁seated +▁second +▁secret +▁secretary +▁section +▁secure +▁security +▁see +▁seeing +▁seek +▁seem +▁seemed +▁seems +▁seen +▁sei +▁seldom +▁select +▁self +▁selfish +▁sell +▁senate +▁senator +▁send +▁sensation +▁sense +▁sensible +▁sensitive +▁sent +▁sentence +▁sentiment +▁separate +▁separated +▁september +▁ser +▁serene +▁sergeant +▁series +▁serious +▁sermon +▁serpent +▁servant +▁servants +▁serve +▁served +▁service +▁serving +▁set +▁setting +▁settle +▁settled +▁seven +▁seventeen +▁seventy +▁several +▁severe +▁sex +▁sh +▁sha +▁shade +▁shadow +▁shaggy +▁shake +▁shakespeare +▁shaking +▁shall +▁shame +▁shape +▁share +▁sharp +▁sharply +▁shawl +▁she +▁sheep +▁shelter +▁shepherd +▁sheriff +▁shield +▁shift +▁shilling +▁shine +▁shining +▁ship +▁ships +▁shirt +▁shiver +▁shock +▁shoe +▁shoes +▁shone +▁shook +▁shoot +▁shop +▁shore +▁short +▁shot +▁should +▁shoulder +▁shoulders +▁shout +▁shouted +▁show +▁showed +▁shown +▁shrewd +▁shriek +▁shrill +▁shrink +▁shudder +▁shut +▁si +▁sick +▁side +▁sides +▁siege +▁sigh +▁sighed +▁sight +▁sign +▁signal +▁significance +▁significant +▁silence +▁silent +▁silk +▁silly +▁silver +▁similar +▁simon +▁simple +▁simplicity +▁simply +▁sin +▁since +▁sing +▁singing +▁single +▁singular +▁sink +▁sir +▁sister +▁sit +▁sitting +▁situated +▁situation +▁six +▁sixteen +▁sixty +▁sketch +▁ski +▁skilful +▁skill +▁skin +▁skirt +▁skull +▁sky +▁slain +▁slaughter +▁slave +▁slavery +▁slaves +▁sledge +▁sleep +▁sleeve +▁slender +▁slept +▁slew +▁slice +▁slid +▁slight +▁slightest +▁slightly +▁slim +▁slip +▁slipped +▁slo +▁slope +▁slow +▁slowly +▁slumber +▁small +▁smart +▁smash +▁smell +▁smile +▁smiled +▁smiling +▁smith +▁smoke +▁smoking +▁smooth +▁smot +▁snake +▁snap +▁snatch +▁sneer +▁snow +▁so +▁social +▁society +▁soft +▁softly +▁soil +▁sold +▁soldier +▁soldiers +▁solemn +▁solicit +▁solid +▁solitary +▁solitude +▁solomon +▁solution +▁some +▁somebody +▁somehow +▁someone +▁something +▁sometimes +▁somewhat +▁somewhere +▁son +▁song +▁soon +▁sooner +▁sooth +▁sorrow +▁sorry +▁sort +▁sought +▁soul +▁sound +▁source +▁south +▁southern +▁sovereign +▁sp +▁space +▁spain +▁spake +▁spaniard +▁spanish +▁spar +▁spare +▁spark +▁speak +▁speaking +▁spear +▁special +▁species +▁specimen +▁speck +▁spectacle +▁spectator +▁speculat +▁speech +▁speed +▁spell +▁spend +▁spent +▁sphere +▁spi +▁spin +▁spirit +▁spirits +▁spiritual +▁spite +▁splash +▁splendid +▁splendor +▁split +▁spoil +▁spoke +▁spoken +▁spoon +▁sport +▁spot +▁sprang +▁spread +▁spring +▁sprinkle +▁spur +▁squ +▁square +▁squee +▁squire +▁squirrel +▁st +▁sta +▁stable +▁staff +▁stage +▁stagger +▁staircase +▁stairs +▁stalk +▁stamp +▁stand +▁standard +▁standing +▁star +▁stared +▁stars +▁start +▁started +▁startled +▁state +▁statement +▁states +▁station +▁statue +▁stay +▁ste +▁steadily +▁steady +▁steal +▁steam +▁steel +▁steep +▁step +▁stephen +▁stepped +▁steps +▁stern +▁stick +▁stiff +▁still +▁stir +▁stirred +▁sto +▁stock +▁stole +▁stomach +▁stone +▁stones +▁stood +▁stooped +▁stop +▁stopped +▁stopping +▁store +▁stories +▁storm +▁story +▁stout +▁straight +▁strain +▁strait +▁strange +▁stranger +▁strap +▁strat +▁straw +▁stray +▁streak +▁stream +▁street +▁streets +▁strength +▁stretch +▁stretched +▁strew +▁stricken +▁strict +▁strike +▁striking +▁string +▁strip +▁stro +▁stroke +▁strong +▁struck +▁structure +▁struggle +▁struggling +▁stuck +▁student +▁studied +▁studies +▁studio +▁study +▁stuff +▁stumble +▁stump +▁stupid +▁style +▁su +▁sub +▁subdued +▁subject +▁sublime +▁submit +▁subsequent +▁substance +▁substantial +▁subtle +▁succeed +▁succeeded +▁success +▁successful +▁such +▁sudden +▁suddenly +▁suffer +▁suffered +▁suffering +▁suffice +▁sufficient +▁sufficiently +▁suffrage +▁sugar +▁suggest +▁suggested +▁suggestion +▁suit +▁sullen +▁sultan +▁sum +▁summer +▁summit +▁summon +▁sun +▁sunday +▁sunk +▁sunlight +▁sunrise +▁sunset +▁sunshine +▁super +▁superintend +▁superior +▁supper +▁supplied +▁supplies +▁supply +▁support +▁suppose +▁supposed +▁supposing +▁suppress +▁supreme +▁sur +▁sure +▁surely +▁surface +▁surgeon +▁surpass +▁surprise +▁surprised +▁surprising +▁surrender +▁surrounded +▁surrounding +▁survey +▁surviv +▁susan +▁suspect +▁suspicion +▁suspicious +▁sustain +▁sw +▁swa +▁swallow +▁swarm +▁swear +▁sweat +▁sweep +▁sweet +▁swell +▁swept +▁swift +▁swim +▁swimming +▁sword +▁swore +▁swung +▁sy +▁sylvia +▁symbol +▁sympathetic +▁sympathi +▁sympathy +▁symptom +▁system +▁t +▁ta +▁table +▁tail +▁take +▁taken +▁taking +▁tale +▁talent +▁talk +▁talked +▁talking +▁tall +▁tang +▁tank +▁tap +▁tar +▁task +▁taste +▁taught +▁tax +▁te +▁tea +▁teach +▁teacher +▁tear +▁tears +▁teeth +▁telegraph +▁telephone +▁tell +▁telling +▁temper +▁temperament +▁temperature +▁tempest +▁temple +▁temporary +▁tempt +▁temptation +▁ten +▁tendency +▁tender +▁tenderness +▁term +▁terms +▁terrace +▁terrible +▁terribly +▁terrified +▁territory +▁terror +▁test +▁testimony +▁text +▁th +▁than +▁thank +▁that +▁the +▁theatre +▁their +▁them +▁themselves +▁then +▁there +▁therefore +▁thereupon +▁these +▁they +▁thick +▁thief +▁thieves +▁thin +▁thing +▁things +▁think +▁thinking +▁third +▁thirst +▁thirteen +▁thirty +▁this +▁thither +▁thomas +▁thornton +▁thorough +▁thoroughly +▁those +▁thou +▁though +▁thought +▁thoughtfully +▁thoughts +▁thousand +▁thread +▁threat +▁threatened +▁threatening +▁three +▁threshold +▁threw +▁thrill +▁thro +▁throat +▁throne +▁throng +▁through +▁throughout +▁throw +▁throwing +▁thrown +▁thrust +▁thumb +▁thunder +▁thus +▁thy +▁thyself +▁ti +▁ticket +▁tide +▁tidings +▁tied +▁tight +▁till +▁timber +▁time +▁times +▁timid +▁tin +▁tiny +▁tip +▁tired +▁title +▁to +▁tobacco +▁today +▁together +▁told +▁tom +▁tomb +▁tomorrow +▁tone +▁tongue +▁too +▁took +▁top +▁torment +▁torrent +▁torture +▁total +▁touch +▁touched +▁toward +▁towards +▁tower +▁town +▁tra +▁trace +▁track +▁trade +▁tradition +▁tragedy +▁tragic +▁trail +▁train +▁traitor +▁tramp +▁tranquil +▁trans +▁transport +▁trap +▁travel +▁traveller +▁tre +▁tread +▁treasure +▁treat +▁treated +▁treatment +▁tree +▁trees +▁tremble +▁trembled +▁trembling +▁tremendous +▁trench +▁tri +▁trial +▁tribe +▁trick +▁tried +▁trifle +▁trifling +▁trip +▁tristram +▁triumph +▁triumphant +▁troop +▁troops +▁trot +▁trouble +▁troubled +▁trousers +▁trout +▁tru +▁true +▁truly +▁trumpet +▁trunk +▁trust +▁truth +▁try +▁trying +▁tu +▁tuesday +▁tulliver +▁tumble +▁tumult +▁turkey +▁turn +▁turned +▁turning +▁turtle +▁twas +▁twelve +▁twentieth +▁twenty +▁twice +▁twilight +▁twin +▁twist +▁two +▁type +▁tyrant +▁ugly +▁ultimate +▁umbrella +▁un +▁unable +▁unc +▁uncertain +▁uncle +▁uncomfortable +▁uncommon +▁unconscious +▁und +▁under +▁underneath +▁understand +▁understanding +▁understood +▁undertake +▁undertaking +▁undoubtedly +▁uneasiness +▁uneasy +▁unexpected +▁unfortunate +▁unhappy +▁uniform +▁union +▁united +▁universal +▁universe +▁university +▁unjust +▁unknown +▁unless +▁unlike +▁unnatural +▁unnecessary +▁unpleasant +▁unre +▁unseen +▁until +▁unto +▁unusual +▁unwilling +▁unworthy +▁up +▁upon +▁upper +▁upstairs +▁urge +▁us +▁use +▁used +▁useful +▁useless +▁usual +▁usually +▁utili +▁utmost +▁utter +▁uttered +▁utterly +▁va +▁vacant +▁vague +▁vain +▁val +▁valentine +▁valjean +▁valley +▁valuable +▁value +▁van +▁vanished +▁vari +▁variety +▁various +▁vast +▁vault +▁ve +▁vegetable +▁vehicle +▁veil +▁velvet +▁ven +▁vengeance +▁venture +▁ventured +▁ver +▁verse +▁very +▁vessel +▁vexed +▁vi +▁vibrat +▁vice +▁victim +▁victor +▁victory +▁view +▁vigorous +▁village +▁villain +▁villefort +▁vine +▁violence +▁violent +▁violet +▁virgin +▁virginia +▁virtue +▁virtuous +▁visible +▁vision +▁visit +▁visitor +▁vital +▁vivid +▁vo +▁voice +▁vol +▁volume +▁volunteer +▁vote +▁vow +▁voyage +▁vulgar +▁w +▁wa +▁wag +▁wagon +▁waist +▁waistcoat +▁wait +▁waited +▁waiting +▁wake +▁wal +▁walk +▁walked +▁walking +▁wall +▁walls +▁walter +▁wander +▁wandering +▁want +▁wanted +▁war +▁warm +▁warn +▁warning +▁warrant +▁warrior +▁was +▁wash +▁washington +▁watch +▁watched +▁watching +▁water +▁wave +▁waves +▁waving +▁wax +▁way +▁ways +▁we +▁weak +▁weakness +▁wealth +▁weapon +▁wear +▁weary +▁weather +▁wedding +▁week +▁weeks +▁weep +▁weigh +▁weight +▁welcome +▁welfare +▁well +▁went +▁wept +▁were +▁west +▁western +▁wh +▁whale +▁what +▁whatever +▁wheat +▁wheel +▁when +▁whence +▁where +▁wherefore +▁whereupon +▁whether +▁whi +▁which +▁while +▁whilst +▁whip +▁whirl +▁whisk +▁whisper +▁whispered +▁whistle +▁white +▁whither +▁who +▁whole +▁wholly +▁whom +▁whose +▁why +▁wi +▁wicked +▁wide +▁widow +▁wife +▁wild +▁wilderness +▁will +▁william +▁willing +▁wilson +▁wilt +▁win +▁wind +▁window +▁windows +▁wine +▁wings +▁winter +▁wip +▁wire +▁wisdom +▁wise +▁wish +▁wished +▁wishes +▁wit +▁witch +▁with +▁withdraw +▁withdrew +▁within +▁without +▁witness +▁wives +▁woe +▁woke +▁wolf +▁wolves +▁woman +▁women +▁won +▁wonder +▁wondered +▁wonderful +▁wondering +▁wood +▁wooden +▁woods +▁word +▁words +▁wore +▁work +▁worked +▁working +▁world +▁worm +▁worn +▁worried +▁worry +▁worse +▁worship +▁worst +▁worth +▁worthy +▁would +▁wouldn +▁wound +▁wounded +▁wrap +▁wrapped +▁wrath +▁wreck +▁wren +▁wretch +▁wretched +▁wrinkl +▁wrist +▁write +▁writer +▁writing +▁written +▁wrong +▁wrote +▁wrought +▁ya +▁yard +▁ye +▁year +▁years +▁yellow +▁yes +▁yesterday +▁yet +▁yield +▁yo +▁yonder +▁york +▁you +▁young +▁your +▁yourself +▁yourselves +▁youth + diff --git a/modules/audio/asr/u2_conformer_librispeech/module.py b/modules/audio/asr/u2_conformer_librispeech/module.py new file mode 100644 index 0000000000000000000000000000000000000000..b98277f56d4ee4e88a36ce4dfa0c32d35368b1e9 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/module.py @@ -0,0 +1,74 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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 +from pathlib import Path +import sys + +import numpy as np +from paddlehub.env import MODULE_HOME +from paddlehub.module.module import moduleinfo, serving +from paddlehub.utils.log import logger + +import paddle +import soundfile as sf + +# TODO: Remove system path when deepspeech can be installed via pip. +sys.path.append(os.path.join(MODULE_HOME, 'u2_conformer_librispeech')) +from deepspeech.exps.u2.config import get_cfg_defaults +from deepspeech.utils.utility import UpdateConfig +from .u2_conformer_tester import U2ConformerTester + + +@moduleinfo( + name="u2_conformer_librispeech", version="1.0.0", summary="", author="Baidu", author_email="", type="audio/asr") +class U2Conformer(paddle.nn.Layer): + def __init__(self): + super(U2Conformer, self).__init__() + + # resource + res_dir = os.path.join(MODULE_HOME, 'u2_conformer_librispeech', 'assets') + conf_file = os.path.join(res_dir, 'conf/conformer.yaml') + checkpoint = os.path.join(res_dir, 'checkpoints/avg_30.pdparams') + + # config + self.config = get_cfg_defaults() + self.config.merge_from_file(conf_file) + + # TODO: Remove path updating snippet. + with UpdateConfig(self.config): + self.config.collator.vocab_filepath = os.path.join(res_dir, self.config.collator.vocab_filepath) + self.config.collator.spm_model_prefix = os.path.join(res_dir, self.config.collator.spm_model_prefix) + self.config.collator.augmentation_config = os.path.join(res_dir, self.config.collator.augmentation_config) + self.config.model.cmvn_file = os.path.join(res_dir, self.config.model.cmvn_file) + self.config.decoding.decoding_method = 'attention_rescoring' + self.config.decoding.batch_size = 1 + + # model + self.tester = U2ConformerTester(self.config) + self.tester.setup_model() + self.tester.resume(checkpoint) + + @staticmethod + def check_audio(audio_file): + sig, sample_rate = sf.read(audio_file) + assert sample_rate == 16000, 'Excepting sample rate of input audio is 16000, but got {}'.format(sample_rate) + + @serving + def speech_recognize(self, audio_file, device='cpu'): + assert os.path.isfile(audio_file), 'File not exists: {}'.format(audio_file) + self.check_audio(audio_file) + + paddle.set_device(device) + return self.tester.test(audio_file)[0][0] diff --git a/modules/audio/asr/u2_conformer_librispeech/requirements.txt b/modules/audio/asr/u2_conformer_librispeech/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..49fb307f43939536be9ee5661a5a712aeba0792b --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/requirements.txt @@ -0,0 +1,12 @@ +loguru +yacs +jsonlines +scipy==1.2.1 +sentencepiece +resampy==0.2.2 +SoundFile==0.9.0.post1 +soxbindings +kaldiio +typeguard +editdistance +textgrid diff --git a/modules/audio/asr/u2_conformer_librispeech/u2_conformer_tester.py b/modules/audio/asr/u2_conformer_librispeech/u2_conformer_tester.py new file mode 100644 index 0000000000000000000000000000000000000000..c4f8d47055e29d1522c224e15439c9575270cc96 --- /dev/null +++ b/modules/audio/asr/u2_conformer_librispeech/u2_conformer_tester.py @@ -0,0 +1,80 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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. +"""Evaluation for U2 model.""" +import os +import sys + +import paddle + +from deepspeech.frontend.featurizer.text_featurizer import TextFeaturizer +from deepspeech.io.collator import SpeechCollator +from deepspeech.models.u2 import U2Model +from deepspeech.utils import mp_tools +from deepspeech.utils.utility import UpdateConfig + + +class U2ConformerTester: + def __init__(self, config): + self.config = config + self.collate_fn_test = SpeechCollator.from_config(config) + self._text_featurizer = TextFeaturizer( + unit_type=config.collator.unit_type, vocab_filepath=None, spm_model_prefix=config.collator.spm_model_prefix) + + @mp_tools.rank_zero_only + @paddle.no_grad() + def test(self, audio_file): + self.model.eval() + cfg = self.config.decoding + collate_fn_test = self.collate_fn_test + audio, _ = collate_fn_test.process_utterance(audio_file=audio_file, transcript="Hello") + audio_len = audio.shape[0] + audio = paddle.to_tensor(audio, dtype='float32') + audio_len = paddle.to_tensor(audio_len) + audio = paddle.unsqueeze(audio, axis=0) + vocab_list = collate_fn_test.vocab_list + + text_feature = self.collate_fn_test.text_feature + result_transcripts = self.model.decode( + audio, + audio_len, + text_feature=text_feature, + decoding_method=cfg.decoding_method, + lang_model_path=cfg.lang_model_path, + beam_alpha=cfg.alpha, + beam_beta=cfg.beta, + beam_size=cfg.beam_size, + cutoff_prob=cfg.cutoff_prob, + cutoff_top_n=cfg.cutoff_top_n, + num_processes=cfg.num_proc_bsearch, + ctc_weight=cfg.ctc_weight, + decoding_chunk_size=cfg.decoding_chunk_size, + num_decoding_left_chunks=cfg.num_decoding_left_chunks, + simulate_streaming=cfg.simulate_streaming) + + return result_transcripts + + def setup_model(self): + config = self.config.clone() + with UpdateConfig(config): + config.model.input_dim = self.collate_fn_test.feature_size + config.model.output_dim = self.collate_fn_test.vocab_size + + self.model = U2Model.from_config(config.model) + + def resume(self, checkpoint): + """Resume from the checkpoint at checkpoints in the output + directory or load a specified checkpoint. + """ + model_dict = paddle.load(checkpoint) + self.model.set_state_dict(model_dict) diff --git a/modules/audio/audio_classification/PANNs/cnn10/README.md b/modules/audio/audio_classification/PANNs/cnn10/README.md index 9dd7c78f3ef22dc5218a84713a65cbe57f4d6e79..c6ce4c5555ea3da45c386abca7e6fa9e1b5a49f2 100644 --- a/modules/audio/audio_classification/PANNs/cnn10/README.md +++ b/modules/audio/audio_classification/PANNs/cnn10/README.md @@ -1,68 +1,52 @@ -```shell -$ hub install panns_cnn10==1.0.0 -``` +# panns_cnn10 +|模型名称|panns_cnn10| +| :--- | :---: | +|类别|语音-声音分类| +|网络|PANNs| +|数据集|Google Audioset| +|是否支持Fine-tuning|是| +|模型大小|31MB| +|最新更新日期|2021-06-15| +|数据指标|mAP 0.380| + +## 一、模型基本信息 + +### 模型介绍 `panns_cnn10`是一个基于[Google Audioset](https://research.google.com/audioset/)数据集训练的声音分类/识别的模型。该模型主要包含8个卷积层和2个全连接层,模型参数为4.9M。经过预训练后,可以用于提取音频的embbedding,维度是512。 更多详情请参考论文:[PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition](https://arxiv.org/pdf/1912.10211.pdf) -## API -```python -def __init__( - task, - num_class=None, - label_map=None, - load_checkpoint=None, - **kwargs, -) -``` - -创建Module对象。 - -**参数** - -* `task`: 任务名称,可为`sound-cls`或者`None`。`sound-cls`代表声音分类任务,可以对声音分类的数据集进行finetune;为`None`时可以获取预训练模型对音频进行分类/Tagging。 -* `num_classes`:声音分类任务的类别数,finetune时需要指定,数值与具体使用的数据集类别数一致。 -* `label_map`:预测时的类别映射表。 -* `load_checkpoint`:使用PaddleHub Fine-tune api训练保存的模型参数文件路径。 -* `**kwargs`:用户额外指定的关键字字典类型的参数。 - -```python -def predict( - data, - sample_rate, - batch_size=1, - feat_type='mel', - use_gpu=False -) -``` +## 二、安装 + +- ### 1、环境依赖 + + - paddlepaddle >= 2.0.0 -**参数** + - paddlehub >= 2.0.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) -* `data`: 待预测数据,格式为\[waveform1, wavwform2…,\],其中每个元素都是一个一维numpy列表,是音频的波形采样数值列表。 -* `sample_rate`:音频文件的采样率。 -* `feat_type`:音频特征的种类选取,当前支持`'mel'`(详情可查看[Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum))和原始波形特征`'raw'`。 -* `batch_size`:模型批处理大小。 -* `use_gpu`:是否使用gpu,默认为False。对于GPU用户,建议开启use_gpu。 +- ### 2、安装 -**返回** + - ```shell + $ hub install panns_cnn10 + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) -* `results`:list类型,不同任务类型的返回结果如下 - * 声音分类(task参数为`sound-cls`):列表里包含每个音频文件的分类标签。 - * Tagging(task参数为`None`):列表里包含每个音频文件527个类别([Audioset标签](https://research.google.com/audioset/))的得分。 +## 三、模型API预测 -**代码示例** +- ### 1、预测代码示例 -- [ESC50](https://github.com/karolpiczak/ESC-50)声音分类预测 - ```python + - ```python + # ESC50声音分类预测 import librosa import paddlehub as hub from paddlehub.datasets import ESC50 sr = 44100 # 音频文件的采样率 - wav_file = '/data/cat.wav' # 用于预测的音频文件路径 + wav_file = '/PATH/TO/AUDIO' # 用于预测的音频文件路径 checkpoint = 'model.pdparams' # 用于预测的模型参数 label_map = {idx: label for idx, label in enumerate(ESC50.label_list)} @@ -86,8 +70,8 @@ def predict( print('File: {}\tLable: {}'.format(wav_file, result[0])) ``` -- Audioset Tagging - ```python + - ```python + # Audioset Tagging import librosa import numpy as np import paddlehub as hub @@ -105,7 +89,7 @@ def predict( print(msg) sr = 44100 # 音频文件的采样率 - wav_file = '/data/cat.wav' # 用于预测的音频文件路径 + wav_file = '/PATH/TO/AUDIO' # 用于预测的音频文件路径 label_file = './audioset_labels.txt' # audioset标签文本文件 topk = 10 # 展示的topk数 @@ -130,23 +114,58 @@ def predict( show_topk(topk, label_map, wav_file, result[0]) ``` -详情可参考PaddleHub示例: -- [AudioClassification](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0/demo/audio_classification) - - -## 查看代码 - -https://github.com/qiuqiangkong/audioset_tagging_cnn +- ### 2、API + - ```python + def __init__( + task, + num_class=None, + label_map=None, + load_checkpoint=None, + **kwargs, + ) + ``` + - 创建Module对象。 + + - **参数** + - `task`: 任务名称,可为`sound-cls`或者`None`。`sound-cls`代表声音分类任务,可以对声音分类的数据集进行finetune;为`None`时可以获取预训练模型对音频进行分类/Tagging。 + - `num_classes`:声音分类任务的类别数,finetune时需要指定,数值与具体使用的数据集类别数一致。 + - `label_map`:预测时的类别映射表。 + - `load_checkpoint`:使用PaddleHub Fine-tune api训练保存的模型参数文件路径。 + - `**kwargs`:用户额外指定的关键字字典类型的参数。 + + - ```python + def predict( + data, + sample_rate, + batch_size=1, + feat_type='mel', + use_gpu=False + ) + ``` + - 模型预测,输入为音频波形数据,输出为分类标签。 -## 依赖 + - **参数** + - `data`: 待预测数据,格式为\[waveform1, wavwform2…,\],其中每个元素都是一个一维numpy列表,是音频的波形采样数值列表。 + - `sample_rate`:音频文件的采样率。 + - `feat_type`:音频特征的种类选取,当前支持`'mel'`(详情可查看[Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum))和原始波形特征`'raw'`。 + - `batch_size`:模型批处理大小。 + - `use_gpu`:是否使用gpu,默认为False。对于GPU用户,建议开启use_gpu。 -paddlepaddle >= 2.0.0 + - **返回** + - `results`:list类型,不同任务类型的返回结果如下 + - 声音分类(task参数为`sound-cls`):列表里包含每个音频文件的分类标签。 + - Tagging(task参数为`None`):列表里包含每个音频文件527个类别([Audioset标签](https://research.google.com/audioset/))的得分。 -paddlehub >= 2.0.0 + 详情可参考PaddleHub示例: + - [AudioClassification](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0/demo/audio_classification) -## 更新历史 +## 四、更新历史 * 1.0.0 初始发布,动态图版本模型,支持声音分类`sound-cls`任务的fine-tune和基于Audioset Tagging预测。 + + ```shell + $ hub install panns_cnn10 + ``` diff --git a/modules/audio/audio_classification/PANNs/cnn14/README.md b/modules/audio/audio_classification/PANNs/cnn14/README.md index adb66f9c2c48972687e2436f67d836a91decbbd2..c65e7bea40d4c8066bb347f4338502de3c1914c9 100644 --- a/modules/audio/audio_classification/PANNs/cnn14/README.md +++ b/modules/audio/audio_classification/PANNs/cnn14/README.md @@ -1,68 +1,52 @@ -```shell -$ hub install panns_cnn14==1.0.0 -``` +# panns_cnn14 +|模型名称|panns_cnn14| +| :--- | :---: | +|类别|语音-声音分类| +|网络|PANNs| +|数据集|Google Audioset| +|是否支持Fine-tuning|是| +|模型大小|469MB| +|最新更新日期|2021-06-15| +|数据指标|mAP 0.431| + +## 一、模型基本信息 + +### 模型介绍 `panns_cnn14`是一个基于[Google Audioset](https://research.google.com/audioset/)数据集训练的声音分类/识别的模型。该模型主要包含12个卷积层和2个全连接层,模型参数为79.6M。经过预训练后,可以用于提取音频的embbedding,维度是2048。 更多详情请参考论文:[PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition](https://arxiv.org/pdf/1912.10211.pdf) -## API -```python -def __init__( - task, - num_class=None, - label_map=None, - load_checkpoint=None, - **kwargs, -) -``` - -创建Module对象。 - -**参数** - -* `task`: 任务名称,可为`sound-cls`或者`None`。`sound-cls`代表声音分类任务,可以对声音分类的数据集进行finetune;为`None`时可以获取预训练模型对音频进行分类/Tagging。 -* `num_classes`:声音分类任务的类别数,finetune时需要指定,数值与具体使用的数据集类别数一致。 -* `label_map`:预测时的类别映射表。 -* `load_checkpoint`:使用PaddleHub Fine-tune api训练保存的模型参数文件路径。 -* `**kwargs`:用户额外指定的关键字字典类型的参数。 - -```python -def predict( - data, - sample_rate, - batch_size=1, - feat_type='mel', - use_gpu=False -) -``` +## 二、安装 + +- ### 1、环境依赖 + + - paddlepaddle >= 2.0.0 -**参数** + - paddlehub >= 2.0.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) -* `data`: 待预测数据,格式为\[waveform1, wavwform2…,\],其中每个元素都是一个一维numpy列表,是音频的波形采样数值列表。 -* `sample_rate`:音频文件的采样率。 -* `feat_type`:音频特征的种类选取,当前支持`'mel'`(详情可查看[Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum))和原始波形特征`'raw'`。 -* `batch_size`:模型批处理大小。 -* `use_gpu`:是否使用gpu,默认为False。对于GPU用户,建议开启use_gpu。 +- ### 2、安装 -**返回** + - ```shell + $ hub install panns_cnn14 + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) -* `results`:list类型,不同任务类型的返回结果如下 - * 声音分类(task参数为`sound-cls`):列表里包含每个音频文件的分类标签。 - * Tagging(task参数为`None`):列表里包含每个音频文件527个类别([Audioset标签](https://research.google.com/audioset/))的得分。 +## 三、模型API预测 -**代码示例** +- ### 1、预测代码示例 -- [ESC50](https://github.com/karolpiczak/ESC-50)声音分类预测 - ```python + - ```python + # ESC50声音分类预测 import librosa import paddlehub as hub from paddlehub.datasets import ESC50 sr = 44100 # 音频文件的采样率 - wav_file = '/data/cat.wav' # 用于预测的音频文件路径 + wav_file = '/PATH/TO/AUDIO' # 用于预测的音频文件路径 checkpoint = 'model.pdparams' # 用于预测的模型参数 label_map = {idx: label for idx, label in enumerate(ESC50.label_list)} @@ -86,8 +70,8 @@ def predict( print('File: {}\tLable: {}'.format(wav_file, result[0])) ``` -- Audioset Tagging - ```python + - ```python + # Audioset Tagging import librosa import numpy as np import paddlehub as hub @@ -105,7 +89,7 @@ def predict( print(msg) sr = 44100 # 音频文件的采样率 - wav_file = '/data/cat.wav' # 用于预测的音频文件路径 + wav_file = '/PATH/TO/AUDIO' # 用于预测的音频文件路径 label_file = './audioset_labels.txt' # audioset标签文本文件 topk = 10 # 展示的topk数 @@ -130,23 +114,58 @@ def predict( show_topk(topk, label_map, wav_file, result[0]) ``` -详情可参考PaddleHub示例: -- [AudioClassification](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0/demo/audio_classification) - - -## 查看代码 - -https://github.com/qiuqiangkong/audioset_tagging_cnn +- ### 2、API + - ```python + def __init__( + task, + num_class=None, + label_map=None, + load_checkpoint=None, + **kwargs, + ) + ``` + - 创建Module对象。 + + - **参数** + - `task`: 任务名称,可为`sound-cls`或者`None`。`sound-cls`代表声音分类任务,可以对声音分类的数据集进行finetune;为`None`时可以获取预训练模型对音频进行分类/Tagging。 + - `num_classes`:声音分类任务的类别数,finetune时需要指定,数值与具体使用的数据集类别数一致。 + - `label_map`:预测时的类别映射表。 + - `load_checkpoint`:使用PaddleHub Fine-tune api训练保存的模型参数文件路径。 + - `**kwargs`:用户额外指定的关键字字典类型的参数。 + + - ```python + def predict( + data, + sample_rate, + batch_size=1, + feat_type='mel', + use_gpu=False + ) + ``` + - 模型预测,输入为音频波形数据,输出为分类标签。 -## 依赖 + - **参数** + - `data`: 待预测数据,格式为\[waveform1, wavwform2…,\],其中每个元素都是一个一维numpy列表,是音频的波形采样数值列表。 + - `sample_rate`:音频文件的采样率。 + - `feat_type`:音频特征的种类选取,当前支持`'mel'`(详情可查看[Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum))和原始波形特征`'raw'`。 + - `batch_size`:模型批处理大小。 + - `use_gpu`:是否使用gpu,默认为False。对于GPU用户,建议开启use_gpu。 -paddlepaddle >= 2.0.0 + - **返回** + - `results`:list类型,不同任务类型的返回结果如下 + - 声音分类(task参数为`sound-cls`):列表里包含每个音频文件的分类标签。 + - Tagging(task参数为`None`):列表里包含每个音频文件527个类别([Audioset标签](https://research.google.com/audioset/))的得分。 -paddlehub >= 2.0.0 + 详情可参考PaddleHub示例: + - [AudioClassification](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0/demo/audio_classification) -## 更新历史 +## 四、更新历史 * 1.0.0 初始发布,动态图版本模型,支持声音分类`sound-cls`任务的fine-tune和基于Audioset Tagging预测。 + + ```shell + $ hub install panns_cnn14 + ``` diff --git a/modules/audio/audio_classification/PANNs/cnn6/README.md b/modules/audio/audio_classification/PANNs/cnn6/README.md index dd10c0b2600cf05ba92c2d512349038945af67b6..0e8b9442dd0f9dfefabd63502e37c05cce9572a5 100644 --- a/modules/audio/audio_classification/PANNs/cnn6/README.md +++ b/modules/audio/audio_classification/PANNs/cnn6/README.md @@ -1,68 +1,52 @@ -```shell -$ hub install panns_cnn6==1.0.0 -``` +# panns_cnn6 +|模型名称|panns_cnn6| +| :--- | :---: | +|类别|语音-声音分类| +|网络|PANNs| +|数据集|Google Audioset| +|是否支持Fine-tuning|是| +|模型大小|29MB| +|最新更新日期|2021-06-15| +|数据指标|mAP 0.343| -`panns_cnn6`是一个基于[Google Audioset](https://research.google.com/audioset/)数据集训练的声音分类/识别的模型。该模型主要包含4个卷积层和2个全连接层,模型参数为4.5M。经过预训练后,可以用于提取音频的embbedding,维度是512。 +## 一、模型基本信息 -更多详情请参考论文:[PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition](https://arxiv.org/pdf/1912.10211.pdf) +### 模型介绍 -## API -```python -def __init__( - task, - num_class=None, - label_map=None, - load_checkpoint=None, - **kwargs, -) -``` +`panns_cnn6`是一个基于[Google Audioset](https://research.google.com/audioset/)数据集训练的声音分类/识别的模型。该模型主要包含4个卷积层和2个全连接层,模型参数为4.5M。经过预训练后,可以用于提取音频的embbedding,维度是512。 -创建Module对象。 +更多详情请参考:[PANNs: Large-Scale Pretrained Audio Neural Networks for Audio Pattern Recognition](https://arxiv.org/pdf/1912.10211.pdf) -**参数** +## 二、安装 -* `task`: 任务名称,可为`sound-cls`或者`None`。`sound-cls`代表声音分类任务,可以对声音分类的数据集进行finetune;为`None`时可以获取预训练模型对音频进行分类/Tagging。 -* `num_classes`:声音分类任务的类别数,finetune时需要指定,数值与具体使用的数据集类别数一致。 -* `label_map`:预测时的类别映射表。 -* `load_checkpoint`:使用PaddleHub Fine-tune api训练保存的模型参数文件路径。 -* `**kwargs`:用户额外指定的关键字字典类型的参数。 +- ### 1、环境依赖 -```python -def predict( - data, - sample_rate, - batch_size=1, - feat_type='mel', - use_gpu=False -) -``` + - paddlepaddle >= 2.0.0 -**参数** + - paddlehub >= 2.0.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) -* `data`: 待预测数据,格式为\[waveform1, wavwform2…,\],其中每个元素都是一个一维numpy列表,是音频的波形采样数值列表。 -* `sample_rate`:音频文件的采样率。 -* `feat_type`:音频特征的种类选取,当前支持`'mel'`(详情可查看[Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum))和原始波形特征`'raw'`。 -* `batch_size`:模型批处理大小。 -* `use_gpu`:是否使用gpu,默认为False。对于GPU用户,建议开启use_gpu。 +- ### 2、安装 -**返回** + - ```shell + $ hub install panns_cnn6 + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) -* `results`:list类型,不同任务类型的返回结果如下 - * 声音分类(task参数为`sound-cls`):列表里包含每个音频文件的分类标签。 - * Tagging(task参数为`None`):列表里包含每个音频文件527个类别([Audioset标签](https://research.google.com/audioset/))的得分。 +## 三、模型API预测 -**代码示例** +- ### 1、预测代码示例 -- [ESC50](https://github.com/karolpiczak/ESC-50)声音分类预测 - ```python + - ```python + # ESC50声音分类预测 import librosa import paddlehub as hub from paddlehub.datasets import ESC50 sr = 44100 # 音频文件的采样率 - wav_file = '/data/cat.wav' # 用于预测的音频文件路径 + wav_file = '/PATH/TO/AUDIO' # 用于预测的音频文件路径 checkpoint = 'model.pdparams' # 用于预测的模型参数 label_map = {idx: label for idx, label in enumerate(ESC50.label_list)} @@ -86,8 +70,8 @@ def predict( print('File: {}\tLable: {}'.format(wav_file, result[0])) ``` -- Audioset Tagging - ```python + - ```python + # Audioset Tagging import librosa import numpy as np import paddlehub as hub @@ -105,7 +89,7 @@ def predict( print(msg) sr = 44100 # 音频文件的采样率 - wav_file = '/data/cat.wav' # 用于预测的音频文件路径 + wav_file = '/PATH/TO/AUDIO' # 用于预测的音频文件路径 label_file = './audioset_labels.txt' # audioset标签文本文件 topk = 10 # 展示的topk数 @@ -130,23 +114,58 @@ def predict( show_topk(topk, label_map, wav_file, result[0]) ``` -详情可参考PaddleHub示例: -- [AudioClassification](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0/demo/audio_classification) - - -## 查看代码 - -https://github.com/qiuqiangkong/audioset_tagging_cnn +- ### 2、API + - ```python + def __init__( + task, + num_class=None, + label_map=None, + load_checkpoint=None, + **kwargs, + ) + ``` + - 创建Module对象。 + + - **参数** + - `task`: 任务名称,可为`sound-cls`或者`None`。`sound-cls`代表声音分类任务,可以对声音分类的数据集进行finetune;为`None`时可以获取预训练模型对音频进行分类/Tagging。 + - `num_classes`:声音分类任务的类别数,finetune时需要指定,数值与具体使用的数据集类别数一致。 + - `label_map`:预测时的类别映射表。 + - `load_checkpoint`:使用PaddleHub Fine-tune api训练保存的模型参数文件路径。 + - `**kwargs`:用户额外指定的关键字字典类型的参数。 + + - ```python + def predict( + data, + sample_rate, + batch_size=1, + feat_type='mel', + use_gpu=False + ) + ``` + - 模型预测,输入为音频波形数据,输出为分类标签。 -## 依赖 + - **参数** + - `data`: 待预测数据,格式为\[waveform1, wavwform2…,\],其中每个元素都是一个一维numpy列表,是音频的波形采样数值列表。 + - `sample_rate`:音频文件的采样率。 + - `feat_type`:音频特征的种类选取,当前支持`'mel'`(详情可查看[Mel-frequency cepstrum](https://en.wikipedia.org/wiki/Mel-frequency_cepstrum))和原始波形特征`'raw'`。 + - `batch_size`:模型批处理大小。 + - `use_gpu`:是否使用gpu,默认为False。对于GPU用户,建议开启use_gpu。 -paddlepaddle >= 2.0.0 + - **返回** + - `results`:list类型,不同任务类型的返回结果如下 + - 声音分类(task参数为`sound-cls`):列表里包含每个音频文件的分类标签。 + - Tagging(task参数为`None`):列表里包含每个音频文件527个类别([Audioset标签](https://research.google.com/audioset/))的得分。 -paddlehub >= 2.0.0 + 详情可参考PaddleHub示例: + - [AudioClassification](https://github.com/PaddlePaddle/PaddleHub/tree/release/v2.0/demo/audio_classification) -## 更新历史 +## 四、更新历史 * 1.0.0 初始发布,动态图版本模型,支持声音分类`sound-cls`任务的fine-tune和基于Audioset Tagging预测。 + + ```shell + $ hub install panns_cnn6 + ``` diff --git a/modules/audio/tts/fastspeech2_baker/README.md b/modules/audio/tts/fastspeech2_baker/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1ec244d616108ab3781af885d31197ddcc5b31b3 --- /dev/null +++ b/modules/audio/tts/fastspeech2_baker/README.md @@ -0,0 +1,156 @@ +# fastspeech2_baker + +|模型名称|fastspeech2_baker| +| :--- | :---: | +|类别|语音-语音合成| +|网络|FastSpeech2| +|数据集|Chinese Standard Mandarin Speech Copus| +|是否支持Fine-tuning|否| +|模型大小|621MB| +|最新更新日期|2021-10-20| +|数据指标|-| + +## 一、模型基本信息 + +### 模型介绍 + +FastSpeech2是微软亚洲研究院和微软Azure语音团队联合浙江大学于2020年提出的语音合成(Text to Speech, TTS)模型。FastSpeech2是FastSpeech的改进版,解决了FastSpeech依赖Teacher-Student的知识蒸馏框架,训练流程比较复杂和训练目标相比真实语音存在信息损失的问题。 + +FastSpeech2的模型架构如下图所示,它沿用FastSpeech中提出的Feed-Forward Transformer(FFT)架构,但在音素编码器和梅尔频谱解码器中加入了一个可变信息适配器(Variance Adaptor),从而支持在FastSpeech2中引入更多语音中变化的信息,例如时长、音高、音量(频谱能量)等,来解决语音合成中的一对多映射问题。 + +

+
+

+ +Parallel WaveGAN是一种使用了无蒸馏的对抗生成网络,快速且占用空间小的波形生成方法。该方法通过联合优化多分辨率谱图和对抗损失函数来训练非自回归WaveNet,可以有效捕获真实语音波形的时频分布。Parallel WaveGAN的结构如下图所示: + +

+
+

+ +fastspeech2_baker使用了FastSpeech2作为声学模型,使用Parallel WaveGAN作为声码器,并在[中文标准女声音库(Chinese Standard Mandarin Speech Copus)](https://www.data-baker.com/open_source.html)数据集上进行了预训练,可直接用于预测合成音频。 + +更多详情请参考: +- [FastSpeech 2: Fast and High-Quality End-to-End Text-to-Speech](https://arxiv.org/abs/2006.04558) +- [FastSpeech语音合成系统技术升级,微软联合浙大提出FastSpeech2](https://www.msra.cn/zh-cn/news/features/fastspeech2) +- [Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram](https://arxiv.org/abs/1910.11480) + +## 二、安装 + +- ### 1、环境依赖 + + - paddlepaddle >= 2.1.0 + + - paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) + +- ### 2、安装 + + - ```shell + $ hub install fastspeech2_baker + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) + + +## 三、模型API预测 + +- ### 1、预测代码示例 + + ```python + import paddlehub as hub + + # 需要合成语音的文本 + sentences = ['这是一段测试语音合成的音频。'] + + model = hub.Module( + name='fastspeech2_baker', + version='1.0.0') + wav_files = model.generate(sentences) + + # 打印合成的音频文件的路径 + print(wav_files) + ``` + + 详情可参考PaddleHub示例: + - [语音合成](../../../../demo/text_to_speech) + + +- ### 2、API + - ```python + def __init__(output_dir) + ``` + + - 创建Module对象(动态图组网版本) + + - **参数** + + - `output_dir`: 合成音频文件的输出目录。 + + - ```python + def generate( + sentences, + device='cpu', + ) + ``` + - 将输入的文本合成为音频文件并保存到输出目录。 + + - **参数** + + - `sentences`:合成音频的文本列表,类型为`List[str]`。 + - `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。 + + - **返回** + + - `wav_files`:`List[str]`类型,返回合成音频的存放路径。 + + +## 四、服务部署 + +- PaddleHub Serving可以部署一个在线的语音识别服务。 + +- ### 第一步:启动PaddleHub Serving + + - ```shell + $ hub serving start -m fastspeech2_baker + ``` + + - 这样就完成了一个语音识别服务化API的部署,默认端口号为8866。 + + - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。 + +- ### 第二步:发送预测请求 + + - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果 + + - ```python + import requests + import json + + # 需要合成语音的文本 + sentences = [ + '这是第一段测试语音合成的音频。', + '这是第二段测试语音合成的音频。', + ] + + # 以key的方式指定text传入预测方法的时的参数,此例中为"sentences" + data = {"sentences": sentences} + + # 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip + url = "http://127.0.0.1:8866/predict/fastspeech2_baker" + + # 指定post请求的headers为application/json方式 + headers = {"Content-Type": "application/json"} + + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) + ``` + +## 五、更新历史 + +* 1.0.0 + + 初始发布 + + ```shell + $ hub install fastspeech2_baker + ``` diff --git a/modules/audio/tts/fastspeech2_baker/__init__.py b/modules/audio/tts/fastspeech2_baker/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/audio/tts/fastspeech2_baker/assets/fastspeech2_nosil_baker_ckpt_0.4/default.yaml b/modules/audio/tts/fastspeech2_baker/assets/fastspeech2_nosil_baker_ckpt_0.4/default.yaml new file mode 100644 index 0000000000000000000000000000000000000000..63eaef16d118e3e9a0a14b028b750d0fce426e2f --- /dev/null +++ b/modules/audio/tts/fastspeech2_baker/assets/fastspeech2_nosil_baker_ckpt_0.4/default.yaml @@ -0,0 +1,104 @@ +########################################################### +# FEATURE EXTRACTION SETTING # +########################################################### + +fs: 24000 # sr +n_fft: 2048 # FFT size. +n_shift: 300 # Hop size. +win_length: 1200 # Window length. + # If set to null, it will be the same as fft_size. +window: "hann" # Window function. + +# Only used for feats_type != raw + +fmin: 80 # Minimum frequency of Mel basis. +fmax: 7600 # Maximum frequency of Mel basis. +n_mels: 80 # The number of mel basis. + +# Only used for the model using pitch features (e.g. FastSpeech2) +f0min: 80 # Maximum f0 for pitch extraction. +f0max: 400 # Minimum f0 for pitch extraction. + + +########################################################### +# DATA SETTING # +########################################################### +batch_size: 64 +num_workers: 4 + + +########################################################### +# MODEL SETTING # +########################################################### +model: + adim: 384 # attention dimension + aheads: 2 # number of attention heads + elayers: 4 # number of encoder layers + eunits: 1536 # number of encoder ff units + dlayers: 4 # number of decoder layers + dunits: 1536 # number of decoder ff units + positionwise_layer_type: conv1d # type of position-wise layer + positionwise_conv_kernel_size: 3 # kernel size of position wise conv layer + duration_predictor_layers: 2 # number of layers of duration predictor + duration_predictor_chans: 256 # number of channels of duration predictor + duration_predictor_kernel_size: 3 # filter size of duration predictor + postnet_layers: 5 # number of layers of postnset + postnet_filts: 5 # filter size of conv layers in postnet + postnet_chans: 256 # number of channels of conv layers in postnet + use_masking: True # whether to apply masking for padded part in loss calculation + use_scaled_pos_enc: True # whether to use scaled positional encoding + encoder_normalize_before: True # whether to perform layer normalization before the input + decoder_normalize_before: True # whether to perform layer normalization before the input + reduction_factor: 1 # reduction factor + init_type: xavier_uniform # initialization type + init_enc_alpha: 1.0 # initial value of alpha of encoder scaled position encoding + init_dec_alpha: 1.0 # initial value of alpha of decoder scaled position encoding + transformer_enc_dropout_rate: 0.2 # dropout rate for transformer encoder layer + transformer_enc_positional_dropout_rate: 0.2 # dropout rate for transformer encoder positional encoding + transformer_enc_attn_dropout_rate: 0.2 # dropout rate for transformer encoder attention layer + transformer_dec_dropout_rate: 0.2 # dropout rate for transformer decoder layer + transformer_dec_positional_dropout_rate: 0.2 # dropout rate for transformer decoder positional encoding + transformer_dec_attn_dropout_rate: 0.2 # dropout rate for transformer decoder attention layer + pitch_predictor_layers: 5 # number of conv layers in pitch predictor + pitch_predictor_chans: 256 # number of channels of conv layers in pitch predictor + pitch_predictor_kernel_size: 5 # kernel size of conv leyers in pitch predictor + pitch_predictor_dropout: 0.5 # dropout rate in pitch predictor + pitch_embed_kernel_size: 1 # kernel size of conv embedding layer for pitch + pitch_embed_dropout: 0.0 # dropout rate after conv embedding layer for pitch + stop_gradient_from_pitch_predictor: true # whether to stop the gradient from pitch predictor to encoder + energy_predictor_layers: 2 # number of conv layers in energy predictor + energy_predictor_chans: 256 # number of channels of conv layers in energy predictor + energy_predictor_kernel_size: 3 # kernel size of conv leyers in energy predictor + energy_predictor_dropout: 0.5 # dropout rate in energy predictor + energy_embed_kernel_size: 1 # kernel size of conv embedding layer for energy + energy_embed_dropout: 0.0 # dropout rate after conv embedding layer for energy + stop_gradient_from_energy_predictor: false # whether to stop the gradient from energy predictor to encoder + + + +########################################################### +# UPDATER SETTING # +########################################################### +updater: + use_masking: True # whether to apply masking for padded part in loss calculation + + + +########################################################### +# OPTIMIZER SETTING # +########################################################### +optimizer: + optim: adam # optimizer type + learning_rate: 0.001 # learning rate + +########################################################### +# TRAINING SETTING # +########################################################### +max_epoch: 1000 +num_snapshots: 5 + + +########################################################### +# OTHER SETTING # +########################################################### +seed: 10086 diff --git a/modules/audio/tts/fastspeech2_baker/assets/fastspeech2_nosil_baker_ckpt_0.4/phone_id_map.txt b/modules/audio/tts/fastspeech2_baker/assets/fastspeech2_nosil_baker_ckpt_0.4/phone_id_map.txt new file mode 100644 index 0000000000000000000000000000000000000000..a7ca340266028818c683329ab1885ae986c44233 --- /dev/null +++ b/modules/audio/tts/fastspeech2_baker/assets/fastspeech2_nosil_baker_ckpt_0.4/phone_id_map.txt @@ -0,0 +1,268 @@ + 0 + 1 +a1 2 +a2 3 +a3 4 +a4 5 +a5 6 +ai1 7 +ai2 8 +ai3 9 +ai4 10 +ai5 11 +air2 12 +air4 13 +an1 14 +an2 15 +an3 16 +an4 17 +an5 18 +ang1 19 +ang2 20 +ang3 21 +ang4 22 +ang5 23 +anr1 24 +anr3 25 +anr4 26 +ao1 27 +ao2 28 +ao3 29 +ao4 30 +ao5 31 +aor3 32 +aor4 33 +ar2 34 +ar3 35 +ar4 36 +b 37 +c 38 +ch 39 +d 40 +e1 41 +e2 42 +e3 43 +e4 44 +e5 45 +ei1 46 +ei2 47 +ei3 48 +ei4 49 +ei5 50 +en1 51 +en2 52 +en3 53 +en4 54 +en5 55 +eng1 56 +eng2 57 +eng3 58 +eng4 59 +eng5 60 +enr1 61 +enr2 62 +enr4 63 +enr5 64 +er2 65 +er3 66 +er4 67 +er5 68 +f 69 +g 70 +h 71 +i1 72 +i2 73 +i3 74 +i4 75 +i5 76 +ia1 77 +ia2 78 +ia3 79 +ia4 80 +ia5 81 +ian1 82 +ian2 83 +ian3 84 +ian4 85 +ian5 86 +iang1 87 +iang2 88 +iang3 89 +iang4 90 +iang5 91 +iangr4 92 +ianr1 93 +ianr2 94 +ianr3 95 +iao1 96 +iao2 97 +iao3 98 +iao4 99 +iao5 100 +iar1 101 +iar3 102 +ie1 103 +ie2 104 +ie3 105 +ie4 106 +ie5 107 +ii1 108 +ii2 109 +ii3 110 +ii4 111 +ii5 112 +iii1 113 +iii2 114 +iii3 115 +iii4 116 +iii5 117 +iiir4 118 +iir2 119 +in1 120 +in2 121 +in3 122 +in4 123 +in5 124 +ing1 125 +ing2 126 +ing3 127 +ing4 128 +ing5 129 +ingr2 130 +ingr3 131 +inr4 132 +io1 133 +io5 134 +iong1 135 +iong2 136 +iong3 137 +iong4 138 +iong5 139 +iou1 140 +iou2 141 +iou3 142 +iou4 143 +iou5 144 +iour1 145 +ir1 146 +ir2 147 +ir3 148 +ir4 149 +ir5 150 +j 151 +k 152 +l 153 +m 154 +n 155 +o1 156 +o2 157 +o3 158 +o4 159 +o5 160 +ong1 161 +ong2 162 +ong3 163 +ong4 164 +ong5 165 +ongr4 166 +ou1 167 +ou2 168 +ou3 169 +ou4 170 +ou5 171 +our2 172 +p 173 +q 174 +r 175 +s 176 +sh 177 +sil 178 +sp 179 +spl 180 +spn 181 +t 182 +u1 183 +u2 184 +u3 185 +u4 186 +u5 187 +ua1 188 +ua2 189 +ua3 190 +ua4 191 +ua5 192 +uai1 193 +uai2 194 +uai3 195 +uai4 196 +uai5 197 +uair4 198 +uan1 199 +uan2 200 +uan3 201 +uan4 202 +uan5 203 +uang1 204 +uang2 205 +uang3 206 +uang4 207 +uang5 208 +uanr1 209 +uanr2 210 +uei1 211 +uei2 212 +uei3 213 +uei4 214 +uei5 215 +ueir1 216 +ueir3 217 +ueir4 218 +uen1 219 +uen2 220 +uen3 221 +uen4 222 +uen5 223 +ueng1 224 +ueng2 225 +ueng3 226 +ueng4 227 +uenr3 228 +uenr4 229 +uo1 230 +uo2 231 +uo3 232 +uo4 233 +uo5 234 +uor2 235 +uor3 236 +ur3 237 +ur4 238 +v1 239 +v2 240 +v3 241 +v4 242 +v5 243 +van1 244 +van2 245 +van3 246 +van4 247 +van5 248 +vanr4 249 +ve1 250 +ve2 251 +ve3 252 +ve4 253 +ve5 254 +vn1 255 +vn2 256 +vn3 257 +vn4 258 +vn5 259 +x 260 +z 261 +zh 262 +, 263 +。 264 +? 265 +! 266 + 267 diff --git a/modules/audio/tts/fastspeech2_baker/assets/pwg_baker_ckpt_0.4/pwg_default.yaml b/modules/audio/tts/fastspeech2_baker/assets/pwg_baker_ckpt_0.4/pwg_default.yaml new file mode 100644 index 0000000000000000000000000000000000000000..17edbc25515b58b77fbd3cc19c4b24234ff47083 --- /dev/null +++ b/modules/audio/tts/fastspeech2_baker/assets/pwg_baker_ckpt_0.4/pwg_default.yaml @@ -0,0 +1,128 @@ +# This is the hyperparameter configuration file for Parallel WaveGAN. +# Please make sure this is adjusted for the CSMSC dataset. If you want to +# apply to the other dataset, you might need to carefully change some parameters. +# This configuration requires 12 GB GPU memory and takes ~3 days on RTX TITAN. + +########################################################### +# FEATURE EXTRACTION SETTING # +########################################################### +fs: 24000 # Sampling rate. +n_fft: 2048 # FFT size. (in samples) +n_shift: 300 # Hop size. (in samples) +win_length: 1200 # Window length. (in samples) + # If set to null, it will be the same as fft_size. +window: "hann" # Window function. +n_mels: 80 # Number of mel basis. +fmin: 80 # Minimum freq in mel basis calculation. +fmax: 7600 # Maximum frequency in mel basis calculation. +# global_gain_scale: 1.0 # Will be multiplied to all of waveform. +trim_silence: false # Whether to trim the start and end of silence. +top_db: 60 # Need to tune carefully if the recording is not good. +trim_frame_length: 2048 # Frame size in trimming.(in samples) +trim_hop_length: 512 # Hop size in trimming.(in samples) + +########################################################### +# GENERATOR NETWORK ARCHITECTURE SETTING # +########################################################### +generator_params: + in_channels: 1 # Number of input channels. + out_channels: 1 # Number of output channels. + kernel_size: 3 # Kernel size of dilated convolution. + layers: 30 # Number of residual block layers. + stacks: 3 # Number of stacks i.e., dilation cycles. + residual_channels: 64 # Number of channels in residual conv. + gate_channels: 128 # Number of channels in gated conv. + skip_channels: 64 # Number of channels in skip conv. + aux_channels: 80 # Number of channels for auxiliary feature conv. + # Must be the same as num_mels. + aux_context_window: 2 # Context window size for auxiliary feature. + # If set to 2, previous 2 and future 2 frames will be considered. + dropout: 0.0 # Dropout rate. 0.0 means no dropout applied. + bias: true # use bias in residual blocks + use_weight_norm: true # Whether to use weight norm. + # If set to true, it will be applied to all of the conv layers. + use_causal_conv: false # use causal conv in residual blocks and upsample layers + # upsample_net: "ConvInUpsampleNetwork" # Upsampling network architecture. + upsample_scales: [4, 5, 3, 5] # Upsampling scales. Prodcut of these must be the same as hop size. + interpolate_mode: "nearest" # upsample net interpolate mode + freq_axis_kernel_size: 1 # upsamling net: convolution kernel size in frequencey axis + nonlinear_activation: null + nonlinear_activation_params: {} + +########################################################### +# DISCRIMINATOR NETWORK ARCHITECTURE SETTING # +########################################################### +discriminator_params: + in_channels: 1 # Number of input channels. + out_channels: 1 # Number of output channels. + kernel_size: 3 # Number of output channels. + layers: 10 # Number of conv layers. + conv_channels: 64 # Number of chnn layers. + bias: true # Whether to use bias parameter in conv. + use_weight_norm: true # Whether to use weight norm. + # If set to true, it will be applied to all of the conv layers. + nonlinear_activation: "LeakyReLU" # Nonlinear function after each conv. + nonlinear_activation_params: # Nonlinear function parameters + negative_slope: 0.2 # Alpha in LeakyReLU. + +########################################################### +# STFT LOSS SETTING # +########################################################### +stft_loss_params: + fft_sizes: [1024, 2048, 512] # List of FFT size for STFT-based loss. + hop_sizes: [120, 240, 50] # List of hop size for STFT-based loss + win_lengths: [600, 1200, 240] # List of window length for STFT-based loss. + window: "hann" # Window function for STFT-based loss + +########################################################### +# ADVERSARIAL LOSS SETTING # +########################################################### +lambda_adv: 4.0 # Loss balancing coefficient. + +########################################################### +# DATA LOADER SETTING # +########################################################### +batch_size: 6 # Batch size. +batch_max_steps: 25500 # Length of each audio in batch. Make sure dividable by hop_size. +pin_memory: true # Whether to pin memory in Pytorch DataLoader. +num_workers: 4 # Number of workers in Pytorch DataLoader. +remove_short_samples: true # Whether to remove samples the length of which are less than batch_max_steps. +allow_cache: true # Whether to allow cache in dataset. If true, it requires cpu memory. + +########################################################### +# OPTIMIZER & SCHEDULER SETTING # +########################################################### +generator_optimizer_params: + epsilon: 1.0e-6 # Generator's epsilon. + weight_decay: 0.0 # Generator's weight decay coefficient. +generator_scheduler_params: + learning_rate: 0.0001 # Generator's learning rate. + step_size: 200000 # Generator's scheduler step size. + gamma: 0.5 # Generator's scheduler gamma. + # At each step size, lr will be multiplied by this parameter. +generator_grad_norm: 10 # Generator's gradient norm. +discriminator_optimizer_params: + epsilon: 1.0e-6 # Discriminator's epsilon. + weight_decay: 0.0 # Discriminator's weight decay coefficient. +discriminator_scheduler_params: + learning_rate: 0.00005 # Discriminator's learning rate. + step_size: 200000 # Discriminator's scheduler step size. + gamma: 0.5 # Discriminator's scheduler gamma. + # At each step size, lr will be multiplied by this parameter. +discriminator_grad_norm: 1 # Discriminator's gradient norm. + +########################################################### +# INTERVAL SETTING # +########################################################### +discriminator_train_start_steps: 100000 # Number of steps to start to train discriminator. +train_max_steps: 400000 # Number of training steps. +save_interval_steps: 5000 # Interval steps to save checkpoint. +eval_interval_steps: 1000 # Interval steps to evaluate the network. + + +########################################################### +# OTHER SETTING # +########################################################### +num_save_intermediate_results: 4 # Number of results to be saved as intermediate results. +num_snapshots: 10 # max number of snapshots to keep while training +seed: 42 # random seed for paddle, random, and np.random diff --git a/modules/audio/tts/fastspeech2_baker/module.py b/modules/audio/tts/fastspeech2_baker/module.py new file mode 100644 index 0000000000000000000000000000000000000000..03d150c9d989285ea9cf7eaceff469566e1a84ad --- /dev/null +++ b/modules/audio/tts/fastspeech2_baker/module.py @@ -0,0 +1,125 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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 +from pathlib import Path +from typing import List + +import numpy as np +import paddle +from paddlehub.env import MODULE_HOME +from paddlehub.module.module import moduleinfo, serving +from paddlehub.utils.log import logger +from parakeet.frontend.zh_frontend import Frontend +from parakeet.models.fastspeech2 import FastSpeech2 +from parakeet.models.fastspeech2 import FastSpeech2Inference +from parakeet.models.parallel_wavegan import PWGGenerator +from parakeet.models.parallel_wavegan import PWGInference +from parakeet.modules.normalizer import ZScore +import soundfile as sf +from yacs.config import CfgNode +import yaml + + +@moduleinfo(name="fastspeech2_baker", version="1.0.0", summary="", author="Baidu", author_email="", type="audio/tts") +class FastSpeech(paddle.nn.Layer): + def __init__(self, output_dir='./wavs'): + super(FastSpeech, self).__init__() + fastspeech2_res_dir = os.path.join(MODULE_HOME, 'fastspeech2_baker', 'assets/fastspeech2_nosil_baker_ckpt_0.4') + pwg_res_dir = os.path.join(MODULE_HOME, 'fastspeech2_baker', 'assets/pwg_baker_ckpt_0.4') + + phones_dict = os.path.join(fastspeech2_res_dir, 'phone_id_map.txt') + with open(phones_dict, "r") as f: + phn_id = [line.strip().split() for line in f.readlines()] + vocab_size = len(phn_id) + + # fastspeech2 + fastspeech2_config = os.path.join(fastspeech2_res_dir, 'default.yaml') + with open(fastspeech2_config) as f: + fastspeech2_config = CfgNode(yaml.safe_load(f)) + self.samplerate = fastspeech2_config.fs + + fastspeech2_checkpoint = os.path.join(fastspeech2_res_dir, 'snapshot_iter_76000.pdz') + model = FastSpeech2(idim=vocab_size, odim=fastspeech2_config.n_mels, **fastspeech2_config["model"]) + model.set_state_dict(paddle.load(fastspeech2_checkpoint)["main_params"]) + logger.info('Load fastspeech2 params from %s' % os.path.abspath(fastspeech2_checkpoint)) + model.eval() + + # vocoder + pwg_config = os.path.join(pwg_res_dir, 'pwg_default.yaml') + with open(pwg_config) as f: + pwg_config = CfgNode(yaml.safe_load(f)) + + pwg_checkpoint = os.path.join(pwg_res_dir, 'pwg_snapshot_iter_400000.pdz') + vocoder = PWGGenerator(**pwg_config["generator_params"]) + vocoder.set_state_dict(paddle.load(pwg_checkpoint)["generator_params"]) + logger.info('Load vocoder params from %s' % os.path.abspath(pwg_checkpoint)) + vocoder.remove_weight_norm() + vocoder.eval() + + # frontend + self.frontend = Frontend(phone_vocab_path=phones_dict) + + # stat + fastspeech2_stat = os.path.join(fastspeech2_res_dir, 'speech_stats.npy') + stat = np.load(fastspeech2_stat) + mu, std = stat + mu = paddle.to_tensor(mu) + std = paddle.to_tensor(std) + fastspeech2_normalizer = ZScore(mu, std) + + pwg_stat = os.path.join(pwg_res_dir, 'pwg_stats.npy') + stat = np.load(pwg_stat) + mu, std = stat + mu = paddle.to_tensor(mu) + std = paddle.to_tensor(std) + pwg_normalizer = ZScore(mu, std) + + # inference + self.fastspeech2_inference = FastSpeech2Inference(fastspeech2_normalizer, model) + self.pwg_inference = PWGInference(pwg_normalizer, vocoder) + + self.output_dir = Path(output_dir) + self.output_dir.mkdir(parents=True, exist_ok=True) + + def forward(self, text: str): + wav = None + input_ids = self.frontend.get_input_ids(text, merge_sentences=True) + phone_ids = input_ids["phone_ids"] + for part_phone_ids in phone_ids: + with paddle.no_grad(): + mel = self.fastspeech2_inference(part_phone_ids) + temp_wav = self.pwg_inference(mel) + if wav is None: + wav = temp_wav + else: + wav = paddle.concat([wav, temp_wav]) + + return wav + + @serving + def generate(self, sentences: List[str], device='cpu'): + assert isinstance(sentences, list) and isinstance(sentences[0], str), \ + 'Input data should be List[str], but got {}'.format(type(sentences)) + + paddle.set_device(device) + wav_files = [] + for i, sentence in enumerate(sentences): + wav = self(sentence) + wav_file = str(self.output_dir.absolute() / (str(i + 1) + ".wav")) + sf.write(wav_file, wav.numpy(), samplerate=self.samplerate) + wav_files.append(wav_file) + + logger.info('{} wave files have been generated in {}'.format(len(sentences), self.output_dir.absolute())) + return wav_files diff --git a/modules/audio/tts/fastspeech2_baker/requirements.txt b/modules/audio/tts/fastspeech2_baker/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..f410f4f4238ed0017d04fb708edb3725c34784ac --- /dev/null +++ b/modules/audio/tts/fastspeech2_baker/requirements.txt @@ -0,0 +1 @@ +git+https://github.com/PaddlePaddle/Parakeet@8040cb0#egg=paddle-parakeet diff --git a/modules/audio/tts/fastspeech2_ljspeech/README.md b/modules/audio/tts/fastspeech2_ljspeech/README.md new file mode 100644 index 0000000000000000000000000000000000000000..54329460f30b073dc4a551c4dd09b94a56e8e1f3 --- /dev/null +++ b/modules/audio/tts/fastspeech2_ljspeech/README.md @@ -0,0 +1,156 @@ +# fastspeech2_ljspeech + +|模型名称|fastspeech2_ljspeech| +| :--- | :---: | +|类别|语音-语音合成| +|网络|FastSpeech2| +|数据集|LJSpeech-1.1| +|是否支持Fine-tuning|否| +|模型大小|425MB| +|最新更新日期|2021-10-20| +|数据指标|-| + +## 一、模型基本信息 + +### 模型介绍 + +FastSpeech2是微软亚洲研究院和微软Azure语音团队联合浙江大学于2020年提出的语音合成(Text to Speech, TTS)模型。FastSpeech2是FastSpeech的改进版,解决了FastSpeech依赖Teacher-Student的知识蒸馏框架,训练流程比较复杂和训练目标相比真实语音存在信息损失的问题。 + +FastSpeech2的模型架构如下图所示,它沿用FastSpeech中提出的Feed-Forward Transformer(FFT)架构,但在音素编码器和梅尔频谱解码器中加入了一个可变信息适配器(Variance Adaptor),从而支持在FastSpeech2中引入更多语音中变化的信息,例如时长、音高、音量(频谱能量)等,来解决语音合成中的一对多映射问题。 + +

+
+

+ +Parallel WaveGAN是一种使用了无蒸馏的对抗生成网络,快速且占用空间小的波形生成方法。该方法通过联合优化多分辨率谱图和对抗损失函数来训练非自回归WaveNet,可以有效捕获真实语音波形的时频分布。Parallel WaveGAN的结构如下图所示: + +

+
+

+ +fastspeech2_ljspeech使用了FastSpeech2作为声学模型,使用Parallel WaveGAN作为声码器,并在[The LJ Speech Dataset](https://keithito.com/LJ-Speech-Dataset/)数据集上进行了预训练,可直接用于预测合成音频。 + +更多详情请参考: +- [FastSpeech 2: Fast and High-Quality End-to-End Text-to-Speech](https://arxiv.org/abs/2006.04558) +- [FastSpeech语音合成系统技术升级,微软联合浙大提出FastSpeech2](https://www.msra.cn/zh-cn/news/features/fastspeech2) +- [Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks with multi-resolution spectrogram](https://arxiv.org/abs/1910.11480) + +## 二、安装 + +- ### 1、环境依赖 + + - paddlepaddle >= 2.1.0 + + - paddlehub >= 2.1.0 | [如何安装PaddleHub](../../../../docs/docs_ch/get_start/installation.rst) + +- ### 2、安装 + + - ```shell + $ hub install fastspeech2_ljspeech + ``` + - 如您安装时遇到问题,可参考:[零基础windows安装](../../../../docs/docs_ch/get_start/windows_quickstart.md) + | [零基础Linux安装](../../../../docs/docs_ch/get_start/linux_quickstart.md) | [零基础MacOS安装](../../../../docs/docs_ch/get_start/mac_quickstart.md) + + +## 三、模型API预测 + +- ### 1、预测代码示例 + + ```python + import paddlehub as hub + + # 需要合成语音的文本 + sentences = ['The quick brown fox jumps over a lazy dog.'] + + model = hub.Module( + name='fastspeech2_ljspeech', + version='1.0.0') + wav_files = model.generate(sentences) + + # 打印合成的音频文件的路径 + print(wav_files) + ``` + + 详情可参考PaddleHub示例: + - [语音合成](../../../../demo/text_to_speech) + + +- ### 2、API + - ```python + def __init__(output_dir) + ``` + + - 创建Module对象(动态图组网版本) + + - **参数** + + - `output_dir`: 合成音频文件的输出目录。 + + - ```python + def generate( + sentences, + device='cpu', + ) + ``` + - 将输入的文本合成为音频文件并保存到输出目录。 + + - **参数** + + - `sentences`:合成音频的文本列表,类型为`List[str]`。 + - `device`:预测时使用的设备,默认为`cpu`,如需使用gpu预测,请设置为`gpu`。 + + - **返回** + + - `wav_files`:`List[str]`类型,返回合成音频的存放路径。 + + +## 四、服务部署 + +- PaddleHub Serving可以部署一个在线的语音识别服务。 + +- ### 第一步:启动PaddleHub Serving + + - ```shell + $ hub serving start -m fastspeech2_ljspeech + ``` + + - 这样就完成了一个语音识别服务化API的部署,默认端口号为8866。 + + - **NOTE:** 如使用GPU预测,则需要在启动服务之前,请设置CUDA_VISIBLE_DEVICES环境变量,否则不用设置。 + +- ### 第二步:发送预测请求 + + - 配置好服务端,以下数行代码即可实现发送预测请求,获取预测结果 + + - ```python + import requests + import json + + # 需要合成语音的文本 + sentences = [ + 'The quick brown fox jumps over a lazy dog.', + 'Today is a good day!', + ] + + # 以key的方式指定text传入预测方法的时的参数,此例中为"sentences" + data = {"sentences": sentences} + + # 发送post请求,content-type类型应指定json方式,url中的ip地址需改为对应机器的ip + url = "http://127.0.0.1:8866/predict/fastspeech2_ljspeech" + + # 指定post请求的headers为application/json方式 + headers = {"Content-Type": "application/json"} + + r = requests.post(url=url, headers=headers, data=json.dumps(data)) + print(r.json()) + ``` + +## 五、更新历史 + +* 1.0.0 + + 初始发布 + + ```shell + $ hub install fastspeech2_ljspeech + ``` diff --git a/modules/audio/tts/fastspeech2_ljspeech/__init__.py b/modules/audio/tts/fastspeech2_ljspeech/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/modules/audio/tts/fastspeech2_ljspeech/assets/fastspeech2_nosil_ljspeech_ckpt_0.5/default.yaml b/modules/audio/tts/fastspeech2_ljspeech/assets/fastspeech2_nosil_ljspeech_ckpt_0.5/default.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cabcca80ba5552ac3d300616b44572f3c297656e --- /dev/null +++ b/modules/audio/tts/fastspeech2_ljspeech/assets/fastspeech2_nosil_ljspeech_ckpt_0.5/default.yaml @@ -0,0 +1,104 @@ +########################################################### +# FEATURE EXTRACTION SETTING # +########################################################### + +fs: 22050 # sr +n_fft: 1024 # FFT size. +n_shift: 256 # Hop size. +win_length: null # Window length. + # If set to null, it will be the same as fft_size. +window: "hann" # Window function. + +# Only used for feats_type != raw + +fmin: 80 # Minimum frequency of Mel basis. +fmax: 7600 # Maximum frequency of Mel basis. +n_mels: 80 # The number of mel basis. + +# Only used for the model using pitch features (e.g. FastSpeech2) +f0min: 80 # Maximum f0 for pitch extraction. +f0max: 400 # Minimum f0 for pitch extraction. + + +########################################################### +# DATA SETTING # +########################################################### +batch_size: 64 +num_workers: 4 + + +########################################################### +# MODEL SETTING # +########################################################### +model: + adim: 384 # attention dimension + aheads: 2 # number of attention heads + elayers: 4 # number of encoder layers + eunits: 1536 # number of encoder ff units + dlayers: 4 # number of decoder layers + dunits: 1536 # number of decoder ff units + positionwise_layer_type: conv1d # type of position-wise layer + positionwise_conv_kernel_size: 3 # kernel size of position wise conv layer + duration_predictor_layers: 2 # number of layers of duration predictor + duration_predictor_chans: 256 # number of channels of duration predictor + duration_predictor_kernel_size: 3 # filter size of duration predictor + postnet_layers: 5 # number of layers of postnset + postnet_filts: 5 # filter size of conv layers in postnet + postnet_chans: 256 # number of channels of conv layers in postnet + use_masking: True # whether to apply masking for padded part in loss calculation + use_scaled_pos_enc: True # whether to use scaled positional encoding + encoder_normalize_before: True # whether to perform layer normalization before the input + decoder_normalize_before: True # whether to perform layer normalization before the input + reduction_factor: 1 # reduction factor + init_type: xavier_uniform # initialization type + init_enc_alpha: 1.0 # initial value of alpha of encoder scaled position encoding + init_dec_alpha: 1.0 # initial value of alpha of decoder scaled position encoding + transformer_enc_dropout_rate: 0.2 # dropout rate for transformer encoder layer + transformer_enc_positional_dropout_rate: 0.2 # dropout rate for transformer encoder positional encoding + transformer_enc_attn_dropout_rate: 0.2 # dropout rate for transformer encoder attention layer + transformer_dec_dropout_rate: 0.2 # dropout rate for transformer decoder layer + transformer_dec_positional_dropout_rate: 0.2 # dropout rate for transformer decoder positional encoding + transformer_dec_attn_dropout_rate: 0.2 # dropout rate for transformer decoder attention layer + pitch_predictor_layers: 5 # number of conv layers in pitch predictor + pitch_predictor_chans: 256 # number of channels of conv layers in pitch predictor + pitch_predictor_kernel_size: 5 # kernel size of conv leyers in pitch predictor + pitch_predictor_dropout: 0.5 # dropout rate in pitch predictor + pitch_embed_kernel_size: 1 # kernel size of conv embedding layer for pitch + pitch_embed_dropout: 0.0 # dropout rate after conv embedding layer for pitch + stop_gradient_from_pitch_predictor: true # whether to stop the gradient from pitch predictor to encoder + energy_predictor_layers: 2 # number of conv layers in energy predictor + energy_predictor_chans: 256 # number of channels of conv layers in energy predictor + energy_predictor_kernel_size: 3 # kernel size of conv leyers in energy predictor + energy_predictor_dropout: 0.5 # dropout rate in energy predictor + energy_embed_kernel_size: 1 # kernel size of conv embedding layer for energy + energy_embed_dropout: 0.0 # dropout rate after conv embedding layer for energy + stop_gradient_from_energy_predictor: false # whether to stop the gradient from energy predictor to encoder + + + +########################################################### +# UPDATER SETTING # +########################################################### +updater: + use_masking: True # whether to apply masking for padded part in loss calculation + + + +########################################################### +# OPTIMIZER SETTING # +########################################################### +optimizer: + optim: adam # optimizer type + learning_rate: 0.001 # learning rate + +########################################################### +# TRAINING SETTING # +########################################################### +max_epoch: 1000 +num_snapshots: 5 + + +########################################################### +# OTHER SETTING # +########################################################### +seed: 10086 diff --git a/modules/audio/tts/fastspeech2_ljspeech/assets/fastspeech2_nosil_ljspeech_ckpt_0.5/phone_id_map.txt b/modules/audio/tts/fastspeech2_ljspeech/assets/fastspeech2_nosil_ljspeech_ckpt_0.5/phone_id_map.txt new file mode 100644 index 0000000000000000000000000000000000000000..c840e98e2cb6a73acefbf08408d3e24a2b066cd1 --- /dev/null +++ b/modules/audio/tts/fastspeech2_ljspeech/assets/fastspeech2_nosil_ljspeech_ckpt_0.5/phone_id_map.txt @@ -0,0 +1,80 @@ + 0 + 1 +AA0 2 +AA1 3 +AA2 4 +AE0 5 +AE1 6 +AE2 7 +AH0 8 +AH1 9 +AH2 10 +AO0 11 +AO1 12 +AO2 13 +AW0 14 +AW1 15 +AW2 16 +AY0 17 +AY1 18 +AY2 19 +B 20 +CH 21 +D 22 +DH 23 +EH0 24 +EH1 25 +EH2 26 +ER0 27 +ER1 28 +ER2 29 +EY0 30 +EY1 31 +EY2 32 +F 33 +G 34 +HH 35 +IH0 36 +IH1 37 +IH2 38 +IY0 39 +IY1 40 +IY2 41 +JH 42 +K 43 +L 44 +M 45 +N 46 +NG 47 +OW0 48 +OW1 49 +OW2 50 +OY0 51 +OY1 52 +OY2 53 +P 54 +R 55 +S 56 +SH 57 +T 58 +TH 59 +UH0 60 +UH1 61 +UH2 62 +UW0 63 +UW1 64 +UW2 65 +V 66 +W 67 +Y 68 +Z 69 +ZH 70 +sil 71 +sp 72 +spl 73 +spn 74 +, 75 +. 76 +? 77 +! 78 + 79 diff --git a/modules/audio/tts/fastspeech2_ljspeech/assets/pwg_ljspeech_ckpt_0.5/pwg_default.yaml b/modules/audio/tts/fastspeech2_ljspeech/assets/pwg_ljspeech_ckpt_0.5/pwg_default.yaml new file mode 100644 index 0000000000000000000000000000000000000000..049ab93df16eb8a281950ce2ebab694f62a8fb2f --- /dev/null +++ b/modules/audio/tts/fastspeech2_ljspeech/assets/pwg_ljspeech_ckpt_0.5/pwg_default.yaml @@ -0,0 +1,119 @@ +# This is the hyperparameter configuration file for Parallel WaveGAN. +# Please make sure this is adjusted for the LJSpeech dataset. If you want to +# apply to the other dataset, you might need to carefully change some parameters. +# This configuration requires 12 GB GPU memory and takes ~3 days on TITAN V. + +########################################################### +# FEATURE EXTRACTION SETTING # +########################################################### +fs: 22050 # Sampling rate. +n_fft: 1024 # FFT size. (in samples) +n_shift: 256 # Hop size. (in samples) +win_length: null # Window length. (in samples) + # If set to null, it will be the same as fft_size. +window: "hann" # Window function. +n_mels: 80 # Number of mel basis. +fmin: 80 # Minimum freq in mel basis calculation. (Hz) +fmax: 7600 # Maximum frequency in mel basis calculation. (Hz) +trim_silence: false # Whether to trim the start and end of silence. +top_db: 60 # Need to tune carefully if the recording is not good. +trim_frame_length: 2048 # Frame size in trimming. (in samples) +trim_hop_length: 512 # Hop size in trimming. (in samples) + +########################################################### +# GENERATOR NETWORK ARCHITECTURE SETTING # +########################################################### +generator_params: + in_channels: 1 # Number of input channels. + out_channels: 1 # Number of output channels. + kernel_size: 3 # Kernel size of dilated convolution. + layers: 30 # Number of residual block layers. + stacks: 3 # Number of stacks i.e., dilation cycles. + residual_channels: 64 # Number of channels in residual conv. + gate_channels: 128 # Number of channels in gated conv. + skip_channels: 64 # Number of channels in skip conv. + aux_channels: 80 # Number of channels for auxiliary feature conv. + # Must be the same as num_mels. + aux_context_window: 2 # Context window size for auxiliary feature. + # If set to 2, previous 2 and future 2 frames will be considered. + dropout: 0.0 # Dropout rate. 0.0 means no dropout applied. + use_weight_norm: true # Whether to use weight norm. + # If set to true, it will be applied to all of the conv layers. + upsample_scales: [4, 4, 4, 4] # Upsampling scales. Prodcut of these must be the same as hop size. + +########################################################### +# DISCRIMINATOR NETWORK ARCHITECTURE SETTING # +########################################################### +discriminator_params: + in_channels: 1 # Number of input channels. + out_channels: 1 # Number of output channels. + kernel_size: 3 # Number of output channels. + layers: 10 # Number of conv layers. + conv_channels: 64 # Number of chnn layers. + bias: true # Whether to use bias parameter in conv. + use_weight_norm: true # Whether to use weight norm. + # If set to true, it will be applied to all of the conv layers. + nonlinear_activation: "LeakyReLU" # Nonlinear function after each conv. + nonlinear_activation_params: # Nonlinear function parameters + negative_slope: 0.2 # Alpha in LeakyReLU. + +########################################################### +# STFT LOSS SETTING # +########################################################### +stft_loss_params: + fft_sizes: [1024, 2048, 512] # List of FFT size for STFT-based loss. + hop_sizes: [120, 240, 50] # List of hop size for STFT-based loss + win_lengths: [600, 1200, 240] # List of window length for STFT-based loss. + window: "hann" # Window function for STFT-based loss + +########################################################### +# ADVERSARIAL LOSS SETTING # +########################################################### +lambda_adv: 4.0 # Loss balancing coefficient. + +########################################################### +# DATA LOADER SETTING # +########################################################### +batch_size: 8 # Batch size. +batch_max_steps: 25600 # Length of each audio in batch. Make sure dividable by hop_size. +pin_memory: true # Whether to pin memory in Pytorch DataLoader. +num_workers: 4 # Number of workers in Pytorch DataLoader. +remove_short_samples: true # Whether to remove samples the length of which are less than batch_max_steps. +allow_cache: true # Whether to allow cache in dataset. If true, it requires cpu memory. + +########################################################### +# OPTIMIZER & SCHEDULER SETTING # +########################################################### +generator_optimizer_params: + epsilon: 1.0e-6 # Generator's epsilon. + weight_decay: 0.0 # Generator's weight decay coefficient. +generator_scheduler_params: + learning_rate: 0.0001 # Generator's learning rate. + step_size: 200000 # Generator's scheduler step size. + gamma: 0.5 # Generator's scheduler gamma. + # At each step size, lr will be multiplied by this parameter. +generator_grad_norm: 10 # Generator's gradient norm. +discriminator_optimizer_params: + epsilon: 1.0e-6 # Discriminator's epsilon. + weight_decay: 0.0 # Discriminator's weight decay coefficient. +discriminator_scheduler_params: + learning_rate: 0.00005 # Discriminator's learning rate. + step_size: 200000 # Discriminator's scheduler step size. + gamma: 0.5 # Discriminator's scheduler gamma. + # At each step size, lr will be multiplied by this parameter. +discriminator_grad_norm: 1 # Discriminator's gradient norm. + +########################################################### +# INTERVAL SETTING # +########################################################### +discriminator_train_start_steps: 100000 # Number of steps to start to train discriminator. +train_max_steps: 400000 # Number of training steps. +save_interval_steps: 5000 # Interval steps to save checkpoint. +eval_interval_steps: 1000 # Interval steps to evaluate the network. + +########################################################### +# OTHER SETTING # +########################################################### +num_save_intermediate_results: 4 # Number of results to be saved as intermediate results. +num_snapshots: 10 # max number of snapshots to keep while training +seed: 42 # random seed for paddle, random, and np.random diff --git a/modules/audio/tts/fastspeech2_ljspeech/module.py b/modules/audio/tts/fastspeech2_ljspeech/module.py new file mode 100644 index 0000000000000000000000000000000000000000..7281e1817b296323b41fb6879a4d11903c97f994 --- /dev/null +++ b/modules/audio/tts/fastspeech2_ljspeech/module.py @@ -0,0 +1,130 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# 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 +from pathlib import Path +from typing import List + +import numpy as np +import paddle +from paddlehub.env import MODULE_HOME +from paddlehub.module.module import moduleinfo, serving +from paddlehub.utils.log import logger +from parakeet.frontend import English +from parakeet.models.fastspeech2 import FastSpeech2 +from parakeet.models.fastspeech2 import FastSpeech2Inference +from parakeet.models.parallel_wavegan import PWGGenerator +from parakeet.models.parallel_wavegan import PWGInference +from parakeet.modules.normalizer import ZScore +import soundfile as sf +from yacs.config import CfgNode +import yaml + + +@moduleinfo(name="fastspeech2_ljspeech", version="1.0.0", summary="", author="Baidu", author_email="", type="audio/tts") +class FastSpeech(paddle.nn.Layer): + def __init__(self, output_dir='./wavs'): + super(FastSpeech, self).__init__() + fastspeech2_res_dir = os.path.join(MODULE_HOME, 'fastspeech2_ljspeech', + 'assets/fastspeech2_nosil_ljspeech_ckpt_0.5') + pwg_res_dir = os.path.join(MODULE_HOME, 'fastspeech2_ljspeech', 'assets/pwg_ljspeech_ckpt_0.5') + + phones_dict = os.path.join(fastspeech2_res_dir, 'phone_id_map.txt') + with open(phones_dict, "r") as f: + phn_id = [line.strip().split() for line in f.readlines()] + vocab_size = len(phn_id) + self.phone_id_map = {} + for phn, _id in phn_id: + self.phone_id_map[phn] = int(_id) + + # fastspeech2 + fastspeech2_config = os.path.join(fastspeech2_res_dir, 'default.yaml') + with open(fastspeech2_config) as f: + fastspeech2_config = CfgNode(yaml.safe_load(f)) + self.samplerate = fastspeech2_config.fs + + fastspeech2_checkpoint = os.path.join(fastspeech2_res_dir, 'snapshot_iter_100000.pdz') + model = FastSpeech2(idim=vocab_size, odim=fastspeech2_config.n_mels, **fastspeech2_config["model"]) + model.set_state_dict(paddle.load(fastspeech2_checkpoint)["main_params"]) + logger.info('Load fastspeech2 params from %s' % os.path.abspath(fastspeech2_checkpoint)) + model.eval() + + # vocoder + pwg_config = os.path.join(pwg_res_dir, 'pwg_default.yaml') + with open(pwg_config) as f: + pwg_config = CfgNode(yaml.safe_load(f)) + + pwg_checkpoint = os.path.join(pwg_res_dir, 'pwg_snapshot_iter_400000.pdz') + vocoder = PWGGenerator(**pwg_config["generator_params"]) + vocoder.set_state_dict(paddle.load(pwg_checkpoint)["generator_params"]) + logger.info('Load vocoder params from %s' % os.path.abspath(pwg_checkpoint)) + vocoder.remove_weight_norm() + vocoder.eval() + + # frontend + self.frontend = English() + self.punc = ":,;。?!“”‘’':,;.?!" + + # stat + fastspeech2_stat = os.path.join(fastspeech2_res_dir, 'speech_stats.npy') + stat = np.load(fastspeech2_stat) + mu, std = stat + mu = paddle.to_tensor(mu) + std = paddle.to_tensor(std) + fastspeech2_normalizer = ZScore(mu, std) + + pwg_stat = os.path.join(pwg_res_dir, 'pwg_stats.npy') + stat = np.load(pwg_stat) + mu, std = stat + mu = paddle.to_tensor(mu) + std = paddle.to_tensor(std) + pwg_normalizer = ZScore(mu, std) + + # inference + self.fastspeech2_inference = FastSpeech2Inference(fastspeech2_normalizer, model) + self.pwg_inference = PWGInference(pwg_normalizer, vocoder) + + self.output_dir = Path(output_dir) + self.output_dir.mkdir(parents=True, exist_ok=True) + + def forward(self, text: str): + phones = self.frontend.phoneticize(text) + # remove start_symbol and end_symbol + phones = phones[1:-1] + phones = [phn for phn in phones if not phn.isspace()] + phones = [phn if (phn in self.phone_id_map and phn not in self.punc) else "sp" for phn in phones] + phone_ids = [self.phone_id_map[phn] for phn in phones] + phone_ids = paddle.to_tensor(phone_ids) + + with paddle.no_grad(): + mel = self.fastspeech2_inference(phone_ids) + wav = self.pwg_inference(mel) + + return wav + + @serving + def generate(self, sentences: List[str], device='cpu'): + assert isinstance(sentences, list) and isinstance(sentences[0], str), \ + 'Input data should be List[str], but got {}'.format(type(sentences)) + + paddle.set_device(device) + wav_files = [] + for i, sentence in enumerate(sentences): + wav = self(sentence) + wav_file = str(self.output_dir.absolute() / (str(i + 1) + ".wav")) + sf.write(wav_file, wav.numpy(), samplerate=self.samplerate) + wav_files.append(wav_file) + + logger.info('{} wave files have been generated in {}'.format(len(sentences), self.output_dir.absolute())) + return wav_files diff --git a/modules/audio/tts/fastspeech2_ljspeech/requirements.txt b/modules/audio/tts/fastspeech2_ljspeech/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..f410f4f4238ed0017d04fb708edb3725c34784ac --- /dev/null +++ b/modules/audio/tts/fastspeech2_ljspeech/requirements.txt @@ -0,0 +1 @@ +git+https://github.com/PaddlePaddle/Parakeet@8040cb0#egg=paddle-parakeet