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 @@
-
## 第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