zhifu gao
2023-03-10 9be8a443d74d68f179de88fff13b4e8424579d7b
Merge pull request #207 from alibaba-damo-academy/dev_dzh

Dev dzh
8个文件已修改
5个文件已添加
6026 ■■■■■ 已修改文件
egs/callhome/diarization/sond/sond.yaml 2739 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
egs/callhome/diarization/sond/sond_fbank.yaml 2739 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
egs/callhome/diarization/sond/unit_test.py 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
egs_modelscope/speaker_verification/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch/infer.py 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
egs_modelscope/speaker_verification/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch/infer_sv.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
egs_modelscope/speaker_verification/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch/infer.py 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/models/e2e_diar_sond.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/models/encoder/opennmt_encoders/conv_encoder.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/models/encoder/opennmt_encoders/self_attention_encoder.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/models/encoder/resnet34_encoder.py 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/models/pooling/statistic_pooling.py 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/tasks/diar.py 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/tasks/sv.py 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
egs/callhome/diarization/sond/sond.yaml
New file
@@ -0,0 +1,2739 @@
config: finetune.yaml
print_config: false
log_level: INFO
dry_run: false
iterator_type: sequence
output_dir: exp/sond
ngpu: 1
seed: 0
num_workers: 16
num_att_plot: 0
dist_backend: nccl
dist_init_method: env://
dist_world_size: null
dist_rank: null
local_rank: 0
dist_master_addr: null
dist_master_port: null
dist_launcher: null
multiprocessing_distributed: true
distributed: false
unused_parameters: true
sharded_ddp: false
ddp_backend: pytorch_ddp
cudnn_enabled: true
cudnn_benchmark: false
cudnn_deterministic: true
collect_stats: false
write_collected_feats: false
max_epoch: 50
patience: null
val_scheduler_criterion:
- valid
- acc
early_stopping_criterion:
- valid
- loss
- min
best_model_criterion:
-   - valid
    - acc
    - max
keep_nbest_models: 10
nbest_averaging_interval: 0
grad_clip: 5
grad_clip_type: 2.0
grad_noise: false
accum_grad: 1
no_forward_run: false
resume: true
train_dtype: float32
use_amp: false
log_interval: 50
use_matplotlib: false
use_tensorboard: true
use_wandb: false
wandb_project: null
wandb_id: null
wandb_entity: null
wandb_name: null
wandb_model_log_interval: -1
use_pai: true
detect_anomaly: false
pretrain_path: null
init_param: []
ignore_init_mismatch: false
freeze_param: []
num_iters_per_epoch: null
batch_size: 20
valid_batch_size: null
batch_bins: 10000
valid_batch_bins: null
train_shape_file:
- /data/volume1/youyan/aishell/ark/train/speech_shape.1
- /data/volume1/youyan/aishell/ark/train/text_shape.1
valid_shape_file:
- /data/volume1/youyan/aishell/ark/dev/speech_shape.1
- /data/volume1/youyan/aishell/ark/dev/text_shape.1
batch_type: length
valid_batch_type: null
fold_length:
- 512
- 150
sort_in_batch: descending
sort_batch: descending
multiple_iterator: false
chunk_length: 500
chunk_shift_ratio: 0.5
num_cache_chunks: 1024
train_data_path_and_name_and_type:
-   - /data/volume1/youyan/aishell/ark/train/data.scp
    - speech
    - kaldi_ark
-   - /data/volume1/youyan/aishell/ark/train/data.text.1
    - text
    - text
valid_data_path_and_name_and_type:
-   - /data/volume1/youyan/aishell/ark/dev/data.scp
    - speech
    - kaldi_ark
-   - /data/volume1/youyan/aishell/ark/dev/data.text.1
    - text
    - text
allow_variable_data_keys: false
max_cache_size: 0.0
max_cache_fd: 32
valid_max_cache_size: null
optim: adam
optim_conf:
    lr: 0.0005
scheduler: warmuplr
scheduler_conf:
    warmup_steps: 30000
