E2-F5 TTS (si)
Browse files- .gitattributes +3 -0
- si/tts-si-F5-TTS/.gitattributes +38 -0
- si/tts-si-F5-TTS/LICENSE.txt +32 -0
- si/tts-si-F5-TTS/README.md +128 -0
- si/tts-si-F5-TTS/ckpts/f5_TTS/model_230000_reduced.pt +3 -0
- si/tts-si-F5-TTS/ckpts/f5_TTS/vocab.txt +2619 -0
- si/tts-si-F5-TTS/output/01.wav +3 -0
- si/tts-si-F5-TTS/output/02.wav +3 -0
- si/tts-si-F5-TTS/run.bat +3 -0
- si/tts-si-F5-TTS/source.txt +1 -0
- si/tts-si-F5-TTS/src/f5_tts/infer/custom_gradio.py +274 -0
- si/tts-si-F5-TTS/src/f5_tts/infer/infer_cli_custom.py +130 -0
- si/tts-si-F5-TTS/uploads/reference.txt +1 -0
- si/tts-si-F5-TTS/uploads/reference.wav +3 -0
.gitattributes
CHANGED
|
@@ -101,3 +101,6 @@ hi/IndicF5/f5_tts/infer/examples/multi/town.flac filter=lfs diff=lfs merge=lfs -
|
|
| 101 |
hi/IndicF5/prompts/MAR_F_HAPPY_00001.wav filter=lfs diff=lfs merge=lfs -text
|
| 102 |
hi/IndicF5/prompts/PAN_F_HAPPY_00001.wav filter=lfs diff=lfs merge=lfs -text
|
| 103 |
hi/IndicF5/samples/namaste.wav filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
|
|
|
| 101 |
hi/IndicF5/prompts/MAR_F_HAPPY_00001.wav filter=lfs diff=lfs merge=lfs -text
|
| 102 |
hi/IndicF5/prompts/PAN_F_HAPPY_00001.wav filter=lfs diff=lfs merge=lfs -text
|
| 103 |
hi/IndicF5/samples/namaste.wav filter=lfs diff=lfs merge=lfs -text
|
| 104 |
+
si/tts-si-F5-TTS/output/01.wav filter=lfs diff=lfs merge=lfs -text
|
| 105 |
+
si/tts-si-F5-TTS/output/02.wav filter=lfs diff=lfs merge=lfs -text
|
| 106 |
+
si/tts-si-F5-TTS/uploads/reference.wav filter=lfs diff=lfs merge=lfs -text
|
si/tts-si-F5-TTS/.gitattributes
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.7z filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.arrow filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.bin filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.ftz filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.gz filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.h5 filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.joblib filter=lfs diff=lfs merge=lfs -text
|
| 10 |
+
*.lfs.* filter=lfs diff=lfs merge=lfs -text
|
| 11 |
+
*.mlmodel filter=lfs diff=lfs merge=lfs -text
|
| 12 |
+
*.model filter=lfs diff=lfs merge=lfs -text
|
| 13 |
+
*.msgpack filter=lfs diff=lfs merge=lfs -text
|
| 14 |
+
*.npy filter=lfs diff=lfs merge=lfs -text
|
| 15 |
+
*.npz filter=lfs diff=lfs merge=lfs -text
|
| 16 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 17 |
+
*.ot filter=lfs diff=lfs merge=lfs -text
|
| 18 |
+
*.parquet filter=lfs diff=lfs merge=lfs -text
|
| 19 |
+
*.pb filter=lfs diff=lfs merge=lfs -text
|
| 20 |
+
*.pickle filter=lfs diff=lfs merge=lfs -text
|
| 21 |
+
*.pkl filter=lfs diff=lfs merge=lfs -text
|
| 22 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 23 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 24 |
+
*.rar filter=lfs diff=lfs merge=lfs -text
|
| 25 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
| 26 |
+
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
| 27 |
+
*.tar.* filter=lfs diff=lfs merge=lfs -text
|
| 28 |
+
*.tar filter=lfs diff=lfs merge=lfs -text
|
| 29 |
+
*.tflite filter=lfs diff=lfs merge=lfs -text
|
| 30 |
+
*.tgz filter=lfs diff=lfs merge=lfs -text
|
| 31 |
+
*.wasm filter=lfs diff=lfs merge=lfs -text
|
| 32 |
+
*.xz filter=lfs diff=lfs merge=lfs -text
|
| 33 |
+
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
+
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
+
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
uploads/reference.wav filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
output/01.wav filter=lfs diff=lfs merge=lfs -text
|
| 38 |
+
output/02.wav filter=lfs diff=lfs merge=lfs -text
|
si/tts-si-F5-TTS/LICENSE.txt
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Creative Commons Attribution-NonCommercial 4.0 International Public License (CC BY-NC 4.0)
|
| 2 |
+
|
| 3 |
+
This is a human-readable summary of (and not a substitute for) the full legal license.
|
| 4 |
+
You should carefully review all of the terms and conditions of the actual license before using the Licensed Material.
|
| 5 |
+
|
| 6 |
+
The full legal code for the license is available here:
|
| 7 |
+
https://creativecommons.org/licenses/by-nc/4.0/legalcode
|
| 8 |
+
|
| 9 |
+
***
|
| 10 |
+
|
| 11 |
+
You are free to:
|
| 12 |
+
|
| 13 |
+
Share — copy and redistribute the material in any medium or format.
|
| 14 |
+
Adapt — remix, transform, and build upon the material.
|
| 15 |
+
|
| 16 |
+
Under the following terms:
|
| 17 |
+
|
| 18 |
+
Attribution (BY) — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
|
| 19 |
+
|
| 20 |
+
NonCommercial (NC) — You may not use the material for commercial purposes.
|
| 21 |
+
|
| 22 |
+
No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
|
| 23 |
+
|
| 24 |
+
***
|
| 25 |
+
|
| 26 |
+
## ⚠️ Ethical Considerations and Limitations
|
| 27 |
+
|
| 28 |
+
All synthetic voice technology carries potential risks. Users must adhere to the model's license and ethical guidelines.
|
| 29 |
+
|
| 30 |
+
### Misuse Policy
|
| 31 |
+
|
| 32 |
+
The use of this model to generate audio that impersonates, deceives, or violates the privacy or rights of individuals or groups is **strictly prohibited**. It must not be used for illegal or unethical activities, including creating malicious deepfakes or spam.
|
si/tts-si-F5-TTS/README.md
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language: si
|
| 3 |
+
license: cc-by-nc-4.0
|
| 4 |
+
tags:
|
| 5 |
+
- text-to-speech
|
| 6 |
+
- tts
|
| 7 |
+
- sinhala
|
| 8 |
+
- f5-tts
|
| 9 |
+
- voice-cloning
|
| 10 |
+
datasets:
|
| 11 |
+
- pathnirvana
|
| 12 |
+
metrics:
|
| 13 |
+
# Placeholder for where you might add evaluation metrics like PESQ or MOS score later
|
| 14 |
+
# Leave as is if you don't have them yet
|
| 15 |
+
---
|
| 16 |
+
|
| 17 |
+
## 🚀 Overview
|
| 18 |
+
|
| 19 |
+
`tts-si-F5-TTS` is a state-of-the-art Text-to-Speech (TTS) model tailored for the **Sinhala (සිංහල)** language. It is built upon the advanced **F5-TTS (Flow-Matching)** architecture, enabling high-quality, natural-sounding speech generation.
|
| 20 |
+
|
| 21 |
+
This model is a significant resource for the Sinhala language community, supporting research, content creation, and accessibility initiatives.
|
| 22 |
+
|
| 23 |
+
## 🛠️ Model Details
|
| 24 |
+
|
| 25 |
+
| Attribute | Value |
|
| 26 |
+
| :--- | :--- |
|
| 27 |
+
| **Model ID** | `tharindumihi/tts-si-F5-TTS` |
|
| 28 |
+
| **Architecture** | F5-TTS (Flow-Matching based Text-to-Speech) |
|
| 29 |
+
| **Primary Language** | Sinhala (`si`) |
|
| 30 |
+
| **Estimated Model Size** | approx 650 Million Parameters (Based on a 1.25GB checkpoint) |
|
| 31 |
+
| **Inference Library** | F5-TTS Library |
|
| 32 |
+
***
|
| 33 |
+
|
| 34 |
+
## 📊 Training Data
|
| 35 |
+
|
| 36 |
+
The model was trained on a single-speaker, custom Sinhala dataset.
|
| 37 |
+
|
| 38 |
+
| Attribute | Value |
|
| 39 |
+
| :--- | :--- |
|
| 40 |
+
| **Dataset Name** | **Pathnirvana** |
|
| 41 |
+
| **Total Duration** | 07 hours 41 minutes 18 seconds |
|
| 42 |
+
| **Total Utterances** | 3,300 files |
|
| 43 |
+
| **Speaker Count** | 1 (Monolingual, single speaker) |
|
| 44 |
+
***
|
| 45 |
+
|
| 46 |
+
## 🎯 Intended Uses & Performance
|
| 47 |
+
|
| 48 |
+
### Primary Intended Uses
|
| 49 |
+
* Research and development in Sinhala speech synthesis.
|
| 50 |
+
* Generating voiceovers for **non-commercial** educational content, documentaries, and apps.
|
| 51 |
+
* Accessibility tools for text-to-speech for Sinhala speakers.
|
| 52 |
+
|
| 53 |
+
### Performance
|
| 54 |
+
* **Speech Quality:** The model produces **high-quality and natural-sounding Sinhala speech.**
|
| 55 |
+
* **Voice Cloning:** It supports **Zero-Shot Voice Cloning** for Sinhala. Users should note that the voice similarity may be variable and not perfectly match the reference audio.
|
| 56 |
+
***
|
| 57 |
+
|
| 58 |
+
## 💻 How to Use
|
| 59 |
+
|
| 60 |
+
To use this model, you will need the official `f5-tts` Python package.
|
| 61 |
+
|
| 62 |
+
|
| 63 |
+
# 1. Install the necessary libraries
|
| 64 |
+
```bash
|
| 65 |
+
pip install f5-tts
|
| 66 |
+
```
|
| 67 |
+
# 2. clone the original repositary
|
| 68 |
+
```bash
|
| 69 |
+
git clone https://github.com/JarodMica/F5-TTS.git
|
| 70 |
+
cd F5-TTS
|
| 71 |
+
|
| 72 |
+
python -m venv venv
|
| 73 |
+
source venv/bin/activate
|
| 74 |
+
|
| 75 |
+
pip install torch==2.4.0 torchvision==0.19.0 torchaudio==2.4.0 --index-url https://download.pytorch.org/whl/cu118
|
| 76 |
+
pip install -e .
|
| 77 |
+
pip install tensorboard
|
| 78 |
+
```
|
| 79 |
+
# 3. Download the model files
|
| 80 |
+
# Use huggingface-cli or git clone to get the files (model.pt, vocab.txt)
|
| 81 |
+
Alternative Method (Manual Download):
|
| 82 |
+
Navigate to the "Files and versions" tab on the Hugging Face repo page and download model_230000_reduced.pt, and vocab.txt manually. Create a folder named **ckpts\f5-TTS** and place all files directly inside it.
|
| 83 |
+
|
| 84 |
+
### Note on Inference CLI
|
| 85 |
+
**The official `f5-tts` inference CLI is currently known to throw errors.** Therefore, the recommended method for local testing and inference is to use the custom Gradio web interface provided with this model.
|
| 86 |
+
|
| 87 |
+
### Using the Custom Gradio UI for GUI Inference
|
| 88 |
+
|
| 89 |
+
4. **Download Custom UI File:** Download the provided `custom_gradio.py` and infer_cli_custom.py files from this repository.
|
| 90 |
+
5. **Place the Files:** You must place the `custom_gradio.py` and 'infer_cli_custom.py' file inside your local F5-TTS installation directory structure:
|
| 91 |
+
`[Root_Directory]\F5-TTS\src\f5_tts\infer\`
|
| 92 |
+
6. **Run the UI:** Execute the Gradio application using the Python module runner from the F5-TTS root directory:
|
| 93 |
+
|
| 94 |
+
```bash
|
| 95 |
+
python -m src\f5_tts\infer\custom_gradio.py
|
| 96 |
+
```
|
| 97 |
+
|
| 98 |
+
7. Access: This command will start a local Gradio server.
|
| 99 |
+
Open the displayed local URL [http://127.0.0.1:7860](http://127.0.0.1:7860) in your web browser to use the model via the graphical interface.
|
| 100 |
+
|
| 101 |
+
## 🙏 Acknowledgements
|
| 102 |
+
|
| 103 |
+
This project would not have been possible without the foundational work and the data provided by the following entities:
|
| 104 |
+
|
| 105 |
+
* **F5-TTS Framework:** Deepest gratitude to the **F5-TTS developers** for creating the robust training and inference framework that was used to develop this Sinhala model.
|
| 106 |
+
* **Pathnirvana Dataset:** We acknowledge the **Pathnirvana project/contributors** for providing the essential high-quality Sinhala speech data used to train this model.
|
| 107 |
+
***
|
| 108 |
+
## 📜 Licensing and Terms of Use
|
| 109 |
+
|
| 110 |
+
### License
|
| 111 |
+
|
| 112 |
+
This model is licensed under the **Creative Commons Attribution Non Commercial 4.0 International License (`cc-by-nc-4.0`)**.
|
| 113 |
+
|
| 114 |
+
* **You are free to:** Share (copy and redistribute) and Adapt (remix, transform, and build upon) the material.
|
| 115 |
+
* **Under the following terms:**
|
| 116 |
+
* **Attribution (BY):** You must give appropriate credit.
|
| 117 |
+
* **NonCommercial (NC):** You may **not** use the material for commercial purposes.
|
| 118 |
+
|
| 119 |
+
Please review the full license terms by following the link in the license metadata at the top of this card.
|
| 120 |
+
***
|
| 121 |
+
|
| 122 |
+
## ⚠️ Ethical Considerations and Limitations
|
| 123 |
+
|
| 124 |
+
All synthetic voice technology carries potential risks. Users must adhere to the model's license and ethical guidelines.
|
| 125 |
+
|
| 126 |
+
### Misuse Policy
|
| 127 |
+
|
| 128 |
+
The use of this model to generate audio that impersonates, deceives, or violates the privacy or rights of individuals or groups is **strictly prohibited**. It must not be used for illegal or unethical activities, including creating malicious deepfakes or spam.
|
si/tts-si-F5-TTS/ckpts/f5_TTS/model_230000_reduced.pt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:b89ed8f036d2b62c63f340b0d30cd3442f30b2424c9c9178d1e3bbcd2ff50822
|
| 3 |
+
size 1348709536
|
si/tts-si-F5-TTS/ckpts/f5_TTS/vocab.txt
ADDED
|
@@ -0,0 +1,2619 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
!
|
| 3 |
+
"
|
| 4 |
+
#
|
| 5 |
+
$
|
| 6 |
+
%
|
| 7 |
+
&
|
| 8 |
+
'
|
| 9 |
+
(
|
| 10 |
+
)
|
| 11 |
+
*
|
| 12 |
+
+
|
| 13 |
+
,
|
| 14 |
+
-
|
| 15 |
+
.
|
| 16 |
+
/
|
| 17 |
+
0
|
| 18 |
+
1
|
| 19 |
+
2
|
| 20 |
+
3
|
| 21 |
+
4
|
| 22 |
+
5
|
| 23 |
+
6
|
| 24 |
+
7
|
| 25 |
+
8
|
| 26 |
+
9
|
| 27 |
+
:
|
| 28 |
+
;
|
| 29 |
+
=
|
| 30 |
+
>
|
| 31 |
+
?
|
| 32 |
+
@
|
| 33 |
+
A
|
| 34 |
+
B
|
| 35 |
+
C
|
| 36 |
+
D
|
| 37 |
+
E
|
| 38 |
+
F
|
| 39 |
+
G
|
| 40 |
+
H
|
| 41 |
+
I
|
| 42 |
+
J
|
| 43 |
+
K
|
| 44 |
+
L
|
| 45 |
+
M
|
| 46 |
+
N
|
| 47 |
+
O
|
| 48 |
+
P
|
| 49 |
+
Q
|
| 50 |
+
R
|
| 51 |
+
S
|
| 52 |
+
T
|
| 53 |
+
U
|
| 54 |
+
V
|
| 55 |
+
W
|
| 56 |
+
X
|
| 57 |
+
Y
|
| 58 |
+
Z
|
| 59 |
+
[
|
| 60 |
+
\
|
| 61 |
+
]
|
| 62 |
+
_
|
| 63 |
+
a
|
| 64 |
+
a1
|
| 65 |
+
ai1
|
| 66 |
+
ai2
|
| 67 |
+
ai3
|
| 68 |
+
ai4
|
| 69 |
+
an1
|
| 70 |
+
an3
|
| 71 |
+
an4
|
| 72 |
+
ang1
|
| 73 |
+
ang2
|
| 74 |
+
ang4
|
| 75 |
+
ao1
|
| 76 |
+
ao2
|
| 77 |
+
ao3
|
| 78 |
+
ao4
|
| 79 |
+
b
|
| 80 |
+
ba
|
| 81 |
+
ba1
|
| 82 |
+
ba2
|
| 83 |
+
ba3
|
| 84 |
+
ba4
|
| 85 |
+
bai1
|
| 86 |
+
bai2
|
| 87 |
+
bai3
|
| 88 |
+
bai4
|
| 89 |
+
ban1
|
| 90 |
+
ban2
|
| 91 |
+
ban3
|
| 92 |
+
ban4
|
| 93 |
+
bang1
|
| 94 |
+
bang2
|
| 95 |
+
bang3
|
| 96 |
+
bang4
|
| 97 |
+
bao1
|
| 98 |
+
bao2
|
| 99 |
+
bao3
|
| 100 |
+
bao4
|
| 101 |
+
bei
|
| 102 |
+
bei1
|
| 103 |
+
bei2
|
| 104 |
+
bei3
|
| 105 |
+
bei4
|
| 106 |
+
ben1
|
| 107 |
+
ben2
|
| 108 |
+
ben3
|
| 109 |
+
ben4
|
| 110 |
+
beng
|
| 111 |
+
beng1
|
| 112 |
+
beng2
|
| 113 |
+
beng3
|
| 114 |
+
beng4
|
| 115 |
+
bi1
|
| 116 |
+
bi2
|
| 117 |
+
bi3
|
| 118 |
+
bi4
|
| 119 |
+
bian1
|
| 120 |
+
bian2
|
| 121 |
+
bian3
|
| 122 |
+
bian4
|
| 123 |
+
biao1
|
| 124 |
+
biao2
|
| 125 |
+
biao3
|
| 126 |
+
bie1
|
| 127 |
+
bie2
|
| 128 |
+
bie3
|
| 129 |
+
bie4
|
| 130 |
+
bin1
|
| 131 |
+
bin4
|
| 132 |
+
bing1
|
| 133 |
+
bing2
|
| 134 |
+
bing3
|
| 135 |
+
bing4
|
| 136 |
+
bo
|
| 137 |
+
bo1
|
| 138 |
+
bo2
|
| 139 |
+
bo3
|
| 140 |
+
bo4
|
| 141 |
+
bu2
|
| 142 |
+
bu3
|
| 143 |
+
bu4
|
| 144 |
+
c
|
| 145 |
+
ca1
|
| 146 |
+
cai1
|
| 147 |
+
cai2
|
| 148 |
+
cai3
|
| 149 |
+
cai4
|
| 150 |
+
can1
|
| 151 |
+
can2
|
| 152 |
+
can3
|
| 153 |
+
can4
|
| 154 |
+
cang1
|
| 155 |
+
cang2
|
| 156 |
+
cao1
|
| 157 |
+
cao2
|
| 158 |
+
cao3
|
| 159 |
+
ce4
|
| 160 |
+
cen1
|
| 161 |
+
cen2
|
| 162 |
+
ceng1
|
| 163 |
+
ceng2
|
| 164 |
+
ceng4
|
| 165 |
+
cha1
|
| 166 |
+
cha2
|
| 167 |
+
cha3
|
| 168 |
+
cha4
|
| 169 |
+
chai1
|
| 170 |
+
chai2
|
| 171 |
+
chan1
|
| 172 |
+
chan2
|
| 173 |
+
chan3
|
| 174 |
+
chan4
|
| 175 |
+
chang1
|
| 176 |
+
chang2
|
| 177 |
+
chang3
|
| 178 |
+
chang4
|
| 179 |
+
chao1
|
| 180 |
+
chao2
|
| 181 |
+
chao3
|
| 182 |
+
che1
|
| 183 |
+
che2
|
| 184 |
+
che3
|
| 185 |
+
che4
|
| 186 |
+
chen1
|
| 187 |
+
chen2
|
| 188 |
+
chen3
|
| 189 |
+
chen4
|
| 190 |
+
cheng1
|
| 191 |
+
cheng2
|
| 192 |
+
cheng3
|
| 193 |
+
cheng4
|
| 194 |
+
chi1
|
| 195 |
+
chi2
|
| 196 |
+
chi3
|
| 197 |
+
chi4
|
| 198 |
+
chong1
|
| 199 |
+
chong2
|
| 200 |
+
chong3
|
| 201 |
+
chong4
|
| 202 |
+
chou1
|
| 203 |
+
chou2
|
| 204 |
+
chou3
|
| 205 |
+
chou4
|
| 206 |
+
chu1
|
| 207 |
+
chu2
|
| 208 |
+
chu3
|
| 209 |
+
chu4
|
| 210 |
+
chua1
|
| 211 |
+
chuai1
|
| 212 |
+
chuai2
|
| 213 |
+
chuai3
|
| 214 |
+
chuai4
|
| 215 |
+
chuan1
|
| 216 |
+
chuan2
|
| 217 |
+
chuan3
|
| 218 |
+
chuan4
|
| 219 |
+
chuang1
|
| 220 |
+
chuang2
|
| 221 |
+
chuang3
|
| 222 |
+
chuang4
|
| 223 |
+
chui1
|
| 224 |
+
chui2
|
| 225 |
+
chun1
|
| 226 |
+
chun2
|
| 227 |
+
chun3
|
| 228 |
+
chuo1
|
| 229 |
+
chuo4
|
| 230 |
+
ci1
|
| 231 |
+
ci2
|
| 232 |
+
ci3
|
| 233 |
+
ci4
|
| 234 |
+
cong1
|
| 235 |
+
cong2
|
| 236 |
+
cou4
|
| 237 |
+
cu1
|
| 238 |
+
cu4
|
| 239 |
+
cuan1
|
| 240 |
+
cuan2
|
| 241 |
+
cuan4
|
| 242 |
+
cui1
|
| 243 |
+
cui3
|
| 244 |
+
cui4
|
| 245 |
+
cun1
|
| 246 |
+
cun2
|
| 247 |
+
cun4
|
| 248 |
+
cuo1
|
| 249 |
+
cuo2
|
| 250 |
+
cuo4
|
| 251 |
+
d
|
| 252 |
+
da
|
| 253 |
+
da1
|
| 254 |
+
da2
|
| 255 |
+
da3
|
| 256 |
+
da4
|
| 257 |
+
dai1
|
| 258 |
+
dai2
|
| 259 |
+
dai3
|
| 260 |
+
dai4
|
| 261 |
+
dan1
|
| 262 |
+
dan2
|
| 263 |
+
dan3
|
| 264 |
+
dan4
|
| 265 |
+
dang1
|
| 266 |
+
dang2
|
| 267 |
+
dang3
|
| 268 |
+
dang4
|
| 269 |
+
dao1
|
| 270 |
+
dao2
|
| 271 |
+
dao3
|
| 272 |
+
dao4
|
| 273 |
+
de
|
| 274 |
+
de1
|
| 275 |
+
de2
|
| 276 |
+
dei3
|
| 277 |
+
den4
|
| 278 |
+
deng1
|
| 279 |
+
deng2
|
| 280 |
+
deng3
|
| 281 |
+
deng4
|
| 282 |
+
di1
|
| 283 |
+
di2
|
| 284 |
+
di3
|
| 285 |
+
di4
|
| 286 |
+
dia3
|
| 287 |
+
dian1
|
| 288 |
+
dian2
|
| 289 |
+
dian3
|
| 290 |
+
dian4
|
| 291 |
+
diao1
|
| 292 |
+
diao3
|
| 293 |
+
diao4
|
| 294 |
+
die1
|
| 295 |
+
die2
|
| 296 |
+
die4
|
| 297 |
+
ding1
|
| 298 |
+
ding2
|
| 299 |
+
ding3
|
| 300 |
+
ding4
|
| 301 |
+
diu1
|
| 302 |
+
dong1
|
| 303 |
+
dong3
|
| 304 |
+
dong4
|
| 305 |
+
dou1
|
| 306 |
+
dou2
|
| 307 |
+
dou3
|
| 308 |
+
dou4
|
| 309 |
+
du1
|
| 310 |
+
du2
|
| 311 |
+
du3
|
| 312 |
+
du4
|
| 313 |
+
duan1
|
| 314 |
+
duan2
|
| 315 |
+
duan3
|
| 316 |
+
duan4
|
| 317 |
+
dui1
|
| 318 |
+
dui4
|
| 319 |
+
dun1
|
| 320 |
+
dun3
|
| 321 |
+
dun4
|
| 322 |
+
duo1
|
| 323 |
+
duo2
|
| 324 |
+
duo3
|
| 325 |
+
duo4
|
| 326 |
+
e
|
| 327 |
+
e1
|
| 328 |
+
e2
|
| 329 |
+
e3
|
| 330 |
+
e4
|
| 331 |
+
ei2
|
| 332 |
+
en1
|
| 333 |
+
en4
|
| 334 |
+
er
|
| 335 |
+
er2
|
| 336 |
+
er3
|
| 337 |
+
er4
|
| 338 |
+
f
|
| 339 |
+
fa1
|
| 340 |
+
fa2
|
| 341 |
+
fa3
|
| 342 |
+
fa4
|
| 343 |
+
fan1
|
| 344 |
+
fan2
|
| 345 |
+
fan3
|
| 346 |
+
fan4
|
| 347 |
+
fang1
|
| 348 |
+
fang2
|
| 349 |
+
fang3
|
| 350 |
+
fang4
|
| 351 |
+
fei1
|
| 352 |
+
fei2
|
| 353 |
+
fei3
|
| 354 |
+
fei4
|
| 355 |
+
fen1
|
| 356 |
+
fen2
|
| 357 |
+
fen3
|
| 358 |
+
fen4
|
| 359 |
+
feng1
|
| 360 |
+
feng2
|
| 361 |
+
feng3
|
| 362 |
+
feng4
|
| 363 |
+
fo2
|
| 364 |
+
fou2
|
| 365 |
+
fou3
|
| 366 |
+
fu1
|
| 367 |
+
fu2
|
| 368 |
+
fu3
|
| 369 |
+
fu4
|
| 370 |
+
g
|
| 371 |
+
ga1
|
| 372 |
+
ga2
|
| 373 |
+
ga3
|
| 374 |
+
ga4
|
| 375 |
+
gai1
|
| 376 |
+
gai2
|
| 377 |
+
gai3
|
| 378 |
+
gai4
|
| 379 |
+
gan1
|
| 380 |
+
gan2
|
| 381 |
+
gan3
|
| 382 |
+
gan4
|
| 383 |
+
gang1
|
| 384 |
+
gang2
|
| 385 |
+
gang3
|
| 386 |
+
gang4
|
| 387 |
+
gao1
|
| 388 |
+
gao2
|
| 389 |
+
gao3
|
| 390 |
+
gao4
|
| 391 |
+
ge1
|
| 392 |
+
ge2
|
| 393 |
+
ge3
|
| 394 |
+
ge4
|
| 395 |
+
gei2
|
| 396 |
+
gei3
|
| 397 |
+
gen1
|
| 398 |
+
gen2
|
| 399 |
+
gen3
|
| 400 |
+
gen4
|
| 401 |
+
geng1
|
| 402 |
+
geng3
|
| 403 |
+
geng4
|
| 404 |
+
gong1
|
| 405 |
+
gong3
|
| 406 |
+
gong4
|
| 407 |
+
gou1
|
| 408 |
+
gou2
|
| 409 |
+
gou3
|
| 410 |
+
gou4
|
| 411 |
+
gu
|
| 412 |
+
gu1
|
| 413 |
+
gu2
|
| 414 |
+
gu3
|
| 415 |
+
gu4
|
| 416 |
+
gua1
|
| 417 |
+
gua2
|
| 418 |
+
gua3
|
| 419 |
+
gua4
|
| 420 |
+
guai1
|
| 421 |
+
guai2
|
| 422 |
+
guai3
|
| 423 |
+
guai4
|
| 424 |
+
guan1
|
| 425 |
+
guan2
|
| 426 |
+
guan3
|
| 427 |
+
guan4
|
| 428 |
+
guang1
|
| 429 |
+
guang2
|
| 430 |
+
guang3
|
| 431 |
+
guang4
|
| 432 |
+
gui1
|
| 433 |
+
gui2
|
| 434 |
+
gui3
|
| 435 |
+
gui4
|
| 436 |
+
gun3
|
| 437 |
+
gun4
|
| 438 |
+
guo1
|
| 439 |
+
guo2
|
| 440 |
+
guo3
|
| 441 |
+
guo4
|
| 442 |
+
h
|
| 443 |
+
ha1
|
| 444 |
+
ha2
|
| 445 |
+
ha3
|
| 446 |
+
hai1
|
| 447 |
+
hai2
|
| 448 |
+
hai3
|
| 449 |
+
hai4
|
| 450 |
+
han1
|
| 451 |
+
han2
|
| 452 |
+
han3
|
| 453 |
+
han4
|
| 454 |
+
hang1
|
| 455 |
+
hang2
|
| 456 |
+
hang4
|
| 457 |
+
hao1
|
| 458 |
+
hao2
|
| 459 |
+
hao3
|
| 460 |
+
hao4
|
| 461 |
+
he1
|
| 462 |
+
he2
|
| 463 |
+
he4
|
| 464 |
+
hei1
|
| 465 |
+
hen2
|
| 466 |
+
hen3
|
| 467 |
+
hen4
|
| 468 |
+
heng1
|
| 469 |
+
heng2
|
| 470 |
+
heng4
|
| 471 |
+
hong1
|
| 472 |
+
hong2
|
| 473 |
+
hong3
|
| 474 |
+
hong4
|
| 475 |
+
hou1
|
| 476 |
+
hou2
|
| 477 |
+
hou3
|
| 478 |
+
hou4
|
| 479 |
+
hu1
|
| 480 |
+
hu2
|
| 481 |
+
hu3
|
| 482 |
+
hu4
|
| 483 |
+
hua1
|
| 484 |
+
hua2
|
| 485 |
+
hua4
|
| 486 |
+
huai2
|
| 487 |
+
huai4
|
| 488 |
+
huan1
|
| 489 |
+
huan2
|
| 490 |
+
huan3
|
| 491 |
+
huan4
|
| 492 |
+
huang1
|
| 493 |
+
huang2
|
| 494 |
+
huang3
|
| 495 |
+
huang4
|
| 496 |
+
hui1
|
| 497 |
+
hui2
|
| 498 |
+
hui3
|
| 499 |
+
hui4
|
| 500 |
+
hun1
|
| 501 |
+
hun2
|
| 502 |
+
hun4
|
| 503 |
+
huo
|
| 504 |
+
huo1
|
| 505 |
+
huo2
|
| 506 |
+
huo3
|
| 507 |
+
huo4
|
| 508 |
+
i
|
| 509 |
+
j
|
| 510 |
+
ji1
|
| 511 |
+
ji2
|
| 512 |
+
ji3
|
| 513 |
+
ji4
|
| 514 |
+
jia
|
| 515 |
+
jia1
|
| 516 |
+
jia2
|
| 517 |
+
jia3
|
| 518 |
+
jia4
|
| 519 |
+
jian1
|
| 520 |
+
jian2
|
| 521 |
+
jian3
|
| 522 |
+
jian4
|
| 523 |
+
jiang1
|
| 524 |
+
jiang2
|
| 525 |
+
jiang3
|
| 526 |
+
jiang4
|
| 527 |
+
jiao1
|
| 528 |
+
jiao2
|
| 529 |
+
jiao3
|
| 530 |
+
jiao4
|
| 531 |
+
jie1
|
| 532 |
+
jie2
|
| 533 |
+
jie3
|
| 534 |
+
jie4
|
| 535 |
+
jin1
|
| 536 |
+
jin2
|
| 537 |
+
jin3
|
| 538 |
+
jin4
|
| 539 |
+
jing1
|
| 540 |
+
jing2
|
| 541 |
+
jing3
|
| 542 |
+
jing4
|
| 543 |
+
jiong3
|
| 544 |
+
jiu1
|
| 545 |
+
jiu2
|
| 546 |
+
jiu3
|
| 547 |
+
jiu4
|
| 548 |
+
ju1
|
| 549 |
+
ju2
|
| 550 |
+
ju3
|
| 551 |
+
ju4
|
| 552 |
+
juan1
|
| 553 |
+
juan2
|
| 554 |
+
juan3
|
| 555 |
+
juan4
|
| 556 |
+
jue1
|
| 557 |
+
jue2
|
| 558 |
+
jue4
|
| 559 |
+
jun1
|
| 560 |
+
jun4
|
| 561 |
+
k
|
| 562 |
+
ka1
|
| 563 |
+
ka2
|
| 564 |
+
ka3
|
| 565 |
+
kai1
|
| 566 |
+
kai2
|
| 567 |
+
kai3
|
| 568 |
+
kai4
|
| 569 |
+
kan1
|
| 570 |
+
kan2
|
| 571 |
+
kan3
|
| 572 |
+
kan4
|
| 573 |
+
kang1
|
| 574 |
+
kang2
|
| 575 |
+
kang4
|
| 576 |
+
kao1
|
| 577 |
+
kao2
|
| 578 |
+
kao3
|
| 579 |
+
kao4
|
| 580 |
+
ke1
|
| 581 |
+
ke2
|
| 582 |
+
ke3
|
| 583 |
+
ke4
|
| 584 |
+
ken3
|
| 585 |
+
keng1
|
| 586 |
+
kong1
|
| 587 |
+
kong3
|
| 588 |
+
kong4
|
| 589 |
+
kou1
|
| 590 |
+
kou2
|
| 591 |
+
kou3
|
| 592 |
+
kou4
|
| 593 |
+
ku1
|
| 594 |
+
ku2
|
| 595 |
+
ku3
|
| 596 |
+
ku4
|
| 597 |
+
kua1
|
| 598 |
+
kua3
|
| 599 |
+
kua4
|
| 600 |
+
kuai3
|
| 601 |
+
kuai4
|
| 602 |
+
kuan1
|
| 603 |
+
kuan2
|
| 604 |
+
kuan3
|
| 605 |
+
kuang1
|
| 606 |
+
kuang2
|
| 607 |
+
kuang4
|
| 608 |
+
kui1
|
| 609 |
+
kui2
|
| 610 |
+
kui3
|
| 611 |
+
kui4
|
| 612 |
+
kun1
|
| 613 |
+
kun3
|
| 614 |
+
kun4
|
| 615 |
+
kuo4
|
| 616 |
+
l
|
| 617 |
+
la
|
| 618 |
+
la1
|
| 619 |
+
la2
|
| 620 |
+
la3
|
| 621 |
+
la4
|
| 622 |
+
lai2
|
| 623 |
+
lai4
|
| 624 |
+
lan2
|
| 625 |
+
lan3
|
| 626 |
+
lan4
|
| 627 |
+
lang1
|
| 628 |
+
lang2
|
| 629 |
+
lang3
|
| 630 |
+
lang4
|
| 631 |
+
lao1
|
| 632 |
+
lao2
|
| 633 |
+
lao3
|
| 634 |
+
lao4
|
| 635 |
+
le
|
| 636 |
+
le1
|
| 637 |
+
le4
|
| 638 |
+
lei
|
| 639 |
+
lei1
|
| 640 |
+
lei2
|
| 641 |
+
lei3
|
| 642 |
+
lei4
|
| 643 |
+
leng1
|
| 644 |
+
leng2
|
| 645 |
+
leng3
|
| 646 |
+
leng4
|
| 647 |
+
li
|
| 648 |
+
li1
|
| 649 |
+
li2
|
| 650 |
+
li3
|
| 651 |
+
li4
|
| 652 |
+
lia3
|
| 653 |
+
lian2
|
| 654 |
+
lian3
|
| 655 |
+
lian4
|
| 656 |
+
liang2
|
| 657 |
+
liang3
|
| 658 |
+
liang4
|
| 659 |
+
liao1
|
| 660 |
+
liao2
|
| 661 |
+
liao3
|
| 662 |
+
liao4
|
| 663 |
+
lie1
|
| 664 |
+
lie2
|
| 665 |
+
lie3
|
| 666 |
+
lie4
|
| 667 |
+
lin1
|
| 668 |
+
lin2
|
| 669 |
+
lin3
|
| 670 |
+
lin4
|
| 671 |
+
ling2
|
| 672 |
+
ling3
|
| 673 |
+
ling4
|
| 674 |
+
liu1
|
| 675 |
+
liu2
|
| 676 |
+
liu3
|
| 677 |
+
liu4
|
| 678 |
+
long1
|
| 679 |
+
long2
|
| 680 |
+
long3
|
| 681 |
+
long4
|
| 682 |
+
lou1
|
| 683 |
+
lou2
|
| 684 |
+
lou3
|
| 685 |
+
lou4
|
| 686 |
+
lu1
|
| 687 |
+
lu2
|
| 688 |
+
lu3
|
| 689 |
+
lu4
|
| 690 |
+
luan2
|
| 691 |
+
luan3
|
| 692 |
+
luan4
|
| 693 |
+
lun1
|
| 694 |
+
lun2
|
| 695 |
+
lun4
|
| 696 |
+
luo1
|
| 697 |
+
luo2
|
| 698 |
+
luo3
|
| 699 |
+
luo4
|
| 700 |
+
lv2
|
| 701 |
+
lv3
|
| 702 |
+
lv4
|
| 703 |
+
lve3
|
| 704 |
+
lve4
|
| 705 |
+
m
|
| 706 |
+
ma
|
| 707 |
+
ma1
|
| 708 |
+
ma2
|
| 709 |
+
ma3
|
| 710 |
+
ma4
|
| 711 |
+
mai2
|
| 712 |
+
mai3
|
| 713 |
+
mai4
|
| 714 |
+
man1
|
| 715 |
+
man2
|
| 716 |
+
man3
|
| 717 |
+
man4
|
| 718 |
+
mang2
|
| 719 |
+
mang3
|
| 720 |
+
mao1
|
| 721 |
+
mao2
|
| 722 |
+
mao3
|
| 723 |
+
mao4
|
| 724 |
+
me
|
| 725 |
+
mei2
|
| 726 |
+
mei3
|
| 727 |
+
mei4
|
| 728 |
+
men
|
| 729 |
+
men1
|
| 730 |
+
men2
|
| 731 |
+
men4
|
| 732 |
+
meng
|
| 733 |
+
meng1
|
| 734 |
+
meng2
|
| 735 |
+
meng3
|
| 736 |
+
meng4
|
| 737 |
+
mi1
|
| 738 |
+
mi2
|
| 739 |
+
mi3
|
| 740 |
+
mi4
|
| 741 |
+
mian2
|
| 742 |
+
mian3
|
| 743 |
+
mian4
|
| 744 |
+
miao1
|
| 745 |
+
miao2
|
| 746 |
+
miao3
|
| 747 |
+
miao4
|
| 748 |
+
mie1
|
| 749 |
+
mie4
|
| 750 |
+
min2
|
| 751 |
+
min3
|
| 752 |
+
ming2
|
| 753 |
+
ming3
|
| 754 |
+
ming4
|
| 755 |
+
miu4
|
| 756 |
+
mo1
|
| 757 |
+
mo2
|
| 758 |
+
mo3
|
| 759 |
+
mo4
|
| 760 |
+
mou1
|
| 761 |
+
mou2
|
| 762 |
+
mou3
|
| 763 |
+
mu2
|
| 764 |
+
mu3
|
| 765 |
+
mu4
|
| 766 |
+
n
|
| 767 |
+
n2
|
| 768 |
+
na1
|
| 769 |
+
na2
|
| 770 |
+
na3
|
| 771 |
+
na4
|
| 772 |
+
nai2
|
| 773 |
+
nai3
|
| 774 |
+
nai4
|
| 775 |
+
nan1
|
| 776 |
+
nan2
|
| 777 |
+
nan3
|
| 778 |
+
nan4
|
| 779 |
+
nang1
|
| 780 |
+
nang2
|
| 781 |
+
nang3
|
| 782 |
+
nao1
|
| 783 |
+
nao2
|
| 784 |
+
nao3
|
| 785 |
+
nao4
|
| 786 |
+
ne
|
| 787 |
+
ne2
|
| 788 |
+
ne4
|
| 789 |
+
nei3
|
| 790 |
+
nei4
|
| 791 |
+
nen4
|
| 792 |
+
neng2
|
| 793 |
+
ni1
|
| 794 |
+
ni2
|
| 795 |
+
ni3
|
| 796 |
+
ni4
|
| 797 |
+
nian1
|
| 798 |
+
nian2
|
| 799 |
+
nian3
|
| 800 |
+
nian4
|
| 801 |
+
niang2
|
| 802 |
+
niang4
|
| 803 |
+
niao2
|
| 804 |
+
niao3
|
| 805 |
+
niao4
|
| 806 |
+
nie1
|
| 807 |
+
nie4
|
| 808 |
+
nin2
|
| 809 |
+
ning2
|
| 810 |
+
ning3
|
| 811 |
+
ning4
|
| 812 |
+
niu1
|
| 813 |
+
niu2
|
| 814 |
+
niu3
|
| 815 |
+
niu4
|
| 816 |
+
nong2
|
| 817 |
+
nong4
|
| 818 |
+
nou4
|
| 819 |
+
nu2
|
| 820 |
+
nu3
|
| 821 |
+
nu4
|
| 822 |
+
nuan3
|
| 823 |
+
nuo2
|
| 824 |
+
nuo4
|
| 825 |
+
nv2
|
| 826 |
+
nv3
|
| 827 |
+
nve4
|
| 828 |
+
o
|
| 829 |
+
o1
|
| 830 |
+
o2
|
| 831 |
+
ou1
|
| 832 |
+
ou2
|
| 833 |
+
ou3
|
| 834 |
+
ou4
|
| 835 |
+
p
|
| 836 |
+
pa1
|
| 837 |
+
pa2
|
| 838 |
+
pa4
|
| 839 |
+
pai1
|
| 840 |
+
pai2
|
| 841 |
+
pai3
|
| 842 |
+
pai4
|
| 843 |
+
pan1
|
| 844 |
+
pan2
|
| 845 |
+
pan4
|
| 846 |
+
pang1
|
| 847 |
+
pang2
|
| 848 |
+
pang4
|
| 849 |
+
pao1
|
| 850 |
+
pao2
|
| 851 |
+
pao3
|
| 852 |
+
pao4
|
| 853 |
+
pei1
|
| 854 |
+
pei2
|
| 855 |
+
pei4
|
| 856 |
+
pen1
|
| 857 |
+
pen2
|
| 858 |
+
pen4
|
| 859 |
+
peng1
|
| 860 |
+
peng2
|
| 861 |
+
peng3
|
| 862 |
+
peng4
|
| 863 |
+
pi1
|
| 864 |
+
pi2
|
| 865 |
+
pi3
|
| 866 |
+
pi4
|
| 867 |
+
pian1
|
| 868 |
+
pian2
|
| 869 |
+
pian4
|
| 870 |
+
piao1
|
| 871 |
+
piao2
|
| 872 |
+
piao3
|
| 873 |
+
piao4
|
| 874 |
+
pie1
|
| 875 |
+
pie2
|
| 876 |
+
pie3
|
| 877 |
+
pin1
|
| 878 |
+
pin2
|
| 879 |
+
pin3
|
| 880 |
+
pin4
|
| 881 |
+
ping1
|
| 882 |
+
ping2
|
| 883 |
+
po1
|
| 884 |
+
po2
|
| 885 |
+
po3
|
| 886 |
+
po4
|
| 887 |
+
pou1
|
| 888 |
+
pu1
|
| 889 |
+
pu2
|
| 890 |
+
pu3
|
| 891 |
+
pu4
|
| 892 |
+
q
|
| 893 |
+
qi1
|
| 894 |
+
qi2
|
| 895 |
+
qi3
|
| 896 |
+
qi4
|
| 897 |
+
qia1
|
| 898 |
+
qia3
|
| 899 |
+
qia4
|
| 900 |
+
qian1
|
| 901 |
+
qian2
|
| 902 |
+
qian3
|
| 903 |
+
qian4
|
| 904 |
+
qiang1
|
| 905 |
+
qiang2
|
| 906 |
+
qiang3
|
| 907 |
+
qiang4
|
| 908 |
+
qiao1
|
| 909 |
+
qiao2
|
| 910 |
+
qiao3
|
| 911 |
+
qiao4
|
| 912 |
+
qie1
|
| 913 |
+
qie2
|
| 914 |
+
qie3
|
| 915 |
+
qie4
|
| 916 |
+
qin1
|
| 917 |
+
qin2
|
| 918 |
+
qin3
|
| 919 |
+
qin4
|
| 920 |
+
qing1
|
| 921 |
+
qing2
|
| 922 |
+
qing3
|
| 923 |
+
qing4
|
| 924 |
+
qiong1
|
| 925 |
+
qiong2
|
| 926 |
+
qiu1
|
| 927 |
+
qiu2
|
| 928 |
+
qiu3
|
| 929 |
+
qu1
|
| 930 |
+
qu2
|
| 931 |
+
qu3
|
| 932 |
+
qu4
|
| 933 |
+
quan1
|
| 934 |
+
quan2
|
| 935 |
+
quan3
|
| 936 |
+
quan4
|
| 937 |
+
que1
|
| 938 |
+
que2
|
| 939 |
+
que4
|
| 940 |
+
qun2
|
| 941 |
+
r
|
| 942 |
+
ran2
|
| 943 |
+
ran3
|
| 944 |
+
rang1
|
| 945 |
+
rang2
|
| 946 |
+
rang3
|
| 947 |
+
rang4
|
| 948 |
+
rao2
|
| 949 |
+
rao3
|
| 950 |
+
rao4
|
| 951 |
+
re2
|
| 952 |
+
re3
|
| 953 |
+
re4
|
| 954 |
+
ren2
|
| 955 |
+
ren3
|
| 956 |
+
ren4
|
| 957 |
+
reng1
|
| 958 |
+
reng2
|
| 959 |
+
ri4
|
| 960 |
+
rong1
|
| 961 |
+
rong2
|
| 962 |
+
rong3
|
| 963 |
+
rou2
|
| 964 |
+
rou4
|
| 965 |
+
ru2
|
| 966 |
+
ru3
|
| 967 |
+
ru4
|
| 968 |
+
ruan2
|
| 969 |
+
ruan3
|
| 970 |
+
rui3
|
| 971 |
+
rui4
|
| 972 |
+
run4
|
| 973 |
+
ruo4
|
| 974 |
+
s
|
| 975 |
+
sa1
|
| 976 |
+
sa2
|
| 977 |
+
sa3
|
| 978 |
+
sa4
|
| 979 |
+
sai1
|
| 980 |
+
sai4
|
| 981 |
+
san1
|
| 982 |
+
san2
|
| 983 |
+
san3
|
| 984 |
+
san4
|
| 985 |
+
sang1
|
| 986 |
+
sang3
|
| 987 |
+
sang4
|
| 988 |
+
sao1
|
| 989 |
+
sao2
|
| 990 |
+
sao3
|
| 991 |
+
sao4
|
| 992 |
+
se4
|
| 993 |
+
sen1
|
| 994 |
+
seng1
|
| 995 |
+
sha1
|
| 996 |
+
sha2
|
| 997 |
+
sha3
|
| 998 |
+
sha4
|
| 999 |
+
shai1
|
| 1000 |
+
shai2
|
| 1001 |
+
shai3
|
| 1002 |
+
shai4
|
| 1003 |
+
shan1
|
| 1004 |
+
shan3
|
| 1005 |
+
shan4
|
| 1006 |
+
shang
|
| 1007 |
+
shang1
|
| 1008 |
+
shang3
|
| 1009 |
+
shang4
|
| 1010 |
+
shao1
|
| 1011 |
+
shao2
|
| 1012 |
+
shao3
|
| 1013 |
+
shao4
|
| 1014 |
+
she1
|
| 1015 |
+
she2
|
| 1016 |
+
she3
|
| 1017 |
+
she4
|
| 1018 |
+
shei2
|
| 1019 |
+
shen1
|
| 1020 |
+
shen2
|
| 1021 |
+
shen3
|
| 1022 |
+
shen4
|
| 1023 |
+
sheng1
|
| 1024 |
+
sheng2
|
| 1025 |
+
sheng3
|
| 1026 |
+
sheng4
|
| 1027 |
+
shi
|
| 1028 |
+
shi1
|
| 1029 |
+
shi2
|
| 1030 |
+
shi3
|
| 1031 |
+
shi4
|
| 1032 |
+
shou1
|
| 1033 |
+
shou2
|
| 1034 |
+
shou3
|
| 1035 |
+
shou4
|
| 1036 |
+
shu1
|
| 1037 |
+
shu2
|
| 1038 |
+
shu3
|
| 1039 |
+
shu4
|
| 1040 |
+
shua1
|
| 1041 |
+
shua2
|
| 1042 |
+
shua3
|
| 1043 |
+
shua4
|
| 1044 |
+
shuai1
|
| 1045 |
+
shuai3
|
| 1046 |
+
shuai4
|
| 1047 |
+
shuan1
|
| 1048 |
+
shuan4
|
| 1049 |
+
shuang1
|
| 1050 |
+
shuang3
|
| 1051 |
+
shui2
|
| 1052 |
+
shui3
|
| 1053 |
+
shui4
|
| 1054 |
+
shun3
|
| 1055 |
+
shun4
|
| 1056 |
+
shuo1
|
| 1057 |
+
shuo4
|
| 1058 |
+
si1
|
| 1059 |
+
si2
|
| 1060 |
+
si3
|
| 1061 |
+
si4
|
| 1062 |
+
song1
|
| 1063 |
+
song3
|
| 1064 |
+
song4
|
| 1065 |
+
sou1
|
| 1066 |
+
sou3
|
| 1067 |
+
sou4
|
| 1068 |
+
su1
|
| 1069 |
+
su2
|
| 1070 |
+
su4
|
| 1071 |
+
suan1
|
| 1072 |
+
suan4
|
| 1073 |
+
sui1
|
| 1074 |
+
sui2
|
| 1075 |
+
sui3
|
| 1076 |
+
sui4
|
| 1077 |
+
sun1
|
| 1078 |
+
sun3
|
| 1079 |
+
suo
|
| 1080 |
+
suo1
|
| 1081 |
+
suo2
|
| 1082 |
+
suo3
|
| 1083 |
+
t
|
| 1084 |
+
ta1
|
| 1085 |
+
ta2
|
| 1086 |
+
ta3
|
| 1087 |
+
ta4
|
| 1088 |
+
tai1
|
| 1089 |
+
tai2
|
| 1090 |
+
tai4
|
| 1091 |
+
tan1
|
| 1092 |
+
tan2
|
| 1093 |
+
tan3
|
| 1094 |
+
tan4
|
| 1095 |
+
tang1
|
| 1096 |
+
tang2
|
| 1097 |
+
tang3
|
| 1098 |
+
tang4
|
| 1099 |
+
tao1
|
| 1100 |
+
tao2
|
| 1101 |
+
tao3
|
| 1102 |
+
tao4
|
| 1103 |
+
te4
|
| 1104 |
+
teng2
|
| 1105 |
+
ti1
|
| 1106 |
+
ti2
|
| 1107 |
+
ti3
|
| 1108 |
+
ti4
|
| 1109 |
+
tian1
|
| 1110 |
+
tian2
|
| 1111 |
+
tian3
|
| 1112 |
+
tiao1
|
| 1113 |
+
tiao2
|
| 1114 |
+
tiao3
|
| 1115 |
+
tiao4
|
| 1116 |
+
tie1
|
| 1117 |
+
tie2
|
| 1118 |
+
tie3
|
| 1119 |
+
tie4
|
| 1120 |
+
ting1
|
| 1121 |
+
ting2
|
| 1122 |
+
ting3
|
| 1123 |
+
tong1
|
| 1124 |
+
tong2
|
| 1125 |
+
tong3
|
| 1126 |
+
tong4
|
| 1127 |
+
tou
|
| 1128 |
+
tou1
|
| 1129 |
+
tou2
|
| 1130 |
+
tou4
|
| 1131 |
+
tu1
|
| 1132 |
+
tu2
|
| 1133 |
+
tu3
|
| 1134 |
+
tu4
|
| 1135 |
+
tuan1
|
| 1136 |
+
tuan2
|
| 1137 |
+
tui1
|
| 1138 |
+
tui2
|
| 1139 |
+
tui3
|
| 1140 |
+
tui4
|
| 1141 |
+
tun1
|
| 1142 |
+
tun2
|
| 1143 |
+
tun4
|
| 1144 |
+
tuo1
|
| 1145 |
+
tuo2
|
| 1146 |
+
tuo3
|
| 1147 |
+
tuo4
|
| 1148 |
+
u
|
| 1149 |
+
v
|
| 1150 |
+
w
|
| 1151 |
+
wa
|
| 1152 |
+
wa1
|
| 1153 |
+
wa2
|
| 1154 |
+
wa3
|
| 1155 |
+
wa4
|
| 1156 |
+
wai1
|
| 1157 |
+
wai3
|
| 1158 |
+
wai4
|
| 1159 |
+
wan1
|
| 1160 |
+
wan2
|
| 1161 |
+
wan3
|
| 1162 |
+
wan4
|
| 1163 |
+
wang1
|
| 1164 |
+
wang2
|
| 1165 |
+
wang3
|
| 1166 |
+
wang4
|
| 1167 |
+
wei1
|
| 1168 |
+
wei2
|
| 1169 |
+
wei3
|
| 1170 |
+
wei4
|
| 1171 |
+
wen1
|
| 1172 |
+
wen2
|
| 1173 |
+
wen3
|
| 1174 |
+
wen4
|
| 1175 |
+
weng1
|
| 1176 |
+
weng4
|
| 1177 |
+
wo1
|
| 1178 |
+
wo2
|
| 1179 |
+
wo3
|
| 1180 |
+
wo4
|
| 1181 |
+
wu1
|
| 1182 |
+
wu2
|
| 1183 |
+
wu3
|
| 1184 |
+
wu4
|
| 1185 |
+
x
|
| 1186 |
+
xi1
|
| 1187 |
+
xi2
|
| 1188 |
+
xi3
|
| 1189 |
+
xi4
|
| 1190 |
+
xia1
|
| 1191 |
+
xia2
|
| 1192 |
+
xia4
|
| 1193 |
+
xian1
|
| 1194 |
+
xian2
|
| 1195 |
+
xian3
|
| 1196 |
+
xian4
|
| 1197 |
+
xiang1
|
| 1198 |
+
xiang2
|
| 1199 |
+
xiang3
|
| 1200 |
+
xiang4
|
| 1201 |
+
xiao1
|
| 1202 |
+
xiao2
|
| 1203 |
+
xiao3
|
| 1204 |
+
xiao4
|
| 1205 |
+
xie1
|
| 1206 |
+
xie2
|
| 1207 |
+
xie3
|
| 1208 |
+
xie4
|
| 1209 |
+
xin1
|
| 1210 |
+
xin2
|
| 1211 |
+
xin4
|
| 1212 |
+
xing1
|
| 1213 |
+
xing2
|
| 1214 |
+
xing3
|
| 1215 |
+
xing4
|
| 1216 |
+
xiong1
|
| 1217 |
+
xiong2
|
| 1218 |
+
xiu1
|
| 1219 |
+
xiu3
|
| 1220 |
+
xiu4
|
| 1221 |
+
xu
|
| 1222 |
+
xu1
|
| 1223 |
+
xu2
|
| 1224 |
+
xu3
|
| 1225 |
+
xu4
|
| 1226 |
+
xuan1
|
| 1227 |
+
xuan2
|
| 1228 |
+
xuan3
|
| 1229 |
+
xuan4
|
| 1230 |
+
xue1
|
| 1231 |
+
xue2
|
| 1232 |
+
xue3
|
| 1233 |
+
xue4
|
| 1234 |
+
xun1
|
| 1235 |
+
xun2
|
| 1236 |
+
xun4
|
| 1237 |
+
y
|
| 1238 |
+
ya
|
| 1239 |
+
ya1
|
| 1240 |
+
ya2
|
| 1241 |
+
ya3
|
| 1242 |
+
ya4
|
| 1243 |
+
yan1
|
| 1244 |
+
yan2
|
| 1245 |
+
yan3
|
| 1246 |
+
yan4
|
| 1247 |
+
yang1
|
| 1248 |
+
yang2
|
| 1249 |
+
yang3
|
| 1250 |
+
yang4
|
| 1251 |
+
yao1
|
| 1252 |
+
yao2
|
| 1253 |
+
yao3
|
| 1254 |
+
yao4
|
| 1255 |
+
ye1
|
| 1256 |
+
ye2
|
| 1257 |
+
ye3
|
| 1258 |
+
ye4
|
| 1259 |
+
yi
|
| 1260 |
+
yi1
|
| 1261 |
+
yi2
|
| 1262 |
+
yi3
|
| 1263 |
+
yi4
|
| 1264 |
+
yin1
|
| 1265 |
+
yin2
|
| 1266 |
+
yin3
|
| 1267 |
+
yin4
|
| 1268 |
+
ying1
|
| 1269 |
+
ying2
|
| 1270 |
+
ying3
|
| 1271 |
+
ying4
|
| 1272 |
+
yo1
|
| 1273 |
+
yong1
|
| 1274 |
+
yong2
|
| 1275 |
+
yong3
|
| 1276 |
+
yong4
|
| 1277 |
+
you1
|
| 1278 |
+
you2
|
| 1279 |
+
you3
|
| 1280 |
+
you4
|
| 1281 |
+
yu1
|
| 1282 |
+
yu2
|
| 1283 |
+
yu3
|
| 1284 |
+
yu4
|
| 1285 |
+
yuan1
|
| 1286 |
+
yuan2
|
| 1287 |
+
yuan3
|
| 1288 |
+
yuan4
|
| 1289 |
+
yue1
|
| 1290 |
+
yue4
|
| 1291 |
+
yun1
|
| 1292 |
+
yun2
|
| 1293 |
+
yun3
|
| 1294 |
+
yun4
|
| 1295 |
+
z
|
| 1296 |
+
za1
|
| 1297 |
+
za2
|
| 1298 |
+
za3
|
| 1299 |
+
zai1
|
| 1300 |
+
zai3
|
| 1301 |
+
zai4
|
| 1302 |
+
zan1
|
| 1303 |
+
zan2
|
| 1304 |
+
zan3
|
| 1305 |
+
zan4
|
| 1306 |
+
zang1
|
| 1307 |
+
zang4
|
| 1308 |
+
zao1
|
| 1309 |
+
zao2
|
| 1310 |
+
zao3
|
| 1311 |
+
zao4
|
| 1312 |
+
ze2
|
| 1313 |
+
ze4
|
| 1314 |
+
zei2
|
| 1315 |
+
zen3
|
| 1316 |
+
zeng1
|
| 1317 |
+
zeng4
|
| 1318 |
+
zha1
|
| 1319 |
+
zha2
|
| 1320 |
+
zha3
|
| 1321 |
+
zha4
|
| 1322 |
+
zhai1
|
| 1323 |
+
zhai2
|
| 1324 |
+
zhai3
|
| 1325 |
+
zhai4
|
| 1326 |
+
zhan1
|
| 1327 |
+
zhan2
|
| 1328 |
+
zhan3
|
| 1329 |
+
zhan4
|
| 1330 |
+
zhang1
|
| 1331 |
+
zhang2
|
| 1332 |
+
zhang3
|
| 1333 |
+
zhang4
|
| 1334 |
+
zhao1
|
| 1335 |
+
zhao2
|
| 1336 |
+
zhao3
|
| 1337 |
+
zhao4
|
| 1338 |
+
zhe
|
| 1339 |
+
zhe1
|
| 1340 |
+
zhe2
|
| 1341 |
+
zhe3
|
| 1342 |
+
zhe4
|
| 1343 |
+
zhen1
|
| 1344 |
+
zhen2
|
| 1345 |
+
zhen3
|
| 1346 |
+
zhen4
|
| 1347 |
+
zheng1
|
| 1348 |
+
zheng2
|
| 1349 |
+
zheng3
|
| 1350 |
+
zheng4
|
| 1351 |
+
zhi1
|
| 1352 |
+
zhi2
|
| 1353 |
+
zhi3
|
| 1354 |
+
zhi4
|
| 1355 |
+
zhong1
|
| 1356 |
+
zhong2
|
| 1357 |
+
zhong3
|
| 1358 |
+
zhong4
|
| 1359 |
+
zhou1
|
| 1360 |
+
zhou2
|
| 1361 |
+
zhou3
|
| 1362 |
+
zhou4
|
| 1363 |
+
zhu1
|
| 1364 |
+
zhu2
|
| 1365 |
+
zhu3
|
| 1366 |
+
zhu4
|
| 1367 |
+
zhua1
|
| 1368 |
+
zhua2
|
| 1369 |
+
zhua3
|
| 1370 |
+
zhuai1
|
| 1371 |
+
zhuai3
|
| 1372 |
+
zhuai4
|
| 1373 |
+
zhuan1
|
| 1374 |
+
zhuan2
|
| 1375 |
+
zhuan3
|
| 1376 |
+
zhuan4
|
| 1377 |
+
zhuang1
|
| 1378 |
+
zhuang4
|
| 1379 |
+
zhui1
|
| 1380 |
+
zhui4
|
| 1381 |
+
zhun1
|
| 1382 |
+
zhun2
|
| 1383 |
+
zhun3
|
| 1384 |
+
zhuo1
|
| 1385 |
+
zhuo2
|
| 1386 |
+
zi
|
| 1387 |
+
zi1
|
| 1388 |
+
zi2
|
| 1389 |
+
zi3
|
| 1390 |
+
zi4
|
| 1391 |
+
zong1
|
| 1392 |
+
zong2
|
| 1393 |
+
zong3
|
| 1394 |
+
zong4
|
| 1395 |
+
zou1
|
| 1396 |
+
zou2
|
| 1397 |
+
zou3
|
| 1398 |
+
zou4
|
| 1399 |
+
zu1
|
| 1400 |
+
zu2
|
| 1401 |
+
zu3
|
| 1402 |
+
zuan1
|
| 1403 |
+
zuan3
|
| 1404 |
+
zuan4
|
| 1405 |
+
zui2
|
| 1406 |
+
zui3
|
| 1407 |
+
zui4
|
| 1408 |
+
zun1
|
| 1409 |
+
zuo
|
| 1410 |
+
zuo1
|
| 1411 |
+
zuo2
|
| 1412 |
+
zuo3
|
| 1413 |
+
zuo4
|
| 1414 |
+
{
|
| 1415 |
+
~
|
| 1416 |
+
¡
|
| 1417 |
+
¢
|
| 1418 |
+
£
|
| 1419 |
+
¥
|
| 1420 |
+
§
|
| 1421 |
+
¨
|
| 1422 |
+
©
|
| 1423 |
+
«
|
| 1424 |
+
®
|
| 1425 |
+
¯
|
| 1426 |
+
°
|
| 1427 |
+
±
|
| 1428 |
+
²
|
| 1429 |
+
³
|
| 1430 |
+
´
|
| 1431 |
+
µ
|
| 1432 |
+
·
|
| 1433 |
+
¹
|
| 1434 |
+
º
|
| 1435 |
+
»
|
| 1436 |
+
¼
|
| 1437 |
+
½
|
| 1438 |
+
¾
|
| 1439 |
+
¿
|
| 1440 |
+
À
|
| 1441 |
+
Á
|
| 1442 |
+
Â
|
| 1443 |
+
Ã
|
| 1444 |
+
Ä
|
| 1445 |
+
Å
|
| 1446 |
+
Æ
|
| 1447 |
+
Ç
|
| 1448 |
+
È
|
| 1449 |
+
É
|
| 1450 |
+
Ê
|
| 1451 |
+
Í
|
| 1452 |
+
Î
|
| 1453 |
+
Ñ
|
| 1454 |
+
Ó
|
| 1455 |
+
Ö
|
| 1456 |
+
×
|
| 1457 |
+
Ø
|
| 1458 |
+
Ú
|
| 1459 |
+
Ü
|
| 1460 |
+
Ý
|
| 1461 |
+
Þ
|
| 1462 |
+
ß
|
| 1463 |
+
à
|
| 1464 |
+
á
|
| 1465 |
+
â
|
| 1466 |
+
ã
|
| 1467 |
+
ä
|
| 1468 |
+
å
|
| 1469 |
+
æ
|
| 1470 |
+
ç
|
| 1471 |
+
è
|
| 1472 |
+
é
|
| 1473 |
+
ê
|
| 1474 |
+
ë
|
| 1475 |
+
ì
|
| 1476 |
+
í
|
| 1477 |
+
î
|
| 1478 |
+
ï
|
| 1479 |
+
ð
|
| 1480 |
+
ñ
|
| 1481 |
+
ò
|
| 1482 |
+
ó
|
| 1483 |
+
ô
|
| 1484 |
+
õ
|
| 1485 |
+
ö
|
| 1486 |
+
ø
|
| 1487 |
+
ù
|
| 1488 |
+
ú
|
| 1489 |
+
û
|
| 1490 |
+
ü
|
| 1491 |
+
ý
|
| 1492 |
+
Ā
|
| 1493 |
+
ā
|
| 1494 |
+
ă
|
| 1495 |
+
ą
|
| 1496 |
+
ć
|
| 1497 |
+
Č
|
| 1498 |
+
č
|
| 1499 |
+
Đ
|
| 1500 |
+
đ
|
| 1501 |
+
ē
|
| 1502 |
+
ė
|
| 1503 |
+
ę
|
| 1504 |
+
ě
|
| 1505 |
+
ĝ
|
| 1506 |
+
ğ
|
| 1507 |
+
ħ
|
| 1508 |
+
ī
|
| 1509 |
+
į
|
| 1510 |
+
İ
|
| 1511 |
+
ı
|
| 1512 |
+
Ł
|
| 1513 |
+
ł
|
| 1514 |
+
ń
|
| 1515 |
+
ņ
|
| 1516 |
+
ň
|
| 1517 |
+
ŋ
|
| 1518 |
+
Ō
|
| 1519 |
+
ō
|
| 1520 |
+
ő
|
| 1521 |
+
œ
|
| 1522 |
+
ř
|
| 1523 |
+
Ś
|
| 1524 |
+
ś
|
| 1525 |
+
Ş
|
| 1526 |
+
ş
|
| 1527 |
+
Š
|
| 1528 |
+
š
|
| 1529 |
+
Ť
|
| 1530 |
+
ť
|
| 1531 |
+
ũ
|
| 1532 |
+
ū
|
| 1533 |
+
ź
|
| 1534 |
+
Ż
|
| 1535 |
+
ż
|
| 1536 |
+
Ž
|
| 1537 |
+
ž
|
| 1538 |
+
ơ
|
| 1539 |
+
ư
|
| 1540 |
+
ǎ
|
| 1541 |
+
ǐ
|
| 1542 |
+
ǒ
|
| 1543 |
+
ǔ
|
| 1544 |
+
ǚ
|
| 1545 |
+
ș
|
| 1546 |
+
ț
|
| 1547 |
+
ɑ
|
| 1548 |
+
ɔ
|
| 1549 |
+
ɕ
|
| 1550 |
+
ə
|
| 1551 |
+
ɛ
|
| 1552 |
+
ɜ
|
| 1553 |
+
ɡ
|
| 1554 |
+
ɣ
|
| 1555 |
+
ɪ
|
| 1556 |
+
ɫ
|
| 1557 |
+
ɴ
|
| 1558 |
+
ɹ
|
| 1559 |
+
ɾ
|
| 1560 |
+
ʃ
|
| 1561 |
+
ʊ
|
| 1562 |
+
ʌ
|
| 1563 |
+
ʒ
|
| 1564 |
+
ʔ
|
| 1565 |
+
ʰ
|
| 1566 |
+
ʷ
|
| 1567 |
+
ʻ
|
| 1568 |
+
ʾ
|
| 1569 |
+
ʿ
|
| 1570 |
+
ˈ
|
| 1571 |
+
ː
|
| 1572 |
+
˙
|
| 1573 |
+
˜
|
| 1574 |
+
ˢ
|
| 1575 |
+
́
|
| 1576 |
+
̅
|
| 1577 |
+
Α
|
| 1578 |
+
Β
|
| 1579 |
+
Δ
|
| 1580 |
+
Ε
|
| 1581 |
+
Θ
|
| 1582 |
+
Κ
|
| 1583 |
+
Λ
|
| 1584 |
+
Μ
|
| 1585 |
+
Ξ
|
| 1586 |
+
Π
|
| 1587 |
+
Σ
|
| 1588 |
+
Τ
|
| 1589 |
+
Φ
|
| 1590 |
+
Χ
|
| 1591 |
+
Ψ
|
| 1592 |
+
Ω
|
| 1593 |
+
ά
|
| 1594 |
+
έ
|
| 1595 |
+
ή
|
| 1596 |
+
ί
|
| 1597 |
+
α
|
| 1598 |
+
β
|
| 1599 |
+
γ
|
| 1600 |
+
δ
|
| 1601 |
+
ε
|
| 1602 |
+
ζ
|
| 1603 |
+
η
|
| 1604 |
+
θ
|
| 1605 |
+
ι
|
| 1606 |
+
κ
|
| 1607 |
+
λ
|
| 1608 |
+
μ
|
| 1609 |
+
ν
|
| 1610 |
+
ξ
|
| 1611 |
+
ο
|
| 1612 |
+
π
|
| 1613 |
+
ρ
|
| 1614 |
+
ς
|
| 1615 |
+
σ
|
| 1616 |
+
τ
|
| 1617 |
+
υ
|
| 1618 |
+
φ
|
| 1619 |
+
χ
|
| 1620 |
+
ψ
|
| 1621 |
+
ω
|
| 1622 |
+
ϊ
|
| 1623 |
+
ό
|
| 1624 |
+
ύ
|
| 1625 |
+
ώ
|
| 1626 |
+
ϕ
|
| 1627 |
+
ϵ
|
| 1628 |
+
Ё
|
| 1629 |
+
А
|
| 1630 |
+
Б
|
| 1631 |
+
В
|
| 1632 |
+
Г
|
| 1633 |
+
Д
|
| 1634 |
+
Е
|
| 1635 |
+
Ж
|
| 1636 |
+
З
|
| 1637 |
+
И
|
| 1638 |
+
Й
|
| 1639 |
+
К
|
| 1640 |
+
Л
|
| 1641 |
+
М
|
| 1642 |
+
Н
|
| 1643 |
+
О
|
| 1644 |
+
П
|
| 1645 |
+
Р
|
| 1646 |
+
С
|
| 1647 |
+
Т
|
| 1648 |
+
У
|
| 1649 |
+
Ф
|
| 1650 |
+
Х
|
| 1651 |
+
Ц
|
| 1652 |
+
Ч
|
| 1653 |
+
Ш
|
| 1654 |
+
Щ
|
| 1655 |
+
Ы
|
| 1656 |
+
Ь
|
| 1657 |
+
Э
|
| 1658 |
+
Ю
|
| 1659 |
+
Я
|
| 1660 |
+
а
|
| 1661 |
+
б
|
| 1662 |
+
в
|
| 1663 |
+
г
|
| 1664 |
+
д
|
| 1665 |
+
е
|
| 1666 |
+
ж
|
| 1667 |
+
з
|
| 1668 |
+
и
|
| 1669 |
+
й
|
| 1670 |
+
к
|
| 1671 |
+
л
|
| 1672 |
+
м
|
| 1673 |
+
н
|
| 1674 |
+
о
|
| 1675 |
+
п
|
| 1676 |
+
р
|
| 1677 |
+
с
|
| 1678 |
+
т
|
| 1679 |
+
у
|
| 1680 |
+
ф
|
| 1681 |
+
х
|
| 1682 |
+
ц
|
| 1683 |
+
ч
|
| 1684 |
+
ш
|
| 1685 |
+
щ
|
| 1686 |
+
ъ
|
| 1687 |
+
ы
|
| 1688 |
+
ь
|
| 1689 |
+
э
|
| 1690 |
+
ю
|
| 1691 |
+
я
|
| 1692 |
+
ё
|
| 1693 |
+
і
|
| 1694 |
+
ְ
|
| 1695 |
+
ִ
|
| 1696 |
+
ֵ
|
| 1697 |
+
ֶ
|
| 1698 |
+
ַ
|
| 1699 |
+
ָ
|
| 1700 |
+
ֹ
|
| 1701 |
+
ּ
|
| 1702 |
+
־
|
| 1703 |
+
ׁ
|
| 1704 |
+
א
|
| 1705 |
+
ב
|
| 1706 |
+
ג
|
| 1707 |
+
ד
|
| 1708 |
+
ה
|
| 1709 |
+
ו
|
| 1710 |
+
ז
|
| 1711 |
+
ח
|
| 1712 |
+
ט
|
| 1713 |
+
י
|
| 1714 |
+
כ
|
| 1715 |
+
ל
|
| 1716 |
+
ם
|
| 1717 |
+
מ
|
| 1718 |
+
ן
|
| 1719 |
+
נ
|
| 1720 |
+
ס
|
| 1721 |
+
ע
|
| 1722 |
+
פ
|
| 1723 |
+
ק
|
| 1724 |
+
ר
|
| 1725 |
+
ש
|
| 1726 |
+
ת
|
| 1727 |
+
أ
|
| 1728 |
+
ب
|
| 1729 |
+
ة
|
| 1730 |
+
ت
|
| 1731 |
+
ج
|
| 1732 |
+
ح
|
| 1733 |
+
د
|
| 1734 |
+
ر
|
| 1735 |
+
ز
|
| 1736 |
+
س
|
| 1737 |
+
ص
|
| 1738 |
+
ط
|
| 1739 |
+
ع
|
| 1740 |
+
ق
|
| 1741 |
+
ك
|
| 1742 |
+
ل
|
| 1743 |
+
م
|
| 1744 |
+
ن
|
| 1745 |
+
ه
|
| 1746 |
+
و
|
| 1747 |
+
ي
|
| 1748 |
+
َ
|
| 1749 |
+
ُ
|
| 1750 |
+
ِ
|
| 1751 |
+
ْ
|
| 1752 |
+
ก
|
| 1753 |
+
ข
|
| 1754 |
+
ง
|
| 1755 |
+
จ
|
| 1756 |
+
ต
|
| 1757 |
+
ท
|
| 1758 |
+
น
|
| 1759 |
+
ป
|
| 1760 |
+
ย
|
| 1761 |
+
ร
|
| 1762 |
+
ว
|
| 1763 |
+
ส
|
| 1764 |
+
ห
|
| 1765 |
+
อ
|
| 1766 |
+
ฮ
|
| 1767 |
+
ั
|
| 1768 |
+
า
|
| 1769 |
+
ี
|
| 1770 |
+
ึ
|
| 1771 |
+
โ
|
| 1772 |
+
ใ
|
| 1773 |
+
ไ
|
| 1774 |
+
่
|
| 1775 |
+
้
|
| 1776 |
+
์
|
| 1777 |
+
ḍ
|
| 1778 |
+
Ḥ
|
| 1779 |
+
ḥ
|
| 1780 |
+
ṁ
|
| 1781 |
+
ṃ
|
| 1782 |
+
ṅ
|
| 1783 |
+
ṇ
|
| 1784 |
+
Ṛ
|
| 1785 |
+
ṛ
|
| 1786 |
+
Ṣ
|
| 1787 |
+
ṣ
|
| 1788 |
+
Ṭ
|
| 1789 |
+
ṭ
|
| 1790 |
+
ạ
|
| 1791 |
+
ả
|
| 1792 |
+
Ấ
|
| 1793 |
+
ấ
|
| 1794 |
+
ầ
|
| 1795 |
+
ậ
|
| 1796 |
+
ắ
|
| 1797 |
+
ằ
|
| 1798 |
+
ẻ
|
| 1799 |
+
ẽ
|
| 1800 |
+
ế
|
| 1801 |
+
ề
|
| 1802 |
+
ể
|
| 1803 |
+
ễ
|
| 1804 |
+
ệ
|
| 1805 |
+
ị
|
| 1806 |
+
ọ
|
| 1807 |
+
ỏ
|
| 1808 |
+
ố
|
| 1809 |
+
ồ
|
| 1810 |
+
ộ
|
| 1811 |
+
ớ
|
| 1812 |
+
ờ
|
| 1813 |
+
ở
|
| 1814 |
+
ụ
|
| 1815 |
+
ủ
|
| 1816 |
+
ứ
|
| 1817 |
+
ữ
|
| 1818 |
+
ἀ
|
| 1819 |
+
ἁ
|
| 1820 |
+
Ἀ
|
| 1821 |
+
ἐ
|
| 1822 |
+
ἔ
|
| 1823 |
+
ἰ
|
| 1824 |
+
ἱ
|
| 1825 |
+
ὀ
|
| 1826 |
+
ὁ
|
| 1827 |
+
ὐ
|
| 1828 |
+
ὲ
|
| 1829 |
+
ὸ
|
| 1830 |
+
���
|
| 1831 |
+
᾽
|
| 1832 |
+
ῆ
|
| 1833 |
+
ῇ
|
| 1834 |
+
ῶ
|
| 1835 |
+
|
| 1836 |
+
‑
|
| 1837 |
+
‒
|
| 1838 |
+
–
|
| 1839 |
+
—
|
| 1840 |
+
―
|
| 1841 |
+
‖
|
| 1842 |
+
†
|
| 1843 |
+
‡
|
| 1844 |
+
•
|
| 1845 |
+
…
|
| 1846 |
+
‧
|
| 1847 |
+
|
| 1848 |
+
′
|
| 1849 |
+
″
|
| 1850 |
+
⁄
|
| 1851 |
+
|
| 1852 |
+
⁰
|
| 1853 |
+
⁴
|
| 1854 |
+
⁵
|
| 1855 |
+
⁶
|
| 1856 |
+
⁷
|
| 1857 |
+
⁸
|
| 1858 |
+
⁹
|
| 1859 |
+
₁
|
| 1860 |
+
₂
|
| 1861 |
+
₃
|
| 1862 |
+
€
|
| 1863 |
+
₱
|
| 1864 |
+
₹
|
| 1865 |
+
₽
|
| 1866 |
+
℃
|
| 1867 |
+
ℏ
|
| 1868 |
+
ℓ
|
| 1869 |
+
№
|
| 1870 |
+
ℝ
|
| 1871 |
+
™
|
| 1872 |
+
⅓
|
| 1873 |
+
⅔
|
| 1874 |
+
⅛
|
| 1875 |
+
→
|
| 1876 |
+
∂
|
| 1877 |
+
∈
|
| 1878 |
+
∑
|
| 1879 |
+
−
|
| 1880 |
+
∗
|
| 1881 |
+
√
|
| 1882 |
+
∞
|
| 1883 |
+
∫
|
| 1884 |
+
≈
|
| 1885 |
+
≠
|
| 1886 |
+
≡
|
| 1887 |
+
≤
|
| 1888 |
+
≥
|
| 1889 |
+
⋅
|
| 1890 |
+
⋯
|
| 1891 |
+
█
|
| 1892 |
+
♪
|
| 1893 |
+
⟨
|
| 1894 |
+
⟩
|
| 1895 |
+
、
|
| 1896 |
+
。
|
| 1897 |
+
《
|
| 1898 |
+
》
|
| 1899 |
+
「
|
| 1900 |
+
」
|
| 1901 |
+
【
|
| 1902 |
+
】
|
| 1903 |
+
あ
|
| 1904 |
+
う
|
| 1905 |
+
え
|
| 1906 |
+
お
|
| 1907 |
+
か
|
| 1908 |
+
が
|
| 1909 |
+
き
|
| 1910 |
+
ぎ
|
| 1911 |
+
く
|
| 1912 |
+
ぐ
|
| 1913 |
+
け
|
| 1914 |
+
げ
|
| 1915 |
+
こ
|
| 1916 |
+
ご
|
| 1917 |
+
さ
|
| 1918 |
+
し
|
| 1919 |
+
じ
|
| 1920 |
+
す
|
| 1921 |
+
ず
|
| 1922 |
+
せ
|
| 1923 |
+
ぜ
|
| 1924 |
+
そ
|
| 1925 |
+
ぞ
|
| 1926 |
+
た
|
| 1927 |
+
だ
|
| 1928 |
+
ち
|
| 1929 |
+
っ
|
| 1930 |
+
つ
|
| 1931 |
+
で
|
| 1932 |
+
と
|
| 1933 |
+
ど
|
| 1934 |
+
な
|
| 1935 |
+
に
|
| 1936 |
+
ね
|
| 1937 |
+
の
|
| 1938 |
+
は
|
| 1939 |
+
ば
|
| 1940 |
+
ひ
|
| 1941 |
+
ぶ
|
| 1942 |
+
へ
|
| 1943 |
+
べ
|
| 1944 |
+
ま
|
| 1945 |
+
み
|
| 1946 |
+
む
|
| 1947 |
+
め
|
| 1948 |
+
も
|
| 1949 |
+
ゃ
|
| 1950 |
+
や
|
| 1951 |
+
ゆ
|
| 1952 |
+
ょ
|
| 1953 |
+
よ
|
| 1954 |
+
ら
|
| 1955 |
+
り
|
| 1956 |
+
る
|
| 1957 |
+
れ
|
| 1958 |
+
ろ
|
| 1959 |
+
わ
|
| 1960 |
+
を
|
| 1961 |
+
ん
|
| 1962 |
+
ァ
|
| 1963 |
+
ア
|
| 1964 |
+
ィ
|
| 1965 |
+
イ
|
| 1966 |
+
ウ
|
| 1967 |
+
ェ
|
| 1968 |
+
エ
|
| 1969 |
+
オ
|
| 1970 |
+
カ
|
| 1971 |
+
ガ
|
| 1972 |
+
キ
|
| 1973 |
+
ク
|
| 1974 |
+
ケ
|
| 1975 |
+
ゲ
|
| 1976 |
+
コ
|
| 1977 |
+
ゴ
|
| 1978 |
+
サ
|
| 1979 |
+
ザ
|
| 1980 |
+
シ
|
| 1981 |
+
ジ
|
| 1982 |
+
ス
|
| 1983 |
+
ズ
|
| 1984 |
+
セ
|
| 1985 |
+
ゾ
|
| 1986 |
+
タ
|
| 1987 |
+
ダ
|
| 1988 |
+
チ
|
| 1989 |
+
ッ
|
| 1990 |
+
ツ
|
| 1991 |
+
テ
|
| 1992 |
+
デ
|
| 1993 |
+
ト
|
| 1994 |
+
ド
|
| 1995 |
+
ナ
|
| 1996 |
+
ニ
|
| 1997 |
+
ネ
|
| 1998 |
+
ノ
|
| 1999 |
+
バ
|
| 2000 |
+
パ
|
| 2001 |
+
ビ
|
| 2002 |
+
ピ
|
| 2003 |
+
フ
|
| 2004 |
+
プ
|
| 2005 |
+
ヘ
|
| 2006 |
+
ベ
|
| 2007 |
+
ペ
|
| 2008 |
+
ホ
|
| 2009 |
+
ボ
|
| 2010 |
+
ポ
|
| 2011 |
+
マ
|
| 2012 |
+
ミ
|
| 2013 |
+
ム
|
| 2014 |
+
メ
|
| 2015 |
+
モ
|
| 2016 |
+
ャ
|
| 2017 |
+
ヤ
|
| 2018 |
+
ュ
|
| 2019 |
+
ユ
|
| 2020 |
+
ョ
|
| 2021 |
+
ヨ
|
| 2022 |
+
ラ
|
| 2023 |
+
リ
|
| 2024 |
+
ル
|
| 2025 |
+
レ
|
| 2026 |
+
ロ
|
| 2027 |
+
ワ
|
| 2028 |
+
ン
|
| 2029 |
+
・
|
| 2030 |
+
ー
|
| 2031 |
+
ㄋ
|
| 2032 |
+
ㄍ
|
| 2033 |
+
ㄎ
|
| 2034 |
+
ㄏ
|
| 2035 |
+
ㄓ
|
| 2036 |
+
ㄕ
|
| 2037 |
+
ㄚ
|
| 2038 |
+
ㄜ
|
| 2039 |
+
ㄟ
|
| 2040 |
+
ㄤ
|
| 2041 |
+
ㄥ
|
| 2042 |
+
ㄧ
|
| 2043 |
+
ㄱ
|
| 2044 |
+
ㄴ
|
| 2045 |
+
ㄷ
|
| 2046 |
+
ㄹ
|
| 2047 |
+
ㅁ
|
| 2048 |
+
ㅂ
|
| 2049 |
+
ㅅ
|
| 2050 |
+
ㅈ
|
| 2051 |
+
ㅍ
|
| 2052 |
+
ㅎ
|
| 2053 |
+
ㅏ
|
| 2054 |
+
ㅓ
|
| 2055 |
+
ㅗ
|
| 2056 |
+
ㅜ
|
| 2057 |
+
ㅡ
|
| 2058 |
+
ㅣ
|
| 2059 |
+
㗎
|
| 2060 |
+
가
|
| 2061 |
+
각
|
| 2062 |
+
간
|
| 2063 |
+
갈
|
| 2064 |
+
감
|
| 2065 |
+
갑
|
| 2066 |
+
갓
|
| 2067 |
+
갔
|
| 2068 |
+
강
|
| 2069 |
+
같
|
| 2070 |
+
개
|
| 2071 |
+
거
|
| 2072 |
+
건
|
| 2073 |
+
걸
|
| 2074 |
+
겁
|
| 2075 |
+
것
|
| 2076 |
+
겉
|
| 2077 |
+
게
|
| 2078 |
+
겠
|
| 2079 |
+
겨
|
| 2080 |
+
결
|
| 2081 |
+
겼
|
| 2082 |
+
경
|
| 2083 |
+
계
|
| 2084 |
+
고
|
| 2085 |
+
곤
|
| 2086 |
+
골
|
| 2087 |
+
곱
|
| 2088 |
+
공
|
| 2089 |
+
과
|
| 2090 |
+
관
|
| 2091 |
+
광
|
| 2092 |
+
교
|
| 2093 |
+
구
|
| 2094 |
+
국
|
| 2095 |
+
굴
|
| 2096 |
+
귀
|
| 2097 |
+
귄
|
| 2098 |
+
그
|
| 2099 |
+
근
|
| 2100 |
+
글
|
| 2101 |
+
금
|
| 2102 |
+
기
|
| 2103 |
+
긴
|
| 2104 |
+
길
|
| 2105 |
+
까
|
| 2106 |
+
깍
|
| 2107 |
+
깔
|
| 2108 |
+
깜
|
| 2109 |
+
깨
|
| 2110 |
+
께
|
| 2111 |
+
꼬
|
| 2112 |
+
꼭
|
| 2113 |
+
꽃
|
| 2114 |
+
꾸
|
| 2115 |
+
꿔
|
| 2116 |
+
끔
|
| 2117 |
+
끗
|
| 2118 |
+
끝
|
| 2119 |
+
끼
|
| 2120 |
+
나
|
| 2121 |
+
난
|
| 2122 |
+
날
|
| 2123 |
+
남
|
| 2124 |
+
납
|
| 2125 |
+
내
|
| 2126 |
+
냐
|
| 2127 |
+
냥
|
| 2128 |
+
너
|
| 2129 |
+
넘
|
| 2130 |
+
넣
|
| 2131 |
+
네
|
| 2132 |
+
녁
|
| 2133 |
+
년
|
| 2134 |
+
녕
|
| 2135 |
+
노
|
| 2136 |
+
녹
|
| 2137 |
+
놀
|
| 2138 |
+
누
|
| 2139 |
+
눈
|
| 2140 |
+
느
|
| 2141 |
+
는
|
| 2142 |
+
늘
|
| 2143 |
+
니
|
| 2144 |
+
님
|
| 2145 |
+
닙
|
| 2146 |
+
다
|
| 2147 |
+
닥
|
| 2148 |
+
단
|
| 2149 |
+
달
|
| 2150 |
+
닭
|
| 2151 |
+
당
|
| 2152 |
+
대
|
| 2153 |
+
더
|
| 2154 |
+
덕
|
| 2155 |
+
던
|
| 2156 |
+
덥
|
| 2157 |
+
데
|
| 2158 |
+
도
|
| 2159 |
+
독
|
| 2160 |
+
동
|
| 2161 |
+
돼
|
| 2162 |
+
됐
|
| 2163 |
+
되
|
| 2164 |
+
된
|
| 2165 |
+
될
|
| 2166 |
+
두
|
| 2167 |
+
둑
|
| 2168 |
+
둥
|
| 2169 |
+
드
|
| 2170 |
+
들
|
| 2171 |
+
등
|
| 2172 |
+
디
|
| 2173 |
+
따
|
| 2174 |
+
딱
|
| 2175 |
+
딸
|
| 2176 |
+
땅
|
| 2177 |
+
때
|
| 2178 |
+
떤
|
| 2179 |
+
떨
|
| 2180 |
+
떻
|
| 2181 |
+
또
|
| 2182 |
+
똑
|
| 2183 |
+
뚱
|
| 2184 |
+
뛰
|
| 2185 |
+
뜻
|
| 2186 |
+
띠
|
| 2187 |
+
라
|
| 2188 |
+
락
|
| 2189 |
+
란
|
| 2190 |
+
람
|
| 2191 |
+
랍
|
| 2192 |
+
랑
|
| 2193 |
+
래
|
| 2194 |
+
랜
|
| 2195 |
+
러
|
| 2196 |
+
런
|
| 2197 |
+
럼
|
| 2198 |
+
렇
|
| 2199 |
+
레
|
| 2200 |
+
려
|
| 2201 |
+
력
|
| 2202 |
+
렵
|
| 2203 |
+
렸
|
| 2204 |
+
로
|
| 2205 |
+
록
|
| 2206 |
+
롬
|
| 2207 |
+
루
|
| 2208 |
+
르
|
| 2209 |
+
른
|
| 2210 |
+
를
|
| 2211 |
+
름
|
| 2212 |
+
릉
|
| 2213 |
+
리
|
| 2214 |
+
릴
|
| 2215 |
+
림
|
| 2216 |
+
마
|
| 2217 |
+
막
|
| 2218 |
+
만
|
| 2219 |
+
많
|
| 2220 |
+
말
|
| 2221 |
+
맑
|
| 2222 |
+
맙
|
| 2223 |
+
맛
|
| 2224 |
+
매
|
| 2225 |
+
머
|
| 2226 |
+
먹
|
| 2227 |
+
멍
|
| 2228 |
+
메
|
| 2229 |
+
면
|
| 2230 |
+
명
|
| 2231 |
+
몇
|
| 2232 |
+
모
|
| 2233 |
+
목
|
| 2234 |
+
몸
|
| 2235 |
+
못
|
| 2236 |
+
무
|
| 2237 |
+
문
|
| 2238 |
+
물
|
| 2239 |
+
뭐
|
| 2240 |
+
뭘
|
| 2241 |
+
미
|
| 2242 |
+
민
|
| 2243 |
+
밌
|
| 2244 |
+
밑
|
| 2245 |
+
바
|
| 2246 |
+
박
|
| 2247 |
+
밖
|
| 2248 |
+
반
|
| 2249 |
+
받
|
| 2250 |
+
발
|
| 2251 |
+
밤
|
| 2252 |
+
밥
|
| 2253 |
+
방
|
| 2254 |
+
배
|
| 2255 |
+
백
|
| 2256 |
+
밸
|
| 2257 |
+
뱀
|
| 2258 |
+
버
|
| 2259 |
+
번
|
| 2260 |
+
벌
|
| 2261 |
+
벚
|
| 2262 |
+
베
|
| 2263 |
+
벼
|
| 2264 |
+
벽
|
| 2265 |
+
별
|
| 2266 |
+
병
|
| 2267 |
+
보
|
| 2268 |
+
복
|
| 2269 |
+
본
|
| 2270 |
+
볼
|
| 2271 |
+
봐
|
| 2272 |
+
봤
|
| 2273 |
+
부
|
| 2274 |
+
분
|
| 2275 |
+
불
|
| 2276 |
+
비
|
| 2277 |
+
빔
|
| 2278 |
+
빛
|
| 2279 |
+
빠
|
| 2280 |
+
빨
|
| 2281 |
+
뼈
|
| 2282 |
+
뽀
|
| 2283 |
+
뿅
|
| 2284 |
+
쁘
|
| 2285 |
+
사
|
| 2286 |
+
산
|
| 2287 |
+
살
|
| 2288 |
+
삼
|
| 2289 |
+
샀
|
| 2290 |
+
상
|
| 2291 |
+
새
|
| 2292 |
+
색
|
| 2293 |
+
생
|
| 2294 |
+
서
|
| 2295 |
+
선
|
| 2296 |
+
설
|
| 2297 |
+
섭
|
| 2298 |
+
섰
|
| 2299 |
+
성
|
| 2300 |
+
세
|
| 2301 |
+
셔
|
| 2302 |
+
션
|
| 2303 |
+
셨
|
| 2304 |
+
소
|
| 2305 |
+
속
|
| 2306 |
+
손
|
| 2307 |
+
송
|
| 2308 |
+
수
|
| 2309 |
+
숙
|
| 2310 |
+
순
|
| 2311 |
+
술
|
| 2312 |
+
숫
|
| 2313 |
+
숭
|
| 2314 |
+
숲
|
| 2315 |
+
쉬
|
| 2316 |
+
쉽
|
| 2317 |
+
스
|
| 2318 |
+
슨
|
| 2319 |
+
습
|
| 2320 |
+
슷
|
| 2321 |
+
시
|
| 2322 |
+
식
|
| 2323 |
+
신
|
| 2324 |
+
실
|
| 2325 |
+
싫
|
| 2326 |
+
심
|
| 2327 |
+
십
|
| 2328 |
+
싶
|
| 2329 |
+
싸
|
| 2330 |
+
써
|
| 2331 |
+
쓰
|
| 2332 |
+
쓴
|
| 2333 |
+
씌
|
| 2334 |
+
씨
|
| 2335 |
+
씩
|
| 2336 |
+
씬
|
| 2337 |
+
아
|
| 2338 |
+
악
|
| 2339 |
+
안
|
| 2340 |
+
않
|
| 2341 |
+
알
|
| 2342 |
+
야
|
| 2343 |
+
약
|
| 2344 |
+
얀
|
| 2345 |
+
양
|
| 2346 |
+
얘
|
| 2347 |
+
어
|
| 2348 |
+
언
|
| 2349 |
+
얼
|
| 2350 |
+
엄
|
| 2351 |
+
업
|
| 2352 |
+
없
|
| 2353 |
+
었
|
| 2354 |
+
엉
|
| 2355 |
+
에
|
| 2356 |
+
여
|
| 2357 |
+
역
|
| 2358 |
+
연
|
| 2359 |
+
염
|
| 2360 |
+
엽
|
| 2361 |
+
영
|
| 2362 |
+
옆
|
| 2363 |
+
예
|
| 2364 |
+
옛
|
| 2365 |
+
오
|
| 2366 |
+
온
|
| 2367 |
+
올
|
| 2368 |
+
옷
|
| 2369 |
+
옹
|
| 2370 |
+
와
|
| 2371 |
+
왔
|
| 2372 |
+
왜
|
| 2373 |
+
요
|
| 2374 |
+
욕
|
| 2375 |
+
용
|
| 2376 |
+
우
|
| 2377 |
+
운
|
| 2378 |
+
울
|
| 2379 |
+
웃
|
| 2380 |
+
워
|
| 2381 |
+
원
|
| 2382 |
+
월
|
| 2383 |
+
웠
|
| 2384 |
+
위
|
| 2385 |
+
윙
|
| 2386 |
+
유
|
| 2387 |
+
육
|
| 2388 |
+
윤
|
| 2389 |
+
으
|
| 2390 |
+
은
|
| 2391 |
+
을
|
| 2392 |
+
음
|
| 2393 |
+
응
|
| 2394 |
+
의
|
| 2395 |
+
이
|
| 2396 |
+
익
|
| 2397 |
+
인
|
| 2398 |
+
일
|
| 2399 |
+
읽
|
| 2400 |
+
임
|
| 2401 |
+
입
|
| 2402 |
+
있
|
| 2403 |
+
자
|
| 2404 |
+
작
|
| 2405 |
+
잔
|
| 2406 |
+
잖
|
| 2407 |
+
잘
|
| 2408 |
+
잡
|
| 2409 |
+
잤
|
| 2410 |
+
장
|
| 2411 |
+
재
|
| 2412 |
+
저
|
| 2413 |
+
전
|
| 2414 |
+
점
|
| 2415 |
+
정
|
| 2416 |
+
제
|
| 2417 |
+
져
|
| 2418 |
+
졌
|
| 2419 |
+
조
|
| 2420 |
+
족
|
| 2421 |
+
좀
|
| 2422 |
+
종
|
| 2423 |
+
좋
|
| 2424 |
+
죠
|
| 2425 |
+
주
|
| 2426 |
+
준
|
| 2427 |
+
줄
|
| 2428 |
+
중
|
| 2429 |
+
줘
|
| 2430 |
+
즈
|
| 2431 |
+
즐
|
| 2432 |
+
즘
|
| 2433 |
+
지
|
| 2434 |
+
진
|
| 2435 |
+
집
|
| 2436 |
+
짜
|
| 2437 |
+
짝
|
| 2438 |
+
쩌
|
| 2439 |
+
쪼
|
| 2440 |
+
쪽
|
| 2441 |
+
쫌
|
| 2442 |
+
쭈
|
| 2443 |
+
쯔
|
| 2444 |
+
찌
|
| 2445 |
+
찍
|
| 2446 |
+
차
|
| 2447 |
+
착
|
| 2448 |
+
찾
|
| 2449 |
+
책
|
| 2450 |
+
처
|
| 2451 |
+
천
|
| 2452 |
+
철
|
| 2453 |
+
체
|
| 2454 |
+
쳐
|
| 2455 |
+
쳤
|
| 2456 |
+
초
|
| 2457 |
+
촌
|
| 2458 |
+
추
|
| 2459 |
+
출
|
| 2460 |
+
춤
|
| 2461 |
+
춥
|
| 2462 |
+
춰
|
| 2463 |
+
치
|
| 2464 |
+
친
|
| 2465 |
+
칠
|
| 2466 |
+
침
|
| 2467 |
+
칩
|
| 2468 |
+
칼
|
| 2469 |
+
커
|
| 2470 |
+
켓
|
| 2471 |
+
코
|
| 2472 |
+
콩
|
| 2473 |
+
쿠
|
| 2474 |
+
퀴
|
| 2475 |
+
크
|
| 2476 |
+
큰
|
| 2477 |
+
큽
|
| 2478 |
+
키
|
| 2479 |
+
킨
|
| 2480 |
+
타
|
| 2481 |
+
태
|
| 2482 |
+
터
|
| 2483 |
+
턴
|
| 2484 |
+
털
|
| 2485 |
+
테
|
| 2486 |
+
토
|
| 2487 |
+
통
|
| 2488 |
+
투
|
| 2489 |
+
트
|
| 2490 |
+
특
|
| 2491 |
+
튼
|
| 2492 |
+
틀
|
| 2493 |
+
티
|
| 2494 |
+
팀
|
| 2495 |
+
파
|
| 2496 |
+
팔
|
| 2497 |
+
패
|
| 2498 |
+
페
|
| 2499 |
+
펜
|
| 2500 |
+
펭
|
| 2501 |
+
평
|
| 2502 |
+
포
|
| 2503 |
+
폭
|
| 2504 |
+
표
|
| 2505 |
+
품
|
| 2506 |
+
풍
|
| 2507 |
+
프
|
| 2508 |
+
플
|
| 2509 |
+
피
|
| 2510 |
+
필
|
| 2511 |
+
하
|
| 2512 |
+
학
|
| 2513 |
+
한
|
| 2514 |
+
할
|
| 2515 |
+
함
|
| 2516 |
+
합
|
| 2517 |
+
항
|
| 2518 |
+
해
|
| 2519 |
+
햇
|
| 2520 |
+
했
|
| 2521 |
+
행
|
| 2522 |
+
허
|
| 2523 |
+
험
|
| 2524 |
+
형
|
| 2525 |
+
혜
|
| 2526 |
+
호
|
| 2527 |
+
혼
|
| 2528 |
+
홀
|
| 2529 |
+
화
|
| 2530 |
+
회
|
| 2531 |
+
획
|
| 2532 |
+
후
|
| 2533 |
+
휴
|
| 2534 |
+
흐
|
| 2535 |
+
흔
|
| 2536 |
+
희
|
| 2537 |
+
히
|
| 2538 |
+
힘
|
| 2539 |
+
ﷺ
|
| 2540 |
+
ﷻ
|
| 2541 |
+
!
|
| 2542 |
+
,
|
| 2543 |
+
?
|
| 2544 |
+
�
|
| 2545 |
+
𠮶
|
| 2546 |
+
ක
|
| 2547 |
+
ු
|
| 2548 |
+
ඹ
|
| 2549 |
+
ර
|
| 2550 |
+
ග
|
| 2551 |
+
ො
|
| 2552 |
+
ව
|
| 2553 |
+
ි
|
| 2554 |
+
ය
|
| 2555 |
+
ා
|
| 2556 |
+
ට
|
| 2557 |
+
ී
|
| 2558 |
+
ල
|
| 2559 |
+
බ
|
| 2560 |
+
ැ
|
| 2561 |
+
න
|
| 2562 |
+
ම
|
| 2563 |
+
උ
|
| 2564 |
+
ප
|
| 2565 |
+
්
|
| 2566 |
+
ශ
|
| 2567 |
+
ෙ
|
| 2568 |
+
හ
|
| 2569 |
+
එ
|
| 2570 |
+
ත
|
| 2571 |
+
ේ
|
| 2572 |
+
ඔ
|
| 2573 |
+
ූ
|
| 2574 |
+
ෝ
|
| 2575 |
+
ජ
|
| 2576 |
+
ණ
|
| 2577 |
+
ස
|
| 2578 |
+
අ
|
| 2579 |
+
ද
|
| 2580 |
+
ළ
|
| 2581 |
+
ෂ
|
| 2582 |
+
ඒ
|
| 2583 |
+
ධ
|
| 2584 |
+
ඥ
|
| 2585 |
+
ඇ
|
| 2586 |
+
ථ
|
| 2587 |
+
ඳ
|
| 2588 |
+
ෞ
|
| 2589 |
+
ච
|
| 2590 |
+
ං
|
| 2591 |
+
ඛ
|
| 2592 |
+
ඝ
|
| 2593 |
+
ඉ
|
| 2594 |
+
ආ
|
| 2595 |
+
ඃ
|
| 2596 |
+
භ
|
| 2597 |
+
ෘ
|
| 2598 |
+
ඵ
|
| 2599 |
+
ඩ
|
| 2600 |
+
ඍ
|
| 2601 |
+
ෑ
|
| 2602 |
+
ඟ
|
| 2603 |
+
ෛ
|
| 2604 |
+
ඡ
|
| 2605 |
+
ඤ
|
| 2606 |
+
ඬ
|
| 2607 |
+
ඕ
|
| 2608 |
+
ඣ
|
| 2609 |
+
ඊ
|
| 2610 |
+
ඈ
|
| 2611 |
+
ඨ
|
| 2612 |
+
ඞ
|
| 2613 |
+
ඪ
|
| 2614 |
+
ෲ
|
| 2615 |
+
ඌ
|
| 2616 |
+
ෆ
|
| 2617 |
+
ඖ
|
| 2618 |
+
ෟ
|
| 2619 |
+
ඓ
|
si/tts-si-F5-TTS/output/01.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:12d03a35e1b85387755376be541f07ed5e6c587e5f61a043367e9ecda92cab33
|
| 3 |
+
size 200748
|
si/tts-si-F5-TTS/output/02.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6b6a916e37829ffa0ccefe65342de3b639a10698e4aff494930737e85ac5bf5c
|
| 3 |
+
size 649070
|
si/tts-si-F5-TTS/run.bat
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
echo on
|
| 2 |
+
venv\Scripts\python src\f5_tts\infer\custom_gradio.py
|
| 3 |
+
pause
|
si/tts-si-F5-TTS/source.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
https://huggingface.co/tharindumihi/tts-si-F5-TTS
|
si/tts-si-F5-TTS/src/f5_tts/infer/custom_gradio.py
ADDED
|
@@ -0,0 +1,274 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import gradio as gr
|
| 2 |
+
from pathlib import Path
|
| 3 |
+
|
| 4 |
+
import tomli
|
| 5 |
+
|
| 6 |
+
# Import the refactored functions from your infer_cli.py file
|
| 7 |
+
from infer_cli_custom import load_models_for_gradio, run_inference_process
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
# ------------------ Paths ------------------
|
| 11 |
+
BASE_DIR = Path.cwd()
|
| 12 |
+
CKPT_DIR = BASE_DIR / "ckpts"
|
| 13 |
+
UPLOADS = BASE_DIR / "uploads"
|
| 14 |
+
OUTPUT_DIR = BASE_DIR / "output"
|
| 15 |
+
OUTPUT_DIR.mkdir(exist_ok=True)
|
| 16 |
+
|
| 17 |
+
# Global variables to hold the loaded models
|
| 18 |
+
# They are initialized to None.
|
| 19 |
+
ema_model = None
|
| 20 |
+
vocoder = None
|
| 21 |
+
prediction_model = None
|
| 22 |
+
|
| 23 |
+
def list_projects():
|
| 24 |
+
if CKPT_DIR.exists():
|
| 25 |
+
return sorted([p.name for p in CKPT_DIR.iterdir() if p.is_dir()])
|
| 26 |
+
return []
|
| 27 |
+
|
| 28 |
+
def list_checkpoints(project_name):
|
| 29 |
+
p = CKPT_DIR / project_name
|
| 30 |
+
if p.exists():
|
| 31 |
+
# print([f.name for f in p.glob("*.pt")])
|
| 32 |
+
return sorted([f.name for f in p.glob("*.pt")], reverse=True)
|
| 33 |
+
return []
|
| 34 |
+
|
| 35 |
+
def get_vocab_path(project_name):
|
| 36 |
+
p = CKPT_DIR / project_name / "vocab.txt"
|
| 37 |
+
return str(p) if p.exists() else ""
|
| 38 |
+
|
| 39 |
+
def unique_output_for_checkpoint(checkpoint_name):
|
| 40 |
+
"""
|
| 41 |
+
Produce next available output file path inside 'output' folder:
|
| 42 |
+
e.g. checkpoint model_175000.pt -> output/175000_1.wav, 175000_2.wav ...
|
| 43 |
+
"""
|
| 44 |
+
name = Path(checkpoint_name).name
|
| 45 |
+
if "model_" in name:
|
| 46 |
+
step = name.split("model_")[-1].split(".")[0]
|
| 47 |
+
else:
|
| 48 |
+
step = name.split(".")[0]
|
| 49 |
+
idx = 1
|
| 50 |
+
while True:
|
| 51 |
+
candidate = OUTPUT_DIR / f"{step}_{idx}.wav"
|
| 52 |
+
if not candidate.exists():
|
| 53 |
+
return str(candidate)
|
| 54 |
+
idx += 1
|
| 55 |
+
|
| 56 |
+
|
| 57 |
+
def _save_uploaded(uploaded):
|
| 58 |
+
"""
|
| 59 |
+
Accept various gradio upload types and return a usable filepath (string) or None.
|
| 60 |
+
Handles:
|
| 61 |
+
- filepath string (already an on-disk path)
|
| 62 |
+
- object with .name pointing to temp file
|
| 63 |
+
- dict {"name":..., "data":...}
|
| 64 |
+
- file-like with .read()
|
| 65 |
+
- bytes
|
| 66 |
+
Saves non-path uploads into uploads/ folder.
|
| 67 |
+
"""
|
| 68 |
+
if uploaded is None:
|
| 69 |
+
return None
|
| 70 |
+
|
| 71 |
+
# 1) already a filepath string
|
| 72 |
+
if isinstance(uploaded, str) and Path(uploaded).exists():
|
| 73 |
+
return str(Path(uploaded))
|
| 74 |
+
|
| 75 |
+
# 2) gr returns object with .name pointing to a temp file path
|
| 76 |
+
if hasattr(uploaded, "name") and isinstance(uploaded.name, str) and Path(uploaded.name).exists():
|
| 77 |
+
return str(Path(uploaded.name))
|
| 78 |
+
|
| 79 |
+
# 3) dict { "name": "xxx.wav", "data": b"..." }
|
| 80 |
+
if isinstance(uploaded, dict):
|
| 81 |
+
# if name is a path
|
| 82 |
+
name_val = uploaded.get("name")
|
| 83 |
+
if isinstance(name_val, str) and Path(name_val).exists():
|
| 84 |
+
return str(Path(name_val))
|
| 85 |
+
# else write data
|
| 86 |
+
data = uploaded.get("data")
|
| 87 |
+
filename = name_val or "ref_upload.wav"
|
| 88 |
+
dest = UPLOADS / filename
|
| 89 |
+
# normalize memoryview
|
| 90 |
+
if isinstance(data, memoryview):
|
| 91 |
+
data = data.tobytes()
|
| 92 |
+
with open(dest, "wb") as fw:
|
| 93 |
+
fw.write(data)
|
| 94 |
+
return str(dest)
|
| 95 |
+
|
| 96 |
+
# 4) file-like object with .read()
|
| 97 |
+
if hasattr(uploaded, "read"):
|
| 98 |
+
# name if present
|
| 99 |
+
filename = getattr(uploaded, "name", "ref_upload.wav")
|
| 100 |
+
# clean filename (if it is a full path, use its name)
|
| 101 |
+
filename = Path(filename).name
|
| 102 |
+
dest = UPLOADS / filename
|
| 103 |
+
# if exists, add suffix
|
| 104 |
+
if dest.exists():
|
| 105 |
+
i = 1
|
| 106 |
+
while True:
|
| 107 |
+
cand = UPLOADS / f"{dest.stem}_{i}{dest.suffix}"
|
| 108 |
+
if not cand.exists():
|
| 109 |
+
dest = cand
|
| 110 |
+
break
|
| 111 |
+
i += 1
|
| 112 |
+
data = uploaded.read()
|
| 113 |
+
if isinstance(data, memoryview):
|
| 114 |
+
data = data.tobytes()
|
| 115 |
+
with open(dest, "wb") as fw:
|
| 116 |
+
fw.write(data)
|
| 117 |
+
return str(dest)
|
| 118 |
+
|
| 119 |
+
# 5) raw bytes
|
| 120 |
+
if isinstance(uploaded, (bytes, bytearray)):
|
| 121 |
+
dest = UPLOADS / "ref_bytes.wav"
|
| 122 |
+
with open(dest, "wb") as fw:
|
| 123 |
+
fw.write(uploaded)
|
| 124 |
+
return str(dest)
|
| 125 |
+
|
| 126 |
+
# fallback: try cast to str
|
| 127 |
+
try:
|
| 128 |
+
s = str(uploaded)
|
| 129 |
+
if Path(s).exists():
|
| 130 |
+
return s
|
| 131 |
+
except Exception:
|
| 132 |
+
pass
|
| 133 |
+
|
| 134 |
+
return None
|
| 135 |
+
|
| 136 |
+
def preview_ref_audio(uploaded):
|
| 137 |
+
"""
|
| 138 |
+
Called when ref audio is uploaded. Return a filepath that gr.Audio can play.
|
| 139 |
+
"""
|
| 140 |
+
path = _save_uploaded(uploaded)
|
| 141 |
+
return path # gr.Audio(type="filepath") accepts this
|
| 142 |
+
|
| 143 |
+
def refresh_projects_cb():
|
| 144 |
+
projects = list_projects()
|
| 145 |
+
if projects:
|
| 146 |
+
first = projects[0]
|
| 147 |
+
ckpts = list_checkpoints(first)
|
| 148 |
+
vocab = get_vocab_path(first)
|
| 149 |
+
return (
|
| 150 |
+
gr.update(choices=projects, value=first),
|
| 151 |
+
gr.update(choices=ckpts, value=(ckpts[0] if ckpts else None)),
|
| 152 |
+
gr.update(value=vocab),
|
| 153 |
+
)
|
| 154 |
+
else:
|
| 155 |
+
return gr.update(choices=[], value=None), gr.update(choices=[], value=None), gr.update(value="")
|
| 156 |
+
|
| 157 |
+
def update_ui(project_name):
|
| 158 |
+
ckpts = list_checkpoints(project_name) if project_name else []
|
| 159 |
+
vocab = get_vocab_path(project_name) if project_name else ""
|
| 160 |
+
return gr.update(choices=ckpts, value=(ckpts[0] if ckpts else None)), gr.update(value=vocab)
|
| 161 |
+
|
| 162 |
+
def generate_tts_cb(project, checkpoint, vocab_file, ref_audio, ref_text, gen_text, speed, remove_silence, output_file):
|
| 163 |
+
global ema_model, vocoder, prediction_model
|
| 164 |
+
|
| 165 |
+
# Your actual validation checks
|
| 166 |
+
if not project:
|
| 167 |
+
return "Select a project.", None
|
| 168 |
+
if not checkpoint:
|
| 169 |
+
return "Select a checkpoint.", None
|
| 170 |
+
if not ref_audio:
|
| 171 |
+
return "Upload reference audio.", None
|
| 172 |
+
|
| 173 |
+
# Your actual file path logic
|
| 174 |
+
project_dir = CKPT_DIR / project
|
| 175 |
+
ckpt_path = project_dir / checkpoint
|
| 176 |
+
if not ckpt_path.exists():
|
| 177 |
+
return f"Checkpoint not found: {ckpt_path}", None
|
| 178 |
+
|
| 179 |
+
vocab_path = vocab_file.strip() if (vocab_file and vocab_file.strip()) else get_vocab_path(project)
|
| 180 |
+
out_path = OUTPUT_DIR / (output_file.strip() if output_file else Path(unique_output_for_checkpoint(checkpoint)).name)
|
| 181 |
+
|
| 182 |
+
try:
|
| 183 |
+
# Use the same default values as the infer_cli.py command-line tool
|
| 184 |
+
model_type = "F5-TTS"
|
| 185 |
+
vocoder_name = "vocos"
|
| 186 |
+
load_vocoder_from_local = False
|
| 187 |
+
predict_duration = False
|
| 188 |
+
|
| 189 |
+
# A dummy config dict to satisfy the run_inference_process function's logic
|
| 190 |
+
config = {
|
| 191 |
+
"ref_audio": ref_audio,
|
| 192 |
+
"ref_text": ref_text
|
| 193 |
+
}
|
| 194 |
+
|
| 195 |
+
# Load models ONLY if they haven't been loaded yet
|
| 196 |
+
if ema_model is None:
|
| 197 |
+
gr.Info("Loading models for the first time... this may take a moment.")
|
| 198 |
+
|
| 199 |
+
ema_model, vocoder, prediction_model = load_models_for_gradio(
|
| 200 |
+
model_type,
|
| 201 |
+
str(ckpt_path), # Pass the full path as a string
|
| 202 |
+
vocab_path,
|
| 203 |
+
vocoder_name,
|
| 204 |
+
load_vocoder_from_local,
|
| 205 |
+
predict_duration
|
| 206 |
+
)
|
| 207 |
+
gr.Info("Models loaded successfully!")
|
| 208 |
+
|
| 209 |
+
# Call the refactored inference function to generate the audio
|
| 210 |
+
run_inference_process(
|
| 211 |
+
ref_audio,
|
| 212 |
+
ref_text,
|
| 213 |
+
gen_text,
|
| 214 |
+
ema_model,
|
| 215 |
+
vocoder,
|
| 216 |
+
mel_spec_type=vocoder_name,
|
| 217 |
+
remove_silence=remove_silence,
|
| 218 |
+
speed=speed,
|
| 219 |
+
prediction_model=prediction_model,
|
| 220 |
+
config=config,
|
| 221 |
+
output_file=out_path
|
| 222 |
+
)
|
| 223 |
+
|
| 224 |
+
# gr.Info(f"Audio generated: {out_path}")
|
| 225 |
+
return f"Generated: {out_path.name}", out_path
|
| 226 |
+
|
| 227 |
+
except Exception as e:
|
| 228 |
+
print(f"Error during inference: {e}")
|
| 229 |
+
return gr.update(value=f"Inference failed: {e}"), None
|
| 230 |
+
|
| 231 |
+
# ------------------ Build UI ------------------
|
| 232 |
+
with gr.Blocks() as demo:
|
| 233 |
+
gr.Markdown("## 🎤 F5-TTS (Custom Gradio Inference)")
|
| 234 |
+
|
| 235 |
+
project_list = list_projects()
|
| 236 |
+
project_name = project_list[0] if project_list else None
|
| 237 |
+
|
| 238 |
+
with gr.Row():
|
| 239 |
+
with gr.Column(scale=10):
|
| 240 |
+
project_dropdown = gr.Dropdown(label="Project", choices=project_list, value=project_name)
|
| 241 |
+
with gr.Column(scale=1):
|
| 242 |
+
refresh_btn = gr.Button("🔄 Refresh")
|
| 243 |
+
|
| 244 |
+
checkpoint_dropdown = gr.Dropdown(label="Checkpoint", choices=["a", "b"], value=None)
|
| 245 |
+
vocab_input = gr.Textbox(label="Vocab File (optional)")
|
| 246 |
+
|
| 247 |
+
project_dropdown.change(update_ui, inputs=project_dropdown, outputs=[checkpoint_dropdown, vocab_input])
|
| 248 |
+
refresh_btn.click(update_ui, inputs=project_dropdown, outputs=[checkpoint_dropdown, vocab_input])
|
| 249 |
+
|
| 250 |
+
ref_audio_input = gr.Audio(label="Reference Audio (.wav/.mp3)", type="filepath", sources=["upload"])
|
| 251 |
+
ref_text = gr.Textbox(label="Reference Text", placeholder="Optional")
|
| 252 |
+
gen_text = gr.Textbox(label="Text to Generate", lines=3)
|
| 253 |
+
|
| 254 |
+
with gr.Row():
|
| 255 |
+
speed_slider = gr.Slider(minimum=0.5, maximum=2.0, value=1.0, step=0.1, label="Speed")
|
| 256 |
+
remove_silence_chk = gr.Checkbox(label="Remove Silence", value=False)
|
| 257 |
+
|
| 258 |
+
output_name = gr.Textbox(label="Output filename (optional)", placeholder="e.g. custom_out.wav")
|
| 259 |
+
|
| 260 |
+
generate_btn = gr.Button("🚀 Generate")
|
| 261 |
+
status_box = gr.Textbox(label="Status", interactive=False)
|
| 262 |
+
generated_audio = gr.Audio(label="Generated Audio", type="filepath")
|
| 263 |
+
|
| 264 |
+
generate_btn.click(
|
| 265 |
+
fn=generate_tts_cb,
|
| 266 |
+
inputs=[project_dropdown, checkpoint_dropdown, vocab_input, ref_audio_input, ref_text, gen_text, speed_slider, remove_silence_chk, output_name],
|
| 267 |
+
outputs=[status_box, generated_audio]
|
| 268 |
+
)
|
| 269 |
+
|
| 270 |
+
demo.load(fn=update_ui,inputs=project_dropdown,outputs=[checkpoint_dropdown, vocab_input])
|
| 271 |
+
|
| 272 |
+
|
| 273 |
+
if __name__ == "__main__":
|
| 274 |
+
demo.launch(server_port=7860, inbrowser=True)
|
si/tts-si-F5-TTS/src/f5_tts/infer/infer_cli_custom.py
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import argparse
|
| 2 |
+
import codecs
|
| 3 |
+
import os
|
| 4 |
+
import re
|
| 5 |
+
from importlib.resources import files
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
|
| 8 |
+
import numpy as np
|
| 9 |
+
import soundfile as sf
|
| 10 |
+
import tomli
|
| 11 |
+
from cached_path import cached_path
|
| 12 |
+
|
| 13 |
+
from f5_tts.infer.utils_infer import (
|
| 14 |
+
infer_process,
|
| 15 |
+
load_model,
|
| 16 |
+
load_vocoder,
|
| 17 |
+
preprocess_ref_audio_text,
|
| 18 |
+
remove_silence_for_generated_wav,
|
| 19 |
+
load_duration_model,
|
| 20 |
+
)
|
| 21 |
+
from f5_tts.model import DiT, UNetT
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
# This function loads the models and returns them.
|
| 25 |
+
# It will be called once from the Gradio app.
|
| 26 |
+
def load_models_for_gradio(model_name, ckpt_file, vocab_file, vocoder_name, load_vocoder_from_local, predict_duration):
|
| 27 |
+
if vocoder_name == "vocos":
|
| 28 |
+
vocoder_local_path = "../checkpoints/vocos-mel-24khz"
|
| 29 |
+
elif vocoder_name == "bigvgan":
|
| 30 |
+
vocoder_local_path = "../checkpoints/bigvgan_v2_24khz_100band_256x"
|
| 31 |
+
|
| 32 |
+
vocoder = load_vocoder(vocoder_name=vocoder_name, is_local=load_vocoder_from_local, local_path=vocoder_local_path)
|
| 33 |
+
|
| 34 |
+
if model_name == "F5-TTS":
|
| 35 |
+
model_cls = DiT
|
| 36 |
+
model_cfg = dict(dim=1024, depth=22, heads=16, ff_mult=2, text_dim=512, conv_layers=4)
|
| 37 |
+
elif model_name == "E2-TTS":
|
| 38 |
+
model_cls = UNetT
|
| 39 |
+
model_cfg = dict(dim=1024, depth=24, heads=16, ff_mult=4)
|
| 40 |
+
else:
|
| 41 |
+
raise ValueError(f"Unknown model type: {model_name}")
|
| 42 |
+
|
| 43 |
+
print(f"Using {model_name}...")
|
| 44 |
+
ema_model = load_model(model_cls, model_cfg, ckpt_file, mel_spec_type=vocoder_name, vocab_file=vocab_file)
|
| 45 |
+
prediction_model = load_duration_model() if predict_duration else None
|
| 46 |
+
|
| 47 |
+
return ema_model, vocoder, prediction_model
|
| 48 |
+
|
| 49 |
+
|
| 50 |
+
# This function runs the inference process.
|
| 51 |
+
# It will be called on every "Generate" button click.
|
| 52 |
+
def run_inference_process(
|
| 53 |
+
ref_audio, ref_text, text_gen, model_obj, vocoder_obj, mel_spec_type,
|
| 54 |
+
remove_silence, speed, prediction_model, config, output_file
|
| 55 |
+
):
|
| 56 |
+
main_voice = {"ref_audio": ref_audio, "ref_text": ref_text}
|
| 57 |
+
if "voices" not in config:
|
| 58 |
+
voices = {"main": main_voice}
|
| 59 |
+
else:
|
| 60 |
+
voices = config["voices"]
|
| 61 |
+
voices["main"] = main_voice
|
| 62 |
+
|
| 63 |
+
for voice in voices:
|
| 64 |
+
voices[voice]["ref_audio"], voices[voice]["ref_text"] = preprocess_ref_audio_text(
|
| 65 |
+
voices[voice]["ref_audio"], voices[voice]["ref_text"]
|
| 66 |
+
)
|
| 67 |
+
print("Voice:", voice)
|
| 68 |
+
print("Ref_audio:", voices[voice]["ref_audio"])
|
| 69 |
+
print("Ref_text:", voices[voice]["ref_text"])
|
| 70 |
+
|
| 71 |
+
generated_audio_segments = []
|
| 72 |
+
reg1 = r"(?=\[\w+\])"
|
| 73 |
+
chunks = re.split(reg1, text_gen)
|
| 74 |
+
reg2 = r"\[(\w+)\]"
|
| 75 |
+
for text in chunks:
|
| 76 |
+
if not text.strip():
|
| 77 |
+
continue
|
| 78 |
+
match = re.match(reg2, text)
|
| 79 |
+
if match:
|
| 80 |
+
voice = match[1]
|
| 81 |
+
else:
|
| 82 |
+
print("No voice tag found, using main.")
|
| 83 |
+
voice = "main"
|
| 84 |
+
if voice not in voices:
|
| 85 |
+
print(f"Voice {voice} not found, using main.")
|
| 86 |
+
voice = "main"
|
| 87 |
+
text = re.sub(reg2, "", text)
|
| 88 |
+
gen_text = text.strip()
|
| 89 |
+
ref_audio_path = voices[voice]["ref_audio"]
|
| 90 |
+
ref_text_from_config = voices[voice]["ref_text"]
|
| 91 |
+
print(f"Voice: {voice}")
|
| 92 |
+
audio, final_sample_rate, spectragram = infer_process(
|
| 93 |
+
ref_audio_path,
|
| 94 |
+
ref_text_from_config,
|
| 95 |
+
gen_text,
|
| 96 |
+
model_obj,
|
| 97 |
+
vocoder_obj,
|
| 98 |
+
prediction_model=prediction_model,
|
| 99 |
+
mel_spec_type=mel_spec_type,
|
| 100 |
+
speed=speed,
|
| 101 |
+
)
|
| 102 |
+
generated_audio_segments.append(audio)
|
| 103 |
+
|
| 104 |
+
if generated_audio_segments:
|
| 105 |
+
final_wave = np.concatenate(generated_audio_segments)
|
| 106 |
+
|
| 107 |
+
if not output_file.parent.exists():
|
| 108 |
+
output_file.parent.mkdir(parents=True, exist_ok=True)
|
| 109 |
+
|
| 110 |
+
with open(output_file, "wb") as f:
|
| 111 |
+
sf.write(f.name, final_wave, final_sample_rate)
|
| 112 |
+
if remove_silence:
|
| 113 |
+
remove_silence_for_generated_wav(f.name)
|
| 114 |
+
print(f.name)
|
| 115 |
+
|
| 116 |
+
# This part remains for command-line use. No need to change.
|
| 117 |
+
if __name__ == "__main__":
|
| 118 |
+
parser = argparse.ArgumentParser(
|
| 119 |
+
prog="python3 infer-cli.py",
|
| 120 |
+
description="Commandline interface for E2/F5 TTS with Advanced Batch Processing.",
|
| 121 |
+
epilog="Specify options above to override one or more settings from config.",
|
| 122 |
+
)
|
| 123 |
+
# Your existing argparse setup
|
| 124 |
+
# ...
|
| 125 |
+
# ...
|
| 126 |
+
args = parser.parse_args()
|
| 127 |
+
config = tomli.load(open(args.config, "rb"))
|
| 128 |
+
# ...
|
| 129 |
+
# And the main function call
|
| 130 |
+
# main()
|
si/tts-si-F5-TTS/uploads/reference.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
කළුතර පොලිස් අධිකාරි කොට්ඨාසයේ ස්ථාන දෙකකදී නිවෙස් අසල නවතා තිබූ යතුරුපැදි දෙකක් සොරකම් කිරීම පිළිබඳව පැමිණිලි ලැබී ඇත.
|
si/tts-si-F5-TTS/uploads/reference.wav
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:c3463e00033fab46f89a40d91714d814fe120348d89b1f397c039cf10afd04cb
|
| 3 |
+
size 409326
|