Lycoris53 commited on
Commit
c1a65c6
·
1 Parent(s): bff01e3

initial commit

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. Dockerfile +40 -0
  2. LICENSE +201 -0
  3. OUTPUT_MODEL/D_Amitaro.pth +3 -0
  4. OUTPUT_MODEL/G_Amitaro.pth +3 -0
  5. OUTPUT_MODEL/config.json +56 -0
  6. README.md +4 -5
  7. VC_inference.py +146 -0
  8. app.py +138 -0
  9. attentions.py +303 -0
  10. commons.py +164 -0
  11. configs/amitaro_jp_base.json +56 -0
  12. data_utils.py +276 -0
  13. dict/COPYING +100 -0
  14. dict/char.bin +3 -0
  15. dict/left-id.def +1377 -0
  16. dict/matrix.bin +3 -0
  17. dict/pos-id.def +69 -0
  18. dict/rewrite.def +94 -0
  19. dict/right-id.def +1377 -0
  20. dict/unk.dic +0 -0
  21. finetune_speaker_v2.py +351 -0
  22. losses.py +61 -0
  23. mel_processing.py +112 -0
  24. models.py +533 -0
  25. models_infer.py +402 -0
  26. modules.py +390 -0
  27. monotonic_align/__init__.py +19 -0
  28. monotonic_align/build/lib.linux-x86_64-cpython-310/monotonic_align/core.cpython-310-x86_64-linux-gnu.so +0 -0
  29. monotonic_align/build/lib.linux-x86_64-cpython-311/monotonic_align/core.cpython-311-x86_64-linux-gnu.so +0 -0
  30. monotonic_align/build/temp.linux-x86_64-cpython-310/core.o +0 -0
  31. monotonic_align/build/temp.linux-x86_64-cpython-311/core.o +0 -0
  32. monotonic_align/core.c +0 -0
  33. monotonic_align/core.pyx +42 -0
  34. monotonic_align/monotonic_align/core.cpython-310-x86_64-linux-gnu.so +0 -0
  35. monotonic_align/monotonic_align/core.cpython-311-x86_64-linux-gnu.so +0 -0
  36. monotonic_align/setup.py +9 -0
  37. preprocess_v2.py +153 -0
  38. requirements.txt +27 -0
  39. scripts/denoise_audio.py +22 -0
  40. scripts/download_model.py +4 -0
  41. scripts/download_video.py +37 -0
  42. scripts/long_audio_transcribe.py +75 -0
  43. scripts/rearrange_speaker.py +37 -0
  44. scripts/resample.py +20 -0
  45. scripts/short_audio_transcribe.py +91 -0
  46. scripts/video2audio.py +27 -0
  47. scripts/voice_upload.py +28 -0
  48. short_audio_transcribe.py +91 -0
  49. text/LICENSE +19 -0
  50. text/__init__.py +60 -0
Dockerfile ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10
2
+
3
+ COPY ./requirements.txt /code/requirements.txt
4
+
5
+ RUN apt-get update
6
+
7
+ RUN apt-get install -y cmake
8
+
9
+ RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
10
+
11
+ RUN pip install --no-cache-dir --upgrade --no-build-isolation pyopenjtalk
12
+
13
+ # Set up a new user named "user" with user ID 1000
14
+ RUN useradd -m -u 1000 user
15
+
16
+ # Switch to the "user" user
17
+ USER user
18
+
19
+ # Set home to the user's home directory
20
+ ENV HOME=/home/user \
21
+ PATH=/home/user/.local/bin:$PATH
22
+
23
+ # Set the working directory to the user's home directory
24
+ WORKDIR $HOME/app
25
+
26
+ COPY --chown=user . $HOME/app
27
+
28
+ #COPY ./open_jtalk_dic_utf_8-1.11.tar.gz /usr/local/lib/python3.10/site-packages/pyopenjtalk/dic.tar.gz
29
+ #RUN chmod 777 /usr/local/lib/python3.10/site-packages/pyopenjtalk/dic.tar.gz
30
+
31
+ #COPY --chown=user ./open_jtalk_dic_utf_8-1.11.tar.gz $HOME/app/dict/
32
+ #COPY --chown=user ./open_jtalk_dic_utf_8-1.11.tar.gz $HOME/app/dict/dic.tar.gz
33
+
34
+ COPY --chown=user ./dict/ $HOME/app/dict/
35
+
36
+ RUN chmod 777 -R $HOME/app/dict/
37
+
38
+ ENV OPEN_JTALK_DICT_DIR=$HOME/app/dict/
39
+
40
+ CMD ["python", "-u", "app.py"]
LICENSE ADDED
@@ -0,0 +1,201 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright [yyyy] [name of copyright owner]
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.
OUTPUT_MODEL/D_Amitaro.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:4610d88f7ce89c54e7bbee6fe1a60b9c98ade40dc8ec052624d0fcac67d6676c
3
+ size 187027092
OUTPUT_MODEL/G_Amitaro.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7644eed4b2c8afd8102ba6ec231a81d620d3a9bd5b659c1481552a3b2d4fdbc9
3
+ size 158888169
OUTPUT_MODEL/config.json ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "eval_interval": 1000,
5
+ "seed": 1234,
6
+ "epochs": 10000,
7
+ "learning_rate": 2e-4,
8
+ "betas": [0.8, 0.99],
9
+ "eps": 1e-9,
10
+ "batch_size": 1,
11
+ "fp16_run": true,
12
+ "lr_decay": 0.999875,
13
+ "segment_size": 8192,
14
+ "init_lr_ratio": 1,
15
+ "warmup_epochs": 0,
16
+ "c_mel": 45,
17
+ "c_kl": 1.0
18
+ },
19
+ "data": {
20
+ "training_files":"./final_annotation_train.txt",
21
+ "validation_files":"./final_annotation_val.txt",
22
+ "text_cleaners":["japanese_cleaners"],
23
+ "max_wav_value": 32768.0,
24
+ "sampling_rate": 22050,
25
+ "filter_length": 1024,
26
+ "hop_length": 256,
27
+ "win_length": 1024,
28
+ "n_mel_channels": 80,
29
+ "mel_fmin": 0.0,
30
+ "mel_fmax": null,
31
+ "add_blank": true,
32
+ "n_speakers": 1,
33
+ "cleaned_text": true
34
+ },
35
+ "model": {
36
+ "inter_channels": 192,
37
+ "hidden_channels": 192,
38
+ "filter_channels": 768,
39
+ "n_heads": 2,
40
+ "n_layers": 6,
41
+ "kernel_size": 3,
42
+ "p_dropout": 0.1,
43
+ "resblock": "1",
44
+ "resblock_kernel_sizes": [3,7,11],
45
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
46
+ "upsample_rates": [8,8,2,2],
47
+ "upsample_initial_channel": 512,
48
+ "upsample_kernel_sizes": [16,16,4,4],
49
+ "n_layers_q": 3,
50
+ "use_spectral_norm": false,
51
+ "gin_channels": 256
52
+ },
53
+ "speakers": {"amitaro":0
54
+ },
55
+ "symbols": ["_", ",", ".", "!", "?", "-", "A", "E", "I", "N", "O", "Q", "U", "a", "b", "d", "e", "f", "g", "h", "i", "j", "k", "m", "n", "o", "p", "r", "s", "t", "u", "v", "w", "y", "z", "\u0283", "\u02a7", "\u2193", "\u2191", " "]
56
+ }
README.md CHANGED
@@ -1,12 +1,11 @@
1
  ---
2
- title: GPT4o VITS TTS SutouHaru API
3
- emoji: 🔥
4
- colorFrom: yellow
5
  colorTo: pink
6
  sdk: gradio
7
  sdk_version: 4.31.4
8
  app_file: app.py
9
  pinned: false
 
10
  ---
11
-
12
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: GPT4o VITS TTS SutouHaru
3
+ emoji: 🚀
4
+ colorFrom: blue
5
  colorTo: pink
6
  sdk: gradio
7
  sdk_version: 4.31.4
8
  app_file: app.py
9
  pinned: false
10
+ license: apache-2.0
11
  ---
 
 
VC_inference.py ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import numpy as np
3
+ import torch
4
+ from torch import no_grad, LongTensor
5
+ import argparse
6
+ import commons
7
+ from mel_processing import spectrogram_torch
8
+ import utils
9
+ from models import SynthesizerTrn
10
+ import gradio as gr
11
+ import librosa
12
+ import webbrowser
13
+
14
+ from text import text_to_sequence, _clean_text
15
+ device = "cuda:0" if torch.cuda.is_available() else "cpu"
16
+ import logging
17
+ logging.getLogger("PIL").setLevel(logging.WARNING)
18
+ logging.getLogger("urllib3").setLevel(logging.WARNING)
19
+ logging.getLogger("markdown_it").setLevel(logging.WARNING)
20
+ logging.getLogger("httpx").setLevel(logging.WARNING)
21
+ logging.getLogger("asyncio").setLevel(logging.WARNING)
22
+
23
+ language_marks = {
24
+ "Japanese": "",
25
+ "日本語": "[JA]",
26
+ "简体中文": "[ZH]",
27
+ "English": "[EN]",
28
+ "Mix": "",
29
+ }
30
+ lang = ['日本語', '简体中文', 'English', 'Mix']
31
+ def get_text(text, hps, is_symbol):
32
+ text_norm = text_to_sequence(text, hps.symbols, [] if is_symbol else hps.data.text_cleaners)
33
+ if hps.data.add_blank:
34
+ text_norm = commons.intersperse(text_norm, 0)
35
+ text_norm = LongTensor(text_norm)
36
+ return text_norm
37
+
38
+ def create_tts_fn(model, hps, speaker_ids):
39
+ def tts_fn(text, speaker, language, speed):
40
+ if language is not None:
41
+ text = language_marks[language] + text + language_marks[language]
42
+ speaker_id = speaker_ids[speaker]
43
+ stn_tst = get_text(text, hps, False)
44
+ with no_grad():
45
+ x_tst = stn_tst.unsqueeze(0).to(device)
46
+ x_tst_lengths = LongTensor([stn_tst.size(0)]).to(device)
47
+ sid = LongTensor([speaker_id]).to(device)
48
+ audio = model.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.8,
49
+ length_scale=1.0 / speed)[0][0, 0].data.cpu().float().numpy()
50
+ del stn_tst, x_tst, x_tst_lengths, sid
51
+ return "Success", (hps.data.sampling_rate, audio)
52
+
53
+ return tts_fn
54
+
55
+ def create_vc_fn(model, hps, speaker_ids):
56
+ def vc_fn(original_speaker, target_speaker, record_audio, upload_audio):
57
+ input_audio = record_audio if record_audio is not None else upload_audio
58
+ if input_audio is None:
59
+ return "You need to record or upload an audio", None
60
+ sampling_rate, audio = input_audio
61
+ original_speaker_id = speaker_ids[original_speaker]
62
+ target_speaker_id = speaker_ids[target_speaker]
63
+
64
+ audio = (audio / np.iinfo(audio.dtype).max).astype(np.float32)
65
+ if len(audio.shape) > 1:
66
+ audio = librosa.to_mono(audio.transpose(1, 0))
67
+ if sampling_rate != hps.data.sampling_rate:
68
+ audio = librosa.resample(audio, orig_sr=sampling_rate, target_sr=hps.data.sampling_rate)
69
+ with no_grad():
70
+ y = torch.FloatTensor(audio)
71
+ y = y / max(-y.min(), y.max()) / 0.99
72
+ y = y.to(device)
73
+ y = y.unsqueeze(0)
74
+ spec = spectrogram_torch(y, hps.data.filter_length,
75
+ hps.data.sampling_rate, hps.data.hop_length, hps.data.win_length,
76
+ center=False).to(device)
77
+ spec_lengths = LongTensor([spec.size(-1)]).to(device)
78
+ sid_src = LongTensor([original_speaker_id]).to(device)
79
+ sid_tgt = LongTensor([target_speaker_id]).to(device)
80
+ audio = model.voice_conversion(spec, spec_lengths, sid_src=sid_src, sid_tgt=sid_tgt)[0][
81
+ 0, 0].data.cpu().float().numpy()
82
+ del y, spec, spec_lengths, sid_src, sid_tgt
83
+ return "Success", (hps.data.sampling_rate, audio)
84
+
85
+ return vc_fn
86
+ if __name__ == "__main__":
87
+ parser = argparse.ArgumentParser()
88
+ parser.add_argument("--model_dir", default="./G_latest.pth", help="directory to your fine-tuned model")
89
+ parser.add_argument("--config_dir", default="./finetune_speaker.json", help="directory to your model config file")
90
+ parser.add_argument("--share", default=False, help="make link public (used in colab)")
91
+
92
+ args = parser.parse_args()
93
+ hps = utils.get_hparams_from_file(args.config_dir)
94
+
95
+
96
+ net_g = SynthesizerTrn(
97
+ len(hps.symbols),
98
+ hps.data.filter_length // 2 + 1,
99
+ hps.train.segment_size // hps.data.hop_length,
100
+ n_speakers=hps.data.n_speakers,
101
+ **hps.model).to(device)
102
+ _ = net_g.eval()
103
+
104
+ _ = utils.load_checkpoint(args.model_dir, net_g, None)
105
+ speaker_ids = hps.speakers
106
+ speakers = list(hps.speakers.keys())
107
+ tts_fn = create_tts_fn(net_g, hps, speaker_ids)
108
+ vc_fn = create_vc_fn(net_g, hps, speaker_ids)
109
+ app = gr.Blocks()
110
+ with app:
111
+ with gr.Tab("Text-to-Speech"):
112
+ with gr.Row():
113
+ with gr.Column():
114
+ textbox = gr.TextArea(label="Text",
115
+ placeholder="Type your sentence here",
116
+ value="こんにちわ。", elem_id=f"tts-input")
117
+ # select character
118
+ char_dropdown = gr.Dropdown(choices=speakers, value=speakers[0], label='character')
119
+ language_dropdown = gr.Dropdown(choices=lang, value=lang[0], label='language')
120
+ duration_slider = gr.Slider(minimum=0.1, maximum=5, value=1, step=0.1,
121
+ label='速度 Speed')
122
+ with gr.Column():
123
+ text_output = gr.Textbox(label="Message")
124
+ audio_output = gr.Audio(label="Output Audio", elem_id="tts-audio")
125
+ btn = gr.Button("Generate!")
126
+ btn.click(tts_fn,
127
+ inputs=[textbox, char_dropdown, language_dropdown, duration_slider,],
128
+ outputs=[text_output, audio_output])
129
+ with gr.Tab("Voice Conversion"):
130
+ gr.Markdown("""
131
+ 录制或上传声音,并选择要转换的音色。
132
+ """)
133
+ with gr.Column():
134
+ record_audio = gr.Audio(label="record your voice", source="microphone")
135
+ upload_audio = gr.Audio(label="or upload audio here", source="upload")
136
+ source_speaker = gr.Dropdown(choices=speakers, value=speakers[0], label="source speaker")
137
+ target_speaker = gr.Dropdown(choices=speakers, value=speakers[0], label="target speaker")
138
+ with gr.Column():
139
+ message_box = gr.Textbox(label="Message")
140
+ converted_audio = gr.Audio(label='converted audio')
141
+ btn = gr.Button("Convert!")
142
+ btn.click(vc_fn, inputs=[source_speaker, target_speaker, record_audio, upload_audio],
143
+ outputs=[message_box, converted_audio])
144
+ webbrowser.open("http://127.0.0.1:7860")
145
+ app.launch(share=args.share)
146
+
app.py ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import utils
2
+ from models import SynthesizerTrn
3
+ import torch
4
+ from torch import no_grad, LongTensor
5
+ from text import text_to_sequence
6
+ import gradio as gr
7
+ import commons
8
+ import json
9
+ import os
10
+ import time
11
+ from openai import OpenAI
12
+
13
+ model_path = "./OUTPUT_MODEL/G_Amitaro.pth"
14
+ config_path = "./OUTPUT_MODEL/config.json"
15
+ sampling_rate = 22050
16
+
17
+ length = 1.0
18
+ device = "cuda:0" if torch.cuda.is_available() else "cpu"
19
+
20
+ def request_openai_message(input_text):
21
+ client = OpenAI(api_key=os.environ["GPT_API_TOKEN"])
22
+ init_str = """あなたの名前ははる。あなたは冒険者でこの町の隅っこに住んでいます。
23
+ 好きな食べ物はカレー。エッチな質問やいたずらに対して沈黙してください。
24
+ 町の名前はルコー。あなたは今暇なので、町案内をしている。
25
+ わからない質問されたら適当に答える。
26
+ 返事は短くすること。会話で使わない文字も使わない。
27
+ 酒場:町の東側にあって、酒の販売は17時からだが、食事なら11時から。メニューはカレー、ステーキ、野菜スープ、ソーセージなど。24時までやっている
28
+ 冒険者ギルド:町の中央広場にある。24時間受付だが、新人登録は受付がいる10時から19時の間だ。お使いクエストや討伐クエストなど受けることができる。
29
+ ポーション屋:町の南側にある。冒険に必須のポーションを売っている店だ。店長の対応はドライだが、実は人見知りだけで、普通に優しい。定番のポーション以外も受注生産承るので、欲しいポーションがなければ聞いてみた方がいい。
30
+ 雑貨店:冒険者ギルドの隣にある。日用品から冒険者用アイテムまで売っている。
31
+ """
32
+ messages=[
33
+ {"role": "system", "content": init_str},
34
+ ]
35
+
36
+ text_log = input_text.split("|")
37
+ for val in text_log:
38
+ userind = val.find("user:")
39
+ assistantind = val.find("assistant:")
40
+ # just in case, remove conversation tag
41
+ val = val.replace("user:","")
42
+ val = val.replace("assistant:","")
43
+ if userind != -1:
44
+ messages.append({"role": "user", "content": val})
45
+ elif assistantind != -1:
46
+ messages.append({"role": "assistant", "content": val})
47
+
48
+ text = ""
49
+ retry_count = 0
50
+ while text == "" and retry_count < 3:
51
+ try:
52
+ response = client.chat.completions.create(model="gpt-4o", messages=messages)
53
+ print("Response from openai is : ")
54
+ print(response)
55
+ text = response.choices[0].message.content
56
+ except Exception as inst:
57
+ print(type(inst)) # the exception type
58
+ print(inst.args) # arguments stored in .args
59
+ print(inst)
60
+ retry_count += 1
61
+ time.sleep(1)
62
+
63
+ text = text.replace("user:","")
64
+ text = text.replace("assistant:","")
65
+
66
+ return text
67
+
68
+ def process_text(text):
69
+ # remove newline
70
+ text = text.replace("\r\n","。")
71
+ text = text.replace("\n","。")
72
+ return text
73
+
74
+ def tts(text):
75
+ hps = utils.get_hparams_from_file(config_path)
76
+ net_g = SynthesizerTrn(
77
+ len(hps.symbols),
78
+ hps.data.filter_length // 2 + 1,
79
+ hps.train.segment_size // hps.data.hop_length,
80
+ n_speakers=hps.data.n_speakers,
81
+ **hps.model).to(device)
82
+ _ = net_g.eval()
83
+ _ = utils.load_checkpoint(model_path, net_g, None)
84
+
85
+ speaker_ids = hps.speakers
86
+
87
+ speaker_id = 0
88
+ stn_tst = get_text(text, hps, False)
89
+ with no_grad():
90
+ x_tst = stn_tst.unsqueeze(0).to(device)
91
+ x_tst_lengths = LongTensor([stn_tst.size(0)]).to(device)
92
+ sid = LongTensor([speaker_id]).to(device)
93
+ audio = net_g.infer(x_tst, x_tst_lengths, sid=sid, noise_scale=.667, noise_scale_w=0.6,
94
+ length_scale=1.0 / length)[0][0, 0].data.cpu().float().numpy()
95
+ del stn_tst, x_tst, x_tst_lengths, sid
96
+
97
+ return audio
98
+
99
+ def get_text(text, hps, is_symbol):
100
+ text_norm = text_to_sequence(text, hps.symbols, [] if is_symbol else hps.data.text_cleaners)
101
+ if hps.data.add_blank:
102
+ text_norm = commons.intersperse(text_norm, 0)
103
+ text_norm = LongTensor(text_norm)
104
+ return text_norm
105
+
106
+ def get_vits_array(input_text, flag):
107
+
108
+ print(flag, " : ", input_text)
109
+ # for mokuran webgl
110
+ if flag == "mokuran":
111
+ text = request_openai_message(input_text)
112
+ text = process_text(text)
113
+ audio = tts(text)
114
+ return {"utterance": text, "audio_wave": audio.tolist()}, None
115
+
116
+ elif flag == "audio_array":
117
+ audio = tts(input_text)
118
+ return {"input_text": input_text, "sampling_rate": sampling_rate, "audio_wave": audio.tolist()}, None
119
+
120
+ # for tts api
121
+ elif flag == "audio_file":
122
+ audio = tts(input_text)
123
+ return "", (sampling_rate, audio)
124
+
125
+ else:
126
+ raise Exception("Unknown flag : [" + flag + "]")
127
+
128
+ gradio_interface = gr.Interface(
129
+ fn = get_vits_array,
130
+ inputs = ["text", "text"],
131
+ outputs = ["text", "audio"]
132
+ )
133
+
134
+ # for using with nginx docker environment, note that root path change according to nginx configuration
135
+ gradio_interface.launch(server_name="0.0.0.0", server_port=7860, root_path="/mokuran")
136
+
137
+ # for standalone server (with ssl)
138
+ #gradio_interface.launch(server_name="0.0.0.0", server_port=7860, ssl_keyfile="privkey.pem", ssl_certfile="fullchain.pem", ssl_verify=False)
attentions.py ADDED
@@ -0,0 +1,303 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import math
3
+ import numpy as np
4
+ import torch
5
+ from torch import nn
6
+ from torch.nn import functional as F
7
+
8
+ import commons
9
+ import modules
10
+ from modules import LayerNorm
11
+
12
+
13
+ class Encoder(nn.Module):
14
+ def __init__(self, hidden_channels, filter_channels, n_heads, n_layers, kernel_size=1, p_dropout=0., window_size=4, **kwargs):
15
+ super().__init__()
16
+ self.hidden_channels = hidden_channels
17
+ self.filter_channels = filter_channels
18
+ self.n_heads = n_heads
19
+ self.n_layers = n_layers
20
+ self.kernel_size = kernel_size
21
+ self.p_dropout = p_dropout
22
+ self.window_size = window_size
23
+
24
+ self.drop = nn.Dropout(p_dropout)
25
+ self.attn_layers = nn.ModuleList()
26
+ self.norm_layers_1 = nn.ModuleList()
27
+ self.ffn_layers = nn.ModuleList()
28
+ self.norm_layers_2 = nn.ModuleList()
29
+ for i in range(self.n_layers):
30
+ self.attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout, window_size=window_size))
31
+ self.norm_layers_1.append(LayerNorm(hidden_channels))
32
+ self.ffn_layers.append(FFN(hidden_channels, hidden_channels, filter_channels, kernel_size, p_dropout=p_dropout))
33
+ self.norm_layers_2.append(LayerNorm(hidden_channels))
34
+
35
+ def forward(self, x, x_mask):
36
+ attn_mask = x_mask.unsqueeze(2) * x_mask.unsqueeze(-1)
37
+ x = x * x_mask
38
+ for i in range(self.n_layers):
39
+ y = self.attn_layers[i](x, x, attn_mask)
40
+ y = self.drop(y)
41
+ x = self.norm_layers_1[i](x + y)
42
+
43
+ y = self.ffn_layers[i](x, x_mask)
44
+ y = self.drop(y)
45
+ x = self.norm_layers_2[i](x + y)
46
+ x = x * x_mask
47
+ return x
48
+
49
+
50
+ class Decoder(nn.Module):
51
+ def __init__(self, hidden_channels, filter_channels, n_heads, n_layers, kernel_size=1, p_dropout=0., proximal_bias=False, proximal_init=True, **kwargs):
52
+ super().__init__()
53
+ self.hidden_channels = hidden_channels
54
+ self.filter_channels = filter_channels
55
+ self.n_heads = n_heads
56
+ self.n_layers = n_layers
57
+ self.kernel_size = kernel_size
58
+ self.p_dropout = p_dropout
59
+ self.proximal_bias = proximal_bias
60
+ self.proximal_init = proximal_init
61
+
62
+ self.drop = nn.Dropout(p_dropout)
63
+ self.self_attn_layers = nn.ModuleList()
64
+ self.norm_layers_0 = nn.ModuleList()
65
+ self.encdec_attn_layers = nn.ModuleList()
66
+ self.norm_layers_1 = nn.ModuleList()
67
+ self.ffn_layers = nn.ModuleList()
68
+ self.norm_layers_2 = nn.ModuleList()
69
+ for i in range(self.n_layers):
70
+ self.self_attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout, proximal_bias=proximal_bias, proximal_init=proximal_init))
71
+ self.norm_layers_0.append(LayerNorm(hidden_channels))
72
+ self.encdec_attn_layers.append(MultiHeadAttention(hidden_channels, hidden_channels, n_heads, p_dropout=p_dropout))
73
+ self.norm_layers_1.append(LayerNorm(hidden_channels))
74
+ self.ffn_layers.append(FFN(hidden_channels, hidden_channels, filter_channels, kernel_size, p_dropout=p_dropout, causal=True))
75
+ self.norm_layers_2.append(LayerNorm(hidden_channels))
76
+
77
+ def forward(self, x, x_mask, h, h_mask):
78
+ """
79
+ x: decoder input
80
+ h: encoder output
81
+ """
82
+ self_attn_mask = commons.subsequent_mask(x_mask.size(2)).to(device=x.device, dtype=x.dtype)
83
+ encdec_attn_mask = h_mask.unsqueeze(2) * x_mask.unsqueeze(-1)
84
+ x = x * x_mask
85
+ for i in range(self.n_layers):
86
+ y = self.self_attn_layers[i](x, x, self_attn_mask)
87
+ y = self.drop(y)
88
+ x = self.norm_layers_0[i](x + y)
89
+
90
+ y = self.encdec_attn_layers[i](x, h, encdec_attn_mask)
91
+ y = self.drop(y)
92
+ x = self.norm_layers_1[i](x + y)
93
+
94
+ y = self.ffn_layers[i](x, x_mask)
95
+ y = self.drop(y)
96
+ x = self.norm_layers_2[i](x + y)
97
+ x = x * x_mask
98
+ return x
99
+
100
+
101
+ class MultiHeadAttention(nn.Module):
102
+ def __init__(self, channels, out_channels, n_heads, p_dropout=0., window_size=None, heads_share=True, block_length=None, proximal_bias=False, proximal_init=False):
103
+ super().__init__()
104
+ assert channels % n_heads == 0
105
+
106
+ self.channels = channels
107
+ self.out_channels = out_channels
108
+ self.n_heads = n_heads
109
+ self.p_dropout = p_dropout
110
+ self.window_size = window_size
111
+ self.heads_share = heads_share
112
+ self.block_length = block_length
113
+ self.proximal_bias = proximal_bias
114
+ self.proximal_init = proximal_init
115
+ self.attn = None
116
+
117
+ self.k_channels = channels // n_heads
118
+ self.conv_q = nn.Conv1d(channels, channels, 1)
119
+ self.conv_k = nn.Conv1d(channels, channels, 1)
120
+ self.conv_v = nn.Conv1d(channels, channels, 1)
121
+ self.conv_o = nn.Conv1d(channels, out_channels, 1)
122
+ self.drop = nn.Dropout(p_dropout)
123
+
124
+ if window_size is not None:
125
+ n_heads_rel = 1 if heads_share else n_heads
126
+ rel_stddev = self.k_channels**-0.5
127
+ self.emb_rel_k = nn.Parameter(torch.randn(n_heads_rel, window_size * 2 + 1, self.k_channels) * rel_stddev)
128
+ self.emb_rel_v = nn.Parameter(torch.randn(n_heads_rel, window_size * 2 + 1, self.k_channels) * rel_stddev)
129
+
130
+ nn.init.xavier_uniform_(self.conv_q.weight)
131
+ nn.init.xavier_uniform_(self.conv_k.weight)
132
+ nn.init.xavier_uniform_(self.conv_v.weight)
133
+ if proximal_init:
134
+ with torch.no_grad():
135
+ self.conv_k.weight.copy_(self.conv_q.weight)
136
+ self.conv_k.bias.copy_(self.conv_q.bias)
137
+
138
+ def forward(self, x, c, attn_mask=None):
139
+ q = self.conv_q(x)
140
+ k = self.conv_k(c)
141
+ v = self.conv_v(c)
142
+
143
+ x, self.attn = self.attention(q, k, v, mask=attn_mask)
144
+
145
+ x = self.conv_o(x)
146
+ return x
147
+
148
+ def attention(self, query, key, value, mask=None):
149
+ # reshape [b, d, t] -> [b, n_h, t, d_k]
150
+ b, d, t_s, t_t = (*key.size(), query.size(2))
151
+ query = query.view(b, self.n_heads, self.k_channels, t_t).transpose(2, 3)
152
+ key = key.view(b, self.n_heads, self.k_channels, t_s).transpose(2, 3)
153
+ value = value.view(b, self.n_heads, self.k_channels, t_s).transpose(2, 3)
154
+
155
+ scores = torch.matmul(query / math.sqrt(self.k_channels), key.transpose(-2, -1))
156
+ if self.window_size is not None:
157
+ assert t_s == t_t, "Relative attention is only available for self-attention."
158
+ key_relative_embeddings = self._get_relative_embeddings(self.emb_rel_k, t_s)
159
+ rel_logits = self._matmul_with_relative_keys(query /math.sqrt(self.k_channels), key_relative_embeddings)
160
+ scores_local = self._relative_position_to_absolute_position(rel_logits)
161
+ scores = scores + scores_local
162
+ if self.proximal_bias:
163
+ assert t_s == t_t, "Proximal bias is only available for self-attention."
164
+ scores = scores + self._attention_bias_proximal(t_s).to(device=scores.device, dtype=scores.dtype)
165
+ if mask is not None:
166
+ scores = scores.masked_fill(mask == 0, -1e4)
167
+ if self.block_length is not None:
168
+ assert t_s == t_t, "Local attention is only available for self-attention."
169
+ block_mask = torch.ones_like(scores).triu(-self.block_length).tril(self.block_length)
170
+ scores = scores.masked_fill(block_mask == 0, -1e4)
171
+ p_attn = F.softmax(scores, dim=-1) # [b, n_h, t_t, t_s]
172
+ p_attn = self.drop(p_attn)
173
+ output = torch.matmul(p_attn, value)
174
+ if self.window_size is not None:
175
+ relative_weights = self._absolute_position_to_relative_position(p_attn)
176
+ value_relative_embeddings = self._get_relative_embeddings(self.emb_rel_v, t_s)
177
+ output = output + self._matmul_with_relative_values(relative_weights, value_relative_embeddings)
178
+ output = output.transpose(2, 3).contiguous().view(b, d, t_t) # [b, n_h, t_t, d_k] -> [b, d, t_t]
179
+ return output, p_attn
180
+
181
+ def _matmul_with_relative_values(self, x, y):
182
+ """
183
+ x: [b, h, l, m]
184
+ y: [h or 1, m, d]
185
+ ret: [b, h, l, d]
186
+ """
187
+ ret = torch.matmul(x, y.unsqueeze(0))
188
+ return ret
189
+
190
+ def _matmul_with_relative_keys(self, x, y):
191
+ """
192
+ x: [b, h, l, d]
193
+ y: [h or 1, m, d]
194
+ ret: [b, h, l, m]
195
+ """
196
+ ret = torch.matmul(x, y.unsqueeze(0).transpose(-2, -1))
197
+ return ret
198
+
199
+ def _get_relative_embeddings(self, relative_embeddings, length):
200
+ max_relative_position = 2 * self.window_size + 1
201
+ # Pad first before slice to avoid using cond ops.
202
+ pad_length = max(length - (self.window_size + 1), 0)
203
+ slice_start_position = max((self.window_size + 1) - length, 0)
204
+ slice_end_position = slice_start_position + 2 * length - 1
205
+ if pad_length > 0:
206
+ padded_relative_embeddings = F.pad(
207
+ relative_embeddings,
208
+ commons.convert_pad_shape([[0, 0], [pad_length, pad_length], [0, 0]]))
209
+ else:
210
+ padded_relative_embeddings = relative_embeddings
211
+ used_relative_embeddings = padded_relative_embeddings[:,slice_start_position:slice_end_position]
212
+ return used_relative_embeddings
213
+
214
+ def _relative_position_to_absolute_position(self, x):
215
+ """
216
+ x: [b, h, l, 2*l-1]
217
+ ret: [b, h, l, l]
218
+ """
219
+ batch, heads, length, _ = x.size()
220
+ # Concat columns of pad to shift from relative to absolute indexing.
221
+ x = F.pad(x, commons.convert_pad_shape([[0,0],[0,0],[0,0],[0,1]]))
222
+
223
+ # Concat extra elements so to add up to shape (len+1, 2*len-1).
224
+ x_flat = x.view([batch, heads, length * 2 * length])
225
+ x_flat = F.pad(x_flat, commons.convert_pad_shape([[0,0],[0,0],[0,length-1]]))
226
+
227
+ # Reshape and slice out the padded elements.
228
+ x_final = x_flat.view([batch, heads, length+1, 2*length-1])[:, :, :length, length-1:]
229
+ return x_final
230
+
231
+ def _absolute_position_to_relative_position(self, x):
232
+ """
233
+ x: [b, h, l, l]
234
+ ret: [b, h, l, 2*l-1]
235
+ """
236
+ batch, heads, length, _ = x.size()
237
+ # padd along column
238
+ x = F.pad(x, commons.convert_pad_shape([[0, 0], [0, 0], [0, 0], [0, length-1]]))
239
+ x_flat = x.view([batch, heads, length**2 + length*(length -1)])
240
+ # add 0's in the beginning that will skew the elements after reshape
241
+ x_flat = F.pad(x_flat, commons.convert_pad_shape([[0, 0], [0, 0], [length, 0]]))
242
+ x_final = x_flat.view([batch, heads, length, 2*length])[:,:,:,1:]
243
+ return x_final
244
+
245
+ def _attention_bias_proximal(self, length):
246
+ """Bias for self-attention to encourage attention to close positions.
247
+ Args:
248
+ length: an integer scalar.
249
+ Returns:
250
+ a Tensor with shape [1, 1, length, length]
251
+ """
252
+ r = torch.arange(length, dtype=torch.float32)
253
+ diff = torch.unsqueeze(r, 0) - torch.unsqueeze(r, 1)
254
+ return torch.unsqueeze(torch.unsqueeze(-torch.log1p(torch.abs(diff)), 0), 0)
255
+
256
+
257
+ class FFN(nn.Module):
258
+ def __init__(self, in_channels, out_channels, filter_channels, kernel_size, p_dropout=0., activation=None, causal=False):
259
+ super().__init__()
260
+ self.in_channels = in_channels
261
+ self.out_channels = out_channels
262
+ self.filter_channels = filter_channels
263
+ self.kernel_size = kernel_size
264
+ self.p_dropout = p_dropout
265
+ self.activation = activation
266
+ self.causal = causal
267
+
268
+ if causal:
269
+ self.padding = self._causal_padding
270
+ else:
271
+ self.padding = self._same_padding
272
+
273
+ self.conv_1 = nn.Conv1d(in_channels, filter_channels, kernel_size)
274
+ self.conv_2 = nn.Conv1d(filter_channels, out_channels, kernel_size)
275
+ self.drop = nn.Dropout(p_dropout)
276
+
277
+ def forward(self, x, x_mask):
278
+ x = self.conv_1(self.padding(x * x_mask))
279
+ if self.activation == "gelu":
280
+ x = x * torch.sigmoid(1.702 * x)
281
+ else:
282
+ x = torch.relu(x)
283
+ x = self.drop(x)
284
+ x = self.conv_2(self.padding(x * x_mask))
285
+ return x * x_mask
286
+
287
+ def _causal_padding(self, x):
288
+ if self.kernel_size == 1:
289
+ return x
290
+ pad_l = self.kernel_size - 1
291
+ pad_r = 0
292
+ padding = [[0, 0], [0, 0], [pad_l, pad_r]]
293
+ x = F.pad(x, commons.convert_pad_shape(padding))
294
+ return x
295
+
296
+ def _same_padding(self, x):
297
+ if self.kernel_size == 1:
298
+ return x
299
+ pad_l = (self.kernel_size - 1) // 2
300
+ pad_r = self.kernel_size // 2
301
+ padding = [[0, 0], [0, 0], [pad_l, pad_r]]
302
+ x = F.pad(x, commons.convert_pad_shape(padding))
303
+ return x
commons.py ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import numpy as np
3
+ import torch
4
+ from torch import nn
5
+ from torch.nn import functional as F
6
+
7
+
8
+ def init_weights(m, mean=0.0, std=0.01):
9
+ classname = m.__class__.__name__
10
+ if classname.find("Conv") != -1:
11
+ m.weight.data.normal_(mean, std)
12
+
13
+
14
+ def get_padding(kernel_size, dilation=1):
15
+ return int((kernel_size*dilation - dilation)/2)
16
+
17
+
18
+ def convert_pad_shape(pad_shape):
19
+ l = pad_shape[::-1]
20
+ pad_shape = [item for sublist in l for item in sublist]
21
+ return pad_shape
22
+
23
+
24
+ def intersperse(lst, item):
25
+ result = [item] * (len(lst) * 2 + 1)
26
+ result[1::2] = lst
27
+ return result
28
+
29
+
30
+ def kl_divergence(m_p, logs_p, m_q, logs_q):
31
+ """KL(P||Q)"""
32
+ kl = (logs_q - logs_p) - 0.5
33
+ kl += 0.5 * (torch.exp(2. * logs_p) + ((m_p - m_q)**2)) * torch.exp(-2. * logs_q)
34
+ return kl
35
+
36
+
37
+ def rand_gumbel(shape):
38
+ """Sample from the Gumbel distribution, protect from overflows."""
39
+ uniform_samples = torch.rand(shape) * 0.99998 + 0.00001
40
+ return -torch.log(-torch.log(uniform_samples))
41
+
42
+
43
+ def rand_gumbel_like(x):
44
+ g = rand_gumbel(x.size()).to(dtype=x.dtype, device=x.device)
45
+ return g
46
+
47
+
48
+ def slice_segments(x, ids_str, segment_size=4):
49
+ ret = torch.zeros_like(x[:, :, :segment_size])
50
+ for i in range(x.size(0)):
51
+ idx_str = ids_str[i]
52
+ idx_end = idx_str + segment_size
53
+ try:
54
+ ret[i] = x[i, :, idx_str:idx_end]
55
+ except RuntimeError:
56
+ print("?")
57
+ return ret
58
+
59
+
60
+ def rand_slice_segments(x, x_lengths=None, segment_size=4):
61
+ b, d, t = x.size()
62
+ if x_lengths is None:
63
+ x_lengths = t
64
+ ids_str_max = x_lengths - segment_size + 1
65
+ ids_str = (torch.rand([b]).to(device=x.device) * ids_str_max).to(dtype=torch.long)
66
+ ret = slice_segments(x, ids_str, segment_size)
67
+ return ret, ids_str
68
+
69
+
70
+ def get_timing_signal_1d(
71
+ length, channels, min_timescale=1.0, max_timescale=1.0e4):
72
+ position = torch.arange(length, dtype=torch.float)
73
+ num_timescales = channels // 2
74
+ log_timescale_increment = (
75
+ math.log(float(max_timescale) / float(min_timescale)) /
76
+ (num_timescales - 1))
77
+ inv_timescales = min_timescale * torch.exp(
78
+ torch.arange(num_timescales, dtype=torch.float) * -log_timescale_increment)
79
+ scaled_time = position.unsqueeze(0) * inv_timescales.unsqueeze(1)
80
+ signal = torch.cat([torch.sin(scaled_time), torch.cos(scaled_time)], 0)
81
+ signal = F.pad(signal, [0, 0, 0, channels % 2])
82
+ signal = signal.view(1, channels, length)
83
+ return signal
84
+
85
+
86
+ def add_timing_signal_1d(x, min_timescale=1.0, max_timescale=1.0e4):
87
+ b, channels, length = x.size()
88
+ signal = get_timing_signal_1d(length, channels, min_timescale, max_timescale)
89
+ return x + signal.to(dtype=x.dtype, device=x.device)
90
+
91
+
92
+ def cat_timing_signal_1d(x, min_timescale=1.0, max_timescale=1.0e4, axis=1):
93
+ b, channels, length = x.size()
94
+ signal = get_timing_signal_1d(length, channels, min_timescale, max_timescale)
95
+ return torch.cat([x, signal.to(dtype=x.dtype, device=x.device)], axis)
96
+
97
+
98
+ def subsequent_mask(length):
99
+ mask = torch.tril(torch.ones(length, length)).unsqueeze(0).unsqueeze(0)
100
+ return mask
101
+
102
+
103
+ @torch.jit.script
104
+ def fused_add_tanh_sigmoid_multiply(input_a, input_b, n_channels):
105
+ n_channels_int = n_channels[0]
106
+ in_act = input_a + input_b
107
+ t_act = torch.tanh(in_act[:, :n_channels_int, :])
108
+ s_act = torch.sigmoid(in_act[:, n_channels_int:, :])
109
+ acts = t_act * s_act
110
+ return acts
111
+
112
+
113
+ def convert_pad_shape(pad_shape):
114
+ l = pad_shape[::-1]
115
+ pad_shape = [item for sublist in l for item in sublist]
116
+ return pad_shape
117
+
118
+
119
+ def shift_1d(x):
120
+ x = F.pad(x, convert_pad_shape([[0, 0], [0, 0], [1, 0]]))[:, :, :-1]
121
+ return x
122
+
123
+
124
+ def sequence_mask(length, max_length=None):
125
+ if max_length is None:
126
+ max_length = length.max()
127
+ x = torch.arange(max_length, dtype=length.dtype, device=length.device)
128
+ return x.unsqueeze(0) < length.unsqueeze(1)
129
+
130
+
131
+ def generate_path(duration, mask):
132
+ """
133
+ duration: [b, 1, t_x]
134
+ mask: [b, 1, t_y, t_x]
135
+ """
136
+ device = duration.device
137
+
138
+ b, _, t_y, t_x = mask.shape
139
+ cum_duration = torch.cumsum(duration, -1)
140
+
141
+ cum_duration_flat = cum_duration.view(b * t_x)
142
+ path = sequence_mask(cum_duration_flat, t_y).to(mask.dtype)
143
+ path = path.view(b, t_x, t_y)
144
+ path = path - F.pad(path, convert_pad_shape([[0, 0], [1, 0], [0, 0]]))[:, :-1]
145
+ path = path.unsqueeze(1).transpose(2,3) * mask
146
+ return path
147
+
148
+
149
+ def clip_grad_value_(parameters, clip_value, norm_type=2):
150
+ if isinstance(parameters, torch.Tensor):
151
+ parameters = [parameters]
152
+ parameters = list(filter(lambda p: p.grad is not None, parameters))
153
+ norm_type = float(norm_type)
154
+ if clip_value is not None:
155
+ clip_value = float(clip_value)
156
+
157
+ total_norm = 0
158
+ for p in parameters:
159
+ param_norm = p.grad.data.norm(norm_type)
160
+ total_norm += param_norm.item() ** norm_type
161
+ if clip_value is not None:
162
+ p.grad.data.clamp_(min=-clip_value, max=clip_value)
163
+ total_norm = total_norm ** (1. / norm_type)
164
+ return total_norm
configs/amitaro_jp_base.json ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "train": {
3
+ "log_interval": 200,
4
+ "eval_interval": 1000,
5
+ "seed": 1234,
6
+ "epochs": 10000,
7
+ "learning_rate": 2e-4,
8
+ "betas": [0.8, 0.99],
9
+ "eps": 1e-9,
10
+ "batch_size": 1,
11
+ "fp16_run": true,
12
+ "lr_decay": 0.999875,
13
+ "segment_size": 8192,
14
+ "init_lr_ratio": 1,
15
+ "warmup_epochs": 0,
16
+ "c_mel": 45,
17
+ "c_kl": 1.0
18
+ },
19
+ "data": {
20
+ "training_files":"./final_annotation_train.txt",
21
+ "validation_files":"./final_annotation_val.txt",
22
+ "text_cleaners":["japanese_cleaners"],
23
+ "max_wav_value": 32768.0,
24
+ "sampling_rate": 22050,
25
+ "filter_length": 1024,
26
+ "hop_length": 256,
27
+ "win_length": 1024,
28
+ "n_mel_channels": 80,
29
+ "mel_fmin": 0.0,
30
+ "mel_fmax": null,
31
+ "add_blank": true,
32
+ "n_speakers": 1,
33
+ "cleaned_text": true
34
+ },
35
+ "model": {
36
+ "inter_channels": 192,
37
+ "hidden_channels": 192,
38
+ "filter_channels": 768,
39
+ "n_heads": 2,
40
+ "n_layers": 6,
41
+ "kernel_size": 3,
42
+ "p_dropout": 0.1,
43
+ "resblock": "1",
44
+ "resblock_kernel_sizes": [3,7,11],
45
+ "resblock_dilation_sizes": [[1,3,5], [1,3,5], [1,3,5]],
46
+ "upsample_rates": [8,8,2,2],
47
+ "upsample_initial_channel": 512,
48
+ "upsample_kernel_sizes": [16,16,4,4],
49
+ "n_layers_q": 3,
50
+ "use_spectral_norm": false,
51
+ "gin_channels": 256
52
+ },
53
+ "speakers": {"amitaro":0
54
+ },
55
+ "symbols": ["_", ",", ".", "!", "?", "-", "A", "E", "I", "N", "O", "Q", "U", "a", "b", "d", "e", "f", "g", "h", "i", "j", "k", "m", "n", "o", "p", "r", "s", "t", "u", "v", "w", "y", "z", "\u0283", "\u02a7", "\u2193", "\u2191", " "]
56
+ }
data_utils.py ADDED
@@ -0,0 +1,276 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import time
2
+ import os
3
+ import random
4
+ import numpy as np
5
+ import torch
6
+ import torch.utils.data
7
+ import torchaudio
8
+
9
+ import commons
10
+ from mel_processing import spectrogram_torch
11
+ from utils import load_wav_to_torch, load_filepaths_and_text
12
+ from text import text_to_sequence, cleaned_text_to_sequence
13
+ """Multi speaker version"""
14
+
15
+
16
+ class TextAudioSpeakerLoader(torch.utils.data.Dataset):
17
+ """
18
+ 1) loads audio, speaker_id, text pairs
19
+ 2) normalizes text and converts them to sequences of integers
20
+ 3) computes spectrograms from audio files.
21
+ """
22
+
23
+ def __init__(self, audiopaths_sid_text, hparams, symbols):
24
+ self.audiopaths_sid_text = load_filepaths_and_text(audiopaths_sid_text)
25
+ self.text_cleaners = hparams.text_cleaners
26
+ self.max_wav_value = hparams.max_wav_value
27
+ self.sampling_rate = hparams.sampling_rate
28
+ self.filter_length = hparams.filter_length
29
+ self.hop_length = hparams.hop_length
30
+ self.win_length = hparams.win_length
31
+ self.sampling_rate = hparams.sampling_rate
32
+
33
+ self.cleaned_text = getattr(hparams, "cleaned_text", False)
34
+
35
+ self.add_blank = hparams.add_blank
36
+ self.min_text_len = getattr(hparams, "min_text_len", 1)
37
+ self.max_text_len = getattr(hparams, "max_text_len", 190)
38
+ self.symbols = symbols
39
+
40
+ random.seed(1234)
41
+ random.shuffle(self.audiopaths_sid_text)
42
+ self._filter()
43
+
44
+ def _filter(self):
45
+ """
46
+ Filter text & store spec lengths
47
+ """
48
+ # Store spectrogram lengths for Bucketing
49
+ # wav_length ~= file_size / (wav_channels * Bytes per dim) = file_size / (1 * 2)
50
+ # spec_length = wav_length // hop_length
51
+
52
+ audiopaths_sid_text_new = []
53
+ lengths = []
54
+ for audiopath, sid, text in self.audiopaths_sid_text:
55
+ # audiopath = "./user_voice/" + audiopath
56
+
57
+ if self.min_text_len <= len(text) and len(text) <= self.max_text_len:
58
+ audiopaths_sid_text_new.append([audiopath, sid, text])
59
+ lengths.append(os.path.getsize(audiopath) // (2 * self.hop_length))
60
+ self.audiopaths_sid_text = audiopaths_sid_text_new
61
+ self.lengths = lengths
62
+
63
+ def get_audio_text_speaker_pair(self, audiopath_sid_text):
64
+ # separate filename, speaker_id and text
65
+ audiopath, sid, text = audiopath_sid_text[0], audiopath_sid_text[1], audiopath_sid_text[2]
66
+ text = self.get_text(text)
67
+ spec, wav = self.get_audio(audiopath)
68
+ sid = self.get_sid(sid)
69
+ return (text, spec, wav, sid)
70
+
71
+ def get_audio(self, filename):
72
+ # audio, sampling_rate = load_wav_to_torch(filename)
73
+ # if sampling_rate != self.sampling_rate:
74
+ # raise ValueError("{} {} SR doesn't match target {} SR".format(
75
+ # sampling_rate, self.sampling_rate))
76
+ # audio_norm = audio / self.max_wav_value if audio.max() > 10 else audio
77
+ # audio_norm = audio_norm.unsqueeze(0)
78
+ audio_norm, sampling_rate = torchaudio.load(filename, frame_offset=0, num_frames=-1, normalize=True, channels_first=True)
79
+ # spec_filename = filename.replace(".wav", ".spec.pt")
80
+ # if os.path.exists(spec_filename):
81
+ # spec = torch.load(spec_filename)
82
+ # else:
83
+ # try:
84
+ spec = spectrogram_torch(audio_norm, self.filter_length,
85
+ self.sampling_rate, self.hop_length, self.win_length,
86
+ center=False)
87
+ spec = spec.squeeze(0)
88
+ # except NotImplementedError:
89
+ # print("?")
90
+ # spec = torch.squeeze(spec, 0)
91
+ # torch.save(spec, spec_filename)
92
+ return spec, audio_norm
93
+
94
+ def get_text(self, text):
95
+ if self.cleaned_text:
96
+ text_norm = cleaned_text_to_sequence(text, self.symbols)
97
+ else:
98
+ text_norm = text_to_sequence(text, self.text_cleaners)
99
+ if self.add_blank:
100
+ text_norm = commons.intersperse(text_norm, 0)
101
+ text_norm = torch.LongTensor(text_norm)
102
+ return text_norm
103
+
104
+ def get_sid(self, sid):
105
+ sid = torch.LongTensor([int(sid)])
106
+ return sid
107
+
108
+ def __getitem__(self, index):
109
+ return self.get_audio_text_speaker_pair(self.audiopaths_sid_text[index])
110
+
111
+ def __len__(self):
112
+ return len(self.audiopaths_sid_text)
113
+
114
+
115
+ class TextAudioSpeakerCollate():
116
+ """ Zero-pads model inputs and targets
117
+ """
118
+
119
+ def __init__(self, return_ids=False):
120
+ self.return_ids = return_ids
121
+
122
+ def __call__(self, batch):
123
+ """Collate's training batch from normalized text, audio and speaker identities
124
+ PARAMS
125
+ ------
126
+ batch: [text_normalized, spec_normalized, wav_normalized, sid]
127
+ """
128
+ # Right zero-pad all one-hot text sequences to max input length
129
+ _, ids_sorted_decreasing = torch.sort(
130
+ torch.LongTensor([x[1].size(1) for x in batch]),
131
+ dim=0, descending=True)
132
+
133
+ max_text_len = max([len(x[0]) for x in batch])
134
+ max_spec_len = max([x[1].size(1) for x in batch])
135
+ max_wav_len = max([x[2].size(1) for x in batch])
136
+
137
+ text_lengths = torch.LongTensor(len(batch))
138
+ spec_lengths = torch.LongTensor(len(batch))
139
+ wav_lengths = torch.LongTensor(len(batch))
140
+ sid = torch.LongTensor(len(batch))
141
+
142
+ text_padded = torch.LongTensor(len(batch), max_text_len)
143
+ spec_padded = torch.FloatTensor(len(batch), batch[0][1].size(0), max_spec_len)
144
+ wav_padded = torch.FloatTensor(len(batch), 1, max_wav_len)
145
+ text_padded.zero_()
146
+ spec_padded.zero_()
147
+ wav_padded.zero_()
148
+ for i in range(len(ids_sorted_decreasing)):
149
+ row = batch[ids_sorted_decreasing[i]]
150
+
151
+ text = row[0]
152
+ text_padded[i, :text.size(0)] = text
153
+ text_lengths[i] = text.size(0)
154
+
155
+ spec = row[1]
156
+ spec_padded[i, :, :spec.size(1)] = spec
157
+ spec_lengths[i] = spec.size(1)
158
+
159
+ wav = row[2]
160
+ wav_padded[i, :, :wav.size(1)] = wav
161
+ wav_lengths[i] = wav.size(1)
162
+
163
+ sid[i] = row[3]
164
+
165
+ if self.return_ids:
166
+ return text_padded, text_lengths, spec_padded, spec_lengths, wav_padded, wav_lengths, sid, ids_sorted_decreasing
167
+ return text_padded, text_lengths, spec_padded, spec_lengths, wav_padded, wav_lengths, sid
168
+
169
+
170
+ class DistributedBucketSampler(torch.utils.data.distributed.DistributedSampler):
171
+ """
172
+ Maintain similar input lengths in a batch.
173
+ Length groups are specified by boundaries.
174
+ Ex) boundaries = [b1, b2, b3] -> any batch is included either {x | b1 < length(x) <=b2} or {x | b2 < length(x) <= b3}.
175
+
176
+ It removes samples which are not included in the boundaries.
177
+ Ex) boundaries = [b1, b2, b3] -> any x s.t. length(x) <= b1 or length(x) > b3 are discarded.
178
+ """
179
+
180
+ def __init__(self, dataset, batch_size, boundaries, num_replicas=None, rank=None, shuffle=True):
181
+ super().__init__(dataset, num_replicas=num_replicas, rank=rank, shuffle=shuffle)
182
+ self.lengths = dataset.lengths
183
+ self.batch_size = batch_size
184
+ self.boundaries = boundaries
185
+
186
+ self.buckets, self.num_samples_per_bucket = self._create_buckets()
187
+ self.total_size = sum(self.num_samples_per_bucket)
188
+ self.num_samples = self.total_size // self.num_replicas
189
+
190
+ def _create_buckets(self):
191
+ buckets = [[] for _ in range(len(self.boundaries) - 1)]
192
+ for i in range(len(self.lengths)):
193
+ length = self.lengths[i]
194
+ idx_bucket = self._bisect(length)
195
+ if idx_bucket != -1:
196
+ buckets[idx_bucket].append(i)
197
+
198
+ try:
199
+ for i in range(len(buckets) - 1, 0, -1):
200
+ if len(buckets[i]) == 0:
201
+ buckets.pop(i)
202
+ self.boundaries.pop(i + 1)
203
+ assert all(len(bucket) > 0 for bucket in buckets)
204
+ # When one bucket is not traversed
205
+ except Exception as e:
206
+ print('Bucket warning ', e)
207
+ for i in range(len(buckets) - 1, -1, -1):
208
+ if len(buckets[i]) == 0:
209
+ buckets.pop(i)
210
+ self.boundaries.pop(i + 1)
211
+
212
+ num_samples_per_bucket = []
213
+ for i in range(len(buckets)):
214
+ len_bucket = len(buckets[i])
215
+ total_batch_size = self.num_replicas * self.batch_size
216
+ rem = (total_batch_size - (len_bucket % total_batch_size)) % total_batch_size
217
+ num_samples_per_bucket.append(len_bucket + rem)
218
+ return buckets, num_samples_per_bucket
219
+
220
+ def __iter__(self):
221
+ # deterministically shuffle based on epoch
222
+ g = torch.Generator()
223
+ g.manual_seed(self.epoch)
224
+
225
+ indices = []
226
+ if self.shuffle:
227
+ for bucket in self.buckets:
228
+ indices.append(torch.randperm(len(bucket), generator=g).tolist())
229
+ else:
230
+ for bucket in self.buckets:
231
+ indices.append(list(range(len(bucket))))
232
+
233
+ batches = []
234
+ for i in range(len(self.buckets)):
235
+ bucket = self.buckets[i]
236
+ len_bucket = len(bucket)
237
+ ids_bucket = indices[i]
238
+ num_samples_bucket = self.num_samples_per_bucket[i]
239
+
240
+ # add extra samples to make it evenly divisible
241
+ rem = num_samples_bucket - len_bucket
242
+ ids_bucket = ids_bucket + ids_bucket * (rem // len_bucket) + ids_bucket[:(rem % len_bucket)]
243
+
244
+ # subsample
245
+ ids_bucket = ids_bucket[self.rank::self.num_replicas]
246
+
247
+ # batching
248
+ for j in range(len(ids_bucket) // self.batch_size):
249
+ batch = [bucket[idx] for idx in ids_bucket[j * self.batch_size:(j + 1) * self.batch_size]]
250
+ batches.append(batch)
251
+
252
+ if self.shuffle:
253
+ batch_ids = torch.randperm(len(batches), generator=g).tolist()
254
+ batches = [batches[i] for i in batch_ids]
255
+ self.batches = batches
256
+
257
+ assert len(self.batches) * self.batch_size == self.num_samples
258
+ return iter(self.batches)
259
+
260
+ def _bisect(self, x, lo=0, hi=None):
261
+ if hi is None:
262
+ hi = len(self.boundaries) - 1
263
+
264
+ if hi > lo:
265
+ mid = (hi + lo) // 2
266
+ if self.boundaries[mid] < x and x <= self.boundaries[mid + 1]:
267
+ return mid
268
+ elif x <= self.boundaries[mid]:
269
+ return self._bisect(x, lo, mid)
270
+ else:
271
+ return self._bisect(x, mid + 1, hi)
272
+ else:
273
+ return -1
274
+
275
+ def __len__(self):
276
+ return self.num_samples // self.batch_size
dict/COPYING ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2009, Nara Institute of Science and Technology, Japan.
2
+
3
+ All rights reserved.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are
7
+ met:
8
+
9
+ Redistributions of source code must retain the above copyright notice,
10
+ this list of conditions and the following disclaimer.
11
+ Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+ Neither the name of the Nara Institute of Science and Technology
15
+ (NAIST) nor the names of its contributors may be used to endorse or
16
+ promote products derived from this software without specific prior
17
+ written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
23
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ Copyright (c) 2011-2017, The UniDic Consortium
32
+ All rights reserved.
33
+
34
+ Redistribution and use in source and binary forms, with or without
35
+ modification, are permitted provided that the following conditions are
36
+ met:
37
+
38
+ * Redistributions of source code must retain the above copyright
39
+ notice, this list of conditions and the following disclaimer.
40
+
41
+ * Redistributions in binary form must reproduce the above copyright
42
+ notice, this list of conditions and the following disclaimer in the
43
+ documentation and/or other materials provided with the
44
+ distribution.
45
+
46
+ * Neither the name of the UniDic Consortium nor the names of its
47
+ contributors may be used to endorse or promote products derived
48
+ from this software without specific prior written permission.
49
+
50
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
51
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
52
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
53
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
54
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
55
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
56
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
57
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
58
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
59
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
60
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
61
+
62
+ /* ----------------------------------------------------------------- */
63
+ /* The Japanese TTS System "Open JTalk" */
64
+ /* developed by HTS Working Group */
65
+ /* http://open-jtalk.sourceforge.net/ */
66
+ /* ----------------------------------------------------------------- */
67
+ /* */
68
+ /* Copyright (c) 2008-2016 Nagoya Institute of Technology */
69
+ /* Department of Computer Science */
70
+ /* */
71
+ /* All rights reserved. */
72
+ /* */
73
+ /* Redistribution and use in source and binary forms, with or */
74
+ /* without modification, are permitted provided that the following */
75
+ /* conditions are met: */
76
+ /* */
77
+ /* - Redistributions of source code must retain the above copyright */
78
+ /* notice, this list of conditions and the following disclaimer. */
79
+ /* - Redistributions in binary form must reproduce the above */
80
+ /* copyright notice, this list of conditions and the following */
81
+ /* disclaimer in the documentation and/or other materials provided */
82
+ /* with the distribution. */
83
+ /* - Neither the name of the HTS working group nor the names of its */
84
+ /* contributors may be used to endorse or promote products derived */
85
+ /* from this software without specific prior written permission. */
86
+ /* */
87
+ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND */
88
+ /* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, */
89
+ /* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
90
+ /* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
91
+ /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS */
92
+ /* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, */
93
+ /* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
94
+ /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
95
+ /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON */
96
+ /* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */
97
+ /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY */
98
+ /* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
99
+ /* POSSIBILITY OF SUCH DAMAGE. */
100
+ /* ----------------------------------------------------------------- */
dict/char.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:888ee94c5a8a7a26d24ab3f1b7155441351954fd51ea06b4a2f78bd742492b2f
3
+ size 262496
dict/left-id.def ADDED
@@ -0,0 +1,1377 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 0 BOS/EOS,*,*,*,*,*,BOS/EOS
2
+ 1 その他,間投,*,*,*,*,*
3
+ 2 フィラー,*,*,*,*,*,*
4
+ 3 感動詞,*,*,*,*,*,*
5
+ 4 記号,アルファベット,*,*,*,*,*
6
+ 5 記号,一般,*,*,*,*,*
7
+ 6 記号,括弧開,*,*,*,*,BOS/EOS
8
+ 7 記号,括弧閉,*,*,*,*,BOS/EOS
9
+ 8 記号,句点,*,*,*,*,BOS/EOS
10
+ 9 記号,空白,*,*,*,*,*
11
+ 10 記号,読点,*,*,*,*,*
12
+ 11 形容詞,自立,*,*,形容詞・アウオ段,*,*
13
+ 12 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,*
14
+ 13 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,無い
15
+ 14 形容詞,自立,*,*,形容詞・アウオ段,仮定形,*
16
+ 15 形容詞,自立,*,*,形容詞・アウオ段,仮定形,無い
17
+ 16 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約1,*
18
+ 17 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約1,無い
19
+ 18 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約2,*
20
+ 19 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約2,無い
21
+ 20 形容詞,自立,*,*,形容詞・アウオ段,基本形,*
22
+ 21 形容詞,自立,*,*,形容詞・アウオ段,基本形,無い
23
+ 22 形容詞,自立,*,*,形容詞・アウオ段,体言接続,*
24
+ 23 形容詞,自立,*,*,形容詞・アウオ段,体言接続,無い
25
+ 24 形容詞,自立,*,*,形容詞・アウオ段,文語基本形,*
26
+ 25 形容詞,自立,*,*,形容詞・アウオ段,文語基本形,無い
27
+ 26 形容詞,自立,*,*,形容詞・アウオ段,未然ウ接続,*
28
+ 27 形容詞,自立,*,*,形容詞・アウオ段,未然ウ接続,無い
29
+ 28 形容詞,自立,*,*,形容詞・アウオ段,未然ヌ接続,*
30
+ 29 形容詞,自立,*,*,形容詞・アウオ段,未然ヌ接続,無い
31
+ 30 形容詞,自立,*,*,形容詞・アウオ段,命令e,*
32
+ 31 形容詞,自立,*,*,形容詞・アウオ段,命令e,無い
33
+ 32 形容詞,自立,*,*,形容詞・アウオ段,連用ゴザイ接続,*
34
+ 33 形容詞,自立,*,*,形容詞・アウオ段,連用ゴザイ接続,無い
35
+ 34 形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,*
36
+ 35 形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,無い
37
+ 36 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,*
38
+ 37 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,無い
39
+ 38 形容詞,自立,*,*,形容詞・イ段,ガル接続,*
40
+ 39 形容詞,自立,*,*,形容詞・イ段,仮定形,*
41
+ 40 形容詞,自立,*,*,形容詞・イ段,仮定縮約1,*
42
+ 41 形容詞,自立,*,*,形容詞・イ段,仮定縮約2,*
43
+ 42 形容詞,自立,*,*,形容詞・イ段,基本形,*
44
+ 43 形容詞,自立,*,*,形容詞・イ段,体言接続,*
45
+ 44 形容詞,自立,*,*,形容詞・イ段,文語基本形,*
46
+ 45 形容詞,自立,*,*,形容詞・イ段,未然ウ接続,*
47
+ 46 形容詞,自立,*,*,形容詞・イ段,未然ヌ接続,*
48
+ 47 形容詞,自立,*,*,形容詞・イ段,命令e,*
49
+ 48 形容詞,自立,*,*,形容詞・イ段,連用ゴザイ接続,*
50
+ 49 形容詞,自立,*,*,形容詞・イ段,連用タ接続,*
51
+ 50 形容詞,自立,*,*,形容詞・イ段,連用テ接続,*
52
+ 51 形容詞,自立,*,*,不変化型,基本形,*
53
+ 52 形容詞,接尾,*,*,形容詞・アウオ段,ガル接続,*
54
+ 53 形容詞,接尾,*,*,形容詞・アウオ段,ガル接続,たらしい
55
+ 54 形容詞,接尾,*,*,形容詞・アウオ段,ガル接続,臭い
56
+ 55 形容詞,接尾,*,*,形容詞・アウオ段,仮定形,*
57
+ 56 形容詞,接尾,*,*,形容詞・アウオ段,仮定形,たらしい
58
+ 57 形容詞,接尾,*,*,形容詞・アウオ段,仮定形,臭い
59
+ 58 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約1,*
60
+ 59 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約1,たらしい
61
+ 60 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約1,臭い
62
+ 61 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約2,*
63
+ 62 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約2,たらしい
64
+ 63 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約2,臭い
65
+ 64 形容詞,接尾,*,*,形容詞・アウオ段,基本形,*
66
+ 65 形容詞,接尾,*,*,形容詞・アウオ段,基本形,たらしい
67
+ 66 形容詞,接尾,*,*,形容詞・アウオ段,基本形,臭い
68
+ 67 形容詞,接尾,*,*,形容詞・アウオ段,体言接続,*
69
+ 68 形容詞,接尾,*,*,形容詞・アウオ段,体言接続,たらしい
70
+ 69 形容詞,接尾,*,*,形容詞・アウオ段,体言接続,臭い
71
+ 70 形容詞,接尾,*,*,形容詞・アウオ段,文語基本形,*
72
+ 71 形容詞,接尾,*,*,形容詞・アウオ段,文語基本形,たらしい
73
+ 72 形容詞,接尾,*,*,形容詞・アウオ段,文語基本形,臭い
74
+ 73 形容詞,接尾,*,*,形容詞・アウオ段,未然ウ接続,*
75
+ 74 形容詞,接尾,*,*,形容詞・アウオ段,未然ウ接続,たらしい
76
+ 75 形容詞,接尾,*,*,形容詞・アウオ段,未然ウ接続,臭い
77
+ 76 形容詞,接尾,*,*,形容詞・アウオ段,未然ヌ接続,*
78
+ 77 形容詞,接尾,*,*,形容詞・アウオ段,未然ヌ接続,たらしい
79
+ 78 形容詞,接尾,*,*,形容詞・アウオ段,未然ヌ接続,臭い
80
+ 79 形容詞,接尾,*,*,形容詞・アウオ段,命令e,*
81
+ 80 形容詞,接尾,*,*,形容詞・アウオ段,命令e,たらしい
82
+ 81 形容詞,接尾,*,*,形容詞・アウオ段,命令e,臭い
83
+ 82 形容詞,接尾,*,*,形容詞・アウオ段,連用ゴザイ接続,*
84
+ 83 形容詞,接尾,*,*,形容詞・アウオ段,連用ゴザイ接続,たらしい
85
+ 84 形容詞,接尾,*,*,形容詞・アウオ段,連用ゴザイ接続,臭い
86
+ 85 形容詞,接尾,*,*,形容詞・アウオ段,連用タ接続,*
87
+ 86 形容詞,接尾,*,*,形容詞・アウオ段,連用タ接続,たらしい
88
+ 87 形容詞,接尾,*,*,形容詞・アウオ段,連用タ接続,臭い
89
+ 88 形容詞,接尾,*,*,形容詞・アウオ段,連用テ接続,*
90
+ 89 形容詞,接尾,*,*,形容詞・アウオ段,連用テ接続,たらしい
91
+ 90 形容詞,接尾,*,*,形容詞・アウオ段,連用テ接続,臭い
92
+ 91 形容詞,接尾,*,*,形容詞・イ段,ガル接続,*
93
+ 92 形容詞,接尾,*,*,形容詞・イ段,ガル接続,たらしい
94
+ 93 形容詞,接尾,*,*,形容詞・イ段,仮定形,*
95
+ 94 形容詞,接尾,*,*,形容詞・イ段,仮定形,たらしい
96
+ 95 形容詞,接尾,*,*,形容詞・イ段,仮定縮約1,*
97
+ 96 形容詞,接尾,*,*,形容詞・イ段,仮定縮約1,たらしい
98
+ 97 形容詞,接尾,*,*,形容詞・イ段,仮定縮約2,*
99
+ 98 形容詞,接尾,*,*,形容詞・イ段,仮定縮約2,たらしい
100
+ 99 形容詞,接尾,*,*,形容詞・イ段,基本形,*
101
+ 100 形容詞,接尾,*,*,形容詞・イ段,基本形,たらしい
102
+ 101 形容詞,接尾,*,*,形容詞・イ段,体言接続,*
103
+ 102 形容詞,接尾,*,*,形容詞・イ段,体言接続,たらしい
104
+ 103 形容詞,接尾,*,*,形容詞・イ段,文語基本形,*
105
+ 104 形容詞,接尾,*,*,形容詞・イ段,文語基本形,たらしい
106
+ 105 形容詞,接尾,*,*,形容詞・イ段,未然ウ接続,*
107
+ 106 形容詞,接尾,*,*,形容詞・イ段,未然ウ接続,たらしい
108
+ 107 形容詞,接尾,*,*,形容詞・イ段,未然ヌ接続,*
109
+ 108 形容詞,接尾,*,*,形容詞・イ段,未然ヌ接続,たらしい
110
+ 109 形容詞,接尾,*,*,形容詞・イ段,命令e,*
111
+ 110 形容詞,接尾,*,*,形容詞・イ段,命令e,たらしい
112
+ 111 形容詞,接尾,*,*,形容詞・イ段,連用ゴザイ接続,*
113
+ 112 形容詞,接尾,*,*,形容詞・イ段,連用ゴザイ接続,たらしい
114
+ 113 形容詞,接尾,*,*,形容詞・イ段,連用タ接続,*
115
+ 114 形容詞,接尾,*,*,形容詞・イ段,連用タ接続,たらしい
116
+ 115 形容詞,接尾,*,*,形容詞・イ段,連用テ接続,*
117
+ 116 形容詞,接尾,*,*,形容詞・イ段,連用テ接続,たらしい
118
+ 117 形容詞,非自立,*,*,形容詞・アウオ段,*,*
119
+ 118 形容詞,非自立,*,*,形容詞・アウオ段,ガル接続,*
120
+ 119 形容詞,非自立,*,*,形容詞・アウオ段,ガル接続,難い
121
+ 120 形容詞,非自立,*,*,形容詞・アウオ段,ガル接続,良い
122
+ 121 形容詞,非自立,*,*,形容詞・アウオ段,仮定形,*
123
+ 122 形容詞,非自立,*,*,形容詞・アウオ段,仮定形,難い
124
+ 123 形容詞,非自立,*,*,形容詞・アウオ段,仮定形,良い
125
+ 124 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約1,*
126
+ 125 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約1,難い
127
+ 126 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約1,良い
128
+ 127 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約2,*
129
+ 128 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約2,難い
130
+ 129 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約2,良い
131
+ 130 形容詞,非自立,*,*,形容詞・アウオ段,基本形,難い
132
+ 131 形容詞,非自立,*,*,形容詞・アウオ段,基本形,良い
133
+ 132 形容詞,非自立,*,*,形容詞・アウオ段,体言接続,*
134
+ 133 形容詞,非自立,*,*,形容詞・アウオ段,体言接続,難い
135
+ 134 形容詞,非自立,*,*,形容詞・アウオ段,体言接続,良い
136
+ 135 形容詞,非自立,*,*,形容詞・アウオ段,文語基本形,*
137
+ 136 形容詞,非自立,*,*,形容詞・アウオ段,文語基本形,難い
138
+ 137 形容詞,非自立,*,*,形容詞・アウオ段,文語基本形,良い
139
+ 138 形容詞,非自立,*,*,形容詞・アウオ段,未然ウ接続,*
140
+ 139 形容詞,非自立,*,*,形容詞・アウオ段,未然ウ接続,難い
141
+ 140 形容詞,非自立,*,*,形容詞・アウオ段,未然ウ接続,良い
142
+ 141 形容詞,非自立,*,*,形容詞・アウオ段,未然ヌ接続,*
143
+ 142 形容詞,非自立,*,*,形容詞・アウオ段,未然ヌ接続,難い
144
+ 143 形容詞,非自立,*,*,形容詞・アウオ段,未然ヌ接続,良い
145
+ 144 形容詞,非自立,*,*,形容詞・アウオ段,命令e,*
146
+ 145 形容詞,非自立,*,*,形容詞・アウオ段,命令e,難い
147
+ 146 形容詞,非自立,*,*,形容詞・アウオ段,命令e,良い
148
+ 147 形容詞,非自立,*,*,形容詞・アウオ段,連用ゴザイ接続,*
149
+ 148 形容詞,非自立,*,*,形容詞・アウオ段,連用ゴザイ接続,難い
150
+ 149 形容詞,非自立,*,*,形容詞・アウオ段,連用ゴザイ接続,良い
151
+ 150 形容詞,非自立,*,*,形容詞・アウオ段,連用タ接続,*
152
+ 151 形容詞,非自立,*,*,形容詞・アウオ段,連用タ接続,難い
153
+ 152 形容詞,非自立,*,*,形容詞・アウオ段,連用タ接続,良い
154
+ 153 形容詞,非自立,*,*,形容詞・アウオ段,連用テ接続,*
155
+ 154 形容詞,非自立,*,*,形容詞・アウオ段,連用テ接続,難い
156
+ 155 形容詞,非自立,*,*,形容詞・アウオ段,連用テ接続,良い
157
+ 156 形容詞,非自立,*,*,形容詞・イ段,ガル接続,欲しい
158
+ 157 形容詞,非自立,*,*,形容詞・イ段,仮定形,欲しい
159
+ 158 形容詞,非自立,*,*,形容詞・イ段,仮定縮約1,欲しい
160
+ 159 形容詞,非自立,*,*,形容詞・イ段,仮定縮約2,欲しい
161
+ 160 形容詞,非自立,*,*,形容詞・イ段,基本形,欲しい
162
+ 161 形容詞,非自立,*,*,形容詞・イ段,体言接続,欲しい
163
+ 162 形容詞,非自立,*,*,形容詞・イ段,文語基本形,欲しい
164
+ 163 形容詞,非自立,*,*,形容詞・イ段,未然ウ接続,欲しい
165
+ 164 形容詞,非自立,*,*,形容詞・イ段,未然ヌ接続,欲しい
166
+ 165 形容詞,非自立,*,*,形容詞・イ段,命令e,欲しい
167
+ 166 形容詞,非自立,*,*,形容詞・イ段,連用ゴザイ接続,欲しい
168
+ 167 形容詞,非自立,*,*,形容詞・イ段,連用タ接続,欲しい
169
+ 168 形容詞,非自立,*,*,形容詞・イ段,連用テ接続,欲しい
170
+ 169 助詞,格助詞,一般,*,*,*,から
171
+ 170 助詞,格助詞,一般,*,*,*,が
172
+ 171 助詞,格助詞,一般,*,*,*,つ
173
+ 172 助詞,格助詞,一般,*,*,*,で
174
+ 173 助詞,格助詞,一般,*,*,*,と
175
+ 174 助詞,格助詞,一般,*,*,*,に
176
+ 175 助詞,格助詞,一般,*,*,*,にて
177
+ 176 助詞,格助詞,一般,*,*,*,の
178
+ 177 助詞,格助詞,一般,*,*,*,へ
179
+ 178 助詞,格助詞,一般,*,*,*,より
180
+ 179 助詞,格助詞,一般,*,*,*,を
181
+ 180 助詞,格助詞,一般,*,*,*,ん
182
+ 181 助詞,格助詞,一般,*,*,*,デ
183
+ 182 助詞,格助詞,一般,*,*,*,ノ
184
+ 183 助詞,格助詞,一般,*,*,*,ヘ
185
+ 184 助詞,格助詞,一般,*,*,*,ヲ
186
+ 185 助詞,格助詞,一般,*,*,*,之
187
+ 186 助詞,格助詞,引用,*,*,*,っと
188
+ 187 助詞,格助詞,引用,*,*,*,と
189
+ 188 助詞,格助詞,連語,*,*,*,じゃ
190
+ 189 助詞,格助詞,連語,*,*,*,っちゅう
191
+ 190 助詞,格助詞,連語,*,*,*,って
192
+ 191 助詞,格助詞,連語,*,*,*,っていう
193
+ 192 助詞,格助詞,連語,*,*,*,ってな
194
+ 193 助詞,格助詞,連語,*,*,*,て
195
+ 194 助詞,格助詞,連語,*,*,*,ていう
196
+ 195 助詞,格助詞,連語,*,*,*,といいます
197
+ 196 助詞,格助詞,連語,*,*,*,という
198
+ 197 助詞,格助詞,連語,*,*,*,といった
199
+ 198 助詞,格助詞,連語,*,*,*,といふ
200
+ 199 助詞,格助詞,連語,*,*,*,とかいいます
201
+ 200 助詞,格助詞,連語,*,*,*,とかいう
202
+ 201 助詞,格助詞,連語,*,*,*,とかいふ
203
+ 202 助詞,格助詞,連語,*,*,*,として
204
+ 203 助詞,格助詞,連語,*,*,*,としましたら
205
+ 204 助詞,格助詞,連語,*,*,*,としまして
206
+ 205 助詞,格助詞,連語,*,*,*,とともに
207
+ 206 助詞,格助詞,連語,*,*,*,と共に
208
+ 207 助詞,格助詞,連語,*,*,*,にあたって
209
+ 208 助詞,格助詞,連語,*,*,*,にあたり
210
+ 209 助詞,格助詞,連語,*,*,*,にあたりまして
211
+ 210 助詞,格助詞,連語,*,*,*,にあたります
212
+ 211 助詞,格助詞,連語,*,*,*,にあたる
213
+ 212 助詞,格助詞,連語,*,*,*,において
214
+ 213 助詞,格助詞,連語,*,*,*,におきまして
215
+ 214 助詞,格助詞,連語,*,*,*,における
216
+ 215 助詞,格助詞,連語,*,*,*,にかけ
217
+ 216 助詞,格助詞,連語,*,*,*,にかけて
218
+ 217 助詞,格助詞,連語,*,*,*,にかけまして
219
+ 218 助詞,格助詞,連語,*,*,*,にたいして
220
+ 219 助詞,格助詞,連語,*,*,*,にたいしまして
221
+ 220 助詞,格助詞,連語,*,*,*,にたいします
222
+ 221 助詞,格助詞,連語,*,*,*,にたいする
223
+ 222 助詞,格助詞,連語,*,*,*,について
224
+ 223 助詞,格助詞,連語,*,*,*,につき
225
+ 224 助詞,格助詞,連語,*,*,*,につきまして
226
+ 225 助詞,格助詞,連語,*,*,*,につけ
227
+ 226 助詞,格助詞,連語,*,*,*,につれ
228
+ 227 助詞,格助詞,連語,*,*,*,につれて
229
+ 228 助詞,格助詞,連語,*,*,*,にとって
230
+ 229 助詞,格助詞,連語,*,*,*,にとり
231
+ 230 助詞,格助詞,連語,*,*,*,にとりまして
232
+ 231 助詞,格助詞,連語,*,*,*,にまつわります
233
+ 232 助詞,格助詞,連語,*,*,*,にまつわる
234
+ 233 助詞,格助詞,連語,*,*,*,によって
235
+ 234 助詞,格助詞,連語,*,*,*,により
236
+ 235 助詞,格助詞,連語,*,*,*,によりまして
237
+ 236 助詞,格助詞,連語,*,*,*,によります
238
+ 237 助詞,格助詞,連語,*,*,*,による
239
+ 238 助詞,格助詞,連語,*,*,*,にわたって
240
+ 239 助詞,格助詞,連語,*,*,*,にわたり
241
+ 240 助詞,格助詞,連語,*,*,*,にわたりまして
242
+ 241 助詞,格助詞,連語,*,*,*,にわたります
243
+ 242 助詞,格助詞,連語,*,*,*,にわたる
244
+ 243 助詞,格助詞,連語,*,*,*,に関し
245
+ 244 助詞,格助詞,連語,*,*,*,に関して
246
+ 245 助詞,格助詞,連語,*,*,*,に関しまして
247
+ 246 助詞,格助詞,連語,*,*,*,に関します
248
+ 247 助詞,格助詞,連語,*,*,*,に関する
249
+ 248 助詞,格助詞,連語,*,*,*,に際し
250
+ 249 助詞,格助詞,連語,*,*,*,に際して
251
+ 250 助詞,格助詞,連語,*,*,*,に際しまして
252
+ 251 助詞,格助詞,連語,*,*,*,に従い
253
+ 252 助詞,格助詞,連語,*,*,*,に従いまして
254
+ 253 助詞,格助詞,連語,*,*,*,に従います
255
+ 254 助詞,格助詞,連語,*,*,*,に従う
256
+ 255 助詞,格助詞,連語,*,*,*,に従って
257
+ 256 助詞,格助詞,連語,*,*,*,に対し
258
+ 257 助詞,格助詞,連語,*,*,*,に対して
259
+ 258 助詞,格助詞,連語,*,*,*,に対しまして
260
+ 259 助詞,格助詞,連語,*,*,*,に対します
261
+ 260 助詞,格助詞,連語,*,*,*,に対する
262
+ 261 助詞,格助詞,連語,*,*,*,に当たって
263
+ 262 助詞,格助詞,連語,*,*,*,に当たり
264
+ 263 助詞,格助詞,連語,*,*,*,に当たりまして
265
+ 264 助詞,格助詞,連語,*,*,*,に当たります
266
+ 265 助詞,格助詞,連語,*,*,*,に当たる
267
+ 266 助詞,格助詞,連語,*,*,*,をめぐって
268
+ 267 助詞,格助詞,連語,*,*,*,をめぐりまして
269
+ 268 助詞,格助詞,連語,*,*,*,をめぐります
270
+ 269 助詞,格助詞,連語,*,*,*,をめぐる
271
+ 270 助詞,格助詞,連語,*,*,*,をもちまして
272
+ 271 助詞,格助詞,連語,*,*,*,をもって
273
+ 272 助詞,格助詞,連語,*,*,*,を以て
274
+ 273 助詞,格助詞,連語,*,*,*,を通して
275
+ 274 助詞,格助詞,連語,*,*,*,を通しまして
276
+ 275 助詞,格助詞,連語,*,*,*,を通じ
277
+ 276 助詞,格助詞,連語,*,*,*,を通じて
278
+ 277 助詞,格助詞,連語,*,*,*,を通じまして
279
+ 278 助詞,係助詞,*,*,*,*,こそ
280
+ 279 助詞,係助詞,*,*,*,*,さえ
281
+ 280 助詞,係助詞,*,*,*,*,しか
282
+ 281 助詞,係助詞,*,*,*,*,すら
283
+ 282 助詞,係助詞,*,*,*,*,ぞ
284
+ 283 助詞,係助詞,*,*,*,*,っきゃ
285
+ 284 助詞,係助詞,*,*,*,*,は
286
+ 285 助詞,係助詞,*,*,*,*,も
287
+ 286 助詞,係助詞,*,*,*,*,や
288
+ 287 助詞,終助詞,*,*,*,*,かぁ
289
+ 288 助詞,終助詞,*,*,*,*,かい
290
+ 289 助詞,終助詞,*,*,*,*,かしら
291
+ 290 助詞,終助詞,*,*,*,*,け
292
+ 291 助詞,終助詞,*,*,*,*,さ
293
+ 292 助詞,終助詞,*,*,*,*,ぜ
294
+ 293 助詞,終助詞,*,*,*,*,ぞ
295
+ 294 助詞,終助詞,*,*,*,*,だって
296
+ 295 助詞,終助詞,*,*,*,*,っけ
297
+ 296 助詞,終助詞,*,*,*,*,てん
298
+ 297 助詞,終助詞,*,*,*,*,で
299
+ 298 助詞,終助詞,*,*,*,*,な
300
+ 299 助詞,終助詞,*,*,*,*,なー
301
+ 300 助詞,終助詞,*,*,*,*,なぁー
302
+ 301 助詞,終助詞,*,*,*,*,なァ
303
+ 302 助詞,終助詞,*,*,*,*,ね
304
+ 303 助詞,終助詞,*,*,*,*,ねー
305
+ 304 助詞,終助詞,*,*,*,*,ねん
306
+ 305 助詞,終助詞,*,*,*,*,の
307
+ 306 助詞,終助詞,*,*,*,*,のう
308
+ 307 助詞,終助詞,*,*,*,*,べ
309
+ 308 助詞,終助詞,*,*,*,*,もん
310
+ 309 助詞,終助詞,*,*,*,*,や
311
+ 310 助詞,終助詞,*,*,*,*,やら
312
+ 311 助詞,終助詞,*,*,*,*,よ
313
+ 312 助詞,終助詞,*,*,*,*,よー
314
+ 313 助詞,終助詞,*,*,*,*,よう
315
+ 314 助詞,終助詞,*,*,*,*,わ
316
+ 315 助詞,終助詞,*,*,*,*,わい
317
+ 316 助詞,終助詞,*,*,*,*,ん
318
+ 317 助詞,終助詞,*,*,*,*,ヨー
319
+ 318 助詞,終助詞,*,*,*,*,ワ
320
+ 319 助詞,接続助詞,*,*,*,*,および
321
+ 320 助詞,接続助詞,*,*,*,*,から
322
+ 321 助詞,接続助詞,*,*,*,*,からには
323
+ 322 助詞,接続助詞,*,*,*,*,が
324
+ 323 助詞,接続助詞,*,*,*,*,けども
325
+ 324 助詞,接続助詞,*,*,*,*,けれど
326
+ 325 助詞,接続助詞,*,*,*,*,けれども
327
+ 326 助詞,接続助詞,*,*,*,*,さかい
328
+ 327 助詞,接続助詞,*,*,*,*,し
329
+ 328 助詞,接続助詞,*,*,*,*,たって
330
+ 329 助詞,接続助詞,*,*,*,*,つつ
331
+ 330 助詞,接続助詞,*,*,*,*,て
332
+ 331 助詞,接続助詞,*,*,*,*,で
333
+ 332 助詞,接続助詞,*,*,*,*,と
334
+ 333 助詞,接続助詞,*,*,*,*,とも
335
+ 334 助詞,接続助詞,*,*,*,*,ど
336
+ 335 助詞,接続助詞,*,*,*,*,どころか
337
+ 336 助詞,接続助詞,*,*,*,*,ども
338
+ 337 助詞,接続助詞,*,*,*,*,ながら
339
+ 338 助詞,接続助詞,*,*,*,*,なり
340
+ 339 助詞,接続助詞,*,*,*,*,ので
341
+ 340 助詞,接続助詞,*,*,*,*,のに
342
+ 341 助詞,接続助詞,*,*,*,*,ば
343
+ 342 助詞,接続助詞,*,*,*,*,ものの
344
+ 343 助詞,接続助詞,*,*,*,*,や
345
+ 344 助詞,接続助詞,*,*,*,*,やいなや
346
+ 345 助詞,接続助詞,*,*,*,*,や否や
347
+ 346 助詞,接続助詞,*,*,*,*,んで
348
+ 347 助詞,特殊,*,*,*,*,かな
349
+ 348 助詞,特殊,*,*,*,*,けむ
350
+ 349 助詞,特殊,*,*,*,*,に
351
+ 350 助詞,特殊,*,*,*,*,にゃ
352
+ 351 助詞,特殊,*,*,*,*,ん
353
+ 352 助詞,副詞化,*,*,*,*,と
354
+ 353 助詞,副詞化,*,*,*,*,に
355
+ 354 助詞,副助詞,*,*,*,*,かも
356
+ 355 助詞,副助詞,*,*,*,*,くらい
357
+ 356 助詞,副助詞,*,*,*,*,ぐらい
358
+ 357 助詞,副助詞,*,*,*,*,しも
359
+ 358 助詞,副助詞,*,*,*,*,じゃ
360
+ 359 助詞,副助詞,*,*,*,*,じゃあ
361
+ 360 助詞,副助詞,*,*,*,*,じゃァ
362
+ 361 助詞,副助詞,*,*,*,*,ずつ
363
+ 362 助詞,副助詞,*,*,*,*,だけ
364
+ 363 助詞,副助詞,*,*,*,*,だって
365
+ 364 助詞,副助詞,*,*,*,*,だに
366
+ 365 助詞,副助詞,*,*,*,*,でも
367
+ 366 助詞,副助詞,*,*,*,*,とも
368
+ 367 助詞,副助詞,*,*,*,*,なぞ
369
+ 368 助詞,副助詞,*,*,*,*,など
370
+ 369 助詞,副助詞,*,*,*,*,なり
371
+ 370 助詞,副助詞,*,*,*,*,なんか
372
+ 371 助詞,副助詞,*,*,*,*,なんぞ
373
+ 372 助詞,副助詞,*,*,*,*,なんて
374
+ 373 助詞,副助詞,*,*,*,*,のみ
375
+ 374 助詞,副助詞,*,*,*,*,ばかし
376
+ 375 助詞,副助詞,*,*,*,*,ばかり
377
+ 376 助詞,副助詞,*,*,*,*,ばっか
378
+ 377 助詞,副助詞,*,*,*,*,ばっかり
379
+ 378 助詞,副助詞,*,*,*,*,ほど
380
+ 379 助詞,副助詞,*,*,*,*,まで
381
+ 380 助詞,副助詞,*,*,*,*,やら
382
+ 381 助詞,副助詞,*,*,*,*,程
383
+ 382 助詞,副助詞,*,*,*,*,迄
384
+ 383 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か
385
+ 384 助詞,並立助詞,*,*,*,*,たり
386
+ 385 助詞,並立助詞,*,*,*,*,だの
387
+ 386 助詞,並立助詞,*,*,*,*,だり
388
+ 387 助詞,並立助詞,*,*,*,*,と
389
+ 388 助詞,並立助詞,*,*,*,*,とか
390
+ 389 助詞,並立助詞,*,*,*,*,なり
391
+ 390 助詞,並立助詞,*,*,*,*,や
392
+ 391 助詞,並立助詞,*,*,*,*,やら
393
+ 392 助詞,連体化,*,*,*,*,の
394
+ 393 助詞,連体化,*,*,*,*,ノ
395
+ 394 助動詞,*,*,*,下二・タ行,仮定形,つ
396
+ 395 助動詞,*,*,*,下二・タ行,基本形,つ
397
+ 396 助動詞,*,*,*,下二・タ行,体言接続,つ
398
+ 397 助動詞,*,*,*,下二・タ行,未然形,つ
399
+ 398 助動詞,*,*,*,下二・タ行,命令yo,つ
400
+ 399 助動詞,*,*,*,下二・タ行,連用形,つ
401
+ 400 助動詞,*,*,*,形容詞・イ段,ガル接続,らしい
402
+ 401 助動詞,*,*,*,形容詞・イ段,ガル接続,無い
403
+ 402 助動詞,*,*,*,形容詞・イ段,仮定形,らしい
404
+ 403 助動詞,*,*,*,形容詞・イ段,仮定形,無い
405
+ 404 助動詞,*,*,*,形容詞・イ段,仮定縮約1,らしい
406
+ 405 助動詞,*,*,*,形容詞・イ段,仮定縮約1,無い
407
+ 406 助動詞,*,*,*,形容詞・イ段,仮定縮約2,らしい
408
+ 407 助動詞,*,*,*,形容詞・イ段,仮定縮約2,無い
409
+ 408 助動詞,*,*,*,形容詞・イ段,基本形,らしい
410
+ 409 助動詞,*,*,*,形容詞・イ段,基本形,無い
411
+ 410 助動詞,*,*,*,形容詞・イ段,体言接続,らしい
412
+ 411 助動詞,*,*,*,形容詞・イ段,体言接続,無い
413
+ 412 助動詞,*,*,*,形容詞・イ段,文語基本形,らしい
414
+ 413 助動詞,*,*,*,形容詞・イ段,文語基本形,無い
415
+ 414 助動詞,*,*,*,形容詞・イ段,未然ウ接続,らしい
416
+ 415 助動詞,*,*,*,形容詞・イ段,未然ウ接続,無い
417
+ 416 助動詞,*,*,*,形容詞・イ段,未然ヌ接続,らしい
418
+ 417 助動詞,*,*,*,形容詞・イ段,未然ヌ接続,無い
419
+ 418 助動詞,*,*,*,形容詞・イ段,命令e,らしい
420
+ 419 助動詞,*,*,*,形容詞・イ段,命令e,無い
421
+ 420 助動詞,*,*,*,形容詞・イ段,連用ゴザイ接続,らしい
422
+ 421 助動詞,*,*,*,形容詞・イ段,連用ゴザイ接続,無い
423
+ 422 助動詞,*,*,*,形容詞・イ段,連用タ接続,らしい
424
+ 423 助動詞,*,*,*,形容詞・イ段,連用タ接続,無い
425
+ 424 助動詞,*,*,*,形容詞・イ段,連用テ接続,らしい
426
+ 425 助動詞,*,*,*,形容詞・イ段,連用テ接続,無い
427
+ 426 助動詞,*,*,*,五段・ラ行アル,仮定形,ある
428
+ 427 助動詞,*,*,*,五段・ラ行アル,仮定縮約1,ある
429
+ 428 助動詞,*,*,*,五段・ラ行アル,基本形,ある
430
+ 429 助動詞,*,*,*,五段・ラ行アル,体言接続特殊,ある
431
+ 430 助動詞,*,*,*,五段・ラ行アル,未然ウ接続,ある
432
+ 431 助動詞,*,*,*,五段・ラ行アル,未然形,ある
433
+ 432 助動詞,*,*,*,五段・ラ行アル,命令e,ある
434
+ 433 助動詞,*,*,*,五段・ラ行アル,連用タ接続,ある
435
+ 434 助動詞,*,*,*,五段・ラ行アル,連用形,ある
436
+ 435 助動詞,*,*,*,五段・ラ行特殊,仮定形,ござる
437
+ 436 助動詞,*,*,*,五段・ラ行特殊,仮定形,御座る
438
+ 437 助動詞,*,*,*,五段・ラ行特殊,仮定縮約1,ござる
439
+ 438 助動詞,*,*,*,五段・ラ行特殊,仮定縮約1,御座る
440
+ 439 助動詞,*,*,*,五段・ラ行特殊,基本形,ござる
441
+ 440 助動詞,*,*,*,五段・ラ行特殊,基本形,御座る
442
+ 441 助動詞,*,*,*,五段・ラ行特殊,未然ウ接続,ござる
443
+ 442 助動詞,*,*,*,五段・ラ行特殊,未然ウ接続,御座る
444
+ 443 助動詞,*,*,*,五段・ラ行特殊,未然形,ござる
445
+ 444 助動詞,*,*,*,五段・ラ行特殊,未然形,御座る
446
+ 445 助動詞,*,*,*,五段・ラ行特殊,未然特殊,ござる
447
+ 446 助動詞,*,*,*,五段・ラ行特殊,未然特殊,御座る
448
+ 447 助動詞,*,*,*,五段・ラ行特殊,命令e,ござる
449
+ 448 助動詞,*,*,*,五段・ラ行特殊,命令e,御座る
450
+ 449 助動詞,*,*,*,五段・ラ行特殊,命令i,ござる
451
+ 450 助動詞,*,*,*,五段・ラ行特殊,命令i,御座る
452
+ 451 助動詞,*,*,*,五段・ラ行特殊,連用タ接続,ござる
453
+ 452 助動詞,*,*,*,五段・ラ行特殊,連用タ接続,御座る
454
+ 453 助動詞,*,*,*,五段・ラ行特殊,連用形,ござる
455
+ 454 助動詞,*,*,*,五段・ラ行特殊,連用形,御座る
456
+ 455 助動詞,*,*,*,特殊・ジャ,基本形,じゃ
457
+ 456 助動詞,*,*,*,特殊・ジャ,未然形,じゃ
458
+ 457 助動詞,*,*,*,特殊・ジャ,連用形,じゃ
459
+ 458 助動詞,*,*,*,特殊・タ,仮定形,た
460
+ 459 助動詞,*,*,*,特殊・タ,仮定形,だ
461
+ 460 助動詞,*,*,*,特殊・タ,基本形,た
462
+ 461 助動詞,*,*,*,特殊・タ,基本形,だ
463
+ 462 助動詞,*,*,*,特殊・タ,未然形,た
464
+ 463 助動詞,*,*,*,特殊・タ,未然形,だ
465
+ 464 助動詞,*,*,*,特殊・タイ,ガル接続,たい
466
+ 465 助動詞,*,*,*,特殊・タイ,音便基本形,たい
467
+ 466 助動詞,*,*,*,特殊・タイ,仮定形,たい
468
+ 467 助動詞,*,*,*,特殊・タイ,仮定縮約1,たい
469
+ 468 助動詞,*,*,*,特殊・タイ,仮定縮約2,たい
470
+ 469 助動詞,*,*,*,特殊・タイ,基本形,たい
471
+ 470 助動詞,*,*,*,特殊・タイ,体言接続,たい
472
+ 471 助動詞,*,*,*,特殊・タイ,文語基本形,たい
473
+ 472 助動詞,*,*,*,特殊・タイ,未然ウ接続,たい
474
+ 473 助動詞,*,*,*,特殊・タイ,未然ヌ接続,たい
475
+ 474 助動詞,*,*,*,特殊・タイ,連用ゴザイ接続,たい
476
+ 475 助動詞,*,*,*,特殊・タイ,連用タ接続,たい
477
+ 476 助動詞,*,*,*,特殊・タイ,連用テ接続,たい
478
+ 477 助動詞,*,*,*,特殊・ダ,仮定形,だ
479
+ 478 助動詞,*,*,*,特殊・ダ,基本形,だ
480
+ 479 助動詞,*,*,*,特殊・ダ,体言接続,だ
481
+ 480 助動詞,*,*,*,特殊・ダ,未然形,だ
482
+ 481 助動詞,*,*,*,特殊・ダ,命令e,だ
483
+ 482 助動詞,*,*,*,特殊・ダ,連用タ接続,だ
484
+ 483 助動詞,*,*,*,特殊・ダ,連用形,だ
485
+ 484 助動詞,*,*,*,特殊・デス,基本形,っす
486
+ 485 助動詞,*,*,*,特殊・デス,基本形,です
487
+ 486 助動詞,*,*,*,特殊・デス,基本形,どす
488
+ 487 助動詞,*,*,*,特殊・デス,未然形,っす
489
+ 488 助動詞,*,*,*,特殊・デス,未然形,です
490
+ 489 助動詞,*,*,*,特殊・デス,未然形,どす
491
+ 490 助動詞,*,*,*,特殊・デス,連用形,っす
492
+ 491 助動詞,*,*,*,特殊・デス,連用形,です
493
+ 492 助動詞,*,*,*,特殊・デス,連用形,どす
494
+ 493 助動詞,*,*,*,特殊・ナイ,ガル接続,無い
495
+ 494 助動詞,*,*,*,特殊・ナイ,音便基本形,無い
496
+ 495 助動詞,*,*,*,特殊・ナイ,仮定形,無い
497
+ 496 助動詞,*,*,*,特殊・ナイ,仮定縮約1,無い
498
+ 497 助動詞,*,*,*,特殊・ナイ,仮定縮約2,無い
499
+ 498 助動詞,*,*,*,特殊・ナイ,基本形,無い
500
+ 499 助動詞,*,*,*,特殊・ナイ,体言接続,無い
501
+ 500 助動詞,*,*,*,特殊・ナイ,文語基本形,無い
502
+ 501 助動詞,*,*,*,特殊・ナイ,未然ウ接続,無い
503
+ 502 助動詞,*,*,*,特殊・ナイ,未然ヌ接続,無い
504
+ 503 助動詞,*,*,*,特殊・ナイ,命令e,無い
505
+ 504 助動詞,*,*,*,特殊・ナイ,連用ゴザイ接続,無い
506
+ 505 助動詞,*,*,*,特殊・ナイ,連用タ接続,無い
507
+ 506 助動詞,*,*,*,特殊・ナイ,連用テ接続,無い
508
+ 507 助動詞,*,*,*,特殊・ナイ,連用デ接続,無い
509
+ 508 助動詞,*,*,*,特殊・ヌ,仮定形,ぬ
510
+ 509 助動詞,*,*,*,特殊・ヌ,基本形,ぬ
511
+ 510 助動詞,*,*,*,特殊・ヌ,体言接続,ぬ
512
+ 511 助動詞,*,*,*,特殊・ヌ,文語基本形,ぬ
513
+ 512 助動詞,*,*,*,特殊・ヌ,連用ニ接続,ぬ
514
+ 513 助動詞,*,*,*,特殊・ヌ,連用形,ぬ
515
+ 514 助動詞,*,*,*,特殊・マス,仮定形,ます
516
+ 515 助動詞,*,*,*,特殊・マス,仮定形,やす
517
+ 516 助動詞,*,*,*,特殊・マス,基本形,ます
518
+ 517 助動詞,*,*,*,特殊・マス,基本形,やす
519
+ 518 助動詞,*,*,*,特殊・マス,未然ウ接続,ます
520
+ 519 助動詞,*,*,*,特殊・マス,未然ウ接続,やす
521
+ 520 助動詞,*,*,*,特殊・マス,未然形,ます
522
+ 521 助動詞,*,*,*,特殊・マス,未然形,やす
523
+ 522 助動詞,*,*,*,特殊・マス,命令e,ます
524
+ 523 助動詞,*,*,*,特殊・マス,命令e,やす
525
+ 524 助動詞,*,*,*,特殊・マス,命令i,ます
526
+ 525 助動詞,*,*,*,特殊・マス,命令i,やす
527
+ 526 助動詞,*,*,*,特殊・マス,連用形,ます
528
+ 527 助動詞,*,*,*,特殊・マス,連用形,やす
529
+ 528 助動詞,*,*,*,特殊・ヤ,基本形,や
530
+ 529 助動詞,*,*,*,特殊・ヤ,未然形,や
531
+ 530 助動詞,*,*,*,特殊・ヤ,連用形,や
532
+ 531 助動詞,*,*,*,不変化型,基本形,う
533
+ 532 助動詞,*,*,*,不変化型,基本形,じ
534
+ 533 助動詞,*,*,*,不変化型,基本形,じゃん
535
+ 534 助動詞,*,*,*,不変化型,基本形,じゃン
536
+ 535 助動詞,*,*,*,不変化型,基本形,ぬ
537
+ 536 助動詞,*,*,*,不変化型,基本形,ひん
538
+ 537 助動詞,*,*,*,不変化型,基本形,へん
539
+ 538 助動詞,*,*,*,不変化型,基本形,まい
540
+ 539 助動詞,*,*,*,不変化型,基本形,やん
541
+ 540 助動詞,*,*,*,不変化型,基本形,ん
542
+ 541 助動詞,*,*,*,文語・キ,基本形,き
543
+ 542 助動詞,*,*,*,文語・キ,体言接続,き
544
+ 543 助動詞,*,*,*,文語・キ,命令e,き
545
+ 544 助動詞,*,*,*,文語・ケリ,基本形,けり
546
+ 545 助動詞,*,*,*,文語・ケリ,体言接続,けり
547
+ 546 助動詞,*,*,*,文語・ゴトシ,基本形,ごとし
548
+ 547 助動詞,*,*,*,文語・ゴトシ,基本形,如し
549
+ 548 助動詞,*,*,*,文語・ゴトシ,体言接続,ごとし
550
+ 549 助動詞,*,*,*,文語・ゴトシ,体言接続,如し
551
+ 550 助動詞,*,*,*,文語・ゴトシ,連用形,ごとし
552
+ 551 助動詞,*,*,*,文語・ゴトシ,連用形,如し
553
+ 552 助動詞,*,*,*,文語・ナリ,仮定形,たり
554
+ 553 助動詞,*,*,*,文語・ナリ,仮定形,なり
555
+ 554 助動詞,*,*,*,文語・ナリ,基本形,たり
556
+ 555 助動詞,*,*,*,文語・ナリ,基本形,なり
557
+ 556 助動詞,*,*,*,文語・ナリ,体言接続,たり
558
+ 557 助動詞,*,*,*,文語・ナリ,体言接続,なり
559
+ 558 助動詞,*,*,*,文語・ナリ,未然形,たり
560
+ 559 助動詞,*,*,*,文語・ナリ,未然形,なり
561
+ 560 助動詞,*,*,*,文語・ナリ,命令e,たり
562
+ 561 助動詞,*,*,*,文語・ナリ,命令e,なり
563
+ 562 助動詞,*,*,*,文語・ベシ,仮定形,べし
564
+ 563 助動詞,*,*,*,��語・ベシ,基本形,べし
565
+ 564 助動詞,*,*,*,文語・ベシ,体言接続,べし
566
+ 565 助動詞,*,*,*,文語・ベシ,未然形,べし
567
+ 566 助動詞,*,*,*,文語・ベシ,連用形,べし
568
+ 567 助動詞,*,*,*,文語・マジ,仮定形,まじ
569
+ 568 助動詞,*,*,*,文語・マジ,基本形,まじ
570
+ 569 助動詞,*,*,*,文語・マジ,体言接続,まじ
571
+ 570 助動詞,*,*,*,文語・マジ,連用形,まじ
572
+ 571 助動詞,*,*,*,文語・リ,基本形,り
573
+ 572 助動詞,*,*,*,文語・リ,体言接続,り
574
+ 573 助動詞,*,*,*,文語・ル,仮定形,る
575
+ 574 助動詞,*,*,*,文語・ル,基本形,る
576
+ 575 助動詞,*,*,*,文語・ル,体言接続,る
577
+ 576 助動詞,*,*,*,文語・ル,未然形,る
578
+ 577 助動詞,*,*,*,文語・ル,命令e,る
579
+ 578 助動詞,*,*,*,文語・ル,命令yo,る
580
+ 579 助動詞,*,*,*,文語・ル,連用形,る
581
+ 580 接続詞,*,*,*,*,*,*
582
+ 581 接続詞,*,*,*,*,*,および
583
+ 582 接頭詞,形容詞接続,*,*,*,*,*
584
+ 583 接頭詞,数接続,*,*,*,*,*
585
+ 584 接頭詞,動詞接続,*,*,*,*,*
586
+ 585 接頭詞,名詞接続,*,*,*,*,*
587
+ 586 動詞,自立,*,*,カ変・クル,仮定形,*
588
+ 587 動詞,自立,*,*,カ変・クル,仮定縮約1,*
589
+ 588 動詞,自立,*,*,カ変・クル,基本形,*
590
+ 589 動詞,自立,*,*,カ変・クル,体言接続特殊,*
591
+ 590 動詞,自立,*,*,カ変・クル,体言接続特殊2,*
592
+ 591 動詞,自立,*,*,カ変・クル,未然ウ接続,*
593
+ 592 動詞,自立,*,*,カ変・クル,未然形,*
594
+ 593 動詞,自立,*,*,カ変・クル,命令i,*
595
+ 594 動詞,自立,*,*,カ変・クル,命令yo,*
596
+ 595 動詞,自立,*,*,カ変・クル,連用形,*
597
+ 596 動詞,自立,*,*,カ変・来ル,仮定形,*
598
+ 597 動詞,自立,*,*,カ変・来ル,仮定縮約1,*
599
+ 598 動詞,自立,*,*,カ変・来ル,基本形,*
600
+ 599 動詞,自立,*,*,カ変・来ル,体言接続特殊,*
601
+ 600 動詞,自立,*,*,カ変・来ル,体言接続特殊2,*
602
+ 601 動詞,自立,*,*,カ変・来ル,未然ウ接続,*
603
+ 602 動詞,自立,*,*,カ変・来ル,未然形,*
604
+ 603 動詞,自立,*,*,カ変・来ル,命令i,*
605
+ 604 動詞,自立,*,*,カ変・来ル,命令yo,*
606
+ 605 動詞,自立,*,*,カ変・来ル,連用形,*
607
+ 606 動詞,自立,*,*,サ変・−スル,仮定形,*
608
+ 607 動詞,自立,*,*,サ変・−スル,仮定縮約1,*
609
+ 608 動詞,自立,*,*,サ変・−スル,基本形,*
610
+ 609 動詞,自立,*,*,サ変・−スル,文語基本形,*
611
+ 610 動詞,自立,*,*,サ変・−スル,未然ウ接続,*
612
+ 611 動詞,自立,*,*,サ変・−スル,未然レル接続,*
613
+ 612 動詞,自立,*,*,サ変・−スル,未然形,*
614
+ 613 動詞,自立,*,*,サ変・−スル,命令ro,*
615
+ 614 動詞,自立,*,*,サ変・−スル,命令yo,*
616
+ 615 動詞,自立,*,*,サ変・−ズル,仮定形,*
617
+ 616 動詞,自立,*,*,サ変・−ズル,仮定縮約1,*
618
+ 617 動詞,自立,*,*,サ変・−ズル,基本形,*
619
+ 618 動詞,自立,*,*,サ変・−ズル,文語基本形,*
620
+ 619 動詞,自立,*,*,サ変・−ズル,未然ウ接続,*
621
+ 620 動詞,自立,*,*,サ変・−ズル,未然形,*
622
+ 621 動詞,自立,*,*,サ変・−ズル,命令yo,*
623
+ 622 動詞,自立,*,*,サ変・スル,仮定形,する
624
+ 623 動詞,自立,*,*,サ変・スル,仮定縮約1,する
625
+ 624 動詞,自立,*,*,サ変・スル,基本形,する
626
+ 625 動詞,自立,*,*,サ変・スル,体言接続特殊,する
627
+ 626 動詞,自立,*,*,サ変・スル,体言接続特殊2,する
628
+ 627 動詞,自立,*,*,サ変・スル,文語基本形,する
629
+ 628 動詞,自立,*,*,サ変・スル,未然ウ接続,する
630
+ 629 動詞,自立,*,*,サ変・スル,未然ヌ接続,する
631
+ 630 動詞,自立,*,*,サ変・スル,未然レル接続,する
632
+ 631 動詞,自立,*,*,サ変・スル,未然形,する
633
+ 632 動詞,自立,*,*,サ変・スル,命令i,する
634
+ 633 動詞,自立,*,*,サ変・スル,命令ro,する
635
+ 634 動詞,自立,*,*,サ変・スル,命令yo,する
636
+ 635 動詞,自立,*,*,サ変・スル,連用形,する
637
+ 636 動詞,自立,*,*,ラ変,仮定形,*
638
+ 637 動詞,自立,*,*,ラ変,基本形,*
639
+ 638 動詞,自立,*,*,ラ変,体言接続,*
640
+ 639 動詞,自立,*,*,ラ変,未然形,*
641
+ 640 動詞,自立,*,*,ラ変,命令e,*
642
+ 641 動詞,自立,*,*,ラ変,連用形,*
643
+ 642 動詞,自立,*,*,一段,*,*
644
+ 643 動詞,自立,*,*,一段,仮定形,*
645
+ 644 動詞,自立,*,*,一段,仮定縮約1,*
646
+ 645 動詞,自立,*,*,一段,基本形,*
647
+ 646 動詞,自立,*,*,一段,基本形-促音便,*
648
+ 647 動詞,自立,*,*,一段,体言接続特殊,*
649
+ 648 動詞,自立,*,*,一段,未然ウ接続,*
650
+ 649 動詞,自立,*,*,一段,未然形,*
651
+ 650 動詞,自立,*,*,一段,命令ro,*
652
+ 651 動詞,自立,*,*,一段,命令yo,*
653
+ 652 動詞,自立,*,*,一段,連用形,*
654
+ 653 動詞,自立,*,*,一段・クレル,仮定形,*
655
+ 654 動詞,自立,*,*,一段・クレル,仮定縮約1,*
656
+ 655 動詞,自立,*,*,一段・クレル,基本形,*
657
+ 656 動詞,自立,*,*,一段・クレル,未然ウ接続,*
658
+ 657 動詞,自立,*,*,一段・クレル,未然形,*
659
+ 658 動詞,自立,*,*,一段・クレル,未然特殊,*
660
+ 659 動詞,自立,*,*,一段・クレル,命令e,*
661
+ 660 動詞,自立,*,*,一段・クレル,命令ro,*
662
+ 661 動詞,自立,*,*,一段・クレル,命令yo,*
663
+ 662 動詞,自立,*,*,一段・クレル,連用形,*
664
+ 663 動詞,自立,*,*,一段・得ル,仮定形,*
665
+ 664 動詞,自立,*,*,一段・得ル,基本形,*
666
+ 665 動詞,自立,*,*,下二・カ行,仮定形,*
667
+ 666 動詞,自立,*,*,下二・カ行,基本形,*
668
+ 667 動詞,自立,*,*,下二・カ行,体言接続,*
669
+ 668 動詞,自立,*,*,下二・カ行,未然形,*
670
+ 669 動詞,自立,*,*,下二・カ行,命令yo,*
671
+ 670 動詞,自立,*,*,下二・カ行,連用形,*
672
+ 671 動詞,自立,*,*,下二・ガ行,仮定形,*
673
+ 672 動詞,自立,*,*,下二・ガ行,基本形,*
674
+ 673 動詞,自立,*,*,下二・ガ行,体言接続,*
675
+ 674 動詞,自立,*,*,下二・ガ行,未然形,*
676
+ 675 動詞,自立,*,*,下二・ガ行,命令yo,*
677
+ 676 動詞,自立,*,*,下二・ガ行,連用形,*
678
+ 677 動詞,自立,*,*,下二・ダ行,仮定形,*
679
+ 678 動詞,自立,*,*,下二・ダ行,基本形,*
680
+ 679 動詞,自立,*,*,下二・ダ行,体言接続,*
681
+ 680 動詞,自立,*,*,下二・ダ行,未然形,*
682
+ 681 動詞,自立,*,*,下二・ダ行,命令yo,*
683
+ 682 動詞,自立,*,*,下二・ダ行,連用形,*
684
+ 683 動詞,自立,*,*,下二・ハ行,仮定形,*
685
+ 684 動詞,自立,*,*,下二・ハ行,基本形,*
686
+ 685 動詞,自立,*,*,下二・ハ行,体言接続,*
687
+ 686 動詞,自立,*,*,下二・ハ行,未然形,*
688
+ 687 動詞,自立,*,*,下二・ハ行,命令yo,*
689
+ 688 動詞,自立,*,*,下二・ハ行,連用形,*
690
+ 689 動詞,自立,*,*,下二・マ行,仮定形,*
691
+ 690 動詞,自立,*,*,下二・マ行,基本形,*
692
+ 691 動詞,自立,*,*,下二・マ行,体言接続,*
693
+ 692 動詞,自立,*,*,下二・マ行,未然形,*
694
+ 693 動詞,自立,*,*,下二・マ行,命令yo,*
695
+ 694 動詞,自立,*,*,下二・マ行,連用形,*
696
+ 695 動詞,自立,*,*,下二・得,仮定形,*
697
+ 696 動詞,自立,*,*,下二・得,基本形,*
698
+ 697 動詞,自立,*,*,下二・得,体言接続,*
699
+ 698 動詞,自立,*,*,下二・得,未然ウ接続,*
700
+ 699 動詞,自立,*,*,下二・得,未然形,*
701
+ 700 動詞,自立,*,*,下二・得,命令yo,*
702
+ 701 動詞,自立,*,*,下二・得,連用形,*
703
+ 702 動詞,自立,*,*,五段・カ行イ音便,*,*
704
+ 703 動詞,自立,*,*,五段・カ行イ音便,仮定形,*
705
+ 704 動詞,自立,*,*,五段・カ行イ音便,仮定形,行く
706
+ 705 動詞,自立,*,*,五段・カ行イ音便,仮定縮約1,*
707
+ 706 動詞,自立,*,*,五段・カ行イ音便,仮定縮約1,行く
708
+ 707 動詞,自立,*,*,五段・カ行イ音便,基本形,*
709
+ 708 動詞,自立,*,*,五段・カ行イ音便,基本形,行く
710
+ 709 動詞,自立,*,*,五段・カ行イ音便,未然ウ接続,*
711
+ 710 動詞,自立,*,*,五段・カ行イ音便,未然ウ接続,行く
712
+ 711 動詞,自立,*,*,五段・カ行イ音便,未然形,*
713
+ 712 動詞,自立,*,*,五段・カ行イ音便,未然形,行く
714
+ 713 動詞,自立,*,*,五段・カ行イ音便,命令e,*
715
+ 714 動詞,自立,*,*,五段・カ行イ音便,命令e,行く
716
+ 715 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,*
717
+ 716 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,行く
718
+ 717 動詞,自立,*,*,五段・カ行イ音便,連用形,*
719
+ 718 動詞,自立,*,*,五段・カ行イ音便,連用形,行く
720
+ 719 動詞,自立,*,*,五段・カ行促音便,仮定形,*
721
+ 720 動詞,自立,*,*,五段・カ行促音便,仮定形,行く
722
+ 721 動詞,自立,*,*,五段・カ行促音便,仮定縮約1,*
723
+ 722 動詞,自立,*,*,五段・カ行促音便,仮定縮約1,行く
724
+ 723 動詞,自立,*,*,五段・カ行促音便,基本形,*
725
+ 724 動詞,自立,*,*,五段・カ行促音便,基本形,行く
726
+ 725 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,*
727
+ 726 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,行く
728
+ 727 動詞,自立,*,*,五段・カ行促音便,未然形,*
729
+ 728 動詞,自立,*,*,五段・カ行促音便,未然形,行く
730
+ 729 動詞,自立,*,*,五段・カ行促音便,命令e,*
731
+ 730 動詞,自立,*,*,五段・カ行促音便,命令e,行く
732
+ 731 動詞,自立,*,*,五段・カ行促音便,連用タ接続,*
733
+ 732 動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く
734
+ 733 動詞,自立,*,*,五段・カ行促音便,連用形,*
735
+ 734 動詞,自立,*,*,五段・カ行促音便,連用形,行く
736
+ 735 動詞,自立,*,*,五段・カ行促音便ユク,仮定形,*
737
+ 736 動詞,自立,*,*,五段・カ行促音便ユク,仮定形,行く
738
+ 737 動詞,自立,*,*,五段・カ行促音便ユク,仮定縮約1,*
739
+ 738 動詞,自立,*,*,五段・カ行促音便ユク,仮定縮約1,行く
740
+ 739 動詞,自立,*,*,五段・カ行促音便ユク,基本形,*
741
+ 740 動詞,自立,*,*,五段・カ行促音便ユク,基本形,行く
742
+ 741 動詞,自立,*,*,五段・カ行促音便ユク,未然ウ接続,*
743
+ 742 動詞,自立,*,*,五段・カ行促音便ユク,未然ウ接続,行く
744
+ 743 動詞,自立,*,*,五段・カ行促音便ユク,未然形,*
745
+ 744 動詞,自立,*,*,五段・カ行促音便ユク,未然形,行く
746
+ 745 動詞,自立,*,*,五段・カ行促音便ユク,命令e,*
747
+ 746 動詞,自立,*,*,五段・カ行促音便ユク,命令e,行く
748
+ 747 動詞,自立,*,*,五段・カ行促音便ユク,連用形,*
749
+ 748 動詞,自立,*,*,五段・カ行促音便ユク,連用形,行く
750
+ 749 動詞,自立,*,*,五段・ガ行,*,*
751
+ 750 動詞,自立,*,*,五段・ガ行,仮定形,*
752
+ 751 動詞,自立,*,*,五段・ガ行,仮定縮約1,*
753
+ 752 動詞,自立,*,*,五段・ガ行,基本形,*
754
+ 753 動詞,自立,*,*,五段・ガ行,未然ウ接続,*
755
+ 754 動詞,自立,*,*,五段・ガ行,未然形,*
756
+ 755 動詞,自立,*,*,五段・ガ行,命令e,*
757
+ 756 動詞,自立,*,*,五段・ガ行,連用タ接続,*
758
+ 757 動詞,自立,*,*,五段・ガ行,連用形,*
759
+ 758 動詞,自立,*,*,五段・サ行,*,*
760
+ 759 動詞,自立,*,*,五段・サ行,仮定形,*
761
+ 760 動詞,自立,*,*,五段・サ行,仮定縮約1,*
762
+ 761 動詞,自立,*,*,五段・サ行,基本形,*
763
+ 762 動詞,自立,*,*,五段・サ行,未然ウ接続,*
764
+ 763 動詞,自立,*,*,五段・サ行,未然形,*
765
+ 764 動詞,自立,*,*,五段・サ行,命令e,*
766
+ 765 動詞,自立,*,*,五段・サ行,連用形,*
767
+ 766 動詞,自立,*,*,五段・タ行,*,*
768
+ 767 動詞,自立,*,*,五段・タ行,仮定形,*
769
+ 768 動詞,自立,*,*,五段・タ行,仮定縮約1,*
770
+ 769 動詞,自立,*,*,五段・タ行,基本形,*
771
+ 770 動詞,自立,*,*,五段・タ行,未然ウ接続,*
772
+ 771 動詞,自立,*,*,五段・タ行,未然形,*
773
+ 772 動詞,自立,*,*,五段・タ行,命令e,*
774
+ 773 動詞,自立,*,*,五段・タ行,連用タ接続,*
775
+ 774 動詞,自立,*,*,五段・タ行,連用形,*
776
+ 775 動詞,自立,*,*,五段・ナ行,仮定形,*
777
+ 776 動詞,自立,*,*,五段・ナ行,仮定縮約1,*
778
+ 777 動詞,自立,*,*,五段・ナ行,基本形,*
779
+ 778 動詞,自立,*,*,五段・ナ行,未然ウ接続,*
780
+ 779 動詞,自立,*,*,五段・ナ行,未然形,*
781
+ 780 動詞,自立,*,*,五段・ナ行,命令e,*
782
+ 781 動詞,自立,*,*,五段・ナ行,連用タ接続,*
783
+ 782 動詞,自立,*,*,五段・ナ行,連用形,*
784
+ 783 動詞,自立,*,*,五段・バ行,*,*
785
+ 784 動詞,自立,*,*,五段・バ行,仮定形,*
786
+ 785 動詞,自立,*,*,五段・バ行,仮定縮約1,*
787
+ 786 動詞,自立,*,*,五段・バ行,基本形,*
788
+ 787 動詞,自立,*,*,五段・バ行,未然ウ接続,*
789
+ 788 動詞,自立,*,*,五段・バ行,未然形,*
790
+ 789 動詞,自立,*,*,五段・バ行,命令e,*
791
+ 790 動詞,自立,*,*,五段・バ行,連用タ接続,*
792
+ 791 動詞,自立,*,*,五段・バ行,連用形,*
793
+ 792 動詞,自立,*,*,五段・マ行,*,*
794
+ 793 動詞,自立,*,*,五段・マ行,仮定形,*
795
+ 794 動詞,自立,*,*,五段・マ行,仮定縮約1,*
796
+ 795 動詞,自立,*,*,五段・マ行,基本形,*
797
+ 796 動詞,自立,*,*,五段・マ行,未然ウ接続,*
798
+ 797 動詞,自立,*,*,五段・マ行,未然形,*
799
+ 798 動詞,自立,*,*,五段・マ行,命令e,*
800
+ 799 動詞,自立,*,*,五段・マ行,連用タ接続,*
801
+ 800 動詞,自立,*,*,五段・マ行,連用形,*
802
+ 801 動詞,自立,*,*,五段・ラ行,*,*
803
+ 802 動詞,自立,*,*,五段・ラ行,*,する
804
+ 803 動詞,自立,*,*,五段・ラ行,仮定形,*
805
+ 804 動詞,自立,*,*,五段・ラ行,仮定形,する
806
+ 805 動詞,自立,*,*,五段・ラ行,仮定縮約1,*
807
+ 806 動詞,自立,*,*,五段・ラ行,仮定縮約1,する
808
+ 807 動詞,自立,*,*,五段・ラ行,基本形,*
809
+ 808 動詞,自立,*,*,五段・ラ行,基本形,する
810
+ 809 動詞,自立,*,*,五段・ラ行,体言接続特殊,*
811
+ 810 動詞,自立,*,*,五段・ラ行,体言接続特殊,する
812
+ 811 動詞,自立,*,*,五段・ラ行,体言接続特殊2,*
813
+ 812 動詞,自立,*,*,五段・ラ行,体言接続特殊2,する
814
+ 813 動詞,自立,*,*,五段・ラ行,未然ウ接続,*
815
+ 814 動詞,自立,*,*,五段・ラ行,未然ウ接続,する
816
+ 815 動詞,自立,*,*,五段・ラ行,未然形,*
817
+ 816 動詞,自立,*,*,五段・ラ行,未然形,する
818
+ 817 動詞,自立,*,*,五段・ラ行,未然特殊,*
819
+ 818 動詞,自立,*,*,五段・ラ行,未然特殊,する
820
+ 819 動詞,自立,*,*,五段・ラ行,命令e,*
821
+ 820 動詞,自立,*,*,五段・ラ行,命令e,する
822
+ 821 動詞,自立,*,*,五段・ラ行,連用タ接続,*
823
+ 822 動詞,自立,*,*,五段・ラ行,連用タ接続,する
824
+ 823 動詞,自立,*,*,五段・ラ行,連用形,*
825
+ 824 動詞,自立,*,*,五段・ラ行,連用形,する
826
+ 825 動詞,自立,*,*,五段・ラ行特殊,仮定形,*
827
+ 826 動詞,自立,*,*,五段・ラ行特殊,仮定縮約1,*
828
+ 827 動詞,自立,*,*,五段・ラ行特殊,基本形,*
829
+ 828 動詞,自立,*,*,五段・ラ行特殊,未然ウ接続,*
830
+ 829 動詞,自立,*,*,五段・ラ行特殊,未然形,*
831
+ 830 動詞,自立,*,*,五段・ラ行特殊,未然特殊,*
832
+ 831 動詞,自立,*,*,五段・ラ行特殊,命令e,*
833
+ 832 動詞,自立,*,*,五段・ラ行特殊,命令i,*
834
+ 833 動詞,自立,*,*,五段・ラ行特殊,連用タ接続,*
835
+ 834 動詞,自立,*,*,五段・ラ行特殊,連用形,*
836
+ 835 動詞,自立,*,*,五段・ワ行ウ音便,*,*
837
+ 836 動詞,自立,*,*,五段・ワ行ウ音便,仮定形,*
838
+ 837 動詞,自立,*,*,五段・ワ行ウ音便,仮定形,言う
839
+ 838 動詞,自立,*,*,五段・ワ行ウ音便,基本形,*
840
+ 839 動詞,自立,*,*,五段・ワ行ウ音便,基本形,言う
841
+ 840 動詞,自立,*,*,五段・ワ行ウ音便,未��ウ接続,*
842
+ 841 動詞,自立,*,*,五段・ワ行ウ音便,未然ウ接続,言う
843
+ 842 動詞,自立,*,*,五段・ワ行ウ音便,未然形,*
844
+ 843 動詞,自立,*,*,五段・ワ行ウ音便,未然形,言う
845
+ 844 動詞,自立,*,*,五段・ワ行ウ音便,命令e,*
846
+ 845 動詞,自立,*,*,五段・ワ行ウ音便,命令e,言う
847
+ 846 動詞,自立,*,*,五段・ワ行ウ音便,連用タ接続,*
848
+ 847 動詞,自立,*,*,五段・ワ行ウ音便,連用タ接続,言う
849
+ 848 動詞,自立,*,*,五段・ワ行ウ音便,連用形,*
850
+ 849 動詞,自立,*,*,五段・ワ行ウ音便,連用形,言う
851
+ 850 動詞,自立,*,*,五段・ワ行促音便,*,*
852
+ 851 動詞,自立,*,*,五段・ワ行促音便,仮定形,*
853
+ 852 動詞,自立,*,*,五段・ワ行促音便,仮定形,言う
854
+ 853 動詞,自立,*,*,五段・ワ行促音便,仮定形,行う
855
+ 854 動詞,自立,*,*,五段・ワ行促音便,基本形,*
856
+ 855 動詞,自立,*,*,五段・ワ行促音便,基本形,言う
857
+ 856 動詞,自立,*,*,五段・ワ行促音便,基本形,行う
858
+ 857 動詞,自立,*,*,五段・ワ行促音便,未然ウ接続,*
859
+ 858 動詞,自立,*,*,五段・ワ行促音便,未然ウ接続,言う
860
+ 859 動詞,自立,*,*,五段・ワ行促音便,未然ウ接続,行う
861
+ 860 動詞,自立,*,*,五段・ワ行促音便,未然形,*
862
+ 861 動詞,自立,*,*,五段・ワ行促音便,未然形,言う
863
+ 862 動詞,自立,*,*,五段・ワ行促音便,未然形,行う
864
+ 863 動詞,自立,*,*,五段・ワ行促音便,命令e,*
865
+ 864 動詞,自立,*,*,五段・ワ行促音便,命令e,言う
866
+ 865 動詞,自立,*,*,五段・ワ行促音便,命令e,行う
867
+ 866 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,*
868
+ 867 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,言う
869
+ 868 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,行う
870
+ 869 動詞,自立,*,*,五段・ワ行促音便,連用形,*
871
+ 870 動詞,自立,*,*,五段・ワ行促音便,連用形,言う
872
+ 871 動詞,自立,*,*,五段・ワ行促音便,連用形,行う
873
+ 872 動詞,自立,*,*,四段・サ行,仮定形,*
874
+ 873 動詞,自立,*,*,四段・サ行,基本形,*
875
+ 874 動詞,自立,*,*,四段・サ行,未然形,*
876
+ 875 動詞,自立,*,*,四段・サ行,命令e,*
877
+ 876 動詞,自立,*,*,四段・サ行,連用形,*
878
+ 877 動詞,自立,*,*,四段・タ行,仮定形,*
879
+ 878 動詞,自立,*,*,四段・タ行,基本形,*
880
+ 879 動詞,自立,*,*,四段・タ行,未然形,*
881
+ 880 動詞,自立,*,*,四段・タ行,命令e,*
882
+ 881 動詞,自立,*,*,四段・タ行,連用形,*
883
+ 882 動詞,自立,*,*,四段・ハ行,仮定形,*
884
+ 883 動詞,自立,*,*,四段・ハ行,基本形,*
885
+ 884 動詞,自立,*,*,四段・ハ行,未然形,*
886
+ 885 動詞,自立,*,*,四段・ハ行,命令e,*
887
+ 886 動詞,自立,*,*,四段・ハ行,連用形,*
888
+ 887 動詞,自立,*,*,四段・バ行,仮定形,*
889
+ 888 動詞,自立,*,*,四段・バ行,基本形,*
890
+ 889 動詞,自立,*,*,四段・バ行,未然形,*
891
+ 890 動詞,自立,*,*,四段・バ行,命令e,*
892
+ 891 動詞,自立,*,*,四段・バ行,連用形,*
893
+ 892 動詞,自立,*,*,上二・ダ行,仮定形,*
894
+ 893 動詞,自立,*,*,上二・ダ行,基本形,*
895
+ 894 動詞,自立,*,*,上二・ダ行,現代基本形,*
896
+ 895 動詞,自立,*,*,上二・ダ行,体言接続,*
897
+ 896 動詞,自立,*,*,上二・ダ行,未然形,*
898
+ 897 動詞,自立,*,*,上二・ダ行,命令yo,*
899
+ 898 動詞,自立,*,*,上二・ダ行,連用形,*
900
+ 899 動詞,自立,*,*,上二・ハ行,仮定形,*
901
+ 900 動詞,自立,*,*,上二・ハ行,基本形,*
902
+ 901 動詞,自立,*,*,上二・ハ行,体言接続,*
903
+ 902 動詞,自立,*,*,上二・ハ行,未然形,*
904
+ 903 動詞,自立,*,*,上二・ハ行,命令yo,*
905
+ 904 動詞,自立,*,*,上二・ハ行,連用形,*
906
+ 905 動詞,接尾,*,*,一段,仮定形,*
907
+ 906 動詞,接尾,*,*,一段,仮定縮約1,*
908
+ 907 動詞,接尾,*,*,一段,基本形,*
909
+ 908 動詞,接尾,*,*,一段,基本形-促音便,*
910
+ 909 動詞,接尾,*,*,一段,体言接続特殊,*
911
+ 910 動詞,接尾,*,*,一段,未然ウ接続,*
912
+ 911 動詞,接尾,*,*,一段,未然形,*
913
+ 912 動詞,接尾,*,*,一段,命令ro,*
914
+ 913 動詞,接尾,*,*,一段,命令yo,*
915
+ 914 動詞,接尾,*,*,一段,連用形,*
916
+ 915 動詞,接尾,*,*,五段・サ行,仮定形,*
917
+ 916 動詞,接尾,*,*,五段・サ行,仮定縮約1,*
918
+ 917 動詞,接尾,*,*,五段・サ行,基本形,*
919
+ 918 動詞,接尾,*,*,五段・サ行,未然ウ接続,*
920
+ 919 動詞,接尾,*,*,五段・サ行,未然形,*
921
+ 920 動詞,接尾,*,*,五段・サ行,命令e,*
922
+ 921 動詞,接尾,*,*,五段・サ行,連用形,*
923
+ 922 動詞,接尾,*,*,五段・ラ行,仮定形,*
924
+ 923 動詞,接尾,*,*,五段・ラ行,仮定縮約1,*
925
+ 924 動詞,接尾,*,*,五段・ラ行,基本形,*
926
+ 925 動詞,接尾,*,*,五段・ラ行,体言接続特殊,*
927
+ 926 動詞,接尾,*,*,五段・ラ行,体言接続特殊2,*
928
+ 927 動詞,接尾,*,*,五段・ラ行,未然ウ接続,*
929
+ 928 動詞,接尾,*,*,五段・ラ行,未然形,*
930
+ 929 動詞,接尾,*,*,五段・ラ行,未然特殊,*
931
+ 930 動詞,接尾,*,*,五段・ラ行,命令e,*
932
+ 931 動詞,接尾,*,*,五段・ラ行,連用タ接続,*
933
+ 932 動詞,接尾,*,*,五���・ラ行,連用形,*
934
+ 933 動詞,非自立,*,*,カ変・クル,仮定形,来る
935
+ 934 動詞,非自立,*,*,カ変・クル,仮定縮約1,来る
936
+ 935 動詞,非自立,*,*,カ変・クル,基本形,来る
937
+ 936 動詞,非自立,*,*,カ変・クル,体言接続特殊,来る
938
+ 937 動詞,非自立,*,*,カ変・クル,体言接続特殊2,来る
939
+ 938 動詞,非自立,*,*,カ変・クル,未然ウ接続,来る
940
+ 939 動詞,非自立,*,*,カ変・クル,未然形,来る
941
+ 940 動詞,非自立,*,*,カ変・クル,命令i,来る
942
+ 941 動詞,非自立,*,*,カ変・クル,命令yo,来る
943
+ 942 動詞,非自立,*,*,カ変・クル,連用形,来る
944
+ 943 動詞,非自立,*,*,カ変・来ル,仮定形,来る
945
+ 944 動詞,非自立,*,*,カ変・来ル,仮定縮約1,来る
946
+ 945 動詞,非自立,*,*,カ変・来ル,基本形,来る
947
+ 946 動詞,非自立,*,*,カ変・来ル,体言接続特殊,来る
948
+ 947 動詞,非自立,*,*,カ変・来ル,体言接続特殊2,来る
949
+ 948 動詞,非自立,*,*,カ変・来ル,未然ウ接続,来る
950
+ 949 動詞,非自立,*,*,カ変・来ル,未然形,来る
951
+ 950 動詞,非自立,*,*,カ変・来ル,命令i,来る
952
+ 951 動詞,非自立,*,*,カ変・来ル,命令yo,来る
953
+ 952 動詞,非自立,*,*,カ変・来ル,連用形,来る
954
+ 953 動詞,非自立,*,*,一段,*,*
955
+ 954 動詞,非自立,*,*,一段,仮定形,*
956
+ 955 動詞,非自立,*,*,一段,仮定形,る
957
+ 956 動詞,非自立,*,*,一段,仮定縮約1,*
958
+ 957 動詞,非自立,*,*,一段,仮定縮約1,る
959
+ 958 動詞,非自立,*,*,一段,基本形,*
960
+ 959 動詞,非自立,*,*,一段,基本形,る
961
+ 960 動詞,非自立,*,*,一段,基本形-促音便,*
962
+ 961 動詞,非自立,*,*,一段,基本形-促音便,る
963
+ 962 動詞,非自立,*,*,一段,体言接続特殊,*
964
+ 963 動詞,非自立,*,*,一段,体言接続特殊,る
965
+ 964 動詞,非自立,*,*,一段,未然ウ接続,*
966
+ 965 動詞,非自立,*,*,一段,未然ウ接続,る
967
+ 966 動詞,非自立,*,*,一段,未然形,*
968
+ 967 動詞,非自立,*,*,一段,命令ro,*
969
+ 968 動詞,非自立,*,*,一段,命令ro,る
970
+ 969 動詞,非自立,*,*,一段,命令yo,*
971
+ 970 動詞,非自立,*,*,一段,命令yo,る
972
+ 971 動詞,非自立,*,*,一段,連用形,*
973
+ 972 動詞,非自立,*,*,一段・クレル,仮定形,くれる
974
+ 973 動詞,非自立,*,*,一段・クレル,仮定縮約1,くれる
975
+ 974 動詞,非自立,*,*,一段・クレル,基本形,くれる
976
+ 975 動詞,非自立,*,*,一段・クレル,未然ウ接続,くれる
977
+ 976 動詞,非自立,*,*,一段・クレル,未然形,くれる
978
+ 977 動詞,非自立,*,*,一段・クレル,未然特殊,くれる
979
+ 978 動詞,非自立,*,*,一段・クレル,命令e,くれる
980
+ 979 動詞,非自立,*,*,一段・クレル,命令ro,くれる
981
+ 980 動詞,非自立,*,*,一段・クレル,命令yo,くれる
982
+ 981 動詞,非自立,*,*,一段・クレル,連用形,くれる
983
+ 982 動詞,非自立,*,*,一段・得ル,仮定形,*
984
+ 983 動詞,非自立,*,*,一段・得ル,基本形,*
985
+ 984 動詞,非自立,*,*,五段・カ行イ音便,*,*
986
+ 985 動詞,非自立,*,*,五段・カ行イ音便,仮定形,*
987
+ 986 動詞,非自立,*,*,五段・カ行イ音便,仮定形,おく
988
+ 987 動詞,非自立,*,*,五段・カ行イ音便,仮定形,続く
989
+ 988 動詞,非自立,*,*,五段・カ行イ音便,仮定形,抜く
990
+ 989 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,*
991
+ 990 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,おく
992
+ 991 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,続く
993
+ 992 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,抜く
994
+ 993 動詞,非自立,*,*,五段・カ行イ音便,基本形,*
995
+ 994 動詞,非自立,*,*,五段・カ行イ音便,基本形,おく
996
+ 995 動詞,非自立,*,*,五段・カ行イ音便,基本形,続く
997
+ 996 動詞,非自立,*,*,五段・カ行イ音便,基本形,抜く
998
+ 997 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,*
999
+ 998 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,おく
1000
+ 999 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,続く
1001
+ 1000 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,抜く
1002
+ 1001 動詞,非自立,*,*,五段・カ行イ音便,未然形,*
1003
+ 1002 動詞,非自立,*,*,五段・カ行イ音便,未然形,おく
1004
+ 1003 動詞,非自立,*,*,五段・カ行イ音便,未然形,続く
1005
+ 1004 動詞,非自立,*,*,五段・カ行イ音便,未然形,抜く
1006
+ 1005 動詞,非自立,*,*,五段・カ行イ音便,命令e,*
1007
+ 1006 動詞,非自立,*,*,五段・カ行イ音便,命令e,おく
1008
+ 1007 動詞,非自立,*,*,五段・カ行イ音便,命令e,続く
1009
+ 1008 動詞,非自立,*,*,五段・カ行イ音便,命令e,抜く
1010
+ 1009 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,*
1011
+ 1010 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,おく
1012
+ 1011 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,続く
1013
+ 1012 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,抜く
1014
+ 1013 動詞,非自立,*,*,五段・カ行イ音便,連用形,*
1015
+ 1014 動詞,非自立,*,*,五段・カ行イ音便,連用形,おく
1016
+ 1015 動詞,非自立,*,*,五段・カ行イ音便,連用形,続く
1017
+ 1016 動詞,非自立,*,*,五段・カ行イ音便,連用形,抜く
1018
+ 1017 動詞,非自立,*,*,五段・カ行促音便,仮定形,*
1019
+ 1018 動詞,非自立,*,*,五段・カ行促音便,仮定形,いく
1020
+ 1019 動詞,非自立,*,*,五段・カ行促音便,仮定形,く
1021
+ 1020 動詞,非自立,*,*,五段・カ行促音便,仮定形,行く
1022
+ 1021 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,*
1023
+ 1022 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,いく
1024
+ 1023 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,く
1025
+ 1024 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,行く
1026
+ 1025 動詞,非自立,*,*,五段・カ行促音便,基本形,*
1027
+ 1026 動詞,非自立,*,*,五段・カ行促音便,基本形,いく
1028
+ 1027 動詞,非自立,*,*,五段・カ行促音便,基本形,く
1029
+ 1028 動詞,非自立,*,*,五段・カ行促音便,基本形,行く
1030
+ 1029 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,*
1031
+ 1030 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,いく
1032
+ 1031 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,く
1033
+ 1032 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,行く
1034
+ 1033 動詞,非自立,*,*,五段・カ行促音便,未然形,*
1035
+ 1034 動詞,非自立,*,*,五段・カ行促音便,未然形,いく
1036
+ 1035 動詞,非自立,*,*,五段・カ行促音便,未然形,く
1037
+ 1036 動詞,非自立,*,*,五段・カ行促音便,未然形,行く
1038
+ 1037 動詞,非自立,*,*,五段・カ行促音便,命令e,*
1039
+ 1038 動詞,非自立,*,*,五段・カ行促音便,命令e,いく
1040
+ 1039 動詞,非自立,*,*,五段・カ行促音便,命令e,く
1041
+ 1040 動詞,非自立,*,*,五段・カ行促音便,命令e,行く
1042
+ 1041 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,*
1043
+ 1042 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,いく
1044
+ 1043 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,く
1045
+ 1044 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,行く
1046
+ 1045 動詞,非自立,*,*,五段・カ行促音便,連用形,*
1047
+ 1046 動詞,非自立,*,*,五段・カ行促音便,連用形,いく
1048
+ 1047 動詞,非自立,*,*,五段・カ行促音便,連用形,く
1049
+ 1048 動詞,非自立,*,*,五段・カ行促音便,連用形,行く
1050
+ 1049 動詞,非自立,*,*,五段・カ行促音便ユク,仮定形,ゆく
1051
+ 1050 動詞,非自立,*,*,五段・カ行促音便ユク,仮定形,行く
1052
+ 1051 動詞,非自立,*,*,五段・カ行促音便ユク,仮定縮約1,ゆく
1053
+ 1052 動詞,非自立,*,*,五段・カ行促音便ユク,仮定縮約1,行く
1054
+ 1053 動詞,非自立,*,*,五段・カ行促音便ユク,基本形,ゆく
1055
+ 1054 動詞,非自立,*,*,五段・カ行促音便ユク,基本形,行く
1056
+ 1055 動詞,非自立,*,*,五段・カ行促音便ユク,未然ウ接続,ゆく
1057
+ 1056 動詞,非自立,*,*,五段・カ行促音便ユク,未然ウ接続,行く
1058
+ 1057 動詞,非自立,*,*,五段・カ行促音便ユク,未然形,ゆく
1059
+ 1058 動詞,非自立,*,*,五段・カ行促音便ユク,未然形,行く
1060
+ 1059 動詞,非自立,*,*,五段・カ行促音便ユク,命令e,ゆく
1061
+ 1060 動詞,非自立,*,*,五段・カ行促音便ユク,命令e,行く
1062
+ 1061 動詞,非自立,*,*,五段・カ行促音便ユク,連用形,ゆく
1063
+ 1062 動詞,非自立,*,*,五段・カ行促音便ユク,連用形,行く
1064
+ 1063 動詞,非自立,*,*,五段・サ行,*,*
1065
+ 1064 動詞,非自立,*,*,五段・サ行,*,尽くす
1066
+ 1065 動詞,非自立,*,*,五段・サ行,仮定形,*
1067
+ 1066 動詞,非自立,*,*,五段・サ行,仮定形,出す
1068
+ 1067 動詞,非自立,*,*,五段・サ行,仮定形,尽くす
1069
+ 1068 動詞,非自立,*,*,五段・サ行,仮定形,直す
1070
+ 1069 動詞,非自立,*,*,五段・サ行,仮定縮約1,*
1071
+ 1070 動詞,非自立,*,*,五段・サ行,仮定縮約1,出す
1072
+ 1071 動詞,非自立,*,*,五段・サ行,仮定縮約1,尽くす
1073
+ 1072 動詞,非自立,*,*,五段・サ行,仮定縮約1,直す
1074
+ 1073 動詞,非自立,*,*,五段・サ行,基本形,出す
1075
+ 1074 動詞,非自立,*,*,五段・サ行,基本形,尽くす
1076
+ 1075 動詞,非自立,*,*,五段・サ行,基本形,直す
1077
+ 1076 動詞,非自立,*,*,五段・サ行,未然ウ接続,*
1078
+ 1077 動詞,非自立,*,*,五段・サ行,未然ウ接続,出す
1079
+ 1078 動詞,非自立,*,*,五段・サ行,未然ウ接続,尽くす
1080
+ 1079 動詞,非自立,*,*,五段・サ行,未然ウ接続,直す
1081
+ 1080 動詞,非自立,*,*,五段・サ行,未然形,*
1082
+ 1081 動詞,非自立,*,*,五段・サ行,未然形,出す
1083
+ 1082 動詞,非自立,*,*,五段・サ行,未然形,尽くす
1084
+ 1083 動詞,非自立,*,*,五段・サ行,未然形,直す
1085
+ 1084 動詞,非自立,*,*,五段・サ行,命令e,*
1086
+ 1085 動詞,非自立,*,*,五段・サ行,命令e,出す
1087
+ 1086 動詞,非自立,*,*,五段・サ行,命令e,尽くす
1088
+ 1087 動詞,非自立,*,*,五段・サ行,命令e,直す
1089
+ 1088 動詞,非自立,*,*,五段・サ行,連用形,*
1090
+ 1089 動詞,非自立,*,*,五段・サ行,連用形,出す
1091
+ 1090 動詞,非自立,*,*,五段・サ���,連用形,尽くす
1092
+ 1091 動詞,非自立,*,*,五段・サ行,連用形,直す
1093
+ 1092 動詞,非自立,*,*,五段・タ行,*,*
1094
+ 1093 動詞,非自立,*,*,五段・タ行,仮定形,*
1095
+ 1094 動詞,非自立,*,*,五段・タ行,仮定縮約1,*
1096
+ 1095 動詞,非自立,*,*,五段・タ行,未然ウ接続,*
1097
+ 1096 動詞,非自立,*,*,五段・タ行,未然形,*
1098
+ 1097 動詞,非自立,*,*,五段・タ行,命令e,*
1099
+ 1098 動詞,非自立,*,*,五段・タ行,連用タ接続,*
1100
+ 1099 動詞,非自立,*,*,五段・タ行,連用形,*
1101
+ 1100 動詞,非自立,*,*,五段・ナ行,*,*
1102
+ 1101 動詞,非自立,*,*,五段・ナ行,仮定形,*
1103
+ 1102 動詞,非自立,*,*,五段・ナ行,仮定縮約1,*
1104
+ 1103 動詞,非自立,*,*,五段・ナ行,未然ウ接続,*
1105
+ 1104 動詞,非自立,*,*,五段・ナ行,未然形,*
1106
+ 1105 動詞,非自立,*,*,五段・ナ行,命令e,*
1107
+ 1106 動詞,非自立,*,*,五段・ナ行,連用タ接続,*
1108
+ 1107 動詞,非自立,*,*,五段・ナ行,連用形,*
1109
+ 1108 動詞,非自立,*,*,五段・マ行,*,*
1110
+ 1109 動詞,非自立,*,*,五段・マ行,仮定形,*
1111
+ 1110 動詞,非自立,*,*,五段・マ行,仮定形,込む
1112
+ 1111 動詞,非自立,*,*,五段・マ行,仮定縮約1,*
1113
+ 1112 動詞,非自立,*,*,五段・マ行,仮定縮約1,込む
1114
+ 1113 動詞,非自立,*,*,五段・マ行,基本形,込む
1115
+ 1114 動詞,非自立,*,*,五段・マ行,未然ウ接続,*
1116
+ 1115 動詞,非自立,*,*,五段・マ行,未然ウ接続,込む
1117
+ 1116 動詞,非自立,*,*,五段・マ行,未然形,*
1118
+ 1117 動詞,非自立,*,*,五段・マ行,未然形,込む
1119
+ 1118 動詞,非自立,*,*,五段・マ行,命令e,*
1120
+ 1119 動詞,非自立,*,*,五段・マ行,命令e,込む
1121
+ 1120 動詞,非自立,*,*,五段・マ行,連用タ接続,*
1122
+ 1121 動詞,非自立,*,*,五段・マ行,連用タ接続,込む
1123
+ 1122 動詞,非自立,*,*,五段・マ行,連用形,*
1124
+ 1123 動詞,非自立,*,*,五段・マ行,連用形,込む
1125
+ 1124 動詞,非自立,*,*,五段・ラ行,*,*
1126
+ 1125 動詞,非自立,*,*,五段・ラ行,*,切る
1127
+ 1126 動詞,非自立,*,*,五段・ラ行,仮定形,*
1128
+ 1127 動詞,非自立,*,*,五段・ラ行,仮定形,ある
1129
+ 1128 動詞,非自立,*,*,五段・ラ行,仮定形,おる
1130
+ 1129 動詞,非自立,*,*,五段・ラ行,仮定形,かかる
1131
+ 1130 動詞,非自立,*,*,五段・ラ行,仮定形,きる
1132
+ 1131 動詞,非自立,*,*,五段・ラ行,仮定形,なる
1133
+ 1132 動詞,非自立,*,*,五段・ラ行,仮定形,まいる
1134
+ 1133 動詞,非自立,*,*,五段・ラ行,仮定形,まわる
1135
+ 1134 動詞,非自立,*,*,五段・ラ行,仮定形,やる
1136
+ 1135 動詞,非自立,*,*,五段・ラ行,仮定形,回る
1137
+ 1136 動詞,非自立,*,*,五段・ラ行,仮定形,参る
1138
+ 1137 動詞,非自立,*,*,五段・ラ行,仮定形,終わる
1139
+ 1138 動詞,非自立,*,*,五段・ラ行,仮定形,切る
1140
+ 1139 動詞,非自立,*,*,五段・ラ行,仮定縮約1,*
1141
+ 1140 動詞,非自立,*,*,五段・ラ行,仮定縮約1,ある
1142
+ 1141 動詞,非自立,*,*,五段・ラ行,仮定縮約1,おる
1143
+ 1142 動詞,非自立,*,*,五段・ラ行,仮定縮約1,かかる
1144
+ 1143 動詞,非自立,*,*,五段・ラ行,仮定縮約1,きる
1145
+ 1144 動詞,非自立,*,*,五段・ラ行,仮定縮約1,なる
1146
+ 1145 動詞,非自立,*,*,五段・ラ行,仮定縮約1,まいる
1147
+ 1146 動詞,非自立,*,*,五段・ラ行,仮定縮約1,まわる
1148
+ 1147 動詞,非自立,*,*,五段・ラ行,仮定縮約1,やる
1149
+ 1148 動詞,非自立,*,*,五段・ラ行,仮定縮約1,回る
1150
+ 1149 動詞,非自立,*,*,五段・ラ行,仮定縮約1,参る
1151
+ 1150 動詞,非自立,*,*,五段・ラ行,仮定縮約1,終わる
1152
+ 1151 動詞,非自立,*,*,五段・ラ行,仮定縮約1,切る
1153
+ 1152 動詞,非自立,*,*,五段・ラ行,基本形,*
1154
+ 1153 動詞,非自立,*,*,五段・ラ行,基本形,ある
1155
+ 1154 動詞,非自立,*,*,五段・ラ行,基本形,おる
1156
+ 1155 動詞,非自立,*,*,五段・ラ行,基本形,かかる
1157
+ 1156 動詞,非自立,*,*,五段・ラ行,基本形,きる
1158
+ 1157 動詞,非自立,*,*,五段・ラ行,基本形,なる
1159
+ 1158 動詞,非自立,*,*,五段・ラ行,基本形,まいる
1160
+ 1159 動詞,非自立,*,*,五段・ラ行,基本形,まわる
1161
+ 1160 動詞,非自立,*,*,五段・ラ行,基本形,やる
1162
+ 1161 動詞,非自立,*,*,五段・ラ行,基本形,回る
1163
+ 1162 動詞,非自立,*,*,五段・ラ行,基本形,参る
1164
+ 1163 動詞,非自立,*,*,五段・ラ行,基本形,終わる
1165
+ 1164 動詞,非自立,*,*,五段・ラ行,基本形,切る
1166
+ 1165 動詞,非自立,*,*,五段・ラ行,体言接続特殊,*
1167
+ 1166 動詞,非自立,*,*,五段・ラ行,体言接続特殊,ある
1168
+ 1167 動詞,非自立,*,*,五段・ラ行,体言接続特殊,おる
1169
+ 1168 動詞,非自立,*,*,五段・ラ行,体言接続特殊,かかる
1170
+ 1169 動詞,非自立,*,*,五段・ラ行,体言接続特殊,きる
1171
+ 1170 動詞,非自立,*,*,五段・ラ行,体言接続特殊,なる
1172
+ 1171 動詞,非自立,*,*,五段・ラ行,体言接続特殊,まいる
1173
+ 1172 動詞,非自立,*,*,五段・ラ行,体言接続特殊,まわる
1174
+ 1173 動詞,非自立,*,*,五段・ラ行,体言接続特殊,やる
1175
+ 1174 動詞,非自立,*,*,五段・ラ行,体言接続特殊,回る
1176
+ 1175 動詞,非自立,*,*,五段・ラ行,体言接続特殊,参る
1177
+ 1176 動詞,非自立,*,*,五段・ラ行,体言接続特殊,終わる
1178
+ 1177 動詞,非自立,*,*,五段・ラ行,体言接続特殊,切る
1179
+ 1178 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,*
1180
+ 1179 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,ある
1181
+ 1180 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,おる
1182
+ 1181 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,かかる
1183
+ 1182 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,きる
1184
+ 1183 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,なる
1185
+ 1184 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,まいる
1186
+ 1185 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,まわる
1187
+ 1186 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,やる
1188
+ 1187 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,回る
1189
+ 1188 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,参る
1190
+ 1189 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,終わる
1191
+ 1190 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,切る
1192
+ 1191 動詞,非自立,*,*,五段・ラ行,未然ウ接続,*
1193
+ 1192 動詞,非自立,*,*,五段・ラ行,未然ウ接続,ある
1194
+ 1193 動詞,非自立,*,*,五段・ラ行,未然ウ接続,おる
1195
+ 1194 動詞,非自立,*,*,五段・ラ行,未然ウ接続,かかる
1196
+ 1195 動詞,非自立,*,*,五段・ラ行,未然ウ接続,きる
1197
+ 1196 動詞,非自立,*,*,五段・ラ行,未然ウ接続,なる
1198
+ 1197 動詞,非自立,*,*,五段・ラ行,未然ウ接続,まいる
1199
+ 1198 動詞,非自立,*,*,五段・ラ行,未然ウ接続,まわる
1200
+ 1199 動詞,非自立,*,*,五段・ラ行,未然ウ接続,やる
1201
+ 1200 動詞,非自立,*,*,五段・ラ行,未然ウ接続,回る
1202
+ 1201 動詞,非自立,*,*,五段・ラ行,未然ウ接続,参る
1203
+ 1202 動詞,非自立,*,*,五段・ラ行,未然ウ接続,終わる
1204
+ 1203 動詞,非自立,*,*,五段・ラ行,未然ウ接続,切る
1205
+ 1204 動詞,非自立,*,*,五段・ラ行,未然形,*
1206
+ 1205 動詞,非自立,*,*,五段・ラ行,未然形,ある
1207
+ 1206 動詞,非自立,*,*,五段・ラ行,未然形,おる
1208
+ 1207 動詞,非自立,*,*,五段・ラ行,未然形,かかる
1209
+ 1208 動詞,非自立,*,*,五段・ラ行,未然形,きる
1210
+ 1209 動詞,非自立,*,*,五段・ラ行,未然形,なる
1211
+ 1210 動詞,非自立,*,*,五段・ラ行,未然形,まいる
1212
+ 1211 動詞,非自立,*,*,五段・ラ行,未然形,まわる
1213
+ 1212 動詞,非自立,*,*,五段・ラ行,未然形,やる
1214
+ 1213 動詞,非自立,*,*,五段・ラ行,未然形,回る
1215
+ 1214 動詞,非自立,*,*,五段・ラ行,未然形,参る
1216
+ 1215 動詞,非自立,*,*,五段・ラ行,未然形,終わる
1217
+ 1216 動詞,非自立,*,*,五段・ラ行,未然形,切る
1218
+ 1217 動詞,非自立,*,*,五段・ラ行,未然特殊,*
1219
+ 1218 動詞,非自立,*,*,五段・ラ行,未然特殊,ある
1220
+ 1219 動詞,非自立,*,*,五段・ラ行,未然特殊,おる
1221
+ 1220 動詞,非自立,*,*,五段・ラ行,未然特殊,かかる
1222
+ 1221 動詞,非自立,*,*,五段・ラ行,未然特殊,きる
1223
+ 1222 動詞,非自立,*,*,五段・ラ行,未然特殊,なる
1224
+ 1223 動詞,非自立,*,*,五段・ラ行,未然特殊,まいる
1225
+ 1224 動詞,非自立,*,*,五段・ラ行,未然特殊,まわる
1226
+ 1225 動詞,非自立,*,*,五段・ラ行,未然特殊,やる
1227
+ 1226 動詞,非自立,*,*,五段・ラ行,未然特殊,回る
1228
+ 1227 動詞,非自立,*,*,五段・ラ行,未然特殊,参る
1229
+ 1228 動詞,非自立,*,*,五段・ラ行,未然特殊,終わる
1230
+ 1229 動詞,非自立,*,*,五段・ラ行,未然特殊,切る
1231
+ 1230 動詞,非自立,*,*,五段・ラ行,命令e,*
1232
+ 1231 動詞,非自立,*,*,五段・ラ行,命令e,ある
1233
+ 1232 動詞,非自立,*,*,五段・ラ行,命令e,おる
1234
+ 1233 動詞,非自立,*,*,五段・ラ行,命令e,かかる
1235
+ 1234 動詞,非自立,*,*,五段・ラ行,命令e,きる
1236
+ 1235 動詞,非自立,*,*,五段・ラ行,命令e,なる
1237
+ 1236 動詞,非自立,*,*,五段・ラ行,命令e,まいる
1238
+ 1237 動詞,非自立,*,*,五段・ラ行,命令e,まわる
1239
+ 1238 動詞,非自立,*,*,五段・ラ行,命令e,やる
1240
+ 1239 動詞,非自立,*,*,五段・ラ行,命令e,回る
1241
+ 1240 動詞,非自立,*,*,五段・ラ行,命令e,参る
1242
+ 1241 動詞,非自立,*,*,五段・ラ行,命令e,終わる
1243
+ 1242 動詞,非自立,*,*,五段・ラ行,命令e,切る
1244
+ 1243 動詞,非自立,*,*,五段・ラ行,連用タ接続,*
1245
+ 1244 動詞,非自立,*,*,五段・ラ行,連用タ接続,ある
1246
+ 1245 動詞,非自立,*,*,五段・ラ行,連用タ接続,おる
1247
+ 1246 動詞,非自立,*,*,五段・ラ行,連用タ接続,かかる
1248
+ 1247 動詞,非自立,*,*,五段・ラ行,連用タ接続,きる
1249
+ 1248 動詞,非自立,*,*,五段・ラ行,連用タ接続,なる
1250
+ 1249 動詞,非自立,*,*,五段・ラ行,連用タ接続,まいる
1251
+ 1250 動詞,非自立,*,*,五段・ラ行,連用タ接続,まわる
1252
+ 1251 動詞,非自立,*,*,五段・ラ行,連用タ接続,やる
1253
+ 1252 動詞,非自立,*,*,五段・ラ行,連用タ接続,��る
1254
+ 1253 動詞,非自立,*,*,五段・ラ行,連用タ接続,参る
1255
+ 1254 動詞,非自立,*,*,五段・ラ行,連用タ接続,終わる
1256
+ 1255 動詞,非自立,*,*,五段・ラ行,連用タ接続,切る
1257
+ 1256 動詞,非自立,*,*,五段・ラ行,連用形,*
1258
+ 1257 動詞,非自立,*,*,五段・ラ行,連用形,ある
1259
+ 1258 動詞,非自立,*,*,五段・ラ行,連用形,おる
1260
+ 1259 動詞,非自立,*,*,五段・ラ行,連用形,かかる
1261
+ 1260 動詞,非自立,*,*,五段・ラ行,連用形,きる
1262
+ 1261 動詞,非自立,*,*,五段・ラ行,連用形,なる
1263
+ 1262 動詞,非自立,*,*,五段・ラ行,連用形,まいる
1264
+ 1263 動詞,非自立,*,*,五段・ラ行,連用形,まわる
1265
+ 1264 動詞,非自立,*,*,五段・ラ行,連用形,やる
1266
+ 1265 動詞,非自立,*,*,五段・ラ行,連用形,回る
1267
+ 1266 動詞,非自立,*,*,五段・ラ行,連用形,参る
1268
+ 1267 動詞,非自立,*,*,五段・ラ行,連用形,終わる
1269
+ 1268 動詞,非自立,*,*,五段・ラ行,連用形,切る
1270
+ 1269 動詞,非自立,*,*,五段・ラ行特殊,仮定形,なさる
1271
+ 1270 動詞,非自立,*,*,五段・ラ行特殊,仮定形,らっしゃる
1272
+ 1271 動詞,非自立,*,*,五段・ラ行特殊,仮定形,下さる
1273
+ 1272 動詞,非自立,*,*,五段・ラ行特殊,仮定縮約1,なさる
1274
+ 1273 動詞,非自立,*,*,五段・ラ行特殊,仮定縮約1,らっしゃる
1275
+ 1274 動詞,非自立,*,*,五段・ラ行特殊,仮定縮約1,下さる
1276
+ 1275 動詞,非自立,*,*,五段・ラ行特殊,基本形,なさる
1277
+ 1276 動詞,非自立,*,*,五段・ラ行特殊,基本形,らっしゃる
1278
+ 1277 動詞,非自立,*,*,五段・ラ行特殊,基本形,下さる
1279
+ 1278 動詞,非自立,*,*,五段・ラ行特殊,未然ウ接続,なさる
1280
+ 1279 動詞,非自立,*,*,五段・ラ行特殊,未然ウ接続,らっしゃる
1281
+ 1280 動詞,非自立,*,*,五段・ラ行特殊,未然ウ接続,下さる
1282
+ 1281 動詞,非自立,*,*,五段・ラ行特殊,未然形,なさる
1283
+ 1282 動詞,非自立,*,*,五段・ラ行特殊,未然形,らっしゃる
1284
+ 1283 動詞,非自立,*,*,五段・ラ行特殊,未然形,下さる
1285
+ 1284 動詞,非自立,*,*,五段・ラ行特殊,未然特殊,なさる
1286
+ 1285 動詞,非自立,*,*,五段・ラ行特殊,未然特殊,らっしゃる
1287
+ 1286 動詞,非自立,*,*,五段・ラ行特殊,未然特殊,下さる
1288
+ 1287 動詞,非自立,*,*,五段・ラ行特殊,命令e,なさる
1289
+ 1288 動詞,非自立,*,*,五段・ラ行特殊,命令e,らっしゃる
1290
+ 1289 動詞,非自立,*,*,五段・ラ行特殊,命令e,下さる
1291
+ 1290 動詞,非自立,*,*,五段・ラ行特殊,命令i,なさる
1292
+ 1291 動詞,非自立,*,*,五段・ラ行特殊,命令i,らっしゃる
1293
+ 1292 動詞,非自立,*,*,五段・ラ行特殊,命令i,下さる
1294
+ 1293 動詞,非自立,*,*,五段・ラ行特殊,連用タ接続,なさる
1295
+ 1294 動詞,非自立,*,*,五段・ラ行特殊,連用タ接続,らっしゃる
1296
+ 1295 動詞,非自立,*,*,五段・ラ行特殊,連用タ接続,下さる
1297
+ 1296 動詞,非自立,*,*,五段・ラ行特殊,連用形,なさる
1298
+ 1297 動詞,非自立,*,*,五段・ラ行特殊,連用形,らっしゃる
1299
+ 1298 動詞,非自立,*,*,五段・ラ行特殊,連用形,下さる
1300
+ 1299 動詞,非自立,*,*,五段・ワ行ウ音便,*,*
1301
+ 1300 動詞,非自立,*,*,五段・ワ行ウ音便,仮定形,*
1302
+ 1301 動詞,非自立,*,*,五段・ワ行ウ音便,未然ウ接続,*
1303
+ 1302 動詞,非自立,*,*,五段・ワ行ウ音便,未然形,*
1304
+ 1303 動詞,非自立,*,*,五段・ワ行ウ音便,命令e,*
1305
+ 1304 動詞,非自立,*,*,五段・ワ行ウ音便,連用タ接続,*
1306
+ 1305 動詞,非自立,*,*,五段・ワ行ウ音便,連用形,*
1307
+ 1306 動詞,非自立,*,*,五段・ワ行促音便,*,*
1308
+ 1307 動詞,非自立,*,*,五段・ワ行促音便,仮定形,*
1309
+ 1308 動詞,非自立,*,*,五段・ワ行促音便,仮定形,しまう
1310
+ 1309 動詞,非自立,*,*,五段・ワ行促音便,仮定形,もらう
1311
+ 1310 動詞,非自立,*,*,五段・ワ行促音便,仮定形,合う
1312
+ 1311 動詞,非自立,*,*,五段・ワ行促音便,基本形,*
1313
+ 1312 動詞,非自立,*,*,五段・ワ行促音便,基本形,しまう
1314
+ 1313 動詞,非自立,*,*,五段・ワ行促音便,基本形,もらう
1315
+ 1314 動詞,非自立,*,*,五段・ワ行促音便,基本形,合う
1316
+ 1315 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,*
1317
+ 1316 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,しまう
1318
+ 1317 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,もらう
1319
+ 1318 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,合う
1320
+ 1319 動詞,非自立,*,*,五段・ワ行促音便,未然形,*
1321
+ 1320 動詞,非自立,*,*,五段・ワ行促音便,未然形,しまう
1322
+ 1321 動詞,非自立,*,*,五段・ワ行促音便,未然形,もらう
1323
+ 1322 動詞,非自立,*,*,五段・ワ行促音便,未然形,合う
1324
+ 1323 動詞,非自立,*,*,五段・ワ行促音便,命令e,*
1325
+ 1324 動詞,非自立,*,*,五段・ワ行促音便,命令e,しまう
1326
+ 1325 動詞,非自立,*,*,五段・ワ行促音便,命令e,もらう
1327
+ 1326 動詞,非自立,*,*,五段・ワ行促音便,命令e,合う
1328
+ 1327 動詞,非���立,*,*,五段・ワ行促音便,連用タ接続,*
1329
+ 1328 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,しまう
1330
+ 1329 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,もらう
1331
+ 1330 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,合う
1332
+ 1331 動詞,非自立,*,*,五段・ワ行促音便,連用形,*
1333
+ 1332 動詞,非自立,*,*,五段・ワ行促音便,連用形,しまう
1334
+ 1333 動詞,非自立,*,*,五段・ワ行促音便,連用形,もらう
1335
+ 1334 動詞,非自立,*,*,五段・ワ行促音便,連用形,合う
1336
+ 1335 動詞,非自立,*,*,四段・ハ行,仮定形,*
1337
+ 1336 動詞,非自立,*,*,四段・ハ行,基本形,*
1338
+ 1337 動詞,非自立,*,*,四段・ハ行,未然形,*
1339
+ 1338 動詞,非自立,*,*,四段・ハ行,命令e,*
1340
+ 1339 動詞,非自立,*,*,四段・ハ行,連用形,*
1341
+ 1340 副詞,*,*,*,*,*,*
1342
+ 1341 副詞,一般,*,*,*,*,*
1343
+ 1342 副詞,助詞類接続,*,*,*,*,*
1344
+ 1343 名詞,サ変接続,*,*,*,*,*
1345
+ 1344 名詞,ナイ形容詞語幹,*,*,*,*,*
1346
+ 1345 名詞,一般,*,*,*,*,*
1347
+ 1346 名詞,一般,*,*,*,0,*
1348
+ 1347 名詞,形容動詞語幹,*,*,*,*,*
1349
+ 1348 名詞,固有名詞,一般,*,*,*,*
1350
+ 1349 名詞,固有名詞,人名,一般,*,*,*
1351
+ 1350 名詞,固有名詞,人名,姓,*,*,*
1352
+ 1351 名詞,固有名詞,人名,名,*,*,*
1353
+ 1352 名詞,固有名詞,組織,*,*,*,*
1354
+ 1353 名詞,固有名詞,地域,一般,*,*,*
1355
+ 1354 名詞,固有名詞,地域,国,*,*,*
1356
+ 1355 名詞,数,*,*,*,*,*
1357
+ 1356 名詞,接続詞的,*,*,*,*,*
1358
+ 1357 名詞,接尾,サ変接続,*,*,*,*
1359
+ 1358 名詞,接尾,一般,*,*,*,*
1360
+ 1359 名詞,接尾,形容動詞語幹,*,*,*,*
1361
+ 1360 名詞,接尾,助数詞,*,*,*,*
1362
+ 1361 名詞,接尾,助動詞語幹,*,*,*,*
1363
+ 1362 名詞,接尾,人名,*,*,*,*
1364
+ 1363 名詞,接尾,地域,*,*,*,*
1365
+ 1364 名詞,接尾,特殊,*,*,*,*
1366
+ 1365 名詞,接尾,副詞可能,*,*,*,*
1367
+ 1366 名詞,代名詞,一般,*,*,*,*
1368
+ 1367 名詞,代名詞,縮約,*,*,*,*
1369
+ 1368 名詞,動詞非自立的,*,*,*,*,*
1370
+ 1369 名詞,特殊,助動詞語幹,*,*,*,*
1371
+ 1370 名詞,非自立,*,*,*,*,*
1372
+ 1371 名詞,非自立,一般,*,*,*,*
1373
+ 1372 名詞,非自立,形容動詞語幹,*,*,*,*
1374
+ 1373 名詞,非自立,助動詞語幹,*,*,*,*
1375
+ 1374 名詞,非自立,副詞可能,*,*,*,*
1376
+ 1375 名詞,副詞可能,*,*,*,*,*
1377
+ 1376 連体詞,*,*,*,*,*,*
dict/matrix.bin ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:62fd16b4f64c851d5dc352ef0d5740c5fc83ddc7c203b2b0b1fc5271969a14ce
3
+ size 3792262
dict/pos-id.def ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ その他,間投,*,* 0
2
+ フィラー,*,*,* 1
3
+ 感動詞,*,*,* 2
4
+ 記号,アルファベット,*,* 3
5
+ 記号,一般,*,* 4
6
+ 記号,括弧開,*,* 5
7
+ 記号,括弧閉,*,* 6
8
+ 記号,句点,*,* 7
9
+ 記号,空白,*,* 8
10
+ 記号,読点,*,* 9
11
+ 形容詞,自立,*,* 10
12
+ 形容詞,接尾,*,* 11
13
+ 形容詞,非自立,*,* 12
14
+ 助詞,格助詞,一般,* 13
15
+ 助詞,格助詞,引用,* 14
16
+ 助詞,格助詞,連語,* 15
17
+ 助詞,係助詞,*,* 16
18
+ 助詞,終助詞,*,* 17
19
+ 助詞,接続助詞,*,* 18
20
+ 助詞,特殊,*,* 19
21
+ 助詞,副詞化,*,* 20
22
+ 助詞,副助詞,*,* 21
23
+ 助詞,副助詞/並立助詞/終助詞,*,* 22
24
+ 助詞,並立助詞,*,* 23
25
+ 助詞,連体化,*,* 24
26
+ 助動詞,*,*,* 25
27
+ 接続詞,*,*,* 26
28
+ 接頭詞,形容詞接続,*,* 27
29
+ 接頭詞,数接続,*,* 28
30
+ 接頭詞,動詞接続,*,* 29
31
+ 接頭詞,名詞接続,*,* 30
32
+ 動詞,自立,*,* 31
33
+ 動詞,接尾,*,* 32
34
+ 動詞,非自立,*,* 33
35
+ 副詞,一般,*,* 34
36
+ 副詞,助詞類接続,*,* 35
37
+ 名詞,サ変接続,*,* 36
38
+ 名詞,ナイ形容詞語幹,*,* 37
39
+ 名詞,一般,*,* 38
40
+ 名詞,引用文字列,*,* 39
41
+ 名詞,形容動詞語幹,*,* 40
42
+ 名詞,固有名詞,一般,* 41
43
+ 名詞,固有名詞,人名,一般 42
44
+ 名詞,固有名詞,人名,姓 43
45
+ 名詞,固有名詞,人名,名 44
46
+ 名詞,固有名詞,組織,* 45
47
+ 名詞,固有名詞,地域,一般 46
48
+ 名詞,固有名詞,地域,国 47
49
+ 名詞,数,*,* 48
50
+ 名詞,接続詞的,*,* 49
51
+ 名詞,接尾,サ変接続,* 50
52
+ 名詞,接尾,一般,* 51
53
+ 名詞,接尾,形容動詞語幹,* 52
54
+ 名詞,接尾,助数詞,* 53
55
+ 名詞,接尾,助動詞語幹,* 54
56
+ 名詞,接尾,人名,* 55
57
+ 名詞,接尾,地域,* 56
58
+ 名詞,接尾,特殊,* 57
59
+ 名詞,接尾,副詞可能,* 58
60
+ 名詞,代名詞,一般,* 59
61
+ 名詞,代名詞,縮約,* 60
62
+ 名詞,動詞非自立的,*,* 61
63
+ 名詞,特殊,助動詞語幹,* 62
64
+ 名詞,非自立,一般,* 63
65
+ 名詞,非自立,形容動詞語幹,* 64
66
+ 名詞,非自立,助動詞語幹,* 65
67
+ 名詞,非自立,副詞可能,* 66
68
+ 名詞,副詞可能,*,* 67
69
+ 連体詞,*,*,* 68
dict/rewrite.def ADDED
@@ -0,0 +1,94 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #
2
+ # Feature(POS) to Internal State mapping
3
+ #
4
+ [unigram rewrite]
5
+ # 読み,発音をとりのぞいて, 品詞1,2,3,4,活用形,活用型,原形,よみ を使う
6
+ *,*,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7,$8
7
+ # 読みがない場合は無視
8
+ *,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7,*
9
+
10
+ [left rewrite]
11
+ (助詞|助動詞),*,*,*,*,*,(ない|無い) $1,$2,$3,$4,$5,$6,無い
12
+ (助詞|助動詞),終助詞,*,*,*,*,(よ|ヨ) $1,$2,$3,$4,$5,$6,よ
13
+ (助詞|助動詞),終助詞,*,*,*,*,(な|なぁ|なあ|ナ) $1,$2,$3,$4,$5,$6,な
14
+ (助詞|助動詞),終助詞,*,*,*,*,(ね|ねぇ|ねえ|ねェ|ねエ|ねっ|ねッ|ネ) $1,$2,$3,$4,$5,$6,ね
15
+ (助詞|助動詞),接続助詞,*,*,*,*,(て|ちゃ|ちゃあ) $1,$2,$3,$4,$5,$6,て
16
+ (助詞|助動詞),接続助詞,*,*,*,*,(ちゃあ|ちゃ) $1,$2,$3,$4,$5,$6,ちゃ
17
+ (助詞|助動詞),接続助詞,*,*,*,*,(で|じゃ) $1,$2,$3,$4,$5,$6,で
18
+ (助詞|助動詞),接続助詞,*,*,*,*,(けど|けれど) $1,$2,$3,$4,$5,$6,けれど
19
+ (助詞|助動詞),*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7
20
+ 記号,(句点|括弧閉|括弧開),*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
21
+ BOS/EOS,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
22
+ 動詞,自立,*,*,*,*,(行う|行なう) $1,$2,$3,$4,$5,$6,行う
23
+ 動詞,自立,*,*,*,*,(いう|言う|云う) $1,$2,$3,$4,$5,$6,言う
24
+ 動詞,自立,*,*,*,*,(いく|行く) $1,$2,$3,$4,$5,$6,行く
25
+ 動詞,自立,*,*,*,*,する $1,$2,$3,$4,$5,$6,する
26
+ 動詞,自立,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
27
+ 動詞,非自立,*,*,*,*,(ある|おる|かかる|きる|なる|まいる|まわる|やる|回る|終わる|切る|参る|いらっしゃる|らっしゃる|なさる|る|もらう|しまう|続く|いく|ゆく|行く|く|くれる|おく|する) $1,$2,$3,$4,$5,$6,$7
28
+ 動詞,非自立,*,*,*,*,(来る|くる) $1,$2,$3,$4,$5,$6,来る
29
+ 動詞,非自立,*,*,*,*,(ぬく|抜く) $1,$2,$3,$4,$5,$6,抜く
30
+ 動詞,非自立,*,*,*,*,(頂く|いただく) $1,$2,$3,$4,$5,$6,頂く
31
+ 動詞,非自立,*,*,*,*,(いたす|致す) $1,$2,$3,$4,$5,$6,致す
32
+ 動詞,非自立,*,*,*,*,(だす|出す) $1,$2,$3,$4,$5,$6,出す
33
+ 動詞,非自立,*,*,*,*,(つくす|尽くす|尽す) $1,$2,$3,$4,$5,$6,尽くす
34
+ 動詞,非自立,*,*,*,*,(直す|なおす) $1,$2,$3,$4,$5,$6,直す
35
+ 動詞,非自立,*,*,*,*,(込む|こむ) $1,$2,$3,$4,$5,$6,込む
36
+ 動詞,非自立,*,*,*,*,(くださる|下さる) $1,$2,$3,$4,$5,$6,下さる
37
+ 動詞,非自立,*,*,*,*,(合う|あう) $1,$2,$3,$4,$5,$6,合う
38
+ 動詞,非自立,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
39
+ 形容詞,*,*,*,*,*,(ない|無い|いい|らしい) $1,$2,$3,$4,$5,$6,無い
40
+ 形容詞,接尾,*,*,*,*,(臭い|くさい) $1,$2,$3,$4,$5,$6,臭い
41
+ 形容詞,接尾,*,*,*,*,(欲しい|ほしい) $1,$2,$3,$4,$5,$6,欲しい
42
+ 形容詞,接尾,*,*,*,*,(ったらしい|たらしい|っぽい|ぽい) $1,$2,$3,$4,$5,$6,たらしい
43
+ 形容詞,接尾,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
44
+ 形容詞,非自立,*,*,*,*,(難い|がたい|づらい|にくい|やすい) $1,$2,$3,$4,$5,$6,難い
45
+ 形容詞,非自立,*,*,*,*,(よい|良い) $1,$2,$3,$4,$5,$6,良い
46
+ 形容詞,非自立,*,*,*,*,(欲しい|ほしい) $1,$2,$3,$4,$5,$6,欲しい
47
+ 形容詞,非自立,*,*,*,*,(じまう|じゃう|でく|どく|でる|どる) $1,$2,$3,$4,$5,$6,でる
48
+ 形容詞,非自立,*,*,*,*,(ちまう|ちゃう|てく|とく|てる|とる) $1,$2,$3,$4,$5,$6,てる
49
+ 形容詞,非自立,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
50
+ 接続詞,*,*,*,*,*,(及び|および|あるいは|或いは|或は|または|又は|ないし|ならびに|並びに|もしくは|若しくは) $1,$2,$3,$4,$5,$6,および
51
+ *,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
52
+
53
+ [right rewrite]
54
+ (助詞|助動詞),*,*,*,*,*,(ない|無い) $1,$2,$3,$4,$5,$6,無い
55
+ (助詞|助動詞),終助詞,*,*,*,*,(よ|ヨ) $1,$2,$3,$4,$5,$6,よ
56
+ (助詞|助動詞),終助詞,*,*,*,*,(な|なぁ|なあ|ナ) $1,$2,$3,$4,$5,$6,な
57
+ (助詞|助動詞),終助詞,*,*,*,*,(ね|ねぇ|ねえ|ねェ|ねエ|ねっ|ねッ|ネ) $1,$2,$3,$4,$5,$6,ね
58
+ (助詞|助動詞),接続助詞,*,*,*,*,(て|ちゃ|ちゃあ) $1,$2,$3,$4,$5,$6,て
59
+ (助詞|助動詞),接続助詞,*,*,*,*,(ちゃあ|ちゃ) $1,$2,$3,$4,$5,$6,ちゃ
60
+ (助詞|助動詞),接続助詞,*,*,*,*,(で|じゃ) $1,$2,$3,$4,$5,$6,で
61
+ (助詞|助動詞),接続助詞,*,*,*,*,(けど|けれど) $1,$2,$3,$4,$5,$6,けれど
62
+ (助詞|助動詞),*,*,*,*,*,* $1,$2,$3,$4,$5,$6,$7
63
+ 記号,(句点|括弧閉|括弧開),*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
64
+ BOS/EOS,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,BOS/EOS
65
+ 動詞,自立,*,*,*,*,(行う|行なう) $1,$2,$3,$4,$5,$6,行う
66
+ 動詞,自立,*,*,*,*,(いう|言う|云う) $1,$2,$3,$4,$5,$6,言う
67
+ 動詞,自立,*,*,*,*,(いく|行く) $1,$2,$3,$4,$5,$6,行く
68
+ 動詞,自立,*,*,*,*,する $1,$2,$3,$4,$5,$6,する
69
+ 動詞,自立,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
70
+ 動詞,非自立,*,*,*,*,(ある|おる|かかる|きる|なる|まいる|まわる|やる|回る|終わる|切る|参る|いらっしゃる|らっしゃる|なさる|る|もらう|しまう|続く|いく|ゆく|行く|く|くれる|おく|する) $1,$2,$3,$4,$5,$6,$7
71
+ 動詞,非自立,*,*,*,*,(来る|くる) $1,$2,$3,$4,$5,$6,来る
72
+ 動詞,非自立,*,*,*,*,(ぬく|抜く) $1,$2,$3,$4,$5,$6,抜く
73
+ 動詞,非自立,*,*,*,*,(頂く|いただく) $1,$2,$3,$4,$5,$6,頂く
74
+ 動詞,非自立,*,*,*,*,(いたす|致す) $1,$2,$3,$4,$5,$6,致す
75
+ 動詞,非自立,*,*,*,*,(だす|出す) $1,$2,$3,$4,$5,$6,出す
76
+ 動詞,非自立,*,*,*,*,(つくす|尽くす|尽す) $1,$2,$3,$4,$5,$6,尽くす
77
+ 動詞,非自立,*,*,*,*,(直す|なおす) $1,$2,$3,$4,$5,$6,直す
78
+ 動詞,非自立,*,*,*,*,(込む|こむ) $1,$2,$3,$4,$5,$6,込む
79
+ 動詞,非自立,*,*,*,*,(くださる|下さる) $1,$2,$3,$4,$5,$6,下さる
80
+ 動詞,非自立,*,*,*,*,(合う|あう) $1,$2,$3,$4,$5,$6,合う
81
+ 動詞,非自立,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
82
+ 形容詞,*,*,*,*,*,(ない|無い|いい|らしい) $1,$2,$3,$4,$5,$6,無い
83
+ 形容詞,接尾,*,*,*,*,(臭い|くさい) $1,$2,$3,$4,$5,$6,臭い
84
+ 形容詞,接尾,*,*,*,*,(欲しい|ほしい) $1,$2,$3,$4,$5,$6,欲しい
85
+ 形容詞,接尾,*,*,*,*,(ったらしい|たらしい|っぽい|ぽい) $1,$2,$3,$4,$5,$6,たらしい
86
+ 形容詞,接尾,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
87
+ 形容詞,非自立,*,*,*,*,(難い|がたい|づらい|にくい|やすい) $1,$2,$3,$4,$5,$6,難い
88
+ 形容詞,非自立,*,*,*,*,(よい|良い) $1,$2,$3,$4,$5,$6,良い
89
+ 形容詞,非自立,*,*,*,*,(欲しい|ほしい) $1,$2,$3,$4,$5,$6,欲しい
90
+ 形容詞,非自立,*,*,*,*,(じまう|じゃう|でく|どく|でる|どる) $1,$2,$3,$4,$5,$6,でる
91
+ 形容詞,非自立,*,*,*,*,(ちまう|ちゃう|てく|とく|てる|とる) $1,$2,$3,$4,$5,$6,てる
92
+ 形容詞,非自立,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
93
+ 接続詞,*,*,*,*,*,(及び|および|あるいは|或いは|或は|または|又は|ないし|ならびに|並びに|もしくは|若しくは) $1,$2,$3,$4,$5,$6,および
94
+ *,*,*,*,*,*,* $1,$2,$3,$4,$5,$6,*
dict/right-id.def ADDED
@@ -0,0 +1,1377 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 0 BOS/EOS,*,*,*,*,*,BOS/EOS
2
+ 1 その他,間投,*,*,*,*,*
3
+ 2 フィラー,*,*,*,*,*,*
4
+ 3 感動詞,*,*,*,*,*,*
5
+ 4 記号,アルファベット,*,*,*,*,*
6
+ 5 記号,一般,*,*,*,*,*
7
+ 6 記号,括弧開,*,*,*,*,BOS/EOS
8
+ 7 記号,括弧閉,*,*,*,*,BOS/EOS
9
+ 8 記号,句点,*,*,*,*,BOS/EOS
10
+ 9 記号,空白,*,*,*,*,*
11
+ 10 記号,読点,*,*,*,*,*
12
+ 11 形容詞,自立,*,*,形容詞・アウオ段,*,*
13
+ 12 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,*
14
+ 13 形容詞,自立,*,*,形容詞・アウオ段,ガル接続,無い
15
+ 14 形容詞,自立,*,*,形容詞・アウオ段,仮定形,*
16
+ 15 形容詞,自立,*,*,形容詞・アウオ段,仮定形,無い
17
+ 16 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約1,*
18
+ 17 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約1,無い
19
+ 18 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約2,*
20
+ 19 形容詞,自立,*,*,形容詞・アウオ段,仮定縮約2,無い
21
+ 20 形容詞,自立,*,*,形容詞・アウオ段,基本形,*
22
+ 21 形容詞,自立,*,*,形容詞・アウオ段,基本形,無い
23
+ 22 形容詞,自立,*,*,形容詞・アウオ段,体言接続,*
24
+ 23 形容詞,自立,*,*,形容詞・アウオ段,体言接続,無い
25
+ 24 形容詞,自立,*,*,形容詞・アウオ段,文語基本形,*
26
+ 25 形容詞,自立,*,*,形容詞・アウオ段,文語基本形,無い
27
+ 26 形容詞,自立,*,*,形容詞・アウオ段,未然ウ接続,*
28
+ 27 形容詞,自立,*,*,形容詞・アウオ段,未然ウ接続,無い
29
+ 28 形容詞,自立,*,*,形容詞・アウオ段,未然ヌ接続,*
30
+ 29 形容詞,自立,*,*,形容詞・アウオ段,未然ヌ接続,無い
31
+ 30 形容詞,自立,*,*,形容詞・アウオ段,命令e,*
32
+ 31 形容詞,自立,*,*,形容詞・アウオ段,命令e,無い
33
+ 32 形容詞,自立,*,*,形容詞・アウオ段,連用ゴザイ接続,*
34
+ 33 形容詞,自立,*,*,形容詞・アウオ段,連用ゴザイ接続,無い
35
+ 34 形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,*
36
+ 35 形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,無い
37
+ 36 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,*
38
+ 37 形容詞,自立,*,*,形容詞・アウオ段,連用テ接続,無い
39
+ 38 形容詞,自立,*,*,形容詞・イ段,ガル接続,*
40
+ 39 形容詞,自立,*,*,形容詞・イ段,仮定形,*
41
+ 40 形容詞,自立,*,*,形容詞・イ段,仮定縮約1,*
42
+ 41 形容詞,自立,*,*,形容詞・イ段,仮定縮約2,*
43
+ 42 形容詞,自立,*,*,形容詞・イ段,基本形,*
44
+ 43 形容詞,自立,*,*,形容詞・イ段,体言接続,*
45
+ 44 形容詞,自立,*,*,形容詞・イ段,文語基本形,*
46
+ 45 形容詞,自立,*,*,形容詞・イ段,未然ウ接続,*
47
+ 46 形容詞,自立,*,*,形容詞・イ段,未然ヌ接続,*
48
+ 47 形容詞,自立,*,*,形容詞・イ段,命令e,*
49
+ 48 形容詞,自立,*,*,形容詞・イ段,連用ゴザイ接続,*
50
+ 49 形容詞,自立,*,*,形容詞・イ段,連用タ接続,*
51
+ 50 形容詞,自立,*,*,形容詞・イ段,連用テ接続,*
52
+ 51 形容詞,自立,*,*,不変化型,基本形,*
53
+ 52 形容詞,接尾,*,*,形容詞・アウオ段,ガル接続,*
54
+ 53 形容詞,接尾,*,*,形容詞・アウオ段,ガル接続,たらしい
55
+ 54 形容詞,接尾,*,*,形容詞・アウオ段,ガル接続,臭い
56
+ 55 形容詞,接尾,*,*,形容詞・アウオ段,仮定形,*
57
+ 56 形容詞,接尾,*,*,形容詞・アウオ段,仮定形,たらしい
58
+ 57 形容詞,接尾,*,*,形容詞・アウオ段,仮定形,臭い
59
+ 58 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約1,*
60
+ 59 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約1,たらしい
61
+ 60 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約1,臭い
62
+ 61 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約2,*
63
+ 62 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約2,たらしい
64
+ 63 形容詞,接尾,*,*,形容詞・アウオ段,仮定縮約2,臭い
65
+ 64 形容詞,接尾,*,*,形容詞・アウオ段,基本形,*
66
+ 65 形容詞,接尾,*,*,形容詞・アウオ段,基本形,たらしい
67
+ 66 形容詞,接尾,*,*,形容詞・アウオ段,基本形,臭い
68
+ 67 形容詞,接尾,*,*,形容詞・アウオ段,体言接続,*
69
+ 68 形容詞,接尾,*,*,形容詞・アウオ段,体言接続,たらしい
70
+ 69 形容詞,接尾,*,*,形容詞・アウオ段,体言接続,臭い
71
+ 70 形容詞,接尾,*,*,形容詞・アウオ段,文語基本形,*
72
+ 71 形容詞,接尾,*,*,形容詞・アウオ段,文語基本形,たらしい
73
+ 72 形容詞,接尾,*,*,形容詞・アウオ段,文語基本形,臭い
74
+ 73 形容詞,接尾,*,*,形容詞・アウオ段,未然ウ接続,*
75
+ 74 形容詞,接尾,*,*,形容詞・アウオ段,未然ウ接続,たらしい
76
+ 75 形容詞,接尾,*,*,形容詞・アウオ段,未然ウ接続,臭い
77
+ 76 形容詞,接尾,*,*,形容詞・アウオ段,未然ヌ接続,*
78
+ 77 形容詞,接尾,*,*,形容詞・アウオ段,未然ヌ接続,たらしい
79
+ 78 形容詞,接尾,*,*,形容詞・アウオ段,未然ヌ接続,臭い
80
+ 79 形容詞,接尾,*,*,形容詞・アウオ段,命令e,*
81
+ 80 形容詞,接尾,*,*,形容詞・アウオ段,命令e,たらしい
82
+ 81 形容詞,接尾,*,*,形容詞・アウオ段,命令e,臭い
83
+ 82 形容詞,接尾,*,*,形容詞・アウオ段,連用ゴザイ接続,*
84
+ 83 形容詞,接尾,*,*,形容詞・アウオ段,連用ゴザイ接続,たらしい
85
+ 84 形容詞,接尾,*,*,形容詞・アウオ段,連用ゴザイ接続,臭い
86
+ 85 形容詞,接尾,*,*,形容詞・アウオ段,連用タ接続,*
87
+ 86 形容詞,接尾,*,*,形容詞・アウオ段,連用タ接続,たらしい
88
+ 87 形容詞,接尾,*,*,形容詞・アウオ段,連用タ接続,臭い
89
+ 88 形容詞,接尾,*,*,形容詞・アウオ段,連用テ接続,*
90
+ 89 形容詞,接尾,*,*,形容詞・アウオ段,連用テ接続,たらしい
91
+ 90 形容詞,接尾,*,*,形容詞・アウオ段,連用テ接続,臭い
92
+ 91 形容詞,接尾,*,*,形容詞・イ段,ガル接続,*
93
+ 92 形容詞,接尾,*,*,形容詞・イ段,ガル接続,たらしい
94
+ 93 形容詞,接尾,*,*,形容詞・イ段,仮定形,*
95
+ 94 形容詞,接尾,*,*,形容詞・イ段,仮定形,たらしい
96
+ 95 形容詞,接尾,*,*,形容詞・イ段,仮定縮約1,*
97
+ 96 形容詞,接尾,*,*,形容詞・イ段,仮定縮約1,たらしい
98
+ 97 形容詞,接尾,*,*,形容詞・イ段,仮定縮約2,*
99
+ 98 形容詞,接尾,*,*,形容詞・イ段,仮定縮約2,たらしい
100
+ 99 形容詞,接尾,*,*,形容詞・イ段,基本形,*
101
+ 100 形容詞,接尾,*,*,形容詞・イ段,基本形,たらしい
102
+ 101 形容詞,接尾,*,*,形容詞・イ段,体言接続,*
103
+ 102 形容詞,接尾,*,*,形容詞・イ段,体言接続,たらしい
104
+ 103 形容詞,接尾,*,*,形容詞・イ段,文語基本形,*
105
+ 104 形容詞,接尾,*,*,形容詞・イ段,文語基本形,たらしい
106
+ 105 形容詞,接尾,*,*,形容詞・イ段,未然ウ接続,*
107
+ 106 形容詞,接尾,*,*,形容詞・イ段,未然ウ接続,たらしい
108
+ 107 形容詞,接尾,*,*,形容詞・イ段,未然ヌ接続,*
109
+ 108 形容詞,接尾,*,*,形容詞・イ段,未然ヌ接続,たらしい
110
+ 109 形容詞,接尾,*,*,形容詞・イ段,命令e,*
111
+ 110 形容詞,接尾,*,*,形容詞・イ段,命令e,たらしい
112
+ 111 形容詞,接尾,*,*,形容詞・イ段,連用ゴザイ接続,*
113
+ 112 形容詞,接尾,*,*,形容詞・イ段,連用ゴザイ接続,たらしい
114
+ 113 形容詞,接尾,*,*,形容詞・イ段,連用タ接続,*
115
+ 114 形容詞,接尾,*,*,形容詞・イ段,連用タ接続,たらしい
116
+ 115 形容詞,接尾,*,*,形容詞・イ段,連用テ接続,*
117
+ 116 形容詞,接尾,*,*,形容詞・イ段,連用テ接続,たらしい
118
+ 117 形容詞,非自立,*,*,形容詞・アウオ段,*,*
119
+ 118 形容詞,非自立,*,*,形容詞・アウオ段,ガル接続,*
120
+ 119 形容詞,非自立,*,*,形容詞・アウオ段,ガル接続,難い
121
+ 120 形容詞,非自立,*,*,形容詞・アウオ段,ガル接続,良い
122
+ 121 形容詞,非自立,*,*,形容詞・アウオ段,仮定形,*
123
+ 122 形容詞,非自立,*,*,形容詞・アウオ段,仮定形,難い
124
+ 123 形容詞,非自立,*,*,形容詞・アウオ段,仮定形,良い
125
+ 124 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約1,*
126
+ 125 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約1,難い
127
+ 126 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約1,良い
128
+ 127 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約2,*
129
+ 128 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約2,難い
130
+ 129 形容詞,非自立,*,*,形容詞・アウオ段,仮定縮約2,良い
131
+ 130 形容詞,非自立,*,*,形容詞・アウオ段,基本形,難い
132
+ 131 形容詞,非自立,*,*,形容詞・アウオ段,基本形,良い
133
+ 132 形容詞,非自立,*,*,形容詞・アウオ段,体言接続,*
134
+ 133 形容詞,非自立,*,*,形容詞・アウオ段,体言接続,難い
135
+ 134 形容詞,非自立,*,*,形容詞・アウオ段,体言接続,良い
136
+ 135 形容詞,非自立,*,*,形容詞・アウオ段,文語基本形,*
137
+ 136 形容詞,非自立,*,*,形容詞・アウオ段,文語基本形,難い
138
+ 137 形容詞,非自立,*,*,形容詞・アウオ段,文語基本形,良い
139
+ 138 形容詞,非自立,*,*,形容詞・アウオ段,未然ウ接続,*
140
+ 139 形容詞,非自立,*,*,形容詞・アウオ段,未然ウ接続,難い
141
+ 140 形容詞,非自立,*,*,形容詞・アウオ段,未然ウ接続,良い
142
+ 141 形容詞,非自立,*,*,形容詞・アウオ段,未然ヌ接続,*
143
+ 142 形容詞,非自立,*,*,形容詞・アウオ段,未然ヌ接続,難い
144
+ 143 形容詞,非自立,*,*,形容詞・アウオ段,未然ヌ接続,良い
145
+ 144 形容詞,非自立,*,*,形容詞・アウオ段,命令e,*
146
+ 145 形容詞,非自立,*,*,形容詞・アウオ段,命令e,難い
147
+ 146 形容詞,非自立,*,*,形容詞・アウオ段,命令e,良い
148
+ 147 形容詞,非自立,*,*,形容詞・アウオ段,連用ゴザイ接続,*
149
+ 148 形容詞,非自立,*,*,形容詞・アウオ段,連用ゴザイ接続,難い
150
+ 149 形容詞,非自立,*,*,形容詞・アウオ段,連用ゴザイ接続,良い
151
+ 150 形容詞,非自立,*,*,形容詞・アウオ段,連用タ接続,*
152
+ 151 形容詞,非自立,*,*,形容詞・アウオ段,連用タ接続,難い
153
+ 152 形容詞,非自立,*,*,形容詞・アウオ段,連用タ接続,良い
154
+ 153 形容詞,非自立,*,*,形容詞・アウオ段,連用テ接続,*
155
+ 154 形容詞,非自立,*,*,形容詞・アウオ段,連用テ接続,難い
156
+ 155 形容詞,非自立,*,*,形容詞・アウオ段,連用テ接続,良い
157
+ 156 形容詞,非自立,*,*,形容詞・イ段,ガル接続,欲しい
158
+ 157 形容詞,非自立,*,*,形容詞・イ段,仮定形,欲しい
159
+ 158 形容詞,非自立,*,*,形容詞・イ段,仮定縮約1,欲しい
160
+ 159 形容詞,非自立,*,*,形容詞・イ段,仮定縮約2,欲しい
161
+ 160 形容詞,非自立,*,*,形容詞・イ段,基本形,欲しい
162
+ 161 形容詞,非自立,*,*,形容詞・イ段,体言接続,欲しい
163
+ 162 形容詞,非自立,*,*,形容詞・イ段,文語基本形,欲しい
164
+ 163 形容詞,非自立,*,*,形容詞・イ段,未然ウ接続,欲しい
165
+ 164 形容詞,非自立,*,*,形容詞・イ段,未然ヌ接続,欲しい
166
+ 165 形容詞,非自立,*,*,形容詞・イ段,命令e,欲しい
167
+ 166 形容詞,非自立,*,*,形容詞・イ段,連用ゴザイ接続,欲しい
168
+ 167 形容詞,非自立,*,*,形容詞・イ段,連用タ接続,欲しい
169
+ 168 形容詞,非自立,*,*,形容詞・イ段,連用テ接続,欲しい
170
+ 169 助詞,格助詞,一般,*,*,*,から
171
+ 170 助詞,格助詞,一般,*,*,*,が
172
+ 171 助詞,格助詞,一般,*,*,*,つ
173
+ 172 助詞,格助詞,一般,*,*,*,で
174
+ 173 助詞,格助詞,一般,*,*,*,と
175
+ 174 助詞,格助詞,一般,*,*,*,に
176
+ 175 助詞,格助詞,一般,*,*,*,にて
177
+ 176 助詞,格助詞,一般,*,*,*,の
178
+ 177 助詞,格助詞,一般,*,*,*,へ
179
+ 178 助詞,格助詞,一般,*,*,*,より
180
+ 179 助詞,格助詞,一般,*,*,*,を
181
+ 180 助詞,格助詞,一般,*,*,*,ん
182
+ 181 助詞,格助詞,一般,*,*,*,デ
183
+ 182 助詞,格助詞,一般,*,*,*,ノ
184
+ 183 助詞,格助詞,一般,*,*,*,ヘ
185
+ 184 助詞,格助詞,一般,*,*,*,ヲ
186
+ 185 助詞,格助詞,一般,*,*,*,之
187
+ 186 助詞,格助詞,引用,*,*,*,っと
188
+ 187 助詞,格助詞,引用,*,*,*,と
189
+ 188 助詞,格助詞,連語,*,*,*,じゃ
190
+ 189 助詞,格助詞,連語,*,*,*,っちゅう
191
+ 190 助詞,格助詞,連語,*,*,*,って
192
+ 191 助詞,格助詞,連語,*,*,*,っていう
193
+ 192 助詞,格助詞,連語,*,*,*,ってな
194
+ 193 助詞,格助詞,連語,*,*,*,て
195
+ 194 助詞,格助詞,連語,*,*,*,ていう
196
+ 195 助詞,格助詞,連語,*,*,*,といいます
197
+ 196 助詞,格助詞,連語,*,*,*,という
198
+ 197 助詞,格助詞,連語,*,*,*,といった
199
+ 198 助詞,格助詞,連語,*,*,*,といふ
200
+ 199 助詞,格助詞,連語,*,*,*,とかいいます
201
+ 200 助詞,格助詞,連語,*,*,*,とかいう
202
+ 201 助詞,格助詞,連語,*,*,*,とかいふ
203
+ 202 助詞,格助詞,連語,*,*,*,として
204
+ 203 助詞,格助詞,連語,*,*,*,としましたら
205
+ 204 助詞,格助詞,連語,*,*,*,としまして
206
+ 205 助詞,格助詞,連語,*,*,*,とともに
207
+ 206 助詞,格助詞,連語,*,*,*,と共に
208
+ 207 助詞,格助詞,連語,*,*,*,にあたって
209
+ 208 助詞,格助詞,連語,*,*,*,にあたり
210
+ 209 助詞,格助詞,連語,*,*,*,にあたりまして
211
+ 210 助詞,格助詞,連語,*,*,*,にあたります
212
+ 211 助詞,格助詞,連語,*,*,*,にあたる
213
+ 212 助詞,格助詞,連語,*,*,*,において
214
+ 213 助詞,格助詞,連語,*,*,*,におきまして
215
+ 214 助詞,格助詞,連語,*,*,*,における
216
+ 215 助詞,格助詞,連語,*,*,*,にかけ
217
+ 216 助詞,格助詞,連語,*,*,*,にかけて
218
+ 217 助詞,格助詞,連語,*,*,*,にかけまして
219
+ 218 助詞,格助詞,連語,*,*,*,にたいして
220
+ 219 助詞,格助詞,連語,*,*,*,にたいしまして
221
+ 220 助詞,格助詞,連語,*,*,*,にたいします
222
+ 221 助詞,格助詞,連語,*,*,*,にたいする
223
+ 222 助詞,格助詞,連語,*,*,*,について
224
+ 223 助詞,格助詞,連語,*,*,*,につき
225
+ 224 助詞,格助詞,連語,*,*,*,につきまして
226
+ 225 助詞,格助詞,連語,*,*,*,につけ
227
+ 226 助詞,格助詞,連語,*,*,*,につれ
228
+ 227 助詞,格助詞,連語,*,*,*,につれて
229
+ 228 助詞,格助詞,連語,*,*,*,にとって
230
+ 229 助詞,格助詞,連語,*,*,*,にとり
231
+ 230 助詞,格助詞,連語,*,*,*,にとりまして
232
+ 231 助詞,格助詞,連語,*,*,*,にまつわります
233
+ 232 助詞,格助詞,連語,*,*,*,にまつわる
234
+ 233 助詞,格助詞,連語,*,*,*,によって
235
+ 234 助詞,格助詞,連語,*,*,*,により
236
+ 235 助詞,格助詞,連語,*,*,*,によりまして
237
+ 236 助詞,格助詞,連語,*,*,*,によります
238
+ 237 助詞,格助詞,連語,*,*,*,による
239
+ 238 助詞,格助詞,連語,*,*,*,にわたって
240
+ 239 助詞,格助詞,連語,*,*,*,にわたり
241
+ 240 助詞,格助詞,連語,*,*,*,にわたりまして
242
+ 241 助詞,格助詞,連語,*,*,*,にわたります
243
+ 242 助詞,格助詞,連語,*,*,*,にわたる
244
+ 243 助詞,格助詞,連語,*,*,*,に関し
245
+ 244 助詞,格助詞,連語,*,*,*,に関して
246
+ 245 助詞,格助詞,連語,*,*,*,に関しまして
247
+ 246 助詞,格助詞,連語,*,*,*,に関します
248
+ 247 助詞,格助詞,連語,*,*,*,に関する
249
+ 248 助詞,格助詞,連語,*,*,*,に際し
250
+ 249 助詞,格助詞,連語,*,*,*,に際して
251
+ 250 助詞,格助詞,連語,*,*,*,に際しまして
252
+ 251 助詞,格助詞,連語,*,*,*,に従い
253
+ 252 助詞,格助詞,連語,*,*,*,に従いまして
254
+ 253 助詞,格助詞,連語,*,*,*,に従います
255
+ 254 助詞,格助詞,連語,*,*,*,に従う
256
+ 255 助詞,格助詞,連語,*,*,*,に従って
257
+ 256 助詞,格助詞,連語,*,*,*,に対し
258
+ 257 助詞,格助詞,連語,*,*,*,に対して
259
+ 258 助詞,格助詞,連語,*,*,*,に対しまして
260
+ 259 助詞,格助詞,連語,*,*,*,に対します
261
+ 260 助詞,格助詞,連語,*,*,*,に対する
262
+ 261 助詞,格助詞,連語,*,*,*,に当たって
263
+ 262 助詞,格助詞,連語,*,*,*,に当たり
264
+ 263 助詞,格助詞,連語,*,*,*,に当たりまして
265
+ 264 助詞,格助詞,連語,*,*,*,に当たります
266
+ 265 助詞,格助詞,連語,*,*,*,に当たる
267
+ 266 助詞,格助詞,連語,*,*,*,をめぐって
268
+ 267 助詞,格助詞,連語,*,*,*,をめぐりまして
269
+ 268 助詞,格助詞,連語,*,*,*,をめぐります
270
+ 269 助詞,格助詞,連語,*,*,*,をめぐる
271
+ 270 助詞,格助詞,連語,*,*,*,をもちまして
272
+ 271 助詞,格助詞,連語,*,*,*,をもって
273
+ 272 助詞,格助詞,連語,*,*,*,を以て
274
+ 273 助詞,格助詞,連語,*,*,*,を通して
275
+ 274 助詞,格助詞,連語,*,*,*,を通しまして
276
+ 275 助詞,格助詞,連語,*,*,*,を通じ
277
+ 276 助詞,格助詞,連語,*,*,*,を通じて
278
+ 277 助詞,格助詞,連語,*,*,*,を通じまして
279
+ 278 助詞,係助詞,*,*,*,*,こそ
280
+ 279 助詞,係助詞,*,*,*,*,さえ
281
+ 280 助詞,係助詞,*,*,*,*,しか
282
+ 281 助詞,係助詞,*,*,*,*,すら
283
+ 282 助詞,係助詞,*,*,*,*,ぞ
284
+ 283 助詞,係助詞,*,*,*,*,っきゃ
285
+ 284 助詞,係助詞,*,*,*,*,は
286
+ 285 助詞,係助詞,*,*,*,*,も
287
+ 286 助詞,係助詞,*,*,*,*,や
288
+ 287 助詞,終助詞,*,*,*,*,かぁ
289
+ 288 助詞,終助詞,*,*,*,*,かい
290
+ 289 助詞,終助詞,*,*,*,*,かしら
291
+ 290 助詞,終助詞,*,*,*,*,け
292
+ 291 助詞,終助詞,*,*,*,*,さ
293
+ 292 助詞,終助詞,*,*,*,*,ぜ
294
+ 293 助詞,終助詞,*,*,*,*,ぞ
295
+ 294 助詞,終助詞,*,*,*,*,だって
296
+ 295 助詞,終助詞,*,*,*,*,っけ
297
+ 296 助詞,終助詞,*,*,*,*,てん
298
+ 297 助詞,終助詞,*,*,*,*,で
299
+ 298 助詞,終助詞,*,*,*,*,な
300
+ 299 助詞,終助詞,*,*,*,*,なー
301
+ 300 助詞,終助詞,*,*,*,*,なぁー
302
+ 301 助詞,終助詞,*,*,*,*,なァ
303
+ 302 助詞,終助詞,*,*,*,*,ね
304
+ 303 助詞,終助詞,*,*,*,*,ねー
305
+ 304 助詞,終助詞,*,*,*,*,ねん
306
+ 305 助詞,終助詞,*,*,*,*,の
307
+ 306 助詞,終助詞,*,*,*,*,のう
308
+ 307 助詞,終助詞,*,*,*,*,べ
309
+ 308 助詞,終助詞,*,*,*,*,もん
310
+ 309 助詞,終助詞,*,*,*,*,や
311
+ 310 助詞,終助詞,*,*,*,*,やら
312
+ 311 助詞,終助詞,*,*,*,*,よ
313
+ 312 助詞,終助詞,*,*,*,*,よー
314
+ 313 助詞,終助詞,*,*,*,*,よう
315
+ 314 助詞,終助詞,*,*,*,*,わ
316
+ 315 助詞,終助詞,*,*,*,*,わい
317
+ 316 助詞,終助詞,*,*,*,*,ん
318
+ 317 助詞,終助詞,*,*,*,*,ヨー
319
+ 318 助詞,終助詞,*,*,*,*,ワ
320
+ 319 助詞,接続助詞,*,*,*,*,および
321
+ 320 助詞,接続助詞,*,*,*,*,から
322
+ 321 助詞,接続助詞,*,*,*,*,からには
323
+ 322 助詞,接続助詞,*,*,*,*,が
324
+ 323 助詞,接続助詞,*,*,*,*,けども
325
+ 324 助詞,接続助詞,*,*,*,*,けれど
326
+ 325 助詞,接続助詞,*,*,*,*,けれども
327
+ 326 助詞,接続助詞,*,*,*,*,さかい
328
+ 327 助詞,接続助詞,*,*,*,*,し
329
+ 328 助詞,接続助詞,*,*,*,*,たって
330
+ 329 助詞,接続助詞,*,*,*,*,つつ
331
+ 330 助詞,接続助詞,*,*,*,*,て
332
+ 331 助詞,接続助詞,*,*,*,*,で
333
+ 332 助詞,接続助詞,*,*,*,*,と
334
+ 333 助詞,接続助詞,*,*,*,*,とも
335
+ 334 助詞,接続助詞,*,*,*,*,ど
336
+ 335 助詞,接続助詞,*,*,*,*,どころか
337
+ 336 助詞,接続助詞,*,*,*,*,ども
338
+ 337 助詞,接続助詞,*,*,*,*,ながら
339
+ 338 助詞,接続助詞,*,*,*,*,なり
340
+ 339 助詞,接続助詞,*,*,*,*,ので
341
+ 340 助詞,接続助詞,*,*,*,*,のに
342
+ 341 助詞,接続助詞,*,*,*,*,ば
343
+ 342 助詞,接続助詞,*,*,*,*,ものの
344
+ 343 助詞,接続助詞,*,*,*,*,や
345
+ 344 助詞,接続助詞,*,*,*,*,やいなや
346
+ 345 助詞,接続助詞,*,*,*,*,や否や
347
+ 346 助詞,接続助詞,*,*,*,*,んで
348
+ 347 助詞,特殊,*,*,*,*,かな
349
+ 348 助詞,特殊,*,*,*,*,けむ
350
+ 349 助詞,特殊,*,*,*,*,に
351
+ 350 助詞,特殊,*,*,*,*,にゃ
352
+ 351 助詞,特殊,*,*,*,*,ん
353
+ 352 助詞,副詞化,*,*,*,*,と
354
+ 353 助詞,副詞化,*,*,*,*,に
355
+ 354 助詞,副助詞,*,*,*,*,かも
356
+ 355 助詞,副助詞,*,*,*,*,くらい
357
+ 356 助詞,副助詞,*,*,*,*,ぐらい
358
+ 357 助詞,副助詞,*,*,*,*,しも
359
+ 358 助詞,副助詞,*,*,*,*,じゃ
360
+ 359 助詞,副助詞,*,*,*,*,じゃあ
361
+ 360 助詞,副助詞,*,*,*,*,じゃァ
362
+ 361 助詞,副助詞,*,*,*,*,ずつ
363
+ 362 助詞,副助詞,*,*,*,*,だけ
364
+ 363 助詞,副助詞,*,*,*,*,だって
365
+ 364 助詞,副助詞,*,*,*,*,だに
366
+ 365 助詞,副助詞,*,*,*,*,でも
367
+ 366 助詞,副助詞,*,*,*,*,とも
368
+ 367 助詞,副助詞,*,*,*,*,なぞ
369
+ 368 助詞,副助詞,*,*,*,*,など
370
+ 369 助詞,副助詞,*,*,*,*,なり
371
+ 370 助詞,副助詞,*,*,*,*,なんか
372
+ 371 助詞,副助詞,*,*,*,*,なんぞ
373
+ 372 助詞,副助詞,*,*,*,*,なんて
374
+ 373 助詞,副助詞,*,*,*,*,のみ
375
+ 374 助詞,副助詞,*,*,*,*,ばかし
376
+ 375 助詞,副助詞,*,*,*,*,ばかり
377
+ 376 助詞,副助詞,*,*,*,*,ばっか
378
+ 377 助詞,副助詞,*,*,*,*,ばっかり
379
+ 378 助詞,副助詞,*,*,*,*,ほど
380
+ 379 助詞,副助詞,*,*,*,*,まで
381
+ 380 助詞,副助詞,*,*,*,*,やら
382
+ 381 助詞,副助詞,*,*,*,*,程
383
+ 382 助詞,副助詞,*,*,*,*,迄
384
+ 383 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か
385
+ 384 助詞,並立助詞,*,*,*,*,たり
386
+ 385 助詞,並立助詞,*,*,*,*,だの
387
+ 386 助詞,並立助詞,*,*,*,*,だり
388
+ 387 助詞,並立助詞,*,*,*,*,と
389
+ 388 助詞,並立助詞,*,*,*,*,とか
390
+ 389 助詞,並立助詞,*,*,*,*,なり
391
+ 390 助詞,並立助詞,*,*,*,*,や
392
+ 391 助詞,並立助詞,*,*,*,*,やら
393
+ 392 助詞,連体化,*,*,*,*,の
394
+ 393 助詞,連体化,*,*,*,*,ノ
395
+ 394 助動詞,*,*,*,下二・タ行,仮定形,つ
396
+ 395 助動詞,*,*,*,下二・タ行,基本形,つ
397
+ 396 助動詞,*,*,*,下二・タ行,体言接続,つ
398
+ 397 助動詞,*,*,*,下二・タ行,未然形,つ
399
+ 398 助動詞,*,*,*,下二・タ行,命令yo,つ
400
+ 399 助動詞,*,*,*,下二・タ行,連用形,つ
401
+ 400 助動詞,*,*,*,形容詞・イ段,ガル接続,らしい
402
+ 401 助動詞,*,*,*,形容詞・イ段,ガル接続,無い
403
+ 402 助動詞,*,*,*,形容詞・イ段,仮定形,らしい
404
+ 403 助動詞,*,*,*,形容詞・イ段,仮定形,無い
405
+ 404 助動詞,*,*,*,形容詞・イ段,仮定縮約1,らしい
406
+ 405 助動詞,*,*,*,形容詞・イ段,仮定縮約1,無い
407
+ 406 助動詞,*,*,*,形容詞・イ段,仮定縮約2,らしい
408
+ 407 助動詞,*,*,*,形容詞・イ段,仮定縮約2,無い
409
+ 408 助動詞,*,*,*,形容詞・イ段,基本形,らしい
410
+ 409 助動詞,*,*,*,形容詞・イ段,基本形,無い
411
+ 410 助動詞,*,*,*,形容詞・イ段,体言接続,らしい
412
+ 411 助動詞,*,*,*,形容詞・イ段,体言接続,無い
413
+ 412 助動詞,*,*,*,形容詞・イ段,文語基本形,らしい
414
+ 413 助動詞,*,*,*,形容詞・イ段,文語基本形,無い
415
+ 414 助動詞,*,*,*,形容詞・イ段,未然ウ接続,らしい
416
+ 415 助動詞,*,*,*,形容詞・イ段,未然ウ接続,無い
417
+ 416 助動詞,*,*,*,形容詞・イ段,未然ヌ接続,らしい
418
+ 417 助動詞,*,*,*,形容詞・イ段,未然ヌ接続,無い
419
+ 418 助動詞,*,*,*,形容詞・イ段,命令e,らしい
420
+ 419 助動詞,*,*,*,形容詞・イ段,命令e,無い
421
+ 420 助動詞,*,*,*,形容詞・イ段,連用ゴザイ接続,らしい
422
+ 421 助動詞,*,*,*,形容詞・イ段,連用ゴザイ接続,無い
423
+ 422 助動詞,*,*,*,形容詞・イ段,連用タ接続,らしい
424
+ 423 助動詞,*,*,*,形容詞・イ段,連用タ接続,無い
425
+ 424 助動詞,*,*,*,形容詞・イ段,連用テ接続,らしい
426
+ 425 助動詞,*,*,*,形容詞・イ段,連用テ接続,無い
427
+ 426 助動詞,*,*,*,五段・ラ行アル,仮定形,ある
428
+ 427 助動詞,*,*,*,五段・ラ行アル,仮定縮約1,ある
429
+ 428 助動詞,*,*,*,五段・ラ行アル,基本形,ある
430
+ 429 助動詞,*,*,*,五段・ラ行アル,体言接続特殊,ある
431
+ 430 助動詞,*,*,*,五段・ラ行アル,未然ウ接続,ある
432
+ 431 助動詞,*,*,*,五段・ラ行アル,未然形,ある
433
+ 432 助動詞,*,*,*,五段・ラ行アル,命令e,ある
434
+ 433 助動詞,*,*,*,五段・ラ行アル,連用タ接続,ある
435
+ 434 助動詞,*,*,*,五段・ラ行アル,連用形,ある
436
+ 435 助動詞,*,*,*,五段・ラ行特殊,仮定形,ござる
437
+ 436 助動詞,*,*,*,五段・ラ行特殊,仮定形,御座る
438
+ 437 助動詞,*,*,*,五段・ラ行特殊,仮定縮約1,ござる
439
+ 438 助動詞,*,*,*,五段・ラ行特殊,仮定縮約1,御座る
440
+ 439 助動詞,*,*,*,五段・ラ行特殊,基本形,ござる
441
+ 440 助動詞,*,*,*,五段・ラ行特殊,基本形,御座る
442
+ 441 助動詞,*,*,*,五段・ラ行特殊,未然ウ接続,ござる
443
+ 442 助動詞,*,*,*,五段・ラ行特殊,未然ウ接続,御座る
444
+ 443 助動詞,*,*,*,五段・ラ行特殊,未然形,ござる
445
+ 444 助動詞,*,*,*,五段・ラ行特殊,未然形,御座る
446
+ 445 助動詞,*,*,*,五段・ラ行特殊,未然特殊,ござる
447
+ 446 助動詞,*,*,*,五段・ラ行特殊,未然特殊,御座る
448
+ 447 助動詞,*,*,*,五段・ラ行特殊,命令e,ござる
449
+ 448 助動詞,*,*,*,五段・ラ行特殊,命令e,御座る
450
+ 449 助動詞,*,*,*,五段・ラ行特殊,命令i,ござる
451
+ 450 助動詞,*,*,*,五段・ラ行特殊,命令i,御座る
452
+ 451 助動詞,*,*,*,五段・ラ行特殊,連用タ接続,ござる
453
+ 452 助動詞,*,*,*,五段・ラ行特殊,連用タ接続,御座る
454
+ 453 助動詞,*,*,*,五段・ラ行特殊,連用形,ござる
455
+ 454 助動詞,*,*,*,五段・ラ行特殊,連用形,御座る
456
+ 455 助動詞,*,*,*,特殊・ジャ,基本形,じゃ
457
+ 456 助動詞,*,*,*,特殊・ジャ,未然形,じゃ
458
+ 457 助動詞,*,*,*,特殊・ジャ,連用形,じゃ
459
+ 458 助動詞,*,*,*,特殊・タ,仮定形,た
460
+ 459 助動詞,*,*,*,特殊・タ,仮定形,だ
461
+ 460 助動詞,*,*,*,特殊・タ,基本形,た
462
+ 461 助動詞,*,*,*,特殊・タ,基本形,だ
463
+ 462 助動詞,*,*,*,特殊・タ,未然形,た
464
+ 463 助動詞,*,*,*,特殊・タ,未然形,だ
465
+ 464 助動詞,*,*,*,特殊・タイ,ガル接続,たい
466
+ 465 助動詞,*,*,*,特殊・タイ,音便基本形,たい
467
+ 466 助動詞,*,*,*,特殊・タイ,仮定形,たい
468
+ 467 助動詞,*,*,*,特殊・タイ,仮定縮約1,たい
469
+ 468 助動詞,*,*,*,特殊・タイ,仮定縮約2,たい
470
+ 469 助動詞,*,*,*,特殊・タイ,基本形,たい
471
+ 470 助動詞,*,*,*,特殊・タイ,体言接続,たい
472
+ 471 助動詞,*,*,*,特殊・タイ,文語基本形,たい
473
+ 472 助動詞,*,*,*,特殊・タイ,未然ウ接続,たい
474
+ 473 助動詞,*,*,*,特殊・タイ,未然ヌ接続,たい
475
+ 474 助動詞,*,*,*,特殊・タイ,連用ゴザイ接続,たい
476
+ 475 助動詞,*,*,*,特殊・タイ,連用タ接続,たい
477
+ 476 助動詞,*,*,*,特殊・タイ,連用テ接続,たい
478
+ 477 助動詞,*,*,*,特殊・ダ,仮定形,だ
479
+ 478 助動詞,*,*,*,特殊・ダ,基本形,だ
480
+ 479 助動詞,*,*,*,特殊・ダ,体言接続,だ
481
+ 480 助動詞,*,*,*,特殊・ダ,未然形,だ
482
+ 481 助動詞,*,*,*,特殊・ダ,命令e,だ
483
+ 482 助動詞,*,*,*,特殊・ダ,連用タ接続,だ
484
+ 483 助動詞,*,*,*,特殊・ダ,連用形,だ
485
+ 484 助動詞,*,*,*,特殊・デス,基本形,っす
486
+ 485 助動詞,*,*,*,特殊・デス,基本形,です
487
+ 486 助動詞,*,*,*,特殊・デス,基本形,どす
488
+ 487 助動詞,*,*,*,特殊・デス,未然形,っす
489
+ 488 助動詞,*,*,*,特殊・デス,未然形,です
490
+ 489 助動詞,*,*,*,特殊・デス,未然形,どす
491
+ 490 助動詞,*,*,*,特殊・デス,連用形,っす
492
+ 491 助動詞,*,*,*,特殊・デス,連用形,です
493
+ 492 助動詞,*,*,*,特殊・デス,連用形,どす
494
+ 493 助動詞,*,*,*,特殊・ナイ,ガル接続,無い
495
+ 494 助動詞,*,*,*,特殊・ナイ,音便基本形,無い
496
+ 495 助動詞,*,*,*,特殊・ナイ,仮定形,無い
497
+ 496 助動詞,*,*,*,特殊・ナイ,仮定縮約1,無い
498
+ 497 助動詞,*,*,*,特殊・ナイ,仮定縮約2,無い
499
+ 498 助動詞,*,*,*,特殊・ナイ,基本形,無い
500
+ 499 助動詞,*,*,*,特殊・ナイ,体言接続,無い
501
+ 500 助動詞,*,*,*,特殊・ナイ,文語基本形,無い
502
+ 501 助動詞,*,*,*,特殊・ナイ,未然ウ接続,無い
503
+ 502 助動詞,*,*,*,特殊・ナイ,未然ヌ接続,無い
504
+ 503 助動詞,*,*,*,特殊・ナイ,命令e,無い
505
+ 504 助動詞,*,*,*,特殊・ナイ,連用ゴザイ接続,無い
506
+ 505 助動詞,*,*,*,特殊・ナイ,連用タ接続,無い
507
+ 506 助動詞,*,*,*,特殊・ナイ,連用テ接続,無い
508
+ 507 助動詞,*,*,*,特殊・ナイ,連用デ接続,無い
509
+ 508 助動詞,*,*,*,特殊・ヌ,仮定形,ぬ
510
+ 509 助動詞,*,*,*,特殊・ヌ,基本形,ぬ
511
+ 510 助動詞,*,*,*,特殊・ヌ,体言接続,ぬ
512
+ 511 助動詞,*,*,*,特殊・ヌ,文語基本形,ぬ
513
+ 512 助動詞,*,*,*,特殊・ヌ,連用ニ接続,ぬ
514
+ 513 助動詞,*,*,*,特殊・ヌ,連用形,ぬ
515
+ 514 助動詞,*,*,*,特殊・マス,仮定形,ます
516
+ 515 助動詞,*,*,*,特殊・マス,仮定形,やす
517
+ 516 助動詞,*,*,*,特殊・マス,基本形,ます
518
+ 517 助動詞,*,*,*,特殊・マス,基本形,やす
519
+ 518 助動詞,*,*,*,特殊・マス,未然ウ接続,ます
520
+ 519 助動詞,*,*,*,特殊・マス,未然ウ接続,やす
521
+ 520 助動詞,*,*,*,特殊・マス,未然形,ます
522
+ 521 助動詞,*,*,*,特殊・マス,未然形,やす
523
+ 522 助動詞,*,*,*,特殊・マス,命令e,ます
524
+ 523 助動詞,*,*,*,特殊・マス,命令e,やす
525
+ 524 助動詞,*,*,*,特殊・マス,命令i,ます
526
+ 525 助動詞,*,*,*,特殊・マス,命令i,やす
527
+ 526 助動詞,*,*,*,特殊・マス,連用形,ます
528
+ 527 助動詞,*,*,*,特殊・マス,連用形,やす
529
+ 528 助動詞,*,*,*,特殊・ヤ,基本形,や
530
+ 529 助動詞,*,*,*,特殊・ヤ,未然形,や
531
+ 530 助動詞,*,*,*,特殊・ヤ,連用形,や
532
+ 531 助動詞,*,*,*,不変化型,基本形,う
533
+ 532 助動詞,*,*,*,不変化型,基本形,じ
534
+ 533 助動詞,*,*,*,不変化型,基本形,じゃん
535
+ 534 助動詞,*,*,*,不変化型,基本形,じゃン
536
+ 535 助動詞,*,*,*,不変化型,基本形,ぬ
537
+ 536 助動詞,*,*,*,不変化型,基本形,ひん
538
+ 537 助動詞,*,*,*,不変化型,基本形,へん
539
+ 538 助動詞,*,*,*,不変化型,基本形,まい
540
+ 539 助動詞,*,*,*,不変化型,基本形,やん
541
+ 540 助動詞,*,*,*,不変化型,基本形,ん
542
+ 541 助動詞,*,*,*,文語・キ,基本形,き
543
+ 542 助動詞,*,*,*,文語・キ,体言接続,き
544
+ 543 助動詞,*,*,*,文語・キ,命令e,き
545
+ 544 助動詞,*,*,*,文語・ケリ,基本形,けり
546
+ 545 助動詞,*,*,*,文語・ケリ,体言接続,けり
547
+ 546 助動詞,*,*,*,文語・ゴトシ,基本形,ごとし
548
+ 547 助動詞,*,*,*,文語・ゴトシ,基本形,如し
549
+ 548 助動詞,*,*,*,文語・ゴトシ,体言接続,ごとし
550
+ 549 助動詞,*,*,*,文語・ゴトシ,体言接続,如し
551
+ 550 助動詞,*,*,*,文語・ゴトシ,連用形,ごとし
552
+ 551 助動詞,*,*,*,文語・ゴトシ,連用形,如し
553
+ 552 助動詞,*,*,*,文語・ナリ,仮定形,たり
554
+ 553 助動詞,*,*,*,文語・ナリ,仮定形,なり
555
+ 554 助動詞,*,*,*,文語・ナリ,基本形,たり
556
+ 555 助動詞,*,*,*,文語・ナリ,基本形,なり
557
+ 556 助動詞,*,*,*,文語・ナリ,体言接続,たり
558
+ 557 助動詞,*,*,*,文語・ナリ,体言接続,なり
559
+ 558 助動詞,*,*,*,文語・ナリ,未然形,たり
560
+ 559 助動詞,*,*,*,文語・ナリ,未然形,なり
561
+ 560 助動詞,*,*,*,文語・ナリ,命令e,たり
562
+ 561 助動詞,*,*,*,文語・ナリ,命令e,なり
563
+ 562 助動詞,*,*,*,文語・ベシ,仮定形,べし
564
+ 563 助動詞,*,*,*,��語・ベシ,基本形,べし
565
+ 564 助動詞,*,*,*,文語・ベシ,体言接続,べし
566
+ 565 助動詞,*,*,*,文語・ベシ,未然形,べし
567
+ 566 助動詞,*,*,*,文語・ベシ,連用形,べし
568
+ 567 助動詞,*,*,*,文語・マジ,仮定形,まじ
569
+ 568 助動詞,*,*,*,文語・マジ,基本形,まじ
570
+ 569 助動詞,*,*,*,文語・マジ,体言接続,まじ
571
+ 570 助動詞,*,*,*,文語・マジ,連用形,まじ
572
+ 571 助動詞,*,*,*,文語・リ,基本形,り
573
+ 572 助動詞,*,*,*,文語・リ,体言接続,り
574
+ 573 助動詞,*,*,*,文語・ル,仮定形,る
575
+ 574 助動詞,*,*,*,文語・ル,基本形,る
576
+ 575 助動詞,*,*,*,文語・ル,体言接続,る
577
+ 576 助動詞,*,*,*,文語・ル,未然形,る
578
+ 577 助動詞,*,*,*,文語・ル,命令e,る
579
+ 578 助動詞,*,*,*,文語・ル,命令yo,る
580
+ 579 助動詞,*,*,*,文語・ル,連用形,る
581
+ 580 接続詞,*,*,*,*,*,*
582
+ 581 接続詞,*,*,*,*,*,および
583
+ 582 接頭詞,形容詞接続,*,*,*,*,*
584
+ 583 接頭詞,数接続,*,*,*,*,*
585
+ 584 接頭詞,動詞接続,*,*,*,*,*
586
+ 585 接頭詞,名詞接続,*,*,*,*,*
587
+ 586 動詞,自立,*,*,カ変・クル,仮定形,*
588
+ 587 動詞,自立,*,*,カ変・クル,仮定縮約1,*
589
+ 588 動詞,自立,*,*,カ変・クル,基本形,*
590
+ 589 動詞,自立,*,*,カ変・クル,体言接続特殊,*
591
+ 590 動詞,自立,*,*,カ変・クル,体言接続特殊2,*
592
+ 591 動詞,自立,*,*,カ変・クル,未然ウ接続,*
593
+ 592 動詞,自立,*,*,カ変・クル,未然形,*
594
+ 593 動詞,自立,*,*,カ変・クル,命令i,*
595
+ 594 動詞,自立,*,*,カ変・クル,命令yo,*
596
+ 595 動詞,自立,*,*,カ変・クル,連用形,*
597
+ 596 動詞,自立,*,*,カ変・来ル,仮定形,*
598
+ 597 動詞,自立,*,*,カ変・来ル,仮定縮約1,*
599
+ 598 動詞,自立,*,*,カ変・来ル,基本形,*
600
+ 599 動詞,自立,*,*,カ変・来ル,体言接続特殊,*
601
+ 600 動詞,自立,*,*,カ変・来ル,体言接続特殊2,*
602
+ 601 動詞,自立,*,*,カ変・来ル,未然ウ接続,*
603
+ 602 動詞,自立,*,*,カ変・来ル,未然形,*
604
+ 603 動詞,自立,*,*,カ変・来ル,命令i,*
605
+ 604 動詞,自立,*,*,カ変・来ル,命令yo,*
606
+ 605 動詞,自立,*,*,カ変・来ル,連用形,*
607
+ 606 動詞,自立,*,*,サ変・−スル,仮定形,*
608
+ 607 動詞,自立,*,*,サ変・−スル,仮定縮約1,*
609
+ 608 動詞,自立,*,*,サ変・−スル,基本形,*
610
+ 609 動詞,自立,*,*,サ変・−スル,文語基本形,*
611
+ 610 動詞,自立,*,*,サ変・−スル,未然ウ接続,*
612
+ 611 動詞,自立,*,*,サ変・−スル,未然レル接続,*
613
+ 612 動詞,自立,*,*,サ変・−スル,未然形,*
614
+ 613 動詞,自立,*,*,サ変・−スル,命令ro,*
615
+ 614 動詞,自立,*,*,サ変・−スル,命令yo,*
616
+ 615 動詞,自立,*,*,サ変・−ズル,仮定形,*
617
+ 616 動詞,自立,*,*,サ変・−ズル,仮定縮約1,*
618
+ 617 動詞,自立,*,*,サ変・−ズル,基本形,*
619
+ 618 動詞,自立,*,*,サ変・−ズル,文語基本形,*
620
+ 619 動詞,自立,*,*,サ変・−ズル,未然ウ接続,*
621
+ 620 動詞,自立,*,*,サ変・−ズル,未然形,*
622
+ 621 動詞,自立,*,*,サ変・−ズル,命令yo,*
623
+ 622 動詞,自立,*,*,サ変・スル,仮定形,する
624
+ 623 動詞,自立,*,*,サ変・スル,仮定縮約1,する
625
+ 624 動詞,自立,*,*,サ変・スル,基本形,する
626
+ 625 動詞,自立,*,*,サ変・スル,体言接続特殊,する
627
+ 626 動詞,自立,*,*,サ変・スル,体言接続特殊2,する
628
+ 627 動詞,自立,*,*,サ変・スル,文語基本形,する
629
+ 628 動詞,自立,*,*,サ変・スル,未然ウ接続,する
630
+ 629 動詞,自立,*,*,サ変・スル,未然ヌ接続,する
631
+ 630 動詞,自立,*,*,サ変・スル,未然レル接続,する
632
+ 631 動詞,自立,*,*,サ変・スル,未然形,する
633
+ 632 動詞,自立,*,*,サ変・スル,命令i,する
634
+ 633 動詞,自立,*,*,サ変・スル,命令ro,する
635
+ 634 動詞,自立,*,*,サ変・スル,命令yo,する
636
+ 635 動詞,自立,*,*,サ変・スル,連用形,する
637
+ 636 動詞,自立,*,*,ラ変,仮定形,*
638
+ 637 動詞,自立,*,*,ラ変,基本形,*
639
+ 638 動詞,自立,*,*,ラ変,体言接続,*
640
+ 639 動詞,自立,*,*,ラ変,未然形,*
641
+ 640 動詞,自立,*,*,ラ変,命令e,*
642
+ 641 動詞,自立,*,*,ラ変,連用形,*
643
+ 642 動詞,自立,*,*,一段,*,*
644
+ 643 動詞,自立,*,*,一段,仮定形,*
645
+ 644 動詞,自立,*,*,一段,仮定縮約1,*
646
+ 645 動詞,自立,*,*,一段,基本形,*
647
+ 646 動詞,自立,*,*,一段,基本形-促音便,*
648
+ 647 動詞,自立,*,*,一段,体言接続特殊,*
649
+ 648 動詞,自立,*,*,一段,未然ウ接続,*
650
+ 649 動詞,自立,*,*,一段,未然形,*
651
+ 650 動詞,自立,*,*,一段,命令ro,*
652
+ 651 動詞,自立,*,*,一段,命令yo,*
653
+ 652 動詞,自立,*,*,一段,連用形,*
654
+ 653 動詞,自立,*,*,一段・クレル,仮定形,*
655
+ 654 動詞,自立,*,*,一段・クレル,仮定縮約1,*
656
+ 655 動詞,自立,*,*,一段・クレル,基本形,*
657
+ 656 動詞,自立,*,*,一段・クレル,未然ウ接続,*
658
+ 657 動詞,自立,*,*,一段・クレル,未然形,*
659
+ 658 動詞,自立,*,*,一段・クレル,未然特殊,*
660
+ 659 動詞,自立,*,*,一段・クレル,命令e,*
661
+ 660 動詞,自立,*,*,一段・クレル,命令ro,*
662
+ 661 動詞,自立,*,*,一段・クレル,命令yo,*
663
+ 662 動詞,自立,*,*,一段・クレル,連用形,*
664
+ 663 動詞,自立,*,*,一段・得ル,仮定形,*
665
+ 664 動詞,自立,*,*,一段・得ル,基本形,*
666
+ 665 動詞,自立,*,*,下二・カ行,仮定形,*
667
+ 666 動詞,自立,*,*,下二・カ行,基本形,*
668
+ 667 動詞,自立,*,*,下二・カ行,体言接続,*
669
+ 668 動詞,自立,*,*,下二・カ行,未然形,*
670
+ 669 動詞,自立,*,*,下二・カ行,命令yo,*
671
+ 670 動詞,自立,*,*,下二・カ行,連用形,*
672
+ 671 動詞,自立,*,*,下二・ガ行,仮定形,*
673
+ 672 動詞,自立,*,*,下二・ガ行,基本形,*
674
+ 673 動詞,自立,*,*,下二・ガ行,体言接続,*
675
+ 674 動詞,自立,*,*,下二・ガ行,未然形,*
676
+ 675 動詞,自立,*,*,下二・ガ行,命令yo,*
677
+ 676 動詞,自立,*,*,下二・ガ行,連用形,*
678
+ 677 動詞,自立,*,*,下二・ダ行,仮定形,*
679
+ 678 動詞,自立,*,*,下二・ダ行,基本形,*
680
+ 679 動詞,自立,*,*,下二・ダ行,体言接続,*
681
+ 680 動詞,自立,*,*,下二・ダ行,未然形,*
682
+ 681 動詞,自立,*,*,下二・ダ行,命令yo,*
683
+ 682 動詞,自立,*,*,下二・ダ行,連用形,*
684
+ 683 動詞,自立,*,*,下二・ハ行,仮定形,*
685
+ 684 動詞,自立,*,*,下二・ハ行,基本形,*
686
+ 685 動詞,自立,*,*,下二・ハ行,体言接続,*
687
+ 686 動詞,自立,*,*,下二・ハ行,未然形,*
688
+ 687 動詞,自立,*,*,下二・ハ行,命令yo,*
689
+ 688 動詞,自立,*,*,下二・ハ行,連用形,*
690
+ 689 動詞,自立,*,*,下二・マ行,仮定形,*
691
+ 690 動詞,自立,*,*,下二・マ行,基本形,*
692
+ 691 動詞,自立,*,*,下二・マ行,体言接続,*
693
+ 692 動詞,自立,*,*,下二・マ行,未然形,*
694
+ 693 動詞,自立,*,*,下二・マ行,命令yo,*
695
+ 694 動詞,自立,*,*,下二・マ行,連用形,*
696
+ 695 動詞,自立,*,*,下二・得,仮定形,*
697
+ 696 動詞,自立,*,*,下二・得,基本形,*
698
+ 697 動詞,自立,*,*,下二・得,体言接続,*
699
+ 698 動詞,自立,*,*,下二・得,未然ウ接続,*
700
+ 699 動詞,自立,*,*,下二・得,未然形,*
701
+ 700 動詞,自立,*,*,下二・得,命令yo,*
702
+ 701 動詞,自立,*,*,下二・得,連用形,*
703
+ 702 動詞,自立,*,*,五段・カ行イ音便,*,*
704
+ 703 動詞,自立,*,*,五段・カ行イ音便,仮定形,*
705
+ 704 動詞,自立,*,*,五段・カ行イ音便,仮定形,行く
706
+ 705 動詞,自立,*,*,五段・カ行イ音便,仮定縮約1,*
707
+ 706 動詞,自立,*,*,五段・カ行イ音便,仮定縮約1,行く
708
+ 707 動詞,自立,*,*,五段・カ行イ音便,基本形,*
709
+ 708 動詞,自立,*,*,五段・カ行イ音便,基本形,行く
710
+ 709 動詞,自立,*,*,五段・カ行イ音便,未然ウ接続,*
711
+ 710 動詞,自立,*,*,五段・カ行イ音便,未然ウ接続,行く
712
+ 711 動詞,自立,*,*,五段・カ行イ音便,未然形,*
713
+ 712 動詞,自立,*,*,五段・カ行イ音便,未然形,行く
714
+ 713 動詞,自立,*,*,五段・カ行イ音便,命令e,*
715
+ 714 動詞,自立,*,*,五段・カ行イ音便,命令e,行く
716
+ 715 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,*
717
+ 716 動詞,自立,*,*,五段・カ行イ音便,連用タ接続,行く
718
+ 717 動詞,自立,*,*,五段・カ行イ音便,連用形,*
719
+ 718 動詞,自立,*,*,五段・カ行イ音便,連用形,行く
720
+ 719 動詞,自立,*,*,五段・カ行促音便,仮定形,*
721
+ 720 動詞,自立,*,*,五段・カ行促音便,仮定形,行く
722
+ 721 動詞,自立,*,*,五段・カ行促音便,仮定縮約1,*
723
+ 722 動詞,自立,*,*,五段・カ行促音便,仮定縮約1,行く
724
+ 723 動詞,自立,*,*,五段・カ行促音便,基本形,*
725
+ 724 動詞,自立,*,*,五段・カ行促音便,基本形,行く
726
+ 725 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,*
727
+ 726 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,行く
728
+ 727 動詞,自立,*,*,五段・カ行促音便,未然形,*
729
+ 728 動詞,自立,*,*,五段・カ行促音便,未然形,行く
730
+ 729 動詞,自立,*,*,五段・カ行促音便,命令e,*
731
+ 730 動詞,自立,*,*,五段・カ行促音便,命令e,行く
732
+ 731 動詞,自立,*,*,五段・カ行促音便,連用タ接続,*
733
+ 732 動詞,自立,*,*,五段・カ行促音便,連用タ接続,行く
734
+ 733 動詞,自立,*,*,五段・カ行促音便,連用形,*
735
+ 734 動詞,自立,*,*,五段・カ行促音便,連用形,行く
736
+ 735 動詞,自立,*,*,五段・カ行促音便ユク,仮定形,*
737
+ 736 動詞,自立,*,*,五段・カ行促音便ユク,仮定形,行く
738
+ 737 動詞,自立,*,*,五段・カ行促音便ユク,仮定縮約1,*
739
+ 738 動詞,自立,*,*,五段・カ行促音便ユク,仮定縮約1,行く
740
+ 739 動詞,自立,*,*,五段・カ行促音便ユク,基本形,*
741
+ 740 動詞,自立,*,*,五段・カ行促音便ユク,基本形,行く
742
+ 741 動詞,自立,*,*,五段・カ行促音便ユク,未然ウ接続,*
743
+ 742 動詞,自立,*,*,五段・カ行促音便ユク,未然ウ接続,行く
744
+ 743 動詞,自立,*,*,五段・カ行促音便ユク,未然形,*
745
+ 744 動詞,自立,*,*,五段・カ行促音便ユク,未然形,行く
746
+ 745 動詞,自立,*,*,五段・カ行促音便ユク,命令e,*
747
+ 746 動詞,自立,*,*,五段・カ行促音便ユク,命令e,行く
748
+ 747 動詞,自立,*,*,五段・カ行促音便ユク,連用形,*
749
+ 748 動詞,自立,*,*,五段・カ行促音便ユク,連用形,行く
750
+ 749 動詞,自立,*,*,五段・ガ行,*,*
751
+ 750 動詞,自立,*,*,五段・ガ行,仮定形,*
752
+ 751 動詞,自立,*,*,五段・ガ行,仮定縮約1,*
753
+ 752 動詞,自立,*,*,五段・ガ行,基本形,*
754
+ 753 動詞,自立,*,*,五段・ガ行,未然ウ接続,*
755
+ 754 動詞,自立,*,*,五段・ガ行,未然形,*
756
+ 755 動詞,自立,*,*,五段・ガ行,命令e,*
757
+ 756 動詞,自立,*,*,五段・ガ行,連用タ接続,*
758
+ 757 動詞,自立,*,*,五段・ガ行,連用形,*
759
+ 758 動詞,自立,*,*,五段・サ行,*,*
760
+ 759 動詞,自立,*,*,五段・サ行,仮定形,*
761
+ 760 動詞,自立,*,*,五段・サ行,仮定縮約1,*
762
+ 761 動詞,自立,*,*,五段・サ行,基本形,*
763
+ 762 動詞,自立,*,*,五段・サ行,未然ウ接続,*
764
+ 763 動詞,自立,*,*,五段・サ行,未然形,*
765
+ 764 動詞,自立,*,*,五段・サ行,命令e,*
766
+ 765 動詞,自立,*,*,五段・サ行,連用形,*
767
+ 766 動詞,自立,*,*,五段・タ行,*,*
768
+ 767 動詞,自立,*,*,五段・タ行,仮定形,*
769
+ 768 動詞,自立,*,*,五段・タ行,仮定縮約1,*
770
+ 769 動詞,自立,*,*,五段・タ行,基本形,*
771
+ 770 動詞,自立,*,*,五段・タ行,未然ウ接続,*
772
+ 771 動詞,自立,*,*,五段・タ行,未然形,*
773
+ 772 動詞,自立,*,*,五段・タ行,命令e,*
774
+ 773 動詞,自立,*,*,五段・タ行,連用タ接続,*
775
+ 774 動詞,自立,*,*,五段・タ行,連用形,*
776
+ 775 動詞,自立,*,*,五段・ナ行,仮定形,*
777
+ 776 動詞,自立,*,*,五段・ナ行,仮定縮約1,*
778
+ 777 動詞,自立,*,*,五段・ナ行,基本形,*
779
+ 778 動詞,自立,*,*,五段・ナ行,未然ウ接続,*
780
+ 779 動詞,自立,*,*,五段・ナ行,未然形,*
781
+ 780 動詞,自立,*,*,五段・ナ行,命令e,*
782
+ 781 動詞,自立,*,*,五段・ナ行,連用タ接続,*
783
+ 782 動詞,自立,*,*,五段・ナ行,連用形,*
784
+ 783 動詞,自立,*,*,五段・バ行,*,*
785
+ 784 動詞,自立,*,*,五段・バ行,仮定形,*
786
+ 785 動詞,自立,*,*,五段・バ行,仮定縮約1,*
787
+ 786 動詞,自立,*,*,五段・バ行,基本形,*
788
+ 787 動詞,自立,*,*,五段・バ行,未然ウ接続,*
789
+ 788 動詞,自立,*,*,五段・バ行,未然形,*
790
+ 789 動詞,自立,*,*,五段・バ行,命令e,*
791
+ 790 動詞,自立,*,*,五段・バ行,連用タ接続,*
792
+ 791 動詞,自立,*,*,五段・バ行,連用形,*
793
+ 792 動詞,自立,*,*,五段・マ行,*,*
794
+ 793 動詞,自立,*,*,五段・マ行,仮定形,*
795
+ 794 動詞,自立,*,*,五段・マ行,仮定縮約1,*
796
+ 795 動詞,自立,*,*,五段・マ行,基本形,*
797
+ 796 動詞,自立,*,*,五段・マ行,未然ウ接続,*
798
+ 797 動詞,自立,*,*,五段・マ行,未然形,*
799
+ 798 動詞,自立,*,*,五段・マ行,命令e,*
800
+ 799 動詞,自立,*,*,五段・マ行,連用タ接続,*
801
+ 800 動詞,自立,*,*,五段・マ行,連用形,*
802
+ 801 動詞,自立,*,*,五段・ラ行,*,*
803
+ 802 動詞,自立,*,*,五段・ラ行,*,する
804
+ 803 動詞,自立,*,*,五段・ラ行,仮定形,*
805
+ 804 動詞,自立,*,*,五段・ラ行,仮定形,する
806
+ 805 動詞,自立,*,*,五段・ラ行,仮定縮約1,*
807
+ 806 動詞,自立,*,*,五段・ラ行,仮定縮約1,する
808
+ 807 動詞,自立,*,*,五段・ラ行,基本形,*
809
+ 808 動詞,自立,*,*,五段・ラ行,基本形,する
810
+ 809 動詞,自立,*,*,五段・ラ行,体言接続特殊,*
811
+ 810 動詞,自立,*,*,五段・ラ行,体言接続特殊,する
812
+ 811 動詞,自立,*,*,五段・ラ行,体言接続特殊2,*
813
+ 812 動詞,自立,*,*,五段・ラ行,体言接続特殊2,する
814
+ 813 動詞,自立,*,*,五段・ラ行,未然ウ接続,*
815
+ 814 動詞,自立,*,*,五段・ラ行,未然ウ接続,する
816
+ 815 動詞,自立,*,*,五段・ラ行,未然形,*
817
+ 816 動詞,自立,*,*,五段・ラ行,未然形,する
818
+ 817 動詞,自立,*,*,五段・ラ行,未然特殊,*
819
+ 818 動詞,自立,*,*,五段・ラ行,未然特殊,する
820
+ 819 動詞,自立,*,*,五段・ラ行,命令e,*
821
+ 820 動詞,自立,*,*,五段・ラ行,命令e,する
822
+ 821 動詞,自立,*,*,五段・ラ行,連用タ接続,*
823
+ 822 動詞,自立,*,*,五段・ラ行,連用タ接続,する
824
+ 823 動詞,自立,*,*,五段・ラ行,連用形,*
825
+ 824 動詞,自立,*,*,五段・ラ行,連用形,する
826
+ 825 動詞,自立,*,*,五段・ラ行特殊,仮定形,*
827
+ 826 動詞,自立,*,*,五段・ラ行特殊,仮定縮約1,*
828
+ 827 動詞,自立,*,*,五段・ラ行特殊,基本形,*
829
+ 828 動詞,自立,*,*,五段・ラ行特殊,未然ウ接続,*
830
+ 829 動詞,自立,*,*,五段・ラ行特殊,未然形,*
831
+ 830 動詞,自立,*,*,五段・ラ行特殊,未然特殊,*
832
+ 831 動詞,自立,*,*,五段・ラ行特殊,命令e,*
833
+ 832 動詞,自立,*,*,五段・ラ行特殊,命令i,*
834
+ 833 動詞,自立,*,*,五段・ラ行特殊,連用タ接続,*
835
+ 834 動詞,自立,*,*,五段・ラ行特殊,連用形,*
836
+ 835 動詞,自立,*,*,五段・ワ行ウ音便,*,*
837
+ 836 動詞,自立,*,*,五段・ワ行ウ音便,仮定形,*
838
+ 837 動詞,自立,*,*,五段・ワ行ウ音便,仮定形,言う
839
+ 838 動詞,自立,*,*,五段・ワ行ウ音便,基本形,*
840
+ 839 動詞,自立,*,*,五段・ワ行ウ音便,基本形,言う
841
+ 840 動詞,自立,*,*,五段・ワ行ウ音便,未��ウ接続,*
842
+ 841 動詞,自立,*,*,五段・ワ行ウ音便,未然ウ接続,言う
843
+ 842 動詞,自立,*,*,五段・ワ行ウ音便,未然形,*
844
+ 843 動詞,自立,*,*,五段・ワ行ウ音便,未然形,言う
845
+ 844 動詞,自立,*,*,五段・ワ行ウ音便,命令e,*
846
+ 845 動詞,自立,*,*,五段・ワ行ウ音便,命令e,言う
847
+ 846 動詞,自立,*,*,五段・ワ行ウ音便,連用タ接続,*
848
+ 847 動詞,自立,*,*,五段・ワ行ウ音便,連用タ接続,言う
849
+ 848 動詞,自立,*,*,五段・ワ行ウ音便,連用形,*
850
+ 849 動詞,自立,*,*,五段・ワ行ウ音便,連用形,言う
851
+ 850 動詞,自立,*,*,五段・ワ行促音便,*,*
852
+ 851 動詞,自立,*,*,五段・ワ行促音便,仮定形,*
853
+ 852 動詞,自立,*,*,五段・ワ行促音便,仮定形,言う
854
+ 853 動詞,自立,*,*,五段・ワ行促音便,仮定形,行う
855
+ 854 動詞,自立,*,*,五段・ワ行促音便,基本形,*
856
+ 855 動詞,自立,*,*,五段・ワ行促音便,基本形,言う
857
+ 856 動詞,自立,*,*,五段・ワ行促音便,基本形,行う
858
+ 857 動詞,自立,*,*,五段・ワ行促音便,未然ウ接続,*
859
+ 858 動詞,自立,*,*,五段・ワ行促音便,未然ウ接続,言う
860
+ 859 動詞,自立,*,*,五段・ワ行促音便,未然ウ接続,行う
861
+ 860 動詞,自立,*,*,五段・ワ行促音便,未然形,*
862
+ 861 動詞,自立,*,*,五段・ワ行促音便,未然形,言う
863
+ 862 動詞,自立,*,*,五段・ワ行促音便,未然形,行う
864
+ 863 動詞,自立,*,*,五段・ワ行促音便,命令e,*
865
+ 864 動詞,自立,*,*,五段・ワ行促音便,命令e,言う
866
+ 865 動詞,自立,*,*,五段・ワ行促音便,命令e,行う
867
+ 866 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,*
868
+ 867 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,言う
869
+ 868 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,行う
870
+ 869 動詞,自立,*,*,五段・ワ行促音便,連用形,*
871
+ 870 動詞,自立,*,*,五段・ワ行促音便,連用形,言う
872
+ 871 動詞,自立,*,*,五段・ワ行促音便,連用形,行う
873
+ 872 動詞,自立,*,*,四段・サ行,仮定形,*
874
+ 873 動詞,自立,*,*,四段・サ行,基本形,*
875
+ 874 動詞,自立,*,*,四段・サ行,未然形,*
876
+ 875 動詞,自立,*,*,四段・サ行,命令e,*
877
+ 876 動詞,自立,*,*,四段・サ行,連用形,*
878
+ 877 動詞,自立,*,*,四段・タ行,仮定形,*
879
+ 878 動詞,自立,*,*,四段・タ行,基本形,*
880
+ 879 動詞,自立,*,*,四段・タ行,未然形,*
881
+ 880 動詞,自立,*,*,四段・タ行,命令e,*
882
+ 881 動詞,自立,*,*,四段・タ行,連用形,*
883
+ 882 動詞,自立,*,*,四段・ハ行,仮定形,*
884
+ 883 動詞,自立,*,*,四段・ハ行,基本形,*
885
+ 884 動詞,自立,*,*,四段・ハ行,未然形,*
886
+ 885 動詞,自立,*,*,四段・ハ行,命令e,*
887
+ 886 動詞,自立,*,*,四段・ハ行,連用形,*
888
+ 887 動詞,自立,*,*,四段・バ行,仮定形,*
889
+ 888 動詞,自立,*,*,四段・バ行,基本形,*
890
+ 889 動詞,自立,*,*,四段・バ行,未然形,*
891
+ 890 動詞,自立,*,*,四段・バ行,命令e,*
892
+ 891 動詞,自立,*,*,四段・バ行,連用形,*
893
+ 892 動詞,自立,*,*,上二・ダ行,仮定形,*
894
+ 893 動詞,自立,*,*,上二・ダ行,基本形,*
895
+ 894 動詞,自立,*,*,上二・ダ行,現代基本形,*
896
+ 895 動詞,自立,*,*,上二・ダ行,体言接続,*
897
+ 896 動詞,自立,*,*,上二・ダ行,未然形,*
898
+ 897 動詞,自立,*,*,上二・ダ行,命令yo,*
899
+ 898 動詞,自立,*,*,上二・ダ行,連用形,*
900
+ 899 動詞,自立,*,*,上二・ハ行,仮定形,*
901
+ 900 動詞,自立,*,*,上二・ハ行,基本形,*
902
+ 901 動詞,自立,*,*,上二・ハ行,体言接続,*
903
+ 902 動詞,自立,*,*,上二・ハ行,未然形,*
904
+ 903 動詞,自立,*,*,上二・ハ行,命令yo,*
905
+ 904 動詞,自立,*,*,上二・ハ行,連用形,*
906
+ 905 動詞,接尾,*,*,一段,仮定形,*
907
+ 906 動詞,接尾,*,*,一段,仮定縮約1,*
908
+ 907 動詞,接尾,*,*,一段,基本形,*
909
+ 908 動詞,接尾,*,*,一段,基本形-促音便,*
910
+ 909 動詞,接尾,*,*,一段,体言接続特殊,*
911
+ 910 動詞,接尾,*,*,一段,未然ウ接続,*
912
+ 911 動詞,接尾,*,*,一段,未然形,*
913
+ 912 動詞,接尾,*,*,一段,命令ro,*
914
+ 913 動詞,接尾,*,*,一段,命令yo,*
915
+ 914 動詞,接尾,*,*,一段,連用形,*
916
+ 915 動詞,接尾,*,*,五段・サ行,仮定形,*
917
+ 916 動詞,接尾,*,*,五段・サ行,仮定縮約1,*
918
+ 917 動詞,接尾,*,*,五段・サ行,基本形,*
919
+ 918 動詞,接尾,*,*,五段・サ行,未然ウ接続,*
920
+ 919 動詞,接尾,*,*,五段・サ行,未然形,*
921
+ 920 動詞,接尾,*,*,五段・サ行,命令e,*
922
+ 921 動詞,接尾,*,*,五段・サ行,連用形,*
923
+ 922 動詞,接尾,*,*,五段・ラ行,仮定形,*
924
+ 923 動詞,接尾,*,*,五段・ラ行,仮定縮約1,*
925
+ 924 動詞,接尾,*,*,五段・ラ行,基本形,*
926
+ 925 動詞,接尾,*,*,五段・ラ行,体言接続特殊,*
927
+ 926 動詞,接尾,*,*,五段・ラ行,体言接続特殊2,*
928
+ 927 動詞,接尾,*,*,五段・ラ行,未然ウ接続,*
929
+ 928 動詞,接尾,*,*,五段・ラ行,未然形,*
930
+ 929 動詞,接尾,*,*,五段・ラ行,未然特殊,*
931
+ 930 動詞,接尾,*,*,五段・ラ行,命令e,*
932
+ 931 動詞,接尾,*,*,五段・ラ行,連用タ接続,*
933
+ 932 動詞,接尾,*,*,五���・ラ行,連用形,*
934
+ 933 動詞,非自立,*,*,カ変・クル,仮定形,来る
935
+ 934 動詞,非自立,*,*,カ変・クル,仮定縮約1,来る
936
+ 935 動詞,非自立,*,*,カ変・クル,基本形,来る
937
+ 936 動詞,非自立,*,*,カ変・クル,体言接続特殊,来る
938
+ 937 動詞,非自立,*,*,カ変・クル,体言接続特殊2,来る
939
+ 938 動詞,非自立,*,*,カ変・クル,未然ウ接続,来る
940
+ 939 動詞,非自立,*,*,カ変・クル,未然形,来る
941
+ 940 動詞,非自立,*,*,カ変・クル,命令i,来る
942
+ 941 動詞,非自立,*,*,カ変・クル,命令yo,来る
943
+ 942 動詞,非自立,*,*,カ変・クル,連用形,来る
944
+ 943 動詞,非自立,*,*,カ変・来ル,仮定形,来る
945
+ 944 動詞,非自立,*,*,カ変・来ル,仮定縮約1,来る
946
+ 945 動詞,非自立,*,*,カ変・来ル,基本形,来る
947
+ 946 動詞,非自立,*,*,カ変・来ル,体言接続特殊,来る
948
+ 947 動詞,非自立,*,*,カ変・来ル,体言接続特殊2,来る
949
+ 948 動詞,非自立,*,*,カ変・来ル,未然ウ接続,来る
950
+ 949 動詞,非自立,*,*,カ変・来ル,未然形,来る
951
+ 950 動詞,非自立,*,*,カ変・来ル,命令i,来る
952
+ 951 動詞,非自立,*,*,カ変・来ル,命令yo,来る
953
+ 952 動詞,非自立,*,*,カ変・来ル,連用形,来る
954
+ 953 動詞,非自立,*,*,一段,*,*
955
+ 954 動詞,非自立,*,*,一段,仮定形,*
956
+ 955 動詞,非自立,*,*,一段,仮定形,る
957
+ 956 動詞,非自立,*,*,一段,仮定縮約1,*
958
+ 957 動詞,非自立,*,*,一段,仮定縮約1,る
959
+ 958 動詞,非自立,*,*,一段,基本形,*
960
+ 959 動詞,非自立,*,*,一段,基本形,る
961
+ 960 動詞,非自立,*,*,一段,基本形-促音便,*
962
+ 961 動詞,非自立,*,*,一段,基本形-促音便,る
963
+ 962 動詞,非自立,*,*,一段,体言接続特殊,*
964
+ 963 動詞,非自立,*,*,一段,体言接続特殊,る
965
+ 964 動詞,非自立,*,*,一段,未然ウ接続,*
966
+ 965 動詞,非自立,*,*,一段,未然ウ接続,る
967
+ 966 動詞,非自立,*,*,一段,未然形,*
968
+ 967 動詞,非自立,*,*,一段,命令ro,*
969
+ 968 動詞,非自立,*,*,一段,命令ro,る
970
+ 969 動詞,非自立,*,*,一段,命令yo,*
971
+ 970 動詞,非自立,*,*,一段,命令yo,る
972
+ 971 動詞,非自立,*,*,一段,連用形,*
973
+ 972 動詞,非自立,*,*,一段・クレル,仮定形,くれる
974
+ 973 動詞,非自立,*,*,一段・クレル,仮定縮約1,くれる
975
+ 974 動詞,非自立,*,*,一段・クレル,基本形,くれる
976
+ 975 動詞,非自立,*,*,一段・クレル,未然ウ接続,くれる
977
+ 976 動詞,非自立,*,*,一段・クレル,未然形,くれる
978
+ 977 動詞,非自立,*,*,一段・クレル,未然特殊,くれる
979
+ 978 動詞,非自立,*,*,一段・クレル,命令e,くれる
980
+ 979 動詞,非自立,*,*,一段・クレル,命令ro,くれる
981
+ 980 動詞,非自立,*,*,一段・クレル,命令yo,くれる
982
+ 981 動詞,非自立,*,*,一段・クレル,連用形,くれる
983
+ 982 動詞,非自立,*,*,一段・得ル,仮定形,*
984
+ 983 動詞,非自立,*,*,一段・得ル,基本形,*
985
+ 984 動詞,非自立,*,*,五段・カ行イ音便,*,*
986
+ 985 動詞,非自立,*,*,五段・カ行イ音便,仮定形,*
987
+ 986 動詞,非自立,*,*,五段・カ行イ音便,仮定形,おく
988
+ 987 動詞,非自立,*,*,五段・カ行イ音便,仮定形,続く
989
+ 988 動詞,非自立,*,*,五段・カ行イ音便,仮定形,抜く
990
+ 989 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,*
991
+ 990 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,おく
992
+ 991 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,続く
993
+ 992 動詞,非自立,*,*,五段・カ行イ音便,仮定縮約1,抜く
994
+ 993 動詞,非自立,*,*,五段・カ行イ音便,基本形,*
995
+ 994 動詞,非自立,*,*,五段・カ行イ音便,基本形,おく
996
+ 995 動詞,非自立,*,*,五段・カ行イ音便,基本形,続く
997
+ 996 動詞,非自立,*,*,五段・カ行イ音便,基本形,抜く
998
+ 997 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,*
999
+ 998 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,おく
1000
+ 999 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,続く
1001
+ 1000 動詞,非自立,*,*,五段・カ行イ音便,未然ウ接続,抜く
1002
+ 1001 動詞,非自立,*,*,五段・カ行イ音便,未然形,*
1003
+ 1002 動詞,非自立,*,*,五段・カ行イ音便,未然形,おく
1004
+ 1003 動詞,非自立,*,*,五段・カ行イ音便,未然形,続く
1005
+ 1004 動詞,非自立,*,*,五段・カ行イ音便,未然形,抜く
1006
+ 1005 動詞,非自立,*,*,五段・カ行イ音便,命令e,*
1007
+ 1006 動詞,非自立,*,*,五段・カ行イ音便,命令e,おく
1008
+ 1007 動詞,非自立,*,*,五段・カ行イ音便,命令e,続く
1009
+ 1008 動詞,非自立,*,*,五段・カ行イ音便,命令e,抜く
1010
+ 1009 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,*
1011
+ 1010 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,おく
1012
+ 1011 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,続く
1013
+ 1012 動詞,非自立,*,*,五段・カ行イ音便,連用タ接続,抜く
1014
+ 1013 動詞,非自立,*,*,五段・カ行イ音便,連用形,*
1015
+ 1014 動詞,非自立,*,*,五段・カ行イ音便,連用形,おく
1016
+ 1015 動詞,非自立,*,*,五段・カ行イ音便,連用形,続く
1017
+ 1016 動詞,非自立,*,*,五段・カ行イ音便,連用形,抜く
1018
+ 1017 動詞,非自立,*,*,五段・カ行促音便,仮定形,*
1019
+ 1018 動詞,非自立,*,*,五段・カ行促音便,仮定形,いく
1020
+ 1019 動詞,非自立,*,*,五段・カ行促音便,仮定形,く
1021
+ 1020 動詞,非自立,*,*,五段・カ行促音便,仮定形,行く
1022
+ 1021 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,*
1023
+ 1022 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,いく
1024
+ 1023 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,く
1025
+ 1024 動詞,非自立,*,*,五段・カ行促音便,仮定縮約1,行く
1026
+ 1025 動詞,非自立,*,*,五段・カ行促音便,基本形,*
1027
+ 1026 動詞,非自立,*,*,五段・カ行促音便,基本形,いく
1028
+ 1027 動詞,非自立,*,*,五段・カ行促音便,基本形,く
1029
+ 1028 動詞,非自立,*,*,五段・カ行促音便,基本形,行く
1030
+ 1029 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,*
1031
+ 1030 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,いく
1032
+ 1031 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,く
1033
+ 1032 動詞,非自立,*,*,五段・カ行促音便,未然ウ接続,行く
1034
+ 1033 動詞,非自立,*,*,五段・カ行促音便,未然形,*
1035
+ 1034 動詞,非自立,*,*,五段・カ行促音便,未然形,いく
1036
+ 1035 動詞,非自立,*,*,五段・カ行促音便,未然形,く
1037
+ 1036 動詞,非自立,*,*,五段・カ行促音便,未然形,行く
1038
+ 1037 動詞,非自立,*,*,五段・カ行促音便,命令e,*
1039
+ 1038 動詞,非自立,*,*,五段・カ行促音便,命令e,いく
1040
+ 1039 動詞,非自立,*,*,五段・カ行促音便,命令e,く
1041
+ 1040 動詞,非自立,*,*,五段・カ行促音便,命令e,行く
1042
+ 1041 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,*
1043
+ 1042 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,いく
1044
+ 1043 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,く
1045
+ 1044 動詞,非自立,*,*,五段・カ行促音便,連用タ接続,行く
1046
+ 1045 動詞,非自立,*,*,五段・カ行促音便,連用形,*
1047
+ 1046 動詞,非自立,*,*,五段・カ行促音便,連用形,いく
1048
+ 1047 動詞,非自立,*,*,五段・カ行促音便,連用形,く
1049
+ 1048 動詞,非自立,*,*,五段・カ行促音便,連用形,行く
1050
+ 1049 動詞,非自立,*,*,五段・カ行促音便ユク,仮定形,ゆく
1051
+ 1050 動詞,非自立,*,*,五段・カ行促音便ユク,仮定形,行く
1052
+ 1051 動詞,非自立,*,*,五段・カ行促音便ユク,仮定縮約1,ゆく
1053
+ 1052 動詞,非自立,*,*,五段・カ行促音便ユク,仮定縮約1,行く
1054
+ 1053 動詞,非自立,*,*,五段・カ行促音便ユク,基本形,ゆく
1055
+ 1054 動詞,非自立,*,*,五段・カ行促音便ユク,基本形,行く
1056
+ 1055 動詞,非自立,*,*,五段・カ行促音便ユク,未然ウ接続,ゆく
1057
+ 1056 動詞,非自立,*,*,五段・カ行促音便ユク,未然ウ接続,行く
1058
+ 1057 動詞,非自立,*,*,五段・カ行促音便ユク,未然形,ゆく
1059
+ 1058 動詞,非自立,*,*,五段・カ行促音便ユク,未然形,行く
1060
+ 1059 動詞,非自立,*,*,五段・カ行促音便ユク,命令e,ゆく
1061
+ 1060 動詞,非自立,*,*,五段・カ行促音便ユク,命令e,行く
1062
+ 1061 動詞,非自立,*,*,五段・カ行促音便ユク,連用形,ゆく
1063
+ 1062 動詞,非自立,*,*,五段・カ行促音便ユク,連用形,行く
1064
+ 1063 動詞,非自立,*,*,五段・サ行,*,*
1065
+ 1064 動詞,非自立,*,*,五段・サ行,*,尽くす
1066
+ 1065 動詞,非自立,*,*,五段・サ行,仮定形,*
1067
+ 1066 動詞,非自立,*,*,五段・サ行,仮定形,出す
1068
+ 1067 動詞,非自立,*,*,五段・サ行,仮定形,尽くす
1069
+ 1068 動詞,非自立,*,*,五段・サ行,仮定形,直す
1070
+ 1069 動詞,非自立,*,*,五段・サ行,仮定縮約1,*
1071
+ 1070 動詞,非自立,*,*,五段・サ行,仮定縮約1,出す
1072
+ 1071 動詞,非自立,*,*,五段・サ行,仮定縮約1,尽くす
1073
+ 1072 動詞,非自立,*,*,五段・サ行,仮定縮約1,直す
1074
+ 1073 動詞,非自立,*,*,五段・サ行,基本形,出す
1075
+ 1074 動詞,非自立,*,*,五段・サ行,基本形,尽くす
1076
+ 1075 動詞,非自立,*,*,五段・サ行,基本形,直す
1077
+ 1076 動詞,非自立,*,*,五段・サ行,未然ウ接続,*
1078
+ 1077 動詞,非自立,*,*,五段・サ行,未然ウ接続,出す
1079
+ 1078 動詞,非自立,*,*,五段・サ行,未然ウ接続,尽くす
1080
+ 1079 動詞,非自立,*,*,五段・サ行,未然ウ接続,直す
1081
+ 1080 動詞,非自立,*,*,五段・サ行,未然形,*
1082
+ 1081 動詞,非自立,*,*,五段・サ行,未然形,出す
1083
+ 1082 動詞,非自立,*,*,五段・サ行,未然形,尽くす
1084
+ 1083 動詞,非自立,*,*,五段・サ行,未然形,直す
1085
+ 1084 動詞,非自立,*,*,五段・サ行,命令e,*
1086
+ 1085 動詞,非自立,*,*,五段・サ行,命令e,出す
1087
+ 1086 動詞,非自立,*,*,五段・サ行,命令e,尽くす
1088
+ 1087 動詞,非自立,*,*,五段・サ行,命令e,直す
1089
+ 1088 動詞,非自立,*,*,五段・サ行,連用形,*
1090
+ 1089 動詞,非自立,*,*,五段・サ行,連用形,出す
1091
+ 1090 動詞,非自立,*,*,五段・サ���,連用形,尽くす
1092
+ 1091 動詞,非自立,*,*,五段・サ行,連用形,直す
1093
+ 1092 動詞,非自立,*,*,五段・タ行,*,*
1094
+ 1093 動詞,非自立,*,*,五段・タ行,仮定形,*
1095
+ 1094 動詞,非自立,*,*,五段・タ行,仮定縮約1,*
1096
+ 1095 動詞,非自立,*,*,五段・タ行,未然ウ接続,*
1097
+ 1096 動詞,非自立,*,*,五段・タ行,未然形,*
1098
+ 1097 動詞,非自立,*,*,五段・タ行,命令e,*
1099
+ 1098 動詞,非自立,*,*,五段・タ行,連用タ接続,*
1100
+ 1099 動詞,非自立,*,*,五段・タ行,連用形,*
1101
+ 1100 動詞,非自立,*,*,五段・ナ行,*,*
1102
+ 1101 動詞,非自立,*,*,五段・ナ行,仮定形,*
1103
+ 1102 動詞,非自立,*,*,五段・ナ行,仮定縮約1,*
1104
+ 1103 動詞,非自立,*,*,五段・ナ行,未然ウ接続,*
1105
+ 1104 動詞,非自立,*,*,五段・ナ行,未然形,*
1106
+ 1105 動詞,非自立,*,*,五段・ナ行,命令e,*
1107
+ 1106 動詞,非自立,*,*,五段・ナ行,連用タ接続,*
1108
+ 1107 動詞,非自立,*,*,五段・ナ行,連用形,*
1109
+ 1108 動詞,非自立,*,*,五段・マ行,*,*
1110
+ 1109 動詞,非自立,*,*,五段・マ行,仮定形,*
1111
+ 1110 動詞,非自立,*,*,五段・マ行,仮定形,込む
1112
+ 1111 動詞,非自立,*,*,五段・マ行,仮定縮約1,*
1113
+ 1112 動詞,非自立,*,*,五段・マ行,仮定縮約1,込む
1114
+ 1113 動詞,非自立,*,*,五段・マ行,基本形,込む
1115
+ 1114 動詞,非自立,*,*,五段・マ行,未然ウ接続,*
1116
+ 1115 動詞,非自立,*,*,五段・マ行,未然ウ接続,込む
1117
+ 1116 動詞,非自立,*,*,五段・マ行,未然形,*
1118
+ 1117 動詞,非自立,*,*,五段・マ行,未然形,込む
1119
+ 1118 動詞,非自立,*,*,五段・マ行,命令e,*
1120
+ 1119 動詞,非自立,*,*,五段・マ行,命令e,込む
1121
+ 1120 動詞,非自立,*,*,五段・マ行,連用タ接続,*
1122
+ 1121 動詞,非自立,*,*,五段・マ行,連用タ接続,込む
1123
+ 1122 動詞,非自立,*,*,五段・マ行,連用形,*
1124
+ 1123 動詞,非自立,*,*,五段・マ行,連用形,込む
1125
+ 1124 動詞,非自立,*,*,五段・ラ行,*,*
1126
+ 1125 動詞,非自立,*,*,五段・ラ行,*,切る
1127
+ 1126 動詞,非自立,*,*,五段・ラ行,仮定形,*
1128
+ 1127 動詞,非自立,*,*,五段・ラ行,仮定形,ある
1129
+ 1128 動詞,非自立,*,*,五段・ラ行,仮定形,おる
1130
+ 1129 動詞,非自立,*,*,五段・ラ行,仮定形,かかる
1131
+ 1130 動詞,非自立,*,*,五段・ラ行,仮定形,きる
1132
+ 1131 動詞,非自立,*,*,五段・ラ行,仮定形,なる
1133
+ 1132 動詞,非自立,*,*,五段・ラ行,仮定形,まいる
1134
+ 1133 動詞,非自立,*,*,五段・ラ行,仮定形,まわる
1135
+ 1134 動詞,非自立,*,*,五段・ラ行,仮定形,やる
1136
+ 1135 動詞,非自立,*,*,五段・ラ行,仮定形,回る
1137
+ 1136 動詞,非自立,*,*,五段・ラ行,仮定形,参る
1138
+ 1137 動詞,非自立,*,*,五段・ラ行,仮定形,終わる
1139
+ 1138 動詞,非自立,*,*,五段・ラ行,仮定形,切る
1140
+ 1139 動詞,非自立,*,*,五段・ラ行,仮定縮約1,*
1141
+ 1140 動詞,非自立,*,*,五段・ラ行,仮定縮約1,ある
1142
+ 1141 動詞,非自立,*,*,五段・ラ行,仮定縮約1,おる
1143
+ 1142 動詞,非自立,*,*,五段・ラ行,仮定縮約1,かかる
1144
+ 1143 動詞,非自立,*,*,五段・ラ行,仮定縮約1,きる
1145
+ 1144 動詞,非自立,*,*,五段・ラ行,仮定縮約1,なる
1146
+ 1145 動詞,非自立,*,*,五段・ラ行,仮定縮約1,まいる
1147
+ 1146 動詞,非自立,*,*,五段・ラ行,仮定縮約1,まわる
1148
+ 1147 動詞,非自立,*,*,五段・ラ行,仮定縮約1,やる
1149
+ 1148 動詞,非自立,*,*,五段・ラ行,仮定縮約1,回る
1150
+ 1149 動詞,非自立,*,*,五段・ラ行,仮定縮約1,参る
1151
+ 1150 動詞,非自立,*,*,五段・ラ行,仮定縮約1,終わる
1152
+ 1151 動詞,非自立,*,*,五段・ラ行,仮定縮約1,切る
1153
+ 1152 動詞,非自立,*,*,五段・ラ行,基本形,*
1154
+ 1153 動詞,非自立,*,*,五段・ラ行,基本形,ある
1155
+ 1154 動詞,非自立,*,*,五段・ラ行,基本形,おる
1156
+ 1155 動詞,非自立,*,*,五段・ラ行,基本形,かかる
1157
+ 1156 動詞,非自立,*,*,五段・ラ行,基本形,きる
1158
+ 1157 動詞,非自立,*,*,五段・ラ行,基本形,なる
1159
+ 1158 動詞,非自立,*,*,五段・ラ行,基本形,まいる
1160
+ 1159 動詞,非自立,*,*,五段・ラ行,基本形,まわる
1161
+ 1160 動詞,非自立,*,*,五段・ラ行,基本形,やる
1162
+ 1161 動詞,非自立,*,*,五段・ラ行,基本形,回る
1163
+ 1162 動詞,非自立,*,*,五段・ラ行,基本形,参る
1164
+ 1163 動詞,非自立,*,*,五段・ラ行,基本形,終わる
1165
+ 1164 動詞,非自立,*,*,五段・ラ行,基本形,切る
1166
+ 1165 動詞,非自立,*,*,五段・ラ行,体言接続特殊,*
1167
+ 1166 動詞,非自立,*,*,五段・ラ行,体言接続特殊,ある
1168
+ 1167 動詞,非自立,*,*,五段・ラ行,体言接続特殊,おる
1169
+ 1168 動詞,非自立,*,*,五段・ラ行,体言接続特殊,かかる
1170
+ 1169 動詞,非自立,*,*,五段・ラ行,体言接続特殊,きる
1171
+ 1170 動詞,非自立,*,*,五段・ラ行,体言接続特殊,なる
1172
+ 1171 動詞,非自立,*,*,五段・ラ行,体言接続特殊,まいる
1173
+ 1172 動詞,非自立,*,*,五段・ラ行,体言接続特殊,まわる
1174
+ 1173 動詞,非自立,*,*,五段・ラ行,体言接続特殊,やる
1175
+ 1174 動詞,非自立,*,*,五段・ラ行,体言接続特殊,回る
1176
+ 1175 動詞,非自立,*,*,五段・ラ行,体言接続特殊,参る
1177
+ 1176 動詞,非自立,*,*,五段・ラ行,体言接続特殊,終わる
1178
+ 1177 動詞,非自立,*,*,五段・ラ行,体言接続特殊,切る
1179
+ 1178 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,*
1180
+ 1179 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,ある
1181
+ 1180 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,おる
1182
+ 1181 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,かかる
1183
+ 1182 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,きる
1184
+ 1183 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,なる
1185
+ 1184 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,まいる
1186
+ 1185 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,まわる
1187
+ 1186 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,やる
1188
+ 1187 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,回る
1189
+ 1188 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,参る
1190
+ 1189 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,終わる
1191
+ 1190 動詞,非自立,*,*,五段・ラ行,体言接続特殊2,切る
1192
+ 1191 動詞,非自立,*,*,五段・ラ行,未然ウ接続,*
1193
+ 1192 動詞,非自立,*,*,五段・ラ行,未然ウ接続,ある
1194
+ 1193 動詞,非自立,*,*,五段・ラ行,未然ウ接続,おる
1195
+ 1194 動詞,非自立,*,*,五段・ラ行,未然ウ接続,かかる
1196
+ 1195 動詞,非自立,*,*,五段・ラ行,未然ウ接続,きる
1197
+ 1196 動詞,非自立,*,*,五段・ラ行,未然ウ接続,なる
1198
+ 1197 動詞,非自立,*,*,五段・ラ行,未然ウ接続,まいる
1199
+ 1198 動詞,非自立,*,*,五段・ラ行,未然ウ接続,まわる
1200
+ 1199 動詞,非自立,*,*,五段・ラ行,未然ウ接続,やる
1201
+ 1200 動詞,非自立,*,*,五段・ラ行,未然ウ接続,回る
1202
+ 1201 動詞,非自立,*,*,五段・ラ行,未然ウ接続,参る
1203
+ 1202 動詞,非自立,*,*,五段・ラ行,未然ウ接続,終わる
1204
+ 1203 動詞,非自立,*,*,五段・ラ行,未然ウ接続,切る
1205
+ 1204 動詞,非自立,*,*,五段・ラ行,未然形,*
1206
+ 1205 動詞,非自立,*,*,五段・ラ行,未然形,ある
1207
+ 1206 動詞,非自立,*,*,五段・ラ行,未然形,おる
1208
+ 1207 動詞,非自立,*,*,五段・ラ行,未然形,かかる
1209
+ 1208 動詞,非自立,*,*,五段・ラ行,未然形,きる
1210
+ 1209 動詞,非自立,*,*,五段・ラ行,未然形,なる
1211
+ 1210 動詞,非自立,*,*,五段・ラ行,未然形,まいる
1212
+ 1211 動詞,非自立,*,*,五段・ラ行,未然形,まわる
1213
+ 1212 動詞,非自立,*,*,五段・ラ行,未然形,やる
1214
+ 1213 動詞,非自立,*,*,五段・ラ行,未然形,回る
1215
+ 1214 動詞,非自立,*,*,五段・ラ行,未然形,参る
1216
+ 1215 動詞,非自立,*,*,五段・ラ行,未然形,終わる
1217
+ 1216 動詞,非自立,*,*,五段・ラ行,未然形,切る
1218
+ 1217 動詞,非自立,*,*,五段・ラ行,未然特殊,*
1219
+ 1218 動詞,非自立,*,*,五段・ラ行,未然特殊,ある
1220
+ 1219 動詞,非自立,*,*,五段・ラ行,未然特殊,おる
1221
+ 1220 動詞,非自立,*,*,五段・ラ行,未然特殊,かかる
1222
+ 1221 動詞,非自立,*,*,五段・ラ行,未然特殊,きる
1223
+ 1222 動詞,非自立,*,*,五段・ラ行,未然特殊,なる
1224
+ 1223 動詞,非自立,*,*,五段・ラ行,未然特殊,まいる
1225
+ 1224 動詞,非自立,*,*,五段・ラ行,未然特殊,まわる
1226
+ 1225 動詞,非自立,*,*,五段・ラ行,未然特殊,やる
1227
+ 1226 動詞,非自立,*,*,五段・ラ行,未然特殊,回る
1228
+ 1227 動詞,非自立,*,*,五段・ラ行,未然特殊,参る
1229
+ 1228 動詞,非自立,*,*,五段・ラ行,未然特殊,終わる
1230
+ 1229 動詞,非自立,*,*,五段・ラ行,未然特殊,切る
1231
+ 1230 動詞,非自立,*,*,五段・ラ行,命令e,*
1232
+ 1231 動詞,非自立,*,*,五段・ラ行,命令e,ある
1233
+ 1232 動詞,非自立,*,*,五段・ラ行,命令e,おる
1234
+ 1233 動詞,非自立,*,*,五段・ラ行,命令e,かかる
1235
+ 1234 動詞,非自立,*,*,五段・ラ行,命令e,きる
1236
+ 1235 動詞,非自立,*,*,五段・ラ行,命令e,なる
1237
+ 1236 動詞,非自立,*,*,五段・ラ行,命令e,まいる
1238
+ 1237 動詞,非自立,*,*,五段・ラ行,命令e,まわる
1239
+ 1238 動詞,非自立,*,*,五段・ラ行,命令e,やる
1240
+ 1239 動詞,非自立,*,*,五段・ラ行,命令e,回る
1241
+ 1240 動詞,非自立,*,*,五段・ラ行,命令e,参る
1242
+ 1241 動詞,非自立,*,*,五段・ラ行,命令e,終わる
1243
+ 1242 動詞,非自立,*,*,五段・ラ行,命令e,切る
1244
+ 1243 動詞,非自立,*,*,五段・ラ行,連用タ接続,*
1245
+ 1244 動詞,非自立,*,*,五段・ラ行,連用タ接続,ある
1246
+ 1245 動詞,非自立,*,*,五段・ラ行,連用タ接続,おる
1247
+ 1246 動詞,非自立,*,*,五段・ラ行,連用タ接続,かかる
1248
+ 1247 動詞,非自立,*,*,五段・ラ行,連用タ接続,きる
1249
+ 1248 動詞,非自立,*,*,五段・ラ行,連用タ接続,なる
1250
+ 1249 動詞,非自立,*,*,五段・ラ行,連用タ接続,まいる
1251
+ 1250 動詞,非自立,*,*,五段・ラ行,連用タ接続,まわる
1252
+ 1251 動詞,非自立,*,*,五段・ラ行,連用タ接続,やる
1253
+ 1252 動詞,非自立,*,*,五段・ラ行,連用タ接続,��る
1254
+ 1253 動詞,非自立,*,*,五段・ラ行,連用タ接続,参る
1255
+ 1254 動詞,非自立,*,*,五段・ラ行,連用タ接続,終わる
1256
+ 1255 動詞,非自立,*,*,五段・ラ行,連用タ接続,切る
1257
+ 1256 動詞,非自立,*,*,五段・ラ行,連用形,*
1258
+ 1257 動詞,非自立,*,*,五段・ラ行,連用形,ある
1259
+ 1258 動詞,非自立,*,*,五段・ラ行,連用形,おる
1260
+ 1259 動詞,非自立,*,*,五段・ラ行,連用形,かかる
1261
+ 1260 動詞,非自立,*,*,五段・ラ行,連用形,きる
1262
+ 1261 動詞,非自立,*,*,五段・ラ行,連用形,なる
1263
+ 1262 動詞,非自立,*,*,五段・ラ行,連用形,まいる
1264
+ 1263 動詞,非自立,*,*,五段・ラ行,連用形,まわる
1265
+ 1264 動詞,非自立,*,*,五段・ラ行,連用形,やる
1266
+ 1265 動詞,非自立,*,*,五段・ラ行,連用形,回る
1267
+ 1266 動詞,非自立,*,*,五段・ラ行,連用形,参る
1268
+ 1267 動詞,非自立,*,*,五段・ラ行,連用形,終わる
1269
+ 1268 動詞,非自立,*,*,五段・ラ行,連用形,切る
1270
+ 1269 動詞,非自立,*,*,五段・ラ行特殊,仮定形,なさる
1271
+ 1270 動詞,非自立,*,*,五段・ラ行特殊,仮定形,らっしゃる
1272
+ 1271 動詞,非自立,*,*,五段・ラ行特殊,仮定形,下さる
1273
+ 1272 動詞,非自立,*,*,五段・ラ行特殊,仮定縮約1,なさる
1274
+ 1273 動詞,非自立,*,*,五段・ラ行特殊,仮定縮約1,らっしゃる
1275
+ 1274 動詞,非自立,*,*,五段・ラ行特殊,仮定縮約1,下さる
1276
+ 1275 動詞,非自立,*,*,五段・ラ行特殊,基本形,なさる
1277
+ 1276 動詞,非自立,*,*,五段・ラ行特殊,基本形,らっしゃる
1278
+ 1277 動詞,非自立,*,*,五段・ラ行特殊,基本形,下さる
1279
+ 1278 動詞,非自立,*,*,五段・ラ行特殊,未然ウ接続,なさる
1280
+ 1279 動詞,非自立,*,*,五段・ラ行特殊,未然ウ接続,らっしゃる
1281
+ 1280 動詞,非自立,*,*,五段・ラ行特殊,未然ウ接続,下さる
1282
+ 1281 動詞,非自立,*,*,五段・ラ行特殊,未然形,なさる
1283
+ 1282 動詞,非自立,*,*,五段・ラ行特殊,未然形,らっしゃる
1284
+ 1283 動詞,非自立,*,*,五段・ラ行特殊,未然形,下さる
1285
+ 1284 動詞,非自立,*,*,五段・ラ行特殊,未然特殊,なさる
1286
+ 1285 動詞,非自立,*,*,五段・ラ行特殊,未然特殊,らっしゃる
1287
+ 1286 動詞,非自立,*,*,五段・ラ行特殊,未然特殊,下さる
1288
+ 1287 動詞,非自立,*,*,五段・ラ行特殊,命令e,なさる
1289
+ 1288 動詞,非自立,*,*,五段・ラ行特殊,命令e,らっしゃる
1290
+ 1289 動詞,非自立,*,*,五段・ラ行特殊,命令e,下さる
1291
+ 1290 動詞,非自立,*,*,五段・ラ行特殊,命令i,なさる
1292
+ 1291 動詞,非自立,*,*,五段・ラ行特殊,命令i,らっしゃる
1293
+ 1292 動詞,非自立,*,*,五段・ラ行特殊,命令i,下さる
1294
+ 1293 動詞,非自立,*,*,五段・ラ行特殊,連用タ接続,なさる
1295
+ 1294 動詞,非自立,*,*,五段・ラ行特殊,連用タ接続,らっしゃる
1296
+ 1295 動詞,非自立,*,*,五段・ラ行特殊,連用タ接続,下さる
1297
+ 1296 動詞,非自立,*,*,五段・ラ行特殊,連用形,なさる
1298
+ 1297 動詞,非自立,*,*,五段・ラ行特殊,連用形,らっしゃる
1299
+ 1298 動詞,非自立,*,*,五段・ラ行特殊,連用形,下さる
1300
+ 1299 動詞,非自立,*,*,五段・ワ行ウ音便,*,*
1301
+ 1300 動詞,非自立,*,*,五段・ワ行ウ音便,仮定形,*
1302
+ 1301 動詞,非自立,*,*,五段・ワ行ウ音便,未然ウ接続,*
1303
+ 1302 動詞,非自立,*,*,五段・ワ行ウ音便,未然形,*
1304
+ 1303 動詞,非自立,*,*,五段・ワ行ウ音便,命令e,*
1305
+ 1304 動詞,非自立,*,*,五段・ワ行ウ音便,連用タ接続,*
1306
+ 1305 動詞,非自立,*,*,五段・ワ行ウ音便,連用形,*
1307
+ 1306 動詞,非自立,*,*,五段・ワ行促音便,*,*
1308
+ 1307 動詞,非自立,*,*,五段・ワ行促音便,仮定形,*
1309
+ 1308 動詞,非自立,*,*,五段・ワ行促音便,仮定形,しまう
1310
+ 1309 動詞,非自立,*,*,五段・ワ行促音便,仮定形,もらう
1311
+ 1310 動詞,非自立,*,*,五段・ワ行促音便,仮定形,合う
1312
+ 1311 動詞,非自立,*,*,五段・ワ行促音便,基本形,*
1313
+ 1312 動詞,非自立,*,*,五段・ワ行促音便,基本形,しまう
1314
+ 1313 動詞,非自立,*,*,五段・ワ行促音便,基本形,もらう
1315
+ 1314 動詞,非自立,*,*,五段・ワ行促音便,基本形,合う
1316
+ 1315 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,*
1317
+ 1316 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,しまう
1318
+ 1317 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,もらう
1319
+ 1318 動詞,非自立,*,*,五段・ワ行促音便,未然ウ接続,合う
1320
+ 1319 動詞,非自立,*,*,五段・ワ行促音便,未然形,*
1321
+ 1320 動詞,非自立,*,*,五段・ワ行促音便,未然形,しまう
1322
+ 1321 動詞,非自立,*,*,五段・ワ行促音便,未然形,もらう
1323
+ 1322 動詞,非自立,*,*,五段・ワ行促音便,未然形,合う
1324
+ 1323 動詞,非自立,*,*,五段・ワ行促音便,命令e,*
1325
+ 1324 動詞,非自立,*,*,五段・ワ行促音便,命令e,しまう
1326
+ 1325 動詞,非自立,*,*,五段・ワ行促音便,命令e,もらう
1327
+ 1326 動詞,非自立,*,*,五段・ワ行促音便,命令e,合う
1328
+ 1327 動詞,非���立,*,*,五段・ワ行促音便,連用タ接続,*
1329
+ 1328 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,しまう
1330
+ 1329 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,もらう
1331
+ 1330 動詞,非自立,*,*,五段・ワ行促音便,連用タ接続,合う
1332
+ 1331 動詞,非自立,*,*,五段・ワ行促音便,連用形,*
1333
+ 1332 動詞,非自立,*,*,五段・ワ行促音便,連用形,しまう
1334
+ 1333 動詞,非自立,*,*,五段・ワ行促音便,連用形,もらう
1335
+ 1334 動詞,非自立,*,*,五段・ワ行促音便,連用形,合う
1336
+ 1335 動詞,非自立,*,*,四段・ハ行,仮定形,*
1337
+ 1336 動詞,非自立,*,*,四段・ハ行,基本形,*
1338
+ 1337 動詞,非自立,*,*,四段・ハ行,未然形,*
1339
+ 1338 動詞,非自立,*,*,四段・ハ行,命令e,*
1340
+ 1339 動詞,非自立,*,*,四段・ハ行,連用形,*
1341
+ 1340 副詞,*,*,*,*,*,*
1342
+ 1341 副詞,一般,*,*,*,*,*
1343
+ 1342 副詞,助詞類接続,*,*,*,*,*
1344
+ 1343 名詞,サ変接続,*,*,*,*,*
1345
+ 1344 名詞,ナイ形容詞語幹,*,*,*,*,*
1346
+ 1345 名詞,一般,*,*,*,*,*
1347
+ 1346 名詞,一般,*,*,*,0,*
1348
+ 1347 名詞,形容動詞語幹,*,*,*,*,*
1349
+ 1348 名詞,固有名詞,一般,*,*,*,*
1350
+ 1349 名詞,固有名詞,人名,一般,*,*,*
1351
+ 1350 名詞,固有名詞,人名,姓,*,*,*
1352
+ 1351 名詞,固有名詞,人名,名,*,*,*
1353
+ 1352 名詞,固有名詞,組織,*,*,*,*
1354
+ 1353 名詞,固有名詞,地域,一般,*,*,*
1355
+ 1354 名詞,固有名詞,地域,国,*,*,*
1356
+ 1355 名詞,数,*,*,*,*,*
1357
+ 1356 名詞,接続詞的,*,*,*,*,*
1358
+ 1357 名詞,接尾,サ変接続,*,*,*,*
1359
+ 1358 名詞,接尾,一般,*,*,*,*
1360
+ 1359 名詞,接尾,形容動詞語幹,*,*,*,*
1361
+ 1360 名詞,接尾,助数詞,*,*,*,*
1362
+ 1361 名詞,接尾,助動詞語幹,*,*,*,*
1363
+ 1362 名詞,接尾,人名,*,*,*,*
1364
+ 1363 名詞,接尾,地域,*,*,*,*
1365
+ 1364 名詞,接尾,特殊,*,*,*,*
1366
+ 1365 名詞,接尾,副詞可能,*,*,*,*
1367
+ 1366 名詞,代名詞,一般,*,*,*,*
1368
+ 1367 名詞,代名詞,縮約,*,*,*,*
1369
+ 1368 名詞,動詞非自立的,*,*,*,*,*
1370
+ 1369 名詞,特殊,助動詞語幹,*,*,*,*
1371
+ 1370 名詞,非自立,*,*,*,*,*
1372
+ 1371 名詞,非自立,一般,*,*,*,*
1373
+ 1372 名詞,非自立,形容動詞語幹,*,*,*,*
1374
+ 1373 名詞,非自立,助動詞語幹,*,*,*,*
1375
+ 1374 名詞,非自立,副詞可能,*,*,*,*
1376
+ 1375 名詞,副詞可能,*,*,*,*,*
1377
+ 1376 連体詞,*,*,*,*,*,*
dict/unk.dic ADDED
Binary file (5.69 kB). View file
 
finetune_speaker_v2.py ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import argparse
4
+ import itertools
5
+ import math
6
+ import torch
7
+ from torch import nn, optim
8
+ from torch.nn import functional as F
9
+ from torch.utils.data import DataLoader
10
+ from torch.utils.tensorboard import SummaryWriter
11
+ import torch.multiprocessing as mp
12
+ import torch.distributed as dist
13
+ from torch.nn.parallel import DistributedDataParallel as DDP
14
+ from torch.cuda.amp import autocast, GradScaler
15
+ from tqdm import tqdm
16
+
17
+ import librosa
18
+ import logging
19
+
20
+ logging.getLogger('numba').setLevel(logging.WARNING)
21
+
22
+ import commons
23
+ import utils
24
+ from data_utils import (
25
+ TextAudioSpeakerLoader,
26
+ TextAudioSpeakerCollate,
27
+ DistributedBucketSampler
28
+ )
29
+ from models import (
30
+ SynthesizerTrn,
31
+ MultiPeriodDiscriminator,
32
+ )
33
+ from losses import (
34
+ generator_loss,
35
+ discriminator_loss,
36
+ feature_loss,
37
+ kl_loss
38
+ )
39
+ from mel_processing import mel_spectrogram_torch, spec_to_mel_torch
40
+
41
+
42
+ torch.backends.cudnn.benchmark = True
43
+ global_step = 0
44
+
45
+
46
+ def main():
47
+ """Assume Single Node Multi GPUs Training Only"""
48
+ assert torch.cuda.is_available(), "CPU training is not allowed."
49
+
50
+ n_gpus = torch.cuda.device_count()
51
+ os.environ['MASTER_ADDR'] = 'localhost'
52
+ os.environ['MASTER_PORT'] = '8000'
53
+
54
+ hps = utils.get_hparams()
55
+ mp.spawn(run, nprocs=n_gpus, args=(n_gpus, hps,))
56
+
57
+
58
+ def run(rank, n_gpus, hps):
59
+ global global_step
60
+ symbols = hps['symbols']
61
+ if rank == 0:
62
+ logger = utils.get_logger(hps.model_dir)
63
+ logger.info(hps)
64
+ utils.check_git_hash(hps.model_dir)
65
+ writer = SummaryWriter(log_dir=hps.model_dir)
66
+ writer_eval = SummaryWriter(log_dir=os.path.join(hps.model_dir, "eval"))
67
+
68
+ # Use gloo backend on Windows for Pytorch
69
+ dist.init_process_group(backend= 'gloo' if os.name == 'nt' else 'nccl', init_method='env://', world_size=n_gpus, rank=rank)
70
+ torch.manual_seed(hps.train.seed)
71
+ torch.cuda.set_device(rank)
72
+
73
+ train_dataset = TextAudioSpeakerLoader(hps.data.training_files, hps.data, symbols)
74
+ train_sampler = DistributedBucketSampler(
75
+ train_dataset,
76
+ hps.train.batch_size,
77
+ [32,300,400,500,600,700,800,900,1000],
78
+ num_replicas=n_gpus,
79
+ rank=rank,
80
+ shuffle=True)
81
+ collate_fn = TextAudioSpeakerCollate()
82
+ train_loader = DataLoader(train_dataset, num_workers=2, shuffle=False, pin_memory=True,
83
+ collate_fn=collate_fn, batch_sampler=train_sampler)
84
+ # train_loader = DataLoader(train_dataset, batch_size=hps.train.batch_size, num_workers=2, shuffle=False, pin_memory=True,
85
+ # collate_fn=collate_fn)
86
+ if rank == 0:
87
+ eval_dataset = TextAudioSpeakerLoader(hps.data.validation_files, hps.data, symbols)
88
+ eval_loader = DataLoader(eval_dataset, num_workers=0, shuffle=False,
89
+ batch_size=hps.train.batch_size, pin_memory=True,
90
+ drop_last=False, collate_fn=collate_fn)
91
+
92
+ net_g = SynthesizerTrn(
93
+ len(symbols),
94
+ hps.data.filter_length // 2 + 1,
95
+ hps.train.segment_size // hps.data.hop_length,
96
+ n_speakers=hps.data.n_speakers,
97
+ **hps.model).cuda(rank)
98
+ net_d = MultiPeriodDiscriminator(hps.model.use_spectral_norm).cuda(rank)
99
+
100
+ # load existing model
101
+ if hps.cont:
102
+ try:
103
+ _, _, _, epoch_str = utils.load_checkpoint(utils.latest_checkpoint_path(hps.model_dir, "G_latest.pth"), net_g, None)
104
+ _, _, _, epoch_str = utils.load_checkpoint(utils.latest_checkpoint_path(hps.model_dir, "D_latest.pth"), net_d, None)
105
+ global_step = (epoch_str - 1) * len(train_loader)
106
+ except:
107
+ print("Failed to find latest checkpoint, loading G_0.pth...")
108
+ if hps.train_with_pretrained_model:
109
+ print("Train with pretrained model...")
110
+ _, _, _, epoch_str = utils.load_checkpoint("./pretrained_models/G_0.pth", net_g, None)
111
+ _, _, _, epoch_str = utils.load_checkpoint("./pretrained_models/D_0.pth", net_d, None)
112
+ else:
113
+ print("Train without pretrained model...")
114
+ epoch_str = 1
115
+ global_step = 0
116
+ else:
117
+ if hps.train_with_pretrained_model:
118
+ print("Train with pretrained model...")
119
+ _, _, _, epoch_str = utils.load_checkpoint("./pretrained_models/G_0.pth", net_g, None)
120
+ _, _, _, epoch_str = utils.load_checkpoint("./pretrained_models/D_0.pth", net_d, None)
121
+ else:
122
+ print("Train without pretrained model...")
123
+ epoch_str = 1
124
+ global_step = 0
125
+ # freeze all other layers except speaker embedding
126
+ for p in net_g.parameters():
127
+ p.requires_grad = True
128
+ for p in net_d.parameters():
129
+ p.requires_grad = True
130
+ # for p in net_d.parameters():
131
+ # p.requires_grad = False
132
+ # net_g.emb_g.weight.requires_grad = True
133
+ optim_g = torch.optim.AdamW(
134
+ net_g.parameters(),
135
+ hps.train.learning_rate,
136
+ betas=hps.train.betas,
137
+ eps=hps.train.eps)
138
+ optim_d = torch.optim.AdamW(
139
+ net_d.parameters(),
140
+ hps.train.learning_rate,
141
+ betas=hps.train.betas,
142
+ eps=hps.train.eps)
143
+ # optim_d = None
144
+ net_g = DDP(net_g, device_ids=[rank])
145
+ net_d = DDP(net_d, device_ids=[rank])
146
+
147
+ scheduler_g = torch.optim.lr_scheduler.ExponentialLR(optim_g, gamma=hps.train.lr_decay)
148
+ scheduler_d = torch.optim.lr_scheduler.ExponentialLR(optim_d, gamma=hps.train.lr_decay)
149
+
150
+ scaler = GradScaler(enabled=hps.train.fp16_run)
151
+
152
+ for epoch in range(epoch_str, hps.train.epochs + 1):
153
+ if rank==0:
154
+ train_and_evaluate(rank, epoch, hps, [net_g, net_d], [optim_g, optim_d], [scheduler_g, scheduler_d], scaler, [train_loader, eval_loader], logger, [writer, writer_eval])
155
+ else:
156
+ train_and_evaluate(rank, epoch, hps, [net_g, net_d], [optim_g, optim_d], [scheduler_g, scheduler_d], scaler, [train_loader, None], None, None)
157
+ scheduler_g.step()
158
+ scheduler_d.step()
159
+
160
+
161
+ def train_and_evaluate(rank, epoch, hps, nets, optims, schedulers, scaler, loaders, logger, writers):
162
+ net_g, net_d = nets
163
+ optim_g, optim_d = optims
164
+ scheduler_g, scheduler_d = schedulers
165
+ train_loader, eval_loader = loaders
166
+ if writers is not None:
167
+ writer, writer_eval = writers
168
+
169
+ # train_loader.batch_sampler.set_epoch(epoch)
170
+ global global_step
171
+
172
+ net_g.train()
173
+ net_d.train()
174
+ for batch_idx, (x, x_lengths, spec, spec_lengths, y, y_lengths, speakers) in enumerate(tqdm(train_loader)):
175
+ x, x_lengths = x.cuda(rank, non_blocking=True), x_lengths.cuda(rank, non_blocking=True)
176
+ spec, spec_lengths = spec.cuda(rank, non_blocking=True), spec_lengths.cuda(rank, non_blocking=True)
177
+ y, y_lengths = y.cuda(rank, non_blocking=True), y_lengths.cuda(rank, non_blocking=True)
178
+ speakers = speakers.cuda(rank, non_blocking=True)
179
+
180
+ with autocast(enabled=hps.train.fp16_run):
181
+ y_hat, l_length, attn, ids_slice, x_mask, z_mask,\
182
+ (z, z_p, m_p, logs_p, m_q, logs_q) = net_g(x, x_lengths, spec, spec_lengths, speakers)
183
+
184
+ mel = spec_to_mel_torch(
185
+ spec,
186
+ hps.data.filter_length,
187
+ hps.data.n_mel_channels,
188
+ hps.data.sampling_rate,
189
+ hps.data.mel_fmin,
190
+ hps.data.mel_fmax)
191
+ y_mel = commons.slice_segments(mel, ids_slice, hps.train.segment_size // hps.data.hop_length)
192
+ y_hat_mel = mel_spectrogram_torch(
193
+ y_hat.squeeze(1),
194
+ hps.data.filter_length,
195
+ hps.data.n_mel_channels,
196
+ hps.data.sampling_rate,
197
+ hps.data.hop_length,
198
+ hps.data.win_length,
199
+ hps.data.mel_fmin,
200
+ hps.data.mel_fmax
201
+ )
202
+
203
+ y = commons.slice_segments(y, ids_slice * hps.data.hop_length, hps.train.segment_size) # slice
204
+
205
+ # Discriminator
206
+ y_d_hat_r, y_d_hat_g, _, _ = net_d(y, y_hat.detach())
207
+ with autocast(enabled=False):
208
+ loss_disc, losses_disc_r, losses_disc_g = discriminator_loss(y_d_hat_r, y_d_hat_g)
209
+ loss_disc_all = loss_disc
210
+ optim_d.zero_grad()
211
+ scaler.scale(loss_disc_all).backward()
212
+ scaler.unscale_(optim_d)
213
+ grad_norm_d = commons.clip_grad_value_(net_d.parameters(), None)
214
+ scaler.step(optim_d)
215
+
216
+ with autocast(enabled=hps.train.fp16_run):
217
+ # Generator
218
+ y_d_hat_r, y_d_hat_g, fmap_r, fmap_g = net_d(y, y_hat)
219
+ with autocast(enabled=False):
220
+ loss_dur = torch.sum(l_length.float())
221
+ loss_mel = F.l1_loss(y_mel, y_hat_mel) * hps.train.c_mel
222
+ loss_kl = kl_loss(z_p, logs_q, m_p, logs_p, z_mask) * hps.train.c_kl
223
+
224
+ loss_fm = feature_loss(fmap_r, fmap_g)
225
+ loss_gen, losses_gen = generator_loss(y_d_hat_g)
226
+ loss_gen_all = loss_gen + loss_fm + loss_mel + loss_dur + loss_kl
227
+ optim_g.zero_grad()
228
+ scaler.scale(loss_gen_all).backward()
229
+ scaler.unscale_(optim_g)
230
+ grad_norm_g = commons.clip_grad_value_(net_g.parameters(), None)
231
+ scaler.step(optim_g)
232
+ scaler.update()
233
+
234
+ if rank==0:
235
+ if global_step % hps.train.log_interval == 0:
236
+ lr = optim_g.param_groups[0]['lr']
237
+ losses = [loss_disc, loss_gen, loss_fm, loss_mel, loss_dur, loss_kl]
238
+ logger.info('Train Epoch: {} [{:.0f}%]'.format(
239
+ epoch,
240
+ 100. * batch_idx / len(train_loader)))
241
+ logger.info([x.item() for x in losses] + [global_step, lr])
242
+
243
+ scalar_dict = {"loss/g/total": loss_gen_all, "loss/d/total": loss_disc_all, "learning_rate": lr, "grad_norm_g": grad_norm_g}
244
+ scalar_dict.update({"loss/g/fm": loss_fm, "loss/g/mel": loss_mel, "loss/g/dur": loss_dur, "loss/g/kl": loss_kl})
245
+
246
+ scalar_dict.update({"loss/g/{}".format(i): v for i, v in enumerate(losses_gen)})
247
+ scalar_dict.update({"loss/d_r/{}".format(i): v for i, v in enumerate(losses_disc_r)})
248
+ scalar_dict.update({"loss/d_g/{}".format(i): v for i, v in enumerate(losses_disc_g)})
249
+ image_dict = {
250
+ "slice/mel_org": utils.plot_spectrogram_to_numpy(y_mel[0].data.cpu().numpy()),
251
+ "slice/mel_gen": utils.plot_spectrogram_to_numpy(y_hat_mel[0].data.cpu().numpy()),
252
+ "all/mel": utils.plot_spectrogram_to_numpy(mel[0].data.cpu().numpy()),
253
+ "all/attn": utils.plot_alignment_to_numpy(attn[0,0].data.cpu().numpy())
254
+ }
255
+ utils.summarize(
256
+ writer=writer,
257
+ global_step=global_step,
258
+ images=image_dict,
259
+ scalars=scalar_dict)
260
+
261
+ if global_step % hps.train.eval_interval == 0:
262
+ evaluate(hps, net_g, eval_loader, writer_eval)
263
+
264
+ utils.save_checkpoint(net_g, None, hps.train.learning_rate, epoch,
265
+ os.path.join(hps.model_dir, "G_latest.pth".format(global_step)))
266
+
267
+ utils.save_checkpoint(net_d, None, hps.train.learning_rate, epoch,
268
+ os.path.join(hps.model_dir, "D_latest.pth".format(global_step)))
269
+ if hps.preserved > 0:
270
+ utils.save_checkpoint(net_g, None, hps.train.learning_rate, epoch,
271
+ os.path.join(hps.model_dir, "G_{}.pth".format(global_step)))
272
+ utils.save_checkpoint(net_d, None, hps.train.learning_rate, epoch,
273
+ os.path.join(hps.model_dir, "D_{}.pth".format(global_step)))
274
+ old_g = utils.oldest_checkpoint_path(hps.model_dir, "G_[0-9]*.pth",
275
+ preserved=hps.preserved) # Preserve 4 (default) historical checkpoints.
276
+ old_d = utils.oldest_checkpoint_path(hps.model_dir, "D_[0-9]*.pth", preserved=hps.preserved)
277
+ if os.path.exists(old_g):
278
+ print(f"remove {old_g}")
279
+ os.remove(old_g)
280
+ if os.path.exists(old_d):
281
+ print(f"remove {old_d}")
282
+ os.remove(old_d)
283
+ global_step += 1
284
+ if epoch > hps.max_epochs:
285
+ print("Maximum epoch reached, closing training...")
286
+ exit()
287
+
288
+ if rank == 0:
289
+ logger.info('====> Epoch: {}'.format(epoch))
290
+
291
+
292
+ def evaluate(hps, generator, eval_loader, writer_eval):
293
+ generator.eval()
294
+ with torch.no_grad():
295
+ for batch_idx, (x, x_lengths, spec, spec_lengths, y, y_lengths, speakers) in enumerate(eval_loader):
296
+ x, x_lengths = x.cuda(0), x_lengths.cuda(0)
297
+ spec, spec_lengths = spec.cuda(0), spec_lengths.cuda(0)
298
+ y, y_lengths = y.cuda(0), y_lengths.cuda(0)
299
+ speakers = speakers.cuda(0)
300
+
301
+ # remove else
302
+ x = x[:1]
303
+ x_lengths = x_lengths[:1]
304
+ spec = spec[:1]
305
+ spec_lengths = spec_lengths[:1]
306
+ y = y[:1]
307
+ y_lengths = y_lengths[:1]
308
+ speakers = speakers[:1]
309
+ break
310
+ y_hat, attn, mask, *_ = generator.module.infer(x, x_lengths, speakers, max_len=1000)
311
+ y_hat_lengths = mask.sum([1,2]).long() * hps.data.hop_length
312
+
313
+ mel = spec_to_mel_torch(
314
+ spec,
315
+ hps.data.filter_length,
316
+ hps.data.n_mel_channels,
317
+ hps.data.sampling_rate,
318
+ hps.data.mel_fmin,
319
+ hps.data.mel_fmax)
320
+ y_hat_mel = mel_spectrogram_torch(
321
+ y_hat.squeeze(1).float(),
322
+ hps.data.filter_length,
323
+ hps.data.n_mel_channels,
324
+ hps.data.sampling_rate,
325
+ hps.data.hop_length,
326
+ hps.data.win_length,
327
+ hps.data.mel_fmin,
328
+ hps.data.mel_fmax
329
+ )
330
+ image_dict = {
331
+ "gen/mel": utils.plot_spectrogram_to_numpy(y_hat_mel[0].cpu().numpy())
332
+ }
333
+ audio_dict = {
334
+ "gen/audio": y_hat[0,:,:y_hat_lengths[0]]
335
+ }
336
+ if global_step == 0:
337
+ image_dict.update({"gt/mel": utils.plot_spectrogram_to_numpy(mel[0].cpu().numpy())})
338
+ audio_dict.update({"gt/audio": y[0,:,:y_lengths[0]]})
339
+
340
+ utils.summarize(
341
+ writer=writer_eval,
342
+ global_step=global_step,
343
+ images=image_dict,
344
+ audios=audio_dict,
345
+ audio_sampling_rate=hps.data.sampling_rate
346
+ )
347
+ generator.train()
348
+
349
+
350
+ if __name__ == "__main__":
351
+ main()
losses.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ from torch.nn import functional as F
3
+
4
+ import commons
5
+
6
+
7
+ def feature_loss(fmap_r, fmap_g):
8
+ loss = 0
9
+ for dr, dg in zip(fmap_r, fmap_g):
10
+ for rl, gl in zip(dr, dg):
11
+ rl = rl.float().detach()
12
+ gl = gl.float()
13
+ loss += torch.mean(torch.abs(rl - gl))
14
+
15
+ return loss * 2
16
+
17
+
18
+ def discriminator_loss(disc_real_outputs, disc_generated_outputs):
19
+ loss = 0
20
+ r_losses = []
21
+ g_losses = []
22
+ for dr, dg in zip(disc_real_outputs, disc_generated_outputs):
23
+ dr = dr.float()
24
+ dg = dg.float()
25
+ r_loss = torch.mean((1-dr)**2)
26
+ g_loss = torch.mean(dg**2)
27
+ loss += (r_loss + g_loss)
28
+ r_losses.append(r_loss.item())
29
+ g_losses.append(g_loss.item())
30
+
31
+ return loss, r_losses, g_losses
32
+
33
+
34
+ def generator_loss(disc_outputs):
35
+ loss = 0
36
+ gen_losses = []
37
+ for dg in disc_outputs:
38
+ dg = dg.float()
39
+ l = torch.mean((1-dg)**2)
40
+ gen_losses.append(l)
41
+ loss += l
42
+
43
+ return loss, gen_losses
44
+
45
+
46
+ def kl_loss(z_p, logs_q, m_p, logs_p, z_mask):
47
+ """
48
+ z_p, logs_q: [b, h, t_t]
49
+ m_p, logs_p: [b, h, t_t]
50
+ """
51
+ z_p = z_p.float()
52
+ logs_q = logs_q.float()
53
+ m_p = m_p.float()
54
+ logs_p = logs_p.float()
55
+ z_mask = z_mask.float()
56
+
57
+ kl = logs_p - logs_q - 0.5
58
+ kl += 0.5 * ((z_p - m_p)**2) * torch.exp(-2. * logs_p)
59
+ kl = torch.sum(kl * z_mask)
60
+ l = kl / torch.sum(z_mask)
61
+ return l
mel_processing.py ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import os
3
+ import random
4
+ import torch
5
+ from torch import nn
6
+ import torch.nn.functional as F
7
+ import torch.utils.data
8
+ import numpy as np
9
+ import librosa
10
+ import librosa.util as librosa_util
11
+ from librosa.util import normalize, pad_center, tiny
12
+ from scipy.signal import get_window
13
+ from scipy.io.wavfile import read
14
+ from librosa.filters import mel as librosa_mel_fn
15
+
16
+ MAX_WAV_VALUE = 32768.0
17
+
18
+
19
+ def dynamic_range_compression_torch(x, C=1, clip_val=1e-5):
20
+ """
21
+ PARAMS
22
+ ------
23
+ C: compression factor
24
+ """
25
+ return torch.log(torch.clamp(x, min=clip_val) * C)
26
+
27
+
28
+ def dynamic_range_decompression_torch(x, C=1):
29
+ """
30
+ PARAMS
31
+ ------
32
+ C: compression factor used to compress
33
+ """
34
+ return torch.exp(x) / C
35
+
36
+
37
+ def spectral_normalize_torch(magnitudes):
38
+ output = dynamic_range_compression_torch(magnitudes)
39
+ return output
40
+
41
+
42
+ def spectral_de_normalize_torch(magnitudes):
43
+ output = dynamic_range_decompression_torch(magnitudes)
44
+ return output
45
+
46
+
47
+ mel_basis = {}
48
+ hann_window = {}
49
+
50
+
51
+ def spectrogram_torch(y, n_fft, sampling_rate, hop_size, win_size, center=False):
52
+ if torch.min(y) < -1.:
53
+ print('min value is ', torch.min(y))
54
+ if torch.max(y) > 1.:
55
+ print('max value is ', torch.max(y))
56
+
57
+ global hann_window
58
+ dtype_device = str(y.dtype) + '_' + str(y.device)
59
+ wnsize_dtype_device = str(win_size) + '_' + dtype_device
60
+ if wnsize_dtype_device not in hann_window:
61
+ hann_window[wnsize_dtype_device] = torch.hann_window(win_size).to(dtype=y.dtype, device=y.device)
62
+
63
+ y = torch.nn.functional.pad(y.unsqueeze(1), (int((n_fft-hop_size)/2), int((n_fft-hop_size)/2)), mode='reflect')
64
+ y = y.squeeze(1)
65
+
66
+ spec = torch.stft(y, n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[wnsize_dtype_device],
67
+ center=center, pad_mode='reflect', normalized=False, onesided=True, return_complex=False)
68
+
69
+ spec = torch.sqrt(spec.pow(2).sum(-1) + 1e-6)
70
+ return spec
71
+
72
+
73
+ def spec_to_mel_torch(spec, n_fft, num_mels, sampling_rate, fmin, fmax):
74
+ global mel_basis
75
+ dtype_device = str(spec.dtype) + '_' + str(spec.device)
76
+ fmax_dtype_device = str(fmax) + '_' + dtype_device
77
+ if fmax_dtype_device not in mel_basis:
78
+ mel = librosa_mel_fn(sampling_rate, n_fft, num_mels, fmin, fmax)
79
+ mel_basis[fmax_dtype_device] = torch.from_numpy(mel).to(dtype=spec.dtype, device=spec.device)
80
+ spec = torch.matmul(mel_basis[fmax_dtype_device], spec)
81
+ spec = spectral_normalize_torch(spec)
82
+ return spec
83
+
84
+
85
+ def mel_spectrogram_torch(y, n_fft, num_mels, sampling_rate, hop_size, win_size, fmin, fmax, center=False):
86
+ if torch.min(y) < -1.:
87
+ print('min value is ', torch.min(y))
88
+ if torch.max(y) > 1.:
89
+ print('max value is ', torch.max(y))
90
+
91
+ global mel_basis, hann_window
92
+ dtype_device = str(y.dtype) + '_' + str(y.device)
93
+ fmax_dtype_device = str(fmax) + '_' + dtype_device
94
+ wnsize_dtype_device = str(win_size) + '_' + dtype_device
95
+ if fmax_dtype_device not in mel_basis:
96
+ mel = librosa_mel_fn(sampling_rate, n_fft, num_mels, fmin, fmax)
97
+ mel_basis[fmax_dtype_device] = torch.from_numpy(mel).to(dtype=y.dtype, device=y.device)
98
+ if wnsize_dtype_device not in hann_window:
99
+ hann_window[wnsize_dtype_device] = torch.hann_window(win_size).to(dtype=y.dtype, device=y.device)
100
+
101
+ y = torch.nn.functional.pad(y.unsqueeze(1), (int((n_fft-hop_size)/2), int((n_fft-hop_size)/2)), mode='reflect')
102
+ y = y.squeeze(1)
103
+
104
+ spec = torch.stft(y.float(), n_fft, hop_length=hop_size, win_length=win_size, window=hann_window[wnsize_dtype_device],
105
+ center=center, pad_mode='reflect', normalized=False, onesided=True, return_complex=False)
106
+
107
+ spec = torch.sqrt(spec.pow(2).sum(-1) + 1e-6)
108
+
109
+ spec = torch.matmul(mel_basis[fmax_dtype_device], spec)
110
+ spec = spectral_normalize_torch(spec)
111
+
112
+ return spec
models.py ADDED
@@ -0,0 +1,533 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import math
3
+ import torch
4
+ from torch import nn
5
+ from torch.nn import functional as F
6
+
7
+ import commons
8
+ import modules
9
+ import attentions
10
+ import monotonic_align
11
+
12
+ from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d
13
+ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
14
+ from commons import init_weights, get_padding
15
+
16
+
17
+ class StochasticDurationPredictor(nn.Module):
18
+ def __init__(self, in_channels, filter_channels, kernel_size, p_dropout, n_flows=4, gin_channels=0):
19
+ super().__init__()
20
+ filter_channels = in_channels # it needs to be removed from future version.
21
+ self.in_channels = in_channels
22
+ self.filter_channels = filter_channels
23
+ self.kernel_size = kernel_size
24
+ self.p_dropout = p_dropout
25
+ self.n_flows = n_flows
26
+ self.gin_channels = gin_channels
27
+
28
+ self.log_flow = modules.Log()
29
+ self.flows = nn.ModuleList()
30
+ self.flows.append(modules.ElementwiseAffine(2))
31
+ for i in range(n_flows):
32
+ self.flows.append(modules.ConvFlow(2, filter_channels, kernel_size, n_layers=3))
33
+ self.flows.append(modules.Flip())
34
+
35
+ self.post_pre = nn.Conv1d(1, filter_channels, 1)
36
+ self.post_proj = nn.Conv1d(filter_channels, filter_channels, 1)
37
+ self.post_convs = modules.DDSConv(filter_channels, kernel_size, n_layers=3, p_dropout=p_dropout)
38
+ self.post_flows = nn.ModuleList()
39
+ self.post_flows.append(modules.ElementwiseAffine(2))
40
+ for i in range(4):
41
+ self.post_flows.append(modules.ConvFlow(2, filter_channels, kernel_size, n_layers=3))
42
+ self.post_flows.append(modules.Flip())
43
+
44
+ self.pre = nn.Conv1d(in_channels, filter_channels, 1)
45
+ self.proj = nn.Conv1d(filter_channels, filter_channels, 1)
46
+ self.convs = modules.DDSConv(filter_channels, kernel_size, n_layers=3, p_dropout=p_dropout)
47
+ if gin_channels != 0:
48
+ self.cond = nn.Conv1d(gin_channels, filter_channels, 1)
49
+
50
+ def forward(self, x, x_mask, w=None, g=None, reverse=False, noise_scale=1.0):
51
+ x = torch.detach(x)
52
+ x = self.pre(x)
53
+ if g is not None:
54
+ g = torch.detach(g)
55
+ x = x + self.cond(g)
56
+ x = self.convs(x, x_mask)
57
+ x = self.proj(x) * x_mask
58
+
59
+ if not reverse:
60
+ flows = self.flows
61
+ assert w is not None
62
+
63
+ logdet_tot_q = 0
64
+ h_w = self.post_pre(w)
65
+ h_w = self.post_convs(h_w, x_mask)
66
+ h_w = self.post_proj(h_w) * x_mask
67
+ e_q = torch.randn(w.size(0), 2, w.size(2)).to(device=x.device, dtype=x.dtype) * x_mask
68
+ z_q = e_q
69
+ for flow in self.post_flows:
70
+ z_q, logdet_q = flow(z_q, x_mask, g=(x + h_w))
71
+ logdet_tot_q += logdet_q
72
+ z_u, z1 = torch.split(z_q, [1, 1], 1)
73
+ u = torch.sigmoid(z_u) * x_mask
74
+ z0 = (w - u) * x_mask
75
+ logdet_tot_q += torch.sum((F.logsigmoid(z_u) + F.logsigmoid(-z_u)) * x_mask, [1,2])
76
+ logq = torch.sum(-0.5 * (math.log(2*math.pi) + (e_q**2)) * x_mask, [1,2]) - logdet_tot_q
77
+
78
+ logdet_tot = 0
79
+ z0, logdet = self.log_flow(z0, x_mask)
80
+ logdet_tot += logdet
81
+ z = torch.cat([z0, z1], 1)
82
+ for flow in flows:
83
+ z, logdet = flow(z, x_mask, g=x, reverse=reverse)
84
+ logdet_tot = logdet_tot + logdet
85
+ nll = torch.sum(0.5 * (math.log(2*math.pi) + (z**2)) * x_mask, [1,2]) - logdet_tot
86
+ return nll + logq # [b]
87
+ else:
88
+ flows = list(reversed(self.flows))
89
+ flows = flows[:-2] + [flows[-1]] # remove a useless vflow
90
+ z = torch.randn(x.size(0), 2, x.size(2)).to(device=x.device, dtype=x.dtype) * noise_scale
91
+ for flow in flows:
92
+ z = flow(z, x_mask, g=x, reverse=reverse)
93
+ z0, z1 = torch.split(z, [1, 1], 1)
94
+ logw = z0
95
+ return logw
96
+
97
+
98
+ class DurationPredictor(nn.Module):
99
+ def __init__(self, in_channels, filter_channels, kernel_size, p_dropout, gin_channels=0):
100
+ super().__init__()
101
+
102
+ self.in_channels = in_channels
103
+ self.filter_channels = filter_channels
104
+ self.kernel_size = kernel_size
105
+ self.p_dropout = p_dropout
106
+ self.gin_channels = gin_channels
107
+
108
+ self.drop = nn.Dropout(p_dropout)
109
+ self.conv_1 = nn.Conv1d(in_channels, filter_channels, kernel_size, padding=kernel_size//2)
110
+ self.norm_1 = modules.LayerNorm(filter_channels)
111
+ self.conv_2 = nn.Conv1d(filter_channels, filter_channels, kernel_size, padding=kernel_size//2)
112
+ self.norm_2 = modules.LayerNorm(filter_channels)
113
+ self.proj = nn.Conv1d(filter_channels, 1, 1)
114
+
115
+ if gin_channels != 0:
116
+ self.cond = nn.Conv1d(gin_channels, in_channels, 1)
117
+
118
+ def forward(self, x, x_mask, g=None):
119
+ x = torch.detach(x)
120
+ if g is not None:
121
+ g = torch.detach(g)
122
+ x = x + self.cond(g)
123
+ x = self.conv_1(x * x_mask)
124
+ x = torch.relu(x)
125
+ x = self.norm_1(x)
126
+ x = self.drop(x)
127
+ x = self.conv_2(x * x_mask)
128
+ x = torch.relu(x)
129
+ x = self.norm_2(x)
130
+ x = self.drop(x)
131
+ x = self.proj(x * x_mask)
132
+ return x * x_mask
133
+
134
+
135
+ class TextEncoder(nn.Module):
136
+ def __init__(self,
137
+ n_vocab,
138
+ out_channels,
139
+ hidden_channels,
140
+ filter_channels,
141
+ n_heads,
142
+ n_layers,
143
+ kernel_size,
144
+ p_dropout):
145
+ super().__init__()
146
+ self.n_vocab = n_vocab
147
+ self.out_channels = out_channels
148
+ self.hidden_channels = hidden_channels
149
+ self.filter_channels = filter_channels
150
+ self.n_heads = n_heads
151
+ self.n_layers = n_layers
152
+ self.kernel_size = kernel_size
153
+ self.p_dropout = p_dropout
154
+
155
+ self.emb = nn.Embedding(n_vocab, hidden_channels)
156
+ nn.init.normal_(self.emb.weight, 0.0, hidden_channels**-0.5)
157
+
158
+ self.encoder = attentions.Encoder(
159
+ hidden_channels,
160
+ filter_channels,
161
+ n_heads,
162
+ n_layers,
163
+ kernel_size,
164
+ p_dropout)
165
+ self.proj= nn.Conv1d(hidden_channels, out_channels * 2, 1)
166
+
167
+ def forward(self, x, x_lengths):
168
+ x = self.emb(x) * math.sqrt(self.hidden_channels) # [b, t, h]
169
+ x = torch.transpose(x, 1, -1) # [b, h, t]
170
+ x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype)
171
+
172
+ x = self.encoder(x * x_mask, x_mask)
173
+ stats = self.proj(x) * x_mask
174
+
175
+ m, logs = torch.split(stats, self.out_channels, dim=1)
176
+ return x, m, logs, x_mask
177
+
178
+
179
+ class ResidualCouplingBlock(nn.Module):
180
+ def __init__(self,
181
+ channels,
182
+ hidden_channels,
183
+ kernel_size,
184
+ dilation_rate,
185
+ n_layers,
186
+ n_flows=4,
187
+ gin_channels=0):
188
+ super().__init__()
189
+ self.channels = channels
190
+ self.hidden_channels = hidden_channels
191
+ self.kernel_size = kernel_size
192
+ self.dilation_rate = dilation_rate
193
+ self.n_layers = n_layers
194
+ self.n_flows = n_flows
195
+ self.gin_channels = gin_channels
196
+
197
+ self.flows = nn.ModuleList()
198
+ for i in range(n_flows):
199
+ self.flows.append(modules.ResidualCouplingLayer(channels, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels, mean_only=True))
200
+ self.flows.append(modules.Flip())
201
+
202
+ def forward(self, x, x_mask, g=None, reverse=False):
203
+ if not reverse:
204
+ for flow in self.flows:
205
+ x, _ = flow(x, x_mask, g=g, reverse=reverse)
206
+ else:
207
+ for flow in reversed(self.flows):
208
+ x = flow(x, x_mask, g=g, reverse=reverse)
209
+ return x
210
+
211
+
212
+ class PosteriorEncoder(nn.Module):
213
+ def __init__(self,
214
+ in_channels,
215
+ out_channels,
216
+ hidden_channels,
217
+ kernel_size,
218
+ dilation_rate,
219
+ n_layers,
220
+ gin_channels=0):
221
+ super().__init__()
222
+ self.in_channels = in_channels
223
+ self.out_channels = out_channels
224
+ self.hidden_channels = hidden_channels
225
+ self.kernel_size = kernel_size
226
+ self.dilation_rate = dilation_rate
227
+ self.n_layers = n_layers
228
+ self.gin_channels = gin_channels
229
+
230
+ self.pre = nn.Conv1d(in_channels, hidden_channels, 1)
231
+ self.enc = modules.WN(hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels)
232
+ self.proj = nn.Conv1d(hidden_channels, out_channels * 2, 1)
233
+
234
+ def forward(self, x, x_lengths, g=None):
235
+ x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype)
236
+ x = self.pre(x) * x_mask
237
+ x = self.enc(x, x_mask, g=g)
238
+ stats = self.proj(x) * x_mask
239
+ m, logs = torch.split(stats, self.out_channels, dim=1)
240
+ z = (m + torch.randn_like(m) * torch.exp(logs)) * x_mask
241
+ return z, m, logs, x_mask
242
+
243
+
244
+ class Generator(torch.nn.Module):
245
+ def __init__(self, initial_channel, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=0):
246
+ super(Generator, self).__init__()
247
+ self.num_kernels = len(resblock_kernel_sizes)
248
+ self.num_upsamples = len(upsample_rates)
249
+ self.conv_pre = Conv1d(initial_channel, upsample_initial_channel, 7, 1, padding=3)
250
+ resblock = modules.ResBlock1 if resblock == '1' else modules.ResBlock2
251
+
252
+ self.ups = nn.ModuleList()
253
+ for i, (u, k) in enumerate(zip(upsample_rates, upsample_kernel_sizes)):
254
+ self.ups.append(weight_norm(
255
+ ConvTranspose1d(upsample_initial_channel//(2**i), upsample_initial_channel//(2**(i+1)),
256
+ k, u, padding=(k-u)//2)))
257
+
258
+ self.resblocks = nn.ModuleList()
259
+ for i in range(len(self.ups)):
260
+ ch = upsample_initial_channel//(2**(i+1))
261
+ for j, (k, d) in enumerate(zip(resblock_kernel_sizes, resblock_dilation_sizes)):
262
+ self.resblocks.append(resblock(ch, k, d))
263
+
264
+ self.conv_post = Conv1d(ch, 1, 7, 1, padding=3, bias=False)
265
+ self.ups.apply(init_weights)
266
+
267
+ if gin_channels != 0:
268
+ self.cond = nn.Conv1d(gin_channels, upsample_initial_channel, 1)
269
+
270
+ def forward(self, x, g=None):
271
+ x = self.conv_pre(x)
272
+ if g is not None:
273
+ x = x + self.cond(g)
274
+
275
+ for i in range(self.num_upsamples):
276
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
277
+ x = self.ups[i](x)
278
+ xs = None
279
+ for j in range(self.num_kernels):
280
+ if xs is None:
281
+ xs = self.resblocks[i*self.num_kernels+j](x)
282
+ else:
283
+ xs += self.resblocks[i*self.num_kernels+j](x)
284
+ x = xs / self.num_kernels
285
+ x = F.leaky_relu(x)
286
+ x = self.conv_post(x)
287
+ x = torch.tanh(x)
288
+
289
+ return x
290
+
291
+ def remove_weight_norm(self):
292
+ print('Removing weight norm...')
293
+ for l in self.ups:
294
+ remove_weight_norm(l)
295
+ for l in self.resblocks:
296
+ l.remove_weight_norm()
297
+
298
+
299
+ class DiscriminatorP(torch.nn.Module):
300
+ def __init__(self, period, kernel_size=5, stride=3, use_spectral_norm=False):
301
+ super(DiscriminatorP, self).__init__()
302
+ self.period = period
303
+ self.use_spectral_norm = use_spectral_norm
304
+ norm_f = weight_norm if use_spectral_norm == False else spectral_norm
305
+ self.convs = nn.ModuleList([
306
+ norm_f(Conv2d(1, 32, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
307
+ norm_f(Conv2d(32, 128, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
308
+ norm_f(Conv2d(128, 512, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
309
+ norm_f(Conv2d(512, 1024, (kernel_size, 1), (stride, 1), padding=(get_padding(kernel_size, 1), 0))),
310
+ norm_f(Conv2d(1024, 1024, (kernel_size, 1), 1, padding=(get_padding(kernel_size, 1), 0))),
311
+ ])
312
+ self.conv_post = norm_f(Conv2d(1024, 1, (3, 1), 1, padding=(1, 0)))
313
+
314
+ def forward(self, x):
315
+ fmap = []
316
+
317
+ # 1d to 2d
318
+ b, c, t = x.shape
319
+ if t % self.period != 0: # pad first
320
+ n_pad = self.period - (t % self.period)
321
+ x = F.pad(x, (0, n_pad), "reflect")
322
+ t = t + n_pad
323
+ x = x.view(b, c, t // self.period, self.period)
324
+
325
+ for l in self.convs:
326
+ x = l(x)
327
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
328
+ fmap.append(x)
329
+ x = self.conv_post(x)
330
+ fmap.append(x)
331
+ x = torch.flatten(x, 1, -1)
332
+
333
+ return x, fmap
334
+
335
+
336
+ class DiscriminatorS(torch.nn.Module):
337
+ def __init__(self, use_spectral_norm=False):
338
+ super(DiscriminatorS, self).__init__()
339
+ norm_f = weight_norm if use_spectral_norm == False else spectral_norm
340
+ self.convs = nn.ModuleList([
341
+ norm_f(Conv1d(1, 16, 15, 1, padding=7)),
342
+ norm_f(Conv1d(16, 64, 41, 4, groups=4, padding=20)),
343
+ norm_f(Conv1d(64, 256, 41, 4, groups=16, padding=20)),
344
+ norm_f(Conv1d(256, 1024, 41, 4, groups=64, padding=20)),
345
+ norm_f(Conv1d(1024, 1024, 41, 4, groups=256, padding=20)),
346
+ norm_f(Conv1d(1024, 1024, 5, 1, padding=2)),
347
+ ])
348
+ self.conv_post = norm_f(Conv1d(1024, 1, 3, 1, padding=1))
349
+
350
+ def forward(self, x):
351
+ fmap = []
352
+
353
+ for l in self.convs:
354
+ x = l(x)
355
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
356
+ fmap.append(x)
357
+ x = self.conv_post(x)
358
+ fmap.append(x)
359
+ x = torch.flatten(x, 1, -1)
360
+
361
+ return x, fmap
362
+
363
+
364
+ class MultiPeriodDiscriminator(torch.nn.Module):
365
+ def __init__(self, use_spectral_norm=False):
366
+ super(MultiPeriodDiscriminator, self).__init__()
367
+ periods = [2,3,5,7,11]
368
+
369
+ discs = [DiscriminatorS(use_spectral_norm=use_spectral_norm)]
370
+ discs = discs + [DiscriminatorP(i, use_spectral_norm=use_spectral_norm) for i in periods]
371
+ self.discriminators = nn.ModuleList(discs)
372
+
373
+ def forward(self, y, y_hat):
374
+ y_d_rs = []
375
+ y_d_gs = []
376
+ fmap_rs = []
377
+ fmap_gs = []
378
+ for i, d in enumerate(self.discriminators):
379
+ y_d_r, fmap_r = d(y)
380
+ y_d_g, fmap_g = d(y_hat)
381
+ y_d_rs.append(y_d_r)
382
+ y_d_gs.append(y_d_g)
383
+ fmap_rs.append(fmap_r)
384
+ fmap_gs.append(fmap_g)
385
+
386
+ return y_d_rs, y_d_gs, fmap_rs, fmap_gs
387
+
388
+
389
+
390
+ class SynthesizerTrn(nn.Module):
391
+ """
392
+ Synthesizer for Training
393
+ """
394
+
395
+ def __init__(self,
396
+ n_vocab,
397
+ spec_channels,
398
+ segment_size,
399
+ inter_channels,
400
+ hidden_channels,
401
+ filter_channels,
402
+ n_heads,
403
+ n_layers,
404
+ kernel_size,
405
+ p_dropout,
406
+ resblock,
407
+ resblock_kernel_sizes,
408
+ resblock_dilation_sizes,
409
+ upsample_rates,
410
+ upsample_initial_channel,
411
+ upsample_kernel_sizes,
412
+ n_speakers=0,
413
+ gin_channels=0,
414
+ use_sdp=True,
415
+ **kwargs):
416
+
417
+ super().__init__()
418
+ self.n_vocab = n_vocab
419
+ self.spec_channels = spec_channels
420
+ self.inter_channels = inter_channels
421
+ self.hidden_channels = hidden_channels
422
+ self.filter_channels = filter_channels
423
+ self.n_heads = n_heads
424
+ self.n_layers = n_layers
425
+ self.kernel_size = kernel_size
426
+ self.p_dropout = p_dropout
427
+ self.resblock = resblock
428
+ self.resblock_kernel_sizes = resblock_kernel_sizes
429
+ self.resblock_dilation_sizes = resblock_dilation_sizes
430
+ self.upsample_rates = upsample_rates
431
+ self.upsample_initial_channel = upsample_initial_channel
432
+ self.upsample_kernel_sizes = upsample_kernel_sizes
433
+ self.segment_size = segment_size
434
+ self.n_speakers = n_speakers
435
+ self.gin_channels = gin_channels
436
+
437
+ self.use_sdp = use_sdp
438
+
439
+ self.enc_p = TextEncoder(n_vocab,
440
+ inter_channels,
441
+ hidden_channels,
442
+ filter_channels,
443
+ n_heads,
444
+ n_layers,
445
+ kernel_size,
446
+ p_dropout)
447
+ self.dec = Generator(inter_channels, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=gin_channels)
448
+ self.enc_q = PosteriorEncoder(spec_channels, inter_channels, hidden_channels, 5, 1, 16, gin_channels=gin_channels)
449
+ self.flow = ResidualCouplingBlock(inter_channels, hidden_channels, 5, 1, 4, gin_channels=gin_channels)
450
+
451
+ if use_sdp:
452
+ self.dp = StochasticDurationPredictor(hidden_channels, 192, 3, 0.5, 4, gin_channels=gin_channels)
453
+ else:
454
+ self.dp = DurationPredictor(hidden_channels, 256, 3, 0.5, gin_channels=gin_channels)
455
+
456
+ if n_speakers >= 1:
457
+ self.emb_g = nn.Embedding(n_speakers, gin_channels)
458
+
459
+ def forward(self, x, x_lengths, y, y_lengths, sid=None):
460
+
461
+ x, m_p, logs_p, x_mask = self.enc_p(x, x_lengths)
462
+ if self.n_speakers > 0:
463
+ g = self.emb_g(sid).unsqueeze(-1) # [b, h, 1]
464
+ else:
465
+ g = None
466
+
467
+ z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g)
468
+ z_p = self.flow(z, y_mask, g=g)
469
+
470
+ with torch.no_grad():
471
+ # negative cross-entropy
472
+ s_p_sq_r = torch.exp(-2 * logs_p) # [b, d, t]
473
+ neg_cent1 = torch.sum(-0.5 * math.log(2 * math.pi) - logs_p, [1], keepdim=True) # [b, 1, t_s]
474
+ neg_cent2 = torch.matmul(-0.5 * (z_p ** 2).transpose(1, 2), s_p_sq_r) # [b, t_t, d] x [b, d, t_s] = [b, t_t, t_s]
475
+ neg_cent3 = torch.matmul(z_p.transpose(1, 2), (m_p * s_p_sq_r)) # [b, t_t, d] x [b, d, t_s] = [b, t_t, t_s]
476
+ neg_cent4 = torch.sum(-0.5 * (m_p ** 2) * s_p_sq_r, [1], keepdim=True) # [b, 1, t_s]
477
+ neg_cent = neg_cent1 + neg_cent2 + neg_cent3 + neg_cent4
478
+
479
+ attn_mask = torch.unsqueeze(x_mask, 2) * torch.unsqueeze(y_mask, -1)
480
+ attn = monotonic_align.maximum_path(neg_cent, attn_mask.squeeze(1)).unsqueeze(1).detach()
481
+
482
+ w = attn.sum(2)
483
+ if self.use_sdp:
484
+ l_length = self.dp(x, x_mask, w, g=g)
485
+ l_length = l_length / torch.sum(x_mask)
486
+ else:
487
+ logw_ = torch.log(w + 1e-6) * x_mask
488
+ logw = self.dp(x, x_mask, g=g)
489
+ l_length = torch.sum((logw - logw_)**2, [1,2]) / torch.sum(x_mask) # for averaging
490
+
491
+ # expand prior
492
+ m_p = torch.matmul(attn.squeeze(1), m_p.transpose(1, 2)).transpose(1, 2)
493
+ logs_p = torch.matmul(attn.squeeze(1), logs_p.transpose(1, 2)).transpose(1, 2)
494
+
495
+ z_slice, ids_slice = commons.rand_slice_segments(z, y_lengths, self.segment_size)
496
+ o = self.dec(z_slice, g=g)
497
+ return o, l_length, attn, ids_slice, x_mask, y_mask, (z, z_p, m_p, logs_p, m_q, logs_q)
498
+
499
+ def infer(self, x, x_lengths, sid=None, noise_scale=1, length_scale=1, noise_scale_w=1., max_len=None):
500
+ x, m_p, logs_p, x_mask = self.enc_p(x, x_lengths)
501
+ if self.n_speakers > 0:
502
+ g = self.emb_g(sid).unsqueeze(-1) # [b, h, 1]
503
+ else:
504
+ g = None
505
+
506
+ if self.use_sdp:
507
+ logw = self.dp(x, x_mask, g=g, reverse=True, noise_scale=noise_scale_w)
508
+ else:
509
+ logw = self.dp(x, x_mask, g=g)
510
+ w = torch.exp(logw) * x_mask * length_scale
511
+ w_ceil = torch.ceil(w)
512
+ y_lengths = torch.clamp_min(torch.sum(w_ceil, [1, 2]), 1).long()
513
+ y_mask = torch.unsqueeze(commons.sequence_mask(y_lengths, None), 1).to(x_mask.dtype)
514
+ attn_mask = torch.unsqueeze(x_mask, 2) * torch.unsqueeze(y_mask, -1)
515
+ attn = commons.generate_path(w_ceil, attn_mask)
516
+
517
+ m_p = torch.matmul(attn.squeeze(1), m_p.transpose(1, 2)).transpose(1, 2) # [b, t', t], [b, t, d] -> [b, d, t']
518
+ logs_p = torch.matmul(attn.squeeze(1), logs_p.transpose(1, 2)).transpose(1, 2) # [b, t', t], [b, t, d] -> [b, d, t']
519
+
520
+ z_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) * noise_scale
521
+ z = self.flow(z_p, y_mask, g=g, reverse=True)
522
+ o = self.dec((z * y_mask)[:,:,:max_len], g=g)
523
+ return o, attn, y_mask, (z, z_p, m_p, logs_p)
524
+
525
+ def voice_conversion(self, y, y_lengths, sid_src, sid_tgt):
526
+ assert self.n_speakers > 0, "n_speakers have to be larger than 0."
527
+ g_src = self.emb_g(sid_src).unsqueeze(-1)
528
+ g_tgt = self.emb_g(sid_tgt).unsqueeze(-1)
529
+ z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src)
530
+ z_p = self.flow(z, y_mask, g=g_src)
531
+ z_hat = self.flow(z_p, y_mask, g=g_tgt, reverse=True)
532
+ o_hat = self.dec(z_hat * y_mask, g=g_tgt)
533
+ return o_hat, y_mask, (z, z_p, z_hat)
models_infer.py ADDED
@@ -0,0 +1,402 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import math
2
+ import torch
3
+ from torch import nn
4
+ from torch.nn import functional as F
5
+
6
+ import commons
7
+ import modules
8
+ import attentions
9
+
10
+ from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d
11
+ from torch.nn.utils import weight_norm, remove_weight_norm, spectral_norm
12
+ from commons import init_weights, get_padding
13
+
14
+
15
+ class StochasticDurationPredictor(nn.Module):
16
+ def __init__(self, in_channels, filter_channels, kernel_size, p_dropout, n_flows=4, gin_channels=0):
17
+ super().__init__()
18
+ filter_channels = in_channels # it needs to be removed from future version.
19
+ self.in_channels = in_channels
20
+ self.filter_channels = filter_channels
21
+ self.kernel_size = kernel_size
22
+ self.p_dropout = p_dropout
23
+ self.n_flows = n_flows
24
+ self.gin_channels = gin_channels
25
+
26
+ self.log_flow = modules.Log()
27
+ self.flows = nn.ModuleList()
28
+ self.flows.append(modules.ElementwiseAffine(2))
29
+ for i in range(n_flows):
30
+ self.flows.append(modules.ConvFlow(2, filter_channels, kernel_size, n_layers=3))
31
+ self.flows.append(modules.Flip())
32
+
33
+ self.post_pre = nn.Conv1d(1, filter_channels, 1)
34
+ self.post_proj = nn.Conv1d(filter_channels, filter_channels, 1)
35
+ self.post_convs = modules.DDSConv(filter_channels, kernel_size, n_layers=3, p_dropout=p_dropout)
36
+ self.post_flows = nn.ModuleList()
37
+ self.post_flows.append(modules.ElementwiseAffine(2))
38
+ for i in range(4):
39
+ self.post_flows.append(modules.ConvFlow(2, filter_channels, kernel_size, n_layers=3))
40
+ self.post_flows.append(modules.Flip())
41
+
42
+ self.pre = nn.Conv1d(in_channels, filter_channels, 1)
43
+ self.proj = nn.Conv1d(filter_channels, filter_channels, 1)
44
+ self.convs = modules.DDSConv(filter_channels, kernel_size, n_layers=3, p_dropout=p_dropout)
45
+ if gin_channels != 0:
46
+ self.cond = nn.Conv1d(gin_channels, filter_channels, 1)
47
+
48
+ def forward(self, x, x_mask, w=None, g=None, reverse=False, noise_scale=1.0):
49
+ x = torch.detach(x)
50
+ x = self.pre(x)
51
+ if g is not None:
52
+ g = torch.detach(g)
53
+ x = x + self.cond(g)
54
+ x = self.convs(x, x_mask)
55
+ x = self.proj(x) * x_mask
56
+
57
+ if not reverse:
58
+ flows = self.flows
59
+ assert w is not None
60
+
61
+ logdet_tot_q = 0
62
+ h_w = self.post_pre(w)
63
+ h_w = self.post_convs(h_w, x_mask)
64
+ h_w = self.post_proj(h_w) * x_mask
65
+ e_q = torch.randn(w.size(0), 2, w.size(2)).to(device=x.device, dtype=x.dtype) * x_mask
66
+ z_q = e_q
67
+ for flow in self.post_flows:
68
+ z_q, logdet_q = flow(z_q, x_mask, g=(x + h_w))
69
+ logdet_tot_q += logdet_q
70
+ z_u, z1 = torch.split(z_q, [1, 1], 1)
71
+ u = torch.sigmoid(z_u) * x_mask
72
+ z0 = (w - u) * x_mask
73
+ logdet_tot_q += torch.sum((F.logsigmoid(z_u) + F.logsigmoid(-z_u)) * x_mask, [1,2])
74
+ logq = torch.sum(-0.5 * (math.log(2*math.pi) + (e_q**2)) * x_mask, [1,2]) - logdet_tot_q
75
+
76
+ logdet_tot = 0
77
+ z0, logdet = self.log_flow(z0, x_mask)
78
+ logdet_tot += logdet
79
+ z = torch.cat([z0, z1], 1)
80
+ for flow in flows:
81
+ z, logdet = flow(z, x_mask, g=x, reverse=reverse)
82
+ logdet_tot = logdet_tot + logdet
83
+ nll = torch.sum(0.5 * (math.log(2*math.pi) + (z**2)) * x_mask, [1,2]) - logdet_tot
84
+ return nll + logq # [b]
85
+ else:
86
+ flows = list(reversed(self.flows))
87
+ flows = flows[:-2] + [flows[-1]] # remove a useless vflow
88
+ z = torch.randn(x.size(0), 2, x.size(2)).to(device=x.device, dtype=x.dtype) * noise_scale
89
+ for flow in flows:
90
+ z = flow(z, x_mask, g=x, reverse=reverse)
91
+ z0, z1 = torch.split(z, [1, 1], 1)
92
+ logw = z0
93
+ return logw
94
+
95
+
96
+ class DurationPredictor(nn.Module):
97
+ def __init__(self, in_channels, filter_channels, kernel_size, p_dropout, gin_channels=0):
98
+ super().__init__()
99
+
100
+ self.in_channels = in_channels
101
+ self.filter_channels = filter_channels
102
+ self.kernel_size = kernel_size
103
+ self.p_dropout = p_dropout
104
+ self.gin_channels = gin_channels
105
+
106
+ self.drop = nn.Dropout(p_dropout)
107
+ self.conv_1 = nn.Conv1d(in_channels, filter_channels, kernel_size, padding=kernel_size//2)
108
+ self.norm_1 = modules.LayerNorm(filter_channels)
109
+ self.conv_2 = nn.Conv1d(filter_channels, filter_channels, kernel_size, padding=kernel_size//2)
110
+ self.norm_2 = modules.LayerNorm(filter_channels)
111
+ self.proj = nn.Conv1d(filter_channels, 1, 1)
112
+
113
+ if gin_channels != 0:
114
+ self.cond = nn.Conv1d(gin_channels, in_channels, 1)
115
+
116
+ def forward(self, x, x_mask, g=None):
117
+ x = torch.detach(x)
118
+ if g is not None:
119
+ g = torch.detach(g)
120
+ x = x + self.cond(g)
121
+ x = self.conv_1(x * x_mask)
122
+ x = torch.relu(x)
123
+ x = self.norm_1(x)
124
+ x = self.drop(x)
125
+ x = self.conv_2(x * x_mask)
126
+ x = torch.relu(x)
127
+ x = self.norm_2(x)
128
+ x = self.drop(x)
129
+ x = self.proj(x * x_mask)
130
+ return x * x_mask
131
+
132
+
133
+ class TextEncoder(nn.Module):
134
+ def __init__(self,
135
+ n_vocab,
136
+ out_channels,
137
+ hidden_channels,
138
+ filter_channels,
139
+ n_heads,
140
+ n_layers,
141
+ kernel_size,
142
+ p_dropout):
143
+ super().__init__()
144
+ self.n_vocab = n_vocab
145
+ self.out_channels = out_channels
146
+ self.hidden_channels = hidden_channels
147
+ self.filter_channels = filter_channels
148
+ self.n_heads = n_heads
149
+ self.n_layers = n_layers
150
+ self.kernel_size = kernel_size
151
+ self.p_dropout = p_dropout
152
+
153
+ self.emb = nn.Embedding(n_vocab, hidden_channels)
154
+ nn.init.normal_(self.emb.weight, 0.0, hidden_channels**-0.5)
155
+
156
+ self.encoder = attentions.Encoder(
157
+ hidden_channels,
158
+ filter_channels,
159
+ n_heads,
160
+ n_layers,
161
+ kernel_size,
162
+ p_dropout)
163
+ self.proj= nn.Conv1d(hidden_channels, out_channels * 2, 1)
164
+
165
+ def forward(self, x, x_lengths):
166
+ x = self.emb(x) * math.sqrt(self.hidden_channels) # [b, t, h]
167
+ x = torch.transpose(x, 1, -1) # [b, h, t]
168
+ x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype)
169
+
170
+ x = self.encoder(x * x_mask, x_mask)
171
+ stats = self.proj(x) * x_mask
172
+
173
+ m, logs = torch.split(stats, self.out_channels, dim=1)
174
+ return x, m, logs, x_mask
175
+
176
+
177
+ class ResidualCouplingBlock(nn.Module):
178
+ def __init__(self,
179
+ channels,
180
+ hidden_channels,
181
+ kernel_size,
182
+ dilation_rate,
183
+ n_layers,
184
+ n_flows=4,
185
+ gin_channels=0):
186
+ super().__init__()
187
+ self.channels = channels
188
+ self.hidden_channels = hidden_channels
189
+ self.kernel_size = kernel_size
190
+ self.dilation_rate = dilation_rate
191
+ self.n_layers = n_layers
192
+ self.n_flows = n_flows
193
+ self.gin_channels = gin_channels
194
+
195
+ self.flows = nn.ModuleList()
196
+ for i in range(n_flows):
197
+ self.flows.append(modules.ResidualCouplingLayer(channels, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels, mean_only=True))
198
+ self.flows.append(modules.Flip())
199
+
200
+ def forward(self, x, x_mask, g=None, reverse=False):
201
+ if not reverse:
202
+ for flow in self.flows:
203
+ x, _ = flow(x, x_mask, g=g, reverse=reverse)
204
+ else:
205
+ for flow in reversed(self.flows):
206
+ x = flow(x, x_mask, g=g, reverse=reverse)
207
+ return x
208
+
209
+
210
+ class PosteriorEncoder(nn.Module):
211
+ def __init__(self,
212
+ in_channels,
213
+ out_channels,
214
+ hidden_channels,
215
+ kernel_size,
216
+ dilation_rate,
217
+ n_layers,
218
+ gin_channels=0):
219
+ super().__init__()
220
+ self.in_channels = in_channels
221
+ self.out_channels = out_channels
222
+ self.hidden_channels = hidden_channels
223
+ self.kernel_size = kernel_size
224
+ self.dilation_rate = dilation_rate
225
+ self.n_layers = n_layers
226
+ self.gin_channels = gin_channels
227
+
228
+ self.pre = nn.Conv1d(in_channels, hidden_channels, 1)
229
+ self.enc = modules.WN(hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=gin_channels)
230
+ self.proj = nn.Conv1d(hidden_channels, out_channels * 2, 1)
231
+
232
+ def forward(self, x, x_lengths, g=None):
233
+ x_mask = torch.unsqueeze(commons.sequence_mask(x_lengths, x.size(2)), 1).to(x.dtype)
234
+ x = self.pre(x) * x_mask
235
+ x = self.enc(x, x_mask, g=g)
236
+ stats = self.proj(x) * x_mask
237
+ m, logs = torch.split(stats, self.out_channels, dim=1)
238
+ z = (m + torch.randn_like(m) * torch.exp(logs)) * x_mask
239
+ return z, m, logs, x_mask
240
+
241
+
242
+ class Generator(torch.nn.Module):
243
+ def __init__(self, initial_channel, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=0):
244
+ super(Generator, self).__init__()
245
+ self.num_kernels = len(resblock_kernel_sizes)
246
+ self.num_upsamples = len(upsample_rates)
247
+ self.conv_pre = Conv1d(initial_channel, upsample_initial_channel, 7, 1, padding=3)
248
+ resblock = modules.ResBlock1 if resblock == '1' else modules.ResBlock2
249
+
250
+ self.ups = nn.ModuleList()
251
+ for i, (u, k) in enumerate(zip(upsample_rates, upsample_kernel_sizes)):
252
+ self.ups.append(weight_norm(
253
+ ConvTranspose1d(upsample_initial_channel//(2**i), upsample_initial_channel//(2**(i+1)),
254
+ k, u, padding=(k-u)//2)))
255
+
256
+ self.resblocks = nn.ModuleList()
257
+ for i in range(len(self.ups)):
258
+ ch = upsample_initial_channel//(2**(i+1))
259
+ for j, (k, d) in enumerate(zip(resblock_kernel_sizes, resblock_dilation_sizes)):
260
+ self.resblocks.append(resblock(ch, k, d))
261
+
262
+ self.conv_post = Conv1d(ch, 1, 7, 1, padding=3, bias=False)
263
+ self.ups.apply(init_weights)
264
+
265
+ if gin_channels != 0:
266
+ self.cond = nn.Conv1d(gin_channels, upsample_initial_channel, 1)
267
+
268
+ def forward(self, x, g=None):
269
+ x = self.conv_pre(x)
270
+ if g is not None:
271
+ x = x + self.cond(g)
272
+
273
+ for i in range(self.num_upsamples):
274
+ x = F.leaky_relu(x, modules.LRELU_SLOPE)
275
+ x = self.ups[i](x)
276
+ xs = None
277
+ for j in range(self.num_kernels):
278
+ if xs is None:
279
+ xs = self.resblocks[i*self.num_kernels+j](x)
280
+ else:
281
+ xs += self.resblocks[i*self.num_kernels+j](x)
282
+ x = xs / self.num_kernels
283
+ x = F.leaky_relu(x)
284
+ x = self.conv_post(x)
285
+ x = torch.tanh(x)
286
+
287
+ return x
288
+
289
+ def remove_weight_norm(self):
290
+ print('Removing weight norm...')
291
+ for l in self.ups:
292
+ remove_weight_norm(l)
293
+ for l in self.resblocks:
294
+ l.remove_weight_norm()
295
+
296
+
297
+
298
+ class SynthesizerTrn(nn.Module):
299
+ """
300
+ Synthesizer for Training
301
+ """
302
+
303
+ def __init__(self,
304
+ n_vocab,
305
+ spec_channels,
306
+ segment_size,
307
+ inter_channels,
308
+ hidden_channels,
309
+ filter_channels,
310
+ n_heads,
311
+ n_layers,
312
+ kernel_size,
313
+ p_dropout,
314
+ resblock,
315
+ resblock_kernel_sizes,
316
+ resblock_dilation_sizes,
317
+ upsample_rates,
318
+ upsample_initial_channel,
319
+ upsample_kernel_sizes,
320
+ n_speakers=0,
321
+ gin_channels=0,
322
+ use_sdp=True,
323
+ **kwargs):
324
+
325
+ super().__init__()
326
+ self.n_vocab = n_vocab
327
+ self.spec_channels = spec_channels
328
+ self.inter_channels = inter_channels
329
+ self.hidden_channels = hidden_channels
330
+ self.filter_channels = filter_channels
331
+ self.n_heads = n_heads
332
+ self.n_layers = n_layers
333
+ self.kernel_size = kernel_size
334
+ self.p_dropout = p_dropout
335
+ self.resblock = resblock
336
+ self.resblock_kernel_sizes = resblock_kernel_sizes
337
+ self.resblock_dilation_sizes = resblock_dilation_sizes
338
+ self.upsample_rates = upsample_rates
339
+ self.upsample_initial_channel = upsample_initial_channel
340
+ self.upsample_kernel_sizes = upsample_kernel_sizes
341
+ self.segment_size = segment_size
342
+ self.n_speakers = n_speakers
343
+ self.gin_channels = gin_channels
344
+
345
+ self.use_sdp = use_sdp
346
+
347
+ self.enc_p = TextEncoder(n_vocab,
348
+ inter_channels,
349
+ hidden_channels,
350
+ filter_channels,
351
+ n_heads,
352
+ n_layers,
353
+ kernel_size,
354
+ p_dropout)
355
+ self.dec = Generator(inter_channels, resblock, resblock_kernel_sizes, resblock_dilation_sizes, upsample_rates, upsample_initial_channel, upsample_kernel_sizes, gin_channels=gin_channels)
356
+ self.enc_q = PosteriorEncoder(spec_channels, inter_channels, hidden_channels, 5, 1, 16, gin_channels=gin_channels)
357
+ self.flow = ResidualCouplingBlock(inter_channels, hidden_channels, 5, 1, 4, gin_channels=gin_channels)
358
+
359
+ if use_sdp:
360
+ self.dp = StochasticDurationPredictor(hidden_channels, 192, 3, 0.5, 4, gin_channels=gin_channels)
361
+ else:
362
+ self.dp = DurationPredictor(hidden_channels, 256, 3, 0.5, gin_channels=gin_channels)
363
+
364
+ if n_speakers > 1:
365
+ self.emb_g = nn.Embedding(n_speakers, gin_channels)
366
+
367
+ def infer(self, x, x_lengths, sid=None, noise_scale=1, length_scale=1, noise_scale_w=1., max_len=None):
368
+ x, m_p, logs_p, x_mask = self.enc_p(x, x_lengths)
369
+ if self.n_speakers > 0:
370
+ g = self.emb_g(sid).unsqueeze(-1) # [b, h, 1]
371
+ else:
372
+ g = None
373
+
374
+ if self.use_sdp:
375
+ logw = self.dp(x, x_mask, g=g, reverse=True, noise_scale=noise_scale_w)
376
+ else:
377
+ logw = self.dp(x, x_mask, g=g)
378
+ w = torch.exp(logw) * x_mask * length_scale
379
+ w_ceil = torch.ceil(w)
380
+ y_lengths = torch.clamp_min(torch.sum(w_ceil, [1, 2]), 1).long()
381
+ y_mask = torch.unsqueeze(commons.sequence_mask(y_lengths, None), 1).to(x_mask.dtype)
382
+ attn_mask = torch.unsqueeze(x_mask, 2) * torch.unsqueeze(y_mask, -1)
383
+ attn = commons.generate_path(w_ceil, attn_mask)
384
+
385
+ m_p = torch.matmul(attn.squeeze(1), m_p.transpose(1, 2)).transpose(1, 2) # [b, t', t], [b, t, d] -> [b, d, t']
386
+ logs_p = torch.matmul(attn.squeeze(1), logs_p.transpose(1, 2)).transpose(1, 2) # [b, t', t], [b, t, d] -> [b, d, t']
387
+
388
+ z_p = m_p + torch.randn_like(m_p) * torch.exp(logs_p) * noise_scale
389
+ z = self.flow(z_p, y_mask, g=g, reverse=True)
390
+ o = self.dec((z * y_mask)[:,:,:max_len], g=g)
391
+ return o, attn, y_mask, (z, z_p, m_p, logs_p)
392
+
393
+ def voice_conversion(self, y, y_lengths, sid_src, sid_tgt):
394
+ assert self.n_speakers > 0, "n_speakers have to be larger than 0."
395
+ g_src = self.emb_g(sid_src).unsqueeze(-1)
396
+ g_tgt = self.emb_g(sid_tgt).unsqueeze(-1)
397
+ z, m_q, logs_q, y_mask = self.enc_q(y, y_lengths, g=g_src)
398
+ z_p = self.flow(z, y_mask, g=g_src)
399
+ z_hat = self.flow(z_p, y_mask, g=g_tgt, reverse=True)
400
+ o_hat = self.dec(z_hat * y_mask, g=g_tgt)
401
+ return o_hat, y_mask, (z, z_p, z_hat)
402
+
modules.py ADDED
@@ -0,0 +1,390 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import copy
2
+ import math
3
+ import numpy as np
4
+ import scipy
5
+ import torch
6
+ from torch import nn
7
+ from torch.nn import functional as F
8
+
9
+ from torch.nn import Conv1d, ConvTranspose1d, AvgPool1d, Conv2d
10
+ from torch.nn.utils import weight_norm, remove_weight_norm
11
+
12
+ import commons
13
+ from commons import init_weights, get_padding
14
+ from transforms import piecewise_rational_quadratic_transform
15
+
16
+
17
+ LRELU_SLOPE = 0.1
18
+
19
+
20
+ class LayerNorm(nn.Module):
21
+ def __init__(self, channels, eps=1e-5):
22
+ super().__init__()
23
+ self.channels = channels
24
+ self.eps = eps
25
+
26
+ self.gamma = nn.Parameter(torch.ones(channels))
27
+ self.beta = nn.Parameter(torch.zeros(channels))
28
+
29
+ def forward(self, x):
30
+ x = x.transpose(1, -1)
31
+ x = F.layer_norm(x, (self.channels,), self.gamma, self.beta, self.eps)
32
+ return x.transpose(1, -1)
33
+
34
+
35
+ class ConvReluNorm(nn.Module):
36
+ def __init__(self, in_channels, hidden_channels, out_channels, kernel_size, n_layers, p_dropout):
37
+ super().__init__()
38
+ self.in_channels = in_channels
39
+ self.hidden_channels = hidden_channels
40
+ self.out_channels = out_channels
41
+ self.kernel_size = kernel_size
42
+ self.n_layers = n_layers
43
+ self.p_dropout = p_dropout
44
+ assert n_layers > 1, "Number of layers should be larger than 0."
45
+
46
+ self.conv_layers = nn.ModuleList()
47
+ self.norm_layers = nn.ModuleList()
48
+ self.conv_layers.append(nn.Conv1d(in_channels, hidden_channels, kernel_size, padding=kernel_size//2))
49
+ self.norm_layers.append(LayerNorm(hidden_channels))
50
+ self.relu_drop = nn.Sequential(
51
+ nn.ReLU(),
52
+ nn.Dropout(p_dropout))
53
+ for _ in range(n_layers-1):
54
+ self.conv_layers.append(nn.Conv1d(hidden_channels, hidden_channels, kernel_size, padding=kernel_size//2))
55
+ self.norm_layers.append(LayerNorm(hidden_channels))
56
+ self.proj = nn.Conv1d(hidden_channels, out_channels, 1)
57
+ self.proj.weight.data.zero_()
58
+ self.proj.bias.data.zero_()
59
+
60
+ def forward(self, x, x_mask):
61
+ x_org = x
62
+ for i in range(self.n_layers):
63
+ x = self.conv_layers[i](x * x_mask)
64
+ x = self.norm_layers[i](x)
65
+ x = self.relu_drop(x)
66
+ x = x_org + self.proj(x)
67
+ return x * x_mask
68
+
69
+
70
+ class DDSConv(nn.Module):
71
+ """
72
+ Dialted and Depth-Separable Convolution
73
+ """
74
+ def __init__(self, channels, kernel_size, n_layers, p_dropout=0.):
75
+ super().__init__()
76
+ self.channels = channels
77
+ self.kernel_size = kernel_size
78
+ self.n_layers = n_layers
79
+ self.p_dropout = p_dropout
80
+
81
+ self.drop = nn.Dropout(p_dropout)
82
+ self.convs_sep = nn.ModuleList()
83
+ self.convs_1x1 = nn.ModuleList()
84
+ self.norms_1 = nn.ModuleList()
85
+ self.norms_2 = nn.ModuleList()
86
+ for i in range(n_layers):
87
+ dilation = kernel_size ** i
88
+ padding = (kernel_size * dilation - dilation) // 2
89
+ self.convs_sep.append(nn.Conv1d(channels, channels, kernel_size,
90
+ groups=channels, dilation=dilation, padding=padding
91
+ ))
92
+ self.convs_1x1.append(nn.Conv1d(channels, channels, 1))
93
+ self.norms_1.append(LayerNorm(channels))
94
+ self.norms_2.append(LayerNorm(channels))
95
+
96
+ def forward(self, x, x_mask, g=None):
97
+ if g is not None:
98
+ x = x + g
99
+ for i in range(self.n_layers):
100
+ y = self.convs_sep[i](x * x_mask)
101
+ y = self.norms_1[i](y)
102
+ y = F.gelu(y)
103
+ y = self.convs_1x1[i](y)
104
+ y = self.norms_2[i](y)
105
+ y = F.gelu(y)
106
+ y = self.drop(y)
107
+ x = x + y
108
+ return x * x_mask
109
+
110
+
111
+ class WN(torch.nn.Module):
112
+ def __init__(self, hidden_channels, kernel_size, dilation_rate, n_layers, gin_channels=0, p_dropout=0):
113
+ super(WN, self).__init__()
114
+ assert(kernel_size % 2 == 1)
115
+ self.hidden_channels =hidden_channels
116
+ self.kernel_size = kernel_size,
117
+ self.dilation_rate = dilation_rate
118
+ self.n_layers = n_layers
119
+ self.gin_channels = gin_channels
120
+ self.p_dropout = p_dropout
121
+
122
+ self.in_layers = torch.nn.ModuleList()
123
+ self.res_skip_layers = torch.nn.ModuleList()
124
+ self.drop = nn.Dropout(p_dropout)
125
+
126
+ if gin_channels != 0:
127
+ cond_layer = torch.nn.Conv1d(gin_channels, 2*hidden_channels*n_layers, 1)
128
+ self.cond_layer = torch.nn.utils.weight_norm(cond_layer, name='weight')
129
+
130
+ for i in range(n_layers):
131
+ dilation = dilation_rate ** i
132
+ padding = int((kernel_size * dilation - dilation) / 2)
133
+ in_layer = torch.nn.Conv1d(hidden_channels, 2*hidden_channels, kernel_size,
134
+ dilation=dilation, padding=padding)
135
+ in_layer = torch.nn.utils.weight_norm(in_layer, name='weight')
136
+ self.in_layers.append(in_layer)
137
+
138
+ # last one is not necessary
139
+ if i < n_layers - 1:
140
+ res_skip_channels = 2 * hidden_channels
141
+ else:
142
+ res_skip_channels = hidden_channels
143
+
144
+ res_skip_layer = torch.nn.Conv1d(hidden_channels, res_skip_channels, 1)
145
+ res_skip_layer = torch.nn.utils.weight_norm(res_skip_layer, name='weight')
146
+ self.res_skip_layers.append(res_skip_layer)
147
+
148
+ def forward(self, x, x_mask, g=None, **kwargs):
149
+ output = torch.zeros_like(x)
150
+ n_channels_tensor = torch.IntTensor([self.hidden_channels])
151
+
152
+ if g is not None:
153
+ g = self.cond_layer(g)
154
+
155
+ for i in range(self.n_layers):
156
+ x_in = self.in_layers[i](x)
157
+ if g is not None:
158
+ cond_offset = i * 2 * self.hidden_channels
159
+ g_l = g[:,cond_offset:cond_offset+2*self.hidden_channels,:]
160
+ else:
161
+ g_l = torch.zeros_like(x_in)
162
+
163
+ acts = commons.fused_add_tanh_sigmoid_multiply(
164
+ x_in,
165
+ g_l,
166
+ n_channels_tensor)
167
+ acts = self.drop(acts)
168
+
169
+ res_skip_acts = self.res_skip_layers[i](acts)
170
+ if i < self.n_layers - 1:
171
+ res_acts = res_skip_acts[:,:self.hidden_channels,:]
172
+ x = (x + res_acts) * x_mask
173
+ output = output + res_skip_acts[:,self.hidden_channels:,:]
174
+ else:
175
+ output = output + res_skip_acts
176
+ return output * x_mask
177
+
178
+ def remove_weight_norm(self):
179
+ if self.gin_channels != 0:
180
+ torch.nn.utils.remove_weight_norm(self.cond_layer)
181
+ for l in self.in_layers:
182
+ torch.nn.utils.remove_weight_norm(l)
183
+ for l in self.res_skip_layers:
184
+ torch.nn.utils.remove_weight_norm(l)
185
+
186
+
187
+ class ResBlock1(torch.nn.Module):
188
+ def __init__(self, channels, kernel_size=3, dilation=(1, 3, 5)):
189
+ super(ResBlock1, self).__init__()
190
+ self.convs1 = nn.ModuleList([
191
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0],
192
+ padding=get_padding(kernel_size, dilation[0]))),
193
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1],
194
+ padding=get_padding(kernel_size, dilation[1]))),
195
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[2],
196
+ padding=get_padding(kernel_size, dilation[2])))
197
+ ])
198
+ self.convs1.apply(init_weights)
199
+
200
+ self.convs2 = nn.ModuleList([
201
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
202
+ padding=get_padding(kernel_size, 1))),
203
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
204
+ padding=get_padding(kernel_size, 1))),
205
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=1,
206
+ padding=get_padding(kernel_size, 1)))
207
+ ])
208
+ self.convs2.apply(init_weights)
209
+
210
+ def forward(self, x, x_mask=None):
211
+ for c1, c2 in zip(self.convs1, self.convs2):
212
+ xt = F.leaky_relu(x, LRELU_SLOPE)
213
+ if x_mask is not None:
214
+ xt = xt * x_mask
215
+ xt = c1(xt)
216
+ xt = F.leaky_relu(xt, LRELU_SLOPE)
217
+ if x_mask is not None:
218
+ xt = xt * x_mask
219
+ xt = c2(xt)
220
+ x = xt + x
221
+ if x_mask is not None:
222
+ x = x * x_mask
223
+ return x
224
+
225
+ def remove_weight_norm(self):
226
+ for l in self.convs1:
227
+ remove_weight_norm(l)
228
+ for l in self.convs2:
229
+ remove_weight_norm(l)
230
+
231
+
232
+ class ResBlock2(torch.nn.Module):
233
+ def __init__(self, channels, kernel_size=3, dilation=(1, 3)):
234
+ super(ResBlock2, self).__init__()
235
+ self.convs = nn.ModuleList([
236
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[0],
237
+ padding=get_padding(kernel_size, dilation[0]))),
238
+ weight_norm(Conv1d(channels, channels, kernel_size, 1, dilation=dilation[1],
239
+ padding=get_padding(kernel_size, dilation[1])))
240
+ ])
241
+ self.convs.apply(init_weights)
242
+
243
+ def forward(self, x, x_mask=None):
244
+ for c in self.convs:
245
+ xt = F.leaky_relu(x, LRELU_SLOPE)
246
+ if x_mask is not None:
247
+ xt = xt * x_mask
248
+ xt = c(xt)
249
+ x = xt + x
250
+ if x_mask is not None:
251
+ x = x * x_mask
252
+ return x
253
+
254
+ def remove_weight_norm(self):
255
+ for l in self.convs:
256
+ remove_weight_norm(l)
257
+
258
+
259
+ class Log(nn.Module):
260
+ def forward(self, x, x_mask, reverse=False, **kwargs):
261
+ if not reverse:
262
+ y = torch.log(torch.clamp_min(x, 1e-5)) * x_mask
263
+ logdet = torch.sum(-y, [1, 2])
264
+ return y, logdet
265
+ else:
266
+ x = torch.exp(x) * x_mask
267
+ return x
268
+
269
+
270
+ class Flip(nn.Module):
271
+ def forward(self, x, *args, reverse=False, **kwargs):
272
+ x = torch.flip(x, [1])
273
+ if not reverse:
274
+ logdet = torch.zeros(x.size(0)).to(dtype=x.dtype, device=x.device)
275
+ return x, logdet
276
+ else:
277
+ return x
278
+
279
+
280
+ class ElementwiseAffine(nn.Module):
281
+ def __init__(self, channels):
282
+ super().__init__()
283
+ self.channels = channels
284
+ self.m = nn.Parameter(torch.zeros(channels,1))
285
+ self.logs = nn.Parameter(torch.zeros(channels,1))
286
+
287
+ def forward(self, x, x_mask, reverse=False, **kwargs):
288
+ if not reverse:
289
+ y = self.m + torch.exp(self.logs) * x
290
+ y = y * x_mask
291
+ logdet = torch.sum(self.logs * x_mask, [1,2])
292
+ return y, logdet
293
+ else:
294
+ x = (x - self.m) * torch.exp(-self.logs) * x_mask
295
+ return x
296
+
297
+
298
+ class ResidualCouplingLayer(nn.Module):
299
+ def __init__(self,
300
+ channels,
301
+ hidden_channels,
302
+ kernel_size,
303
+ dilation_rate,
304
+ n_layers,
305
+ p_dropout=0,
306
+ gin_channels=0,
307
+ mean_only=False):
308
+ assert channels % 2 == 0, "channels should be divisible by 2"
309
+ super().__init__()
310
+ self.channels = channels
311
+ self.hidden_channels = hidden_channels
312
+ self.kernel_size = kernel_size
313
+ self.dilation_rate = dilation_rate
314
+ self.n_layers = n_layers
315
+ self.half_channels = channels // 2
316
+ self.mean_only = mean_only
317
+
318
+ self.pre = nn.Conv1d(self.half_channels, hidden_channels, 1)
319
+ self.enc = WN(hidden_channels, kernel_size, dilation_rate, n_layers, p_dropout=p_dropout, gin_channels=gin_channels)
320
+ self.post = nn.Conv1d(hidden_channels, self.half_channels * (2 - mean_only), 1)
321
+ self.post.weight.data.zero_()
322
+ self.post.bias.data.zero_()
323
+
324
+ def forward(self, x, x_mask, g=None, reverse=False):
325
+ x0, x1 = torch.split(x, [self.half_channels]*2, 1)
326
+ h = self.pre(x0) * x_mask
327
+ h = self.enc(h, x_mask, g=g)
328
+ stats = self.post(h) * x_mask
329
+ if not self.mean_only:
330
+ m, logs = torch.split(stats, [self.half_channels]*2, 1)
331
+ else:
332
+ m = stats
333
+ logs = torch.zeros_like(m)
334
+
335
+ if not reverse:
336
+ x1 = m + x1 * torch.exp(logs) * x_mask
337
+ x = torch.cat([x0, x1], 1)
338
+ logdet = torch.sum(logs, [1,2])
339
+ return x, logdet
340
+ else:
341
+ x1 = (x1 - m) * torch.exp(-logs) * x_mask
342
+ x = torch.cat([x0, x1], 1)
343
+ return x
344
+
345
+
346
+ class ConvFlow(nn.Module):
347
+ def __init__(self, in_channels, filter_channels, kernel_size, n_layers, num_bins=10, tail_bound=5.0):
348
+ super().__init__()
349
+ self.in_channels = in_channels
350
+ self.filter_channels = filter_channels
351
+ self.kernel_size = kernel_size
352
+ self.n_layers = n_layers
353
+ self.num_bins = num_bins
354
+ self.tail_bound = tail_bound
355
+ self.half_channels = in_channels // 2
356
+
357
+ self.pre = nn.Conv1d(self.half_channels, filter_channels, 1)
358
+ self.convs = DDSConv(filter_channels, kernel_size, n_layers, p_dropout=0.)
359
+ self.proj = nn.Conv1d(filter_channels, self.half_channels * (num_bins * 3 - 1), 1)
360
+ self.proj.weight.data.zero_()
361
+ self.proj.bias.data.zero_()
362
+
363
+ def forward(self, x, x_mask, g=None, reverse=False):
364
+ x0, x1 = torch.split(x, [self.half_channels]*2, 1)
365
+ h = self.pre(x0)
366
+ h = self.convs(h, x_mask, g=g)
367
+ h = self.proj(h) * x_mask
368
+
369
+ b, c, t = x0.shape
370
+ h = h.reshape(b, c, -1, t).permute(0, 1, 3, 2) # [b, cx?, t] -> [b, c, t, ?]
371
+
372
+ unnormalized_widths = h[..., :self.num_bins] / math.sqrt(self.filter_channels)
373
+ unnormalized_heights = h[..., self.num_bins:2*self.num_bins] / math.sqrt(self.filter_channels)
374
+ unnormalized_derivatives = h[..., 2 * self.num_bins:]
375
+
376
+ x1, logabsdet = piecewise_rational_quadratic_transform(x1,
377
+ unnormalized_widths,
378
+ unnormalized_heights,
379
+ unnormalized_derivatives,
380
+ inverse=reverse,
381
+ tails='linear',
382
+ tail_bound=self.tail_bound
383
+ )
384
+
385
+ x = torch.cat([x0, x1], 1) * x_mask
386
+ logdet = torch.sum(logabsdet * x_mask, [1,2])
387
+ if not reverse:
388
+ return x, logdet
389
+ else:
390
+ return x
monotonic_align/__init__.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ import torch
3
+ from .monotonic_align.core import maximum_path_c
4
+
5
+
6
+ def maximum_path(neg_cent, mask):
7
+ """ Cython optimized version.
8
+ neg_cent: [b, t_t, t_s]
9
+ mask: [b, t_t, t_s]
10
+ """
11
+ device = neg_cent.device
12
+ dtype = neg_cent.dtype
13
+ neg_cent = neg_cent.data.cpu().numpy().astype(np.float32)
14
+ path = np.zeros(neg_cent.shape, dtype=np.int32)
15
+
16
+ t_t_max = mask.sum(1)[:, 0].data.cpu().numpy().astype(np.int32)
17
+ t_s_max = mask.sum(2)[:, 0].data.cpu().numpy().astype(np.int32)
18
+ maximum_path_c(path, neg_cent, t_t_max, t_s_max)
19
+ return torch.from_numpy(path).to(device=device, dtype=dtype)
monotonic_align/build/lib.linux-x86_64-cpython-310/monotonic_align/core.cpython-310-x86_64-linux-gnu.so ADDED
Binary file (173 kB). View file
 
monotonic_align/build/lib.linux-x86_64-cpython-311/monotonic_align/core.cpython-311-x86_64-linux-gnu.so ADDED
Binary file (181 kB). View file
 
monotonic_align/build/temp.linux-x86_64-cpython-310/core.o ADDED
Binary file (230 kB). View file
 
monotonic_align/build/temp.linux-x86_64-cpython-311/core.o ADDED
Binary file (246 kB). View file
 
monotonic_align/core.c ADDED
The diff for this file is too large to render. See raw diff
 
monotonic_align/core.pyx ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ cimport cython
2
+ from cython.parallel import prange
3
+
4
+
5
+ @cython.boundscheck(False)
6
+ @cython.wraparound(False)
7
+ cdef void maximum_path_each(int[:,::1] path, float[:,::1] value, int t_y, int t_x, float max_neg_val=-1e9) nogil:
8
+ cdef int x
9
+ cdef int y
10
+ cdef float v_prev
11
+ cdef float v_cur
12
+ cdef float tmp
13
+ cdef int index = t_x - 1
14
+
15
+ for y in range(t_y):
16
+ for x in range(max(0, t_x + y - t_y), min(t_x, y + 1)):
17
+ if x == y:
18
+ v_cur = max_neg_val
19
+ else:
20
+ v_cur = value[y-1, x]
21
+ if x == 0:
22
+ if y == 0:
23
+ v_prev = 0.
24
+ else:
25
+ v_prev = max_neg_val
26
+ else:
27
+ v_prev = value[y-1, x-1]
28
+ value[y, x] += max(v_prev, v_cur)
29
+
30
+ for y in range(t_y - 1, -1, -1):
31
+ path[y, index] = 1
32
+ if index != 0 and (index == y or value[y-1, index] < value[y-1, index-1]):
33
+ index = index - 1
34
+
35
+
36
+ @cython.boundscheck(False)
37
+ @cython.wraparound(False)
38
+ cpdef void maximum_path_c(int[:,:,::1] paths, float[:,:,::1] values, int[::1] t_ys, int[::1] t_xs) nogil:
39
+ cdef int b = paths.shape[0]
40
+ cdef int i
41
+ for i in prange(b, nogil=True):
42
+ maximum_path_each(paths[i], values[i], t_ys[i], t_xs[i])
monotonic_align/monotonic_align/core.cpython-310-x86_64-linux-gnu.so ADDED
Binary file (173 kB). View file
 
monotonic_align/monotonic_align/core.cpython-311-x86_64-linux-gnu.so ADDED
Binary file (181 kB). View file
 
monotonic_align/setup.py ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ from distutils.core import setup
2
+ from Cython.Build import cythonize
3
+ import numpy
4
+
5
+ setup(
6
+ name = 'monotonic_align',
7
+ ext_modules = cythonize("core.pyx"),
8
+ include_dirs=[numpy.get_include()]
9
+ )
preprocess_v2.py ADDED
@@ -0,0 +1,153 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import argparse
3
+ import json
4
+ if __name__ == "__main__":
5
+ parser = argparse.ArgumentParser()
6
+ parser.add_argument("--add_auxiliary_data", type=bool, help="Whether to add extra data as fine-tuning helper")
7
+ parser.add_argument("--languages", default="CJE")
8
+ args = parser.parse_args()
9
+ if args.languages == "CJE":
10
+ langs = ["[ZH]", "[JA]", "[EN]"]
11
+ elif args.languages == "CJ":
12
+ langs = ["[ZH]", "[JA]"]
13
+ elif args.languages == "C":
14
+ langs = ["[ZH]"]
15
+ elif args.languages == "J":
16
+ langs = ["[JA]"]
17
+ new_annos = []
18
+ # Source 1: transcribed short audios
19
+ if os.path.exists("short_character_anno.txt"):
20
+ with open("short_character_anno.txt", 'r', encoding='utf-8') as f:
21
+ short_character_anno = f.readlines()
22
+ new_annos += short_character_anno
23
+ # Source 2: transcribed long audio segments
24
+ if os.path.exists("./long_character_anno.txt"):
25
+ with open("./long_character_anno.txt", 'r', encoding='utf-8') as f:
26
+ long_character_anno = f.readlines()
27
+ new_annos += long_character_anno
28
+
29
+ # Get all speaker names
30
+ speakers = []
31
+ for line in new_annos:
32
+ path, speaker, text = line.split("|")
33
+ if speaker not in speakers:
34
+ speakers.append(speaker)
35
+ assert (len(speakers) != 0), "No audio file found. Please check your uploaded file structure."
36
+ # Source 3 (Optional): sampled audios as extra training helpers
37
+ if args.add_auxiliary_data:
38
+ with open("./sampled_audio4ft.txt", 'r', encoding='utf-8') as f:
39
+ old_annos = f.readlines()
40
+ # filter old_annos according to supported languages
41
+ filtered_old_annos = []
42
+ for line in old_annos:
43
+ for lang in langs:
44
+ if lang in line:
45
+ filtered_old_annos.append(line)
46
+ old_annos = filtered_old_annos
47
+ for line in old_annos:
48
+ path, speaker, text = line.split("|")
49
+ if speaker not in speakers:
50
+ speakers.append(speaker)
51
+ num_old_voices = len(old_annos)
52
+ num_new_voices = len(new_annos)
53
+ # STEP 1: balance number of new & old voices
54
+ cc_duplicate = num_old_voices // num_new_voices
55
+ if cc_duplicate == 0:
56
+ cc_duplicate = 1
57
+
58
+
59
+ # STEP 2: modify config file
60
+ with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f:
61
+ hps = json.load(f)
62
+
63
+ # assign ids to new speakers
64
+ speaker2id = {}
65
+ for i, speaker in enumerate(speakers):
66
+ speaker2id[speaker] = i
67
+ # modify n_speakers
68
+ hps['data']["n_speakers"] = len(speakers)
69
+ # overwrite speaker names
70
+ hps['speakers'] = speaker2id
71
+ hps['train']['log_interval'] = 10
72
+ hps['train']['eval_interval'] = 100
73
+ hps['train']['batch_size'] = 16
74
+ hps['data']['training_files'] = "final_annotation_train.txt"
75
+ hps['data']['validation_files'] = "final_annotation_val.txt"
76
+ # save modified config
77
+ with open("./configs/modified_finetune_speaker.json", 'w', encoding='utf-8') as f:
78
+ json.dump(hps, f, indent=2)
79
+
80
+ # STEP 3: clean annotations, replace speaker names with assigned speaker IDs
81
+ import text
82
+ cleaned_new_annos = []
83
+ for i, line in enumerate(new_annos):
84
+ path, speaker, txt = line.split("|")
85
+ if len(txt) > 150:
86
+ continue
87
+ cleaned_text = text._clean_text(txt, hps['data']['text_cleaners'])
88
+ cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
89
+ cleaned_new_annos.append(path + "|" + str(speaker2id[speaker]) + "|" + cleaned_text)
90
+ cleaned_old_annos = []
91
+ for i, line in enumerate(old_annos):
92
+ path, speaker, txt = line.split("|")
93
+ if len(txt) > 150:
94
+ continue
95
+ cleaned_text = text._clean_text(txt, hps['data']['text_cleaners'])
96
+ cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
97
+ cleaned_old_annos.append(path + "|" + str(speaker2id[speaker]) + "|" + cleaned_text)
98
+ # merge with old annotation
99
+ final_annos = cleaned_old_annos + cc_duplicate * cleaned_new_annos
100
+ # save annotation file
101
+ with open("./final_annotation_train.txt", 'w', encoding='utf-8') as f:
102
+ for line in final_annos:
103
+ f.write(line)
104
+ # save annotation file for validation
105
+ with open("./final_annotation_val.txt", 'w', encoding='utf-8') as f:
106
+ for line in cleaned_new_annos:
107
+ f.write(line)
108
+ print("finished")
109
+ else:
110
+ # Do not add extra helper data
111
+ # STEP 1: modify config file
112
+ with open("./configs/amitaro_jp_base.json", 'r', encoding='utf-8') as f:
113
+ hps = json.load(f)
114
+
115
+ # assign ids to new speakers
116
+ speaker2id = {}
117
+ for i, speaker in enumerate(speakers):
118
+ speaker2id[speaker] = i
119
+ # modify n_speakers
120
+ hps['data']["n_speakers"] = len(speakers)
121
+ # overwrite speaker names
122
+ hps['speakers'] = speaker2id
123
+ hps['train']['log_interval'] = 10
124
+ hps['train']['eval_interval'] = 100
125
+ hps['train']['batch_size'] = 16
126
+ hps['data']['training_files'] = "final_annotation_train.txt"
127
+ hps['data']['validation_files'] = "final_annotation_val.txt"
128
+ # save modified config
129
+ with open("./configs/modified_finetune_speaker.json", 'w', encoding='utf-8') as f:
130
+ json.dump(hps, f, indent=2)
131
+
132
+ # STEP 2: clean annotations, replace speaker names with assigned speaker IDs
133
+ import text
134
+
135
+ cleaned_new_annos = []
136
+ for i, line in enumerate(new_annos):
137
+ path, speaker, txt = line.split("|")
138
+ if len(txt) > 150:
139
+ continue
140
+ cleaned_text = text._clean_text(txt, hps['data']['text_cleaners']).replace("[ZH]", "")
141
+ cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
142
+ cleaned_new_annos.append(path + "|" + str(speaker2id[speaker]) + "|" + cleaned_text)
143
+
144
+ final_annos = cleaned_new_annos
145
+ # save annotation file
146
+ with open("./final_annotation_train.txt", 'w', encoding='utf-8') as f:
147
+ for line in final_annos:
148
+ f.write(line)
149
+ # save annotation file for validation
150
+ with open("./final_annotation_val.txt", 'w', encoding='utf-8') as f:
151
+ for line in cleaned_new_annos:
152
+ f.write(line)
153
+ print("finished")
requirements.txt ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ pydantic<2
2
+ Cython==0.29.21
3
+ librosa==0.9.2
4
+ matplotlib==3.3.1
5
+ numpy
6
+ scipy
7
+ tensorboard
8
+ torch
9
+ torchvision
10
+ torchaudio
11
+ unidecode
12
+ jamo
13
+ pypinyin
14
+ jieba
15
+ protobuf
16
+ cn2an
17
+ inflect
18
+ eng_to_ipa
19
+ ko_pron
20
+ indic_transliteration==2.3.37
21
+ num_thai==0.0.5
22
+ opencc==1.1.1
23
+ demucs
24
+ openai-whisper
25
+ gradio
26
+ openai
27
+ pyopenjtalk
scripts/denoise_audio.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import torchaudio
4
+ raw_audio_dir = "./raw_audio/"
5
+ denoise_audio_dir = "./denoised_audio/"
6
+ filelist = list(os.walk(raw_audio_dir))[0][2]
7
+ # 2023/4/21: Get the target sampling rate
8
+ with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f:
9
+ hps = json.load(f)
10
+ target_sr = hps['data']['sampling_rate']
11
+ for file in filelist:
12
+ if file.endswith(".wav"):
13
+ os.system(f"demucs --two-stems=vocals {raw_audio_dir}{file}")
14
+ for file in filelist:
15
+ file = file.replace(".wav", "")
16
+ wav, sr = torchaudio.load(f"./separated/htdemucs/{file}/vocals.wav", frame_offset=0, num_frames=-1, normalize=True,
17
+ channels_first=True)
18
+ # merge two channels into one
19
+ wav = wav.mean(dim=0).unsqueeze(0)
20
+ if sr != target_sr:
21
+ wav = torchaudio.transforms.Resample(orig_freq=sr, new_freq=target_sr)(wav)
22
+ torchaudio.save(denoise_audio_dir + file + ".wav", wav, target_sr, channels_first=True)
scripts/download_model.py ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ from google.colab import files
2
+ files.download("./G_latest.pth")
3
+ files.download("./finetune_speaker.json")
4
+ files.download("./moegoe_config.json")
scripts/download_video.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import random
3
+ import shutil
4
+ from concurrent.futures import ThreadPoolExecutor
5
+ from google.colab import files
6
+
7
+ basepath = os.getcwd()
8
+ uploaded = files.upload() # 上传文件
9
+ for filename in uploaded.keys():
10
+ assert (filename.endswith(".txt")), "speaker-videolink info could only be .txt file!"
11
+ shutil.move(os.path.join(basepath, filename), os.path.join("./speaker_links.txt"))
12
+
13
+
14
+ def generate_infos():
15
+ infos = []
16
+ with open("./speaker_links.txt", 'r', encoding='utf-8') as f:
17
+ lines = f.readlines()
18
+ for line in lines:
19
+ line = line.replace("\n", "").replace(" ", "")
20
+ if line == "":
21
+ continue
22
+ speaker, link = line.split("|")
23
+ filename = speaker + "_" + str(random.randint(0, 1000000))
24
+ infos.append({"link": link, "filename": filename})
25
+ return infos
26
+
27
+
28
+ def download_video(info):
29
+ link = info["link"]
30
+ filename = info["filename"]
31
+ os.system(f"youtube-dl -f 0 {link} -o ./video_data/{filename}.mp4 --no-check-certificate")
32
+
33
+
34
+ if __name__ == "__main__":
35
+ infos = generate_infos()
36
+ with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor:
37
+ executor.map(download_video, infos)
scripts/long_audio_transcribe.py ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from moviepy.editor import AudioFileClip
2
+ import whisper
3
+ import os
4
+ import json
5
+ import torchaudio
6
+ import librosa
7
+ import torch
8
+ import argparse
9
+ parent_dir = "./denoised_audio/"
10
+ filelist = list(os.walk(parent_dir))[0][2]
11
+ if __name__ == "__main__":
12
+ parser = argparse.ArgumentParser()
13
+ parser.add_argument("--languages", default="CJE")
14
+ parser.add_argument("--whisper_size", default="medium")
15
+ args = parser.parse_args()
16
+ if args.languages == "CJE":
17
+ lang2token = {
18
+ 'zh': "[ZH]",
19
+ 'ja': "[JA]",
20
+ "en": "[EN]",
21
+ }
22
+ elif args.languages == "CJ":
23
+ lang2token = {
24
+ 'zh': "[ZH]",
25
+ 'ja': "[JA]",
26
+ }
27
+ elif args.languages == "C":
28
+ lang2token = {
29
+ 'zh': "[ZH]",
30
+ }
31
+ assert(torch.cuda.is_available()), "Please enable GPU in order to run Whisper!"
32
+ with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f:
33
+ hps = json.load(f)
34
+ target_sr = hps['data']['sampling_rate']
35
+ model = whisper.load_model(args.whisper_size)
36
+ speaker_annos = []
37
+ for file in filelist:
38
+ print(f"transcribing {parent_dir + file}...\n")
39
+ options = dict(beam_size=5, best_of=5)
40
+ transcribe_options = dict(task="transcribe", **options)
41
+ result = model.transcribe(parent_dir + file, word_timestamps=True, **transcribe_options)
42
+ segments = result["segments"]
43
+ # result = model.transcribe(parent_dir + file)
44
+ lang = result['language']
45
+ if result['language'] not in list(lang2token.keys()):
46
+ print(f"{lang} not supported, ignoring...\n")
47
+ continue
48
+ # segment audio based on segment results
49
+ character_name = file.rstrip(".wav").split("_")[0]
50
+ code = file.rstrip(".wav").split("_")[1]
51
+ if not os.path.exists("./segmented_character_voice/" + character_name):
52
+ os.mkdir("./segmented_character_voice/" + character_name)
53
+ wav, sr = torchaudio.load(parent_dir + file, frame_offset=0, num_frames=-1, normalize=True,
54
+ channels_first=True)
55
+
56
+ for i, seg in enumerate(result['segments']):
57
+ start_time = seg['start']
58
+ end_time = seg['end']
59
+ text = seg['text']
60
+ text = lang2token[lang] + text.replace("\n", "") + lang2token[lang]
61
+ text = text + "\n"
62
+ wav_seg = wav[:, int(start_time*sr):int(end_time*sr)]
63
+ wav_seg_name = f"{character_name}_{code}_{i}.wav"
64
+ savepth = "./segmented_character_voice/" + character_name + "/" + wav_seg_name
65
+ speaker_annos.append(savepth + "|" + character_name + "|" + text)
66
+ print(f"Transcribed segment: {speaker_annos[-1]}")
67
+ # trimmed_wav_seg = librosa.effects.trim(wav_seg.squeeze().numpy())
68
+ # trimmed_wav_seg = torch.tensor(trimmed_wav_seg[0]).unsqueeze(0)
69
+ torchaudio.save(savepth, wav_seg, target_sr, channels_first=True)
70
+ if len(speaker_annos) == 0:
71
+ print("Warning: no long audios & videos found, this IS expected if you have only uploaded short audios")
72
+ print("this IS NOT expected if you have uploaded any long audios, videos or video links. Please check your file structure or make sure your audio/video language is supported.")
73
+ with open("./long_character_anno.txt", 'w', encoding='utf-8') as f:
74
+ for line in speaker_annos:
75
+ f.write(line)
scripts/rearrange_speaker.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import torch
2
+ import argparse
3
+ import json
4
+
5
+ if __name__ == "__main__":
6
+ parser = argparse.ArgumentParser()
7
+ parser.add_argument("--model_dir", type=str, default="./OUTPUT_MODEL/G_latest.pth")
8
+ parser.add_argument("--config_dir", type=str, default="./configs/modified_finetune_speaker.json")
9
+ args = parser.parse_args()
10
+
11
+ model_sd = torch.load(args.model_dir, map_location='cpu')
12
+ with open(args.config_dir, 'r', encoding='utf-8') as f:
13
+ hps = json.load(f)
14
+
15
+ valid_speakers = list(hps['speakers'].keys())
16
+ if hps['data']['n_speakers'] > len(valid_speakers):
17
+ new_emb_g = torch.zeros([len(valid_speakers), 256])
18
+ old_emb_g = model_sd['model']['emb_g.weight']
19
+ for i, speaker in enumerate(valid_speakers):
20
+ new_emb_g[i, :] = old_emb_g[hps['speakers'][speaker], :]
21
+ hps['speakers'][speaker] = i
22
+ hps['data']['n_speakers'] = len(valid_speakers)
23
+ model_sd['model']['emb_g.weight'] = new_emb_g
24
+ with open("./finetune_speaker.json", 'w', encoding='utf-8') as f:
25
+ json.dump(hps, f, indent=2)
26
+ torch.save(model_sd, "./G_latest.pth")
27
+ else:
28
+ with open("./finetune_speaker.json", 'w', encoding='utf-8') as f:
29
+ json.dump(hps, f, indent=2)
30
+ torch.save(model_sd, "./G_latest.pth")
31
+ # save another config file copy in MoeGoe format
32
+ hps['speakers'] = valid_speakers
33
+ with open("./moegoe_config.json", 'w', encoding='utf-8') as f:
34
+ json.dump(hps, f, indent=2)
35
+
36
+
37
+
scripts/resample.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import json
3
+ import argparse
4
+ import torchaudio
5
+
6
+
7
+ def main():
8
+ with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f:
9
+ hps = json.load(f)
10
+ target_sr = hps['data']['sampling_rate']
11
+ filelist = list(os.walk("./sampled_audio4ft"))[0][2]
12
+ if target_sr != 22050:
13
+ for wavfile in filelist:
14
+ wav, sr = torchaudio.load("./sampled_audio4ft" + "/" + wavfile, frame_offset=0, num_frames=-1,
15
+ normalize=True, channels_first=True)
16
+ wav = torchaudio.transforms.Resample(orig_freq=sr, new_freq=target_sr)(wav)
17
+ torchaudio.save("./sampled_audio4ft" + "/" + wavfile, wav, target_sr, channels_first=True)
18
+
19
+ if __name__ == "__main__":
20
+ main()
scripts/short_audio_transcribe.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import whisper
2
+ import os
3
+ import json
4
+ import torchaudio
5
+ import argparse
6
+ import torch
7
+ from tqdm import tqdm
8
+
9
+ if __name__ == "__main__":
10
+ parser = argparse.ArgumentParser()
11
+ parser.add_argument("--whisper_size", default="large")
12
+ args = parser.parse_args()
13
+ #assert (torch.cuda.is_available()), "Please enable GPU in order to run Whisper!"
14
+ model = whisper.load_model(args.whisper_size)
15
+ parent_dir = "./custom_character_voice/"
16
+ speaker_names = list(os.walk(parent_dir))[0][1]
17
+ speaker_annos = []
18
+ total_files = sum([len(files) for r, d, files in os.walk(parent_dir)])
19
+ # resample audios
20
+ # 2023/4/21: Get the target sampling rate
21
+ with open("./configs/amitaro_jp_base.json", 'r', encoding='utf-8') as f:
22
+ hps = json.load(f)
23
+ target_sr = hps['data']['sampling_rate']
24
+ processed_files = 0
25
+ for speaker in speaker_names:
26
+ filelist = (list(os.walk(parent_dir + speaker))[0][2])
27
+ for i, wavfile in tqdm(enumerate(filelist), desc="Processing Audio:", total=len(filelist)):
28
+ # try to load file as audio
29
+ if wavfile.startswith("processed_"):
30
+ continue
31
+ try:
32
+ wav, sr = torchaudio.load(parent_dir + speaker + "/" + wavfile, frame_offset=0, num_frames=-1, normalize=True,
33
+ channels_first=True)
34
+ wav = wav.mean(dim=0).unsqueeze(0)
35
+ if sr != target_sr:
36
+ wav = torchaudio.transforms.Resample(orig_freq=sr, new_freq=target_sr)(wav)
37
+ if wav.shape[1] / sr > 20:
38
+ print(f"{wavfile} too long, ignoring\n")
39
+ save_path = parent_dir + speaker + "/" + f"processed_{i}.wav"
40
+ torchaudio.save(save_path, wav, target_sr, channels_first=True)
41
+ # transcribe text
42
+ #lang, text = transcribe_one(save_path)
43
+
44
+ audio = whisper.load_audio(save_path)
45
+ audio = whisper.pad_or_trim(audio)
46
+
47
+ # make log-Mel spectrogram and move to the same device as the model
48
+ mel = whisper.log_mel_spectrogram(audio).to(model.device)
49
+
50
+ options = whisper.DecodingOptions(beam_size=5, language="ja", fp16 = False)
51
+ result = whisper.decode(model, mel, options)
52
+
53
+ text = "[JA]"+ result.text + "[JA]\n"
54
+ speaker_annos.append(save_path + "|" + speaker + "|" + text)
55
+
56
+ processed_files += 1
57
+ #print(f"Processed: {processed_files}/{total_files}")
58
+ except:
59
+ print(f"Error occurred: {wavfile}")
60
+ continue
61
+
62
+ # # clean annotation
63
+ # import argparse
64
+ # import text
65
+ # from utils import load_filepaths_and_text
66
+ # for i, line in enumerate(speaker_annos):
67
+ # path, sid, txt = line.split("|")
68
+ # cleaned_text = text._clean_text(txt, ["cjke_cleaners2"])
69
+ # cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
70
+ # speaker_annos[i] = path + "|" + sid + "|" + cleaned_text
71
+ # write into annotation
72
+ if len(speaker_annos) == 0:
73
+ print("Warning: no short audios found, this IS expected if you have only uploaded long audios, videos or video links.")
74
+ print("this IS NOT expected if you have uploaded a zip file of short audios. Please check your file structure or make sure your audio language is supported.")
75
+ with open("short_character_anno.txt", 'w', encoding='utf-8') as f:
76
+ for line in speaker_annos:
77
+ f.write(line)
78
+
79
+ # import json
80
+ # # generate new config
81
+ # with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f:
82
+ # hps = json.load(f)
83
+ # # modify n_speakers
84
+ # hps['data']["n_speakers"] = 1000 + len(speaker2id)
85
+ # # add speaker names
86
+ # for speaker in speaker_names:
87
+ # hps['speakers'][speaker] = speaker2id[speaker]
88
+ # # save modified config
89
+ # with open("./configs/modified_finetune_speaker.json", 'w', encoding='utf-8') as f:
90
+ # json.dump(hps, f, indent=2)
91
+ # print("finished")
scripts/video2audio.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ from concurrent.futures import ThreadPoolExecutor
3
+
4
+ from moviepy.editor import AudioFileClip
5
+
6
+ video_dir = "./video_data/"
7
+ audio_dir = "./raw_audio/"
8
+ filelist = list(os.walk(video_dir))[0][2]
9
+
10
+
11
+ def generate_infos():
12
+ videos = []
13
+ for file in filelist:
14
+ if file.endswith(".mp4"):
15
+ videos.append(file)
16
+ return videos
17
+
18
+
19
+ def clip_file(file):
20
+ my_audio_clip = AudioFileClip(video_dir + file)
21
+ my_audio_clip.write_audiofile(audio_dir + file.rstrip(".mp4") + ".wav")
22
+
23
+
24
+ if __name__ == "__main__":
25
+ infos = generate_infos()
26
+ with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor:
27
+ executor.map(clip_file, infos)
scripts/voice_upload.py ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from google.colab import files
2
+ import shutil
3
+ import os
4
+ import argparse
5
+ if __name__ == "__main__":
6
+ parser = argparse.ArgumentParser()
7
+ parser.add_argument("--type", type=str, required=True, help="type of file to upload")
8
+ args = parser.parse_args()
9
+ file_type = args.type
10
+
11
+ basepath = os.getcwd()
12
+ uploaded = files.upload() # 上传文件
13
+ assert(file_type in ['zip', 'audio', 'video'])
14
+ if file_type == "zip":
15
+ upload_path = "./custom_character_voice/"
16
+ for filename in uploaded.keys():
17
+ #将上传的文件移动到指定的位置上
18
+ shutil.move(os.path.join(basepath, filename), os.path.join(upload_path, "custom_character_voice.zip"))
19
+ elif file_type == "audio":
20
+ upload_path = "./raw_audio/"
21
+ for filename in uploaded.keys():
22
+ #将上传的文件移动到指定的位置上
23
+ shutil.move(os.path.join(basepath, filename), os.path.join(upload_path, filename))
24
+ elif file_type == "video":
25
+ upload_path = "./video_data/"
26
+ for filename in uploaded.keys():
27
+ # 将上传的文件移动到指定的位置上
28
+ shutil.move(os.path.join(basepath, filename), os.path.join(upload_path, filename))
short_audio_transcribe.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import whisper
2
+ import os
3
+ import json
4
+ import torchaudio
5
+ import argparse
6
+ import torch
7
+ from tqdm import tqdm
8
+
9
+ if __name__ == "__main__":
10
+ parser = argparse.ArgumentParser()
11
+ parser.add_argument("--whisper_size", default="large")
12
+ args = parser.parse_args()
13
+ #assert (torch.cuda.is_available()), "Please enable GPU in order to run Whisper!"
14
+ model = whisper.load_model(args.whisper_size, device="cpu")
15
+ parent_dir = "./custom_character_voice/"
16
+ speaker_names = list(os.walk(parent_dir))[0][1]
17
+ speaker_annos = []
18
+ total_files = sum([len(files) for r, d, files in os.walk(parent_dir)])
19
+ # resample audios
20
+ # 2023/4/21: Get the target sampling rate
21
+ with open("./configs/amitaro_jp_base.json", 'r', encoding='utf-8') as f:
22
+ hps = json.load(f)
23
+ target_sr = hps['data']['sampling_rate']
24
+ processed_files = 0
25
+ for speaker in speaker_names:
26
+ filelist = (list(os.walk(parent_dir + speaker))[0][2])
27
+ for i, wavfile in tqdm(enumerate(filelist), desc="Processing Audio:", total=len(filelist)):
28
+ # try to load file as audio
29
+ if wavfile.startswith("processed_"):
30
+ continue
31
+ #try:
32
+ wav, sr = torchaudio.load(parent_dir + speaker + "/" + wavfile, frame_offset=0, num_frames=-1, normalize=True,
33
+ channels_first=True)
34
+ wav = wav.mean(dim=0).unsqueeze(0)
35
+ if sr != target_sr:
36
+ wav = torchaudio.transforms.Resample(orig_freq=sr, new_freq=target_sr)(wav)
37
+ if wav.shape[1] / sr > 20:
38
+ print(f"{wavfile} too long, ignoring\n")
39
+ save_path = parent_dir + speaker + "/" + f"processed_{i}.wav"
40
+ torchaudio.save(save_path, wav, target_sr, channels_first=True)
41
+ # transcribe text
42
+ #lang, text = transcribe_one(save_path)
43
+
44
+ audio = whisper.load_audio(save_path)
45
+ audio = whisper.pad_or_trim(audio)
46
+
47
+ # make log-Mel spectrogram and move to the same device as the model
48
+ mel = whisper.log_mel_spectrogram(audio).to(model.device)
49
+
50
+ options = whisper.DecodingOptions(beam_size=5, language="ja", fp16 = False)
51
+ result = whisper.decode(model, mel, options)
52
+
53
+ text = "[JA]"+ result.text + "[JA]\n"
54
+ speaker_annos.append(save_path + "|" + speaker + "|" + text)
55
+
56
+ processed_files += 1
57
+ #print(f"Processed: {processed_files}/{total_files}")
58
+ #except:
59
+ # print(f"Error occurred: {wavfile}")
60
+ # continue
61
+
62
+ # # clean annotation
63
+ # import argparse
64
+ # import text
65
+ # from utils import load_filepaths_and_text
66
+ # for i, line in enumerate(speaker_annos):
67
+ # path, sid, txt = line.split("|")
68
+ # cleaned_text = text._clean_text(txt, ["cjke_cleaners2"])
69
+ # cleaned_text += "\n" if not cleaned_text.endswith("\n") else ""
70
+ # speaker_annos[i] = path + "|" + sid + "|" + cleaned_text
71
+ # write into annotation
72
+ if len(speaker_annos) == 0:
73
+ print("Warning: no short audios found, this IS expected if you have only uploaded long audios, videos or video links.")
74
+ print("this IS NOT expected if you have uploaded a zip file of short audios. Please check your file structure or make sure your audio language is supported.")
75
+ with open("short_character_anno.txt", 'w', encoding='utf-8') as f:
76
+ for line in speaker_annos:
77
+ f.write(line)
78
+
79
+ # import json
80
+ # # generate new config
81
+ # with open("./configs/finetune_speaker.json", 'r', encoding='utf-8') as f:
82
+ # hps = json.load(f)
83
+ # # modify n_speakers
84
+ # hps['data']["n_speakers"] = 1000 + len(speaker2id)
85
+ # # add speaker names
86
+ # for speaker in speaker_names:
87
+ # hps['speakers'][speaker] = speaker2id[speaker]
88
+ # # save modified config
89
+ # with open("./configs/modified_finetune_speaker.json", 'w', encoding='utf-8') as f:
90
+ # json.dump(hps, f, indent=2)
91
+ # print("finished")
text/LICENSE ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Copyright (c) 2017 Keith Ito
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
text/__init__.py ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """ from https://github.com/keithito/tacotron """
2
+ from text import cleaners
3
+ from text.symbols import symbols
4
+
5
+
6
+ # Mappings from symbol to numeric ID and vice versa:
7
+ _symbol_to_id = {s: i for i, s in enumerate(symbols)}
8
+ _id_to_symbol = {i: s for i, s in enumerate(symbols)}
9
+
10
+
11
+ def text_to_sequence(text, symbols, cleaner_names):
12
+ '''Converts a string of text to a sequence of IDs corresponding to the symbols in the text.
13
+ Args:
14
+ text: string to convert to a sequence
15
+ cleaner_names: names of the cleaner functions to run the text through
16
+ Returns:
17
+ List of integers corresponding to the symbols in the text
18
+ '''
19
+ sequence = []
20
+ symbol_to_id = {s: i for i, s in enumerate(symbols)}
21
+ clean_text = _clean_text(text, cleaner_names)
22
+ print(clean_text)
23
+ print(f" length:{len(clean_text)}")
24
+ for symbol in clean_text:
25
+ if symbol not in symbol_to_id.keys():
26
+ continue
27
+ symbol_id = symbol_to_id[symbol]
28
+ sequence += [symbol_id]
29
+ print(f" length:{len(sequence)}")
30
+ return sequence
31
+
32
+
33
+ def cleaned_text_to_sequence(cleaned_text, symbols):
34
+ '''Converts a string of text to a sequence of IDs corresponding to the symbols in the text.
35
+ Args:
36
+ text: string to convert to a sequence
37
+ Returns:
38
+ List of integers corresponding to the symbols in the text
39
+ '''
40
+ symbol_to_id = {s: i for i, s in enumerate(symbols)}
41
+ sequence = [symbol_to_id[symbol] for symbol in cleaned_text if symbol in symbol_to_id.keys()]
42
+ return sequence
43
+
44
+
45
+ def sequence_to_text(sequence):
46
+ '''Converts a sequence of IDs back to a string'''
47
+ result = ''
48
+ for symbol_id in sequence:
49
+ s = _id_to_symbol[symbol_id]
50
+ result += s
51
+ return result
52
+
53
+
54
+ def _clean_text(text, cleaner_names):
55
+ for name in cleaner_names:
56
+ cleaner = getattr(cleaners, name)
57
+ if not cleaner:
58
+ raise Exception('Unknown cleaner: %s' % name)
59
+ text = cleaner(text)
60
+ return text