token_list:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '9'
- '10'
- '11'
- '12'
- '13'
- '14'
- '15'
- '16'
- '17'
- '18'
- '19'
- '20'
- '21'
- '22'
- '23'
- '24'
- '25'
- '26'
- '27'
- '28'
- '29'
- '30'
- '32'
- '33'
- '34'
- '35'
- '36'
- '37'
- '38'
- '39'
- '40'
- '41'
- '42'
- '43'
- '44'
- '45'
- '46'
- '48'
- '49'
- '50'
- '51'
- '52'
- '53'
- '54'
- '56'
- '57'
- '58'
- '60'
- '64'
- '65'
- '66'
- '67'
- '68'
- '69'
- '70'
- '71'
- '72'
- '73'
- '74'
- '75'
- '76'
- '77'
- '78'
- '80'
- '81'
- '82'
- '83'
- '84'
- '85'
- '86'
- '88'
- '89'
- '90'
- '92'
- '96'
- '97'
- '98'
- '99'
- '100'
- '101'
- '102'
- '104'
- '105'
- '106'
- '108'
- '112'
- '113'
- '114'
- '116'
- '120'
- '128'
- '129'
- '130'
- '131'
- '132'
- '133'
- '134'
- '135'
- '136'
- '137'
- '138'
- '139'
- '140'
- '141'
- '142'
- '144'
- '145'
- '146'
- '147'
- '148'
- '149'
- '150'
- '152'
- '153'
- '154'
- '156'
- '160'
- '161'
- '162'
- '163'
- '164'
- '165'
- '166'
- '168'
- '169'
- '170'
- '172'
- '176'
- '177'
- '178'
- '180'
- '184'
- '192'
- '193'
- '194'
- '195'
- '196'
- '197'
- '198'
- '200'
- '201'
- '202'
- '204'
- '208'
- '209'
- '210'
- '212'
- '216'
- '224'
- '225'
- '226'
- '228'
- '232'
- '240'
- '256'
- '257'
- '258'
- '259'
- '260'
- '261'
- '262'
- '263'
- '264'
- '265'
- '266'
- '267'
- '268'
- '269'
- '270'
- '272'
- '273'
- '274'
- '275'
- '276'
- '277'
- '278'
- '280'
- '281'
- '282'
- '284'
- '288'
- '289'
- '290'
- '291'
- '292'
- '293'
- '294'
- '296'
- '297'
- '298'
- '300'
- '304'
- '305'
- '306'
- '308'
- '312'
- '320'
- '321'
- '322'
- '323'
- '324'
- '325'
- '326'
- '328'
- '329'
- '330'
- '332'
- '336'
- '337'
- '338'
- '340'
- '344'
- '352'
- '353'
- '354'
- '356'
- '360'
- '368'
- '384'
- '385'
- '386'
- '387'
- '388'
- '389'
- '390'
- '392'
- '393'
- '394'
- '396'
- '400'
- '401'
- '402'
- '404'
- '408'
- '416'
- '417'
- '418'
- '420'
- '424'
- '432'
- '448'
- '449'
- '450'
- '452'
- '456'
- '464'
- '480'
- '512'
- '513'
- '514'
- '515'
- '516'
- '517'
- '518'
- '519'
- '520'
- '521'
- '522'
- '523'
- '524'
- '525'
- '526'
- '528'
- '529'
- '530'
- '531'
- '532'
- '533'
- '534'
- '536'
- '537'
- '538'
- '540'
- '544'
- '545'
- '546'
- '547'
- '548'
- '549'
- '550'
- '552'
- '553'
- '554'
- '556'
- '560'
- '561'
- '562'
- '564'
- '568'
- '576'
- '577'
- '578'
- '579'
- '580'
- '581'
- '582'
- '584'
- '585'
- '586'
- '588'
- '592'
- '593'
- '594'
- '596'
- '600'
- '608'
- '609'
- '610'
- '612'
- '616'
- '624'
- '640'
- '641'
- '642'
- '643'
- '644'
- '645'
- '646'
- '648'
- '649'
- '650'
- '652'
- '656'
- '657'
- '658'
- '660'
- '664'
- '672'
- '673'
- '674'
- '676'
- '680'
- '688'
- '704'
- '705'
- '706'
- '708'
- '712'
- '720'
- '736'
- '768'
- '769'
- '770'
- '771'
- '772'
- '773'
- '774'
- '776'
- '777'
- '778'
- '780'
- '784'
- '785'
- '786'
- '788'
- '792'
- '800'
- '801'
- '802'
- '804'
- '808'
- '816'
- '832'
- '833'
- '834'
- '836'
- '840'
- '848'
- '864'
- '896'
- '897'
- '898'
- '900'
- '904'
- '912'
- '928'
- '960'
- '1024'
- '1025'
- '1026'
- '1027'
- '1028'
- '1029'
- '1030'
- '1031'
- '1032'
- '1033'
- '1034'
- '1035'
- '1036'
- '1037'
- '1038'
- '1040'
- '1041'
- '1042'
- '1043'
- '1044'
- '1045'
- '1046'
- '1048'
- '1049'
- '1050'
- '1052'
- '1056'
- '1057'
- '1058'
- '1059'
- '1060'
- '1061'
- '1062'
- '1064'
- '1065'
- '1066'
- '1068'
- '1072'
- '1073'
- '1074'
- '1076'
- '1080'
- '1088'
- '1089'
- '1090'
- '1091'
- '1092'
- '1093'
- '1094'
- '1096'
- '1097'
- '1098'
- '1100'
- '1104'
- '1105'
- '1106'
- '1108'
- '1112'
- '1120'
- '1121'
- '1122'
- '1124'
- '1128'
- '1136'
- '1152'
- '1153'
- '1154'
- '1155'
- '1156'
- '1157'
- '1158'
- '1160'
- '1161'
- '1162'
- '1164'
- '1168'
- '1169'
- '1170'
- '1172'
- '1176'
- '1184'
- '1185'
- '1186'
- '1188'
- '1192'
- '1200'
- '1216'
- '1217'
- '1218'
- '1220'
- '1224'
- '1232'
- '1248'
- '1280'
- '1281'
- '1282'
- '1283'
- '1284'
- '1285'
- '1286'
- '1288'
- '1289'
- '1290'
- '1292'
- '1296'
- '1297'
- '1298'
- '1300'
- '1304'
- '1312'
- '1313'
- '1314'
- '1316'
- '1320'
- '1328'
- '1344'
- '1345'
- '1346'
- '1348'
- '1352'
- '1360'
- '1376'
- '1408'
- '1409'
- '1410'
- '1412'
- '1416'
- '1424'
- '1440'
- '1472'
- '1536'
- '1537'
- '1538'
- '1539'
- '1540'
- '1541'
- '1542'
- '1544'
- '1545'
- '1546'
- '1548'
- '1552'
- '1553'
- '1554'
- '1556'
- '1560'
- '1568'
- '1569'
- '1570'
- '1572'
- '1576'
- '1584'
- '1600'
- '1601'
- '1602'
- '1604'
- '1608'
- '1616'
- '1632'
- '1664'
- '1665'
- '1666'
- '1668'
- '1672'
- '1680'
- '1696'
- '1728'
- '1792'
- '1793'
- '1794'
- '1796'
- '1800'
- '1808'
- '1824'
- '1856'
- '1920'
- '2048'
- '2049'
- '2050'
- '2051'
- '2052'
- '2053'
- '2054'
- '2055'
- '2056'
- '2057'
- '2058'
- '2059'
- '2060'
- '2061'
- '2062'
- '2064'
- '2065'
- '2066'
- '2067'
- '2068'
- '2069'
- '2070'
- '2072'
- '2073'
- '2074'
- '2076'
- '2080'
- '2081'
- '2082'
- '2083'
- '2084'
- '2085'
- '2086'
- '2088'
- '2089'
- '2090'
- '2092'
- '2096'
- '2097'
- '2098'
- '2100'
- '2104'
- '2112'
- '2113'
- '2114'
- '2115'
- '2116'
- '2117'
- '2118'
- '2120'
- '2121'
- '2122'
- '2124'
- '2128'
- '2129'
- '2130'
- '2132'
- '2136'
- '2144'
- '2145'
- '2146'
- '2148'
- '2152'
- '2160'
- '2176'
- '2177'
- '2178'
- '2179'
- '2180'
- '2181'
- '2182'
- '2184'
- '2185'
- '2186'
- '2188'
- '2192'
- '2193'
- '2194'
- '2196'
- '2200'
- '2208'
- '2209'
- '2210'
- '2212'
- '2216'
- '2224'
- '2240'
- '2241'
- '2242'
- '2244'
- '2248'
- '2256'
- '2272'
- '2304'
- '2305'
- '2306'
- '2307'
- '2308'
- '2309'
- '2310'
- '2312'
- '2313'
- '2314'
- '2316'
- '2320'
- '2321'
- '2322'
- '2324'
- '2328'
- '2336'
- '2337'
- '2338'
- '2340'
- '2344'
- '2352'
- '2368'
- '2369'
- '2370'
- '2372'
- '2376'
- '2384'
- '2400'
- '2432'
- '2433'
- '2434'
- '2436'
- '2440'
- '2448'
- '2464'
- '2496'
- '2560'
- '2561'
- '2562'
- '2563'
- '2564'
- '2565'
- '2566'
- '2568'
- '2569'
- '2570'
- '2572'
- '2576'
- '2577'
- '2578'
- '2580'
- '2584'
- '2592'
- '2593'
- '2594'
- '2596'
- '2600'
- '2608'
- '2624'
- '2625'
- '2626'
- '2628'
- '2632'
- '2640'
- '2656'
- '2688'
- '2689'
- '2690'
- '2692'
- '2696'
- '2704'
- '2720'
- '2752'
- '2816'
- '2817'
- '2818'
- '2820'
- '2824'
- '2832'
- '2848'
- '2880'
- '2944'
- '3072'
- '3073'
- '3074'
- '3075'
- '3076'
- '3077'
- '3078'
- '3080'
- '3081'
- '3082'
- '3084'
- '3088'
- '3089'
- '3090'
- '3092'
- '3096'
- '3104'
- '3105'
- '3106'
- '3108'
- '3112'
- '3120'
- '3136'
- '3137'
- '3138'
- '3140'
- '3144'
- '3152'
- '3168'
- '3200'
- '3201'
- '3202'
- '3204'
- '3208'
- '3216'
- '3232'
- '3264'
- '3328'
- '3329'
- '3330'
- '3332'
- '3336'
- '3344'
- '3360'
- '3392'
- '3456'
- '3584'
- '3585'
- '3586'
- '3588'
- '3592'
- '3600'
- '3616'
- '3648'
- '3712'
- '3840'
- '4096'
- '4097'
- '4098'
- '4099'
- '4100'
- '4101'
- '4102'
- '4103'
- '4104'
- '4105'
- '4106'
- '4107'
- '4108'
- '4109'
- '4110'
- '4112'
- '4113'
- '4114'
- '4115'
- '4116'
- '4117'
- '4118'
- '4120'
- '4121'
- '4122'
- '4124'
- '4128'
- '4129'
- '4130'
- '4131'
- '4132'
- '4133'
- '4134'
- '4136'
- '4137'
- '4138'
- '4140'
- '4144'
- '4145'
- '4146'
- '4148'
- '4152'
- '4160'
- '4161'
- '4162'
- '4163'
- '4164'
- '4165'
- '4166'
- '4168'
- '4169'
- '4170'
- '4172'
- '4176'
- '4177'
- '4178'
- '4180'
- '4184'
- '4192'
- '4193'
- '4194'
- '4196'
- '4200'
- '4208'
- '4224'
- '4225'
- '4226'
- '4227'
- '4228'
- '4229'
- '4230'
- '4232'
- '4233'
- '4234'
- '4236'
- '4240'
- '4241'
- '4242'
- '4244'
- '4248'
- '4256'
- '4257'
- '4258'
- '4260'
- '4264'
- '4272'
- '4288'
- '4289'
- '4290'
- '4292'
- '4296'
- '4304'
- '4320'
- '4352'
- '4353'
- '4354'
- '4355'
- '4356'
- '4357'
- '4358'
- '4360'
- '4361'
- '4362'
- '4364'
- '4368'
- '4369'
- '4370'
- '4372'
- '4376'
- '4384'
- '4385'
- '4386'
- '4388'
- '4392'
- '4400'
- '4416'
- '4417'
- '4418'
- '4420'
- '4424'
- '4432'
- '4448'
- '4480'
- '4481'
- '4482'
- '4484'
- '4488'
- '4496'
- '4512'
- '4544'
- '4608'
- '4609'
- '4610'
- '4611'
- '4612'
- '4613'
- '4614'
- '4616'
- '4617'
- '4618'
- '4620'
- '4624'
- '4625'
- '4626'
- '4628'
- '4632'
- '4640'
- '4641'
- '4642'
- '4644'
- '4648'
- '4656'
- '4672'
- '4673'
- '4674'
- '4676'
- '4680'
- '4688'
- '4704'
- '4736'
- '4737'
- '4738'
- '4740'
- '4744'
- '4752'
- '4768'
- '4800'
- '4864'
- '4865'
- '4866'
- '4868'
- '4872'
- '4880'
- '4896'
- '4928'
- '4992'
- '5120'
- '5121'
- '5122'
- '5123'
- '5124'
- '5125'
- '5126'
- '5128'
- '5129'
- '5130'
- '5132'
- '5136'
- '5137'
- '5138'
- '5140'
- '5144'
- '5152'
- '5153'
- '5154'
- '5156'
- '5160'
- '5168'
- '5184'
- '5185'
- '5186'
- '5188'
- '5192'
- '5200'
- '5216'
- '5248'
- '5249'
- '5250'
- '5252'
- '5256'
- '5264'
- '5280'
- '5312'
- '5376'
- '5377'
- '5378'
- '5380'
- '5384'
- '5392'
- '5408'
- '5440'
- '5504'
- '5632'
- '5633'
- '5634'
- '5636'
- '5640'
- '5648'
- '5664'
- '5696'
- '5760'
- '5888'
- '6144'
- '6145'
- '6146'
- '6147'
- '6148'
- '6149'
- '6150'
- '6152'
- '6153'
- '6154'
- '6156'
- '6160'
- '6161'
- '6162'
- '6164'
- '6168'
- '6176'
- '6177'
- '6178'
- '6180'
- '6184'
- '6192'
- '6208'
- '6209'
- '6210'
- '6212'
- '6216'
- '6224'
- '6240'
- '6272'
- '6273'
- '6274'
- '6276'
- '6280'
- '6288'
- '6304'
- '6336'
- '6400'
- '6401'
- '6402'
- '6404'
- '6408'
- '6416'
- '6432'
- '6464'
- '6528'
- '6656'
- '6657'
- '6658'
- '6660'
- '6664'
- '6672'
- '6688'
- '6720'
- '6784'
- '6912'
- '7168'
- '7169'
- '7170'
- '7172'
- '7176'
- '7184'
- '7200'
- '7232'
- '7296'
- '7424'
- '7680'
- '8192'
- '8193'
- '8194'
- '8195'
- '8196'
- '8197'
- '8198'
- '8199'
- '8200'
- '8201'
- '8202'
- '8203'
- '8204'
- '8205'
- '8206'
- '8208'
- '8209'
- '8210'
- '8211'
- '8212'
- '8213'
- '8214'
- '8216'
- '8217'
- '8218'
- '8220'
- '8224'
- '8225'
- '8226'
- '8227'
- '8228'
- '8229'
- '8230'
- '8232'
- '8233'
- '8234'
- '8236'
- '8240'
- '8241'
- '8242'
- '8244'
- '8248'
- '8256'
- '8257'
- '8258'
- '8259'
- '8260'
- '8261'
- '8262'
- '8264'
- '8265'
- '8266'
- '8268'
- '8272'
- '8273'
- '8274'
- '8276'
- '8280'
- '8288'
- '8289'
- '8290'
- '8292'
- '8296'
- '8304'
- '8320'
- '8321'
- '8322'
- '8323'
- '8324'
- '8325'
- '8326'
- '8328'
- '8329'
- '8330'
- '8332'
- '8336'
- '8337'
- '8338'
- '8340'
- '8344'
- '8352'
- '8353'
- '8354'
- '8356'
- '8360'
- '8368'
- '8384'
- '8385'
- '8386'
- '8388'
- '8392'
- '8400'
- '8416'
- '8448'
- '8449'
- '8450'
- '8451'
- '8452'
- '8453'
- '8454'
- '8456'
- '8457'
- '8458'
- '8460'
- '8464'
- '8465'
- '8466'
- '8468'
- '8472'
- '8480'
- '8481'
- '8482'
- '8484'
- '8488'
- '8496'
- '8512'
- '8513'
- '8514'
- '8516'
- '8520'
- '8528'
- '8544'
- '8576'
- '8577'
- '8578'
- '8580'
- '8584'
- '8592'
- '8608'
- '8640'
- '8704'
- '8705'
- '8706'
- '8707'
- '8708'
- '8709'
- '8710'
- '8712'
- '8713'
- '8714'
- '8716'
- '8720'
- '8721'
- '8722'
- '8724'
- '8728'
- '8736'
- '8737'
- '8738'
- '8740'
- '8744'
- '8752'
- '8768'
- '8769'
- '8770'
- '8772'
- '8776'
- '8784'
- '8800'
- '8832'
- '8833'
- '8834'
- '8836'
- '8840'
- '8848'
- '8864'
- '8896'
- '8960'
- '8961'
- '8962'
- '8964'
- '8968'
- '8976'
- '8992'
- '9024'
- '9088'
- '9216'
- '9217'
- '9218'
- '9219'
- '9220'
- '9221'
- '9222'
- '9224'
- '9225'
- '9226'
- '9228'
- '9232'
- '9233'
- '9234'
- '9236'
- '9240'
- '9248'
- '9249'
- '9250'
- '9252'
- '9256'
- '9264'
- '9280'
- '9281'
- '9282'
- '9284'
- '9288'
- '9296'
- '9312'
- '9344'
- '9345'
- '9346'
- '9348'
- '9352'
- '9360'
- '9376'
- '9408'
- '9472'
- '9473'
- '9474'
- '9476'
- '9480'
- '9488'
- '9504'
- '9536'
- '9600'
- '9728'
- '9729'
- '9730'
- '9732'
- '9736'
- '9744'
- '9760'
- '9792'
- '9856'
- '9984'
- '10240'
- '10241'
- '10242'
- '10243'
- '10244'
- '10245'
- '10246'
- '10248'
- '10249'
- '10250'
- '10252'
- '10256'
- '10257'
- '10258'
- '10260'
- '10264'
- '10272'
- '10273'
- '10274'
- '10276'
- '10280'
- '10288'
- '10304'
- '10305'
- '10306'
- '10308'
- '10312'
- '10320'
- '10336'
- '10368'
- '10369'
- '10370'
- '10372'
- '10376'
- '10384'
- '10400'
- '10432'
- '10496'
- '10497'
- '10498'
- '10500'
- '10504'
- '10512'
- '10528'
- '10560'
- '10624'
- '10752'
- '10753'
- '10754'
- '10756'
- '10760'
- '10768'
- '10784'
- '10816'
- '10880'
- '11008'
- '11264'
- '11265'
- '11266'
- '11268'
- '11272'
- '11280'
- '11296'
- '11328'
- '11392'
- '11520'
- '11776'
- '12288'
- '12289'
- '12290'
- '12291'
- '12292'
- '12293'
- '12294'
- '12296'
- '12297'
- '12298'
- '12300'
- '12304'
- '12305'
- '12306'
- '12308'
- '12312'
- '12320'
- '12321'
- '12322'
- '12324'
- '12328'
- '12336'
- '12352'
- '12353'
- '12354'
- '12356'
- '12360'
- '12368'
- '12384'
- '12416'
- '12417'
- '12418'
- '12420'
- '12424'
- '12432'
- '12448'
- '12480'
- '12544'
- '12545'
- '12546'
- '12548'
- '12552'
- '12560'
- '12576'
- '12608'
- '12672'
- '12800'
- '12801'
- '12802'
- '12804'
- '12808'
- '12816'
- '12832'
- '12864'
- '12928'
- '13056'
- '13312'
- '13313'
- '13314'
- '13316'
- '13320'
- '13328'
- '13344'
- '13376'
- '13440'
- '13568'
- '13824'
- '14336'
- '14337'
- '14338'
- '14340'
- '14344'
- '14352'
- '14368'
- '14400'
- '14464'
- '14592'
- '14848'
- '15360'
- '16384'
- '16385'
- '16386'
- '16387'
- '16388'
- '16389'
- '16390'
- '16391'
- '16392'
- '16393'
- '16394'
- '16395'
- '16396'
- '16397'
- '16398'
- '16400'
- '16401'
- '16402'
- '16403'
- '16404'
- '16405'
- '16406'
- '16408'
- '16409'
- '16410'
- '16412'
- '16416'
- '16417'
- '16418'
- '16419'
- '16420'
- '16421'
- '16422'
- '16424'
- '16425'
- '16426'
- '16428'
- '16432'
- '16433'
- '16434'
- '16436'
- '16440'
- '16448'
- '16449'
- '16450'
- '16451'
- '16452'
- '16453'
- '16454'
- '16456'
- '16457'
- '16458'
- '16460'
- '16464'
- '16465'
- '16466'
- '16468'
- '16472'
- '16480'
- '16481'
- '16482'
- '16484'
- '16488'
- '16496'
- '16512'
- '16513'
- '16514'
- '16515'
- '16516'
- '16517'
- '16518'
- '16520'
- '16521'
- '16522'
- '16524'
- '16528'
- '16529'
- '16530'
- '16532'
- '16536'
- '16544'
- '16545'
- '16546'
- '16548'
- '16552'
- '16560'
- '16576'
- '16577'
- '16578'
- '16580'
- '16584'
- '16592'
- '16608'
- '16640'
- '16641'
- '16642'
- '16643'
- '16644'
- '16645'
- '16646'
- '16648'
- '16649'
- '16650'
- '16652'
- '16656'
- '16657'
- '16658'
- '16660'
- '16664'
- '16672'
- '16673'
- '16674'
- '16676'
- '16680'
- '16688'
- '16704'
- '16705'
- '16706'
- '16708'
- '16712'
- '16720'
- '16736'
- '16768'
- '16769'
- '16770'
- '16772'
- '16776'
- '16784'
- '16800'
- '16832'
- '16896'
- '16897'
- '16898'
- '16899'
- '16900'
- '16901'
- '16902'
- '16904'
- '16905'
- '16906'
- '16908'
- '16912'
- '16913'
- '16914'
- '16916'
- '16920'
- '16928'
- '16929'
- '16930'
- '16932'
- '16936'
- '16944'
- '16960'
- '16961'
- '16962'
- '16964'
- '16968'
- '16976'
- '16992'
- '17024'
- '17025'
- '17026'
- '17028'
- '17032'
- '17040'
- '17056'
- '17088'
- '17152'
- '17153'
- '17154'
- '17156'
- '17160'
- '17168'
- '17184'
- '17216'
- '17280'
- '17408'
- '17409'
- '17410'
- '17411'
- '17412'
- '17413'
- '17414'
- '17416'
- '17417'
- '17418'
- '17420'
- '17424'
- '17425'
- '17426'
- '17428'
- '17432'
- '17440'
- '17441'
- '17442'
- '17444'
- '17448'
- '17456'
- '17472'
- '17473'
- '17474'
- '17476'
- '17480'
- '17488'
- '17504'
- '17536'
- '17537'
- '17538'
- '17540'
- '17544'
- '17552'
- '17568'
- '17600'
- '17664'
- '17665'
- '17666'
- '17668'
- '17672'
- '17680'
- '17696'
- '17728'
- '17792'
- '17920'
- '17921'
- '17922'
- '17924'
- '17928'
- '17936'
- '17952'
- '17984'
- '18048'
- '18176'
- '18432'
- '18433'
- '18434'
- '18435'
- '18436'
- '18437'
- '18438'
- '18440'
- '18441'
- '18442'
- '18444'
- '18448'
- '18449'
- '18450'
- '18452'
- '18456'
- '18464'
- '18465'
- '18466'
- '18468'
- '18472'
- '18480'
- '18496'
- '18497'
- '18498'
- '18500'
- '18504'
- '18512'
- '18528'
- '18560'
- '18561'
- '18562'
- '18564'
- '18568'
- '18576'
- '18592'
- '18624'
- '18688'
- '18689'
- '18690'
- '18692'
- '18696'
- '18704'
- '18720'
- '18752'
- '18816'
- '18944'
- '18945'
- '18946'
- '18948'
- '18952'
- '18960'
- '18976'
- '19008'
- '19072'
- '19200'
- '19456'
- '19457'
- '19458'
- '19460'
- '19464'
- '19472'
- '19488'
- '19520'
- '19584'
- '19712'
- '19968'
- '20480'
- '20481'
- '20482'
- '20483'
- '20484'
- '20485'
- '20486'
- '20488'
- '20489'
- '20490'
- '20492'
- '20496'
- '20497'
- '20498'
- '20500'
- '20504'
- '20512'
- '20513'
- '20514'
- '20516'
- '20520'
- '20528'
- '20544'
- '20545'
- '20546'
- '20548'
- '20552'
- '20560'
- '20576'
- '20608'
- '20609'
- '20610'
- '20612'
- '20616'
- '20624'
- '20640'
- '20672'
- '20736'
- '20737'
- '20738'
- '20740'
- '20744'
- '20752'
- '20768'
- '20800'
- '20864'
- '20992'
- '20993'
- '20994'
- '20996'
- '21000'
- '21008'
- '21024'
- '21056'
- '21120'
- '21248'
- '21504'
- '21505'
- '21506'
- '21508'
- '21512'
- '21520'
- '21536'
- '21568'
- '21632'
- '21760'
- '22016'
- '22528'
- '22529'
- '22530'
- '22532'
- '22536'
- '22544'
- '22560'
- '22592'
- '22656'
- '22784'
- '23040'
- '23552'
- '24576'
- '24577'
- '24578'
- '24579'
- '24580'
- '24581'
- '24582'
- '24584'
- '24585'
- '24586'
- '24588'
- '24592'
- '24593'
- '24594'
- '24596'
- '24600'
- '24608'
- '24609'
- '24610'
- '24612'
- '24616'
- '24624'
- '24640'
- '24641'
- '24642'
- '24644'
- '24648'
- '24656'
- '24672'
- '24704'
- '24705'
- '24706'
- '24708'
- '24712'
- '24720'
- '24736'
- '24768'
- '24832'
- '24833'
- '24834'
- '24836'
- '24840'
- '24848'
- '24864'
- '24896'
- '24960'
- '25088'
- '25089'
- '25090'
- '25092'
- '25096'
- '25104'
- '25120'
- '25152'
- '25216'
- '25344'
- '25600'
- '25601'
- '25602'
- '25604'
- '25608'
- '25616'
- '25632'
- '25664'
- '25728'
- '25856'
- '26112'
- '26624'
- '26625'
- '26626'
- '26628'
- '26632'
- '26640'
- '26656'
- '26688'
- '26752'
- '26880'
- '27136'
- '27648'
- '28672'
- '28673'
- '28674'
- '28676'
- '28680'
- '28688'
- '28704'
- '28736'
- '28800'
- '28928'
- '29184'
- '29696'
- '30720'
- '32768'
- '32769'
- '32770'
- '32771'
- '32772'
- '32773'
- '32774'
- '32775'
- '32776'
- '32777'
- '32778'
- '32779'
- '32780'
- '32781'
- '32782'
- '32784'
- '32785'
- '32786'
- '32787'
- '32788'
- '32789'
- '32790'
- '32792'
- '32793'
- '32794'
- '32796'
- '32800'
- '32801'
- '32802'
- '32803'
- '32804'
- '32805'
- '32806'
- '32808'
- '32809'
- '32810'
- '32812'
- '32816'
- '32817'
- '32818'
- '32820'
- '32824'
- '32832'
- '32833'
- '32834'
- '32835'
- '32836'
- '32837'
- '32838'
- '32840'
- '32841'
- '32842'
- '32844'
- '32848'
- '32849'
- '32850'
- '32852'
- '32856'
- '32864'
- '32865'
- '32866'
- '32868'
- '32872'
- '32880'
- '32896'
- '32897'
- '32898'
- '32899'
- '32900'
- '32901'
- '32902'
- '32904'
- '32905'
- '32906'
- '32908'
- '32912'
- '32913'
- '32914'
- '32916'
- '32920'
- '32928'
- '32929'
- '32930'
- '32932'
- '32936'
- '32944'
- '32960'
- '32961'
- '32962'
- '32964'
- '32968'
- '32976'
- '32992'
- '33024'
- '33025'
- '33026'
- '33027'
- '33028'
- '33029'
- '33030'
- '33032'
- '33033'
- '33034'
- '33036'
- '33040'
- '33041'
- '33042'
- '33044'
- '33048'
- '33056'
- '33057'
- '33058'
- '33060'
- '33064'
- '33072'
- '33088'
- '33089'
- '33090'
- '33092'
- '33096'
- '33104'
- '33120'
- '33152'
- '33153'
- '33154'
- '33156'
- '33160'
- '33168'
- '33184'
- '33216'
- '33280'
- '33281'
- '33282'
- '33283'
- '33284'
- '33285'
- '33286'
- '33288'
- '33289'
- '33290'
- '33292'
- '33296'
- '33297'
- '33298'
- '33300'
- '33304'
- '33312'
- '33313'
- '33314'
- '33316'
- '33320'
- '33328'
- '33344'
- '33345'
- '33346'
- '33348'
- '33352'
- '33360'
- '33376'
- '33408'
- '33409'
- '33410'
- '33412'
- '33416'
- '33424'
- '33440'
- '33472'
- '33536'
- '33537'
- '33538'
- '33540'
- '33544'
- '33552'
- '33568'
- '33600'
- '33664'
- '33792'
- '33793'
- '33794'
- '33795'
- '33796'
- '33797'
- '33798'
- '33800'
- '33801'
- '33802'
- '33804'
- '33808'
- '33809'
- '33810'
- '33812'
- '33816'
- '33824'
- '33825'
- '33826'
- '33828'
- '33832'
- '33840'
- '33856'
- '33857'
- '33858'
- '33860'
- '33864'
- '33872'
- '33888'
- '33920'
- '33921'
- '33922'
- '33924'
- '33928'
- '33936'
- '33952'
- '33984'
- '34048'
- '34049'
- '34050'
- '34052'
- '34056'
- '34064'
- '34080'
- '34112'
- '34176'
- '34304'
- '34305'
- '34306'
- '34308'
- '34312'
- '34320'
- '34336'
- '34368'
- '34432'
- '34560'
- '34816'
- '34817'
- '34818'
- '34819'
- '34820'
- '34821'
- '34822'
- '34824'
- '34825'
- '34826'
- '34828'
- '34832'
- '34833'
- '34834'
- '34836'
- '34840'
- '34848'
- '34849'
- '34850'
- '34852'
- '34856'
- '34864'
- '34880'
- '34881'
- '34882'
- '34884'
- '34888'
- '34896'
- '34912'
- '34944'
- '34945'
- '34946'
- '34948'
- '34952'
- '34960'
- '34976'
- '35008'
- '35072'
- '35073'
- '35074'
- '35076'
- '35080'
- '35088'
- '35104'
- '35136'
- '35200'
- '35328'
- '35329'
- '35330'
- '35332'
- '35336'
- '35344'
- '35360'
- '35392'
- '35456'
- '35584'
- '35840'
- '35841'
- '35842'
- '35844'
- '35848'
- '35856'
- '35872'
- '35904'
- '35968'
- '36096'
- '36352'
- '36864'
- '36865'
- '36866'
- '36867'
- '36868'
- '36869'
- '36870'
- '36872'
- '36873'
- '36874'
- '36876'
- '36880'
- '36881'
- '36882'
- '36884'
- '36888'
- '36896'
- '36897'
- '36898'
- '36900'
- '36904'
- '36912'
- '36928'
- '36929'
- '36930'
- '36932'
- '36936'
- '36944'
- '36960'
- '36992'
- '36993'
- '36994'
- '36996'
- '37000'
- '37008'
- '37024'
- '37056'
- '37120'
- '37121'
- '37122'
- '37124'
- '37128'
- '37136'
- '37152'
- '37184'
- '37248'
- '37376'
- '37377'
- '37378'
- '37380'
- '37384'
- '37392'
- '37408'
- '37440'
- '37504'
- '37632'
- '37888'
- '37889'
- '37890'
- '37892'
- '37896'
- '37904'
- '37920'
- '37952'
- '38016'
- '38144'
- '38400'
- '38912'
- '38913'
- '38914'
- '38916'
- '38920'
- '38928'
- '38944'
- '38976'
- '39040'
- '39168'
- '39424'
- '39936'
- '40960'
- '40961'
- '40962'
- '40963'
- '40964'
- '40965'
- '40966'
- '40968'
- '40969'
- '40970'
- '40972'
- '40976'
- '40977'
- '40978'
- '40980'
- '40984'
- '40992'
- '40993'
- '40994'
- '40996'
- '41000'
- '41008'
- '41024'
- '41025'
- '41026'
- '41028'
- '41032'
- '41040'
- '41056'
- '41088'
- '41089'
- '41090'
- '41092'
- '41096'
- '41104'
- '41120'
- '41152'
- '41216'
- '41217'
- '41218'
- '41220'
- '41224'
- '41232'
- '41248'
- '41280'
- '41344'
- '41472'
- '41473'
- '41474'
- '41476'
- '41480'
- '41488'
- '41504'
- '41536'
- '41600'
- '41728'
- '41984'
- '41985'
- '41986'
- '41988'
- '41992'
- '42000'
- '42016'
- '42048'
- '42112'
- '42240'
- '42496'
- '43008'
- '43009'
- '43010'
- '43012'
- '43016'
- '43024'
- '43040'
- '43072'
- '43136'
- '43264'
- '43520'
- '44032'
- '45056'
- '45057'
- '45058'
- '45060'
- '45064'
- '45072'
- '45088'
- '45120'
- '45184'
- '45312'
- '45568'
- '46080'
- '47104'
- '49152'
- '49153'
- '49154'
- '49155'
- '49156'
- '49157'
- '49158'
- '49160'
- '49161'
- '49162'
- '49164'
- '49168'
- '49169'
- '49170'
- '49172'
- '49176'
- '49184'
- '49185'
- '49186'
- '49188'
- '49192'
- '49200'
- '49216'
- '49217'
- '49218'
- '49220'
- '49224'
- '49232'
- '49248'
- '49280'
- '49281'
- '49282'
- '49284'
- '49288'
- '49296'
- '49312'
- '49344'
- '49408'
- '49409'
- '49410'
- '49412'
- '49416'
- '49424'
- '49440'
- '49472'
- '49536'
- '49664'
- '49665'
- '49666'
- '49668'
- '49672'
- '49680'
- '49696'
- '49728'
- '49792'
- '49920'
- '50176'
- '50177'
- '50178'
- '50180'
- '50184'
- '50192'
- '50208'
- '50240'
- '50304'
- '50432'
- '50688'
- '51200'
- '51201'
- '51202'
- '51204'
- '51208'
- '51216'
- '51232'
- '51264'
- '51328'
- '51456'
- '51712'
- '52224'
- '53248'
- '53249'
- '53250'
- '53252'
- '53256'
- '53264'
- '53280'
- '53312'
- '53376'
- '53504'
- '53760'
- '54272'
- '55296'
- '57344'
- '57345'
- '57346'
- '57348'
- '57352'
- '57360'
- '57376'
- '57408'
- '57472'
- '57600'
- '57856'
- '58368'
- '59392'
- '61440'
init: null
input_size: null
cmvn_file: null
ctc_conf:
    dropout_rate: 0.0
    ctc_type: builtin
    reduce: true
    ignore_nan_grad: true
joint_net_conf: null
use_preprocessor: true
token_type: char
bpemodel: null
non_linguistic_symbols: null
cleaner: null
g2p: null
speech_volume_normalize: null
rir_scp: null
rir_apply_prob: 1.0
noise_scp: null
noise_apply_prob: 1.0
noise_db_range: '13_15'
specaug: null
specaug_conf: {}
normalize: null
normalize_conf: {}
label_aggregator: null
label_aggregator_conf: {}
model: sond
model_conf:
    lsm_weight: 0.1
    length_normalized_loss: true
    max_spk_num: 16
    normalize_speech_speaker: true
# speech encoder
encoder: resnet34_sp_l2reg
encoder_conf:
    # pass by model, equal to feature dim
    # input_size: 80
    pooling_type: "window_shift"
    batchnorm_momentum: 0.01
    pool_size: 20
    stride: 1
    tf2torch_tensor_name_prefix_torch: encoder
    tf2torch_tensor_name_prefix_tf: EAND/speech_encoder
speaker_encoder: null
speaker_encoder_conf: {}
ci_scorer: conv
ci_scorer_conf:
    input_units: 512
    num_layers: 3
    num_units: 512
    kernel_size: 1
    dropout_rate: 0.0
    position_encoder: null
    out_units: 1
    out_norm: false
    auxiliary_states: false
    tf2torch_tensor_name_prefix_torch: ci_scorer
    tf2torch_tensor_name_prefix_tf: EAND/compute_distance_layer/ci_scorer
cd_scorer: san
cd_scorer_conf:
    input_size: 512
    output_size: 512
    out_units: 1
    attention_heads: 4
    linear_units: 1024
    num_blocks: 4
    dropout_rate: 0.0
    positional_dropout_rate: 0.0
    attention_dropout_rate: 0.0
    # use string "null" to remove input layer
    input_layer: "null"
    pos_enc_class: null
    normalize_before: true
    tf2torch_tensor_name_prefix_torch: cd_scorer
    tf2torch_tensor_name_prefix_tf: EAND/compute_distance_layer/cd_scorer
# post net
decoder: fsmn
decoder_conf:
    in_units: 32
    out_units: 2517
    filter_size: 31
    fsmn_num_layers: 6
    dnn_num_layers: 1
    num_memory_units: 16
    ffn_inner_dim: 512
    dropout_rate: 0.0
    tf2torch_tensor_name_prefix_torch: decoder
    tf2torch_tensor_name_prefix_tf: EAND/post_net
frontend: wav_frontend
frontend_conf:
    fs: 8000
    window: povey
    n_mels: 80
    frame_length: 25
    frame_shift: 10
    filter_length_min: -1
    filter_length_max: -1
    lfr_m: 1
    lfr_n: 1
    dither: 0.0
    snip_edges: false
    upsacle_samples: false
num_worker_count: 1
required:
- output_dir
- token_list
oss_bucket: 'null'
version: 0.1.4
egs/callhome/diarization/sond/sond_fbank.yaml
New file
@@ -0,0 +1,2739 @@
config: finetune.yaml
print_config: false
log_level: INFO
dry_run: false
iterator_type: sequence
output_dir: exp/sond
ngpu: 1
seed: 0
num_workers: 16
num_att_plot: 0
dist_backend: nccl
dist_init_method: env://
dist_world_size: null
dist_rank: null
local_rank: 0
dist_master_addr: null
dist_master_port: null
dist_launcher: null
multiprocessing_distributed: true
distributed: false
unused_parameters: true
sharded_ddp: false
ddp_backend: pytorch_ddp
cudnn_enabled: true
cudnn_benchmark: false
cudnn_deterministic: true
collect_stats: false
write_collected_feats: false
max_epoch: 50
patience: null
val_scheduler_criterion:
- valid
- acc
early_stopping_criterion:
- valid
- loss
- min
best_model_criterion:
-   - valid
    - acc
    - max
keep_nbest_models: 10
nbest_averaging_interval: 0
grad_clip: 5
grad_clip_type: 2.0
grad_noise: false
accum_grad: 1
no_forward_run: false
resume: true
train_dtype: float32
use_amp: false
log_interval: 50
use_matplotlib: false
use_tensorboard: true
use_wandb: false
wandb_project: null
wandb_id: null
wandb_entity: null
wandb_name: null
wandb_model_log_interval: -1
use_pai: true
detect_anomaly: false
pretrain_path: null
init_param: []
ignore_init_mismatch: false
freeze_param: []
num_iters_per_epoch: null
batch_size: 20
valid_batch_size: null
batch_bins: 10000
valid_batch_bins: null
train_shape_file:
- /data/volume1/youyan/aishell/ark/train/speech_shape.1
- /data/volume1/youyan/aishell/ark/train/text_shape.1
valid_shape_file:
- /data/volume1/youyan/aishell/ark/dev/speech_shape.1
- /data/volume1/youyan/aishell/ark/dev/text_shape.1
batch_type: length
valid_batch_type: null
fold_length:
- 512
- 150
sort_in_batch: descending
sort_batch: descending
multiple_iterator: false
chunk_length: 500
chunk_shift_ratio: 0.5
num_cache_chunks: 1024
train_data_path_and_name_and_type:
-   - /data/volume1/youyan/aishell/ark/train/data.scp
    - speech
    - kaldi_ark
-   - /data/volume1/youyan/aishell/ark/train/data.text.1
    - text
    - text
valid_data_path_and_name_and_type:
-   - /data/volume1/youyan/aishell/ark/dev/data.scp
    - speech
    - kaldi_ark
-   - /data/volume1/youyan/aishell/ark/dev/data.text.1
    - text
    - text
allow_variable_data_keys: false
max_cache_size: 0.0
max_cache_fd: 32
valid_max_cache_size: null
optim: adam
optim_conf:
    lr: 0.0005
scheduler: warmuplr
scheduler_conf:
    warmup_steps: 30000
token_list:
- '0'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '9'
- '10'
- '11'
- '12'
- '13'
- '14'
- '15'
- '16'
- '17'
- '18'
- '19'
- '20'
- '21'
- '22'
- '23'
- '24'
- '25'
- '26'
- '27'
- '28'
- '29'
- '30'
- '32'
- '33'
- '34'
- '35'
- '36'
- '37'
- '38'
- '39'
- '40'
- '41'
- '42'
- '43'
- '44'
- '45'
- '46'
- '48'
- '49'
- '50'
- '51'
- '52'
- '53'
- '54'
- '56'
- '57'
- '58'
- '60'
- '64'
- '65'
- '66'
- '67'
- '68'
- '69'
- '70'
- '71'
- '72'
- '73'
- '74'
- '75'
- '76'
- '77'
- '78'
- '80'
- '81'
- '82'
- '83'
- '84'
- '85'
- '86'
- '88'
- '89'
- '90'
- '92'
- '96'
- '97'
- '98'
- '99'
- '100'
- '101'
- '102'
- '104'
- '105'
- '106'
- '108'
- '112'
- '113'
- '114'
- '116'
- '120'
- '128'
- '129'
- '130'
- '131'
- '132'
- '133'
- '134'
- '135'
- '136'
- '137'
- '138'
- '139'
- '140'
- '141'
- '142'
- '144'
- '145'
- '146'
- '147'
- '148'
- '149'
- '150'
- '152'
- '153'
- '154'
- '156'
- '160'
- '161'
- '162'
- '163'
- '164'
- '165'
- '166'
- '168'
- '169'
- '170'
- '172'
- '176'
- '177'
- '178'
- '180'
- '184'
- '192'
- '193'
- '194'
- '195'
- '196'
- '197'
- '198'
- '200'
- '201'
- '202'
- '204'
- '208'
- '209'
- '210'
- '212'
- '216'
- '224'
- '225'
- '226'
- '228'
- '232'
- '240'
- '256'
- '257'
- '258'
- '259'
- '260'
- '261'
- '262'
- '263'
- '264'
- '265'
- '266'
- '267'
- '268'
- '269'
- '270'
- '272'
- '273'
- '274'
- '275'
- '276'
- '277'
- '278'
- '280'
- '281'
- '282'
- '284'
- '288'
- '289'
- '290'
- '291'
- '292'
- '293'
- '294'
- '296'
- '297'
- '298'
- '300'
- '304'
- '305'
- '306'
- '308'
- '312'
- '320'
- '321'
- '322'
- '323'
- '324'
- '325'
- '326'
- '328'
- '329'
- '330'
- '332'
- '336'
- '337'
- '338'
- '340'
- '344'
- '352'
- '353'
- '354'
- '356'
- '360'
- '368'
- '384'
- '385'
- '386'
- '387'
- '388'
- '389'
- '390'
- '392'
- '393'
- '394'
- '396'
- '400'
- '401'
- '402'
- '404'
- '408'
- '416'
- '417'
- '418'
- '420'
- '424'
- '432'
- '448'
- '449'
- '450'
- '452'
- '456'
- '464'
- '480'
- '512'
- '513'
- '514'
- '515'
- '516'
- '517'
- '518'
- '519'
- '520'
- '521'
- '522'
- '523'
- '524'
- '525'
- '526'
- '528'
- '529'
- '530'
- '531'
- '532'
- '533'
- '534'
- '536'
- '537'
- '538'
- '540'
- '544'
- '545'
- '546'
- '547'
- '548'
- '549'
- '550'
- '552'
- '553'
- '554'
- '556'
- '560'
- '561'
- '562'
- '564'
- '568'
- '576'
- '577'
- '578'
- '579'
- '580'
- '581'
- '582'
- '584'
- '585'
- '586'
- '588'
- '592'
- '593'
- '594'
- '596'
- '600'
- '608'
- '609'
- '610'
- '612'
- '616'
- '624'
- '640'
- '641'
- '642'
- '643'
- '644'
- '645'
- '646'
- '648'
- '649'
- '650'
- '652'
- '656'
- '657'
- '658'
- '660'
- '664'
- '672'
- '673'
- '674'
- '676'
- '680'
- '688'
- '704'
- '705'
- '706'
- '708'
- '712'
- '720'
- '736'
- '768'
- '769'
- '770'
- '771'
- '772'
- '773'
- '774'
- '776'
- '777'
- '778'
- '780'
- '784'
- '785'
- '786'
- '788'
- '792'
- '800'
- '801'
- '802'
- '804'
- '808'
- '816'
- '832'
- '833'
- '834'
- '836'
- '840'
- '848'
- '864'
- '896'
- '897'
- '898'
- '900'
- '904'
- '912'
- '928'
- '960'
- '1024'
- '1025'
- '1026'
- '1027'
- '1028'
- '1029'
- '1030'
- '1031'
- '1032'
- '1033'
- '1034'
- '1035'
- '1036'
- '1037'
- '1038'
- '1040'
- '1041'
- '1042'
- '1043'
- '1044'
- '1045'
- '1046'
- '1048'
- '1049'
- '1050'
- '1052'
- '1056'
- '1057'
- '1058'
- '1059'
- '1060'
- '1061'
- '1062'
- '1064'
- '1065'
- '1066'
- '1068'
- '1072'
- '1073'
- '1074'
- '1076'
- '1080'
- '1088'
- '1089'
- '1090'
- '1091'
- '1092'
- '1093'
- '1094'
- '1096'
- '1097'
- '1098'
- '1100'
- '1104'
- '1105'
- '1106'
- '1108'
- '1112'
- '1120'
- '1121'
- '1122'
- '1124'
- '1128'
- '1136'
- '1152'
- '1153'
- '1154'
- '1155'
- '1156'
- '1157'
- '1158'
- '1160'
- '1161'
- '1162'
- '1164'
- '1168'
- '1169'
- '1170'
- '1172'
- '1176'
- '1184'
- '1185'
- '1186'
- '1188'
- '1192'
- '1200'
- '1216'
- '1217'
- '1218'
- '1220'
- '1224'
- '1232'
- '1248'
- '1280'
- '1281'
- '1282'
- '1283'
- '1284'
- '1285'
- '1286'
- '1288'
- '1289'
- '1290'
- '1292'
- '1296'
- '1297'
- '1298'
- '1300'
- '1304'
- '1312'
- '1313'
- '1314'
- '1316'
- '1320'
- '1328'
- '1344'
- '1345'
- '1346'
- '1348'
- '1352'
- '1360'
- '1376'
- '1408'
- '1409'
- '1410'
- '1412'
- '1416'
- '1424'
- '1440'
- '1472'
- '1536'
- '1537'
- '1538'
- '1539'
- '1540'
- '1541'
- '1542'
- '1544'
- '1545'
- '1546'
- '1548'
- '1552'
- '1553'
- '1554'
- '1556'
- '1560'
- '1568'
- '1569'
- '1570'
- '1572'
- '1576'
- '1584'
- '1600'
- '1601'
- '1602'
- '1604'
- '1608'
- '1616'
- '1632'
- '1664'
- '1665'
- '1666'
- '1668'
- '1672'
- '1680'
- '1696'
- '1728'
- '1792'
- '1793'
- '1794'
- '1796'
- '1800'
- '1808'
- '1824'
- '1856'
- '1920'
- '2048'
- '2049'
- '2050'
- '2051'
- '2052'
- '2053'
- '2054'
- '2055'
- '2056'
- '2057'
- '2058'
- '2059'
- '2060'
- '2061'
- '2062'
- '2064'
- '2065'
- '2066'
- '2067'
- '2068'
- '2069'
- '2070'
- '2072'
- '2073'
- '2074'
- '2076'
- '2080'
- '2081'
- '2082'
- '2083'
- '2084'
- '2085'
- '2086'
- '2088'
- '2089'
- '2090'
- '2092'
- '2096'
- '2097'
- '2098'
- '2100'
- '2104'
- '2112'
- '2113'
- '2114'
- '2115'
- '2116'
- '2117'
- '2118'
- '2120'
- '2121'
- '2122'
- '2124'
- '2128'
- '2129'
- '2130'
- '2132'
- '2136'
- '2144'
- '2145'
- '2146'
- '2148'
- '2152'
- '2160'
- '2176'
- '2177'
- '2178'
- '2179'
- '2180'
- '2181'
- '2182'
- '2184'
- '2185'
- '2186'
- '2188'
- '2192'
- '2193'
- '2194'
- '2196'
- '2200'
- '2208'
- '2209'
- '2210'
- '2212'
- '2216'
- '2224'
- '2240'
- '2241'
- '2242'
- '2244'
- '2248'
- '2256'
- '2272'
- '2304'
- '2305'
- '2306'
- '2307'
- '2308'
- '2309'
- '2310'
- '2312'
- '2313'
- '2314'
- '2316'
- '2320'
- '2321'
- '2322'
- '2324'
- '2328'
- '2336'
- '2337'
- '2338'
- '2340'
- '2344'
- '2352'
- '2368'
- '2369'
- '2370'
- '2372'
- '2376'
- '2384'
- '2400'
- '2432'
- '2433'
- '2434'
- '2436'
- '2440'
- '2448'
- '2464'
- '2496'
- '2560'
- '2561'
- '2562'
- '2563'
- '2564'
- '2565'
- '2566'
- '2568'
- '2569'
- '2570'
- '2572'
- '2576'
- '2577'
- '2578'
- '2580'
- '2584'
- '2592'
- '2593'
- '2594'
- '2596'
- '2600'
- '2608'
- '2624'
- '2625'
- '2626'
- '2628'
- '2632'
- '2640'
- '2656'
- '2688'
- '2689'
- '2690'
- '2692'
- '2696'
- '2704'
- '2720'
- '2752'
- '2816'
- '2817'
- '2818'
- '2820'
- '2824'
- '2832'
- '2848'
- '2880'
- '2944'
- '3072'
- '3073'
- '3074'
- '3075'
- '3076'
- '3077'
- '3078'
- '3080'
- '3081'
- '3082'
- '3084'
- '3088'
- '3089'
- '3090'
- '3092'
- '3096'
- '3104'
- '3105'
- '3106'
- '3108'
- '3112'
- '3120'
- '3136'
- '3137'
- '3138'
- '3140'
- '3144'
- '3152'
- '3168'
- '3200'
- '3201'
- '3202'
- '3204'
- '3208'
- '3216'
- '3232'
- '3264'
- '3328'
- '3329'
- '3330'
- '3332'
- '3336'
- '3344'
- '3360'
- '3392'
- '3456'
- '3584'
- '3585'
- '3586'
- '3588'
- '3592'
- '3600'
- '3616'
- '3648'
- '3712'
- '3840'
- '4096'
- '4097'
- '4098'
- '4099'
- '4100'
- '4101'
- '4102'
- '4103'
- '4104'
- '4105'
- '4106'
- '4107'
- '4108'
- '4109'
- '4110'
- '4112'
- '4113'
- '4114'
- '4115'
- '4116'
- '4117'
- '4118'
- '4120'
- '4121'
- '4122'
- '4124'
- '4128'
- '4129'
- '4130'
- '4131'
- '4132'
- '4133'
- '4134'
- '4136'
- '4137'
- '4138'
- '4140'
- '4144'
- '4145'
- '4146'
- '4148'
- '4152'
- '4160'
- '4161'
- '4162'
- '4163'
- '4164'
- '4165'
- '4166'
- '4168'
- '4169'
- '4170'
- '4172'
- '4176'
- '4177'
- '4178'
- '4180'
- '4184'
- '4192'
- '4193'
- '4194'
- '4196'
- '4200'
- '4208'
- '4224'
- '4225'
- '4226'
- '4227'
- '4228'
- '4229'
- '4230'
- '4232'
- '4233'
- '4234'
- '4236'
- '4240'
- '4241'
- '4242'
- '4244'
- '4248'
- '4256'
- '4257'
- '4258'
- '4260'
- '4264'
- '4272'
- '4288'
- '4289'
- '4290'
- '4292'
- '4296'
- '4304'
- '4320'
- '4352'
- '4353'
- '4354'
- '4355'
- '4356'
- '4357'
- '4358'
- '4360'
- '4361'
- '4362'
- '4364'
- '4368'
- '4369'
- '4370'
- '4372'
- '4376'
- '4384'
- '4385'
- '4386'
- '4388'
- '4392'
- '4400'
- '4416'
- '4417'
- '4418'
- '4420'
- '4424'
- '4432'
- '4448'
- '4480'
- '4481'
- '4482'
- '4484'
- '4488'
- '4496'
- '4512'
- '4544'
- '4608'
- '4609'
- '4610'
- '4611'
- '4612'
- '4613'
- '4614'
- '4616'
- '4617'
- '4618'
- '4620'
- '4624'
- '4625'
- '4626'
- '4628'
- '4632'
- '4640'
- '4641'
- '4642'
- '4644'
- '4648'
- '4656'
- '4672'
- '4673'
- '4674'
- '4676'
- '4680'
- '4688'
- '4704'
- '4736'
- '4737'
- '4738'
- '4740'
- '4744'
- '4752'
- '4768'
- '4800'
- '4864'
- '4865'
- '4866'
- '4868'
- '4872'
- '4880'
- '4896'
- '4928'
- '4992'
- '5120'
- '5121'
- '5122'
- '5123'
- '5124'
- '5125'
- '5126'
- '5128'
- '5129'
- '5130'
- '5132'
- '5136'
- '5137'
- '5138'
- '5140'
- '5144'
- '5152'
- '5153'
- '5154'
- '5156'
- '5160'
- '5168'
- '5184'
- '5185'
- '5186'
- '5188'
- '5192'
- '5200'
- '5216'
- '5248'
- '5249'
- '5250'
- '5252'
- '5256'
- '5264'
- '5280'
- '5312'
- '5376'
- '5377'
- '5378'
- '5380'
- '5384'
- '5392'
- '5408'
- '5440'
- '5504'
- '5632'
- '5633'
- '5634'
- '5636'
- '5640'
- '5648'
- '5664'
- '5696'
- '5760'
- '5888'
- '6144'
- '6145'
- '6146'
- '6147'
- '6148'
- '6149'
- '6150'
- '6152'
- '6153'
- '6154'
- '6156'
- '6160'
- '6161'
- '6162'
- '6164'
- '6168'
- '6176'
- '6177'
- '6178'
- '6180'
- '6184'
- '6192'
- '6208'
- '6209'
- '6210'
- '6212'
- '6216'
- '6224'
- '6240'
- '6272'
- '6273'
- '6274'
- '6276'
- '6280'
- '6288'
- '6304'
- '6336'
- '6400'
- '6401'
- '6402'
- '6404'
- '6408'
- '6416'
- '6432'
- '6464'
- '6528'
- '6656'
- '6657'
- '6658'
- '6660'
- '6664'
- '6672'
- '6688'
- '6720'
- '6784'
- '6912'
- '7168'
- '7169'
- '7170'
- '7172'
- '7176'
- '7184'
- '7200'
- '7232'
- '7296'
- '7424'
- '7680'
- '8192'
- '8193'
- '8194'
- '8195'
- '8196'
- '8197'
- '8198'
- '8199'
- '8200'
- '8201'
- '8202'
- '8203'
- '8204'
- '8205'
- '8206'
- '8208'
- '8209'
- '8210'
- '8211'
- '8212'
- '8213'
- '8214'
- '8216'
- '8217'
- '8218'
- '8220'
- '8224'
- '8225'
- '8226'
- '8227'
- '8228'
- '8229'
- '8230'
- '8232'
- '8233'
- '8234'
- '8236'
- '8240'
- '8241'
- '8242'
- '8244'
- '8248'
- '8256'
- '8257'
- '8258'
- '8259'
- '8260'
- '8261'
- '8262'
- '8264'
- '8265'
- '8266'
- '8268'
- '8272'
- '8273'
- '8274'
- '8276'
- '8280'
- '8288'
- '8289'
- '8290'
- '8292'
- '8296'
- '8304'
- '8320'
- '8321'
- '8322'
- '8323'
- '8324'
- '8325'
- '8326'
- '8328'
- '8329'
- '8330'
- '8332'
- '8336'
- '8337'
- '8338'
- '8340'
- '8344'
- '8352'
- '8353'
- '8354'
- '8356'
- '8360'
- '8368'
- '8384'
- '8385'
- '8386'
- '8388'
- '8392'
- '8400'
- '8416'
- '8448'
- '8449'
- '8450'
- '8451'
- '8452'
- '8453'
- '8454'
- '8456'
- '8457'
- '8458'
- '8460'
- '8464'
- '8465'
- '8466'
- '8468'
- '8472'
- '8480'
- '8481'
- '8482'
- '8484'
- '8488'
- '8496'
- '8512'
- '8513'
- '8514'
- '8516'
- '8520'
- '8528'
- '8544'
- '8576'
- '8577'
- '8578'
- '8580'
- '8584'
- '8592'
- '8608'
- '8640'
- '8704'
- '8705'
- '8706'
- '8707'
- '8708'
- '8709'
- '8710'
- '8712'
- '8713'
- '8714'
- '8716'
- '8720'
- '8721'
- '8722'
- '8724'
- '8728'
- '8736'
- '8737'
- '8738'
- '8740'
- '8744'
- '8752'
- '8768'
- '8769'
- '8770'
- '8772'
- '8776'
- '8784'
- '8800'
- '8832'
- '8833'
- '8834'
- '8836'
- '8840'
- '8848'
- '8864'
- '8896'
- '8960'
- '8961'
- '8962'
- '8964'
- '8968'
- '8976'
- '8992'
- '9024'
- '9088'
- '9216'
- '9217'
- '9218'
- '9219'
- '9220'
- '9221'
- '9222'
- '9224'
- '9225'
- '9226'
- '9228'
- '9232'
- '9233'
- '9234'
- '9236'
- '9240'
- '9248'
- '9249'
- '9250'
- '9252'
- '9256'
- '9264'
- '9280'
- '9281'
- '9282'
- '9284'
- '9288'
- '9296'
- '9312'
- '9344'
- '9345'
- '9346'
- '9348'
- '9352'
- '9360'
- '9376'
- '9408'
- '9472'
- '9473'
- '9474'
- '9476'
- '9480'
- '9488'
- '9504'
- '9536'
- '9600'
- '9728'
- '9729'
- '9730'
- '9732'
- '9736'
- '9744'
- '9760'
- '9792'
- '9856'
- '9984'
- '10240'
- '10241'
- '10242'
- '10243'
- '10244'
- '10245'
- '10246'
- '10248'
- '10249'
- '10250'
- '10252'
- '10256'
- '10257'
- '10258'
- '10260'
- '10264'
- '10272'
- '10273'
- '10274'
- '10276'
- '10280'
- '10288'
- '10304'
- '10305'
- '10306'
- '10308'
- '10312'
- '10320'
- '10336'
- '10368'
- '10369'
- '10370'
- '10372'
- '10376'
- '10384'
- '10400'
- '10432'
- '10496'
- '10497'
- '10498'
- '10500'
- '10504'
- '10512'
- '10528'
- '10560'
- '10624'
- '10752'
- '10753'
- '10754'
- '10756'
- '10760'
- '10768'
- '10784'
- '10816'
- '10880'
- '11008'
- '11264'
- '11265'
- '11266'
- '11268'
- '11272'
- '11280'
- '11296'
- '11328'
- '11392'
- '11520'
- '11776'
- '12288'
- '12289'
- '12290'
- '12291'
- '12292'
- '12293'
- '12294'
- '12296'
- '12297'
- '12298'
- '12300'
- '12304'
- '12305'
- '12306'
- '12308'
- '12312'
- '12320'
- '12321'
- '12322'
- '12324'
- '12328'
- '12336'
- '12352'
- '12353'
- '12354'
- '12356'
- '12360'
- '12368'
- '12384'
- '12416'
- '12417'
- '12418'
- '12420'
- '12424'
- '12432'
- '12448'
- '12480'
- '12544'
- '12545'
- '12546'
- '12548'
- '12552'
- '12560'
- '12576'
- '12608'
- '12672'
- '12800'
- '12801'
- '12802'
- '12804'
- '12808'
- '12816'
- '12832'
- '12864'
- '12928'
- '13056'
- '13312'
- '13313'
- '13314'
- '13316'
- '13320'
- '13328'
- '13344'
- '13376'
- '13440'
- '13568'
- '13824'
- '14336'
- '14337'
- '14338'
- '14340'
- '14344'
- '14352'
- '14368'
- '14400'
- '14464'
- '14592'
- '14848'
- '15360'
- '16384'
- '16385'
- '16386'
- '16387'
- '16388'
- '16389'
- '16390'
- '16391'
- '16392'
- '16393'
- '16394'
- '16395'
- '16396'
- '16397'
- '16398'
- '16400'
- '16401'
- '16402'
- '16403'
- '16404'
- '16405'
- '16406'
- '16408'
- '16409'
- '16410'
- '16412'
- '16416'
- '16417'
- '16418'
- '16419'
- '16420'
- '16421'
- '16422'
- '16424'
- '16425'
- '16426'
- '16428'
- '16432'
- '16433'
- '16434'
- '16436'
- '16440'
- '16448'
- '16449'
- '16450'
- '16451'
- '16452'
- '16453'
- '16454'
- '16456'
- '16457'
- '16458'
- '16460'
- '16464'
- '16465'
- '16466'
- '16468'
- '16472'
- '16480'
- '16481'
- '16482'
- '16484'
- '16488'
- '16496'
- '16512'
- '16513'
- '16514'
- '16515'
- '16516'
- '16517'
- '16518'
- '16520'
- '16521'
- '16522'
- '16524'
- '16528'
- '16529'
- '16530'
- '16532'
- '16536'
- '16544'
- '16545'
- '16546'
- '16548'
- '16552'
- '16560'
- '16576'
- '16577'
- '16578'
- '16580'
- '16584'
- '16592'
- '16608'
- '16640'
- '16641'
- '16642'
- '16643'
- '16644'
- '16645'
- '16646'
- '16648'
- '16649'
- '16650'
- '16652'
- '16656'
- '16657'
- '16658'
- '16660'
- '16664'
- '16672'
- '16673'
- '16674'
- '16676'
- '16680'
- '16688'
- '16704'
- '16705'
- '16706'
- '16708'
- '16712'
- '16720'
- '16736'
- '16768'
- '16769'
- '16770'
- '16772'
- '16776'
- '16784'
- '16800'
- '16832'
- '16896'
- '16897'
- '16898'
- '16899'
- '16900'
- '16901'
- '16902'
- '16904'
- '16905'
- '16906'
- '16908'
- '16912'
- '16913'
- '16914'
- '16916'
- '16920'
- '16928'
- '16929'
- '16930'
- '16932'
- '16936'
- '16944'
- '16960'
- '16961'
- '16962'
- '16964'
- '16968'
- '16976'
- '16992'
- '17024'
- '17025'
- '17026'
- '17028'
- '17032'
- '17040'
- '17056'
- '17088'
- '17152'
- '17153'
- '17154'
- '17156'
- '17160'
- '17168'
- '17184'
- '17216'
- '17280'
- '17408'
- '17409'
- '17410'
- '17411'
- '17412'
- '17413'
- '17414'
- '17416'
- '17417'
- '17418'
- '17420'
- '17424'
- '17425'
- '17426'
- '17428'
- '17432'
- '17440'
- '17441'
- '17442'
- '17444'
- '17448'
- '17456'
- '17472'
- '17473'
- '17474'
- '17476'
- '17480'
- '17488'
- '17504'
- '17536'
- '17537'
- '17538'
- '17540'
- '17544'
- '17552'
- '17568'
- '17600'
- '17664'
- '17665'
- '17666'
- '17668'
- '17672'
- '17680'
- '17696'
- '17728'
- '17792'
- '17920'
- '17921'
- '17922'
- '17924'
- '17928'
- '17936'
- '17952'
- '17984'
- '18048'
- '18176'
- '18432'
- '18433'
- '18434'
- '18435'
- '18436'
- '18437'
- '18438'
- '18440'
- '18441'
- '18442'
- '18444'
- '18448'
- '18449'
- '18450'
- '18452'
- '18456'
- '18464'
- '18465'
- '18466'
- '18468'
- '18472'
- '18480'
- '18496'
- '18497'
- '18498'
- '18500'
- '18504'
- '18512'
- '18528'
- '18560'
- '18561'
- '18562'
- '18564'
- '18568'
- '18576'
- '18592'
- '18624'
- '18688'
- '18689'
- '18690'
- '18692'
- '18696'
- '18704'
- '18720'
- '18752'
- '18816'
- '18944'
- '18945'
- '18946'
- '18948'
- '18952'
- '18960'
- '18976'
- '19008'
- '19072'
- '19200'
- '19456'
- '19457'
- '19458'
- '19460'
- '19464'
- '19472'
- '19488'
- '19520'
- '19584'
- '19712'
- '19968'
- '20480'
- '20481'
- '20482'
- '20483'
- '20484'
- '20485'
- '20486'
- '20488'
- '20489'
- '20490'
- '20492'
- '20496'
- '20497'
- '20498'
- '20500'
- '20504'
- '20512'
- '20513'
- '20514'
- '20516'
- '20520'
- '20528'
- '20544'
- '20545'
- '20546'
- '20548'
- '20552'
- '20560'
- '20576'
- '20608'
- '20609'
- '20610'
- '20612'
- '20616'
- '20624'
- '20640'
- '20672'
- '20736'
- '20737'
- '20738'
- '20740'
- '20744'
- '20752'
- '20768'
- '20800'
- '20864'
- '20992'
- '20993'
- '20994'
- '20996'
- '21000'
- '21008'
- '21024'
- '21056'
- '21120'
- '21248'
- '21504'
- '21505'
- '21506'
- '21508'
- '21512'
- '21520'
- '21536'
- '21568'
- '21632'
- '21760'
- '22016'
- '22528'
- '22529'
- '22530'
- '22532'
- '22536'
- '22544'
- '22560'
- '22592'
- '22656'
- '22784'
- '23040'
- '23552'
- '24576'
- '24577'
- '24578'
- '24579'
- '24580'
- '24581'
- '24582'
- '24584'
- '24585'
- '24586'
- '24588'
- '24592'
- '24593'
- '24594'
- '24596'
- '24600'
- '24608'
- '24609'
- '24610'
- '24612'
- '24616'
- '24624'
- '24640'
- '24641'
- '24642'
- '24644'
- '24648'
- '24656'
- '24672'
- '24704'
- '24705'
- '24706'
- '24708'
- '24712'
- '24720'
- '24736'
- '24768'
- '24832'
- '24833'
- '24834'
- '24836'
- '24840'
- '24848'
- '24864'
- '24896'
- '24960'
- '25088'
- '25089'
- '25090'
- '25092'
- '25096'
- '25104'
- '25120'
- '25152'
- '25216'
- '25344'
- '25600'
- '25601'
- '25602'
- '25604'
- '25608'
- '25616'
- '25632'
- '25664'
- '25728'
- '25856'
- '26112'
- '26624'
- '26625'
- '26626'
- '26628'
- '26632'
- '26640'
- '26656'
- '26688'
- '26752'
- '26880'
- '27136'
- '27648'
- '28672'
- '28673'
- '28674'
- '28676'
- '28680'
- '28688'
- '28704'
- '28736'
- '28800'
- '28928'
- '29184'
- '29696'
- '30720'
- '32768'
- '32769'
- '32770'
- '32771'
- '32772'
- '32773'
- '32774'
- '32775'
- '32776'
- '32777'
- '32778'
- '32779'
- '32780'
- '32781'
- '32782'
- '32784'
- '32785'
- '32786'
- '32787'
- '32788'
- '32789'
- '32790'
- '32792'
- '32793'
- '32794'
- '32796'
- '32800'
- '32801'
- '32802'
- '32803'
- '32804'
- '32805'
- '32806'
- '32808'
- '32809'
- '32810'
- '32812'
- '32816'
- '32817'
- '32818'
- '32820'
- '32824'
- '32832'
- '32833'
- '32834'
- '32835'
- '32836'
- '32837'
- '32838'
- '32840'
- '32841'
- '32842'
- '32844'
- '32848'
- '32849'
- '32850'
- '32852'
- '32856'
- '32864'
- '32865'
- '32866'
- '32868'
- '32872'
- '32880'
- '32896'
- '32897'
- '32898'
- '32899'
- '32900'
- '32901'
- '32902'
- '32904'
- '32905'
- '32906'
- '32908'
- '32912'
- '32913'
- '32914'
- '32916'
- '32920'
- '32928'
- '32929'
- '32930'
- '32932'
- '32936'
- '32944'
- '32960'
- '32961'
- '32962'
- '32964'
- '32968'
- '32976'
- '32992'
- '33024'
- '33025'
- '33026'
- '33027'
- '33028'
- '33029'
- '33030'
- '33032'
- '33033'
- '33034'
- '33036'
- '33040'
- '33041'
- '33042'
- '33044'
- '33048'
- '33056'
- '33057'
- '33058'
- '33060'
- '33064'
- '33072'
- '33088'
- '33089'
- '33090'
- '33092'
- '33096'
- '33104'
- '33120'
- '33152'
- '33153'
- '33154'
- '33156'
- '33160'
- '33168'
- '33184'
- '33216'
- '33280'
- '33281'
- '33282'
- '33283'
- '33284'
- '33285'
- '33286'
- '33288'
- '33289'
- '33290'
- '33292'
- '33296'
- '33297'
- '33298'
- '33300'
- '33304'
- '33312'
- '33313'
- '33314'
- '33316'
- '33320'
- '33328'
- '33344'
- '33345'
- '33346'
- '33348'
- '33352'
- '33360'
- '33376'
- '33408'
- '33409'
- '33410'
- '33412'
- '33416'
- '33424'
- '33440'
- '33472'
- '33536'
- '33537'
- '33538'
- '33540'
- '33544'
- '33552'
- '33568'
- '33600'
- '33664'
- '33792'
- '33793'
- '33794'
- '33795'
- '33796'
- '33797'
- '33798'
- '33800'
- '33801'
- '33802'
- '33804'
- '33808'
- '33809'
- '33810'
- '33812'
- '33816'
- '33824'
- '33825'
- '33826'
- '33828'
- '33832'
- '33840'
- '33856'
- '33857'
- '33858'
- '33860'
- '33864'
- '33872'
- '33888'
- '33920'
- '33921'
- '33922'
- '33924'
- '33928'
- '33936'
- '33952'
- '33984'
- '34048'
- '34049'
- '34050'
- '34052'
- '34056'
- '34064'
- '34080'
- '34112'
- '34176'
- '34304'
- '34305'
- '34306'
- '34308'
- '34312'
- '34320'
- '34336'
- '34368'
- '34432'
- '34560'
- '34816'
- '34817'
- '34818'
- '34819'
- '34820'
- '34821'
- '34822'
- '34824'
- '34825'
- '34826'
- '34828'
- '34832'
- '34833'
- '34834'
- '34836'
- '34840'
- '34848'
- '34849'
- '34850'
- '34852'
- '34856'
- '34864'
- '34880'
- '34881'
- '34882'
- '34884'
- '34888'
- '34896'
- '34912'
- '34944'
- '34945'
- '34946'
- '34948'
- '34952'
- '34960'
- '34976'
- '35008'
- '35072'
- '35073'
- '35074'
- '35076'
- '35080'
- '35088'
- '35104'
- '35136'
- '35200'
- '35328'
- '35329'
- '35330'
- '35332'
- '35336'
- '35344'
- '35360'
- '35392'
- '35456'
- '35584'
- '35840'
- '35841'
- '35842'
- '35844'
- '35848'
- '35856'
- '35872'
- '35904'
- '35968'
- '36096'
- '36352'
- '36864'
- '36865'
- '36866'
- '36867'
- '36868'
- '36869'
- '36870'
- '36872'
- '36873'
- '36874'
- '36876'
- '36880'
- '36881'
- '36882'
- '36884'
- '36888'
- '36896'
- '36897'
- '36898'
- '36900'
- '36904'
- '36912'
- '36928'
- '36929'
- '36930'
- '36932'
- '36936'
- '36944'
- '36960'
- '36992'
- '36993'
- '36994'
- '36996'
- '37000'
- '37008'
- '37024'
- '37056'
- '37120'
- '37121'
- '37122'
- '37124'
- '37128'
- '37136'
- '37152'
- '37184'
- '37248'
- '37376'
- '37377'
- '37378'
- '37380'
- '37384'
- '37392'
- '37408'
- '37440'
- '37504'
- '37632'
- '37888'
- '37889'
- '37890'
- '37892'
- '37896'
- '37904'
- '37920'
- '37952'
- '38016'
- '38144'
- '38400'
- '38912'
- '38913'
- '38914'
- '38916'
- '38920'
- '38928'
- '38944'
- '38976'
- '39040'
- '39168'
- '39424'
- '39936'
- '40960'
- '40961'
- '40962'
- '40963'
- '40964'
- '40965'
- '40966'
- '40968'
- '40969'
- '40970'
- '40972'
- '40976'
- '40977'
- '40978'
- '40980'
- '40984'
- '40992'
- '40993'
- '40994'
- '40996'
- '41000'
- '41008'
- '41024'
- '41025'
- '41026'
- '41028'
- '41032'
- '41040'
- '41056'
- '41088'
- '41089'
- '41090'
- '41092'
- '41096'
- '41104'
- '41120'
- '41152'
- '41216'
- '41217'
- '41218'
- '41220'
- '41224'
- '41232'
- '41248'
- '41280'
- '41344'
- '41472'
- '41473'
- '41474'
- '41476'
- '41480'
- '41488'
- '41504'
- '41536'
- '41600'
- '41728'
- '41984'
- '41985'
- '41986'
- '41988'
- '41992'
- '42000'
- '42016'
- '42048'
- '42112'
- '42240'
- '42496'
- '43008'
- '43009'
- '43010'
- '43012'
- '43016'
- '43024'
- '43040'
- '43072'
- '43136'
- '43264'
- '43520'
- '44032'
- '45056'
- '45057'
- '45058'
- '45060'
- '45064'
- '45072'
- '45088'
- '45120'
- '45184'
- '45312'
- '45568'
- '46080'
- '47104'
- '49152'
- '49153'
- '49154'
- '49155'
- '49156'
- '49157'
- '49158'
- '49160'
- '49161'
- '49162'
- '49164'
- '49168'
- '49169'
- '49170'
- '49172'
- '49176'
- '49184'
- '49185'
- '49186'
- '49188'
- '49192'
- '49200'
- '49216'
- '49217'
- '49218'
- '49220'
- '49224'
- '49232'
- '49248'
- '49280'
- '49281'
- '49282'
- '49284'
- '49288'
- '49296'
- '49312'
- '49344'
- '49408'
- '49409'
- '49410'
- '49412'
- '49416'
- '49424'
- '49440'
- '49472'
- '49536'
- '49664'
- '49665'
- '49666'
- '49668'
- '49672'
- '49680'
- '49696'
- '49728'
- '49792'
- '49920'
- '50176'
- '50177'
- '50178'
- '50180'
- '50184'
- '50192'
- '50208'
- '50240'
- '50304'
- '50432'
- '50688'
- '51200'
- '51201'
- '51202'
- '51204'
- '51208'
- '51216'
- '51232'
- '51264'
- '51328'
- '51456'
- '51712'
- '52224'
- '53248'
- '53249'
- '53250'
- '53252'
- '53256'
- '53264'
- '53280'
- '53312'
- '53376'
- '53504'
- '53760'
- '54272'
- '55296'
- '57344'
- '57345'
- '57346'
- '57348'
- '57352'
- '57360'
- '57376'
- '57408'
- '57472'
- '57600'
- '57856'
- '58368'
- '59392'
- '61440'
init: null
input_size: 80
cmvn_file: null
ctc_conf:
    dropout_rate: 0.0
    ctc_type: builtin
    reduce: true
    ignore_nan_grad: true
joint_net_conf: null
use_preprocessor: true
token_type: char
bpemodel: null
non_linguistic_symbols: null
cleaner: null
g2p: null
speech_volume_normalize: null
rir_scp: null
rir_apply_prob: 1.0
noise_scp: null
noise_apply_prob: 1.0
noise_db_range: '13_15'
specaug: null
specaug_conf: {}
normalize: null
normalize_conf: {}
label_aggregator: null
label_aggregator_conf: {}
model: sond
model_conf:
    lsm_weight: 0.1
    length_normalized_loss: true
    max_spk_num: 16
    normalize_speech_speaker: true
# speech encoder
encoder: resnet34_sp_l2reg
encoder_conf:
    # pass by model, equal to feature dim
    # input_size: 80
    batchnorm_momentum: 0.01
    pooling_type: "window_shift"
    pool_size: 20
    stride: 1
    tf2torch_tensor_name_prefix_torch: encoder
    tf2torch_tensor_name_prefix_tf: EAND/speech_encoder
speaker_encoder: null
speaker_encoder_conf: {}
ci_scorer: conv
ci_scorer_conf:
    input_units: 512
    num_layers: 3
    num_units: 512
    kernel_size: 1
    dropout_rate: 0.0
    position_encoder: null
    out_units: 1
    out_norm: false
    auxiliary_states: false
    tf2torch_tensor_name_prefix_torch: ci_scorer
    tf2torch_tensor_name_prefix_tf: EAND/compute_distance_layer/ci_scorer
cd_scorer: san
cd_scorer_conf:
    input_size: 512
    output_size: 512
    out_units: 1
    attention_heads: 4
    linear_units: 1024
    num_blocks: 4
    dropout_rate: 0.0
    positional_dropout_rate: 0.0
    attention_dropout_rate: 0.0
    # use string "null" to remove input layer
    input_layer: "null"
    pos_enc_class: null
    normalize_before: true
    tf2torch_tensor_name_prefix_torch: cd_scorer
    tf2torch_tensor_name_prefix_tf: EAND/compute_distance_layer/cd_scorer
# post net
decoder: fsmn
decoder_conf:
    in_units: 32
    out_units: 2517
    filter_size: 31
    fsmn_num_layers: 6
    dnn_num_layers: 1
    num_memory_units: 16
    ffn_inner_dim: 512
    dropout_rate: 0.0
    tf2torch_tensor_name_prefix_torch: decoder
    tf2torch_tensor_name_prefix_tf: EAND/post_net
frontend: null
frontend_conf:
    fs: 8000
    window: povey
    n_mels: 80
    frame_length: 25
    frame_shift: 10
    filter_length_min: -1
    filter_length_max: -1
    lfr_m: 1
    lfr_n: 1
    dither: 0.0
    snip_edges: false
    upsacle_samples: false
num_worker_count: 0
required:
- output_dir
- token_list
oss_bucket: 'null'
version: 0.1.4
egs/callhome/diarization/sond/unit_test.py
New file
@@ -0,0 +1,97 @@
from funasr.bin.diar_inference_launch import inference_launch
import os
def test_fbank_cpu_infer():
    diar_config_path = "sond_fbank.yaml"
    diar_model_path = "sond.pth"
    output_dir = "./outputs"
    data_path_and_name_and_type = [
        ("data/unit_test/test_feats.scp", "speech", "kaldi_ark"),
        ("data/unit_test/test_profile.scp", "profile", "kaldi_ark"),
    ]
    pipeline = inference_launch(
        mode="sond",
        diar_train_config=diar_config_path,
        diar_model_file=diar_model_path,
        output_dir=output_dir,
        num_workers=0,
        log_level="INFO",
    )
    results = pipeline(data_path_and_name_and_type)
    print(results)
def test_fbank_gpu_infer():
    diar_config_path = "sond_fbank.yaml"
    diar_model_path = "sond.pth"
    output_dir = "./outputs"
    data_path_and_name_and_type = [
        ("data/unit_test/test_feats.scp", "speech", "kaldi_ark"),
        ("data/unit_test/test_profile.scp", "profile", "kaldi_ark"),
    ]
    pipeline = inference_launch(
        mode="sond",
        diar_train_config=diar_config_path,
        diar_model_file=diar_model_path,
        output_dir=output_dir,
        ngpu=1,
        num_workers=1,
        log_level="INFO",
    )
    results = pipeline(data_path_and_name_and_type)
    print(results)
def test_wav_gpu_infer():
    diar_config_path = "config.yaml"
    diar_model_path = "sond.pth"
    output_dir = "./outputs"
    data_path_and_name_and_type = [
        ("data/unit_test/test_wav.scp", "speech", "sound"),
        ("data/unit_test/test_profile.scp", "profile", "kaldi_ark"),
    ]
    pipeline = inference_launch(
        mode="sond",
        diar_train_config=diar_config_path,
        diar_model_file=diar_model_path,
        output_dir=output_dir,
        ngpu=1,
        num_workers=1,
        log_level="WARNING",
    )
    results = pipeline(data_path_and_name_and_type)
    print(results)
def test_without_profile_gpu_infer():
    diar_config_path = "config.yaml"
    diar_model_path = "sond.pth"
    output_dir = "./outputs"
    raw_inputs = [[
        "data/unit_test/raw_inputs/record.wav",
        "data/unit_test/raw_inputs/spk1.wav",
        "data/unit_test/raw_inputs/spk2.wav",
        "data/unit_test/raw_inputs/spk3.wav",
        "data/unit_test/raw_inputs/spk4.wav"
    ]]
    pipeline = inference_launch(
        mode="sond_demo",
        diar_train_config=diar_config_path,
        diar_model_file=diar_model_path,
        output_dir=output_dir,
        ngpu=1,
        num_workers=1,
        log_level="WARNING",
        param_dict={},
    )
    results = pipeline(raw_inputs=raw_inputs)
    print(results)
if __name__ == '__main__':
    os.environ["CUDA_VISIBLE_DEVICES"] = "7"
    test_fbank_cpu_infer()
    # test_fbank_gpu_infer()
    # test_wav_gpu_infer()
    # test_without_profile_gpu_infer()
egs_modelscope/speaker_verification/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch/infer.py
New file
@@ -0,0 +1,39 @@
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
import numpy as np
if __name__ == '__main__':
    inference_sv_pipline = pipeline(
        task=Tasks.speaker_verification,
        model='damo/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch'
    )
    # extract speaker embedding
    # for url use "spk_embedding" as key
    rec_result = inference_sv_pipline(
        audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/sv_example_enroll.wav')
    enroll = rec_result["spk_embedding"]
    # for local file use "spk_embedding" as key
    rec_result = inference_sv_pipline(audio_in='example/sv_example_same.wav')
    same = rec_result["spk_embedding"]
    import soundfile
    wav = soundfile.read('example/sv_example_enroll.wav')[0]
    # for raw inputs use "spk_embedding" as key
    spk_embedding = inference_sv_pipline(audio_in=wav)["spk_embedding"]
    rec_result = inference_sv_pipline(
        audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/sv_example_different.wav')
    different = rec_result["spk_embedding"]
    # calculate cosine similarity for same speaker
    sv_threshold = 0.80
    same_cos = np.sum(enroll * same) / (np.linalg.norm(enroll) * np.linalg.norm(same))
    same_cos = max(same_cos - sv_threshold, 0.0) / (1.0 - sv_threshold) * 100.0
    print("Similarity:", same_cos)
    # calculate cosine similarity for different speaker
    diff_cos = np.sum(enroll * different) / (np.linalg.norm(enroll) * np.linalg.norm(different))
    diff_cos = max(diff_cos - sv_threshold, 0.0) / (1.0 - sv_threshold) * 100.0
    print("Similarity:", diff_cos)
egs_modelscope/speaker_verification/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch/infer_sv.py
New file
@@ -0,0 +1,21 @@
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
if __name__ == '__main__':
    inference_sv_pipline = pipeline(
        task=Tasks.speaker_verification,
        model='damo/speech_xvector_sv-en-us-callhome-8k-spk6135-pytorch'
    )
    # the same speaker
    rec_result = inference_sv_pipline(audio_in=(
        'https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/sv_example_enroll.wav',
        'https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/sv_example_same.wav'))
    print("Similarity", rec_result["scores"])
    # different speakers
    rec_result = inference_sv_pipline(audio_in=(
        'https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/sv_example_enroll.wav',
        'https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_data/sv_example_different.wav'))
    print("Similarity", rec_result["scores"])
egs_modelscope/speaker_verification/speech_xvector_sv-zh-cn-cnceleb-16k-spk3465-pytorch/infer.py
@@ -9,14 +9,20 @@
    )
    # 提取不同句子的说话人嵌入码
    # for url use "utt_id" as key
    rec_result = inference_sv_pipline(
        audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_enroll.wav')
    enroll = rec_result["spk_embedding"]
    rec_result = inference_sv_pipline(
        audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_same.wav')
    # for local file use "utt_id" as key
    rec_result = inference_sv_pipline(audio_in='sv_example_same.wav')["test1"]
    same = rec_result["spk_embedding"]
    import soundfile
    wav = soundfile.read('sv_example_enroll.wav')[0]
    # for raw inputs use "utt_id" as key
    spk_embedding = inference_sv_pipline(audio_in=wav)["spk_embedding"]
    rec_result = inference_sv_pipline(
        audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/test_audio/sv_example_different.wav')
    different = rec_result["spk_embedding"]
funasr/models/e2e_diar_sond.py
@@ -342,6 +342,7 @@
        if isinstance(self.ci_scorer, AbsEncoder):
            ci_simi = self.ci_scorer(ge_in, ge_len)[0]
            ci_simi = torch.reshape(ci_simi, [bb, self.max_spk_num, tt]).permute([0, 2, 1])
        else:
            ci_simi = self.ci_scorer(speech_encoder_outputs, speaker_encoder_outputs)
funasr/models/encoder/opennmt_encoders/conv_encoder.py
@@ -137,12 +137,12 @@
            self.out_padding = nn.ConstantPad1d((left_padding, right_padding), 0.0)
            self.conv_out = nn.Conv1d(
                num_units,
                num_units,
                out_units,
                kernel_size,
        )
        if self.out_norm:
            self.after_norm = LayerNorm(num_units)
            self.after_norm = LayerNorm(out_units)
    def output_size(self) -> int:
        return self.num_units
funasr/models/encoder/opennmt_encoders/self_attention_encoder.py
@@ -272,7 +272,7 @@
            position embedded tensor and mask
        """
        masks = (~make_pad_mask(ilens)[:, None, :]).to(xs_pad.device)
        xs_pad *= self.output_size()**0.5
        xs_pad = xs_pad * self.output_size()**0.5
        if self.embed is None:
            xs_pad = xs_pad
        elif (
funasr/models/encoder/resnet34_encoder.py
@@ -387,7 +387,6 @@
        return var_dict_torch_update
class ResNet34Diar(ResNet34):
    def __init__(
            self,
@@ -613,3 +612,230 @@
                    logging.warning("{} is missed from tf checkpoint".format(name))
        return var_dict_torch_update
class ResNet34SpL2RegDiar(ResNet34_SP_L2Reg):
    def __init__(
            self,
            input_size,
            embedding_node="resnet1_dense",
            use_head_conv=True,
            batchnorm_momentum=0.5,
            use_head_maxpool=False,
            num_nodes_pooling_layer=256,
            layers_in_block=(3, 4, 6, 3),
            filters_in_block=(32, 64, 128, 256),
            num_nodes_resnet1=256,
            num_nodes_last_layer=256,
            pooling_type="window_shift",
            pool_size=20,
            stride=1,
            tf2torch_tensor_name_prefix_torch="encoder",
            tf2torch_tensor_name_prefix_tf="seq2seq/speech_encoder"
    ):
        super(ResNet34SpL2RegDiar, self).__init__(
            input_size,
            use_head_conv=use_head_conv,
            batchnorm_momentum=batchnorm_momentum,
            use_head_maxpool=use_head_maxpool,
            num_nodes_pooling_layer=num_nodes_pooling_layer,
            layers_in_block=layers_in_block,
            filters_in_block=filters_in_block,
        )
        self.embedding_node = embedding_node
        self.num_nodes_resnet1 = num_nodes_resnet1
        self.num_nodes_last_layer = num_nodes_last_layer
        self.pooling_type = pooling_type
        self.pool_size = pool_size
        self.stride = stride
        self.tf2torch_tensor_name_prefix_torch = tf2torch_tensor_name_prefix_torch
        self.tf2torch_tensor_name_prefix_tf = tf2torch_tensor_name_prefix_tf
        self.resnet1_dense = torch.nn.Linear(num_nodes_pooling_layer * 2, num_nodes_resnet1)
        self.resnet1_bn = torch.nn.BatchNorm1d(num_nodes_resnet1, eps=1e-3, momentum=batchnorm_momentum)
        self.resnet2_dense = torch.nn.Linear(num_nodes_resnet1, num_nodes_last_layer)
        self.resnet2_bn = torch.nn.BatchNorm1d(num_nodes_last_layer, eps=1e-3, momentum=batchnorm_momentum)
    def output_size(self) -> int:
        if self.embedding_node.startswith("resnet1"):
            return self.num_nodes_resnet1
        elif self.embedding_node.startswith("resnet2"):
            return self.num_nodes_last_layer
        return self.num_nodes_pooling_layer
    def forward(
            self,
            xs_pad: torch.Tensor,
            ilens: torch.Tensor,
            prev_states: torch.Tensor = None,
    ) -> Tuple[torch.Tensor, torch.Tensor, Optional[torch.Tensor]]:
        endpoints = OrderedDict()
        res_out, ilens = super().forward(xs_pad, ilens)
        endpoints["resnet0_bn"] = res_out
        if self.pooling_type == "frame_gsp":
            features = statistic_pooling(res_out, ilens, (2, ))
        else:
            features, ilens = windowed_statistic_pooling(res_out, ilens, (2, ), self.pool_size, self.stride)
        features = features.transpose(1, 2)
        endpoints["pooling"] = features
        features = self.resnet1_dense(features)
        endpoints["resnet1_dense"] = features
        features = F.relu(features)
        endpoints["resnet1_relu"] = features
        features = self.resnet1_bn(features.transpose(1, 2)).transpose(1, 2)
        endpoints["resnet1_bn"] = features
        features = self.resnet2_dense(features)
        endpoints["resnet2_dense"] = features
        features = F.relu(features)
        endpoints["resnet2_relu"] = features
        features = self.resnet2_bn(features.transpose(1, 2)).transpose(1, 2)
        endpoints["resnet2_bn"] = features
        return endpoints[self.embedding_node], ilens, None
    def gen_tf2torch_map_dict(self):
        tensor_name_prefix_torch = self.tf2torch_tensor_name_prefix_torch
        tensor_name_prefix_tf = self.tf2torch_tensor_name_prefix_tf
        train_steps = 720000
        map_dict_local = {
            # torch: conv1d.weight in "out_channel in_channel kernel_size"
            # tf   : conv1d.weight in "kernel_size in_channel out_channel"
            # torch: linear.weight in "out_channel in_channel"
            # tf   :  dense.weight in "in_channel out_channel"
            "{}.pre_conv.weight".format(tensor_name_prefix_torch):
                {"name": "{}/pre_conv/kernel".format(tensor_name_prefix_tf),
                 "squeeze": None,
                 "transpose": (3, 2, 0, 1),
                 },
            "{}.pre_conv_bn.bias".format(tensor_name_prefix_torch):
                {"name": "{}/pre_conv_bn/beta".format(tensor_name_prefix_tf),
                 "squeeze": None,
                 "transpose": None,
                 },
            "{}.pre_conv_bn.weight".format(tensor_name_prefix_torch):
                {"name": "{}/pre_conv_bn/gamma".format(tensor_name_prefix_tf),
                 "squeeze": None,
                 "transpose": None,
                 },
            "{}.pre_conv_bn.running_mean".format(tensor_name_prefix_torch):
                {"name": "{}/pre_conv_bn/moving_mean".format(tensor_name_prefix_tf),
                 "squeeze": None,
                 "transpose": None,
                 },
            "{}.pre_conv_bn.running_var".format(tensor_name_prefix_torch):
                {"name": "{}/pre_conv_bn/moving_variance".format(tensor_name_prefix_tf),
                 "squeeze": None,
                 "transpose": None,
                 },
            "{}.pre_conv_bn.num_batches_tracked".format(tensor_name_prefix_torch): train_steps
        }
        for layer_idx in range(3):
            map_dict_local.update({
                "{}.resnet{}_dense.weight".format(tensor_name_prefix_torch, layer_idx):
                    {"name": "{}/resnet{}_dense/kernel".format(tensor_name_prefix_tf, layer_idx),
                     "squeeze": None,
                     "transpose": (2, 1, 0) if layer_idx == 0 else (1, 0),
                     },
                "{}.resnet{}_dense.bias".format(tensor_name_prefix_torch, layer_idx):
                    {"name": "{}/resnet{}_dense/bias".format(tensor_name_prefix_tf, layer_idx),
                     "squeeze": None,
                     "transpose": None,
                     },
                "{}.resnet{}_bn.weight".format(tensor_name_prefix_torch, layer_idx):
                    {"name": "{}/resnet{}_bn/gamma".format(tensor_name_prefix_tf, layer_idx),
                     "squeeze": None,
                     "transpose": None,
                     },
                "{}.resnet{}_bn.bias".format(tensor_name_prefix_torch, layer_idx):
                    {"name": "{}/resnet{}_bn/beta".format(tensor_name_prefix_tf, layer_idx),
                     "squeeze": None,
                     "transpose": None,
                     },
                "{}.resnet{}_bn.running_mean".format(tensor_name_prefix_torch, layer_idx):
                    {"name": "{}/resnet{}_bn/moving_mean".format(tensor_name_prefix_tf, layer_idx),
                     "squeeze": None,
                     "transpose": None,
                     },
                "{}.resnet{}_bn.running_var".format(tensor_name_prefix_torch, layer_idx):
                    {"name": "{}/resnet{}_bn/moving_variance".format(tensor_name_prefix_tf, layer_idx),
                     "squeeze": None,
                     "transpose": None,
                     },
                "{}.resnet{}_bn.num_batches_tracked".format(tensor_name_prefix_torch, layer_idx): train_steps
            })
        for block_idx in range(len(self.layers_in_block)):
            for layer_idx in range(self.layers_in_block[block_idx]):
                for i in ["1", "2", "_sc"]:
                    map_dict_local.update({
                        "{}.block_{}.layer_{}.conv{}.weight".format(tensor_name_prefix_torch, block_idx, layer_idx, i):
                            {"name": "{}/block_{}/layer_{}/conv{}/kernel".format(tensor_name_prefix_tf, block_idx, layer_idx, i),
                             "squeeze": None,
                             "transpose": (3, 2, 0, 1),
                             },
                        "{}.block_{}.layer_{}.bn{}.weight".format(tensor_name_prefix_torch, block_idx, layer_idx, i):
                            {"name": "{}/block_{}/layer_{}/bn{}/gamma".format(tensor_name_prefix_tf, block_idx, layer_idx, i),
                             "squeeze": None,
                             "transpose": None,
                             },
                        "{}.block_{}.layer_{}.bn{}.bias".format(tensor_name_prefix_torch, block_idx, layer_idx, i):
                            {"name": "{}/block_{}/layer_{}/bn{}/beta".format(tensor_name_prefix_tf, block_idx, layer_idx, i),
                             "squeeze": None,
                             "transpose": None,
                             },
                        "{}.block_{}.layer_{}.bn{}.running_mean".format(tensor_name_prefix_torch, block_idx, layer_idx, i):
                            {"name": "{}/block_{}/layer_{}/bn{}/moving_mean".format(tensor_name_prefix_tf, block_idx, layer_idx, i),
                             "squeeze": None,
                             "transpose": None,
                             },
                        "{}.block_{}.layer_{}.bn{}.running_var".format(tensor_name_prefix_torch, block_idx, layer_idx, i):
                            {"name": "{}/block_{}/layer_{}/bn{}/moving_variance".format(tensor_name_prefix_tf, block_idx, layer_idx, i),
                             "squeeze": None,
                             "transpose": None,
                             },
                        "{}.block_{}.layer_{}.bn{}.num_batches_tracked".format(tensor_name_prefix_torch, block_idx, layer_idx, i): train_steps,
                    })
        return map_dict_local
    def convert_tf2torch(self,
                         var_dict_tf,
                         var_dict_torch,
                         ):
        map_dict = self.gen_tf2torch_map_dict()
        var_dict_torch_update = dict()
        for name in sorted(var_dict_torch.keys(), reverse=False):
            if name.startswith(self.tf2torch_tensor_name_prefix_torch):
                if name in map_dict:
                    if "num_batches_tracked" not in name:
                        name_tf = map_dict[name]["name"]
                        data_tf = var_dict_tf[name_tf]
                        if map_dict[name]["squeeze"] is not None:
                            data_tf = np.squeeze(data_tf, axis=map_dict[name]["squeeze"])
                        if map_dict[name]["transpose"] is not None:
                            data_tf = np.transpose(data_tf, map_dict[name]["transpose"])
                        data_tf = torch.from_numpy(data_tf).type(torch.float32).to("cpu")
                        assert var_dict_torch[name].size() == data_tf.size(), \
                            "{}, {}, {} != {}".format(name, name_tf,
                                                      var_dict_torch[name].size(), data_tf.size())
                        var_dict_torch_update[name] = data_tf
                        logging.info("torch tensor: {}, {}, loading from tf tensor: {}, {}".format(
                            name, data_tf.size(), name_tf, var_dict_tf[name_tf].shape
                        ))
                    else:
                        var_dict_torch_update[name] = torch.from_numpy(np.array(map_dict[name])).type(torch.int64).to("cpu")
                        logging.info("torch tensor: {}, manually assigning to: {}".format(
                            name, map_dict[name]
                        ))
                else:
                    logging.warning("{} is missed from tf checkpoint".format(name))
        return var_dict_torch_update
funasr/models/pooling/statistic_pooling.py
@@ -82,13 +82,16 @@
    tt = xs_pad.shape[2]
    num_chunk = int(math.ceil(tt / pooling_stride))
    pad = pooling_size // 2
    features = F.pad(xs_pad, (0, 0, pad, pad), "reflect")
    if xs_pad.shape == 4:
        features = F.pad(xs_pad, (0, 0, pad, pad), "reflect")
    else:
        features = F.pad(xs_pad, (pad, pad), "reflect")
    stat_list = []
    for i in range(num_chunk):
        # B x C
        st, ed = i*pooling_stride, i*pooling_stride+pooling_size
        stat = statistic_pooling(features[:, :, st: ed, :], pooling_dim=pooling_dim)
        stat = statistic_pooling(features[:, :, st: ed], pooling_dim=pooling_dim)
        stat_list.append(stat.unsqueeze(2))
    # B x C x T
funasr/tasks/diar.py
@@ -23,7 +23,7 @@
from funasr.layers.utterance_mvn import UtteranceMVN
from funasr.layers.label_aggregation import LabelAggregate
from funasr.models.ctc import CTC
from funasr.models.encoder.resnet34_encoder import ResNet34Diar
from funasr.models.encoder.resnet34_encoder import ResNet34Diar, ResNet34SpL2RegDiar
from funasr.models.encoder.ecapa_tdnn_encoder import ECAPA_TDNN
from funasr.models.encoder.opennmt_encoders.conv_encoder import ConvEncoder
from funasr.models.encoder.opennmt_encoders.fsmn_encoder import FsmnEncoder
@@ -122,6 +122,7 @@
        fsmn=FsmnEncoder,
        conv=ConvEncoder,
        resnet34=ResNet34Diar,
        resnet34_sp_l2reg=ResNet34SpL2RegDiar,
        sanm_chunk_opt=SANMEncoderChunkOpt,
        data2vec_encoder=Data2VecEncoder,
        ecapa_tdnn=ECAPA_TDNN,
@@ -160,6 +161,7 @@
    classes=dict(
        dot=DotScorer,
        cosine=CosScorer,
        conv=ConvEncoder,
    ),
    type_check=torch.nn.Module,
    default=None,
@@ -571,19 +573,24 @@
        var_dict_torch = model.state_dict()
        var_dict_torch_update = dict()
        # speech encoder
        var_dict_torch_update_local = model.encoder.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        if model.encoder is not None:
            var_dict_torch_update_local = model.encoder.convert_tf2torch(var_dict_tf, var_dict_torch)
            var_dict_torch_update.update(var_dict_torch_update_local)
        # speaker encoder
        var_dict_torch_update_local = model.speaker_encoder.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        if model.speaker_encoder is not None:
            var_dict_torch_update_local = model.speaker_encoder.convert_tf2torch(var_dict_tf, var_dict_torch)
            var_dict_torch_update.update(var_dict_torch_update_local)
        # cd scorer
        var_dict_torch_update_local = model.cd_scorer.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        if model.cd_scorer is not None:
            var_dict_torch_update_local = model.cd_scorer.convert_tf2torch(var_dict_tf, var_dict_torch)
            var_dict_torch_update.update(var_dict_torch_update_local)
        # ci scorer
        var_dict_torch_update_local = model.ci_scorer.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        if model.ci_scorer is not None:
            var_dict_torch_update_local = model.ci_scorer.convert_tf2torch(var_dict_tf, var_dict_torch)
            var_dict_torch_update.update(var_dict_torch_update_local)
        # decoder
        var_dict_torch_update_local = model.decoder.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        if model.decoder is not None:
            var_dict_torch_update_local = model.decoder.convert_tf2torch(var_dict_tf, var_dict_torch)
            var_dict_torch_update.update(var_dict_torch_update_local)
        return var_dict_torch_update
funasr/tasks/sv.py
@@ -1,14 +1,18 @@
import argparse
import logging
import os
from pathlib import Path
from typing import Callable
from typing import Collection
from typing import Dict
from typing import List
from typing import Optional
from typing import Tuple
from typing import Union
import numpy as np
import torch
import yaml
from typeguard import check_argument_types
from typeguard import check_return_type
@@ -21,7 +25,7 @@
from funasr.models.decoder.abs_decoder import AbsDecoder
from funasr.models.encoder.abs_encoder import AbsEncoder
from funasr.models.encoder.rnn_encoder import RNNEncoder
from funasr.models.encoder.resnet34_encoder import ResNet34
from funasr.models.encoder.resnet34_encoder import ResNet34, ResNet34_SP_L2Reg
from funasr.models.pooling.statistic_pooling import StatisticPooling
from funasr.models.decoder.sv_decoder import DenseDecoder
from funasr.models.e2e_sv import ESPnetSVModel
@@ -103,6 +107,7 @@
    "encoder",
    classes=dict(
        resnet34=ResNet34,
        resnet34_sp_l2reg=ResNet34_SP_L2Reg,
        rnn=RNNEncoder,
    ),
    type_check=AbsEncoder,
@@ -394,9 +399,16 @@
        # 7. Pooling layer
        pooling_class = pooling_choices.get_class(args.pooling_type)
        pooling_dim = (2, 3)
        eps = 1e-12
        if hasattr(args, "pooling_type_conf"):
            if "pooling_dim" in args.pooling_type_conf:
                pooling_dim = args.pooling_type_conf["pooling_dim"]
            if "eps" in args.pooling_type_conf:
                eps = args.pooling_type_conf["eps"]
        pooling_layer = pooling_class(
            pooling_dim=(2, 3),
            eps=1e-12,
            pooling_dim=pooling_dim,
            eps=eps,
        )
        if args.pooling_type == "statistic":
            encoder_output_size *= 2
@@ -435,3 +447,95 @@
        assert check_return_type(model)
        return model
    # ~~~~~~~~~ The methods below are mainly used for inference ~~~~~~~~~
    @classmethod
    def build_model_from_file(
            cls,
            config_file: Union[Path, str] = None,
            model_file: Union[Path, str] = None,
            cmvn_file: Union[Path, str] = None,
            device: str = "cpu",
    ):
        """Build model from the files.
        This method is used for inference or fine-tuning.
        Args:
            config_file: The yaml file saved when training.
            model_file: The model file saved when training.
            cmvn_file: The cmvn file for front-end
            device: Device type, "cpu", "cuda", or "cuda:N".
        """
        assert check_argument_types()
        if config_file is None:
            assert model_file is not None, (
                "The argument 'model_file' must be provided "
                "if the argument 'config_file' is not specified."
            )
            config_file = Path(model_file).parent / "config.yaml"
        else:
            config_file = Path(config_file)
        with config_file.open("r", encoding="utf-8") as f:
            args = yaml.safe_load(f)
        if cmvn_file is not None:
            args["cmvn_file"] = cmvn_file
        args = argparse.Namespace(**args)
        model = cls.build_model(args)
        if not isinstance(model, AbsESPnetModel):
            raise RuntimeError(
                f"model must inherit {AbsESPnetModel.__name__}, but got {type(model)}"
            )
        model.to(device)
        model_dict = dict()
        model_name_pth = None
        if model_file is not None:
            logging.info("model_file is {}".format(model_file))
            if device == "cuda":
                device = f"cuda:{torch.cuda.current_device()}"
            model_dir = os.path.dirname(model_file)
            model_name = os.path.basename(model_file)
            if "model.ckpt-" in model_name or ".bin" in model_name:
                if ".bin" in model_name:
                    model_name_pth = os.path.join(model_dir, model_name.replace('.bin', '.pb'))
                else:
                    model_name_pth = os.path.join(model_dir, "{}.pth".format(model_name))
                if os.path.exists(model_name_pth):
                    logging.info("model_file is load from pth: {}".format(model_name_pth))
                    model_dict = torch.load(model_name_pth, map_location=device)
                else:
                    model_dict = cls.convert_tf2torch(model, model_file)
                model.load_state_dict(model_dict)
            else:
                model_dict = torch.load(model_file, map_location=device)
        model.load_state_dict(model_dict)
        if model_name_pth is not None and not os.path.exists(model_name_pth):
            torch.save(model_dict, model_name_pth)
            logging.info("model_file is saved to pth: {}".format(model_name_pth))
        return model, args
    @classmethod
    def convert_tf2torch(
            cls,
            model,
            ckpt,
    ):
        logging.info("start convert tf model to torch model")
        from funasr.modules.streaming_utils.load_fr_tf import load_tf_dict
        var_dict_tf = load_tf_dict(ckpt)
        var_dict_torch = model.state_dict()
        var_dict_torch_update = dict()
        # speech encoder
        var_dict_torch_update_local = model.encoder.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        # pooling layer
        var_dict_torch_update_local = model.pooling_layer.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        # decoder
        var_dict_torch_update_local = model.decoder.convert_tf2torch(var_dict_tf, var_dict_torch)
        var_dict_torch_update.update(var_dict_torch_update_local)
        return var_dict_torch_update