diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..a319460ba7c9527609ef04838066af3525a45b61
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+app/node_modules
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..8b49d07ec9c8ac5a48609374bf5139b6b757ed64
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,100 @@
+# Use an official CUDA-enabled image from NVIDIA with CUDA 12.1
+FROM nvidia/cuda:12.1.1-cudnn8-devel-ubuntu20.04
+
+# Set the working directory in the container
+WORKDIR /app
+
+# Set the environment variable to suppress interactive prompts
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Install necessary OS packages and Python 3.9
+RUN apt-get update && apt-get install -y \
+ software-properties-common \
+ && add-apt-repository ppa:deadsnakes/ppa \
+ && apt-get update && apt-get install -y \
+ python3.9 \
+ python3.9-distutils \
+ python3.9-venv \
+ python3.9-dev \
+ build-essential \
+ cmake \
+ libsndfile1 \
+ ffmpeg \
+ portaudio19-dev \
+ alsa-utils \
+ curl \
+ git \
+ nodejs \
+ npm \
+ && rm -rf /var/lib/apt/lists/*
+
+# Install pip for Python 3.9
+RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.9
+
+# Create a symlink for python3.9 and pip3.9
+RUN ln -s /usr/bin/python3.9 /usr/bin/python
+RUN ln -s /usr/local/bin/pip /usr/bin/pip
+
+# Set CUDA_HOME environment variable
+ENV CUDA_HOME=/usr/local/cuda
+
+# Add CUDA to PATH
+ENV PATH=${CUDA_HOME}/bin:${PATH}
+
+# Optionally set LD_LIBRARY_PATH for CUDA libraries
+ENV LD_LIBRARY_PATH=${CUDA_HOME}/lib64:${LD_LIBRARY_PATH}
+
+# Set environment variable for NeMo cache directory
+ENV NEMO_NLP_TMP=/app/.cache
+
+# Create cache directory
+RUN mkdir -p /app/.cache
+
+# Copy the setup script and requirements file into the container
+COPY setup.sh requirements.txt /app/
+
+# Make the setup script executable
+RUN chmod +x setup.sh
+
+# Copy the application code into the container
+COPY . /app
+
+# Copy wait-for-it script
+COPY wait-for-it.sh /app/wait-for-it.sh
+
+# Make wait-for-it script executable
+RUN chmod +x /app/wait-for-it.sh
+
+# Install dependencies
+RUN pip install --upgrade pip setuptools wheel
+RUN pip install pybind11
+RUN pip install fasttext
+RUN pip install Cython
+RUN pip install pyaudio
+RUN pip install fastapi uvicorn
+RUN pip install uvloop
+
+# Install PyTorch and torchaudio
+RUN pip install torch==2.2.2+cu121 -f https://download.pytorch.org/whl/cu121/torch_stable.html
+RUN pip install torchaudio==2.2.2+cu121 -f https://download.pytorch.org/whl/cu121/torch_stable.html
+
+# Install the requirements
+RUN pip install -r requirements.txt
+
+# Clone and install TTS
+RUN git clone https://github.com/coqui-ai/TTS/ && \
+ cd TTS && \
+ make install
+
+# Install Node.js dependencies
+RUN cd /app/app && npm install
+
+# Expose the ports
+EXPOSE 8000
+EXPOSE 3000
+
+# Set the environment variable to indicate running in Docker
+ENV IN_DOCKER=True
+
+# Run the FastAPI app and Node.js server
+CMD ["sh", "-c", "uvicorn app:app --host 0.0.0.0 --port 8000 & /app/wait-for-it.sh --url http://0.0.0.0:8000/health --strict -- node /app/app/server.js"]
diff --git a/__pycache__/app.cpython-311.pyc b/__pycache__/app.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f0939987f209a709bca9721be51de34e9fa04d1c
Binary files /dev/null and b/__pycache__/app.cpython-311.pyc differ
diff --git a/__pycache__/inference_functions.cpython-311.pyc b/__pycache__/inference_functions.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0ed9e119f34c26f06d9bafe488c9aa3877c99943
Binary files /dev/null and b/__pycache__/inference_functions.cpython-311.pyc differ
diff --git a/__pycache__/load_models.cpython-311.pyc b/__pycache__/load_models.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1c5560c7cb212cefe2a4a12fed6f3897f3da55fc
Binary files /dev/null and b/__pycache__/load_models.cpython-311.pyc differ
diff --git a/__pycache__/server.cpython-311.pyc b/__pycache__/server.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f40581ee0835bf77098ca156d3f54275abd48887
Binary files /dev/null and b/__pycache__/server.cpython-311.pyc differ
diff --git a/__pycache__/silence_removal.cpython-311.pyc b/__pycache__/silence_removal.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2dfac668e764fc15b5b0a5669ab16bc673fcab13
Binary files /dev/null and b/__pycache__/silence_removal.cpython-311.pyc differ
diff --git a/__pycache__/stream_VAD.cpython-311.pyc b/__pycache__/stream_VAD.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bd320a739ed419dba66be2db74e15a5948dad219
Binary files /dev/null and b/__pycache__/stream_VAD.cpython-311.pyc differ
diff --git a/__pycache__/stream_VAD2.cpython-311.pyc b/__pycache__/stream_VAD2.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4cf9173da51e521cd00fa11e302fb0721a236fde
Binary files /dev/null and b/__pycache__/stream_VAD2.cpython-311.pyc differ
diff --git a/__pycache__/stream_prod_main2.cpython-311.pyc b/__pycache__/stream_prod_main2.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1683554854bb0458d07b9fb99d7adc45985be5d1
Binary files /dev/null and b/__pycache__/stream_prod_main2.cpython-311.pyc differ
diff --git a/app.py b/app.py
new file mode 100644
index 0000000000000000000000000000000000000000..79ad62b81dacf35fbe8fcf24c302a2a863ce4d26
--- /dev/null
+++ b/app.py
@@ -0,0 +1,79 @@
+import fastapi
+import uvicorn
+from fastapi import File, UploadFile, Form, HTTPException
+from fastapi.responses import JSONResponse, FileResponse
+from load_models import get_nllb_model_and_tokenizer, get_xtts_model
+from inference_functions import translate, just_inference
+import os
+import torch
+
+# Set GPU memory fraction
+torch.cuda.set_per_process_memory_fraction(0.75, 0)
+
+# Load models
+model_nllb, tokenizer_nllb = get_nllb_model_and_tokenizer()
+model_xtts = get_xtts_model()
+
+app = fastapi.FastAPI()
+
+@app.get("/health")
+def health_check():
+ return {"status": "ok"}
+
+@app.post("/translate/")
+def translate_text(text: str = Form(...), target_lang: str = Form(...)):
+ translation = translate(model_nllb, tokenizer_nllb, text, target_lang)
+ return {"translation": translation}
+
+@app.post("/inference/")
+def inference_audio(original_path: UploadFile = File(...), text: str = Form(...), lang: str = Form(...)):
+ # Save the uploaded file
+ file_location = f"/tmp/{original_path.filename}"
+ with open(file_location, "wb") as file:
+ file.write(original_path.file.read())
+
+ output_dir = f"/tmp/generated_audio_{os.path.basename(file_location)}.wav"
+ torch.cuda.empty_cache()
+ generated_audio = just_inference(model_xtts, file_location, output_dir, text, lang)
+ return {"path_to_save": output_dir}
+
+@app.post("/process-audio/")
+async def process_audio(original_path: UploadFile = File(...), text: str = Form(...), lang: str = Form(...), target_lang: str = Form(...)):
+ print(f"original_path: {original_path.filename}")
+ print(f"text: {text}")
+ print(f"lang: {lang}")
+ print(f"target_lang: {target_lang}")
+
+ # Validate target language
+ if target_lang not in ["es", "en"]: # Use 'es' and 'en' to match the example values
+ print("Unsupported language")
+ raise HTTPException(status_code=400, detail="Unsupported language. Use 'spanish' or 'english'.")
+
+ try:
+ # Translate the text first
+ translated_text = translate(model_nllb, tokenizer_nllb, text, target_lang)
+ print(f"translated_text: {translated_text}")
+
+ # Save the uploaded file
+ file_location = f"/tmp/{original_path.filename}"
+ with open(file_location, "wb") as file:
+ file.write(original_path.file.read())
+
+ output_dir = f"/tmp/generated_audio_{os.path.basename(file_location)}.wav"
+ torch.cuda.empty_cache()
+ generated_audio = just_inference(model_xtts, file_location, output_dir, translated_text, target_lang)
+
+ return JSONResponse(content={"audio_path": output_dir, "translation": translated_text})
+
+ except Exception as e:
+ print(f"Error during processing: {e}")
+ raise HTTPException(status_code=500, detail="Error during processing")
+
+@app.get("/download-audio/")
+def download_audio(file_path: str):
+ if not os.path.exists(file_path):
+ raise HTTPException(status_code=404, detail="File not found")
+ return FileResponse(file_path, media_type='audio/wav', filename=os.path.basename(file_path))
+
+if __name__ == "__main__":
+ uvicorn.run(app, host="0.0.0.0", port=8000)
diff --git a/app/package-lock.json b/app/package-lock.json
new file mode 100644
index 0000000000000000000000000000000000000000..bcb2963608d055309ad1a0eb3aa2b1118b0be93f
--- /dev/null
+++ b/app/package-lock.json
@@ -0,0 +1,985 @@
+{
+ "name": "audio-transcription",
+ "version": "1.0.0",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "audio-transcription",
+ "version": "1.0.0",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.19.2",
+ "form-data": "^4.0.0",
+ "multer": "^1.4.5-lts.1",
+ "node-fetch": "^2.7.0",
+ "wav": "^1.0.2"
+ }
+ },
+ "node_modules/accepts": {
+ "version": "1.3.8",
+ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
+ "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
+ "dependencies": {
+ "mime-types": "~2.1.34",
+ "negotiator": "0.6.3"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/append-field": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz",
+ "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw=="
+ },
+ "node_modules/array-flatten": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="
+ },
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
+ "node_modules/body-parser": {
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "content-type": "~1.0.5",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "on-finished": "2.4.1",
+ "qs": "6.11.0",
+ "raw-body": "2.5.2",
+ "type-is": "~1.6.18",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/buffer-alloc": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+ "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+ "dependencies": {
+ "buffer-alloc-unsafe": "^1.1.0",
+ "buffer-fill": "^1.0.0"
+ }
+ },
+ "node_modules/buffer-alloc-unsafe": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+ },
+ "node_modules/buffer-fill": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+ "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ=="
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+ },
+ "node_modules/busboy": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
+ "dependencies": {
+ "streamsearch": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=10.16.0"
+ }
+ },
+ "node_modules/bytes": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
+ "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
+ "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "engines": [
+ "node >= 0.8"
+ ],
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
+ "node_modules/content-disposition": {
+ "version": "0.5.4",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
+ "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
+ "dependencies": {
+ "safe-buffer": "5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/content-type": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz",
+ "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/cookie-signature": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ=="
+ },
+ "node_modules/core-util-is": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
+ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
+ },
+ "node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/depd": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
+ "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/destroy": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
+ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
+ "engines": {
+ "node": ">= 0.8",
+ "npm": "1.2.8000 || >= 1.4.16"
+ }
+ },
+ "node_modules/ee-first": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
+ },
+ "node_modules/encodeurl": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
+ "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+ "dependencies": {
+ "get-intrinsic": "^1.2.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/escape-html": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
+ },
+ "node_modules/etag": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/express": {
+ "version": "4.19.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
+ "dependencies": {
+ "accepts": "~1.3.8",
+ "array-flatten": "1.1.1",
+ "body-parser": "1.20.2",
+ "content-disposition": "0.5.4",
+ "content-type": "~1.0.4",
+ "cookie": "0.6.0",
+ "cookie-signature": "1.0.6",
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "finalhandler": "1.2.0",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "merge-descriptors": "1.0.1",
+ "methods": "~1.1.2",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "path-to-regexp": "0.1.7",
+ "proxy-addr": "~2.0.7",
+ "qs": "6.11.0",
+ "range-parser": "~1.2.1",
+ "safe-buffer": "5.2.1",
+ "send": "0.18.0",
+ "serve-static": "1.15.0",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "type-is": "~1.6.18",
+ "utils-merge": "1.0.1",
+ "vary": "~1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/finalhandler": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
+ "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "on-finished": "2.4.1",
+ "parseurl": "~1.3.3",
+ "statuses": "2.0.1",
+ "unpipe": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/forwarded": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
+ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/fresh": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
+ "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "has-proto": "^1.0.1",
+ "has-symbols": "^1.0.3",
+ "hasown": "^2.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
+ "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+ "dependencies": {
+ "get-intrinsic": "^1.1.3"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz",
+ "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
+ "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/http-errors": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
+ "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
+ "dependencies": {
+ "depd": "2.0.0",
+ "inherits": "2.0.4",
+ "setprototypeof": "1.2.0",
+ "statuses": "2.0.1",
+ "toidentifier": "1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
+ },
+ "node_modules/ipaddr.js": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
+ },
+ "node_modules/media-typer": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/merge-descriptors": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w=="
+ },
+ "node_modules/methods": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+ "bin": {
+ "mime": "cli.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/mkdirp": {
+ "version": "0.5.6",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
+ "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
+ "dependencies": {
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "mkdirp": "bin/cmd.js"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
+ "node_modules/multer": {
+ "version": "1.4.5-lts.1",
+ "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz",
+ "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==",
+ "dependencies": {
+ "append-field": "^1.0.0",
+ "busboy": "^1.0.0",
+ "concat-stream": "^1.5.2",
+ "mkdirp": "^0.5.4",
+ "object-assign": "^4.1.1",
+ "type-is": "^1.6.4",
+ "xtend": "^4.0.0"
+ },
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
+ "node_modules/negotiator": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
+ "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/object-assign": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz",
+ "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/on-finished": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
+ "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
+ "dependencies": {
+ "ee-first": "1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/parseurl": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/path-to-regexp": {
+ "version": "0.1.7",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
+ "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ=="
+ },
+ "node_modules/process-nextick-args": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
+ },
+ "node_modules/proxy-addr": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
+ "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
+ "dependencies": {
+ "forwarded": "0.2.0",
+ "ipaddr.js": "1.9.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/qs": {
+ "version": "6.11.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz",
+ "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==",
+ "dependencies": {
+ "side-channel": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=0.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/range-parser": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/raw-body": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
+ "dependencies": {
+ "bytes": "3.1.2",
+ "http-errors": "2.0.0",
+ "iconv-lite": "0.4.24",
+ "unpipe": "1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/readable-stream": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "node_modules/readable-stream/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
+ },
+ "node_modules/send": {
+ "version": "0.18.0",
+ "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
+ "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
+ "dependencies": {
+ "debug": "2.6.9",
+ "depd": "2.0.0",
+ "destroy": "1.2.0",
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "etag": "~1.8.1",
+ "fresh": "0.5.2",
+ "http-errors": "2.0.0",
+ "mime": "1.6.0",
+ "ms": "2.1.3",
+ "on-finished": "2.4.1",
+ "range-parser": "~1.2.1",
+ "statuses": "2.0.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/send/node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
+ },
+ "node_modules/serve-static": {
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
+ "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
+ "dependencies": {
+ "encodeurl": "~1.0.2",
+ "escape-html": "~1.0.3",
+ "parseurl": "~1.3.3",
+ "send": "0.18.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/setprototypeof": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
+ "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
+ },
+ "node_modules/side-channel": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz",
+ "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.4",
+ "object-inspect": "^1.13.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/statuses": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
+ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/stream-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
+ "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==",
+ "dependencies": {
+ "debug": "2"
+ }
+ },
+ "node_modules/streamsearch": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
+ "node_modules/string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string_decoder/node_modules/safe-buffer": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
+ },
+ "node_modules/toidentifier": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
+ "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
+ "engines": {
+ "node": ">=0.6"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
+ },
+ "node_modules/type-is": {
+ "version": "1.6.18",
+ "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+ "dependencies": {
+ "media-typer": "0.3.0",
+ "mime-types": "~2.1.24"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA=="
+ },
+ "node_modules/unpipe": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/util-deprecate": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
+ },
+ "node_modules/utils-merge": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
+ "node_modules/vary": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==",
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
+ "node_modules/wav": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wav/-/wav-1.0.2.tgz",
+ "integrity": "sha512-viHtz3cDd/Tcr/HbNqzQCofKdF6kWUymH9LGDdskfWFoIy/HJ+RTihgjEcHfnsy1PO4e9B+y4HwgTwMrByquhg==",
+ "dependencies": {
+ "buffer-alloc": "^1.1.0",
+ "buffer-from": "^1.0.0",
+ "debug": "^2.2.0",
+ "readable-stream": "^1.1.14",
+ "stream-parser": "^0.3.1"
+ }
+ },
+ "node_modules/wav/node_modules/isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ=="
+ },
+ "node_modules/wav/node_modules/readable-stream": {
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
+ "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==",
+ "dependencies": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
+ }
+ },
+ "node_modules/wav/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ=="
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "engines": {
+ "node": ">=0.4"
+ }
+ }
+ }
+}
diff --git a/app/package.json b/app/package.json
new file mode 100644
index 0000000000000000000000000000000000000000..942009716556ad86903777a186e28a852bd923a7
--- /dev/null
+++ b/app/package.json
@@ -0,0 +1,19 @@
+{
+ "name": "audio-transcription",
+ "version": "1.0.0",
+ "description": "",
+ "main": "app.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "keywords": [],
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "express": "^4.19.2",
+ "form-data": "^4.0.0",
+ "multer": "^1.4.5-lts.1",
+ "node-fetch": "^2.7.0",
+ "wav": "^1.0.2"
+ }
+}
diff --git a/app/public/app.js b/app/public/app.js
new file mode 100644
index 0000000000000000000000000000000000000000..cedfc398759a899501b4681e1c2c1489fe860ede
--- /dev/null
+++ b/app/public/app.js
@@ -0,0 +1,99 @@
+const recordButton = document.getElementById('record');
+const status = document.getElementById('status');
+const transcriptionElement = document.getElementById('transcription');
+const audioElement = document.getElementById('audio');
+const translationElement = document.getElementById('translation');
+
+let mediaRecorder;
+let audioChunks = [];
+let transcript = '';
+let sentenceIndex = 0;
+
+const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
+recognition.continuous = true;
+recognition.interimResults = true;
+
+recognition.onresult = (event) => {
+ let interimTranscript = '';
+ for (let i = event.resultIndex; i < event.results.length; ++i) {
+ if (event.results[i].isFinal) {
+ transcript += event.results[i][0].transcript + ' ';
+ saveAudioAndTranscription(event.results[i][0].transcript, sentenceIndex++);
+ } else {
+ interimTranscript += event.results[i][0].transcript;
+ }
+ }
+ transcriptionElement.innerHTML = transcript + '' + interimTranscript + ' ';
+};
+
+recognition.onerror = (event) => {
+ console.error(event.error);
+};
+
+recordButton.onmousedown = async () => {
+ status.textContent = "Recording...";
+ transcript = '';
+ sentenceIndex = 0;
+
+ // Start speech recognition
+ recognition.start();
+
+ // Start audio recording
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
+ mediaRecorder = new MediaRecorder(stream, { mimeType: 'audio/webm' });
+ mediaRecorder.start();
+
+ mediaRecorder.ondataavailable = (event) => {
+ audioChunks.push(event.data);
+ };
+};
+
+recordButton.onmouseup = () => {
+ status.textContent = "Recording stopped";
+
+ // Stop speech recognition and audio recording
+ recognition.stop();
+ mediaRecorder.stop();
+
+ // Process the recorded audio
+ saveAudioAndTranscription(transcript, sentenceIndex);
+};
+
+async function saveAudioAndTranscription(sentence, index) {
+ mediaRecorder.stop();
+ mediaRecorder.onstop = async () => {
+ const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });
+ const arrayBuffer = await audioBlob.arrayBuffer();
+ const audioBuffer = new Uint8Array(arrayBuffer);
+
+ const formData = new FormData();
+ formData.append('audio', new Blob([audioBuffer], { type: 'application/octet-stream' }));
+ formData.append('transcript', sentence);
+ formData.append('sampleRate', mediaRecorder.stream.getAudioTracks()[0].getSettings().sampleRate);
+ formData.append('numberOfChannels', 1); // Assuming mono audio
+
+ try {
+ const response = await fetch('/save-audio', {
+ method: 'POST',
+ body: formData
+ });
+
+ if (response.ok) {
+ const result = await response.json();
+ console.log(`Saved sentence ${index}`);
+
+ // Show translation and play audio
+ translationElement.textContent = result.translation;
+ audioElement.src = `http://localhost:8000/download-audio?file_path=${result.audio_path}`;
+ audioElement.play();
+ } else {
+ console.error('Failed to save the file.');
+ }
+ } catch (error) {
+ console.error('Error saving audio and transcription:', error);
+ }
+
+ audioChunks = [];
+ mediaRecorder.start();
+ };
+}
diff --git a/app/public/index.html b/app/public/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..0d8e50a59fe1ccb5a8dc500bd171ad83d89e779f
--- /dev/null
+++ b/app/public/index.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+ Audio Recording and Translation
+
+
+
+
+
+
+
+ Seamless Speech-to-Speech Translation with Voice Replication (S3TVR)
+ S3TVR is an advanced AI cascaded framework designed for real-time speech-to-speech translation while maintaining the speaker's voice characteristics in a zero-shot fashion. This project balances latency and output quality, focusing on English and Spanish languages, and involves multiple open-source models and algorithms. The system is optimized for local execution, allowing for dynamic and efficient voice translation with an average latency of ~3 seconds per sentence. For the optimized model, check the Github Repo bellow.
+ NOTE: The local excution is streamed and fully optimized(unlike this Demo)
+
+
+
+
+
+
Press and Hold till the sentence is not RED
+
+
+
+
+
+
+
+
diff --git a/app/public/styles.css b/app/public/styles.css
new file mode 100644
index 0000000000000000000000000000000000000000..40ec214033f91af5ae5e21d4ea34c1be392f3c08
--- /dev/null
+++ b/app/public/styles.css
@@ -0,0 +1,96 @@
+body {
+ font-family: 'Roboto', sans-serif;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 100vh;
+ background-color: #f5f5f5;
+ margin: 0;
+ padding: 20px;
+ box-sizing: border-box;
+}
+
+.container {
+ text-align: center;
+ max-width: 800px;
+ width: 100%;
+}
+
+header {
+ margin-bottom: 20px;
+}
+
+header h1 {
+ font-size: 2em;
+ font-weight: 700;
+ margin-bottom: 10px;
+}
+
+header .description {
+ font-size: 1.1em;
+ font-weight: 400;
+ color: #555;
+ margin-bottom: 20px;
+ line-height: 1.6;
+}
+
+.links {
+ display: flex;
+ justify-content: center;
+ gap: 20px;
+ margin-bottom: 20px;
+}
+
+.links a {
+ color: #333;
+ font-size: 1.5em;
+ transition: color 0.3s;
+}
+
+.links a:hover {
+ color: #ff4757;
+}
+
+.circle-button {
+ width: 100px;
+ height: 100px;
+ background-color: #ff4757;
+ border-radius: 50%;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ margin: 20px auto;
+ transition: background-color 0.3s ease;
+}
+
+.circle-button:hover {
+ background-color: #ff6b81;
+}
+
+.circle-button:active {
+ background-color: #34c759;
+}
+
+.circle-button i {
+ color: white;
+ font-size: 2em;
+}
+
+.text-output {
+ background-color: white;
+ border-radius: 5px;
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
+ padding: 15px;
+ margin: 10px auto;
+ width: 80%;
+ max-width: 500px;
+ text-align: left;
+ font-size: 1em;
+ line-height: 1.5;
+}
+
+#status {
+ font-weight: bold;
+ margin-top: 10px;
+}
diff --git a/app/server.js b/app/server.js
new file mode 100644
index 0000000000000000000000000000000000000000..dfb9e4de0ff35cd9ebd4eb9aed0a0c6e1fa4156f
--- /dev/null
+++ b/app/server.js
@@ -0,0 +1,102 @@
+const express = require('express');
+const multer = require('multer');
+const path = require('path');
+const fs = require('fs');
+const { exec } = require('child_process');
+const fetch = require('node-fetch');
+const FormData = require('form-data');
+
+const app = express();
+const port = 3000;
+
+const uploadsDir = path.join(__dirname, 'uploads');
+if (!fs.existsSync(uploadsDir)) {
+ fs.mkdirSync(uploadsDir);
+}
+
+const storage = multer.memoryStorage();
+const upload = multer({ storage: storage });
+
+app.use(express.static(path.join(__dirname, 'public')));
+app.use(express.json());
+
+const getNextFolderNumber = () => {
+ const folders = fs.readdirSync(uploadsDir).filter(file => fs.statSync(path.join(uploadsDir, file)).isDirectory());
+ const folderNumbers = folders.map(folder => parseInt(folder)).filter(num => !isNaN(num));
+ return folderNumbers.length > 0 ? Math.max(...folderNumbers) + 1 : 1;
+};
+
+let sentenceIndex = 0;
+let audioPaths = [];
+
+app.post('/save-audio', upload.single('audio'), async (req, res) => {
+ const nextFolderNumber = getNextFolderNumber();
+ const folderPath = path.join(uploadsDir, nextFolderNumber.toString());
+ if (!fs.existsSync(folderPath)) {
+ fs.mkdirSync(folderPath, { recursive: true });
+ }
+
+ const rawAudioPath = path.join(folderPath, `audio_${sentenceIndex}.webm`);
+ const wavAudioPath = path.join(folderPath, `audio_${sentenceIndex}.wav`);
+ const transcriptionPath = path.join(folderPath, `transcription_${sentenceIndex}.txt`);
+
+ fs.writeFileSync(rawAudioPath, req.file.buffer);
+
+ fs.writeFileSync(transcriptionPath, req.body.transcript);
+
+ const ffmpegCommand = `ffmpeg -i ${rawAudioPath} -ar 44100 -ac 1 ${wavAudioPath}`;
+ exec(ffmpegCommand, async (error, stdout, stderr) => {
+ if (error) {
+ console.error(`Error converting audio to WAV: ${stderr}`);
+ return res.status(500).send('Error converting audio to WAV');
+ }
+
+ fs.unlinkSync(rawAudioPath);
+
+ const formData = new FormData();
+ formData.append('original_path', fs.createReadStream(wavAudioPath));
+ formData.append('text', req.body.transcript);
+ formData.append('lang', 'en');
+ formData.append('target_lang', 'es');
+
+ try {
+ const response = await fetch('http://localhost:8000/process-audio/', {
+ method: 'POST',
+ body: formData,
+ headers: formData.getHeaders()
+ });
+
+ if (response.ok) {
+ const result = await response.json();
+ console.log(result);
+ audioPaths.push(result.audio_path);
+ sentenceIndex++;
+ res.status(200).json({ audio_path: result.audio_path, translation: result.translation });
+ } else {
+ console.error('Failed to process the file via FastAPI');
+ res.status(500).send('Failed to process the file via FastAPI');
+ }
+ } catch (error) {
+ console.error('Error calling FastAPI:', error);
+ res.status(500).send('Error calling FastAPI');
+ }
+ });
+});
+
+app.get('/concatenate-audio', (req, res) => {
+ const folderPath = path.join(uploadsDir, getNextFolderNumber().toString());
+ const finalAudioPath = path.join(folderPath, 'final_audio.wav');
+ const concatCommand = `ffmpeg -y -i "concat:${audioPaths.join('|')}" -acodec copy ${finalAudioPath}`;
+ exec(concatCommand, (concatError, concatStdout, concatStderr) => {
+ if (concatError) {
+ console.error(`Error concatenating audio files: ${concatStderr}`);
+ return res.status(500).send('Error concatenating audio files');
+ }
+
+ res.status(200).json({ audio_path: finalAudioPath });
+ });
+});
+
+app.listen(port, () => {
+ console.log(`Server running at http://localhost:${port}`);
+});
diff --git a/app/temp_wav_files/audio-1718725396714.wav b/app/temp_wav_files/audio-1718725396714.wav
new file mode 100644
index 0000000000000000000000000000000000000000..578589df4e7882f07902f40f3a7491b252576f6f
Binary files /dev/null and b/app/temp_wav_files/audio-1718725396714.wav differ
diff --git a/app/uploads/1/audio_2.wav b/app/uploads/1/audio_2.wav
new file mode 100644
index 0000000000000000000000000000000000000000..903a78ce4db06791db4f9d665f20c1c5a72b6c6c
Binary files /dev/null and b/app/uploads/1/audio_2.wav differ
diff --git a/app/uploads/1/transcription_2.txt b/app/uploads/1/transcription_2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..89ba672f1968a7bc2a0fd5b4c959aab18492ed10
--- /dev/null
+++ b/app/uploads/1/transcription_2.txt
@@ -0,0 +1 @@
+okay now we're still actually works
\ No newline at end of file
diff --git a/audio_segments/readme b/audio_segments/readme
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/inference_functions.py b/inference_functions.py
new file mode 100644
index 0000000000000000000000000000000000000000..75f7d325c3d4667cf9827e52b1f8b7ce189cc706
--- /dev/null
+++ b/inference_functions.py
@@ -0,0 +1,80 @@
+import time
+import torch
+import torchaudio
+import noisereduce as nr
+import numpy as np
+from models.nllb import nllb_translate
+
+def translate(model_nllb, tokenizer_nllb, text, target_lang):
+ print("Processing translation...")
+ start_time = time.time()
+ translation = nllb_translate(model_nllb, tokenizer_nllb, text, target_lang)
+ print("Translation:", translation)
+ print("Translation time:", time.time() - start_time)
+ return translation
+
+def just_inference(model, original_path, output_dir, text, lang):
+ print("Inference...")
+ device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+ model.to(device)
+ path_to_save = output_dir
+ t0 = time.time()
+
+ try:
+ # Load the audio
+ print("Loading audio...")
+ wav, sr = torchaudio.load(original_path)
+ print(f"Loaded audio with sample rate: {sr}")
+
+ wav = wav.squeeze().numpy()
+ print(f"Audio shape after squeezing: {wav.shape}")
+
+ # Apply noise reduction
+ print("Applying noise reduction...")
+ reduced_noise_audio = nr.reduce_noise(y=wav, sr=sr)
+ reduced_noise_audio = torch.tensor(reduced_noise_audio).unsqueeze(0)
+ print(f"Reduced noise audio shape: {reduced_noise_audio.shape}")
+
+ # Move the reduced noise audio to the correct device
+ reduced_noise_audio = reduced_noise_audio.to(device)
+
+ print("Getting conditioning latents...")
+ gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(audio_path=[original_path])
+ print("Got conditioning latents.")
+
+ print("Starting inference stream...")
+ chunks = model.inference_stream(
+ text,
+ lang,
+ gpt_cond_latent,
+ speaker_embedding,
+ stream_chunk_size=15,
+ speed=0.95
+ )
+ print("Inference stream started.")
+
+ full_audio = torch.Tensor().to(device)
+ for i, chunk in enumerate(chunks):
+ try:
+ if i == 1:
+ time_to_first_chunk = time.time() - t0
+ print(f"Time to first chunk: {time_to_first_chunk}")
+ full_audio = torch.cat((full_audio, chunk.squeeze().to(device)), dim=-1)
+ print(f"Processed chunk {i}, chunk shape: {chunk.shape}")
+ except Exception as e:
+ print(f"Error processing chunk {i}: {e}")
+ raise
+
+ # Move full_audio to CPU before saving
+ full_audio = full_audio.cpu()
+
+ print(f"Saving full audio to {path_to_save}...")
+ torchaudio.save(path_to_save, full_audio.unsqueeze(0), 24000)
+ print("Audio saved.")
+
+ print("Inference finished")
+ return full_audio
+
+ except Exception as e:
+ print(f"Error during processing: {e}")
+ raise
diff --git a/load_models.py b/load_models.py
new file mode 100644
index 0000000000000000000000000000000000000000..c58e8c3a4f41ebb6c49f1d4262efb7f3df042b9c
--- /dev/null
+++ b/load_models.py
@@ -0,0 +1,18 @@
+from models.nllb import nllb
+#from models.parakeet import parakeet_ctc_model
+model_nllb, tokenizer_nllb = nllb()
+
+from models.TTS_utils import load_manual_xtts_v2
+
+
+config_path = "test/config.json"
+model_path = "test"
+
+xtts_v2_model = load_manual_xtts_v2(config_path, model_path)
+
+
+def get_nllb_model_and_tokenizer():
+ return model_nllb, tokenizer_nllb
+
+def get_xtts_model():
+ return xtts_v2_model
diff --git a/main.ipynb b/main.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..b6bc9821f2e17ce1d161ffda5315056b4c3420fd
--- /dev/null
+++ b/main.ipynb
@@ -0,0 +1,395 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "c:\\Users\\spn\\anaconda3\\envs\\capstone\\Lib\\site-packages\\torchvision\\io\\image.py:13: UserWarning: Failed to load image Python extension: '[WinError 127] The specified procedure could not be found'If you don't plan on using image functionality from `torchvision.io`, you can ignore this warning. Otherwise, there might be something wrong with your environment. Did you have `libjpeg` or `libpng` installed before building `torchvision` from source?\n",
+ " warn(\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[2024-06-10 23:30:49,190] [INFO] [real_accelerator.py:191:get_accelerator] Setting ds_accelerator to cuda (auto detect)\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[2024-06-10 23:30:49,544] torch.distributed.elastic.multiprocessing.redirects: [WARNING] NOTE: Redirects are currently not supported in Windows or MacOs.\n",
+ "[NeMo W 2024-06-10 23:30:52 nemo_logging:393] Could not import NeMo NLP collection which is required for speech translation model.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NeMo I 2024-06-10 23:31:08 nemo_logging:381] Tokenizer SentencePieceTokenizer initialized with 1024 tokens\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[NeMo W 2024-06-10 23:31:08 nemo_logging:393] If you intend to do training or fine-tuning, please call the ModelPT.setup_training_data() method and provide a valid configuration file to setup the train data loader.\n",
+ " Train config : \n",
+ " manifest_filepath: /disk1/NVIDIA/datasets/LibriSpeech_NeMo/librivox-train-all.json\n",
+ " sample_rate: 16000\n",
+ " batch_size: 16\n",
+ " shuffle: true\n",
+ " num_workers: 8\n",
+ " pin_memory: true\n",
+ " use_start_end_token: false\n",
+ " trim_silence: false\n",
+ " max_duration: 16.7\n",
+ " min_duration: 0.1\n",
+ " is_tarred: false\n",
+ " tarred_audio_filepaths: null\n",
+ " shuffle_n: 2048\n",
+ " bucketing_strategy: fully_randomized\n",
+ " bucketing_batch_size: null\n",
+ " \n",
+ "[NeMo W 2024-06-10 23:31:08 nemo_logging:393] If you intend to do validation, please call the ModelPT.setup_validation_data() or ModelPT.setup_multiple_validation_data() method and provide a valid configuration file to setup the validation data loader(s). \n",
+ " Validation config : \n",
+ " manifest_filepath: /disk1/NVIDIA/datasets/LibriSpeech_NeMo/librivox-dev-clean.json\n",
+ " sample_rate: 16000\n",
+ " batch_size: 16\n",
+ " shuffle: false\n",
+ " use_start_end_token: false\n",
+ " num_workers: 8\n",
+ " pin_memory: true\n",
+ " \n",
+ "[NeMo W 2024-06-10 23:31:08 nemo_logging:393] Please call the ModelPT.setup_test_data() or ModelPT.setup_multiple_test_data() method and provide a valid configuration file to setup the test data loader(s).\n",
+ " Test config : \n",
+ " manifest_filepath: null\n",
+ " sample_rate: 16000\n",
+ " batch_size: 16\n",
+ " shuffle: false\n",
+ " use_start_end_token: false\n",
+ " num_workers: 8\n",
+ " pin_memory: true\n",
+ " \n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NeMo I 2024-06-10 23:31:08 nemo_logging:381] PADDING: 0\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] `method_cfg` is deprecated and will be removed in the future. Please use `measure_cfg` instead.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] Re-writing `measure_cfg` with the value of `method_cfg`.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] `temperature` is deprecated and will be removed in the future. Please use `alpha` instead.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] Re-writing `alpha` with the value of `temperature`.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] `method_cfg` is deprecated and will be removed in the future. Please use `measure_cfg` instead.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] Re-writing `measure_cfg` with the value of `method_cfg`.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] `temperature` is deprecated and will be removed in the future. Please use `alpha` instead.\n",
+ "[NeMo W 2024-06-10 23:31:11 nemo_logging:393] Re-writing `alpha` with the value of `temperature`.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NeMo I 2024-06-10 23:31:16 nemo_logging:381] Model EncDecCTCModelBPE was successfully restored from C:\\Users\\spn\\.cache\\huggingface\\hub\\models--nvidia--parakeet-ctc-0.6b\\snapshots\\097ffc5b027beabc73acb627def2d1d278e774e9\\parakeet-ctc-0.6b.nemo.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from models.nllb import nllb\n",
+ "#from models.TTS_utils import xtts_v2\n",
+ "from models.parakeet import parakeet_ctc_model\n",
+ "from models.es_fastconformer import stt_es_model\n",
+ "model_nllb, tokinizer_nllb = nllb()\n",
+ "#xtts_v2_model = xtts_v2()\n",
+ "parakeet = parakeet_ctc_model()\n",
+ "#sst = stt_es_model()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Writing audio_segments\\segment_0.wav...\n",
+ "Processing segment...\n",
+ "0.021454915\n",
+ "Noise reduction done!\n",
+ "Noise removed. Time: 0.06042814254760742\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "6909654da05f4b0a88458139a9b37d6d",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Transcribing: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Transcription: hello can you hear me\n",
+ "Transcription time: 1.3255603313446045\n",
+ "Translating...\n",
+ "Processing translation...\n",
+ "Translation: Hola, ¿ me escuchas?\n",
+ "Translation time: 0.932790994644165\n",
+ "Writing audio_segments\\segment_1.wav...\n",
+ "Processing segment...\n",
+ "0.010297036\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_2.wav...\n",
+ "Processing segment...\n",
+ "0.006772096\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_3.wav...\n",
+ "Processing segment...\n",
+ "0.0034770737\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_4.wav...\n",
+ "Processing segment...\n",
+ "0.0039069764\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_5.wav...\n",
+ "Processing segment...\n",
+ "0.0046523036\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_6.wav...\n",
+ "Processing segment...\n",
+ "0.0040206155\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_7.wav...\n",
+ "Processing segment...\n",
+ "0.0043495107\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_8.wav...\n",
+ "Processing segment...\n",
+ "0.00421352\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_9.wav...\n",
+ "Processing segment...\n",
+ "0.0040656724\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_10.wav...\n",
+ "Processing segment...\n",
+ "0.0042125704\n",
+ "No speech detected.\n",
+ "Writing audio_segments\\segment_11.wav...\n",
+ "Processing segment...\n",
+ "0.015398192\n",
+ "Noise reduction done!\n",
+ "Noise removed. Time: 0.020929336547851562\n"
+ ]
+ },
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "de3d4b3a7bc14de2afbb01ff82252dc2",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "Transcribing: 0%| | 0/1 [00:00, ?it/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from stream_VAD import stream\n",
+ "stream(parakeet, model_nllb, tokinizer_nllb, \"english\", \"spanish\", 'record_temp.json', 'record_per.json')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "application/vnd.jupyter.widget-view+json": {
+ "model_id": "fdc0440dfcaf4c9f814689fc47c10e3e",
+ "version_major": 2,
+ "version_minor": 0
+ },
+ "text/plain": [
+ "(…)tt_es_fastconformer_hybrid_large_pc.nemo: 0%| | 0.00/459M [00:00, ?B/s]"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NeMo I 2024-04-12 16:10:09 nemo_logging:381] Tokenizer SentencePieceTokenizer initialized with 1024 tokens\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[NeMo W 2024-04-12 16:10:10 nemo_logging:393] If you intend to do training or fine-tuning, please call the ModelPT.setup_training_data() method and provide a valid configuration file to setup the train data loader.\n",
+ " Train config : \n",
+ " manifest_filepath: null\n",
+ " sample_rate: 16000\n",
+ " batch_size: 16\n",
+ " shuffle: true\n",
+ " num_workers: 8\n",
+ " pin_memory: true\n",
+ " use_start_end_token: false\n",
+ " trim_silence: false\n",
+ " max_duration: 20\n",
+ " min_duration: 0.1\n",
+ " is_tarred: false\n",
+ " tarred_audio_filepaths: null\n",
+ " shuffle_n: 2048\n",
+ " bucketing_strategy: fully_randomized\n",
+ " bucketing_batch_size: null\n",
+ " is_concat: false\n",
+ " concat_sampling_technique: random\n",
+ " concat_sampling_probabilities: ''\n",
+ " \n",
+ "[NeMo W 2024-04-12 16:10:10 nemo_logging:393] If you intend to do validation, please call the ModelPT.setup_validation_data() or ModelPT.setup_multiple_validation_data() method and provide a valid configuration file to setup the validation data loader(s). \n",
+ " Validation config : \n",
+ " manifest_filepath: null\n",
+ " sample_rate: 16000\n",
+ " batch_size: 32\n",
+ " shuffle: false\n",
+ " num_workers: 8\n",
+ " pin_memory: true\n",
+ " use_start_end_token: false\n",
+ " is_concat: true\n",
+ " concat_sampling_technique: random\n",
+ " concat_sampling_probabilities:\n",
+ " - 0.099\n",
+ " - 0.2771\n",
+ " - 0.5482\n",
+ " - 0.0757\n",
+ " concat_shuffle: false\n",
+ " concat_sampling_seed: 1234\n",
+ " max_duration: 20\n",
+ " \n",
+ "[NeMo W 2024-04-12 16:10:10 nemo_logging:393] Please call the ModelPT.setup_test_data() or ModelPT.setup_multiple_test_data() method and provide a valid configuration file to setup the test data loader(s).\n",
+ " Test config : \n",
+ " manifest_filepath: null\n",
+ " sample_rate: 16000\n",
+ " batch_size: 16\n",
+ " shuffle: false\n",
+ " num_workers: 8\n",
+ " pin_memory: true\n",
+ " use_start_end_token: false\n",
+ " \n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NeMo I 2024-04-12 16:10:10 nemo_logging:381] PADDING: 0\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[NeMo W 2024-04-12 16:10:11 nemo_logging:393] c:\\Users\\spn\\anaconda3\\envs\\capstone\\Lib\\site-packages\\torch\\nn\\modules\\rnn.py:83: UserWarning: dropout option adds dropout after all but last recurrent layer, so non-zero dropout expects num_layers greater than 1, but got dropout=0.2 and num_layers=1\n",
+ " warnings.warn(\"dropout option adds dropout after all but last \"\n",
+ " \n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[NeMo I 2024-04-12 16:10:11 nemo_logging:381] Using RNNT Loss : warprnnt_numba\n",
+ " Loss warprnnt_numba_kwargs: {'fastemit_lambda': 0.0, 'clamp': -1.0}\n",
+ "[NeMo I 2024-04-12 16:10:12 nemo_logging:381] Model EncDecHybridRNNTCTCBPEModel was successfully restored from C:\\Users\\spn\\.cache\\huggingface\\hub\\models--nvidia--stt_es_fastconformer_hybrid_large_pc\\snapshots\\65f775445d5947d6784c3e80d9a14d859571947f\\stt_es_fastconformer_hybrid_large_pc.nemo.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from models.es_fastconformer import stt_es_model\n",
+ "model = stt_es_model()\n",
+ "# check how much memory is used by the model\n",
+ "import torch\n",
+ "import psutil\n",
+ "import os\n",
+ "import time\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Model size: 458.86 MB\n"
+ ]
+ }
+ ],
+ "source": [
+ "# get the size of the model in term of memory in MB\n",
+ "def get_size(model):\n",
+ " torch.save(model.state_dict(), 'temp.p')\n",
+ " size = os.path.getsize('temp.p') / 1e6\n",
+ " os.remove('temp.p')\n",
+ " return size\n",
+ "size = get_size(model)\n",
+ "print(f\"Model size: {size:.2f} MB\")"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "capstone",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/main.py b/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..c93633f3f5008b6efde38d3f45ec609df15b4688
--- /dev/null
+++ b/main.py
@@ -0,0 +1,79 @@
+import streamlit as st
+from streamlit_webrtc import webrtc_streamer, WebRtcMode, RTCConfiguration
+import av
+import numpy as np
+import pydub
+from io import BytesIO
+from models.nllb import nllb
+from models.parakeet import parakeet_ctc_model
+from stream_VAD import stream
+from models.es_fastconformer import stt_es_model
+
+RTC_CONFIGURATION = RTCConfiguration({"iceServers": [{"urls": ["stun:stun.l.google.com:19302"]}]})
+
+# Load models once
+model_nllb, tokenizer_nllb = nllb()
+parakeet = parakeet_ctc_model()
+stt_model = stt_es_model()
+
+def process_audio(audio_chunk, language):
+ # Convert audio chunk to pydub.AudioSegment
+ audio_segment = pydub.AudioSegment(
+ data=audio_chunk.tobytes(),
+ sample_width=audio_chunk.format.sample_width,
+ frame_rate=audio_chunk.sample_rate,
+ channels=len(audio_chunk.layout.channels)
+ )
+
+ # Process audio based on selected language
+ if language == "en":
+ processed_audio = stream(parakeet, model_nllb, tokenizer_nllb, "english", "spanish", audio_segment)
+ elif language == "es":
+ processed_audio = stream(stt_model, model_nllb, tokenizer_nllb, "spanish", "english", audio_segment)
+ else:
+ return audio_chunk
+
+ # Convert processed audio back to numpy array
+ processed_audio_np = np.array(processed_audio.get_array_of_samples())
+
+ return processed_audio.frame_rate, processed_audio_np
+
+def audio_callback(frame: av.AudioFrame, language):
+ audio_data = frame.to_ndarray()
+ audio_chunk = av.AudioFrame.from_ndarray(audio_data, format="s16", layout="mono")
+ return process_audio(audio_chunk, language)
+
+st.title("Real-Time Audio Processing")
+
+language = st.radio("Select Language", ["en", "es"], index=0)
+
+webrtc_ctx = webrtc_streamer(
+ key="audio",
+ mode=WebRtcMode.SENDRECV,
+ rtc_configuration=RTC_CONFIGURATION,
+ media_stream_constraints={"audio": True, "video": False},
+ audio_receiver_size=256,
+ async_processing=True,
+)
+
+if webrtc_ctx.audio_receiver:
+ webrtc_ctx.audio_receiver.on("data", lambda frame: audio_callback(frame, language))
+
+if "audio_buffer" not in st.session_state:
+ st.session_state["audio_buffer"] = BytesIO()
+
+if webrtc_ctx.audio_receiver:
+ audio_frames = webrtc_ctx.audio_receiver.get_frames()
+
+ for frame in audio_frames:
+ processed_audio_rate, processed_audio_np = audio_callback(frame, language)
+
+ audio_segment = pydub.AudioSegment(
+ data=processed_audio_np.tobytes(),
+ sample_width=processed_audio_np.dtype.itemsize,
+ frame_rate=processed_audio_rate,
+ channels=1
+ )
+ st.session_state["audio_buffer"].write(audio_segment.export(format="wav").read())
+
+ st.audio(st.session_state["audio_buffer"].getvalue(), format="audio/wav")
diff --git a/main_stream.ipynb b/main_stream.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..cac1f852c0d4e94aa08e47be8b322db3c8a693c3
--- /dev/null
+++ b/main_stream.ipynb
@@ -0,0 +1,87 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "[2024-06-25 20:01:43,998] [INFO] [real_accelerator.py:191:get_accelerator] Setting ds_accelerator to cuda (auto detect)\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "[2024-06-25 20:01:44,318] torch.distributed.elastic.multiprocessing.redirects: [WARNING] NOTE: Redirects are currently not supported in Windows or MacOs.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Loading model...\n",
+ "[2024-06-25 20:02:01,663] [INFO] [logging.py:96:log_dist] [Rank -1] DeepSpeed info: version=0.14.0+ce78a63, git-hash=ce78a63, git-branch=master\n",
+ "[2024-06-25 20:02:01,664] [WARNING] [config_utils.py:69:_process_deprecated_field] Config parameter replace_method is deprecated. This parameter is no longer needed, please remove from your call to DeepSpeed-inference\n",
+ "[2024-06-25 20:02:01,665] [WARNING] [config_utils.py:69:_process_deprecated_field] Config parameter mp_size is deprecated use tensor_parallel.tp_size instead\n",
+ "[2024-06-25 20:02:01,666] [INFO] [logging.py:96:log_dist] [Rank -1] quantize_bits = 8 mlp_extra_grouping = False, quantize_groups = 1\n",
+ "[2024-06-25 20:02:01,900] [INFO] [logging.py:96:log_dist] [Rank -1] DeepSpeed-Inference config: {'layer_id': 0, 'hidden_size': 1024, 'intermediate_size': 4096, 'heads': 16, 'num_hidden_layers': -1, 'dtype': torch.float32, 'pre_layer_norm': True, 'norm_type': , 'local_rank': -1, 'stochastic_mode': False, 'epsilon': 1e-05, 'mp_size': 1, 'scale_attention': True, 'triangular_masking': True, 'local_attention': False, 'window_size': 1, 'rotary_dim': -1, 'rotate_half': False, 'rotate_every_two': True, 'return_tuple': True, 'mlp_after_attn': True, 'mlp_act_func_type': , 'specialized_mode': False, 'training_mp_size': 1, 'bigscience_bloom': False, 'max_out_tokens': 1024, 'min_out_tokens': 1, 'scale_attn_by_inverse_layer_idx': False, 'enable_qkv_quantization': False, 'use_mup': False, 'return_single_tuple': False, 'set_empty_params': False, 'transposed_mode': False, 'use_triton': False, 'triton_autotune': False, 'num_kv': -1, 'rope_theta': 10000}\n"
+ ]
+ }
+ ],
+ "source": [
+ "from models.TTS_utils import load_manual_xtts_v2\n",
+ "config_path = \"test/config.json\"\n",
+ "model_path = \"test\"\n",
+ "\n",
+ "xtts_v2_model = load_manual_xtts_v2(config_path, model_path)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Inference...\n",
+ "No more text to process\n",
+ "Inference...\n",
+ "No more text to process\n"
+ ]
+ }
+ ],
+ "source": [
+ "from models.TTS_utils import stream_prod\n",
+ "stream_prod(xtts_v2_model, \"record_temp.json\", \"audio_segments/\")\n",
+ "\n"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "capstone",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.11.7"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/models/TTS_utils.py b/models/TTS_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..dd65f4bd307c77021cd313c465fd3be904b4a0a2
--- /dev/null
+++ b/models/TTS_utils.py
@@ -0,0 +1,365 @@
+import torch
+from TTS.api import TTS
+import time
+import torchaudio
+from TTS.tts.configs.xtts_config import XttsConfig
+from TTS.tts.models.xtts import Xtts
+import sounddevice as sd
+
+
+def xtts_v2():
+ """
+ Load and return the XTTS v2 model.
+
+ This function initializes the XTTS v2 model from the 🐸TTS library.
+ The model is configured to use a GPU if available, otherwise it defaults to CPU.
+
+ Returns:
+ TTS: The initialized XTTS v2 model.
+
+ Example usage:
+ tts = xtts_v2()
+ """
+ # Get device
+ device = "cuda" if torch.cuda.is_available() else "cpu"
+
+ # List available 🐸TTS models
+ # print(TTS().list_models())
+
+ # Init TTS
+ tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2").to(device)
+
+
+ return tts
+
+def load_manual_xtts_v2(config_path, checkpoint_path):
+ """
+ Load the XTTS v2 model manually with configuration and checkpoint files.
+
+ Args:
+ config_path (str): Path to the configuration file.
+ Example: "path/to/config.json"
+ checkpoint_path (str): Path to the checkpoint directory.
+ Example: "path/to/checkpoint/"
+
+ Returns:
+ Xtts: The loaded XTTS v2 model.
+
+ Example usage:
+ model = load_manual_xtts_v2("config.json", "checkpoint/")
+ """
+ print("Loading model...")
+ config = XttsConfig()
+ config.load_json(config_path)
+ model = Xtts.init_from_config(config)
+ model.load_checkpoint(config, checkpoint_dir=checkpoint_path, use_deepspeed=True)
+ model.cuda()
+
+ return model
+
+import json
+import concurrent.futures
+
+# ----------------- StreamXTTSV2 -----------------
+def get_text_order(json_path, num_elements, ):
+ """
+ Retrieve a specified number of text elements from a JSON file and update the file.
+
+ Args:
+ json_path (str): Path to the JSON file.
+ Example: "path/to/data.json"
+ num_elements (int): Number of elements to retrieve.
+ Example: 3
+
+ Returns:
+ list: A list of tuples containing text, order, original_path, path_to_save, and language.
+
+ Example usage:
+ text_order = get_text_order("data.json", 3)
+ """
+ with open(json_path) as f:
+ data = json.load(f)
+ # check if the data is empty
+ if not data['text']:
+ return "No more text to process"
+ if len(data['text']) < num_elements:
+ num_elements = len(data['text'])
+ text = data['text'][:num_elements]
+ order = data['order'][:num_elements]
+ original_path = data['original_path'][:num_elements]
+ path_to_save = data['path_to_save'][:num_elements]
+ language = data['language'][:num_elements]
+ # remove the first elements
+ data['text'] = data['text'][num_elements:]
+ data['order'] = data['order'][num_elements:]
+ data['original_path'] = data['original_path'][num_elements:]
+ data['path_to_save'] = data['path_to_save'][num_elements:]
+ data['language'] = data['language'][num_elements:]
+ data['original_text'] = data['original_text'][num_elements:]
+ # write the data back to the file
+ with open(json_path, 'w') as f:
+ json.dump(data, f)
+ # make it return an array of arrays of text and order
+ result = [i for i in zip(text, order, original_path, path_to_save, language)]
+ return result
+
+def append_text_order(json_path, text, order, original_path, path_to_save, language, original_text=None):
+ """
+ Append a text order to a JSON file.
+
+ Args:
+ json_path (str): Path to the JSON file.
+ Example: "path/to/data.json"
+ text (str): The text to append.
+ Example: "Hello, world!"
+ order (int): The order index.
+ Example: 1
+ original_path (str): Path to the original file.
+ Example: "path/to/original.wav"
+ path_to_save (str): Path to save the processed file.
+ Example: "path/to/save.wav"
+ language (str): Language of the text.
+ Example: "en"
+ original_text (str, optional): The original text if available.
+ Example: "Hola, mundo!"
+
+ Example usage:
+ append_text_order("data.json", "Hello, world!", 1, "original.wav", "save.wav", "en", "Hola, mundo!")
+ """
+ with open(json_path) as f:
+ data = json.load(f)
+ data['text'].append(text)
+ data['order'].append(order)
+ data['original_path'].append(original_path)
+ data['path_to_save'].append(path_to_save)
+ data['language'].append(language)
+ data['original_text'].append(original_text)
+ with open(json_path, 'w') as f:
+ json.dump(data, f)
+# ----------------- StreamXTTSV2 -----------------
+class StreamXTTSV2:
+ """
+ A class to handle streaming TTS using XTTS v2 model.
+
+ Args:
+ model (Xtts): The XTTS v2 model.
+ sample_rate (int, optional): The sample rate for audio playback. Default is 24000.
+ buffer_size (int, optional): The buffer size for audio playback. Default is 2.
+ """
+ def __init__(self, model, sample_rate=24000, buffer_size=2):
+ self.model = model
+ #self.gpt_cond_latent = gpt_cond_latent
+ #self.speaker_embedding = speaker_embedding
+ self.sample_rate = sample_rate
+ self.buffer_size = buffer_size
+ self.speed = 0.95
+ self.stream_chunk_size = 40
+ self.buffer = torch.Tensor().to('cpu')
+ self.chunk_save = torch.Tensor().to('cpu')
+ self.is_playing = False
+ self.tasks_order = []
+ self.order = 0
+ self.initial = True
+
+ def chunk_callback(self, chunk, i, output_dir, order):
+ """
+ Callback function to handle each chunk of audio during streaming.
+
+ Args:
+ chunk (torch.Tensor): The audio chunk.
+ Example: tensor([0.1, 0.2, 0.3])
+ i (int): The chunk index.
+ Example: 1
+ output_dir (str): Directory to save the chunk.
+ Example: "output/"
+ order (int): The order index.
+ Example: 1
+ """
+ # Accumulate chunk into buffer
+ self.buffer = torch.cat((self.buffer, chunk.squeeze().to('cpu')), dim=-1)
+ self.chunk_save = torch.cat((self.chunk_save, chunk.squeeze().to('cpu')), dim=-1)
+ chunk_filename = output_dir + f"chunk_{i}_{order}.wav"
+ print(self.sample_rate)
+ torchaudio.save(chunk_filename, self.chunk_save.unsqueeze(0), self.sample_rate)
+ print(f"Chunk saved as {chunk_filename}")
+ self.chunk_save = torch.Tensor().to('cpu')
+
+ # Check if buffer has enough chunks to start playing
+ if not self.is_playing and len(self.buffer) >= self.buffer_size:
+ self.start_playback()
+
+ def start_playback(self):
+ """Start audio playback."""
+ self.is_playing = True
+ sd.play(self.buffer.numpy(), self.sample_rate, blocking=False)
+ self.buffer = torch.Tensor().to('cpu') # Reset buffer after starting playback
+
+ def play(self, chunks, output_dir, path_to_save, order):
+ """
+ Play the audio chunks and save the complete audio.
+
+ Args:
+ chunks (list): List of audio chunks.
+ Example: [tensor([0.1, 0.2, 0.3]), tensor([0.4, 0.5, 0.6])]
+ output_dir (str): Directory to save the chunks.
+ Example: "output/"
+ path_to_save (str): Path to save the complete audio file.
+ Example: "output/complete.wav"
+ order (int): The order index.
+ Example: 1
+ """
+ t0 = time.time()
+
+
+ for i, chunk in enumerate(chunks):
+ #print(chunk)
+ if i == 0:
+ print(f"Time to first chunk: {time.time() - t0}")
+ print(f"Received chunk {i} of audio length {chunk.shape[-1]}")
+ self.chunk_callback(chunk, i, output_dir, order)
+
+ # Ensure all remaining audio is played
+ while sd.get_stream().active:
+ time.sleep(0.1)
+ if len(self.buffer) > 0:
+ sd.play(self.buffer.numpy(), self.sample_rate, blocking=True)
+
+ # Save the complete audio to a file
+ torchaudio.save(path_to_save, self.buffer.unsqueeze(0), self.sample_rate)
+ print(f"Total audio length: {self.buffer.shape[-1]}")
+ print("Audio playback finished.")
+ #self.order += 1
+
+
+ def inference_and_play(self, json_path, output_dir):
+ """
+ Perform inference and play the generated audio.
+
+ Args:
+ json_path (str): Path to the JSON file containing text orders.
+ Example: "path/to/data.json"
+ output_dir (str): Directory to save the chunks.
+ Example: "output/"
+ """
+ print("Inference...")
+
+
+
+ self.texts = get_text_order(json_path, 3)
+
+ if self.texts == "No more text to process":
+ print("No more text to process")
+ return
+ if self.texts == "Not enough text to process":
+ print("Not enough text to process")
+ return
+ # is it returns a list of text and order
+ if self.texts is not None:
+ #print(self.texts)
+ self.gpt_cond_latent, self.speaker_embedding = self.model.get_conditioning_latents(audio_path=[self.texts[0][2]])
+ path_to_save = self.texts[0][3]
+ #print(self.gpt_cond_latent, self.speaker_embedding)
+ #print(self.texts)
+
+ with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
+ #text, order = get_text_order(texts)
+ #print(text, order)
+ futures = []
+ print(self.texts)
+
+ for text, i, path_a, path_s, lang in self.texts:
+ #print(text, i, path)
+ print(f"Processing text {i}: {text}")
+ print(f"Processing text {i}: {lang}")
+ future = executor.submit(self.model.inference_stream, text, lang, self.gpt_cond_latent, self.speaker_embedding, stream_chunk_size=self.stream_chunk_size, speed=self.speed)
+ #print(future.result())
+ futures.append(future)
+
+
+ for future, text in zip(futures, self.texts):
+ #print(text)
+ chunks = future.result()
+ print(text[1])
+ self.play(chunks, output_dir, path_to_save, text[1])
+ self.buffer = torch.Tensor().to('cpu')
+
+ self.inference_and_play(json_path, output_dir )
+
+
+def stream_prod(model, json_path, directory_path):
+ """
+ Stream production function for XTTS v2.
+
+ Args:
+ model (Xtts): The XTTS v2 model.
+ Example: model = load_manual_xtts_v2("config.json", "checkpoint/")
+ json_path (str): Path to the JSON file containing text orders.
+ Example: "path/to/data.json"
+ directory_path (str): Directory to save the chunks.
+ Example: "output/"
+ """
+ streamer = StreamXTTSV2(model, buffer_size=2)
+ results = streamer.inference_and_play(json_path, directory_path)
+ if results is None:
+ time.sleep(3)
+ stream_prod(model, json_path, directory_path)
+ return "Streaming finished"
+
+
+def just_inference(model, original_path, output_dir, text, lang, order):
+ """
+ Perform inference and save the generated audio.
+
+ Args:
+ model (Xtts): The XTTS v2 model.
+ Example: model = load_manual_xtts_v2("config.json", "checkpoint/")
+ original_path (str): Path to the original audio file.
+ Example: "path/to/original.wav"
+ output_dir (str): Directory to save the generated audio file.
+ Example: "output/"
+ text (str): The text to be synthesized.
+ Example: "Hello, world!"
+ lang (str): The language of the text.
+ Example: "en"
+ order (int): The order index.
+ Example: 1
+
+ Returns:
+ tuple: A tuple containing the path to the saved audio file and the time to first chunk.
+ Example: ("output/complete.wav", 1.23)
+ """
+ print("Inference...")
+ path_to_save = output_dir
+ t0 = time.time()
+ gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(audio_path=[original_path])
+
+ chunks = model.inference_stream(
+ text,
+ lang,
+ gpt_cond_latent,
+ speaker_embedding,
+ stream_chunk_size= 15 ,
+ speed=0.95
+ #temperature=0.1,
+ #enable_text_splitting=True,
+ )
+ full_audio = torch.Tensor().to('cpu')
+ wav_chuncks = []
+ for i, chunk in enumerate(chunks):
+ if i == 1:
+ time_to_first_chunk = time.time() - t0
+ print(f"Time to first chunck: {time_to_first_chunk}")
+ print(f"Received chunk {i} of audio length {chunk.shape[-1]}")
+ wav_chuncks.append(chunk)
+ full_audio = torch.cat((full_audio, chunk.squeeze().to('cpu')), dim=-1)
+
+
+
+ # Save the complete audio to a file
+ torchaudio.save(path_to_save, full_audio.unsqueeze(0), 24000)
+
+ print("Inference finished")
+ return path_to_save, time_to_first_chunk
+
+
+
diff --git a/models/__init__.py b/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/models/__pycache__/TTS_utils.cpython-311.pyc b/models/__pycache__/TTS_utils.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..28c6931837b73e23303fff64d62dc0c248cd74a3
Binary files /dev/null and b/models/__pycache__/TTS_utils.cpython-311.pyc differ
diff --git a/models/__pycache__/__init__.cpython-311.pyc b/models/__pycache__/__init__.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9a55861a4f3c619ad23aa383728b02f68ea560eb
Binary files /dev/null and b/models/__pycache__/__init__.cpython-311.pyc differ
diff --git a/models/__pycache__/__init__.cpython-38.pyc b/models/__pycache__/__init__.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..094d9907c31f22f4048e94019e04270fe9cdd059
Binary files /dev/null and b/models/__pycache__/__init__.cpython-38.pyc differ
diff --git a/models/__pycache__/es_fastconformer.cpython-311.pyc b/models/__pycache__/es_fastconformer.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b4dad3f5b469f737b619d8494da7e0e2420e82f8
Binary files /dev/null and b/models/__pycache__/es_fastconformer.cpython-311.pyc differ
diff --git a/models/__pycache__/nllb.cpython-311.pyc b/models/__pycache__/nllb.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d18316722d7662ac3dc1adec700491fa4e19f570
Binary files /dev/null and b/models/__pycache__/nllb.cpython-311.pyc differ
diff --git a/models/__pycache__/nllb.cpython-38.pyc b/models/__pycache__/nllb.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cc6e26065130e99bec0c40f6848dee383aa6487c
Binary files /dev/null and b/models/__pycache__/nllb.cpython-38.pyc differ
diff --git a/models/__pycache__/noise_red.cpython-311.pyc b/models/__pycache__/noise_red.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..6a39f4b88da29014923ab1b1b5fe481b5ef7f41c
Binary files /dev/null and b/models/__pycache__/noise_red.cpython-311.pyc differ
diff --git a/models/__pycache__/parakeet.cpython-311.pyc b/models/__pycache__/parakeet.cpython-311.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3d47cdd398ffca121ed5f7555292a5cc4c4c4c09
Binary files /dev/null and b/models/__pycache__/parakeet.cpython-311.pyc differ
diff --git a/models/__pycache__/parakeet.cpython-38.pyc b/models/__pycache__/parakeet.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a42af67a59156b3abd87aba6ae757362ff9656d2
Binary files /dev/null and b/models/__pycache__/parakeet.cpython-38.pyc differ
diff --git a/models/es_fastconformer.py b/models/es_fastconformer.py
new file mode 100644
index 0000000000000000000000000000000000000000..4890cd9ad0747ae012b85365609cd161d5d3fe22
--- /dev/null
+++ b/models/es_fastconformer.py
@@ -0,0 +1,37 @@
+import nemo.collections.asr as nemo_asr
+import torch
+
+def stt_es_model():
+ """
+ Load and return the pre-trained Spanish ASR model.
+
+ This function loads the pre-trained EncDecCTCModelBPE model from NVIDIA's NeMo collection.
+ The model is configured to use a GPU if available, otherwise it defaults to CPU.
+
+ Returns:
+ nemo_asr.models.EncDecCTCModelBPE: The loaded ASR model.
+ Example usage:
+ asr_model = stt_es_model()
+ """
+ # Load the pre-trained model
+ asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained("nvidia/stt_es_fastconformer_hybrid_large_pc")
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+ asr_model = asr_model.to(device)
+ return asr_model
+
+def stt_es_process(asr_model, audio_file):
+ """
+ Transcribe an audio file using the given ASR model.
+
+ Args:
+ asr_model (nemo_asr.models.EncDecCTCModelBPE): The ASR model to use for transcription.
+ Example: asr_model = stt_es_model()
+ audio_file (str): Path to the audio file to be transcribed.
+ Example: "path/to/audio_file.wav"
+
+ Returns:
+ list: A list containing the transcribed text.
+ Example: ["transcribed text"]
+ """
+ text = asr_model.transcribe(paths2audio_files=[audio_file], batch_size=1)
+ return text
diff --git a/models/nllb.py b/models/nllb.py
new file mode 100644
index 0000000000000000000000000000000000000000..15b0c781ac1f8af55ecc2c15355b3819d5f7fba8
--- /dev/null
+++ b/models/nllb.py
@@ -0,0 +1,72 @@
+from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
+import torch
+
+def nllb():
+ """
+ Load and return the NLLB (No Language Left Behind) model and tokenizer.
+
+ This function loads the NLLB-200-distilled-1.3B model and tokenizer from Hugging Face's Transformers library.
+ The model is configured to use a GPU if available, otherwise it defaults to CPU.
+
+ Returns:
+ tuple: A tuple containing the loaded model and tokenizer.
+ - model (transformers.AutoModelForSeq2SeqLM): The loaded NLLB model.
+ - tokenizer (transformers.AutoTokenizer): The loaded tokenizer.
+
+ Example usage:
+ model, tokenizer = nllb()
+ """
+ #device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+ device = torch.device("cpu")
+ # Load the tokenizer and model
+ tokenizer = AutoTokenizer.from_pretrained("facebook/nllb-200-distilled-1.3B")
+ model = AutoModelForSeq2SeqLM.from_pretrained("facebook/nllb-200-distilled-1.3B").to(device)
+ # write done to the file named status.txt
+ with open("status.txt", 'w') as f:
+ f.write("done")
+ return model, tokenizer
+
+def nllb_translate(model, tokenizer, article, language):
+ """
+ Translate an article using the NLLB model and tokenizer.
+
+ Args:
+ model (transformers.AutoModelForSeq2SeqLM): The NLLB model to use for translation.
+ Example: model, tokenizer = nllb()
+ tokenizer (transformers.AutoTokenizer): The tokenizer to use with the NLLB model.
+ Example: model, tokenizer = nllb()
+ article (str): The article text to be translated.
+ Example: "This is a sample article."
+ language (str): The target language for translation. Must be either 'spanish' or 'english'.
+ Example: "spanish"
+
+ Returns:
+ str: The translated text.
+ Example: "Este es un artículo de muestra."
+ """
+ try:
+ # Tokenize the text
+ inputs = tokenizer(article, return_tensors="pt")
+
+ # Move the tokenized inputs to the same device as the model
+ inputs = {k: v.to(model.device) for k, v in inputs.items()}
+
+ if language == "es":
+ translated_tokens = model.generate(
+ **inputs, forced_bos_token_id=tokenizer.lang_code_to_id["spa_Latn"], max_length=30
+ )
+ elif language == "en":
+ translated_tokens = model.generate(
+ **inputs, forced_bos_token_id=tokenizer.lang_code_to_id["eng_Latn"], max_length=30
+ )
+ else:
+ raise ValueError("Unsupported language. Use 'es' or 'en'.")
+
+ # Decode the translation
+ text = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
+ return text
+
+ except Exception as e:
+ print(f"Error during translation: {e}")
+ return "Translation failed"
+
diff --git a/models/noise_red.py b/models/noise_red.py
new file mode 100644
index 0000000000000000000000000000000000000000..eba45051a7d4a13934c8910e02fdd42d89d4a127
--- /dev/null
+++ b/models/noise_red.py
@@ -0,0 +1,28 @@
+from scipy.io import wavfile
+import noisereduce as nr
+# Load your data
+
+def noise_reduction(path, new_path):
+ """
+ Perform noise reduction on an audio file and save the output.
+
+ This function reads an audio file from the given path, performs noise reduction using the noisereduce library,
+ and saves the processed audio to a new file.
+
+ Args:
+ path (str): Path to the input audio file.
+ Example: "path/to/input_audio.wav"
+ new_path (str): Path to save the processed audio file.
+ Example: "path/to/output_audio.wav"
+
+ Returns:
+ None
+
+ Example usage:
+ noise_reduction("input.wav", "output.wav")
+ """
+ rate, data = wavfile.read(path)
+ # Perform noise reduction
+ reduced_noise = nr.reduce_noise(y=data, sr=rate)
+ wavfile.write(new_path, rate, reduced_noise)
+ return print("Noise reduction done!")
diff --git a/models/parakeet.py b/models/parakeet.py
new file mode 100644
index 0000000000000000000000000000000000000000..cf8b161b6cd4c1d64beff98172b75a560479790d
--- /dev/null
+++ b/models/parakeet.py
@@ -0,0 +1,43 @@
+import nemo.collections.asr as nemo_asr
+import torch
+
+
+def parakeet_ctc_model():
+ """
+ Load and return the pre-trained Parakeet CTC model.
+
+ This function loads the pre-trained EncDecCTCModelBPE model from NVIDIA's NeMo collection.
+ The model is configured to use a GPU if available, otherwise it defaults to CPU.
+
+ Returns:
+ nemo_asr.models.EncDecCTCModelBPE: The loaded ASR model.
+
+ Example usage:
+ asr_model = parakeet_ctc_model()
+ """
+ # Load the pre-trained model
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
+ asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained("nvidia/parakeet-ctc-0.6b")
+ asr_model = asr_model.to(device)
+ return asr_model
+
+def parakeet_ctc_process(asr_model, audio_file):
+ """
+ Transcribe an audio file using the given Parakeet CTC ASR model.
+
+ Args:
+ asr_model (nemo_asr.models.EncDecCTCModelBPE): The ASR model to use for transcription.
+ Example: asr_model = parakeet_ctc_model()
+ audio_file (str): Path to the audio file to be transcribed.
+ Example: "path/to/audio_file.wav"
+
+ Returns:
+ list: A list containing the transcribed text.
+ Example: ["transcribed text"]
+
+ Example usage:
+ text = parakeet_ctc_process(asr_model, "path/to/audio_file.wav")
+ """
+ text = asr_model.transcribe(paths2audio_files=[audio_file], batch_size=1)
+
+ return text
diff --git a/models/status.txt b/models/status.txt
new file mode 100644
index 0000000000000000000000000000000000000000..348ebd9491ed019f54af8f313ce8a4d782e0e609
--- /dev/null
+++ b/models/status.txt
@@ -0,0 +1 @@
+done
\ No newline at end of file
diff --git a/record_per.json b/record_per.json
new file mode 100644
index 0000000000000000000000000000000000000000..1da50bf00b5ae32da7b2244faf4daa464e3f8639
--- /dev/null
+++ b/record_per.json
@@ -0,0 +1 @@
+{"text": ["Hola, \u00bf c\u00f3mo est\u00e1s?", "Est\u00e1 bien, intent\u00e9moslo de nuevo.", "As\u00ed que este modelo debe capturar esto y traducir inmediatamente", "As\u00ed que este modelo debe capturar esto y traducir inmediatamente", "Hola, \u00bf qu\u00e9 pasa?", "Hola, \u00bf qu\u00e9 pasa?", "Est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien."], "original_path": ["audio-transcription/uploads/5\\audio.wav", "audio-transcription/uploads/1\\audio.wav", "audio-transcription/uploads/2\\audio.wav", "audio-transcription/uploads/3\\audio.wav", "audio-transcription/uploads/4\\audio.wav", "audio-transcription/uploads/5\\audio.wav", "audio-transcription/uploads/6\\audio.wav"], "order": [0, 0, 0, 0, 0, 0, 0], "path_to_save": ["results", "results", "results", "results", "results/", "results/", "results/"], "language": ["es", "es", "es", "es", "es", "es", "es"], "original_text": ["hello how are you", "okay let's try it again", " so this model should capture this and translate right away", " so this model should capture this and translate right away", "hello", "hello", "okay okay okay okay okay okay okay okay okay okay okay okay okay okay"]}
\ No newline at end of file
diff --git a/record_temp.json b/record_temp.json
new file mode 100644
index 0000000000000000000000000000000000000000..22c1b9facb894dee91f391f0b9bdd349afbf5f58
--- /dev/null
+++ b/record_temp.json
@@ -0,0 +1 @@
+{"text": ["Est\u00e1 bien, intent\u00e9moslo de nuevo.", "As\u00ed que este modelo debe capturar esto y traducir inmediatamente", "As\u00ed que este modelo debe capturar esto y traducir inmediatamente", "Hola, \u00bf qu\u00e9 pasa?", "Hola, \u00bf qu\u00e9 pasa?", "Est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien, est\u00e1 bien."], "original_path": ["audio-transcription/uploads/1\\audio.wav", "audio-transcription/uploads/2\\audio.wav", "audio-transcription/uploads/3\\audio.wav", "audio-transcription/uploads/4\\audio.wav", "audio-transcription/uploads/5\\audio.wav", "audio-transcription/uploads/6\\audio.wav"], "order": [0, 0, 0, 0, 0, 0], "path_to_save": ["results/", "results/", "results/", "results/", "results/", "results/"], "language": ["es", "es", "es", "es", "es", "es"], "original_text": ["okay let's try it again", " so this model should capture this and translate right away", " so this model should capture this and translate right away", "hello", "hello", "okay okay okay okay okay okay okay okay okay okay okay okay okay okay"]}
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..01ff7ae37d46653538769cf613ef0d4609e074bc
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,25 @@
+language_tool_python
+noisereduce
+numpy
+pandas
+pydub
+#scikit_learn==1.4.0
+scipy
+speechbrain
+webrtcvad==2.0.10
+deepspeed==0.14.0
+transformers==4.40.2
+hydra-core
+pytorch_lightning
+streamlit
+sounddevice
+playsound
+streamlit-webrtc
+pybind11
+fasttext
+Cython
+# nemo_toolkit[all]==1.21
+fastapi
+uvicorn
+pydantic==1.10.9
+spacy
diff --git a/results/readme b/results/readme
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/run.py b/run.py
new file mode 100644
index 0000000000000000000000000000000000000000..65cef88027d4b6a92443078fa70f586d4032ccee
--- /dev/null
+++ b/run.py
@@ -0,0 +1,73 @@
+import threading
+import argparse
+import subprocess
+from models.nllb import nllb
+from models.parakeet import parakeet_ctc_model
+from models.es_fastconformer import stt_es_model
+from models.TTS_utils import load_manual_xtts_v2
+from stream_VAD import stream
+
+def main(xtts_path, xtts_config_path, language="en", record_temp="record_temp.json", record_per="record_per.json", record_path="audio_segments/", result_dir="results", segments_dir="audio_segments"):
+ """
+ Main function to run the ASR stream and initiate the TTS stream production.
+
+ Args:
+ xtts_path (str): Path to the xtts model file.
+ Example: "path/to/xtts_model.pt"
+ xtts_config_path (str): Path to the xtts configuration file.
+ Example: "path/to/xtts_config.json"
+ language (str, optional): Language for the ASR model. Must be either 'en' for English or 'es' for Spanish.
+ Default: 'en'
+ Example: "en"
+ record_temp (str, optional): Path to the temporary record JSON file.
+ Default: "record_temp.json"
+ Example: "path/to/record_temp.json"
+ record_per (str, optional): Path to the periodic record JSON file.
+ Default: "record_per.json"
+ Example: "path/to/record_per.json"
+ record_path (str, optional): Path to the directory where audio segments are recorded.
+ Default: "audio_segments/"
+ Example: "path/to/audio_segments/"
+ result_dir (str, optional): Path to the directory where results are stored.
+ Default: "results"
+ Example: "path/to/results"
+ segments_dir (str, optional): Path to the directory where audio segments are stored.
+ Default: "audio_segments"
+ Example: "path/to/audio_segments"
+ """
+ model_nllb, tokinizer_nllb = nllb()
+
+ if language == "en":
+ asr = parakeet_ctc_model()
+ stream_thread = threading.Thread(target=stream, args=(asr, model_nllb, tokinizer_nllb, "english", "spanish", record_temp, record_per, result_dir, segments_dir))
+
+ elif language == "es":
+ asr = stt_es_model()
+ stream_thread = threading.Thread(target=stream, args=(asr, model_nllb, tokinizer_nllb, "spanish", "english", record_temp, record_per, result_dir, segments_dir))
+
+ else:
+ raise ValueError("Language not supported")
+
+ # Start the stream thread
+ stream_thread.start()
+
+ # Call the other script to start stream_prod
+ subprocess.Popen(['python', 'stream_prod_main.py', xtts_path, xtts_config_path, record_temp, record_path])
+
+ # Wait for the stream thread to complete
+ stream_thread.join()
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Run stream and initiate stream_prod.")
+ parser.add_argument("xtts_path", type=str, help="Path to the xtts model.")
+ parser.add_argument("xtts_config_path", type=str, help="Path to the xtts config.")
+ parser.add_argument("language", type=str, choices=["en", "es"], help="Language (en or es).")
+ parser.add_argument("--record_temp", type=str, default="record_temp.json", help="Path to the record temp file.")
+ parser.add_argument("--record_per", type=str, default="record_per.json", help="Path to the record per file.")
+ parser.add_argument("--record_path", type=str, default="audio_segments/", help="Path to the record directory.")
+ parser.add_argument("--result_dir", type=str, default="results", help="Path to the result directory.")
+ parser.add_argument("--segments_dir", type=str, default="audio_segments", help="Path to the segments directory.")
+
+ args = parser.parse_args()
+
+ main(args.xtts_path, args.xtts_config_path, args.language, args.record_temp, args.record_per, args.record_path, args.result_dir, args.segments_dir)
diff --git a/setup.sh b/setup.sh
new file mode 100644
index 0000000000000000000000000000000000000000..79f2995fd51a01af3ab7c7794b2c712b1dae6c1e
--- /dev/null
+++ b/setup.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+git clone https://github.com/coqui-ai/TTS/ && \
+cd TTS && \
+make install
+
+pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl
+pip install pybind11
+pip install wheel setuptools pip --upgrade
+pip install fasttext
+apt-get update && apt-get install -y libsndfile1 ffmpeg
+pip install Cython
+# pip install nemo_toolkit['all']
+
+# show the version of nemo in python
+python -c "import nemo; print(nemo.__version__)"
+pip install torch==2.2.2+cu121 -f https://download.pytorch.org/whl/cu121/torch_stable.html
+pip install torchaudio==2.2.2+cu121 -f https://download.pytorch.org/whl/cu121/torch_stable.html
+pip install -r requirements.txt
\ No newline at end of file
diff --git a/status.txt b/status.txt
new file mode 100644
index 0000000000000000000000000000000000000000..348ebd9491ed019f54af8f313ce8a4d782e0e609
--- /dev/null
+++ b/status.txt
@@ -0,0 +1 @@
+done
\ No newline at end of file
diff --git a/stream_VAD.py b/stream_VAD.py
new file mode 100644
index 0000000000000000000000000000000000000000..93a1c182174312496b938d392458ab9fa6de89ff
--- /dev/null
+++ b/stream_VAD.py
@@ -0,0 +1,249 @@
+import collections
+import contextlib
+import wave
+import webrtcvad
+import pyaudio
+import os
+import librosa
+import numpy as np
+from models.nllb import nllb_translate
+from models.TTS_utils import append_text_order
+from models.parakeet import parakeet_ctc_process
+from models.es_fastconformer import stt_es_process
+from concurrent.futures import ThreadPoolExecutor
+import time
+from models.noise_red import noise_reduction
+class Frame(object):
+ """
+ Represents a "frame" of audio data.
+
+ Args:
+ bytes (bytes): The audio data.
+ timestamp (float): The timestamp of the frame.
+ duration (float): The duration of the frame.
+ """
+ def __init__(self, bytes, timestamp, duration):
+ self.bytes = bytes
+ self.timestamp = timestamp
+ self.duration = duration
+
+def read_audio(stream, frame_duration_ms, rate):
+ """
+ Generates audio frames from the input stream.
+
+ Args:
+ stream (pyaudio.Stream): The audio stream.
+ frame_duration_ms (int): Duration of each frame in milliseconds.
+ rate (int): The sample rate of the audio.
+
+ Yields:
+ bytes: The audio frames.
+ """
+ frames_per_buffer = int(rate * frame_duration_ms / 1000)
+ while True:
+ yield stream.read(frames_per_buffer)
+
+def vad_collector(sample_rate, frame_duration_ms, padding_duration_ms, vad, frames):
+ """
+ Filters out non-voiced audio frames.
+
+ Args:
+ sample_rate (int): The sample rate of the audio.
+ frame_duration_ms (int): Duration of each frame in milliseconds.
+ padding_duration_ms (int): Duration of padding in milliseconds.
+ vad (webrtcvad.Vad): The VAD object.
+ frames (generator): A generator yielding audio frames.
+
+ Yields:
+ bytes: Voiced audio frames.
+ """
+ num_padding_frames = int(padding_duration_ms / frame_duration_ms)
+ ring_buffer = collections.deque(maxlen=num_padding_frames)
+ triggered = False
+
+ voiced_frames = []
+ for frame in frames:
+ is_speech = vad.is_speech(frame.bytes, sample_rate)
+
+ if not triggered:
+ ring_buffer.append((frame, is_speech))
+ num_voiced = len([f for f, speech in ring_buffer if speech])
+ if num_voiced > 0.9 * ring_buffer.maxlen:
+ triggered = True
+ voiced_frames.extend(f for f, speech in ring_buffer)
+ ring_buffer.clear()
+ else:
+ voiced_frames.append(frame)
+ ring_buffer.append((frame, is_speech))
+ num_unvoiced = len([f for f, speech in ring_buffer if not speech])
+ if num_unvoiced > 0.9 * ring_buffer.maxlen:
+ yield b''.join([f.bytes for f in voiced_frames])
+ ring_buffer.clear()
+ voiced_frames = []
+ triggered = False
+ if voiced_frames:
+ yield b''.join([f.bytes for f in voiced_frames])
+
+
+def is_segment_empty(file_path):
+ """
+ Check if the audio segment is empty.
+
+ Args:
+ file_path (str): Path to the audio file.
+
+ Returns:
+ bool: True if the segment is empty, False otherwise.
+ """
+ audio, _ = librosa.load(file_path)
+ rms = librosa.feature.rms(y=audio) # Pass the audio data as an argument
+ rms_mean = np.mean(rms)
+ print(rms_mean)
+
+ if rms_mean < 0.015:
+ return True
+ else:
+ return False
+
+
+def process_segment(asr_model, model_nllb, tokenizer_nllb, path_segments, path_results, target_lang, order, json_path_temp, json_path_record):
+ """
+ Process an audio segment: noise reduction, transcription, translation, and append results.
+
+ Args:
+ asr_model: The ASR model for transcription.
+ model_nllb: The NLLB model for translation.
+ tokenizer_nllb: The tokenizer for the NLLB model.
+ path_segments (str): Path to the audio segment.
+ path_results (str): Path to save the results.
+ target_lang (str): Target language for translation.
+ order (int): Order index of the segment.
+ json_path_temp (str): Path to the temporary JSON file.
+ json_path_record (str): Path to the record JSON file.
+ """
+ print("Processing segment...")
+ if is_segment_empty(path_segments):
+ print("No speech detected.")
+ # remove the empty segment
+ os.remove(path_segments)
+ return
+ # Noise Reduction
+ start_time = time.time()
+ noise_reduction(path_segments, path_segments)
+ print("Noise removed. Time:", time.time() - start_time)
+
+
+ # Transcription
+ transcription = transcribe(asr_model, path_segments, target_lang)
+ #if not transcription.strip():
+ # print("No speech detected.")
+ # return
+
+ # Translation
+ print("Translating...")
+ translation = translate(model_nllb, tokenizer_nllb, transcription, target_lang)
+
+ # Text-to-Speech
+ # process_tts(tts_model, translation, path_segments, target_lang, path_results)
+ append_text_order(json_path_temp,translation, order, path_segments, path_results, "es" if target_lang == "spanish" else "en", transcription)
+ append_text_order(json_path_record,translation, order, path_segments, path_results, "es" if target_lang == "spanish" else "en", transcription)
+def transcribe(asr_model, path_segments, target_lang):
+ """
+ Transcribe an audio segment using the specified ASR model.
+
+ Args:
+ asr_model: The ASR model for transcription.
+ path_segments (str): Path to the audio segment.
+ target_lang (str): Target language for transcription.
+
+ Returns:
+ str: The transcription of the audio segment.
+ """
+ start_time = time.time()
+ transcription_func = {
+ "spanish": parakeet_ctc_process,
+ "english": stt_es_process
+ }[target_lang]
+ transcription = transcription_func(asr_model, path_segments)
+ print("Transcription:", transcription[0])
+ print("Transcription time:", time.time() - start_time)
+ return transcription[0]
+
+def translate(model_nllb, tokenizer_nllb, text, target_lang):
+ """
+ Translate text using the specified NLLB model and tokenizer.
+
+ Args:
+ model_nllb: The NLLB model for translation.
+ tokenizer_nllb: The tokenizer for the NLLB model.
+ text (str): The text to translate.
+ target_lang (str): Target language for translation.
+
+ Returns:
+ str: The translated text.
+ """
+ print("Processing translation...")
+ start_time = time.time()
+ translation = nllb_translate(model_nllb, tokenizer_nllb, text, target_lang)
+ print("Translation:", translation)
+ print("Translation time:", time.time() - start_time)
+ return translation
+
+
+
+
+
+
+
+def stream(asr_model, model_nllb, tokinizer_nllb, source_lang, target_lang, json_file_temp, json_file_record,result_dir = "results",segments_dir = "audio_segments"):
+ """
+ Stream audio input, process segments, and save the results.
+
+ Args:
+ asr_model: The ASR model for transcription.
+ model_nllb: The NLLB model for translation.
+ tokinizer_nllb: The tokenizer for the NLLB model.
+ source_lang (str): Source language of the audio.
+ target_lang (str): Target language for translation.
+ json_file_temp (str): Path to the temporary JSON file.
+ json_file_record (str): Path to the record JSON file.
+ result_dir (str, optional): Directory to save the results. Default is "results".
+ segments_dir (str, optional): Directory to save the audio segments. Default is "audio_segments".
+ """
+ FORMAT = pyaudio.paInt16
+ CHANNELS = 1
+ RATE = 16000
+ CHUNK_DURATION_MS = 30 # supports 10, 20 and 30 (ms)
+ PADDING_DURATION_MS = 300
+ vad = webrtcvad.Vad(1)
+
+ audio = pyaudio.PyAudio()
+ stream = audio.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True, frames_per_buffer=160)
+ frames = read_audio(stream, CHUNK_DURATION_MS, RATE)
+ frames = (Frame(f, None, None) for f in frames)
+
+
+ if not os.path.exists(segments_dir):
+ os.makedirs(segments_dir)
+ if not os.path.exists(result_dir):
+ os.makedirs(result_dir)
+
+ executor = ThreadPoolExecutor(max_workers=2) # Adjust the number of workers as per your requirement
+
+ for i, segment in enumerate(vad_collector(RATE, CHUNK_DURATION_MS, PADDING_DURATION_MS, vad, frames)):
+ path_segements = os.path.join(segments_dir, f"segment_{i}.wav")
+ path_results = os.path.join(result_dir, f"result_{i}.wav")
+ print(f"Writing {path_segements}...")
+ with contextlib.closing(wave.open(path_segements, 'wb')) as wf:
+ wf.setnchannels(CHANNELS)
+ wf.setsampwidth(audio.get_sample_size(FORMAT))
+ wf.setframerate(RATE)
+ wf.writeframes(segment)
+
+ executor.submit(process_segment, asr_model, model_nllb, tokinizer_nllb, path_segements,path_results, target_lang, i, json_file_temp, json_file_record)
+
+ stream.stop_stream()
+ stream.close()
+ audio.terminate()
+
+
diff --git a/stream_VAD2.py b/stream_VAD2.py
new file mode 100644
index 0000000000000000000000000000000000000000..f26d85ccd44b219fdb9c33327c7b8b1e26ce066f
--- /dev/null
+++ b/stream_VAD2.py
@@ -0,0 +1,271 @@
+import collections
+import contextlib
+import wave
+import webrtcvad
+import pyaudio
+import os
+import librosa
+import numpy as np
+from models.nllb import nllb_translate
+from models.TTS_utils import append_text_order
+from models.parakeet import parakeet_ctc_process
+from models.es_fastconformer import stt_es_process
+from concurrent.futures import ThreadPoolExecutor
+import time
+from models.noise_red import noise_reduction
+class Frame(object):
+ """
+ Represents a "frame" of audio data.
+
+ Args:
+ bytes (bytes): The audio data.
+ timestamp (float): The timestamp of the frame.
+ duration (float): The duration of the frame.
+ """
+ def __init__(self, bytes, timestamp, duration):
+ self.bytes = bytes
+ self.timestamp = timestamp
+ self.duration = duration
+
+def read_audio(stream, frame_duration_ms, rate):
+ """
+ Generates audio frames from the input stream.
+
+ Args:
+ stream (pyaudio.Stream): The audio stream.
+ frame_duration_ms (int): Duration of each frame in milliseconds.
+ rate (int): The sample rate of the audio.
+
+ Yields:
+ bytes: The audio frames.
+ """
+ frames_per_buffer = int(rate * frame_duration_ms / 1000)
+ while True:
+ yield stream.read(frames_per_buffer)
+
+def vad_collector(sample_rate, frame_duration_ms, padding_duration_ms, vad, frames):
+ """
+ Filters out non-voiced audio frames.
+
+ Args:
+ sample_rate (int): The sample rate of the audio.
+ frame_duration_ms (int): Duration of each frame in milliseconds.
+ padding_duration_ms (int): Duration of padding in milliseconds.
+ vad (webrtcvad.Vad): The VAD object.
+ frames (generator): A generator yielding audio frames.
+
+ Yields:
+ bytes: Voiced audio frames.
+ """
+ num_padding_frames = int(padding_duration_ms / frame_duration_ms)
+ ring_buffer = collections.deque(maxlen=num_padding_frames)
+ triggered = False
+
+ voiced_frames = []
+ for frame in frames:
+ is_speech = vad.is_speech(frame.bytes, sample_rate)
+
+ if not triggered:
+ ring_buffer.append((frame, is_speech))
+ num_voiced = len([f for f, speech in ring_buffer if speech])
+ if num_voiced > 0.9 * ring_buffer.maxlen:
+ triggered = True
+ voiced_frames.extend(f for f, speech in ring_buffer)
+ ring_buffer.clear()
+ else:
+ voiced_frames.append(frame)
+ ring_buffer.append((frame, is_speech))
+ num_unvoiced = len([f for f, speech in ring_buffer if not speech])
+ if num_unvoiced > 0.9 * ring_buffer.maxlen:
+ yield b''.join([f.bytes for f in voiced_frames])
+ ring_buffer.clear()
+ voiced_frames = []
+ triggered = False
+ if voiced_frames:
+ yield b''.join([f.bytes for f in voiced_frames])
+
+
+def is_segment_empty(file_path):
+ """
+ Check if the audio segment is empty.
+
+ Args:
+ file_path (str): Path to the audio file.
+
+ Returns:
+ bool: True if the segment is empty, False otherwise.
+ """
+ audio, _ = librosa.load(file_path)
+ rms = librosa.feature.rms(y=audio) # Pass the audio data as an argument
+ rms_mean = np.mean(rms)
+ print(rms_mean)
+
+ if rms_mean < 0.015:
+ return True
+ else:
+ return False
+
+
+def process_segment(asr_model, model_nllb, tokenizer_nllb, path_segments, path_results, target_lang, order, json_path_temp, json_path_record):
+ """
+ Process an audio segment: noise reduction, transcription, translation, and append results.
+
+ Args:
+ asr_model: The ASR model for transcription.
+ model_nllb: The NLLB model for translation.
+ tokenizer_nllb: The tokenizer for the NLLB model.
+ path_segments (str): Path to the audio segment.
+ path_results (str): Path to save the results.
+ target_lang (str): Target language for translation.
+ order (int): Order index of the segment.
+ json_path_temp (str): Path to the temporary JSON file.
+ json_path_record (str): Path to the record JSON file.
+ """
+ print("Processing segment...")
+ if is_segment_empty(path_segments):
+ print("No speech detected.")
+ # remove the empty segment
+ os.remove(path_segments)
+ return
+ # Noise Reduction
+ start_time = time.time()
+ noise_reduction(path_segments, path_segments)
+ print("Noise removed. Time:", time.time() - start_time)
+
+
+ # Transcription
+ transcription = transcribe(asr_model, path_segments, target_lang)
+ #if not transcription.strip():
+ # print("No speech detected.")
+ # return
+
+ # Translation
+ print("Translating...")
+ translation = translate(model_nllb, tokenizer_nllb, transcription, target_lang)
+
+ # Text-to-Speech
+ # process_tts(tts_model, translation, path_segments, target_lang, path_results)
+ append_text_order(json_path_temp,translation, order, path_segments, path_results, "es" if target_lang == "spanish" else "en", transcription)
+ append_text_order(json_path_record,translation, order, path_segments, path_results, "es" if target_lang == "spanish" else "en", transcription)
+def transcribe(asr_model, path_segments, target_lang):
+ """
+ Transcribe an audio segment using the specified ASR model.
+
+ Args:
+ asr_model: The ASR model for transcription.
+ path_segments (str): Path to the audio segment.
+ target_lang (str): Target language for transcription.
+
+ Returns:
+ str: The transcription of the audio segment.
+ """
+ start_time = time.time()
+ transcription_func = {
+ "spanish": parakeet_ctc_process,
+ "english": stt_es_process
+ }[target_lang]
+ transcription = transcription_func(asr_model, path_segments)
+ print("Transcription:", transcription[0])
+ print("Transcription time:", time.time() - start_time)
+ return transcription[0]
+
+def translate(model_nllb, tokenizer_nllb, text, target_lang):
+ """
+ Translate text using the specified NLLB model and tokenizer.
+
+ Args:
+ model_nllb: The NLLB model for translation.
+ tokenizer_nllb: The tokenizer for the NLLB model.
+ text (str): The text to translate.
+ target_lang (str): Target language for translation.
+
+ Returns:
+ str: The translated text.
+ """
+ print("Processing translation...")
+ start_time = time.time()
+ translation = nllb_translate(model_nllb, tokenizer_nllb, text, target_lang)
+ print("Translation:", translation)
+ print("Translation time:", time.time() - start_time)
+ return translation
+
+
+
+
+
+
+
+import os
+import time
+import contextlib
+import wave
+from watchdog.observers import Observer
+from watchdog.events import FileSystemEventHandler
+from concurrent.futures import ThreadPoolExecutor
+
+# Assuming you have the following functions defined elsewhere:
+# - process_segment
+# - asr_model
+# - model_nllb
+# - tokinizer_nllb
+
+class NewAudioHandler(FileSystemEventHandler):
+ def __init__(self, asr_model, model_nllb, tokinizer_nllb, source_lang, target_lang, json_file_temp, json_file_record, result_dir):
+ self.asr_model = asr_model
+ self.model_nllb = model_nllb
+ self.tokinizer_nllb = tokinizer_nllb
+ self.source_lang = source_lang
+ self.target_lang = target_lang
+ self.json_file_temp = json_file_temp
+ self.json_file_record = json_file_record
+ self.result_dir = result_dir
+ self.executor = ThreadPoolExecutor(max_workers=2)
+
+ def on_created(self, event):
+ if not event.is_directory and event.src_path.endswith(".wav"):
+ self.process_new_audio(event.src_path)
+
+ def process_new_audio(self, audio_path):
+ file_name = os.path.basename(audio_path)
+ result_path = os.path.join(self.result_dir, f"result_{file_name}")
+ print(f"Processing {audio_path}...")
+ self.executor.submit(process_segment, self.asr_model, self.model_nllb, self.tokinizer_nllb, audio_path, result_path, self.target_lang, file_name, self.json_file_temp, self.json_file_record)
+
+def watch_folder(asr_model, model_nllb, tokinizer_nllb, source_lang, target_lang, json_file_temp, json_file_record, watch_dir="audio_segments", result_dir="results"):
+ """
+ Watch a folder for new audio files and process them.
+
+ Args:
+ asr_model: The ASR model for transcription.
+ model_nllb: The NLLB model for translation.
+ tokinizer_nllb: The tokenizer for the NLLB model.
+ source_lang (str): Source language of the audio.
+ target_lang (str): Target language for translation.
+ json_file_temp (str): Path to the temporary JSON file.
+ json_file_record (str): Path to the record JSON file.
+ watch_dir (str, optional): Directory to watch for new audio files. Default is "audio_segments".
+ result_dir (str, optional): Directory to save the results. Default is "results".
+ """
+ if not os.path.exists(watch_dir):
+ os.makedirs(watch_dir)
+ if not os.path.exists(result_dir):
+ os.makedirs(result_dir)
+
+ event_handler = NewAudioHandler(asr_model, model_nllb, tokinizer_nllb, source_lang, target_lang, json_file_temp, json_file_record, result_dir)
+ observer = Observer()
+ observer.schedule(event_handler, watch_dir, recursive=False)
+ observer.start()
+ print(f"Watching directory: {watch_dir}")
+
+ try:
+ while True:
+ time.sleep(1)
+ except KeyboardInterrupt:
+ observer.stop()
+ observer.join()
+
+# Example usage:
+# watch_folder(asr_model, model_nllb, tokinizer_nllb, "en", "fr", "temp.json", "record.json")
+
+
+
diff --git a/stream_prod_main.py b/stream_prod_main.py
new file mode 100644
index 0000000000000000000000000000000000000000..383bb1e0ae1f2516ec3b98d1a0e4e416c639401d
--- /dev/null
+++ b/stream_prod_main.py
@@ -0,0 +1,33 @@
+import argparse
+from models.TTS_utils import load_manual_xtts_v2
+from models.TTS_utils import stream_prod
+
+def main(xtts_path, xtts_config_path, record_temp="record_temp.json", record_path="audio_segments/"):
+ """
+ Main function to load the xtts model and run the stream production.
+
+ Args:
+ xtts_path (str): Path to the xtts model file.
+ Example: "path/to/xtts_model.pt"
+ xtts_config_path (str): Path to the xtts configuration file.
+ Example: "path/to/xtts_config.json"
+ record_temp (str, optional): Path to the temporary record JSON file.
+ Default: "record_temp.json"
+ Example: "path/to/record_temp.json"
+ record_path (str, optional): Path to the directory where audio segments are recorded.
+ Default: "audio_segments/"
+ Example: "path/to/audio_segments/"
+ """
+ xtts_v2_model = load_manual_xtts_v2(xtts_config_path, xtts_path)
+ stream_prod(xtts_v2_model, record_temp, record_path)
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Run stream_prod.")
+ parser.add_argument("xtts_path", type=str, help="Path to the xtts model.")
+ parser.add_argument("xtts_config_path", type=str, help="Path to the xtts config.")
+ parser.add_argument("record_temp", type=str, help="Path to the record temp file.")
+ parser.add_argument("record_path", type=str, help="Path to the record directory.")
+
+ args = parser.parse_args()
+
+ main(args.xtts_path, args.xtts_config_path, args.record_temp, args.record_path)
diff --git a/test.wav b/test.wav
new file mode 100644
index 0000000000000000000000000000000000000000..60f11ebcbf75f7d3572ec351ace3c9ab0a4757b0
Binary files /dev/null and b/test.wav differ
diff --git a/test/.gitattributes b/test/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..a6344aac8c09253b3b630fb776ae94478aa0275b
--- /dev/null
+++ b/test/.gitattributes
@@ -0,0 +1,35 @@
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.arrow filter=lfs diff=lfs merge=lfs -text
+*.bin filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.ckpt filter=lfs diff=lfs merge=lfs -text
+*.ftz filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.h5 filter=lfs diff=lfs merge=lfs -text
+*.joblib filter=lfs diff=lfs merge=lfs -text
+*.lfs.* filter=lfs diff=lfs merge=lfs -text
+*.mlmodel filter=lfs diff=lfs merge=lfs -text
+*.model filter=lfs diff=lfs merge=lfs -text
+*.msgpack filter=lfs diff=lfs merge=lfs -text
+*.npy filter=lfs diff=lfs merge=lfs -text
+*.npz filter=lfs diff=lfs merge=lfs -text
+*.onnx filter=lfs diff=lfs merge=lfs -text
+*.ot filter=lfs diff=lfs merge=lfs -text
+*.parquet filter=lfs diff=lfs merge=lfs -text
+*.pb filter=lfs diff=lfs merge=lfs -text
+*.pickle filter=lfs diff=lfs merge=lfs -text
+*.pkl filter=lfs diff=lfs merge=lfs -text
+*.pt filter=lfs diff=lfs merge=lfs -text
+*.pth filter=lfs diff=lfs merge=lfs -text
+*.rar filter=lfs diff=lfs merge=lfs -text
+*.safetensors filter=lfs diff=lfs merge=lfs -text
+saved_model/**/* filter=lfs diff=lfs merge=lfs -text
+*.tar.* filter=lfs diff=lfs merge=lfs -text
+*.tar filter=lfs diff=lfs merge=lfs -text
+*.tflite filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.wasm filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
+*tfevents* filter=lfs diff=lfs merge=lfs -text
diff --git a/test/LICENSE.txt b/test/LICENSE.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e41830fcc6069d335d201e63eb30f487aada1093
--- /dev/null
+++ b/test/LICENSE.txt
@@ -0,0 +1,84 @@
+# Coqui Public Model License 1.0.0
+https://coqui.ai/cpml.txt
+
+
+This license allows only non-commercial use of a machine learning model and its outputs.
+
+
+## Acceptance
+
+
+In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
+
+
+## Licenses
+
+
+The licensor grants you a copyright license to do everything you might do with the model that would otherwise infringe the licensor's copyright in it, for any non-commercial purpose. The licensor grants you a patent license that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the model in the form provided by
+the licensor, for any non-commercial purpose.
+
+
+## Non-commercial Purpose
+
+
+Non-commercial purposes include any of the following uses of the model or its output, but only so far as you do not receive any direct or indirect payment arising from the use of the model or its output.
+
+
+### Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious
+observance.
+
+
+### Use by commercial or for-profit entities for testing, evaluation, or non-commercial research and development. Use of the model to train other models for commercial use is not a non-commercial purpose.
+
+
+### Use by any charitable organization for charitable purposes, or for testing or evaluation. Use for revenue-generating activity, including projects directly funded by government grants, is not a non-commercial purpose.
+
+
+## Notices
+
+
+You must ensure that anyone who gets a copy of any part of the model, or any modification of the model, or their output, from you also gets a copy of these terms or the URL for them above.
+
+
+## No Other Rights
+
+
+These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply
+any other licenses.
+
+
+## Patent Defense
+
+
+If you make any written claim that the model infringes or contributes to infringement of any patent, your licenses for the model granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
+
+
+## Violations
+
+
+The first time you are notified in writing that you have violated any of these terms, or done anything with the model or its output that is not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 30 days of receiving notice. Otherwise, all your licenses
+end immediately.
+
+
+## No Liability
+
+
+***As far as the law allows, the model and its output come as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the model or its output, under any kind of legal claim. If this provision is not enforceable in your jurisdiction, your licenses are void.***
+
+
+## Definitions
+
+
+The **licensor** is the individual or entity offering these terms, and the **model** is the model the licensor makes available under these terms, including any documentation or similar information about the model.
+
+
+**You** refers to the individual or entity agreeing to these terms.
+
+
+**Your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **Control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
+
+
+**Your licenses** are all the licenses granted to you under these terms.
+
+
+**Use** means anything you do with the model or its output requiring one of your licenses.
\ No newline at end of file
diff --git a/test/README.md b/test/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..cd6ef8d005510db554781aa90025b8eabed271bf
--- /dev/null
+++ b/test/README.md
@@ -0,0 +1,103 @@
+---
+license: other
+license_name: coqui-public-model-license
+license_link: https://coqui.ai/cpml
+library_name: coqui
+pipeline_tag: text-to-speech
+widget:
+ - text: "Once when I was six years old I saw a magnificent picture"
+---
+
+# ⓍTTS
+ⓍTTS is a Voice generation model that lets you clone voices into different languages by using just a quick 6-second audio clip. There is no need for an excessive amount of training data that spans countless hours.
+
+This is the same or similar model to what powers [Coqui Studio](https://coqui.ai/) and [Coqui API](https://docs.coqui.ai/docs).
+
+### Features
+- Supports 17 languages.
+- Voice cloning with just a 6-second audio clip.
+- Emotion and style transfer by cloning.
+- Cross-language voice cloning.
+- Multi-lingual speech generation.
+- 24khz sampling rate.
+
+### Updates over XTTS-v1
+- 2 new languages; Hungarian and Korean
+- Architectural improvements for speaker conditioning.
+- Enables the use of multiple speaker references and interpolation between speakers.
+- Stability improvements.
+- Better prosody and audio quality across the board.
+
+### Languages
+XTTS-v2 supports 17 languages: **English (en), Spanish (es), French (fr), German (de), Italian (it), Portuguese (pt),
+Polish (pl), Turkish (tr), Russian (ru), Dutch (nl), Czech (cs), Arabic (ar), Chinese (zh-cn), Japanese (ja), Hungarian (hu), Korean (ko)
+Hindi (hi)**.
+
+Stay tuned as we continue to add support for more languages. If you have any language requests, feel free to reach out!
+
+### Code
+The [code-base](https://github.com/coqui-ai/TTS) supports inference and [fine-tuning](https://tts.readthedocs.io/en/latest/models/xtts.html#training).
+
+### Demo Spaces
+- [XTTS Space](https://huggingface.co/spaces/coqui/xtts) : You can see how model performs on supported languages, and try with your own reference or microphone input
+- [XTTS Voice Chat with Mistral or Zephyr](https://huggingface.co/spaces/coqui/voice-chat-with-mistral) : You can experience streaming voice chat with Mistral 7B Instruct or Zephyr 7B Beta
+
+| | |
+| ------------------------------- | --------------------------------------- |
+| 🐸💬 **CoquiTTS** | [coqui/TTS on Github](https://github.com/coqui-ai/TTS)|
+| 💼 **Documentation** | [ReadTheDocs](https://tts.readthedocs.io/en/latest/)
+| 👩💻 **Questions** | [GitHub Discussions](https://github.com/coqui-ai/TTS/discussions) |
+| 🗯 **Community** | [Discord](https://discord.gg/5eXr5seRrv) |
+
+
+### License
+This model is licensed under [Coqui Public Model License](https://coqui.ai/cpml). There's a lot that goes into a license for generative models, and you can read more of [the origin story of CPML here](https://coqui.ai/blog/tts/cpml).
+
+### Contact
+Come and join in our 🐸Community. We're active on [Discord](https://discord.gg/fBC58unbKE) and [Twitter](https://twitter.com/coqui_ai).
+You can also mail us at info@coqui.ai.
+
+Using 🐸TTS API:
+
+```python
+from TTS.api import TTS
+tts = TTS("tts_models/multilingual/multi-dataset/xtts_v2", gpu=True)
+
+# generate speech by cloning a voice using default settings
+tts.tts_to_file(text="It took me quite a long time to develop a voice, and now that I have it I'm not going to be silent.",
+ file_path="output.wav",
+ speaker_wav="/path/to/target/speaker.wav",
+ language="en")
+
+```
+
+Using 🐸TTS Command line:
+
+```console
+ tts --model_name tts_models/multilingual/multi-dataset/xtts_v2 \
+ --text "Bugün okula gitmek istemiyorum." \
+ --speaker_wav /path/to/target/speaker.wav \
+ --language_idx tr \
+ --use_cuda true
+```
+
+Using the model directly:
+
+```python
+from TTS.tts.configs.xtts_config import XttsConfig
+from TTS.tts.models.xtts import Xtts
+
+config = XttsConfig()
+config.load_json("/path/to/xtts/config.json")
+model = Xtts.init_from_config(config)
+model.load_checkpoint(config, checkpoint_dir="/path/to/xtts/", eval=True)
+model.cuda()
+
+outputs = model.synthesize(
+ "It took me quite a long time to develop a voice and now that I have it I am not going to be silent.",
+ config,
+ speaker_wav="/data/TTS-public/_refclips/3.wav",
+ gpt_cond_len=3,
+ language="en",
+)
+```
diff --git a/test/config.json b/test/config.json
new file mode 100644
index 0000000000000000000000000000000000000000..3224e97bddc5facc012f8c7668b47c8f2dc30065
--- /dev/null
+++ b/test/config.json
@@ -0,0 +1,159 @@
+{
+ "output_path": "output",
+ "logger_uri": null,
+ "run_name": "run",
+ "project_name": null,
+ "run_description": "\ud83d\udc38Coqui trainer run.",
+ "print_step": 25,
+ "plot_step": 100,
+ "model_param_stats": false,
+ "wandb_entity": null,
+ "dashboard_logger": "tensorboard",
+ "save_on_interrupt": true,
+ "log_model_step": null,
+ "save_step": 10000,
+ "save_n_checkpoints": 5,
+ "save_checkpoints": true,
+ "save_all_best": false,
+ "save_best_after": 10000,
+ "target_loss": null,
+ "print_eval": false,
+ "test_delay_epochs": 0,
+ "run_eval": true,
+ "run_eval_steps": null,
+ "distributed_backend": "nccl",
+ "distributed_url": "tcp://localhost:54321",
+ "mixed_precision": false,
+ "precision": "fp16",
+ "epochs": 1000,
+ "batch_size": 32,
+ "eval_batch_size": 16,
+ "grad_clip": 0.0,
+ "scheduler_after_epoch": true,
+ "lr": 0.001,
+ "optimizer": "radam",
+ "optimizer_params": null,
+ "lr_scheduler": null,
+ "lr_scheduler_params": {},
+ "use_grad_scaler": false,
+ "allow_tf32": false,
+ "cudnn_enable": true,
+ "cudnn_deterministic": false,
+ "cudnn_benchmark": false,
+ "training_seed": 54321,
+ "model": "xtts",
+ "num_loader_workers": 0,
+ "num_eval_loader_workers": 0,
+ "use_noise_augment": false,
+ "audio": {
+ "sample_rate": 22050,
+ "output_sample_rate": 24000
+ },
+ "use_phonemes": false,
+ "phonemizer": null,
+ "phoneme_language": null,
+ "compute_input_seq_cache": false,
+ "text_cleaner": null,
+ "enable_eos_bos_chars": false,
+ "test_sentences_file": "",
+ "phoneme_cache_path": null,
+ "characters": null,
+ "add_blank": false,
+ "batch_group_size": 0,
+ "loss_masking": null,
+ "min_audio_len": 1,
+ "max_audio_len": Infinity,
+ "min_text_len": 1,
+ "max_text_len": Infinity,
+ "compute_f0": false,
+ "compute_energy": false,
+ "compute_linear_spec": false,
+ "precompute_num_workers": 0,
+ "start_by_longest": false,
+ "shuffle": false,
+ "drop_last": false,
+ "datasets": [
+ {
+ "formatter": "",
+ "dataset_name": "",
+ "path": "",
+ "meta_file_train": "",
+ "ignored_speakers": null,
+ "language": "",
+ "phonemizer": "",
+ "meta_file_val": "",
+ "meta_file_attn_mask": ""
+ }
+ ],
+ "test_sentences": [],
+ "eval_split_max_size": null,
+ "eval_split_size": 0.01,
+ "use_speaker_weighted_sampler": false,
+ "speaker_weighted_sampler_alpha": 1.0,
+ "use_language_weighted_sampler": false,
+ "language_weighted_sampler_alpha": 1.0,
+ "use_length_weighted_sampler": false,
+ "length_weighted_sampler_alpha": 1.0,
+ "model_args": {
+ "gpt_batch_size": 1,
+ "enable_redaction": false,
+ "kv_cache": true,
+ "gpt_checkpoint": null,
+ "clvp_checkpoint": null,
+ "decoder_checkpoint": null,
+ "num_chars": 255,
+ "tokenizer_file": "",
+ "gpt_max_audio_tokens": 605,
+ "gpt_max_text_tokens": 402,
+ "gpt_max_prompt_tokens": 70,
+ "gpt_layers": 30,
+ "gpt_n_model_channels": 1024,
+ "gpt_n_heads": 16,
+ "gpt_number_text_tokens": 6681,
+ "gpt_start_text_token": null,
+ "gpt_stop_text_token": null,
+ "gpt_num_audio_tokens": 1026,
+ "gpt_start_audio_token": 1024,
+ "gpt_stop_audio_token": 1025,
+ "gpt_code_stride_len": 1024,
+ "gpt_use_masking_gt_prompt_approach": true,
+ "gpt_use_perceiver_resampler": true,
+ "input_sample_rate": 22050,
+ "output_sample_rate": 24000,
+ "output_hop_length": 256,
+ "decoder_input_dim": 1024,
+ "d_vector_dim": 512,
+ "cond_d_vector_in_each_upsampling_layer": true,
+ "duration_const": 102400
+ },
+ "model_dir": null,
+ "languages": [
+ "en",
+ "es",
+ "fr",
+ "de",
+ "it",
+ "pt",
+ "pl",
+ "tr",
+ "ru",
+ "nl",
+ "cs",
+ "ar",
+ "zh-cn",
+ "hu",
+ "ko",
+ "ja",
+ "hi"
+ ],
+ "temperature": 0.75,
+ "length_penalty": 1.0,
+ "repetition_penalty": 5.0,
+ "top_k": 50,
+ "top_p": 0.85,
+ "num_gpt_outputs": 1,
+ "gpt_cond_len": 30,
+ "gpt_cond_chunk_len": 4,
+ "max_ref_len": 30,
+ "sound_norm_refs": false
+}
\ No newline at end of file
diff --git a/test/dvae.pth b/test/dvae.pth
new file mode 100644
index 0000000000000000000000000000000000000000..8615724c5bd21738638210ac62090133d0713ebb
--- /dev/null
+++ b/test/dvae.pth
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b29bc227d410d4991e0a8c09b858f77415013eeb9fba9650258e96095557d97a
+size 210514388
diff --git a/test/hash.md5 b/test/hash.md5
new file mode 100644
index 0000000000000000000000000000000000000000..0342b1a8e1708abdf53a86af8eb252762a6b0b79
--- /dev/null
+++ b/test/hash.md5
@@ -0,0 +1 @@
+10f92b55c512af7a8d39d650547a15a7
\ No newline at end of file
diff --git a/test/mel_stats.pth b/test/mel_stats.pth
new file mode 100644
index 0000000000000000000000000000000000000000..ed4d6e4f71fba223d920da25f1bbd0c8619433b5
--- /dev/null
+++ b/test/mel_stats.pth
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f69422a8a8f344c4fca2f0c6b8d41d2151d6615b7321e48e6bb15ae949b119c
+size 1067
diff --git a/test/model.pth b/test/model.pth
new file mode 100644
index 0000000000000000000000000000000000000000..2ee8003f7539e728937890d70ee73e98d4d483c3
--- /dev/null
+++ b/test/model.pth
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7ea20001c6a0a841c77e252d8409f6a74fb423e79b3206a0771ba5989776187
+size 1867929118
diff --git a/test/readme b/test/readme
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/test/samples/de_sample.wav b/test/samples/de_sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..098dc1dacc5ba4d59b6588df6048d735f9a065bf
Binary files /dev/null and b/test/samples/de_sample.wav differ
diff --git a/test/samples/en_sample.wav b/test/samples/en_sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..2f76a1f2c9d0ea4cb4766ff139c84e49d1ec170d
Binary files /dev/null and b/test/samples/en_sample.wav differ
diff --git a/test/samples/es_sample.wav b/test/samples/es_sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..49cfaf99d7b53d829f403e3aecedd03ce020d860
Binary files /dev/null and b/test/samples/es_sample.wav differ
diff --git a/test/samples/fr_sample.wav b/test/samples/fr_sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..33df714c37c14b6ffedbedcf5f60cbe7c8bdfea0
Binary files /dev/null and b/test/samples/fr_sample.wav differ
diff --git a/test/samples/ja-sample.wav b/test/samples/ja-sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..1425e739fc269bd1f170bad935505cf5e07a70e5
Binary files /dev/null and b/test/samples/ja-sample.wav differ
diff --git a/test/samples/pt_sample.wav b/test/samples/pt_sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..a42dc1975f076539a61c313839d008865bb8a76b
Binary files /dev/null and b/test/samples/pt_sample.wav differ
diff --git a/test/samples/tr_sample.wav b/test/samples/tr_sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..cd0cf7081d55a2495f437a90d8b691d9ad506b75
Binary files /dev/null and b/test/samples/tr_sample.wav differ
diff --git a/test/samples/zh-cn-sample.wav b/test/samples/zh-cn-sample.wav
new file mode 100644
index 0000000000000000000000000000000000000000..7894cafdf82425ecf7eb2804f1bfaca4048c83f5
Binary files /dev/null and b/test/samples/zh-cn-sample.wav differ
diff --git a/test/speakers_xtts.pth b/test/speakers_xtts.pth
new file mode 100644
index 0000000000000000000000000000000000000000..85e8ff78084dcdf67231297758a9eefb770301c3
--- /dev/null
+++ b/test/speakers_xtts.pth
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f0f6137c19a4eab0cbbe4c99b5babacf68b1746e50da90807708c10e645b943b
+size 7754818
diff --git a/test/vocab.json b/test/vocab.json
new file mode 100644
index 0000000000000000000000000000000000000000..77b4748525aad284e548729ef7af162b929b0fff
--- /dev/null
+++ b/test/vocab.json
@@ -0,0 +1,15427 @@
+{
+ "version": "1.0",
+ "truncation": null,
+ "padding": null,
+ "added_tokens": [
+ {
+ "id": 0,
+ "special": true,
+ "content": "[STOP]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 1,
+ "special": true,
+ "content": "[UNK]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 2,
+ "special": true,
+ "content": "[SPACE]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 259,
+ "special": true,
+ "content": "[en]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 260,
+ "special": true,
+ "content": "[de]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 261,
+ "special": true,
+ "content": "[START]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 262,
+ "special": true,
+ "content": "[fr]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 284,
+ "special": true,
+ "content": "[es]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 285,
+ "special": true,
+ "content": "[it]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 286,
+ "special": true,
+ "content": "[pt]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 294,
+ "special": true,
+ "content": "[pl]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 295,
+ "special": true,
+ "content": "[tr]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 267,
+ "special": true,
+ "content": "[ru]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 293,
+ "special": true,
+ "content": "[cs]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 297,
+ "special": true,
+ "content": "[nl]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 5022,
+ "special": true,
+ "content": "[ar]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 5023,
+ "special": true,
+ "content": "[zh-cn]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 5412,
+ "special": true,
+ "content": "[ja]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 5753,
+ "special": true,
+ "content": "[hu]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 6152,
+ "special": true,
+ "content": "[ko]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ },
+ {
+ "id": 6680,
+ "special": true,
+ "content": "[hi]",
+ "single_word": false,
+ "lstrip": false,
+ "rstrip": false,
+ "normalized": false
+ }
+ ],
+ "normalizer": null,
+ "pre_tokenizer": {
+ "type": "Whitespace"
+ },
+ "post_processor": null,
+ "decoder": null,
+ "model": {
+ "type": "BPE",
+ "dropout": null,
+ "unk_token": "[UNK]",
+ "continuing_subword_prefix": null,
+ "end_of_word_suffix": null,
+ "fuse_unk": false,
+ "vocab": {
+ "[STOP]": 0,
+ "[UNK]": 1,
+ "[SPACE]": 2,
+ "!": 3,
+ "'": 4,
+ "(": 5,
+ ")": 6,
+ ",": 7,
+ "-": 8,
+ ".": 9,
+ "/": 10,
+ ":": 11,
+ ";": 12,
+ "?": 13,
+ "a": 14,
+ "b": 15,
+ "c": 16,
+ "d": 17,
+ "e": 18,
+ "f": 19,
+ "g": 20,
+ "h": 21,
+ "i": 22,
+ "j": 23,
+ "k": 24,
+ "l": 25,
+ "m": 26,
+ "n": 27,
+ "o": 28,
+ "p": 29,
+ "q": 30,
+ "r": 31,
+ "s": 32,
+ "t": 33,
+ "u": 34,
+ "v": 35,
+ "w": 36,
+ "x": 37,
+ "y": 38,
+ "z": 39,
+ "th": 40,
+ "in": 41,
+ "the": 42,
+ "an": 43,
+ "er": 44,
+ "ou": 45,
+ "re": 46,
+ "on": 47,
+ "at": 48,
+ "ed": 49,
+ "en": 50,
+ "to": 51,
+ "ing": 52,
+ "and": 53,
+ "is": 54,
+ "as": 55,
+ "al": 56,
+ "or": 57,
+ "of": 58,
+ "ar": 59,
+ "it": 60,
+ "es": 61,
+ "he": 62,
+ "st": 63,
+ "le": 64,
+ "om": 65,
+ "se": 66,
+ "be": 67,
+ "ad": 68,
+ "ow": 69,
+ "ly": 70,
+ "ch": 71,
+ "wh": 72,
+ "that": 73,
+ "you": 74,
+ "li": 75,
+ "ve": 76,
+ "ac": 77,
+ "ti": 78,
+ "ld": 79,
+ "me": 80,
+ "was": 81,
+ "gh": 82,
+ "id": 83,
+ "ll": 84,
+ "wi": 85,
+ "ent": 86,
+ "for": 87,
+ "ay": 88,
+ "ro": 89,
+ "ver": 90,
+ "ic": 91,
+ "her": 92,
+ "ke": 93,
+ "his": 94,
+ "no": 95,
+ "ut": 96,
+ "un": 97,
+ "ir": 98,
+ "lo": 99,
+ "we": 100,
+ "ri": 101,
+ "ha": 102,
+ "with": 103,
+ "ght": 104,
+ "out": 105,
+ "im": 106,
+ "ion": 107,
+ "all": 108,
+ "ab": 109,
+ "one": 110,
+ "ne": 111,
+ "ge": 112,
+ "ould": 113,
+ "ter": 114,
+ "mo": 115,
+ "had": 116,
+ "ce": 117,
+ "she": 118,
+ "go": 119,
+ "sh": 120,
+ "ur": 121,
+ "am": 122,
+ "so": 123,
+ "pe": 124,
+ "my": 125,
+ "de": 126,
+ "are": 127,
+ "but": 128,
+ "ome": 129,
+ "fr": 130,
+ "ther": 131,
+ "fe": 132,
+ "su": 133,
+ "do": 134,
+ "con": 135,
+ "te": 136,
+ "ain": 137,
+ "ere": 138,
+ "po": 139,
+ "if": 140,
+ "they": 141,
+ "us": 142,
+ "ag": 143,
+ "tr": 144,
+ "now": 145,
+ "oun": 146,
+ "this": 147,
+ "have": 148,
+ "not": 149,
+ "sa": 150,
+ "il": 151,
+ "up": 152,
+ "thing": 153,
+ "from": 154,
+ "ap": 155,
+ "him": 156,
+ "ack": 157,
+ "ation": 158,
+ "ant": 159,
+ "our": 160,
+ "op": 161,
+ "like": 162,
+ "ust": 163,
+ "ess": 164,
+ "bo": 165,
+ "ok": 166,
+ "ul": 167,
+ "ind": 168,
+ "ex": 169,
+ "com": 170,
+ "some": 171,
+ "there": 172,
+ "ers": 173,
+ "co": 174,
+ "res": 175,
+ "man": 176,
+ "ard": 177,
+ "pl": 178,
+ "wor": 179,
+ "way": 180,
+ "tion": 181,
+ "fo": 182,
+ "ca": 183,
+ "were": 184,
+ "by": 185,
+ "ate": 186,
+ "pro": 187,
+ "ted": 188,
+ "ound": 189,
+ "own": 190,
+ "would": 191,
+ "ts": 192,
+ "what": 193,
+ "qu": 194,
+ "ally": 195,
+ "ight": 196,
+ "ck": 197,
+ "gr": 198,
+ "when": 199,
+ "ven": 200,
+ "can": 201,
+ "ough": 202,
+ "ine": 203,
+ "end": 204,
+ "per": 205,
+ "ous": 206,
+ "od": 207,
+ "ide": 208,
+ "know": 209,
+ "ty": 210,
+ "very": 211,
+ "si": 212,
+ "ak": 213,
+ "who": 214,
+ "about": 215,
+ "ill": 216,
+ "them": 217,
+ "est": 218,
+ "red": 219,
+ "ye": 220,
+ "could": 221,
+ "ong": 222,
+ "your": 223,
+ "their": 224,
+ "em": 225,
+ "just": 226,
+ "other": 227,
+ "into": 228,
+ "any": 229,
+ "whi": 230,
+ "um": 231,
+ "tw": 232,
+ "ast": 233,
+ "der": 234,
+ "did": 235,
+ "ie": 236,
+ "been": 237,
+ "ace": 238,
+ "ink": 239,
+ "ity": 240,
+ "back": 241,
+ "ting": 242,
+ "br": 243,
+ "more": 244,
+ "ake": 245,
+ "pp": 246,
+ "then": 247,
+ "sp": 248,
+ "el": 249,
+ "use": 250,
+ "bl": 251,
+ "said": 252,
+ "over": 253,
+ "get": 254,
+ "ß": 255,
+ "ä": 256,
+ "ö": 257,
+ "ü": 258,
+ "[en]": 259,
+ "[de]": 260,
+ "[START]": 261,
+ "[fr]": 262,
+ "œ": 263,
+ "ï": 264,
+ "ê": 265,
+ "â": 266,
+ "[ru]": 267,
+ "ÿ": 268,
+ "è": 269,
+ "à": 270,
+ "ë": 271,
+ "ù": 272,
+ "î": 273,
+ "ç": 274,
+ "æ": 275,
+ "ô": 276,
+ "û": 277,
+ "á": 278,
+ "é": 279,
+ "í": 280,
+ "ó": 281,
+ "ú": 282,
+ "ñ": 283,
+ "[es]": 284,
+ "[it]": 285,
+ "[pt]": 286,
+ "ń": 287,
+ "ś": 288,
+ "ę": 289,
+ "ą": 290,
+ "ż": 291,
+ "ć": 292,
+ "[cs]": 293,
+ "[pl]": 294,
+ "[tr]": 295,
+ "ã": 296,
+ "[nl]": 297,
+ "ş": 298,
+ "ğ": 299,
+ "ı": 300,
+ "ò": 301,
+ "ì": 302,
+ "¿": 303,
+ "…": 304,
+ "i̇": 305,
+ "õ": 306,
+ "\"": 307,
+ "´": 308,
+ "ø": 309,
+ "č": 310,
+ "ō": 311,
+ "š": 312,
+ "ž": 313,
+ "̇": 314,
+ "ei": 315,
+ "ich": 316,
+ "ein": 317,
+ "au": 318,
+ "sch": 319,
+ "und": 320,
+ "die": 321,
+ "da": 322,
+ "den": 323,
+ "gen": 324,
+ "zu": 325,
+ "hr": 326,
+ "ten": 327,
+ "mi": 328,
+ "sie": 329,
+ "das": 330,
+ "eine": 331,
+ "icht": 332,
+ "ber": 333,
+ "ach": 334,
+ "auf": 335,
+ "lich": 336,
+ "nicht": 337,
+ "mm": 338,
+ "ben": 339,
+ "war": 340,
+ "mit": 341,
+ "sich": 342,
+ "ig": 343,
+ "aus": 344,
+ "ist": 345,
+ "wie": 346,
+ "och": 347,
+ "ung": 348,
+ "ann": 349,
+ "ür": 350,
+ "hn": 351,
+ "ihr": 352,
+ "sen": 353,
+ "tz": 354,
+ "dem": 355,
+ "eit": 356,
+ "hat": 357,
+ "wir": 358,
+ "von": 359,
+ "wei": 360,
+ "ier": 361,
+ "ra": 362,
+ "einen": 363,
+ "vor": 364,
+ "als": 365,
+ "wo": 366,
+ "rei": 367,
+ "ste": 368,
+ "lie": 369,
+ "auch": 370,
+ "du": 371,
+ "des": 372,
+ "ko": 373,
+ "über": 374,
+ "bei": 375,
+ "hen": 376,
+ "hm": 377,
+ "lei": 378,
+ "aber": 379,
+ "wen": 380,
+ "hl": 381,
+ "ger": 382,
+ "nach": 383,
+ "ft": 384,
+ "imm": 385,
+ "je": 386,
+ "schen": 387,
+ "wer": 388,
+ "ser": 389,
+ "än": 390,
+ "sein": 391,
+ "ol": 392,
+ "cht": 393,
+ "für": 394,
+ "kl": 395,
+ "ff": 396,
+ "einem": 397,
+ "nen": 398,
+ "ja": 399,
+ "noch": 400,
+ "hatte": 401,
+ "pf": 402,
+ "hin": 403,
+ "di": 404,
+ "chen": 405,
+ "rü": 406,
+ "iel": 407,
+ "sel": 408,
+ "dass": 409,
+ "ihn": 410,
+ "mir": 411,
+ "schl": 412,
+ "ön": 413,
+ "gan": 414,
+ "gt": 415,
+ "einer": 416,
+ "sten": 417,
+ "mich": 418,
+ "wenn": 419,
+ "ell": 420,
+ "gte": 421,
+ "mal": 422,
+ "gel": 423,
+ "ken": 424,
+ "nur": 425,
+ "mmen": 426,
+ "fü": 427,
+ "ern": 428,
+ "ör": 429,
+ "unter": 430,
+ "ander": 431,
+ "dur": 432,
+ "uch": 433,
+ "ta": 434,
+ "men": 435,
+ "mach": 436,
+ "doch": 437,
+ "durch": 438,
+ "os": 439,
+ "gl": 440,
+ "hal": 441,
+ "ihre": 442,
+ "wä": 443,
+ "immer": 444,
+ "ihm": 445,
+ "kann": 446,
+ "ort": 447,
+ "dann": 448,
+ "lan": 449,
+ "tzt": 450,
+ "oder": 451,
+ "hren": 452,
+ "et": 453,
+ "kön": 454,
+ "ick": 455,
+ "fa": 456,
+ "wieder": 457,
+ "daß": 458,
+ "mein": 459,
+ "fen": 460,
+ "ganz": 461,
+ "diese": 462,
+ "ster": 463,
+ "dar": 464,
+ "wa": 465,
+ "ges": 466,
+ "na": 467,
+ "fl": 468,
+ "igen": 469,
+ "sche": 470,
+ "ungen": 471,
+ "mehr": 472,
+ "ßen": 473,
+ "ot": 474,
+ "kon": 475,
+ "gew": 476,
+ "haben": 477,
+ "geh": 478,
+ "ät": 479,
+ "sind": 480,
+ "dr": 481,
+ "wel": 482,
+ "uns": 483,
+ "vo": 484,
+ "ma": 485,
+ "ute": 486,
+ "schon": 487,
+ "bes": 488,
+ "gesch": 489,
+ "bt": 490,
+ "che": 491,
+ "son": 492,
+ "ob": 493,
+ "la": 494,
+ "rück": 495,
+ "seine": 496,
+ "kr": 497,
+ "fre": 498,
+ "eil": 499,
+ "zum": 500,
+ "hier": 501,
+ "kt": 502,
+ "ige": 503,
+ "spr": 504,
+ "leben": 505,
+ "bst": 506,
+ "zeit": 507,
+ "gro": 508,
+ "denn": 509,
+ "ho": 510,
+ "scha": 511,
+ "bar": 512,
+ "alle": 513,
+ "gegen": 514,
+ "wür": 515,
+ "mü": 516,
+ "ze": 517,
+ "werden": 518,
+ "jetzt": 519,
+ "kommen": 520,
+ "nie": 521,
+ "sei": 522,
+ "heit": 523,
+ "soll": 524,
+ "glei": 525,
+ "meine": 526,
+ "woll": 527,
+ "ner": 528,
+ "habe": 529,
+ "wur": 530,
+ "lichen": 531,
+ "assen": 532,
+ "nte": 533,
+ "sehen": 534,
+ "wird": 535,
+ "bis": 536,
+ "gar": 537,
+ "ien": 538,
+ "mus": 539,
+ "uß": 540,
+ "är": 541,
+ "stell": 542,
+ "keit": 543,
+ "zwei": 544,
+ "selbst": 545,
+ "sta": 546,
+ "pa": 547,
+ "sagte": 548,
+ "tet": 549,
+ "kam": 550,
+ "ssen": 551,
+ "viel": 552,
+ "ug": 553,
+ "zen": 554,
+ "hei": 555,
+ "mann": 556,
+ "will": 557,
+ "geb": 558,
+ "waren": 559,
+ "ück": 560,
+ "äch": 561,
+ "mer": 562,
+ "ru": 563,
+ "hau": 564,
+ "eigen": 565,
+ "ang": 566,
+ "weg": 567,
+ "blick": 568,
+ "fra": 569,
+ "alles": 570,
+ "ka": 571,
+ "augen": 572,
+ "fin": 573,
+ "liche": 574,
+ "unser": 575,
+ "dern": 576,
+ "herr": 577,
+ "nun": 578,
+ "vie": 579,
+ "chte": 580,
+ "wohl": 581,
+ "fall": 582,
+ "ht": 583,
+ "ün": 584,
+ "etwas": 585,
+ "stand": 586,
+ "äu": 587,
+ "mö": 588,
+ "tel": 589,
+ "rie": 590,
+ "dich": 591,
+ "dies": 592,
+ "hand": 593,
+ "bin": 594,
+ "ffen": 595,
+ "nichts": 596,
+ "dan": 597,
+ "hne": 598,
+ "ihnen": 599,
+ "esen": 600,
+ "dieser": 601,
+ "frau": 602,
+ "art": 603,
+ "dir": 604,
+ "isch": 605,
+ "erst": 606,
+ "gleich": 607,
+ "komm": 608,
+ "hör": 609,
+ "ße": 610,
+ "dig": 611,
+ "sehr": 612,
+ "zei": 613,
+ "sam": 614,
+ "aum": 615,
+ "hät": 616,
+ "ingen": 617,
+ "gut": 618,
+ "mut": 619,
+ "cken": 620,
+ "konnte": 621,
+ "stimm": 622,
+ "zur": 623,
+ "itz": 624,
+ "weil": 625,
+ "würde": 626,
+ "fä": 627,
+ "können": 628,
+ "keine": 629,
+ "fer": 630,
+ "ischen": 631,
+ "voll": 632,
+ "eines": 633,
+ "setz": 634,
+ "zie": 635,
+ "del": 636,
+ "tete": 637,
+ "seiner": 638,
+ "ieren": 639,
+ "gest": 640,
+ "zurück": 641,
+ "wurde": 642,
+ "schn": 643,
+ "pr": 644,
+ "ließ": 645,
+ "tra": 646,
+ "mä": 647,
+ "gend": 648,
+ "fol": 649,
+ "ik": 650,
+ "schla": 651,
+ "schaft": 652,
+ "ater": 653,
+ "weiß": 654,
+ "seinen": 655,
+ "lassen": 656,
+ "lu": 657,
+ "unden": 658,
+ "teil": 659,
+ "neu": 660,
+ "iert": 661,
+ "menschen": 662,
+ "hmen": 663,
+ "str": 664,
+ "gi": 665,
+ "sah": 666,
+ "ihren": 667,
+ "eln": 668,
+ "weiter": 669,
+ "gehen": 670,
+ "iger": 671,
+ "macht": 672,
+ "tag": 673,
+ "also": 674,
+ "halten": 675,
+ "nis": 676,
+ "acht": 677,
+ "geben": 678,
+ "og": 679,
+ "nat": 680,
+ "mar": 681,
+ "det": 682,
+ "ohne": 683,
+ "haus": 684,
+ "tro": 685,
+ "ange": 686,
+ "lau": 687,
+ "spiel": 688,
+ "tre": 689,
+ "schr": 690,
+ "inn": 691,
+ "los": 692,
+ "machen": 693,
+ "hätte": 694,
+ "beg": 695,
+ "wirk": 696,
+ "alt": 697,
+ "glich": 698,
+ "tes": 699,
+ "richt": 700,
+ "freund": 701,
+ "ihrer": 702,
+ "fel": 703,
+ "bel": 704,
+ "sol": 705,
+ "einmal": 706,
+ "eben": 707,
+ "hol": 708,
+ "hän": 709,
+ "tern": 710,
+ "hö": 711,
+ "schw": 712,
+ "recht": 713,
+ "wahr": 714,
+ "seinem": 715,
+ "stehen": 716,
+ "hlen": 717,
+ "ins": 718,
+ "ging": 719,
+ "wollte": 720,
+ "wissen": 721,
+ "ungs": 722,
+ "ald": 723,
+ "ass": 724,
+ "jahr": 725,
+ "mor": 726,
+ "welt": 727,
+ "under": 728,
+ "zusa": 729,
+ "kopf": 730,
+ "lang": 731,
+ "hinter": 732,
+ "atz": 733,
+ "stra": 734,
+ "angen": 735,
+ "ank": 736,
+ "ade": 737,
+ "glau": 738,
+ "fach": 739,
+ "hatten": 740,
+ "fort": 741,
+ "eicht": 742,
+ "iff": 743,
+ "ler": 744,
+ "mei": 745,
+ "diesem": 746,
+ "kein": 747,
+ "frei": 748,
+ "führ": 749,
+ "vom": 750,
+ "β": 751,
+ "ai": 752,
+ "ait": 753,
+ "que": 754,
+ "les": 755,
+ "av": 756,
+ "ais": 757,
+ "oi": 758,
+ "eu": 759,
+ "lle": 760,
+ "par": 761,
+ "ans": 762,
+ "ment": 763,
+ "ét": 764,
+ "une": 765,
+ "pas": 766,
+ "qui": 767,
+ "elle": 768,
+ "dé": 769,
+ "pour": 770,
+ "dans": 771,
+ "ré": 772,
+ "tou": 773,
+ "vous": 774,
+ "vi": 775,
+ "ouv": 776,
+ "mon": 777,
+ "sur": 778,
+ "ci": 779,
+ "plu": 780,
+ "ère": 781,
+ "mais": 782,
+ "ois": 783,
+ "plus": 784,
+ "ée": 785,
+ "aient": 786,
+ "mp": 787,
+ "lui": 788,
+ "ave": 789,
+ "était": 790,
+ "ses": 791,
+ "tout": 792,
+ "oir": 793,
+ "avait": 794,
+ "és": 795,
+ "mes": 796,
+ "nous": 797,
+ "eux": 798,
+ "bi": 799,
+ "ons": 800,
+ "pu": 801,
+ "ces": 802,
+ "tu": 803,
+ "leur": 804,
+ "don": 805,
+ "eur": 806,
+ "ette": 807,
+ "aire": 808,
+ "avec": 809,
+ "dit": 810,
+ "té": 811,
+ "ille": 812,
+ "comme": 813,
+ "cr": 814,
+ "ux": 815,
+ "ès": 816,
+ "aux": 817,
+ "jour": 818,
+ "ils": 819,
+ "bien": 820,
+ "cou": 821,
+ "quel": 822,
+ "peu": 823,
+ "cette": 824,
+ "cu": 825,
+ "mê": 826,
+ "fait": 827,
+ "gu": 828,
+ "être": 829,
+ "ité": 830,
+ "ens": 831,
+ "ni": 832,
+ "lé": 833,
+ "dis": 834,
+ "ble": 835,
+ "né": 836,
+ "puis": 837,
+ "même": 838,
+ "ques": 839,
+ "fi": 840,
+ "age": 841,
+ "moi": 842,
+ "ence": 843,
+ "ont": 844,
+ "main": 845,
+ "ors": 846,
+ "aut": 847,
+ "ance": 848,
+ "mé": 849,
+ "sans": 850,
+ "sé": 851,
+ "lon": 852,
+ "hom": 853,
+ "car": 854,
+ "able": 855,
+ "cher": 856,
+ "deux": 857,
+ "enf": 858,
+ "où": 859,
+ "ph": 860,
+ "ure": 861,
+ "temp": 862,
+ "pos": 863,
+ "rent": 864,
+ "pé": 865,
+ "faire": 866,
+ "pi": 867,
+ "tres": 868,
+ "ça": 869,
+ "endre": 870,
+ "bon": 871,
+ "sou": 872,
+ "int": 873,
+ "pré": 874,
+ "sent": 875,
+ "tant": 876,
+ "cer": 877,
+ "là": 878,
+ "lais": 879,
+ "près": 880,
+ "bre": 881,
+ "cour": 882,
+ "pet": 883,
+ "comp": 884,
+ "lait": 885,
+ "trouv": 886,
+ "entre": 887,
+ "sont": 888,
+ "dev": 889,
+ "nu": 890,
+ "temps": 891,
+ "dou": 892,
+ "rait": 893,
+ "bou": 894,
+ "quand": 895,
+ "jours": 896,
+ "avoir": 897,
+ "été": 898,
+ "ale": 899,
+ "pre": 900,
+ "fois": 901,
+ "orte": 902,
+ "vé": 903,
+ "non": 904,
+ "tous": 905,
+ "jus": 906,
+ "coup": 907,
+ "homme": 908,
+ "ête": 909,
+ "aussi": 910,
+ "urs": 911,
+ "seu": 912,
+ "ord": 913,
+ "min": 914,
+ "gé": 915,
+ "core": 916,
+ "va": 917,
+ "vre": 918,
+ "encore": 919,
+ "sem": 920,
+ "ite": 921,
+ "autre": 922,
+ "pris": 923,
+ "peut": 924,
+ "ue": 925,
+ "ante": 926,
+ "gn": 927,
+ "rép": 928,
+ "hu": 929,
+ "sion": 930,
+ "votre": 931,
+ "dire": 932,
+ "ez": 933,
+ "fem": 934,
+ "leurs": 935,
+ "met": 936,
+ "cri": 937,
+ "mis": 938,
+ "tour": 939,
+ "rai": 940,
+ "jam": 941,
+ "regar": 942,
+ "rien": 943,
+ "vers": 944,
+ "suis": 945,
+ "pouv": 946,
+ "vis": 947,
+ "grand": 948,
+ "ants": 949,
+ "cor": 950,
+ "rer": 951,
+ "cé": 952,
+ "tent": 953,
+ "pres": 954,
+ "vou": 955,
+ "alors": 956,
+ "sieur": 957,
+ "aine": 958,
+ "quoi": 959,
+ "fon": 960,
+ "endant": 961,
+ "arri": 962,
+ "eure": 963,
+ "après": 964,
+ "donc": 965,
+ "itu": 966,
+ "lè": 967,
+ "sait": 968,
+ "toi": 969,
+ "cha": 970,
+ "ail": 971,
+ "asse": 972,
+ "imp": 973,
+ "voy": 974,
+ "conn": 975,
+ "pla": 976,
+ "petit": 977,
+ "avant": 978,
+ "nom": 979,
+ "tin": 980,
+ "dont": 981,
+ "sous": 982,
+ "emp": 983,
+ "person": 984,
+ "elles": 985,
+ "beau": 986,
+ "parti": 987,
+ "cho": 988,
+ "prit": 989,
+ "toujours": 990,
+ "rais": 991,
+ "jamais": 992,
+ "trav": 993,
+ "tions": 994,
+ "très": 995,
+ "voi": 996,
+ "ren": 997,
+ "yeux": 998,
+ "voir": 999,
+ "premi": 1000,
+ "gne": 1001,
+ "heure": 1002,
+ "rou": 1003,
+ "eff": 1004,
+ "notre": 1005,
+ "ments": 1006,
+ "ton": 1007,
+ "fais": 1008,
+ "cela": 1009,
+ "répon": 1010,
+ "cons": 1011,
+ "air": 1012,
+ "ôt": 1013,
+ "pendant": 1014,
+ "ici": 1015,
+ "toute": 1016,
+ "jet": 1017,
+ "port": 1018,
+ "étaient": 1019,
+ "pen": 1020,
+ "hé": 1021,
+ "autres": 1022,
+ "père": 1023,
+ "oc": 1024,
+ "quelques": 1025,
+ "ique": 1026,
+ "lis": 1027,
+ "femme": 1028,
+ "jou": 1029,
+ "teur": 1030,
+ "monde": 1031,
+ "nes": 1032,
+ "dre": 1033,
+ "aff": 1034,
+ "rap": 1035,
+ "part": 1036,
+ "lement": 1037,
+ "cla": 1038,
+ "fut": 1039,
+ "quelque": 1040,
+ "prendre": 1041,
+ "rê": 1042,
+ "aille": 1043,
+ "sais": 1044,
+ "ches": 1045,
+ "let": 1046,
+ "char": 1047,
+ "ères": 1048,
+ "ents": 1049,
+ "moins": 1050,
+ "eau": 1051,
+ "aî": 1052,
+ "jeu": 1053,
+ "heur": 1054,
+ "ées": 1055,
+ "tri": 1056,
+ "point": 1057,
+ "mom": 1058,
+ "vent": 1059,
+ "nouv": 1060,
+ "gran": 1061,
+ "trois": 1062,
+ "sant": 1063,
+ "toutes": 1064,
+ "contre": 1065,
+ "èrent": 1066,
+ "chez": 1067,
+ "avez": 1068,
+ "ût": 1069,
+ "att": 1070,
+ "pau": 1071,
+ "porte": 1072,
+ "ouver": 1073,
+ "lit": 1074,
+ "prés": 1075,
+ "chose": 1076,
+ "vit": 1077,
+ "monsieur": 1078,
+ "hab": 1079,
+ "tête": 1080,
+ "ju": 1081,
+ "tement": 1082,
+ "ction": 1083,
+ "vrai": 1084,
+ "lar": 1085,
+ "cet": 1086,
+ "regard": 1087,
+ "lant": 1088,
+ "som": 1089,
+ "moment": 1090,
+ "illes": 1091,
+ "ple": 1092,
+ "ps": 1093,
+ "mère": 1094,
+ "cl": 1095,
+ "sour": 1096,
+ "ys": 1097,
+ "trop": 1098,
+ "enne": 1099,
+ "jusqu": 1100,
+ "avaient": 1101,
+ "avais": 1102,
+ "jeune": 1103,
+ "depuis": 1104,
+ "personne": 1105,
+ "fit": 1106,
+ "cert": 1107,
+ "jo": 1108,
+ "oui": 1109,
+ "rest": 1110,
+ "semb": 1111,
+ "cap": 1112,
+ "mat": 1113,
+ "mu": 1114,
+ "long": 1115,
+ "fran": 1116,
+ "faut": 1117,
+ "iti": 1118,
+ "bli": 1119,
+ "chev": 1120,
+ "pri": 1121,
+ "ente": 1122,
+ "ainsi": 1123,
+ "cham": 1124,
+ "lors": 1125,
+ "cas": 1126,
+ "ili": 1127,
+ "bé": 1128,
+ "nos": 1129,
+ "sui": 1130,
+ "rit": 1131,
+ "cro": 1132,
+ "gue": 1133,
+ "ía": 1134,
+ "por": 1135,
+ "las": 1136,
+ "ón": 1137,
+ "una": 1138,
+ "aba": 1139,
+ "dos": 1140,
+ "era": 1141,
+ "mb": 1142,
+ "para": 1143,
+ "ás": 1144,
+ "mos": 1145,
+ "ando": 1146,
+ "como": 1147,
+ "más": 1148,
+ "ción": 1149,
+ "tan": 1150,
+ "dad": 1151,
+ "ado": 1152,
+ "fu": 1153,
+ "cia": 1154,
+ "mente": 1155,
+ "sus": 1156,
+ "tar": 1157,
+ "za": 1158,
+ "ba": 1159,
+ "pero": 1160,
+ "sin": 1161,
+ "lla": 1162,
+ "án": 1163,
+ "ia": 1164,
+ "ran": 1165,
+ "ga": 1166,
+ "yo": 1167,
+ "tos": 1168,
+ "cos": 1169,
+ "ya": 1170,
+ "ones": 1171,
+ "había": 1172,
+ "hi": 1173,
+ "esta": 1174,
+ "mas": 1175,
+ "tor": 1176,
+ "aban": 1177,
+ "dor": 1178,
+ "ían": 1179,
+ "tas": 1180,
+ "én": 1181,
+ "endo": 1182,
+ "aque": 1183,
+ "ero": 1184,
+ "io": 1185,
+ "qué": 1186,
+ "cab": 1187,
+ "tal": 1188,
+ "señ": 1189,
+ "ora": 1190,
+ "todo": 1191,
+ "sal": 1192,
+ "cuando": 1193,
+ "gun": 1194,
+ "bu": 1195,
+ "ras": 1196,
+ "esto": 1197,
+ "pare": 1198,
+ "él": 1199,
+ "tras": 1200,
+ "jos": 1201,
+ "mien": 1202,
+ "pue": 1203,
+ "cre": 1204,
+ "pon": 1205,
+ "día": 1206,
+ "tros": 1207,
+ "sab": 1208,
+ "sobre": 1209,
+ "ese": 1210,
+ "mbre": 1211,
+ "eron": 1212,
+ "añ": 1213,
+ "ido": 1214,
+ "porque": 1215,
+ "ella": 1216,
+ "cen": 1217,
+ "muy": 1218,
+ "cal": 1219,
+ "este": 1220,
+ "has": 1221,
+ "có": 1222,
+ "gra": 1223,
+ "ros": 1224,
+ "aquel": 1225,
+ "dijo": 1226,
+ "cía": 1227,
+ "zo": 1228,
+ "ciones": 1229,
+ "mbi": 1230,
+ "elo": 1231,
+ "tó": 1232,
+ "ina": 1233,
+ "todos": 1234,
+ "tien": 1235,
+ "estaba": 1236,
+ "deci": 1237,
+ "cio": 1238,
+ "ño": 1239,
+ "lor": 1240,
+ "nues": 1241,
+ "medi": 1242,
+ "len": 1243,
+ "vida": 1244,
+ "ali": 1245,
+ "pues": 1246,
+ "ales": 1247,
+ "vol": 1248,
+ "mí": 1249,
+ "rar": 1250,
+ "cion": 1251,
+ "hasta": 1252,
+ "señor": 1253,
+ "cono": 1254,
+ "ah": 1255,
+ "dios": 1256,
+ "esa": 1257,
+ "ún": 1258,
+ "var": 1259,
+ "san": 1260,
+ "gui": 1261,
+ "otros": 1262,
+ "tado": 1263,
+ "buen": 1264,
+ "ña": 1265,
+ "tiemp": 1266,
+ "hacer": 1267,
+ "jer": 1268,
+ "vu": 1269,
+ "ana": 1270,
+ "así": 1271,
+ "antes": 1272,
+ "vez": 1273,
+ "miento": 1274,
+ "jar": 1275,
+ "lab": 1276,
+ "casa": 1277,
+ "eso": 1278,
+ "ego": 1279,
+ "dió": 1280,
+ "está": 1281,
+ "encia": 1282,
+ "eli": 1283,
+ "ías": 1284,
+ "tiempo": 1285,
+ "zar": 1286,
+ "van": 1287,
+ "mun": 1288,
+ "erta": 1289,
+ "tambi": 1290,
+ "sí": 1291,
+ "aun": 1292,
+ "mismo": 1293,
+ "entes": 1294,
+ "mano": 1295,
+ "ele": 1296,
+ "nada": 1297,
+ "segu": 1298,
+ "mej": 1299,
+ "erra": 1300,
+ "tir": 1301,
+ "uno": 1302,
+ "donde": 1303,
+ "toda": 1304,
+ "desde": 1305,
+ "también": 1306,
+ "cuer": 1307,
+ "hombre": 1308,
+ "otro": 1309,
+ "lib": 1310,
+ "trar": 1311,
+ "cual": 1312,
+ "hay": 1313,
+ "cada": 1314,
+ "taba": 1315,
+ "mento": 1316,
+ "tenía": 1317,
+ "quer": 1318,
+ "eran": 1319,
+ "siemp": 1320,
+ "siempre": 1321,
+ "erto": 1322,
+ "quí": 1323,
+ "gos": 1324,
+ "pués": 1325,
+ "ellos": 1326,
+ "después": 1327,
+ "nue": 1328,
+ "llo": 1329,
+ "inter": 1330,
+ "cómo": 1331,
+ "ahora": 1332,
+ "uste": 1333,
+ "traba": 1334,
+ "lado": 1335,
+ "ino": 1336,
+ "poco": 1337,
+ "erte": 1338,
+ "mujer": 1339,
+ "quier": 1340,
+ "algun": 1341,
+ "fue": 1342,
+ "ojos": 1343,
+ "enton": 1344,
+ "vos": 1345,
+ "esper": 1346,
+ "much": 1347,
+ "otra": 1348,
+ "az": 1349,
+ "eza": 1350,
+ "aquí": 1351,
+ "cias": 1352,
+ "gua": 1353,
+ "mucho": 1354,
+ "decir": 1355,
+ "esti": 1356,
+ "idad": 1357,
+ "algo": 1358,
+ "ocu": 1359,
+ "entonces": 1360,
+ "dido": 1361,
+ "entos": 1362,
+ "gri": 1363,
+ "dado": 1364,
+ "ios": 1365,
+ "dose": 1366,
+ "usted": 1367,
+ "quien": 1368,
+ "ami": 1369,
+ "unto": 1370,
+ "mejor": 1371,
+ "bas": 1372,
+ "solo": 1373,
+ "pregun": 1374,
+ "tur": 1375,
+ "alg": 1376,
+ "todas": 1377,
+ "parte": 1378,
+ "emb": 1379,
+ "cto": 1380,
+ "mundo": 1381,
+ "tiene": 1382,
+ "tante": 1383,
+ "palab": 1384,
+ "tran": 1385,
+ "aquella": 1386,
+ "cios": 1387,
+ "aunque": 1388,
+ "cuen": 1389,
+ "tener": 1390,
+ "fun": 1391,
+ "respon": 1392,
+ "allí": 1393,
+ "xi": 1394,
+ "han": 1395,
+ "pens": 1396,
+ "contra": 1397,
+ "tura": 1398,
+ "val": 1399,
+ "dio": 1400,
+ "tanto": 1401,
+ "camin": 1402,
+ "mó": 1403,
+ "esp": 1404,
+ "ada": 1405,
+ "ío": 1406,
+ "hacia": 1407,
+ "dej": 1408,
+ "estar": 1409,
+ "ión": 1410,
+ "gas": 1411,
+ "vas": 1412,
+ "noche": 1413,
+ "ér": 1414,
+ "años": 1415,
+ "padre": 1416,
+ "gus": 1417,
+ "ár": 1418,
+ "sino": 1419,
+ "manos": 1420,
+ "cido": 1421,
+ "estu": 1422,
+ "hubi": 1423,
+ "vir": 1424,
+ "bri": 1425,
+ "raz": 1426,
+ "chi": 1427,
+ "puede": 1428,
+ "menos": 1429,
+ "habi": 1430,
+ "homb": 1431,
+ "neces": 1432,
+ "may": 1433,
+ "eros": 1434,
+ "ría": 1435,
+ "hecho": 1436,
+ "escu": 1437,
+ "lti": 1438,
+ "ándo": 1439,
+ "bus": 1440,
+ "cosas": 1441,
+ "tú": 1442,
+ "espa": 1443,
+ "reci": 1444,
+ "ctor": 1445,
+ "prim": 1446,
+ "dia": 1447,
+ "dese": 1448,
+ "mientras": 1449,
+ "hor": 1450,
+ "fuer": 1451,
+ "ida": 1452,
+ "posi": 1453,
+ "lante": 1454,
+ "ano": 1455,
+ "estas": 1456,
+ "pli": 1457,
+ "luego": 1458,
+ "sión": 1459,
+ "cin": 1460,
+ "tierra": 1461,
+ "guar": 1462,
+ "cado": 1463,
+ "encon": 1464,
+ "pren": 1465,
+ "mayor": 1466,
+ "fal": 1467,
+ "ð": 1468,
+ "ħ": 1469,
+ "ň": 1470,
+ "ə": 1471,
+ "θ": 1472,
+ "’": 1473,
+ "“": 1474,
+ "”": 1475,
+ "zi": 1476,
+ "gli": 1477,
+ "tto": 1478,
+ "ono": 1479,
+ "nel": 1480,
+ "tti": 1481,
+ "della": 1482,
+ "zione": 1483,
+ "tta": 1484,
+ "tà": 1485,
+ "uo": 1486,
+ "come": 1487,
+ "alla": 1488,
+ "oni": 1489,
+ "ggi": 1490,
+ "ssi": 1491,
+ "più": 1492,
+ "ini": 1493,
+ "bb": 1494,
+ "sto": 1495,
+ "sono": 1496,
+ "eri": 1497,
+ "sse": 1498,
+ "sc": 1499,
+ "sul": 1500,
+ "vano": 1501,
+ "sti": 1502,
+ "suo": 1503,
+ "cchi": 1504,
+ "zza": 1505,
+ "anche": 1506,
+ "tte": 1507,
+ "sci": 1508,
+ "col": 1509,
+ "sso": 1510,
+ "ssa": 1511,
+ "dei": 1512,
+ "aveva": 1513,
+ "zz": 1514,
+ "amo": 1515,
+ "gno": 1516,
+ "sua": 1517,
+ "ria": 1518,
+ "sì": 1519,
+ "ché": 1520,
+ "dal": 1521,
+ "ona": 1522,
+ "spe": 1523,
+ "gni": 1524,
+ "tt": 1525,
+ "delle": 1526,
+ "questo": 1527,
+ "nella": 1528,
+ "dere": 1529,
+ "anno": 1530,
+ "dell": 1531,
+ "uni": 1532,
+ "bbe": 1533,
+ "anti": 1534,
+ "ene": 1535,
+ "gio": 1536,
+ "uto": 1537,
+ "qual": 1538,
+ "glia": 1539,
+ "quando": 1540,
+ "tutto": 1541,
+ "glio": 1542,
+ "zioni": 1543,
+ "cam": 1544,
+ "esso": 1545,
+ "ss": 1546,
+ "mol": 1547,
+ "loro": 1548,
+ "perché": 1549,
+ "cosa": 1550,
+ "due": 1551,
+ "poi": 1552,
+ "sco": 1553,
+ "cco": 1554,
+ "gna": 1555,
+ "tem": 1556,
+ "prima": 1557,
+ "così": 1558,
+ "essere": 1559,
+ "ani": 1560,
+ "bra": 1561,
+ "rio": 1562,
+ "anco": 1563,
+ "cui": 1564,
+ "spi": 1565,
+ "via": 1566,
+ "gior": 1567,
+ "bile": 1568,
+ "ggio": 1569,
+ "mai": 1570,
+ "tare": 1571,
+ "indi": 1572,
+ "rebbe": 1573,
+ "senza": 1574,
+ "zio": 1575,
+ "tutti": 1576,
+ "stato": 1577,
+ "zia": 1578,
+ "dalla": 1579,
+ "mia": 1580,
+ "vita": 1581,
+ "quella": 1582,
+ "qua": 1583,
+ "dove": 1584,
+ "allo": 1585,
+ "sempre": 1586,
+ "zzo": 1587,
+ "sia": 1588,
+ "dopo": 1589,
+ "porta": 1590,
+ "ccia": 1591,
+ "erano": 1592,
+ "anni": 1593,
+ "chia": 1594,
+ "enza": 1595,
+ "propri": 1596,
+ "anda": 1597,
+ "cca": 1598,
+ "occhi": 1599,
+ "questa": 1600,
+ "ffi": 1601,
+ "ron": 1602,
+ "mio": 1603,
+ "ris": 1604,
+ "ogni": 1605,
+ "rin": 1606,
+ "far": 1607,
+ "menti": 1608,
+ "ancora": 1609,
+ "fatto": 1610,
+ "mani": 1611,
+ "senti": 1612,
+ "pra": 1613,
+ "tempo": 1614,
+ "essi": 1615,
+ "bbi": 1616,
+ "lare": 1617,
+ "pers": 1618,
+ "sor": 1619,
+ "anza": 1620,
+ "pie": 1621,
+ "verso": 1622,
+ "altro": 1623,
+ "tato": 1624,
+ "cato": 1625,
+ "ato": 1626,
+ "volta": 1627,
+ "cc": 1628,
+ "fare": 1629,
+ "ciò": 1630,
+ "bili": 1631,
+ "nuo": 1632,
+ "quello": 1633,
+ "colo": 1634,
+ "ppo": 1635,
+ "trova": 1636,
+ "ore": 1637,
+ "rono": 1638,
+ "molto": 1639,
+ "almente": 1640,
+ "sca": 1641,
+ "vole": 1642,
+ "tali": 1643,
+ "sulla": 1644,
+ "sce": 1645,
+ "meno": 1646,
+ "anto": 1647,
+ "pun": 1648,
+ "stu": 1649,
+ "capi": 1650,
+ "giu": 1651,
+ "mini": 1652,
+ "pia": 1653,
+ "lavo": 1654,
+ "vero": 1655,
+ "rsi": 1656,
+ "altri": 1657,
+ "scia": 1658,
+ "suoi": 1659,
+ "glie": 1660,
+ "sotto": 1661,
+ "bene": 1662,
+ "scri": 1663,
+ "tale": 1664,
+ "degli": 1665,
+ "alc": 1666,
+ "uomo": 1667,
+ "pel": 1668,
+ "pote": 1669,
+ "essa": 1670,
+ "scu": 1671,
+ "signo": 1672,
+ "stro": 1673,
+ "uti": 1674,
+ "sione": 1675,
+ "gre": 1676,
+ "fini": 1677,
+ "lun": 1678,
+ "esi": 1679,
+ "passa": 1680,
+ "rà": 1681,
+ "mentre": 1682,
+ "hanno": 1683,
+ "usci": 1684,
+ "gia": 1685,
+ "già": 1686,
+ "mina": 1687,
+ "tica": 1688,
+ "giorno": 1689,
+ "esse": 1690,
+ "modo": 1691,
+ "spa": 1692,
+ "proprio": 1693,
+ "ori": 1694,
+ "contro": 1695,
+ "stru": 1696,
+ "diven": 1697,
+ "disse": 1698,
+ "rato": 1699,
+ "noi": 1700,
+ "vere": 1701,
+ "può": 1702,
+ "dice": 1703,
+ "cci": 1704,
+ "secon": 1705,
+ "ccio": 1706,
+ "qualche": 1707,
+ "tutta": 1708,
+ "gg": 1709,
+ "mondo": 1710,
+ "forma": 1711,
+ "mma": 1712,
+ "pensa": 1713,
+ "deva": 1714,
+ "fosse": 1715,
+ "sopra": 1716,
+ "tamente": 1717,
+ "ness": 1718,
+ "quanto": 1719,
+ "raga": 1720,
+ "unque": 1721,
+ "care": 1722,
+ "stre": 1723,
+ "grande": 1724,
+ "picco": 1725,
+ "guarda": 1726,
+ "nell": 1727,
+ "possi": 1728,
+ "presen": 1729,
+ "rò": 1730,
+ "paro": 1731,
+ "tua": 1732,
+ "vin": 1733,
+ "ane": 1734,
+ "stesso": 1735,
+ "dav": 1736,
+ "nei": 1737,
+ "nelle": 1738,
+ "ghi": 1739,
+ "pio": 1740,
+ "lato": 1741,
+ "sid": 1742,
+ "fine": 1743,
+ "fuo": 1744,
+ "quasi": 1745,
+ "ulti": 1746,
+ "ito": 1747,
+ "sue": 1748,
+ "fil": 1749,
+ "allora": 1750,
+ "veni": 1751,
+ "tano": 1752,
+ "ello": 1753,
+ "ão": 1754,
+ "não": 1755,
+ "uma": 1756,
+ "ela": 1757,
+ "lh": 1758,
+ "ção": 1759,
+ "cê": 1760,
+ "inha": 1761,
+ "você": 1762,
+ "ec": 1763,
+ "dade": 1764,
+ "ao": 1765,
+ "ram": 1766,
+ "vel": 1767,
+ "ém": 1768,
+ "pode": 1769,
+ "estava": 1770,
+ "isso": 1771,
+ "mui": 1772,
+ "faz": 1773,
+ "ões": 1774,
+ "pes": 1775,
+ "ix": 1776,
+ "sim": 1777,
+ "olh": 1778,
+ "isa": 1779,
+ "ên": 1780,
+ "tinha": 1781,
+ "meu": 1782,
+ "são": 1783,
+ "minha": 1784,
+ "muito": 1785,
+ "foi": 1786,
+ "bem": 1787,
+ "diz": 1788,
+ "parec": 1789,
+ "ço": 1790,
+ "pesso": 1791,
+ "pois": 1792,
+ "mesmo": 1793,
+ "ções": 1794,
+ "seus": 1795,
+ "até": 1796,
+ "ência": 1797,
+ "lhe": 1798,
+ "tiv": 1799,
+ "mã": 1800,
+ "só": 1801,
+ "tão": 1802,
+ "tudo": 1803,
+ "então": 1804,
+ "inda": 1805,
+ "bal": 1806,
+ "indo": 1807,
+ "ndo": 1808,
+ "já": 1809,
+ "vam": 1810,
+ "eito": 1811,
+ "depois": 1812,
+ "mel": 1813,
+ "lha": 1814,
+ "ainda": 1815,
+ "fazer": 1816,
+ "pou": 1817,
+ "pergun": 1818,
+ "deix": 1819,
+ "tamb": 1820,
+ "ala": 1821,
+ "pelo": 1822,
+ "também": 1823,
+ "fica": 1824,
+ "prec": 1825,
+ "eles": 1826,
+ "havia": 1827,
+ "lá": 1828,
+ "nas": 1829,
+ "gem": 1830,
+ "mem": 1831,
+ "ós": 1832,
+ "deu": 1833,
+ "eiro": 1834,
+ "..": 1835,
+ "assim": 1836,
+ "ior": 1837,
+ "har": 1838,
+ "aqui": 1839,
+ "cul": 1840,
+ "sar": 1841,
+ "outra": 1842,
+ "olhos": 1843,
+ "ima": 1844,
+ "mim": 1845,
+ "ago": 1846,
+ "pessoas": 1847,
+ "eram": 1848,
+ "eira": 1849,
+ "pela": 1850,
+ "coisa": 1851,
+ "mão": 1852,
+ "conh": 1853,
+ "agora": 1854,
+ "iam": 1855,
+ "há": 1856,
+ "suas": 1857,
+ "guém": 1858,
+ "cabe": 1859,
+ "nem": 1860,
+ "ível": 1861,
+ "consegu": 1862,
+ "trabal": 1863,
+ "lev": 1864,
+ "lem": 1865,
+ "vai": 1866,
+ "tei": 1867,
+ "pró": 1868,
+ "quem": 1869,
+ "onde": 1870,
+ "cabeça": 1871,
+ "nunca": 1872,
+ "mentos": 1873,
+ "hum": 1874,
+ "dele": 1875,
+ "verdade": 1876,
+ "tá": 1877,
+ "hos": 1878,
+ "algum": 1879,
+ "dizer": 1880,
+ "penas": 1881,
+ "nós": 1882,
+ "enquanto": 1883,
+ "outro": 1884,
+ "lho": 1885,
+ "melhor": 1886,
+ "primei": 1887,
+ "iu": 1888,
+ "apenas": 1889,
+ "estou": 1890,
+ "conte": 1891,
+ "homem": 1892,
+ "dois": 1893,
+ "ças": 1894,
+ "pouco": 1895,
+ "senhor": 1896,
+ "tando": 1897,
+ "espera": 1898,
+ "pai": 1899,
+ "rios": 1900,
+ "baix": 1901,
+ "ase": 1902,
+ "isas": 1903,
+ "hora": 1904,
+ "ficar": 1905,
+ "seja": 1906,
+ "ân": 1907,
+ "clar": 1908,
+ "inc": 1909,
+ "fos": 1910,
+ "ouvi": 1911,
+ "vem": 1912,
+ "tava": 1913,
+ "ário": 1914,
+ "sos": 1915,
+ "inho": 1916,
+ "rando": 1917,
+ "ês": 1918,
+ "coisas": 1919,
+ "aconte": 1920,
+ "lher": 1921,
+ "anos": 1922,
+ "talvez": 1923,
+ "estão": 1924,
+ "liv": 1925,
+ "outros": 1926,
+ "qualquer": 1927,
+ "gou": 1928,
+ "lí": 1929,
+ "tivesse": 1930,
+ "rado": 1931,
+ "precisa": 1932,
+ "mãe": 1933,
+ "dela": 1934,
+ "entra": 1935,
+ "maior": 1936,
+ "noite": 1937,
+ "tiva": 1938,
+ "pala": 1939,
+ "ração": 1940,
+ "deus": 1941,
+ "sas": 1942,
+ "inte": 1943,
+ "fei": 1944,
+ "palav": 1945,
+ "trás": 1946,
+ "cidade": 1947,
+ "lugar": 1948,
+ "vezes": 1949,
+ "encontra": 1950,
+ "tru": 1951,
+ "eci": 1952,
+ "ın": 1953,
+ "bir": 1954,
+ "yor": 1955,
+ "ek": 1956,
+ "dı": 1957,
+ "ey": 1958,
+ "tı": 1959,
+ "mı": 1960,
+ "iz": 1961,
+ "ır": 1962,
+ "gö": 1963,
+ "sı": 1964,
+ "bil": 1965,
+ "lı": 1966,
+ "üz": 1967,
+ "iç": 1968,
+ "iy": 1969,
+ "ım": 1970,
+ "uz": 1971,
+ "cak": 1972,
+ "iş": 1973,
+ "ını": 1974,
+ "iyor": 1975,
+ "baş": 1976,
+ "dü": 1977,
+ "değ": 1978,
+ "kar": 1979,
+ "ev": 1980,
+ "öy": 1981,
+ "bun": 1982,
+ "yap": 1983,
+ "sun": 1984,
+ "gör": 1985,
+ "yı": 1986,
+ "ki": 1987,
+ "ara": 1988,
+ "alı": 1989,
+ "onu": 1990,
+ "çı": 1991,
+ "şey": 1992,
+ "sın": 1993,
+ "kı": 1994,
+ "kad": 1995,
+ "ağ": 1996,
+ "değil": 1997,
+ "ük": 1998,
+ "çok": 1999,
+ "şı": 2000,
+ "ül": 2001,
+ "için": 2002,
+ "eye": 2003,
+ "oldu": 2004,
+ "mış": 2005,
+ "kal": 2006,
+ "mek": 2007,
+ "öyle": 2008,
+ "yordu": 2009,
+ "yüz": 2010,
+ "miş": 2011,
+ "mak": 2012,
+ "ola": 2013,
+ "yan": 2014,
+ "cek": 2015,
+ "yorum": 2016,
+ "bak": 2017,
+ "üm": 2018,
+ "ları": 2019,
+ "oğ": 2020,
+ "kadar": 2021,
+ "arı": 2022,
+ "ında": 2023,
+ "gün": 2024,
+ "yok": 2025,
+ "yer": 2026,
+ "dım": 2027,
+ "daha": 2028,
+ "ına": 2029,
+ "dim": 2030,
+ "bilir": 2031,
+ "iki": 2032,
+ "siz": 2033,
+ "diğ": 2034,
+ "bü": 2035,
+ "düş": 2036,
+ "üç": 2037,
+ "unu": 2038,
+ "aman": 2039,
+ "fak": 2040,
+ "ede": 2041,
+ "sonra": 2042,
+ "hiç": 2043,
+ "aki": 2044,
+ "ğı": 2045,
+ "bul": 2046,
+ "maz": 2047,
+ "anla": 2048,
+ "bura": 2049,
+ "geç": 2050,
+ "maya": 2051,
+ "konu": 2052,
+ "din": 2053,
+ "tek": 2054,
+ "zaman": 2055,
+ "eler": 2056,
+ "öz": 2057,
+ "dır": 2058,
+ "gibi": 2059,
+ "şa": 2060,
+ "leri": 2061,
+ "kim": 2062,
+ "ku": 2063,
+ "fakat": 2064,
+ "yar": 2065,
+ "göz": 2066,
+ "cı": 2067,
+ "yorsun": 2068,
+ "bek": 2069,
+ "inde": 2070,
+ "pek": 2071,
+ "bunu": 2072,
+ "lik": 2073,
+ "iler": 2074,
+ "edi": 2075,
+ "öl": 2076,
+ "sür": 2077,
+ "sır": 2078,
+ "çık": 2079,
+ "sıl": 2080,
+ "alar": 2081,
+ "kes": 2082,
+ "yak": 2083,
+ "çek": 2084,
+ "yıl": 2085,
+ "ecek": 2086,
+ "ız": 2087,
+ "git": 2088,
+ "kap": 2089,
+ "ama": 2090,
+ "ıl": 2091,
+ "ların": 2092,
+ "biz": 2093,
+ "tır": 2094,
+ "oy": 2095,
+ "ancak": 2096,
+ "doğ": 2097,
+ "bana": 2098,
+ "şim": 2099,
+ "başla": 2100,
+ "lü": 2101,
+ "madı": 2102,
+ "beni": 2103,
+ "yük": 2104,
+ "lık": 2105,
+ "beş": 2106,
+ "nasıl": 2107,
+ "tık": 2108,
+ "tür": 2109,
+ "daki": 2110,
+ "ceğ": 2111,
+ "zı": 2112,
+ "iyi": 2113,
+ "dok": 2114,
+ "benim": 2115,
+ "cağ": 2116,
+ "yen": 2117,
+ "şu": 2118,
+ "mez": 2119,
+ "düşün": 2120,
+ "kendi": 2121,
+ "şimdi": 2122,
+ "yol": 2123,
+ "yu": 2124,
+ "iste": 2125,
+ "sek": 2126,
+ "mam": 2127,
+ "söyle": 2128,
+ "dik": 2129,
+ "kur": 2130,
+ "olduğ": 2131,
+ "sını": 2132,
+ "biliyor": 2133,
+ "kan": 2134,
+ "yal": 2135,
+ "meye": 2136,
+ "muş": 2137,
+ "kaç": 2138,
+ "iye": 2139,
+ "tü": 2140,
+ "ef": 2141,
+ "tım": 2142,
+ "evet": 2143,
+ "yet": 2144,
+ "burada": 2145,
+ "tim": 2146,
+ "biraz": 2147,
+ "kor": 2148,
+ "doğru": 2149,
+ "inin": 2150,
+ "kız": 2151,
+ "diye": 2152,
+ "dör": 2153,
+ "etti": 2154,
+ "onun": 2155,
+ "isti": 2156,
+ "ği": 2157,
+ "sana": 2158,
+ "üş": 2159,
+ "arka": 2160,
+ "hayır": 2161,
+ "karşı": 2162,
+ "ile": 2163,
+ "hak": 2164,
+ "ıyor": 2165,
+ "neden": 2166,
+ "sev": 2167,
+ "sız": 2168,
+ "çocu": 2169,
+ "çalı": 2170,
+ "olur": 2171,
+ "bır": 2172,
+ "gir": 2173,
+ "ise": 2174,
+ "ih": 2175,
+ "kır": 2176,
+ "dön": 2177,
+ "böyle": 2178,
+ "seni": 2179,
+ "!\"": 2180,
+ "dört": 2181,
+ "söy": 2182,
+ "oş": 2183,
+ "musun": 2184,
+ "laş": 2185,
+ "ip": 2186,
+ "kay": 2187,
+ "hem": 2188,
+ "büyük": 2189,
+ "aç": 2190,
+ "bırak": 2191,
+ "misin": 2192,
+ "söz": 2193,
+ "değiş": 2194,
+ "ünü": 2195,
+ "gül": 2196,
+ "kö": 2197,
+ "karı": 2198,
+ "tamam": 2199,
+ "olu": 2200,
+ "yeni": 2201,
+ "lam": 2202,
+ "mıştı": 2203,
+ "yaş": 2204,
+ "iniz": 2205,
+ "kadın": 2206,
+ "bunun": 2207,
+ "mey": 2208,
+ "altı": 2209,
+ "yi": 2210,
+ "inden": 2211,
+ "senin": 2212,
+ "yat": 2213,
+ "top": 2214,
+ "isi": 2215,
+ "dün": 2216,
+ "hiçbir": 2217,
+ "yon": 2218,
+ "dın": 2219,
+ "tün": 2220,
+ "başka": 2221,
+ "hep": 2222,
+ "irmi": 2223,
+ "devam": 2224,
+ "olacak": 2225,
+ "artık": 2226,
+ "durum": 2227,
+ "imiz": 2228,
+ "üzel": 2229,
+ "lerini": 2230,
+ "sağ": 2231,
+ "gerek": 2232,
+ "yirmi": 2233,
+ "şek": 2234,
+ "bağ": 2235,
+ "lara": 2236,
+ "yür": 2237,
+ "ması": 2238,
+ "katı": 2239,
+ "dedi": 2240,
+ "gü": 2241,
+ "sorun": 2242,
+ "üne": 2243,
+ "mız": 2244,
+ "yapı": 2245,
+ "mil": 2246,
+ "ğını": 2247,
+ "tara": 2248,
+ "vardı": 2249,
+ "konuş": 2250,
+ "arak": 2251,
+ "larak": 2252,
+ "çocuk": 2253,
+ "bütün": 2254,
+ "ley": 2255,
+ "dür": 2256,
+ "güzel": 2257,
+ "ayı": 2258,
+ "yapa": 2259,
+ "nı": 2260,
+ "ayr": 2261,
+ "öne": 2262,
+ "yordum": 2263,
+ "ban": 2264,
+ "i̇ş": 2265,
+ "dum": 2266,
+ "yorlar": 2267,
+ "larını": 2268,
+ "çıkar": 2269,
+ "zan": 2270,
+ "seç": 2271,
+ "liyor": 2272,
+ "tak": 2273,
+ "şık": 2274,
+ "tekrar": 2275,
+ "aş": 2276,
+ "eş": 2277,
+ "mişti": 2278,
+ "kin": 2279,
+ "imi": 2280,
+ "eğ": 2281,
+ "gidi": 2282,
+ "leş": 2283,
+ "başladı": 2284,
+ "gide": 2285,
+ "otur": 2286,
+ "dde": 2287,
+ "ından": 2288,
+ "üzer": 2289,
+ "ının": 2290,
+ "nız": 2291,
+ "uy": 2292,
+ "yedi": 2293,
+ "kat": 2294,
+ "olarak": 2295,
+ "ladı": 2296,
+ "yalnız": 2297,
+ "bah": 2298,
+ "iyet": 2299,
+ "sak": 2300,
+ "açık": 2301,
+ "sında": 2302,
+ "...": 2303,
+ "insan": 2304,
+ "aynı": 2305,
+ "eder": 2306,
+ "istan": 2307,
+ "uzun": 2308,
+ "geri": 2309,
+ "erek": 2310,
+ "olan": 2311,
+ "gerçek": 2312,
+ "alan": 2313,
+ "dış": 2314,
+ "alık": 2315,
+ "fark": 2316,
+ "üst": 2317,
+ "sade": 2318,
+ "kiş": 2319,
+ "ldı": 2320,
+ "zor": 2321,
+ "etir": 2322,
+ "herkes": 2323,
+ "ömer": 2324,
+ "unda": 2325,
+ "haf": 2326,
+ "buna": 2327,
+ "ydı": 2328,
+ "peki": 2329,
+ "adam": 2330,
+ "haz": 2331,
+ "sına": 2332,
+ "kapı": 2333,
+ "görüş": 2334,
+ "sadece": 2335,
+ "aldı": 2336,
+ "geldi": 2337,
+ "rz": 2338,
+ "sz": 2339,
+ "cz": 2340,
+ "ię": 2341,
+ "dz": 2342,
+ "ał": 2343,
+ "się": 2344,
+ "rze": 2345,
+ "że": 2346,
+ "wy": 2347,
+ "rzy": 2348,
+ "ła": 2349,
+ "ło": 2350,
+ "ny": 2351,
+ "dzie": 2352,
+ "dzi": 2353,
+ "czy": 2354,
+ "cie": 2355,
+ "prze": 2356,
+ "dy": 2357,
+ "kie": 2358,
+ "ry": 2359,
+ "ją": 2360,
+ "ów": 2361,
+ "przy": 2362,
+ "mie": 2363,
+ "szy": 2364,
+ "cze": 2365,
+ "bie": 2366,
+ "cy": 2367,
+ "nia": 2368,
+ "ści": 2369,
+ "sze": 2370,
+ "jest": 2371,
+ "ży": 2372,
+ "ną": 2373,
+ "któ": 2374,
+ "ała": 2375,
+ "mnie": 2376,
+ "ły": 2377,
+ "cza": 2378,
+ "jak": 2379,
+ "roz": 2380,
+ "ró": 2381,
+ "zna": 2382,
+ "łu": 2383,
+ "ść": 2384,
+ "wia": 2385,
+ "wszy": 2386,
+ "spo": 2387,
+ "gdy": 2388,
+ "wał": 2389,
+ "wię": 2390,
+ "łem": 2391,
+ "ję": 2392,
+ "sk": 2393,
+ "rę": 2394,
+ "dob": 2395,
+ "już": 2396,
+ "bę": 2397,
+ "ałem": 2398,
+ "sza": 2399,
+ "pod": 2400,
+ "dla": 2401,
+ "pan": 2402,
+ "nę": 2403,
+ "może": 2404,
+ "śli": 2405,
+ "ało": 2406,
+ "lko": 2407,
+ "nych": 2408,
+ "powie": 2409,
+ "cię": 2410,
+ "tylko": 2411,
+ "naj": 2412,
+ "tego": 2413,
+ "ski": 2414,
+ "nego": 2415,
+ "wszyst": 2416,
+ "szcze": 2417,
+ "jed": 2418,
+ "jej": 2419,
+ "two": 2420,
+ "ąd": 2421,
+ "śmy": 2422,
+ "czę": 2423,
+ "wać": 2424,
+ "jego": 2425,
+ "ża": 2426,
+ "sy": 2427,
+ "praw": 2428,
+ "tym": 2429,
+ "który": 2430,
+ "ały": 2431,
+ "trze": 2432,
+ "niej": 2433,
+ "nym": 2434,
+ "gło": 2435,
+ "jąc": 2436,
+ "mówi": 2437,
+ "ska": 2438,
+ "nej": 2439,
+ "słu": 2440,
+ "wła": 2441,
+ "będzie": 2442,
+ "dę": 2443,
+ "pó": 2444,
+ "bez": 2445,
+ "nic": 2446,
+ "pła": 2447,
+ "ście": 2448,
+ "są": 2449,
+ "trzy": 2450,
+ "kiem": 2451,
+ "był": 2452,
+ "mog": 2453,
+ "robi": 2454,
+ "tam": 2455,
+ "mię": 2456,
+ "zy": 2457,
+ "pew": 2458,
+ "myś": 2459,
+ "przed": 2460,
+ "sko": 2461,
+ "które": 2462,
+ "lę": 2463,
+ "wsze": 2464,
+ "ąc": 2465,
+ "było": 2466,
+ "sobie": 2467,
+ "py": 2468,
+ "cią": 2469,
+ "jeszcze": 2470,
+ "tę": 2471,
+ "czas": 2472,
+ "szę": 2473,
+ "gł": 2474,
+ "kę": 2475,
+ "czu": 2476,
+ "przez": 2477,
+ "sło": 2478,
+ "wz": 2479,
+ "kto": 2480,
+ "ków": 2481,
+ "czo": 2482,
+ "liśmy": 2483,
+ "więc": 2484,
+ "rą": 2485,
+ "wó": 2486,
+ "rza": 2487,
+ "ności": 2488,
+ "wet": 2489,
+ "nął": 2490,
+ "śmie": 2491,
+ "nawet": 2492,
+ "musi": 2493,
+ "swo": 2494,
+ "tej": 2495,
+ "wą": 2496,
+ "wu": 2497,
+ "wią": 2498,
+ "niu": 2499,
+ "czą": 2500,
+ "dzo": 2501,
+ "skie": 2502,
+ "jeśli": 2503,
+ "czego": 2504,
+ "chy": 2505,
+ "dł": 2506,
+ "tych": 2507,
+ "bym": 2508,
+ "żo": 2509,
+ "eś": 2510,
+ "sią": 2511,
+ "kiedy": 2512,
+ "wró": 2513,
+ "dze": 2514,
+ "dro": 2515,
+ "rów": 2516,
+ "pani": 2517,
+ "kul": 2518,
+ "nad": 2519,
+ "chwi": 2520,
+ "nim": 2521,
+ "być": 2522,
+ "chodzi": 2523,
+ "nio": 2524,
+ "dobrze": 2525,
+ "teraz": 2526,
+ "wokul": 2527,
+ "coś": 2528,
+ "kł": 2529,
+ "pier": 2530,
+ "gdzie": 2531,
+ "dzy": 2532,
+ "pię": 2533,
+ "dź": 2534,
+ "ką": 2535,
+ "gó": 2536,
+ "zda": 2537,
+ "chce": 2538,
+ "stę": 2539,
+ "świa": 2540,
+ "wszystko": 2541,
+ "peł": 2542,
+ "wiem": 2543,
+ "wiel": 2544,
+ "każ": 2545,
+ "rzu": 2546,
+ "sły": 2547,
+ "jedna": 2548,
+ "myśl": 2549,
+ "mój": 2550,
+ "jestem": 2551,
+ "óż": 2552,
+ "miej": 2553,
+ "moż": 2554,
+ "kła": 2555,
+ "resz": 2556,
+ "dłu": 2557,
+ "stwo": 2558,
+ "nię": 2559,
+ "masz": 2560,
+ "żeby": 2561,
+ "niem": 2562,
+ "jakie": 2563,
+ "sty": 2564,
+ "nią": 2565,
+ "wej": 2566,
+ "oj": 2567,
+ "sła": 2568,
+ "ność": 2569,
+ "zło": 2570,
+ "szczę": 2571,
+ "lej": 2572,
+ "wego": 2573,
+ "cał": 2574,
+ "dział": 2575,
+ "kich": 2576,
+ "dza": 2577,
+ "dzię": 2578,
+ "oczy": 2579,
+ "zosta": 2580,
+ "czło": 2581,
+ "nam": 2582,
+ "kil": 2583,
+ "szu": 2584,
+ "wę": 2585,
+ "miał": 2586,
+ "strze": 2587,
+ "cej": 2588,
+ "ej": 2589,
+ "znaj": 2590,
+ "dać": 2591,
+ "miejs": 2592,
+ "kró": 2593,
+ "kry": 2594,
+ "bardzo": 2595,
+ "śnie": 2596,
+ "lą": 2597,
+ "gie": 2598,
+ "ciebie": 2599,
+ "dni": 2600,
+ "potrze": 2601,
+ "wokulski": 2602,
+ "uwa": 2603,
+ "umie": 2604,
+ "jednak": 2605,
+ "kra": 2606,
+ "wróci": 2607,
+ "człowie": 2608,
+ "czyć": 2609,
+ "była": 2610,
+ "żeli": 2611,
+ "mę": 2612,
+ "cę": 2613,
+ "zrobi": 2614,
+ "mogę": 2615,
+ "prowa": 2616,
+ "rem": 2617,
+ "niech": 2618,
+ "cznie": 2619,
+ "kro": 2620,
+ "tą": 2621,
+ "chci": 2622,
+ "bro": 2623,
+ "dzieć": 2624,
+ "szą": 2625,
+ "pad": 2626,
+ "trz": 2627,
+ "jem": 2628,
+ "tów": 2629,
+ "dru": 2630,
+ "taj": 2631,
+ "rzekł": 2632,
+ "niego": 2633,
+ "takie": 2634,
+ "wała": 2635,
+ "towa": 2636,
+ "kapła": 2637,
+ "widzi": 2638,
+ "podob": 2639,
+ "dzę": 2640,
+ "tał": 2641,
+ "stęp": 2642,
+ "bą": 2643,
+ "poko": 2644,
+ "wem": 2645,
+ "gę": 2646,
+ "aby": 2647,
+ "albo": 2648,
+ "spra": 2649,
+ "zno": 2650,
+ "smo": 2651,
+ "jesz": 2652,
+ "księ": 2653,
+ "jesteś": 2654,
+ "poz": 2655,
+ "nigdy": 2656,
+ "ksią": 2657,
+ "cóż": 2658,
+ "ws": 2659,
+ "pow": 2660,
+ "tka": 2661,
+ "świe": 2662,
+ "szka": 2663,
+ "samo": 2664,
+ "sł": 2665,
+ "rzę": 2666,
+ "nale": 2667,
+ "chcesz": 2668,
+ "nik": 2669,
+ "pę": 2670,
+ "chyba": 2671,
+ "ciąg": 2672,
+ "jący": 2673,
+ "woj": 2674,
+ "nasze": 2675,
+ "mniej": 2676,
+ "więcej": 2677,
+ "zwy": 2678,
+ "osta": 2679,
+ "waż": 2680,
+ "śmier": 2681,
+ "wier": 2682,
+ "dzą": 2683,
+ "zaś": 2684,
+ "gdyby": 2685,
+ "jaki": 2686,
+ "wol": 2687,
+ "win": 2688,
+ "dą": 2689,
+ "ścia": 2690,
+ "rozma": 2691,
+ "wal": 2692,
+ "panie": 2693,
+ "star": 2694,
+ "kaz": 2695,
+ "jeżeli": 2696,
+ "wra": 2697,
+ "koń": 2698,
+ "siebie": 2699,
+ "znowu": 2700,
+ "czem": 2701,
+ "stwa": 2702,
+ "isto": 2703,
+ "pół": 2704,
+ "dał": 2705,
+ "kobie": 2706,
+ "ałam": 2707,
+ "wych": 2708,
+ "cesa": 2709,
+ "nich": 2710,
+ "zawsze": 2711,
+ "dzić": 2712,
+ "też": 2713,
+ "lepie": 2714,
+ "proszę": 2715,
+ "kre": 2716,
+ "twa": 2717,
+ "łą": 2718,
+ "chu": 2719,
+ "cą": 2720,
+ "prz": 2721,
+ "łe": 2722,
+ "szedł": 2723,
+ "odpowie": 2724,
+ "myśli": 2725,
+ "świą": 2726,
+ "ź": 2727,
+ "ł": 2728,
+ "&": 2729,
+ "=": 2730,
+ "ă": 2731,
+ "đ": 2732,
+ "ţ": 2733,
+ "–": 2734,
+ "‘": 2735,
+ "ij": 2736,
+ "aa": 2737,
+ "een": 2738,
+ "het": 2739,
+ "aar": 2740,
+ "oor": 2741,
+ "ijn": 2742,
+ "dat": 2743,
+ "oe": 2744,
+ "ijk": 2745,
+ "aan": 2746,
+ "voor": 2747,
+ "iet": 2748,
+ "zijn": 2749,
+ "niet": 2750,
+ "oo": 2751,
+ "moet": 2752,
+ "heb": 2753,
+ "uit": 2754,
+ "wij": 2755,
+ "aat": 2756,
+ "lijk": 2757,
+ "sl": 2758,
+ "daar": 2759,
+ "deze": 2760,
+ "worden": 2761,
+ "moeten": 2762,
+ "onder": 2763,
+ "hebben": 2764,
+ "ook": 2765,
+ "ct": 2766,
+ "nog": 2767,
+ "aal": 2768,
+ "eer": 2769,
+ "bij": 2770,
+ "mijn": 2771,
+ "kom": 2772,
+ "atie": 2773,
+ "eft": 2774,
+ "kel": 2775,
+ "rij": 2776,
+ "heid": 2777,
+ "af": 2778,
+ "stel": 2779,
+ "maar": 2780,
+ "wee": 2781,
+ "heeft": 2782,
+ "waar": 2783,
+ "eren": 2784,
+ "wat": 2785,
+ "wil": 2786,
+ "aag": 2787,
+ "bet": 2788,
+ "hij": 2789,
+ "kun": 2790,
+ "uw": 2791,
+ "dt": 2792,
+ "door": 2793,
+ "tij": 2794,
+ "ond": 2795,
+ "geen": 2796,
+ "gev": 2797,
+ "veel": 2798,
+ "naar": 2799,
+ "aten": 2800,
+ "kunnen": 2801,
+ "echt": 2802,
+ "goe": 2803,
+ "twee": 2804,
+ "delijk": 2805,
+ "uur": 2806,
+ "toe": 2807,
+ "meer": 2808,
+ "onze": 2809,
+ "tijd": 2810,
+ "hoe": 2811,
+ "tot": 2812,
+ "zou": 2813,
+ "aak": 2814,
+ "amen": 2815,
+ "woor": 2816,
+ "wordt": 2817,
+ "gelijk": 2818,
+ "gaan": 2819,
+ "ker": 2820,
+ "eld": 2821,
+ "hou": 2822,
+ "zel": 2823,
+ "tegen": 2824,
+ "komen": 2825,
+ "werk": 2826,
+ "goed": 2827,
+ "zal": 2828,
+ "zij": 2829,
+ "slag": 2830,
+ "zien": 2831,
+ "echter": 2832,
+ "itie": 2833,
+ "tie": 2834,
+ "elijk": 2835,
+ "ische": 2836,
+ "belan": 2837,
+ "haar": 2838,
+ "vr": 2839,
+ "grijk": 2840,
+ "doen": 2841,
+ "land": 2842,
+ "belangrijk": 2843,
+ "open": 2844,
+ "ctie": 2845,
+ "zelf": 2846,
+ "mij": 2847,
+ "iteit": 2848,
+ "stem": 2849,
+ "mee": 2850,
+ "aren": 2851,
+ "dien": 2852,
+ "gaat": 2853,
+ "prob": 2854,
+ "moe": 2855,
+ "ullen": 2856,
+ "zich": 2857,
+ "daarom": 2858,
+ "orm": 2859,
+ "staat": 2860,
+ "zit": 2861,
+ "dui": 2862,
+ "dus": 2863,
+ "ds": 2864,
+ "verslag": 2865,
+ "kelijk": 2866,
+ "proble": 2867,
+ "schap": 2868,
+ "gd": 2869,
+ "hun": 2870,
+ "erd": 2871,
+ "zet": 2872,
+ "staan": 2873,
+ "maal": 2874,
+ "inder": 2875,
+ "eid": 2876,
+ "kken": 2877,
+ "ged": 2878,
+ "zullen": 2879,
+ "mensen": 2880,
+ "jaar": 2881,
+ "regel": 2882,
+ "ieder": 2883,
+ "volgen": 2884,
+ "geven": 2885,
+ "even": 2886,
+ "blij": 2887,
+ "ië": 2888,
+ "uwe": 2889,
+ "maken": 2890,
+ "oek": 2891,
+ "nieuwe": 2892,
+ "baar": 2893,
+ "andere": 2894,
+ "ruik": 2895,
+ "agen": 2896,
+ "ouw": 2897,
+ "willen": 2898,
+ "aakt": 2899,
+ "hoo": 2900,
+ "anden": 2901,
+ "lig": 2902,
+ "samen": 2903,
+ "zeer": 2904,
+ "duidelijk": 2905,
+ "antwoor": 2906,
+ "heel": 2907,
+ "punt": 2908,
+ "houden": 2909,
+ "vraag": 2910,
+ "gele": 2911,
+ "eens": 2912,
+ "besch": 2913,
+ "omen": 2914,
+ "erg": 2915,
+ "doel": 2916,
+ "dag": 2917,
+ "uren": 2918,
+ "ings": 2919,
+ "oren": 2920,
+ "delen": 2921,
+ "steun": 2922,
+ "innen": 2923,
+ "pol": 2924,
+ "oon": 2925,
+ "sn": 2926,
+ "zonder": 2927,
+ "nodig": 2928,
+ "alleen": 2929,
+ "mid": 2930,
+ "ragen": 2931,
+ "iets": 2932,
+ "versch": 2933,
+ "gebruik": 2934,
+ "rouw": 2935,
+ "stellen": 2936,
+ "menten": 2937,
+ "eerste": 2938,
+ "laat": 2939,
+ "groot": 2940,
+ "ood": 2941,
+ "toch": 2942,
+ "laten": 2943,
+ "aard": 2944,
+ "sle": 2945,
+ "deel": 2946,
+ "plaat": 2947,
+ "ree": 2948,
+ "betre": 2949,
+ "lid": 2950,
+ "uiten": 2951,
+ "racht": 2952,
+ "beleid": 2953,
+ "stie": 2954,
+ "staten": 2955,
+ "ggen": 2956,
+ "reken": 2957,
+ "alen": 2958,
+ "ming": 2959,
+ "mogelijk": 2960,
+ "grote": 2961,
+ "altijd": 2962,
+ "enkel": 2963,
+ "wik": 2964,
+ "politie": 2965,
+ "elk": 2966,
+ "handel": 2967,
+ "kwe": 2968,
+ "maat": 2969,
+ "elen": 2970,
+ "vrij": 2971,
+ "jes": 2972,
+ "aam": 2973,
+ "huis": 2974,
+ "weer": 2975,
+ "lidstaten": 2976,
+ "king": 2977,
+ "kle": 2978,
+ "bed": 2979,
+ "geval": 2980,
+ "wikkel": 2981,
+ "kwestie": 2982,
+ "stee": 2983,
+ "hel": 2984,
+ "komst": 2985,
+ "iden": 2986,
+ "eerd": 2987,
+ "tweede": 2988,
+ "probleem": 2989,
+ "ussen": 2990,
+ "snel": 2991,
+ "tig": 2992,
+ "ult": 2993,
+ "nemen": 2994,
+ "commis": 2995,
+ "verschil": 2996,
+ "zoek": 2997,
+ "krij": 2998,
+ "graag": 2999,
+ "denk": 3000,
+ "landen": 3001,
+ "reden": 3002,
+ "besl": 3003,
+ "oeg": 3004,
+ "beter": 3005,
+ "heden": 3006,
+ "mag": 3007,
+ "boven": 3008,
+ "cont": 3009,
+ "fd": 3010,
+ "hele": 3011,
+ "vier": 3012,
+ "gez": 3013,
+ "kw": 3014,
+ "aas": 3015,
+ "ontwikkel": 3016,
+ "drie": 3017,
+ "vaak": 3018,
+ "plaats": 3019,
+ "gang": 3020,
+ "ijf": 3021,
+ "natuur": 3022,
+ "tussen": 3023,
+ "bat": 3024,
+ "komt": 3025,
+ "wacht": 3026,
+ "aad": 3027,
+ "achter": 3028,
+ "gebie": 3029,
+ "verk": 3030,
+ "ligt": 3031,
+ "nieuw": 3032,
+ "vand": 3033,
+ "ý": 3034,
+ "ď": 3035,
+ "ě": 3036,
+ "ř": 3037,
+ "ť": 3038,
+ "ů": 3039,
+ "„": 3040,
+ "ní": 3041,
+ "ně": 3042,
+ "ře": 3043,
+ "ná": 3044,
+ "vě": 3045,
+ "vá": 3046,
+ "rá": 3047,
+ "vy": 3048,
+ "mě": 3049,
+ "ři": 3050,
+ "ří": 3051,
+ "že": 3052,
+ "jí": 3053,
+ "vý": 3054,
+ "ji": 3055,
+ "dě": 3056,
+ "če": 3057,
+ "tě": 3058,
+ "ky": 3059,
+ "še": 3060,
+ "ké": 3061,
+ "ší": 3062,
+ "pře": 3063,
+ "ví": 3064,
+ "ný": 3065,
+ "ži": 3066,
+ "má": 3067,
+ "cí": 3068,
+ "zá": 3069,
+ "ské": 3070,
+ "dá": 3071,
+ "byl": 3072,
+ "tí": 3073,
+ "pří": 3074,
+ "při": 3075,
+ "či": 3076,
+ "vní": 3077,
+ "ča": 3078,
+ "dí": 3079,
+ "dní": 3080,
+ "ká": 3081,
+ "nou": 3082,
+ "vět": 3083,
+ "pě": 3084,
+ "kou": 3085,
+ "ých": 3086,
+ "bě": 3087,
+ "prá": 3088,
+ "jako": 3089,
+ "ží": 3090,
+ "zí": 3091,
+ "jsou": 3092,
+ "jsem": 3093,
+ "lní": 3094,
+ "cké": 3095,
+ "vat": 3096,
+ "před": 3097,
+ "hla": 3098,
+ "stá": 3099,
+ "čí": 3100,
+ "ši": 3101,
+ "kla": 3102,
+ "ště": 3103,
+ "lou": 3104,
+ "mů": 3105,
+ "chá": 3106,
+ "pů": 3107,
+ "také": 3108,
+ "dů": 3109,
+ "nost": 3110,
+ "tře": 3111,
+ "sku": 3112,
+ "vše": 3113,
+ "tní": 3114,
+ "byla": 3115,
+ "ční": 3116,
+ "jeho": 3117,
+ "bý": 3118,
+ "vání": 3119,
+ "ných": 3120,
+ "tři": 3121,
+ "vz": 3122,
+ "stře": 3123,
+ "dva": 3124,
+ "hle": 3125,
+ "čá": 3126,
+ "nosti": 3127,
+ "vš": 3128,
+ "hra": 3129,
+ "jen": 3130,
+ "slo": 3131,
+ "však": 3132,
+ "kdy": 3133,
+ "bylo": 3134,
+ "bude": 3135,
+ "jší": 3136,
+ "vých": 3137,
+ "ním": 3138,
+ "sm": 3139,
+ "koli": 3140,
+ "rů": 3141,
+ "může": 3142,
+ "není": 3143,
+ "hod": 3144,
+ "bí": 3145,
+ "tý": 3146,
+ "stě": 3147,
+ "uje": 3148,
+ "sá": 3149,
+ "pět": 3150,
+ "krá": 3151,
+ "tom": 3152,
+ "ství": 3153,
+ "vně": 3154,
+ "sed": 3155,
+ "své": 3156,
+ "pí": 3157,
+ "musí": 3158,
+ "už": 3159,
+ "tím": 3160,
+ "jící": 3161,
+ "jedno": 3162,
+ "čas": 3163,
+ "čty": 3164,
+ "ský": 3165,
+ "evro": 3166,
+ "toho": 3167,
+ "hy": 3168,
+ "kter": 3169,
+ "rní": 3170,
+ "stí": 3171,
+ "svě": 3172,
+ "pak": 3173,
+ "všech": 3174,
+ "ků": 3175,
+ "ng": 3176,
+ "ád": 3177,
+ "chází": 3178,
+ "být": 3179,
+ "první": 3180,
+ "mno": 3181,
+ "ského": 3182,
+ "pá": 3183,
+ "nebo": 3184,
+ "kem": 3185,
+ "sla": 3186,
+ "ného": 3187,
+ "zde": 3188,
+ "další": 3189,
+ "řa": 3190,
+ "čtyři": 3191,
+ "hrá": 3192,
+ "druh": 3193,
+ "lně": 3194,
+ "vla": 3195,
+ "ských": 3196,
+ "ško": 3197,
+ "půso": 3198,
+ "proto": 3199,
+ "vů": 3200,
+ "ská": 3201,
+ "šest": 3202,
+ "dně": 3203,
+ "ještě": 3204,
+ "mezi": 3205,
+ "několi": 3206,
+ "již": 3207,
+ "čně": 3208,
+ "slu": 3209,
+ "zná": 3210,
+ "sedm": 3211,
+ "vlá": 3212,
+ "osm": 3213,
+ "byly": 3214,
+ "vám": 3215,
+ "cký": 3216,
+ "tech": 3217,
+ "ději": 3218,
+ "velmi": 3219,
+ "leži": 3220,
+ "vala": 3221,
+ "lý": 3222,
+ "tvo": 3223,
+ "spole": 3224,
+ "stup": 3225,
+ "mož": 3226,
+ "evrop": 3227,
+ "stal": 3228,
+ "jde": 3229,
+ "rodi": 3230,
+ "její": 3231,
+ "poli": 3232,
+ "devět": 3233,
+ "sme": 3234,
+ "až": 3235,
+ "této": 3236,
+ "tento": 3237,
+ "kaž": 3238,
+ "nula": 3239,
+ "bych": 3240,
+ "moc": 3241,
+ "stou": 3242,
+ "kdo": 3243,
+ "zd": 3244,
+ "praco": 3245,
+ "tomu": 3246,
+ "ným": 3247,
+ "živo": 3248,
+ "zem": 3249,
+ "násle": 3250,
+ "sky": 3251,
+ "jich": 3252,
+ "měl": 3253,
+ "děla": 3254,
+ "jsme": 3255,
+ "nice": 3256,
+ "stej": 3257,
+ "stní": 3258,
+ "náro": 3259,
+ "nit": 3260,
+ "později": 3261,
+ "tako": 3262,
+ "nce": 3263,
+ "čer": 3264,
+ "ším": 3265,
+ "něco": 3266,
+ "vál": 3267,
+ "řej": 3268,
+ "krát": 3269,
+ "ální": 3270,
+ "asi": 3271,
+ "které": 3272,
+ "stav": 3273,
+ "mají": 3274,
+ "mys": 3275,
+ "době": 3276,
+ "sně": 3277,
+ "zku": 3278,
+ "tů": 3279,
+ "chod": 3280,
+ "spě": 3281,
+ "jejich": 3282,
+ "součas": 3283,
+ "vali": 3284,
+ "kte": 3285,
+ "prů": 3286,
+ "zení": 3287,
+ "pat": 3288,
+ "potře": 3289,
+ "dnes": 3290,
+ "zemí": 3291,
+ "znam": 3292,
+ "mám": 3293,
+ "tedy": 3294,
+ "hlavní": 3295,
+ "použí": 3296,
+ "bní": 3297,
+ "vede": 3298,
+ "lep": 3299,
+ "jek": 3300,
+ "prav": 3301,
+ "politi": 3302,
+ "dne": 3303,
+ "čení": 3304,
+ "než": 3305,
+ "děl": 3306,
+ "čo": 3307,
+ "cích": 3308,
+ "sté": 3309,
+ "dlou": 3310,
+ "několik": 3311,
+ "vyu": 3312,
+ "ckých": 3313,
+ "nové": 3314,
+ "čin": 3315,
+ "dělá": 3316,
+ "ký": 3317,
+ "obla": 3318,
+ "podle": 3319,
+ "důleži": 3320,
+ "poku": 3321,
+ "kone": 3322,
+ "dý": 3323,
+ "dvě": 3324,
+ "žád": 3325,
+ "nout": 3326,
+ "tku": 3327,
+ "tvr": 3328,
+ "ckého": 3329,
+ "rov": 3330,
+ "tele": 3331,
+ "psa": 3332,
+ "svět": 3333,
+ "tivní": 3334,
+ "dosta": 3335,
+ "šel": 3336,
+ "druhé": 3337,
+ "skou": 3338,
+ "žo": 3339,
+ "jedná": 3340,
+ "význam": 3341,
+ "problé": 3342,
+ "publi": 3343,
+ "ván": 3344,
+ "odpo": 3345,
+ "podpo": 3346,
+ "dle": 3347,
+ "jaké": 3348,
+ "šení": 3349,
+ "vím": 3350,
+ "během": 3351,
+ "nachází": 3352,
+ "slou": 3353,
+ "pouze": 3354,
+ "otá": 3355,
+ "plo": 3356,
+ "tové": 3357,
+ "větši": 3358,
+ "komi": 3359,
+ "vají": 3360,
+ "tyto": 3361,
+ "zápa": 3362,
+ "změ": 3363,
+ "moh": 3364,
+ "více": 3365,
+ "společ": 3366,
+ "auto": 3367,
+ "proti": 3368,
+ "dět": 3369,
+ "cháze": 3370,
+ "žel": 3371,
+ "«": 3372,
+ "»": 3373,
+ "а": 3374,
+ "б": 3375,
+ "в": 3376,
+ "г": 3377,
+ "д": 3378,
+ "е": 3379,
+ "ж": 3380,
+ "з": 3381,
+ "и": 3382,
+ "й": 3383,
+ "к": 3384,
+ "л": 3385,
+ "м": 3386,
+ "н": 3387,
+ "о": 3388,
+ "п": 3389,
+ "р": 3390,
+ "с": 3391,
+ "т": 3392,
+ "у": 3393,
+ "ф": 3394,
+ "х": 3395,
+ "ц": 3396,
+ "ч": 3397,
+ "ш": 3398,
+ "щ": 3399,
+ "ъ": 3400,
+ "ы": 3401,
+ "ь": 3402,
+ "э": 3403,
+ "ю": 3404,
+ "я": 3405,
+ "ё": 3406,
+ "‑": 3407,
+ "−": 3408,
+ "ст": 3409,
+ "ен": 3410,
+ "но": 3411,
+ "на": 3412,
+ "пр": 3413,
+ "то": 3414,
+ "по": 3415,
+ "ра": 3416,
+ "го": 3417,
+ "ко": 3418,
+ "не": 3419,
+ "во": 3420,
+ "ва": 3421,
+ "ет": 3422,
+ "ер": 3423,
+ "ни": 3424,
+ "ел": 3425,
+ "ит": 3426,
+ "ны": 3427,
+ "за": 3428,
+ "ро": 3429,
+ "ени": 3430,
+ "ка": 3431,
+ "ли": 3432,
+ "ем": 3433,
+ "да": 3434,
+ "об": 3435,
+ "ла": 3436,
+ "до": 3437,
+ "ся": 3438,
+ "ть": 3439,
+ "от": 3440,
+ "ло": 3441,
+ "ль": 3442,
+ "ед": 3443,
+ "со": 3444,
+ "ми": 3445,
+ "ре": 3446,
+ "мо": 3447,
+ "ци": 3448,
+ "про": 3449,
+ "та": 3450,
+ "это": 3451,
+ "ки": 3452,
+ "ру": 3453,
+ "при": 3454,
+ "ти": 3455,
+ "се": 3456,
+ "ста": 3457,
+ "вы": 3458,
+ "мы": 3459,
+ "ви": 3460,
+ "бы": 3461,
+ "ма": 3462,
+ "ес": 3463,
+ "ля": 3464,
+ "сти": 3465,
+ "ле": 3466,
+ "что": 3467,
+ "ме": 3468,
+ "ри": 3469,
+ "ча": 3470,
+ "од": 3471,
+ "ей": 3472,
+ "ель": 3473,
+ "ения": 3474,
+ "га": 3475,
+ "ну": 3476,
+ "си": 3477,
+ "па": 3478,
+ "раз": 3479,
+ "бо": 3480,
+ "сто": 3481,
+ "су": 3482,
+ "са": 3483,
+ "ду": 3484,
+ "его": 3485,
+ "ест": 3486,
+ "ин": 3487,
+ "ить": 3488,
+ "из": 3489,
+ "же": 3490,
+ "му": 3491,
+ "пер": 3492,
+ "под": 3493,
+ "ение": 3494,
+ "сь": 3495,
+ "ку": 3496,
+ "пред": 3497,
+ "ного": 3498,
+ "ных": 3499,
+ "вер": 3500,
+ "те": 3501,
+ "ной": 3502,
+ "ции": 3503,
+ "де": 3504,
+ "ры": 3505,
+ "дел": 3506,
+ "лю": 3507,
+ "ве": 3508,
+ "он": 3509,
+ "мен": 3510,
+ "ги": 3511,
+ "ня": 3512,
+ "бу": 3513,
+ "пра": 3514,
+ "все": 3515,
+ "ется": 3516,
+ "сть": 3517,
+ "жа": 3518,
+ "дол": 3519,
+ "жи": 3520,
+ "бе": 3521,
+ "кон": 3522,
+ "сл": 3523,
+ "ши": 3524,
+ "ди": 3525,
+ "ств": 3526,
+ "ско": 3527,
+ "ные": 3528,
+ "чи": 3529,
+ "ют": 3530,
+ "дер": 3531,
+ "стра": 3532,
+ "ты": 3533,
+ "ход": 3534,
+ "щи": 3535,
+ "зо": 3536,
+ "зна": 3537,
+ "ности": 3538,
+ "чес": 3539,
+ "вля": 3540,
+ "вать": 3541,
+ "ор": 3542,
+ "пол": 3543,
+ "вет": 3544,
+ "так": 3545,
+ "ша": 3546,
+ "ту": 3547,
+ "сво": 3548,
+ "пре": 3549,
+ "она": 3550,
+ "итель": 3551,
+ "ный": 3552,
+ "сло": 3553,
+ "как": 3554,
+ "вл": 3555,
+ "ность": 3556,
+ "хо": 3557,
+ "мож": 3558,
+ "пе": 3559,
+ "для": 3560,
+ "ния": 3561,
+ "ное": 3562,
+ "рас": 3563,
+ "долж": 3564,
+ "дар": 3565,
+ "тель": 3566,
+ "ска": 3567,
+ "пу": 3568,
+ "ство": 3569,
+ "кото": 3570,
+ "раб": 3571,
+ "ее": 3572,
+ "род": 3573,
+ "эти": 3574,
+ "соб": 3575,
+ "ору": 3576,
+ "жен": 3577,
+ "ным": 3578,
+ "ити": 3579,
+ "ние": 3580,
+ "ком": 3581,
+ "дет": 3582,
+ "сту": 3583,
+ "гу": 3584,
+ "пи": 3585,
+ "меж": 3586,
+ "ению": 3587,
+ "тер": 3588,
+ "работ": 3589,
+ "воз": 3590,
+ "ция": 3591,
+ "кой": 3592,
+ "щест": 3593,
+ "гра": 3594,
+ "зи": 3595,
+ "ря": 3596,
+ "между": 3597,
+ "ства": 3598,
+ "вс": 3599,
+ "ело": 3600,
+ "ше": 3601,
+ "мер": 3602,
+ "ба": 3603,
+ "зы": 3604,
+ "лу": 3605,
+ "аль": 3606,
+ "дей": 3607,
+ "гла": 3608,
+ "народ": 3609,
+ "кти": 3610,
+ "предста": 3611,
+ "лся": 3612,
+ "явля": 3613,
+ "ски": 3614,
+ "нов": 3615,
+ "един": 3616,
+ "ров": 3617,
+ "ис": 3618,
+ "нима": 3619,
+ "рем": 3620,
+ "ходи": 3621,
+ "также": 3622,
+ "дру": 3623,
+ "ать": 3624,
+ "след": 3625,
+ "гово": 3626,
+ "ная": 3627,
+ "ющи": 3628,
+ "ень": 3629,
+ "которы": 3630,
+ "хот": 3631,
+ "ву": 3632,
+ "их": 3633,
+ "ему": 3634,
+ "чит": 3635,
+ "важ": 3636,
+ "орга": 3637,
+ "чески": 3638,
+ "ще": 3639,
+ "ке": 3640,
+ "ха": 3641,
+ "пос": 3642,
+ "том": 3643,
+ "боль": 3644,
+ "мне": 3645,
+ "пас": 3646,
+ "объ": 3647,
+ "прав": 3648,
+ "конф": 3649,
+ "слу": 3650,
+ "поддер": 3651,
+ "стви": 3652,
+ "наш": 3653,
+ "лько": 3654,
+ "стоя": 3655,
+ "ную": 3656,
+ "лем": 3657,
+ "енных": 3658,
+ "кра": 3659,
+ "ды": 3660,
+ "международ": 3661,
+ "гда": 3662,
+ "необ": 3663,
+ "госу": 3664,
+ "ству": 3665,
+ "ении": 3666,
+ "государ": 3667,
+ "кто": 3668,
+ "им": 3669,
+ "чест": 3670,
+ "рет": 3671,
+ "вопро": 3672,
+ "лен": 3673,
+ "ели": 3674,
+ "рова": 3675,
+ "ций": 3676,
+ "нам": 3677,
+ "этой": 3678,
+ "жения": 3679,
+ "необходи": 3680,
+ "меня": 3681,
+ "было": 3682,
+ "сили": 3683,
+ "фи": 3684,
+ "вя": 3685,
+ "шь": 3686,
+ "этого": 3687,
+ "они": 3688,
+ "органи": 3689,
+ "безо": 3690,
+ "проб": 3691,
+ "име": 3692,
+ "реш": 3693,
+ "би": 3694,
+ "безопас": 3695,
+ "ются": 3696,
+ "оста": 3697,
+ "енно": 3698,
+ "год": 3699,
+ "ела": 3700,
+ "представ": 3701,
+ "ться": 3702,
+ "слово": 3703,
+ "организа": 3704,
+ "должны": 3705,
+ "этом": 3706,
+ "бла": 3707,
+ "че": 3708,
+ "чу": 3709,
+ "благо": 3710,
+ "этому": 3711,
+ "врем": 3712,
+ "спе": 3713,
+ "ном": 3714,
+ "ений": 3715,
+ "спо": 3716,
+ "нас": 3717,
+ "нет": 3718,
+ "зу": 3719,
+ "вед": 3720,
+ "еще": 3721,
+ "сказа": 3722,
+ "сей": 3723,
+ "ерен": 3724,
+ "дан": 3725,
+ "сам": 3726,
+ "еля": 3727,
+ "ран": 3728,
+ "зыва": 3729,
+ "является": 3730,
+ "будет": 3731,
+ "ктив": 3732,
+ "тре": 3733,
+ "деле": 3734,
+ "мот": 3735,
+ "конферен": 3736,
+ "лась": 3737,
+ "час": 3738,
+ "сторо": 3739,
+ "кого": 3740,
+ "ез": 3741,
+ "ней": 3742,
+ "ос": 3743,
+ "лись": 3744,
+ "разору": 3745,
+ "пере": 3746,
+ "сси": 3747,
+ "ными": 3748,
+ "проц": 3749,
+ "голо": 3750,
+ "чело": 3751,
+ "боле": 3752,
+ "челове": 3753,
+ "сер": 3754,
+ "пл": 3755,
+ "чет": 3756,
+ "стран": 3757,
+ "пя": 3758,
+ "был": 3759,
+ "кла": 3760,
+ "тов": 3761,
+ "жд": 3762,
+ "дела": 3763,
+ "ера": 3764,
+ "уже": 3765,
+ "совет": 3766,
+ "ген": 3767,
+ "безопасности": 3768,
+ "ца": 3769,
+ "седа": 3770,
+ "поз": 3771,
+ "ответ": 3772,
+ "проблем": 3773,
+ "нако": 3774,
+ "тем": 3775,
+ "доста": 3776,
+ "пы": 3777,
+ "ща": 3778,
+ "вой": 3779,
+ "сущест": 3780,
+ "необходимо": 3781,
+ "быть": 3782,
+ "может": 3783,
+ "дем": 3784,
+ "чтобы": 3785,
+ "ек": 3786,
+ "чер": 3787,
+ "усили": 3788,
+ "рес": 3789,
+ "руд": 3790,
+ "единенных": 3791,
+ "доб": 3792,
+ "дости": 3793,
+ "ствен": 3794,
+ "ядер": 3795,
+ "годня": 3796,
+ "каза": 3797,
+ "сегодня": 3798,
+ "сейчас": 3799,
+ "только": 3800,
+ "вод": 3801,
+ "есь": 3802,
+ "много": 3803,
+ "буду": 3804,
+ "ев": 3805,
+ "есть": 3806,
+ "три": 3807,
+ "общест": 3808,
+ "явл": 3809,
+ "высту": 3810,
+ "ред": 3811,
+ "счит": 3812,
+ "сит": 3813,
+ "делега": 3814,
+ "лож": 3815,
+ "этот": 3816,
+ "фор": 3817,
+ "клю": 3818,
+ "возмож": 3819,
+ "вания": 3820,
+ "бли": 3821,
+ "или": 3822,
+ "вз": 3823,
+ "наций": 3824,
+ "ского": 3825,
+ "приня": 3826,
+ "пла": 3827,
+ "оч": 3828,
+ "иться": 3829,
+ "сте": 3830,
+ "наши": 3831,
+ "которые": 3832,
+ "ар": 3833,
+ "имеет": 3834,
+ "сот": 3835,
+ "знач": 3836,
+ "перь": 3837,
+ "следу": 3838,
+ "ены": 3839,
+ "таки": 3840,
+ "объединенных": 3841,
+ "стро": 3842,
+ "теперь": 3843,
+ "бле": 3844,
+ "благодар": 3845,
+ "разв": 3846,
+ "ан": 3847,
+ "жива": 3848,
+ "очень": 3849,
+ "ят": 3850,
+ "без": 3851,
+ "обес": 3852,
+ "гро": 3853,
+ "лось": 3854,
+ "сы": 3855,
+ "организации": 3856,
+ "член": 3857,
+ "того": 3858,
+ "ональ": 3859,
+ "жда": 3860,
+ "всех": 3861,
+ "свя": 3862,
+ "более": 3863,
+ "сов": 3864,
+ "когда": 3865,
+ "вот": 3866,
+ "кре": 3867,
+ "кры": 3868,
+ "поэтому": 3869,
+ "воль": 3870,
+ "ой": 3871,
+ "генера": 3872,
+ "чем": 3873,
+ "лы": 3874,
+ "полити": 3875,
+ "вен": 3876,
+ "конференции": 3877,
+ "процес": 3878,
+ "бя": 3879,
+ "ите": 3880,
+ "отно": 3881,
+ "развити": 3882,
+ "аф": 3883,
+ "ющ": 3884,
+ "вно": 3885,
+ "мир": 3886,
+ "нии": 3887,
+ "кая": 3888,
+ "ас": 3889,
+ "ительно": 3890,
+ "вто": 3891,
+ "ением": 3892,
+ "генераль": 3893,
+ "прот": 3894,
+ "всем": 3895,
+ "самбле": 3896,
+ "ассамбле": 3897,
+ "ом": 3898,
+ "зд": 3899,
+ "смот": 3900,
+ "реги": 3901,
+ "чего": 3902,
+ "однако": 3903,
+ "усилия": 3904,
+ "действи": 3905,
+ "чно": 3906,
+ "уча": 3907,
+ "образ": 3908,
+ "вос": 3909,
+ "эта": 3910,
+ "перего": 3911,
+ "говор": 3912,
+ "вам": 3913,
+ "моло": 3914,
+ "время": 3915,
+ "дь": 3916,
+ "хотел": 3917,
+ "гру": 3918,
+ "заявл": 3919,
+ "предоста": 3920,
+ "поль": 3921,
+ "нее": 3922,
+ "резо": 3923,
+ "перегово": 3924,
+ "резолю": 3925,
+ "крет": 3926,
+ "поддерж": 3927,
+ "обеспе": 3928,
+ "него": 3929,
+ "представит": 3930,
+ "наде": 3931,
+ "кри": 3932,
+ "чь": 3933,
+ "проек": 3934,
+ "лет": 3935,
+ "други": 3936,
+ "_": 3937,
+ "،": 3938,
+ "؛": 3939,
+ "؟": 3940,
+ "ء": 3941,
+ "آ": 3942,
+ "أ": 3943,
+ "ؤ": 3944,
+ "إ": 3945,
+ "ئ": 3946,
+ "ا": 3947,
+ "ب": 3948,
+ "ة": 3949,
+ "ت": 3950,
+ "ث": 3951,
+ "ج": 3952,
+ "ح": 3953,
+ "خ": 3954,
+ "د": 3955,
+ "ذ": 3956,
+ "ر": 3957,
+ "ز": 3958,
+ "س": 3959,
+ "ش": 3960,
+ "ص": 3961,
+ "ض": 3962,
+ "ط": 3963,
+ "ظ": 3964,
+ "ع": 3965,
+ "غ": 3966,
+ "ـ": 3967,
+ "ف": 3968,
+ "ق": 3969,
+ "ك": 3970,
+ "ل": 3971,
+ "م": 3972,
+ "ن": 3973,
+ "ه": 3974,
+ "و": 3975,
+ "ى": 3976,
+ "ي": 3977,
+ "ً": 3978,
+ "ٌ": 3979,
+ "ٍ": 3980,
+ "َ": 3981,
+ "ُ": 3982,
+ "ِ": 3983,
+ "ّ": 3984,
+ "ْ": 3985,
+ "ٰ": 3986,
+ "چ": 3987,
+ "ڨ": 3988,
+ "ک": 3989,
+ "ھ": 3990,
+ "ی": 3991,
+ "ۖ": 3992,
+ "ۗ": 3993,
+ "ۘ": 3994,
+ "ۚ": 3995,
+ "ۛ": 3996,
+ "—": 3997,
+ "☭": 3998,
+ "ﺃ": 3999,
+ "ﻻ": 4000,
+ "ال": 4001,
+ "َا": 4002,
+ "وَ": 4003,
+ "َّ": 4004,
+ "ِي": 4005,
+ "أَ": 4006,
+ "لَ": 4007,
+ "نَ": 4008,
+ "الْ": 4009,
+ "هُ": 4010,
+ "ُو": 4011,
+ "ما": 4012,
+ "نْ": 4013,
+ "من": 4014,
+ "عَ": 4015,
+ "نا": 4016,
+ "لا": 4017,
+ "مَ": 4018,
+ "تَ": 4019,
+ "فَ": 4020,
+ "أن": 4021,
+ "لي": 4022,
+ "مِ": 4023,
+ "ان": 4024,
+ "في": 4025,
+ "رَ": 4026,
+ "يَ": 4027,
+ "هِ": 4028,
+ "مْ": 4029,
+ "قَ": 4030,
+ "بِ": 4031,
+ "لى": 4032,
+ "ين": 4033,
+ "إِ": 4034,
+ "لِ": 4035,
+ "وا": 4036,
+ "كَ": 4037,
+ "ها": 4038,
+ "ًا": 4039,
+ "مُ": 4040,
+ "ون": 4041,
+ "الم": 4042,
+ "بَ": 4043,
+ "يا": 4044,
+ "ذا": 4045,
+ "سا": 4046,
+ "الل": 4047,
+ "مي": 4048,
+ "يْ": 4049,
+ "را": 4050,
+ "ري": 4051,
+ "لك": 4052,
+ "مَا": 4053,
+ "نَّ": 4054,
+ "لم": 4055,
+ "إن": 4056,
+ "ست": 4057,
+ "وم": 4058,
+ "َّا": 4059,
+ "لَا": 4060,
+ "هم": 4061,
+ "ِّ": 4062,
+ "كُ": 4063,
+ "كان": 4064,
+ "سَ": 4065,
+ "با": 4066,
+ "دي": 4067,
+ "حَ": 4068,
+ "عْ": 4069,
+ "بي": 4070,
+ "الأ": 4071,
+ "ول": 4072,
+ "فِي": 4073,
+ "رِ": 4074,
+ "دا": 4075,
+ "مِنْ": 4076,
+ "ُونَ": 4077,
+ "وْ": 4078,
+ "هَا": 4079,
+ "ُّ": 4080,
+ "الس": 4081,
+ "الَ": 4082,
+ "ني": 4083,
+ "لْ": 4084,
+ "تُ": 4085,
+ "هل": 4086,
+ "رة": 4087,
+ "دَ": 4088,
+ "سْ": 4089,
+ "تِ": 4090,
+ "نَا": 4091,
+ "رْ": 4092,
+ "اللَّ": 4093,
+ "سامي": 4094,
+ "كن": 4095,
+ "كل": 4096,
+ "هَ": 4097,
+ "عَلَ": 4098,
+ "على": 4099,
+ "مع": 4100,
+ "إلى": 4101,
+ "قد": 4102,
+ "الر": 4103,
+ "ُوا": 4104,
+ "ير": 4105,
+ "عن": 4106,
+ "يُ": 4107,
+ "نِ": 4108,
+ "بْ": 4109,
+ "الح": 4110,
+ "هُمْ": 4111,
+ "قا": 4112,
+ "ذه": 4113,
+ "الت": 4114,
+ "ِينَ": 4115,
+ "جَ": 4116,
+ "هذا": 4117,
+ "عد": 4118,
+ "الع": 4119,
+ "دْ": 4120,
+ "قَالَ": 4121,
+ "رُ": 4122,
+ "يم": 4123,
+ "ية": 4124,
+ "نُ": 4125,
+ "خَ": 4126,
+ "رب": 4127,
+ "الك": 4128,
+ "وَا": 4129,
+ "أنا": 4130,
+ "ةِ": 4131,
+ "الن": 4132,
+ "حد": 4133,
+ "عِ": 4134,
+ "تا": 4135,
+ "هو": 4136,
+ "فا": 4137,
+ "عا": 4138,
+ "الش": 4139,
+ "لُ": 4140,
+ "يت": 4141,
+ "ذَا": 4142,
+ "يع": 4143,
+ "الذ": 4144,
+ "حْ": 4145,
+ "الص": 4146,
+ "إِنَّ": 4147,
+ "جا": 4148,
+ "علي": 4149,
+ "كَا": 4150,
+ "بُ": 4151,
+ "تع": 4152,
+ "وق": 4153,
+ "مل": 4154,
+ "لَّ": 4155,
+ "يد": 4156,
+ "أخ": 4157,
+ "رف": 4158,
+ "تي": 4159,
+ "الِ": 4160,
+ "ّا": 4161,
+ "ذلك": 4162,
+ "أَنْ": 4163,
+ "سِ": 4164,
+ "توم": 4165,
+ "مر": 4166,
+ "مَنْ": 4167,
+ "بل": 4168,
+ "الق": 4169,
+ "الله": 4170,
+ "ِيَ": 4171,
+ "كم": 4172,
+ "ذَ": 4173,
+ "عل": 4174,
+ "حب": 4175,
+ "سي": 4176,
+ "عُ": 4177,
+ "الج": 4178,
+ "الد": 4179,
+ "شَ": 4180,
+ "تك": 4181,
+ "فْ": 4182,
+ "صَ": 4183,
+ "لل": 4184,
+ "دِ": 4185,
+ "بر": 4186,
+ "فِ": 4187,
+ "ته": 4188,
+ "أع": 4189,
+ "تْ": 4190,
+ "قْ": 4191,
+ "الْأَ": 4192,
+ "ئِ": 4193,
+ "عَنْ": 4194,
+ "ور": 4195,
+ "حا": 4196,
+ "الَّ": 4197,
+ "مت": 4198,
+ "فر": 4199,
+ "دُ": 4200,
+ "هنا": 4201,
+ "وَأَ": 4202,
+ "تب": 4203,
+ "ةُ": 4204,
+ "أي": 4205,
+ "سب": 4206,
+ "ريد": 4207,
+ "وج": 4208,
+ "كُمْ": 4209,
+ "حِ": 4210,
+ "كْ": 4211,
+ "در": 4212,
+ "َاء": 4213,
+ "هذه": 4214,
+ "الط": 4215,
+ "الْمُ": 4216,
+ "دة": 4217,
+ "قل": 4218,
+ "غَ": 4219,
+ "يوم": 4220,
+ "الَّذ": 4221,
+ "كر": 4222,
+ "تر": 4223,
+ "كِ": 4224,
+ "كي": 4225,
+ "عَلَى": 4226,
+ "رَب": 4227,
+ "عة": 4228,
+ "قُ": 4229,
+ "جْ": 4230,
+ "فض": 4231,
+ "لة": 4232,
+ "هْ": 4233,
+ "رَا": 4234,
+ "وَلَ": 4235,
+ "الْمَ": 4236,
+ "أَنَّ": 4237,
+ "يَا": 4238,
+ "أُ": 4239,
+ "شي": 4240,
+ "اللَّهُ": 4241,
+ "لَى": 4242,
+ "قِ": 4243,
+ "أت": 4244,
+ "عَلَيْ": 4245,
+ "اللَّهِ": 4246,
+ "الب": 4247,
+ "ضَ": 4248,
+ "ةً": 4249,
+ "قي": 4250,
+ "ار": 4251,
+ "بد": 4252,
+ "خْ": 4253,
+ "سْتَ": 4254,
+ "طَ": 4255,
+ "قَدْ": 4256,
+ "ذهب": 4257,
+ "أم": 4258,
+ "ماذا": 4259,
+ "وَإِ": 4260,
+ "ةٌ": 4261,
+ "ونَ": 4262,
+ "ليلى": 4263,
+ "ولا": 4264,
+ "حُ": 4265,
+ "هي": 4266,
+ "صل": 4267,
+ "الخ": 4268,
+ "ود": 4269,
+ "ليس": 4270,
+ "لدي": 4271,
+ "قال": 4272,
+ "كَانَ": 4273,
+ "مَّ": 4274,
+ "حي": 4275,
+ "تم": 4276,
+ "لن": 4277,
+ "وَلَا": 4278,
+ "بع": 4279,
+ "يمكن": 4280,
+ "سُ": 4281,
+ "ةَ": 4282,
+ "حت": 4283,
+ "رًا": 4284,
+ "كا": 4285,
+ "شا": 4286,
+ "هِمْ": 4287,
+ "لَهُ": 4288,
+ "زَ": 4289,
+ "داً": 4290,
+ "مس": 4291,
+ "كث": 4292,
+ "الْعَ": 4293,
+ "جِ": 4294,
+ "صْ": 4295,
+ "فَا": 4296,
+ "له": 4297,
+ "وي": 4298,
+ "عَا": 4299,
+ "هُوَ": 4300,
+ "بِي": 4301,
+ "بَا": 4302,
+ "أس": 4303,
+ "ثَ": 4304,
+ "لِي": 4305,
+ "رض": 4306,
+ "الرَّ": 4307,
+ "لِكَ": 4308,
+ "تَّ": 4309,
+ "فُ": 4310,
+ "قة": 4311,
+ "فعل": 4312,
+ "مِن": 4313,
+ "الآ": 4314,
+ "ثُ": 4315,
+ "سم": 4316,
+ "مَّا": 4317,
+ "بِهِ": 4318,
+ "تق": 4319,
+ "خر": 4320,
+ "لقد": 4321,
+ "خل": 4322,
+ "شر": 4323,
+ "أنت": 4324,
+ "لَّا": 4325,
+ "سن": 4326,
+ "السَّ": 4327,
+ "الذي": 4328,
+ "سَا": 4329,
+ "وما": 4330,
+ "زل": 4331,
+ "وب": 4332,
+ "أْ": 4333,
+ "إذا": 4334,
+ "رِي": 4335,
+ "حة": 4336,
+ "نِي": 4337,
+ "الْحَ": 4338,
+ "وَقَالَ": 4339,
+ "به": 4340,
+ "ةٍ": 4341,
+ "سأ": 4342,
+ "رٌ": 4343,
+ "بال": 4344,
+ "مة": 4345,
+ "شْ": 4346,
+ "وت": 4347,
+ "عند": 4348,
+ "فس": 4349,
+ "بَعْ": 4350,
+ "هر": 4351,
+ "قط": 4352,
+ "أح": 4353,
+ "إنه": 4354,
+ "وع": 4355,
+ "فت": 4356,
+ "غا": 4357,
+ "هناك": 4358,
+ "بت": 4359,
+ "مِنَ": 4360,
+ "سر": 4361,
+ "ذَلِكَ": 4362,
+ "رس": 4363,
+ "حدث": 4364,
+ "غْ": 4365,
+ "ِّي": 4366,
+ "الإ": 4367,
+ "وَيَ": 4368,
+ "جل": 4369,
+ "است": 4370,
+ "قِي": 4371,
+ "عب": 4372,
+ "وس": 4373,
+ "يش": 4374,
+ "الَّذِينَ": 4375,
+ "تاب": 4376,
+ "دِي": 4377,
+ "جب": 4378,
+ "كون": 4379,
+ "بن": 4380,
+ "الث": 4381,
+ "لَيْ": 4382,
+ "بعد": 4383,
+ "وَالْ": 4384,
+ "فَأَ": 4385,
+ "عم": 4386,
+ "هُم": 4387,
+ "تن": 4388,
+ "ذْ": 4389,
+ "أص": 4390,
+ "أين": 4391,
+ "رَبِّ": 4392,
+ "الذين": 4393,
+ "إِن": 4394,
+ "بين": 4395,
+ "جُ": 4396,
+ "عَلَيْهِ": 4397,
+ "حَا": 4398,
+ "لو": 4399,
+ "ستط": 4400,
+ "ظر": 4401,
+ "لَمْ": 4402,
+ "ءِ": 4403,
+ "كُل": 4404,
+ "طل": 4405,
+ "تَا": 4406,
+ "ضُ": 4407,
+ "كنت": 4408,
+ "لًا": 4409,
+ "مٌ": 4410,
+ "قبل": 4411,
+ "ــ": 4412,
+ "ذِ": 4413,
+ "قَوْ": 4414,
+ "صِ": 4415,
+ "مًا": 4416,
+ "كانت": 4417,
+ "صا": 4418,
+ "يق": 4419,
+ "الف": 4420,
+ "النا": 4421,
+ "مٍ": 4422,
+ "إِنْ": 4423,
+ "النَّ": 4424,
+ "جد": 4425,
+ "وَمَا": 4426,
+ "تت": 4427,
+ "بح": 4428,
+ "مكان": 4429,
+ "كيف": 4430,
+ "ّة": 4431,
+ "الا": 4432,
+ "جَا": 4433,
+ "أو": 4434,
+ "ساعد": 4435,
+ "ضِ": 4436,
+ "إلا": 4437,
+ "راً": 4438,
+ "قَا": 4439,
+ "رأ": 4440,
+ "عت": 4441,
+ "أحد": 4442,
+ "هد": 4443,
+ "ضا": 4444,
+ "طر": 4445,
+ "أق": 4446,
+ "ماء": 4447,
+ "دَّ": 4448,
+ "البا": 4449,
+ "مُو": 4450,
+ "أَوْ": 4451,
+ "طا": 4452,
+ "قُو": 4453,
+ "خِ": 4454,
+ "تل": 4455,
+ "ستطيع": 4456,
+ "دَا": 4457,
+ "النَّا": 4458,
+ "إلَى": 4459,
+ "وَتَ": 4460,
+ "هَذَا": 4461,
+ "بة": 4462,
+ "عليك": 4463,
+ "جر": 4464,
+ "المن": 4465,
+ "زا": 4466,
+ "رٍ": 4467,
+ "دع": 4468,
+ "ًّا": 4469,
+ "سة": 4470,
+ "ثُمَّ": 4471,
+ "شيء": 4472,
+ "الغ": 4473,
+ "تح": 4474,
+ "رُونَ": 4475,
+ "اليوم": 4476,
+ "مِي": 4477,
+ "نُوا": 4478,
+ "أر": 4479,
+ "تُمْ": 4480,
+ "عر": 4481,
+ "يف": 4482,
+ "أب": 4483,
+ "دًا": 4484,
+ "صَا": 4485,
+ "التَّ": 4486,
+ "أريد": 4487,
+ "الز": 4488,
+ "يَوْ": 4489,
+ "إلي": 4490,
+ "جي": 4491,
+ "يَعْ": 4492,
+ "فضل": 4493,
+ "الإن": 4494,
+ "أنه": 4495,
+ "1": 4496,
+ "2": 4497,
+ "3": 4498,
+ "4": 4499,
+ "5": 4500,
+ "·": 4501,
+ "×": 4502,
+ "̃": 4503,
+ "̌": 4504,
+ "ε": 4505,
+ "λ": 4506,
+ "μ": 4507,
+ "•": 4508,
+ "‧": 4509,
+ "─": 4510,
+ "□": 4511,
+ "、": 4512,
+ "。": 4513,
+ "〈": 4514,
+ "〉": 4515,
+ "《": 4516,
+ "》": 4517,
+ "「": 4518,
+ "」": 4519,
+ "『": 4520,
+ "』": 4521,
+ "ア": 4522,
+ "オ": 4523,
+ "カ": 4524,
+ "チ": 4525,
+ "ド": 4526,
+ "ベ": 4527,
+ "ャ": 4528,
+ "ヤ": 4529,
+ "ン": 4530,
+ "・": 4531,
+ "ー": 4532,
+ "ㄟ": 4533,
+ "!": 4534,
+ "(": 4535,
+ ")": 4536,
+ ",": 4537,
+ "-": 4538,
+ "/": 4539,
+ ":": 4540,
+ ";": 4541,
+ "?": 4542,
+ "p": 4543,
+ "i4": 4544,
+ "zh": 4545,
+ "i2": 4546,
+ "ng1": 4547,
+ "u4": 4548,
+ "i1": 4549,
+ "ng2": 4550,
+ "u3": 4551,
+ "de5": 4552,
+ "e4": 4553,
+ "i3": 4554,
+ "ng4": 4555,
+ "an4": 4556,
+ "shi4": 4557,
+ "an2": 4558,
+ "u2": 4559,
+ "u1": 4560,
+ "ng3": 4561,
+ "a1": 4562,
+ "an1": 4563,
+ "e2": 4564,
+ "a4": 4565,
+ "ei4": 4566,
+ "ong1": 4567,
+ "ai4": 4568,
+ "ao4": 4569,
+ "ang1": 4570,
+ "an3": 4571,
+ "wei4": 4572,
+ "uo2": 4573,
+ "n1": 4574,
+ "en2": 4575,
+ "ao3": 4576,
+ "e1": 4577,
+ "qi": 4578,
+ "eng2": 4579,
+ "zho": 4580,
+ "ang3": 4581,
+ "ang4": 4582,
+ "ang2": 4583,
+ "uo4": 4584,
+ "ge4": 4585,
+ "yi1": 4586,
+ "guo2": 4587,
+ "a3": 4588,
+ "he2": 4589,
+ "e3": 4590,
+ "yi2": 4591,
+ "di4": 4592,
+ "zhong1": 4593,
+ "bu4": 4594,
+ "ai2": 4595,
+ "n2": 4596,
+ "zai4": 4597,
+ "shi2": 4598,
+ "eng1": 4599,
+ "ren2": 4600,
+ "ong2": 4601,
+ "xian4": 4602,
+ "xu": 4603,
+ "n4": 4604,
+ "li4": 4605,
+ "en4": 4606,
+ "yu2": 4607,
+ "ei2": 4608,
+ "yi2ge4": 4609,
+ "ou4": 4610,
+ "ei3": 4611,
+ "ui4": 4612,
+ "a2": 4613,
+ "you3": 4614,
+ "ao1": 4615,
+ "da4": 4616,
+ "cheng2": 4617,
+ "en1": 4618,
+ "eng4": 4619,
+ "yi4": 4620,
+ "si1": 4621,
+ "zhi4": 4622,
+ "jia1": 4623,
+ "yuan2": 4624,
+ "ta1": 4625,
+ "de5yi2ge4": 4626,
+ "ke1": 4627,
+ "shu3": 4628,
+ "xi1": 4629,
+ "ji2": 4630,
+ "ao2": 4631,
+ "ou3": 4632,
+ "ong4": 4633,
+ "xia4": 4634,
+ "ai1": 4635,
+ "gong1": 4636,
+ "zhi1": 4637,
+ "en3": 4638,
+ "wei2": 4639,
+ "xue2": 4640,
+ "qu1": 4641,
+ "zhou1": 4642,
+ "er3": 4643,
+ "ming2": 4644,
+ "zhong3": 4645,
+ "li3": 4646,
+ "wu4": 4647,
+ "yi3": 4648,
+ "uo1": 4649,
+ "e5": 4650,
+ "ji4": 4651,
+ "xing2": 4652,
+ "jian4": 4653,
+ "hua4": 4654,
+ "yu3": 4655,
+ "uo3": 4656,
+ "ji1": 4657,
+ "ai3": 4658,
+ "zuo4": 4659,
+ "hou4": 4660,
+ "hui4": 4661,
+ "ei1": 4662,
+ "nian2": 4663,
+ "qi2": 4664,
+ "dao4": 4665,
+ "sheng1": 4666,
+ "de2": 4667,
+ "dai4": 4668,
+ "uan2": 4669,
+ "zhe4": 4670,
+ "zheng4": 4671,
+ "ben3": 4672,
+ "shang4": 4673,
+ "zhu3": 4674,
+ "bei4": 4675,
+ "ye4": 4676,
+ "chu1": 4677,
+ "zhan4": 4678,
+ "le5": 4679,
+ "lai2": 4680,
+ "shi3": 4681,
+ "nan2": 4682,
+ "ren4": 4683,
+ "you2": 4684,
+ "ke4": 4685,
+ "ba1": 4686,
+ "fu4": 4687,
+ "dui4": 4688,
+ "ya4": 4689,
+ "mei3": 4690,
+ "zi4": 4691,
+ "xin1": 4692,
+ "jing1": 4693,
+ "zhu": 4694,
+ "n3": 4695,
+ "yong4": 4696,
+ "mu4": 4697,
+ "jiao4": 4698,
+ "ye3": 4699,
+ "jin4": 4700,
+ "bian4": 4701,
+ "lu4": 4702,
+ "qi1": 4703,
+ "she4": 4704,
+ "xiang1": 4705,
+ "ong3": 4706,
+ "shu4": 4707,
+ "dong4": 4708,
+ "suo3": 4709,
+ "guan1": 4710,
+ "san1": 4711,
+ "te4": 4712,
+ "duo1": 4713,
+ "fu2": 4714,
+ "min2": 4715,
+ "la1": 4716,
+ "zhi2": 4717,
+ "zhen4": 4718,
+ "ou1": 4719,
+ "wu3": 4720,
+ "ma3": 4721,
+ "i5": 4722,
+ "zi5": 4723,
+ "ju4": 4724,
+ "er4": 4725,
+ "yao4": 4726,
+ "xia4de5yi2ge4": 4727,
+ "si4": 4728,
+ "tu2": 4729,
+ "shan1": 4730,
+ "zui4": 4731,
+ "yin1": 4732,
+ "er2": 4733,
+ "tong2": 4734,
+ "dong1": 4735,
+ "yu4": 4736,
+ "yan2": 4737,
+ "qian2": 4738,
+ "shu3xia4de5yi2ge4": 4739,
+ "jun1": 4740,
+ "ke3": 4741,
+ "wen2": 4742,
+ "fa3": 4743,
+ "luo2": 4744,
+ "zhu4": 4745,
+ "xi4": 4746,
+ "kou3": 4747,
+ "bei3": 4748,
+ "jian1": 4749,
+ "fa1": 4750,
+ "dian4": 4751,
+ "jiang1": 4752,
+ "wei4yu2": 4753,
+ "xiang4": 4754,
+ "zhi3": 4755,
+ "eng3": 4756,
+ "fang1": 4757,
+ "lan2": 4758,
+ "shu": 4759,
+ "ri4": 4760,
+ "lian2": 4761,
+ "shou3": 4762,
+ "qiu2": 4763,
+ "jin1": 4764,
+ "huo4": 4765,
+ "shu3xia4de5yi2ge4zhong3": 4766,
+ "fen1": 4767,
+ "nei4": 4768,
+ "gai1": 4769,
+ "mei3guo2": 4770,
+ "un2": 4771,
+ "ge2": 4772,
+ "bao3": 4773,
+ "qing1": 4774,
+ "gao1": 4775,
+ "tai2": 4776,
+ "xiao3": 4777,
+ "jie2": 4778,
+ "tian1": 4779,
+ "chang2": 4780,
+ "quan2": 4781,
+ "lie4": 4782,
+ "hai3": 4783,
+ "fei1": 4784,
+ "ti3": 4785,
+ "jue2": 4786,
+ "ou2": 4787,
+ "ci3": 4788,
+ "zu2": 4789,
+ "ni2": 4790,
+ "biao3": 4791,
+ "zhong1guo2": 4792,
+ "du4": 4793,
+ "yue4": 4794,
+ "xing4": 4795,
+ "sheng4": 4796,
+ "che1": 4797,
+ "dan1": 4798,
+ "jie1": 4799,
+ "lin2": 4800,
+ "ping2": 4801,
+ "fu3": 4802,
+ "gu3": 4803,
+ "jie4": 4804,
+ "v3": 4805,
+ "sheng3": 4806,
+ "na4": 4807,
+ "yuan4": 4808,
+ "zhang3": 4809,
+ "guan3": 4810,
+ "dao3": 4811,
+ "zu3": 4812,
+ "ding4": 4813,
+ "dian3": 4814,
+ "ceng2": 4815,
+ "ren2kou3": 4816,
+ "tai4": 4817,
+ "tong1": 4818,
+ "guo4": 4819,
+ "neng2": 4820,
+ "chang3": 4821,
+ "hua2": 4822,
+ "liu2": 4823,
+ "ying1": 4824,
+ "xiao4": 4825,
+ "ci4": 4826,
+ "bian4hua4": 4827,
+ "liang3": 4828,
+ "gong4": 4829,
+ "zhong4": 4830,
+ "de5yi1": 4831,
+ "se4": 4832,
+ "kai1": 4833,
+ "wang2": 4834,
+ "jiu4": 4835,
+ "shi1": 4836,
+ "shou4": 4837,
+ "mei2": 4838,
+ "feng1": 4839,
+ "ze2": 4840,
+ "tu2shi4": 4841,
+ "ti2": 4842,
+ "qi4": 4843,
+ "jiu3": 4844,
+ "shen1": 4845,
+ "zhe3": 4846,
+ "ren2kou3bian4hua4": 4847,
+ "ren2kou3bian4hua4tu2shi4": 4848,
+ "di4qu1": 4849,
+ "yang2": 4850,
+ "men5": 4851,
+ "long2": 4852,
+ "bing4": 4853,
+ "chan3": 4854,
+ "zhu1": 4855,
+ "wei3": 4856,
+ "wai4": 4857,
+ "xing1": 4858,
+ "bo1": 4859,
+ "bi3": 4860,
+ "tang2": 4861,
+ "hua1": 4862,
+ "bo2": 4863,
+ "shui3": 4864,
+ "shu1": 4865,
+ "dou1": 4866,
+ "sai4": 4867,
+ "chao2": 4868,
+ "bi4": 4869,
+ "ling2": 4870,
+ "lei4": 4871,
+ "da4xue2": 4872,
+ "fen4": 4873,
+ "shu3de5": 4874,
+ "mu3": 4875,
+ "jiao1": 4876,
+ "dang1": 4877,
+ "cheng1": 4878,
+ "tong3": 4879,
+ "nv3": 4880,
+ "qi3": 4881,
+ "yan3": 4882,
+ "mian4": 4883,
+ "luo4": 4884,
+ "jing4": 4885,
+ "ge1": 4886,
+ "ru4": 4887,
+ "dan4": 4888,
+ "ri4ben3": 4889,
+ "pu3": 4890,
+ "yun4": 4891,
+ "huang2": 4892,
+ "wo3": 4893,
+ "lv": 4894,
+ "hai2": 4895,
+ "shi4yi1": 4896,
+ "xie1": 4897,
+ "ying3": 4898,
+ "wu2": 4899,
+ "shen2": 4900,
+ "wang3": 4901,
+ "guang3": 4902,
+ "liu4": 4903,
+ "su4": 4904,
+ "shi4zhen4": 4905,
+ "can1": 4906,
+ "cao3": 4907,
+ "xia2": 4908,
+ "ka3": 4909,
+ "da2": 4910,
+ "hu4": 4911,
+ "ban4": 4912,
+ "dang3": 4913,
+ "hu2": 4914,
+ "zong3": 4915,
+ "deng3": 4916,
+ "de5yi2ge4shi4zhen4": 4917,
+ "chuan2": 4918,
+ "mo4": 4919,
+ "zhang1": 4920,
+ "ban1": 4921,
+ "mo2": 4922,
+ "cha2": 4923,
+ "ce4": 4924,
+ "zhu3yao4": 4925,
+ "tou2": 4926,
+ "ju2": 4927,
+ "shi4wei4yu2": 4928,
+ "sa4": 4929,
+ "un1": 4930,
+ "ke3yi3": 4931,
+ "du1": 4932,
+ "han4": 4933,
+ "liang4": 4934,
+ "sha1": 4935,
+ "jia3": 4936,
+ "zi1": 4937,
+ "lv4": 4938,
+ "fu1": 4939,
+ "xian1": 4940,
+ "xu4": 4941,
+ "guang1": 4942,
+ "meng2": 4943,
+ "bao4": 4944,
+ "you4": 4945,
+ "rong2": 4946,
+ "zhi1yi1": 4947,
+ "wei1": 4948,
+ "mao2": 4949,
+ "guo2jia1": 4950,
+ "cong2": 4951,
+ "gou4": 4952,
+ "tie3": 4953,
+ "zhen1": 4954,
+ "du2": 4955,
+ "bian1": 4956,
+ "ci2": 4957,
+ "qu3": 4958,
+ "fan4": 4959,
+ "xiang3": 4960,
+ "men2": 4961,
+ "ju1": 4962,
+ "hong2": 4963,
+ "zi3": 4964,
+ "ta1men5": 4965,
+ "ji3": 4966,
+ "zong1": 4967,
+ "zhou1de5yi2ge4shi4zhen4": 4968,
+ "tuan2": 4969,
+ "jing3": 4970,
+ "gong1si1": 4971,
+ "xie4": 4972,
+ "li2": 4973,
+ "li4shi3": 4974,
+ "bao1": 4975,
+ "gang3": 4976,
+ "gui1": 4977,
+ "zheng1": 4978,
+ "zhi2wu4": 4979,
+ "ta1de5": 4980,
+ "pin3": 4981,
+ "zhuan1": 4982,
+ "chong2": 4983,
+ "shi3yong4": 4984,
+ "wa3": 4985,
+ "shuo1": 4986,
+ "chuan1": 4987,
+ "lei2": 4988,
+ "wan1": 4989,
+ "huo2": 4990,
+ "su1": 4991,
+ "zao3": 4992,
+ "gai3": 4993,
+ "qu4": 4994,
+ "gu4": 4995,
+ "xi2": 4996,
+ "hang2": 4997,
+ "ying4": 4998,
+ "cun1": 4999,
+ "gen1": 5000,
+ "ying2": 5001,
+ "ting2": 5002,
+ "cheng2shi4": 5003,
+ "jiang3": 5004,
+ "ling3": 5005,
+ "lun2": 5006,
+ "bu4fen4": 5007,
+ "deng1": 5008,
+ "xuan3": 5009,
+ "dong4wu4": 5010,
+ "de2guo2": 5011,
+ "xian3": 5012,
+ "fan3": 5013,
+ "zhe5": 5014,
+ "han2": 5015,
+ "hao4": 5016,
+ "mi4": 5017,
+ "ran2": 5018,
+ "qin1": 5019,
+ "tiao2": 5020,
+ "zhan3": 5021,
+ "[ar]": 5022,
+ "[zh-cn]": 5023,
+ "¡": 5024,
+ "é": 5025,
+ "shi": 5026,
+ "tsu": 5027,
+ "teki": 5028,
+ "nai": 5029,
+ "aru": 5030,
+ "uu": 5031,
+ "kai": 5032,
+ "shite": 5033,
+ "mono": 5034,
+ "koto": 5035,
+ "kara": 5036,
+ "shita": 5037,
+ "suru": 5038,
+ "masu": 5039,
+ "tai": 5040,
+ "ware": 5041,
+ "shin": 5042,
+ "oku": 5043,
+ "yuu": 5044,
+ "iru": 5045,
+ "jiko": 5046,
+ "desu": 5047,
+ "rare": 5048,
+ "shou": 5049,
+ "sha": 5050,
+ "sekai": 5051,
+ "kyou": 5052,
+ "mashita": 5053,
+ "nara": 5054,
+ "kei": 5055,
+ "ita": 5056,
+ "ari": 5057,
+ "itsu": 5058,
+ "kono": 5059,
+ "naka": 5060,
+ "chou": 5061,
+ "sore": 5062,
+ "naru": 5063,
+ "gaku": 5064,
+ "reba": 5065,
+ "hito": 5066,
+ "sai": 5067,
+ "nan": 5068,
+ "dai": 5069,
+ "tsuku": 5070,
+ "shiki": 5071,
+ "sare": 5072,
+ "naku": 5073,
+ "jun": 5074,
+ "kaku": 5075,
+ "zai": 5076,
+ "wata": 5077,
+ "shuu": 5078,
+ "ii": 5079,
+ "kare": 5080,
+ "shii": 5081,
+ "made": 5082,
+ "sho": 5083,
+ "kereba": 5084,
+ "shika": 5085,
+ "ichi": 5086,
+ "deki": 5087,
+ "nin": 5088,
+ "wareware": 5089,
+ "nakereba": 5090,
+ "oite": 5091,
+ "yaku": 5092,
+ "mujun": 5093,
+ "yoku": 5094,
+ "butsu": 5095,
+ "omo": 5096,
+ "gae": 5097,
+ "naranai": 5098,
+ "tachi": 5099,
+ "chuu": 5100,
+ "kangae": 5101,
+ "toki": 5102,
+ "koro": 5103,
+ "mujunteki": 5104,
+ "naga": 5105,
+ "jin": 5106,
+ "shima": 5107,
+ "iku": 5108,
+ "imasu": 5109,
+ "hon": 5110,
+ "kae": 5111,
+ "kore": 5112,
+ "kita": 5113,
+ "datta": 5114,
+ "jitsu": 5115,
+ "mae": 5116,
+ "toku": 5117,
+ "douitsu": 5118,
+ "ritsu": 5119,
+ "kyuu": 5120,
+ "hyou": 5121,
+ "rareta": 5122,
+ "keisei": 5123,
+ "kkan": 5124,
+ "rareru": 5125,
+ "mou": 5126,
+ "doko": 5127,
+ "ryou": 5128,
+ "dake": 5129,
+ "nakatta": 5130,
+ "soko": 5131,
+ "tabe": 5132,
+ "hana": 5133,
+ "fuku": 5134,
+ "yasu": 5135,
+ "wataku": 5136,
+ "yama": 5137,
+ "kyo": 5138,
+ "genzai": 5139,
+ "boku": 5140,
+ "ata": 5141,
+ "kawa": 5142,
+ "masen": 5143,
+ "juu": 5144,
+ "natte": 5145,
+ "watakushi": 5146,
+ "yotte": 5147,
+ "hai": 5148,
+ "jishin": 5149,
+ "rete": 5150,
+ "oka": 5151,
+ "kagaku": 5152,
+ "natta": 5153,
+ "karu": 5154,
+ "nari": 5155,
+ "mata": 5156,
+ "kuru": 5157,
+ "gai": 5158,
+ "kari": 5159,
+ "shakai": 5160,
+ "koui": 5161,
+ "yori": 5162,
+ "setsu": 5163,
+ "reru": 5164,
+ "tokoro": 5165,
+ "jutsu": 5166,
+ "saku": 5167,
+ "ttai": 5168,
+ "ningen": 5169,
+ "tame": 5170,
+ "kankyou": 5171,
+ "ooku": 5172,
+ "watashi": 5173,
+ "tsukuru": 5174,
+ "sugi": 5175,
+ "jibun": 5176,
+ "shitsu": 5177,
+ "keru": 5178,
+ "kishi": 5179,
+ "shikashi": 5180,
+ "moto": 5181,
+ "mari": 5182,
+ "itte": 5183,
+ "deshita": 5184,
+ "nde": 5185,
+ "arimasu": 5186,
+ "koe": 5187,
+ "zettai": 5188,
+ "kkanteki": 5189,
+ "rekishi": 5190,
+ "dekiru": 5191,
+ "tsuka": 5192,
+ "itta": 5193,
+ "kobutsu": 5194,
+ "miru": 5195,
+ "shoku": 5196,
+ "shimasu": 5197,
+ "gijutsu": 5198,
+ "gyou": 5199,
+ "joushiki": 5200,
+ "atta": 5201,
+ "hodo": 5202,
+ "koko": 5203,
+ "tsukurareta": 5204,
+ "zoku": 5205,
+ "hitei": 5206,
+ "koku": 5207,
+ "rekishiteki": 5208,
+ "kete": 5209,
+ "kako": 5210,
+ "nagara": 5211,
+ "kakaru": 5212,
+ "shutai": 5213,
+ "haji": 5214,
+ "taku": 5215,
+ "douitsuteki": 5216,
+ "mete": 5217,
+ "tsuu": 5218,
+ "sarete": 5219,
+ "genjitsu": 5220,
+ "bai": 5221,
+ "nawa": 5222,
+ "jikan": 5223,
+ "waru": 5224,
+ "rt": 5225,
+ "atsu": 5226,
+ "soku": 5227,
+ "kouiteki": 5228,
+ "kata": 5229,
+ "tetsu": 5230,
+ "gawa": 5231,
+ "kedo": 5232,
+ "reta": 5233,
+ "sayou": 5234,
+ "tteru": 5235,
+ "tori": 5236,
+ "kimi": 5237,
+ "mura": 5238,
+ "sareru": 5239,
+ "machi": 5240,
+ "kya": 5241,
+ "osa": 5242,
+ "konna": 5243,
+ "aku": 5244,
+ "sareta": 5245,
+ "ipp": 5246,
+ "shiku": 5247,
+ "uchi": 5248,
+ "hitotsu": 5249,
+ "hatara": 5250,
+ "tachiba": 5251,
+ "shiro": 5252,
+ "katachi": 5253,
+ "tomo": 5254,
+ "ete": 5255,
+ "meru": 5256,
+ "nichi": 5257,
+ "dare": 5258,
+ "katta": 5259,
+ "eru": 5260,
+ "suki": 5261,
+ "ooki": 5262,
+ "maru": 5263,
+ "moku": 5264,
+ "oko": 5265,
+ "kangaerareru": 5266,
+ "oto": 5267,
+ "tanni": 5268,
+ "tada": 5269,
+ "taiteki": 5270,
+ "motte": 5271,
+ "kinou": 5272,
+ "shinai": 5273,
+ "kki": 5274,
+ "tari": 5275,
+ "ranai": 5276,
+ "kkou": 5277,
+ "mirai": 5278,
+ "ppon": 5279,
+ "goto": 5280,
+ "hitsu": 5281,
+ "teru": 5282,
+ "mochi": 5283,
+ "katsu": 5284,
+ "nyuu": 5285,
+ "zuka": 5286,
+ "tsuite": 5287,
+ "nomi": 5288,
+ "sugu": 5289,
+ "kuda": 5290,
+ "tetsugaku": 5291,
+ "ika": 5292,
+ "ronri": 5293,
+ "oki": 5294,
+ "nippon": 5295,
+ "shimashita": 5296,
+ "chishiki": 5297,
+ "chokkanteki": 5298,
+ "suko": 5299,
+ "kuu": 5300,
+ "arou": 5301,
+ "katte": 5302,
+ "kuri": 5303,
+ "inai": 5304,
+ "hyougen": 5305,
+ "ishiki": 5306,
+ "doku": 5307,
+ "atte": 5308,
+ "atara": 5309,
+ "wari": 5310,
+ "kao": 5311,
+ "seisan": 5312,
+ "hanashi": 5313,
+ "kake": 5314,
+ "naji": 5315,
+ "sunawa": 5316,
+ "sunawachi": 5317,
+ "ugo": 5318,
+ "suu": 5319,
+ "bara": 5320,
+ "hiro": 5321,
+ "iwa": 5322,
+ "betsu": 5323,
+ "yoi": 5324,
+ "seru": 5325,
+ "shiteru": 5326,
+ "rarete": 5327,
+ "toshi": 5328,
+ "seki": 5329,
+ "tairitsu": 5330,
+ "wakara": 5331,
+ "tokyo": 5332,
+ "kka": 5333,
+ "kyoku": 5334,
+ "iro": 5335,
+ "mite": 5336,
+ "saki": 5337,
+ "kanji": 5338,
+ "mita": 5339,
+ "sube": 5340,
+ "ryoku": 5341,
+ "matta": 5342,
+ "kudasai": 5343,
+ "omoi": 5344,
+ "wareru": 5345,
+ "hitsuyou": 5346,
+ "kashi": 5347,
+ "renai": 5348,
+ "kankei": 5349,
+ "gatte": 5350,
+ "ochi": 5351,
+ "motsu": 5352,
+ "sonzai": 5353,
+ "taishite": 5354,
+ "ame": 5355,
+ "seimei": 5356,
+ "kano": 5357,
+ "giri": 5358,
+ "kangaeru": 5359,
+ "yue": 5360,
+ "asa": 5361,
+ "onaji": 5362,
+ "yoru": 5363,
+ "niku": 5364,
+ "osaka": 5365,
+ "sukoshi": 5366,
+ "tama": 5367,
+ "kanojo": 5368,
+ "kite": 5369,
+ "mondai": 5370,
+ "amari": 5371,
+ "eki": 5372,
+ "kojin": 5373,
+ "haya": 5374,
+ "dete": 5375,
+ "atarashii": 5376,
+ "awa": 5377,
+ "gakkou": 5378,
+ "tsuzu": 5379,
+ "shukan": 5380,
+ "imashita": 5381,
+ "atae": 5382,
+ "darou": 5383,
+ "hataraku": 5384,
+ "gata": 5385,
+ "dachi": 5386,
+ "matsu": 5387,
+ "arimasen": 5388,
+ "seibutsu": 5389,
+ "mitsu": 5390,
+ "heya": 5391,
+ "yasui": 5392,
+ "deni": 5393,
+ "noko": 5394,
+ "haha": 5395,
+ "domo": 5396,
+ "kami": 5397,
+ "sudeni": 5398,
+ "nao": 5399,
+ "raku": 5400,
+ "ike": 5401,
+ "meta": 5402,
+ "kodomo": 5403,
+ "soshite": 5404,
+ "game": 5405,
+ "bakari": 5406,
+ "tote": 5407,
+ "hatsu": 5408,
+ "mise": 5409,
+ "mokuteki": 5410,
+ "dakara": 5411,
+ "[ja]": 5412,
+ "ő": 5413,
+ "ű": 5414,
+ "そ": 5415,
+ "な": 5416,
+ "ん": 5417,
+ "포": 5418,
+ "�": 5419,
+ "gy": 5420,
+ "eg": 5421,
+ "cs": 5422,
+ "ál": 5423,
+ "egy": 5424,
+ "át": 5425,
+ "ott": 5426,
+ "ett": 5427,
+ "meg": 5428,
+ "hogy": 5429,
+ "ég": 5430,
+ "ól": 5431,
+ "nek": 5432,
+ "volt": 5433,
+ "ág": 5434,
+ "nk": 5435,
+ "ék": 5436,
+ "ít": 5437,
+ "ák": 5438,
+ "ud": 5439,
+ "szer": 5440,
+ "mind": 5441,
+ "oz": 5442,
+ "ép": 5443,
+ "ért": 5444,
+ "mond": 5445,
+ "szt": 5446,
+ "nak": 5447,
+ "ől": 5448,
+ "csak": 5449,
+ "oly": 5450,
+ "áll": 5451,
+ "ány": 5452,
+ "mint": 5453,
+ "már": 5454,
+ "ött": 5455,
+ "nagy": 5456,
+ "ész": 5457,
+ "azt": 5458,
+ "elő": 5459,
+ "tud": 5460,
+ "ény": 5461,
+ "áz": 5462,
+ "még": 5463,
+ "köz": 5464,
+ "ely": 5465,
+ "ség": 5466,
+ "hoz": 5467,
+ "uk": 5468,
+ "kez": 5469,
+ "ám": 5470,
+ "aj": 5471,
+ "unk": 5472,
+ "vagy": 5473,
+ "szem": 5474,
+ "ember": 5475,
+ "fog": 5476,
+ "mert": 5477,
+ "ös": 5478,
+ "ság": 5479,
+ "leg": 5480,
+ "ünk": 5481,
+ "hát": 5482,
+ "ony": 5483,
+ "ezt": 5484,
+ "minden": 5485,
+ "ült": 5486,
+ "jó": 5487,
+ "kis": 5488,
+ "áj": 5489,
+ "úgy": 5490,
+ "most": 5491,
+ "ír": 5492,
+ "itt": 5493,
+ "elt": 5494,
+ "mondta": 5495,
+ "kell": 5496,
+ "ált": 5497,
+ "érd": 5498,
+ "tö": 5499,
+ "vár": 5500,
+ "lát": 5501,
+ "ők": 5502,
+ "vet": 5503,
+ "után": 5504,
+ "két": 5505,
+ "nap": 5506,
+ "ív": 5507,
+ "ály": 5508,
+ "vég": 5509,
+ "ök": 5510,
+ "dul": 5511,
+ "néz": 5512,
+ "ában": 5513,
+ "kül": 5514,
+ "akkor": 5515,
+ "szél": 5516,
+ "új": 5517,
+ "olyan": 5518,
+ "ked": 5519,
+ "hely": 5520,
+ "tör": 5521,
+ "ból": 5522,
+ "elm": 5523,
+ "ára": 5524,
+ "ló": 5525,
+ "volna": 5526,
+ "lehet": 5527,
+ "ebb": 5528,
+ "sok": 5529,
+ "olt": 5530,
+ "eket": 5531,
+ "bor": 5532,
+ "fej": 5533,
+ "gond": 5534,
+ "akar": 5535,
+ "fél": 5536,
+ "úl": 5537,
+ "otta": 5538,
+ "valami": 5539,
+ "jel": 5540,
+ "éd": 5541,
+ "arc": 5542,
+ "hall": 5543,
+ "föl": 5544,
+ "ába": 5545,
+ "olg": 5546,
+ "kir": 5547,
+ "old": 5548,
+ "kérd": 5549,
+ "jár": 5550,
+ "úr": 5551,
+ "zs": 5552,
+ "élet": 5553,
+ "ját": 5554,
+ "ov": 5555,
+ "éz": 5556,
+ "vil": 5557,
+ "őr": 5558,
+ "ög": 5559,
+ "lesz": 5560,
+ "koz": 5561,
+ "ább": 5562,
+ "király": 5563,
+ "eng": 5564,
+ "igaz": 5565,
+ "haj": 5566,
+ "kod": 5567,
+ "ról": 5568,
+ "több": 5569,
+ "szó": 5570,
+ "ében": 5571,
+ "öt": 5572,
+ "nyi": 5573,
+ "szól": 5574,
+ "gondol": 5575,
+ "egész": 5576,
+ "így": 5577,
+ "ős": 5578,
+ "obb": 5579,
+ "osan": 5580,
+ "ből": 5581,
+ "abb": 5582,
+ "őt": 5583,
+ "nál": 5584,
+ "kép": 5585,
+ "aztán": 5586,
+ "tart": 5587,
+ "beszél": 5588,
+ "előtt": 5589,
+ "aszt": 5590,
+ "maj": 5591,
+ "kör": 5592,
+ "hang": 5593,
+ "íz": 5594,
+ "incs": 5595,
+ "év": 5596,
+ "ód": 5597,
+ "ók": 5598,
+ "hozz": 5599,
+ "okat": 5600,
+ "nagyon": 5601,
+ "ház": 5602,
+ "ped": 5603,
+ "ezte": 5604,
+ "etlen": 5605,
+ "neki": 5606,
+ "majd": 5607,
+ "szony": 5608,
+ "ának": 5609,
+ "felé": 5610,
+ "egyszer": 5611,
+ "adt": 5612,
+ "gyer": 5613,
+ "amikor": 5614,
+ "foly": 5615,
+ "szak": 5616,
+ "őd": 5617,
+ "hú": 5618,
+ "ász": 5619,
+ "amely": 5620,
+ "ére": 5621,
+ "ilyen": 5622,
+ "oda": 5623,
+ "ják": 5624,
+ "tár": 5625,
+ "ával": 5626,
+ "lak": 5627,
+ "gyan": 5628,
+ "ély": 5629,
+ "út": 5630,
+ "kezd": 5631,
+ "mell": 5632,
+ "mikor": 5633,
+ "hez": 5634,
+ "való": 5635,
+ "szeret": 5636,
+ "rend": 5637,
+ "vissza": 5638,
+ "fő": 5639,
+ "asszony": 5640,
+ "ről": 5641,
+ "pedig": 5642,
+ "szép": 5643,
+ "ták": 5644,
+ "öv": 5645,
+ "világ": 5646,
+ "maga": 5647,
+ "szik": 5648,
+ "éj": 5649,
+ "ént": 5650,
+ "jött": 5651,
+ "szí": 5652,
+ "gat": 5653,
+ "ettem": 5654,
+ "hány": 5655,
+ "ást": 5656,
+ "ahol": 5657,
+ "őket": 5658,
+ "hár": 5659,
+ "nő": 5660,
+ "csi": 5661,
+ "talál": 5662,
+ "elte": 5663,
+ "látt": 5664,
+ "tört": 5665,
+ "hagy": 5666,
+ "esz": 5667,
+ "nél": 5668,
+ "kut": 5669,
+ "lány": 5670,
+ "amit": 5671,
+ "ső": 5672,
+ "ellen": 5673,
+ "magát": 5674,
+ "ugyan": 5675,
+ "külön": 5676,
+ "asz": 5677,
+ "mindig": 5678,
+ "lép": 5679,
+ "talán": 5680,
+ "szor": 5681,
+ "illan": 5682,
+ "nincs": 5683,
+ "vagyok": 5684,
+ "telen": 5685,
+ "ismer": 5686,
+ "isten": 5687,
+ "ított": 5688,
+ "jobb": 5689,
+ "ves": 5690,
+ "dult": 5691,
+ "juk": 5692,
+ "szen": 5693,
+ "öm": 5694,
+ "lett": 5695,
+ "egyik": 5696,
+ "bár": 5697,
+ "szi": 5698,
+ "szív": 5699,
+ "azon": 5700,
+ "eszt": 5701,
+ "föld": 5702,
+ "kuty": 5703,
+ "pillan": 5704,
+ "fér": 5705,
+ "től": 5706,
+ "tű": 5707,
+ "ébe": 5708,
+ "tött": 5709,
+ "barát": 5710,
+ "íg": 5711,
+ "ahogy": 5712,
+ "eh": 5713,
+ "ep": 5714,
+ "jelent": 5715,
+ "tat": 5716,
+ "szeg": 5717,
+ "mintha": 5718,
+ "egyen": 5719,
+ "szab": 5720,
+ "bizony": 5721,
+ "jon": 5722,
+ "öreg": 5723,
+ "dolg": 5724,
+ "csap": 5725,
+ "tiszt": 5726,
+ "állt": 5727,
+ "ancs": 5728,
+ "idő": 5729,
+ "ügy": 5730,
+ "miért": 5731,
+ "ót": 5732,
+ "csin": 5733,
+ "ének": 5734,
+ "vér": 5735,
+ "jól": 5736,
+ "alatt": 5737,
+ "mely": 5738,
+ "semmi": 5739,
+ "nyug": 5740,
+ "vág": 5741,
+ "követ": 5742,
+ "össze": 5743,
+ "mad": 5744,
+ "acs": 5745,
+ "fiú": 5746,
+ "másik": 5747,
+ "jön": 5748,
+ "szám": 5749,
+ "rész": 5750,
+ "kér": 5751,
+ "ével": 5752,
+ "[hu]": 5753,
+ "%": 5754,
+ "0": 5755,
+ "6": 5756,
+ "7": 5757,
+ "8": 5758,
+ "9": 5759,
+ "A": 5760,
+ "B": 5761,
+ "C": 5762,
+ "D": 5763,
+ "E": 5764,
+ "F": 5765,
+ "G": 5766,
+ "H": 5767,
+ "I": 5768,
+ "J": 5769,
+ "K": 5770,
+ "L": 5771,
+ "M": 5772,
+ "N": 5773,
+ "O": 5774,
+ "P": 5775,
+ "Q": 5776,
+ "R": 5777,
+ "S": 5778,
+ "T": 5779,
+ "U": 5780,
+ "V": 5781,
+ "W": 5782,
+ "X": 5783,
+ "Y": 5784,
+ "Z": 5785,
+ "Ł": 5786,
+ "α": 5787,
+ "ς": 5788,
+ "♥": 5789,
+ "か": 5790,
+ "ズ": 5791,
+ "因": 5792,
+ "国": 5793,
+ "怎": 5794,
+ "抱": 5795,
+ "推": 5796,
+ "有": 5797,
+ "樣": 5798,
+ "為": 5799,
+ "群": 5800,
+ "麼": 5801,
+ "eo": 5802,
+ "eul": 5803,
+ "eun": 5804,
+ "eon": 5805,
+ "ae": 5806,
+ "yeon": 5807,
+ "yeo": 5808,
+ "ui": 5809,
+ "hae": 5810,
+ "geo": 5811,
+ "neun": 5812,
+ "ssda": 5813,
+ "seo": 5814,
+ "eong": 5815,
+ "kk": 5816,
+ "jeo": 5817,
+ "deul": 5818,
+ "eum": 5819,
+ "yeong": 5820,
+ "geos": 5821,
+ "hag": 5822,
+ "aneun": 5823,
+ "iss": 5824,
+ "dae": 5825,
+ "eob": 5826,
+ "eol": 5827,
+ "geu": 5828,
+ "jeong": 5829,
+ "sae": 5830,
+ "doe": 5831,
+ "geul": 5832,
+ "eulo": 5833,
+ "bn": 5834,
+ "sang": 5835,
+ "bnida": 5836,
+ "haneun": 5837,
+ "jeog": 5838,
+ "saeng": 5839,
+ "ineun": 5840,
+ "anh": 5841,
+ "salam": 5842,
+ "eom": 5843,
+ "nae": 5844,
+ "gwa": 5845,
+ "yeol": 5846,
+ "eseo": 5847,
+ "myeon": 5848,
+ "ttae": 5849,
+ "hw": 5850,
+ "eobs": 5851,
+ "jang": 5852,
+ "gw": 5853,
+ "ileul": 5854,
+ "yeog": 5855,
+ "jeon": 5856,
+ "sig": 5857,
+ "jag": 5858,
+ "hago": 5859,
+ "deun": 5860,
+ "seong": 5861,
+ "gag": 5862,
+ "ham": 5863,
+ "dang": 5864,
+ "leul": 5865,
+ "sil": 5866,
+ "dong": 5867,
+ "handa": 5868,
+ "eossda": 5869,
+ "aeg": 5870,
+ "seon": 5871,
+ "haessda": 5872,
+ "issda": 5873,
+ "ege": 5874,
+ "mul": 5875,
+ "jung": 5876,
+ "jig": 5877,
+ "issneun": 5878,
+ "geun": 5879,
+ "seubnida": 5880,
+ "won": 5881,
+ "daneun": 5882,
+ "eoh": 5883,
+ "deo": 5884,
+ "gam": 5885,
+ "jal": 5886,
+ "haeng": 5887,
+ "yang": 5888,
+ "bang": 5889,
+ "jae": 5890,
+ "saenggag": 5891,
+ "hage": 5892,
+ "sog": 5893,
+ "eoss": 5894,
+ "jasin": 5895,
+ "jil": 5896,
+ "eog": 5897,
+ "gyeong": 5898,
+ "gong": 5899,
+ "deon": 5900,
+ "haess": 5901,
+ "eung": 5902,
+ "joh": 5903,
+ "nal": 5904,
+ "myeong": 5905,
+ "eona": 5906,
+ "igo": 5907,
+ "gyeol": 5908,
+ "yag": 5909,
+ "gwan": 5910,
+ "uli": 5911,
+ "yong": 5912,
+ "lyeo": 5913,
+ "jog": 5914,
+ "eohge": 5915,
+ "bog": 5916,
+ "tong": 5917,
+ "manh": 5918,
+ "jeol": 5919,
+ "geol": 5920,
+ "aga": 5921,
+ "naneun": 5922,
+ "uneun": 5923,
+ "cheol": 5924,
+ "dol": 5925,
+ "bad": 5926,
+ "hamyeon": 5927,
+ "yeossda": 5928,
+ "ibnida": 5929,
+ "gye": 5930,
+ "eos": 5931,
+ "hwal": 5932,
+ "salamdeul": 5933,
+ "jiman": 5934,
+ "dangsin": 5935,
+ "jib": 5936,
+ "ttaemun": 5937,
+ "ib": 5938,
+ "eneun": 5939,
+ "eug": 5940,
+ "jeom": 5941,
+ "geuleon": 5942,
+ "hwa": 5943,
+ "assda": 5944,
+ "beob": 5945,
+ "bae": 5946,
+ "yeoss": 5947,
+ "chin": 5948,
+ "chaeg": 5949,
+ "geon": 5950,
+ "naega": 5951,
+ "iga": 5952,
+ "sigan": 5953,
+ "gil": 5954,
+ "hyeon": 5955,
+ "lyeog": 5956,
+ "gug": 5957,
+ "pyeon": 5958,
+ "wae": 5959,
+ "jul": 5960,
+ "seul": 5961,
+ "deung": 5962,
+ "hajiman": 5963,
+ "eumyeon": 5964,
+ "pil": 5965,
+ "nyeon": 5966,
+ "tae": 5967,
+ "pyo": 5968,
+ "jineun": 5969,
+ "beon": 5970,
+ "hada": 5971,
+ "seol": 5972,
+ "sip": 5973,
+ "daleun": 5974,
+ "salm": 5975,
+ "gyo": 5976,
+ "cheon": 5977,
+ "hagi": 5978,
+ "cheoleom": 5979,
+ "gal": 5980,
+ "ila": 5981,
+ "kkaji": 5982,
+ "anhneun": 5983,
+ "habnida": 5984,
+ "tteon": 5985,
+ "haeseo": 5986,
+ "doenda": 5987,
+ "ttal": 5988,
+ "ilo": 5989,
+ "seub": 5990,
+ "byeon": 5991,
+ "myeo": 5992,
+ "beol": 5993,
+ "jeung": 5994,
+ "chim": 5995,
+ "hwang": 5996,
+ "euneun": 5997,
+ "jong": 5998,
+ "boda": 5999,
+ "nol": 6000,
+ "neom": 6001,
+ "buteo": 6002,
+ "jigeum": 6003,
+ "eobsda": 6004,
+ "daelo": 6005,
+ "yul": 6006,
+ "pyeong": 6007,
+ "seoneun": 6008,
+ "salang": 6009,
+ "seut": 6010,
+ "heom": 6011,
+ "hyang": 6012,
+ "gwang": 6013,
+ "eobsneun": 6014,
+ "hwag": 6015,
+ "gess": 6016,
+ "jagi": 6017,
+ "ileon": 6018,
+ "wihae": 6019,
+ "daehan": 6020,
+ "gaji": 6021,
+ "meog": 6022,
+ "jyeo": 6023,
+ "chaj": 6024,
+ "byeong": 6025,
+ "eod": 6026,
+ "gyeo": 6027,
+ "eoji": 6028,
+ "gul": 6029,
+ "modeun": 6030,
+ "insaeng": 6031,
+ "geulae": 6032,
+ "sasil": 6033,
+ "sib": 6034,
+ "chal": 6035,
+ "ilago": 6036,
+ "geum": 6037,
+ "doeneun": 6038,
+ "bol": 6039,
+ "gajang": 6040,
+ "geuligo": 6041,
+ "hyeong": 6042,
+ "haengbog": 6043,
+ "chul": 6044,
+ "chae": 6045,
+ "mang": 6046,
+ "dam": 6047,
+ "choe": 6048,
+ "sijag": 6049,
+ "cheong": 6050,
+ "ilaneun": 6051,
+ "ulineun": 6052,
+ "aen": 6053,
+ "kke": 6054,
+ "munje": 6055,
+ "teu": 6056,
+ "geuneun": 6057,
+ "bge": 6058,
+ "cheo": 6059,
+ "baeg": 6060,
+ "jug": 6061,
+ "sangdae": 6062,
+ "geugeos": 6063,
+ "dog": 6064,
+ "eus": 6065,
+ "jab": 6066,
+ "hyeo": 6067,
+ "tteohge": 6068,
+ "chil": 6069,
+ "swi": 6070,
+ "jileul": 6071,
+ "chang": 6072,
+ "ganeun": 6073,
+ "iji": 6074,
+ "dago": 6075,
+ "yohan": 6076,
+ "teug": 6077,
+ "ppun": 6078,
+ "aleul": 6079,
+ "haengdong": 6080,
+ "sesang": 6081,
+ "edo": 6082,
+ "mandeul": 6083,
+ "amyeon": 6084,
+ "kkae": 6085,
+ "bag": 6086,
+ "ideul": 6087,
+ "pum": 6088,
+ "meol": 6089,
+ "neul": 6090,
+ "hamkke": 6091,
+ "chung": 6092,
+ "dab": 6093,
+ "yug": 6094,
+ "sag": 6095,
+ "gwangye": 6096,
+ "ileohge": 6097,
+ "balo": 6098,
+ "neunde": 6099,
+ "hamyeo": 6100,
+ "geuleoh": 6101,
+ "anila": 6102,
+ "bangbeob": 6103,
+ "dasi": 6104,
+ "byeol": 6105,
+ "gyeon": 6106,
+ "gamjeong": 6107,
+ "oneul": 6108,
+ "janeun": 6109,
+ "yeom": 6110,
+ "lago": 6111,
+ "igi": 6112,
+ "hwan": 6113,
+ "teul": 6114,
+ "eoseo": 6115,
+ "sik": 6116,
+ "jaga": 6117,
+ "geuleom": 6118,
+ "geuleona": 6119,
+ "jeongdo": 6120,
+ "gyeog": 6121,
+ "geuleohge": 6122,
+ "geudeul": 6123,
+ "eut": 6124,
+ "imyeon": 6125,
+ "jjae": 6126,
+ "keun": 6127,
+ "isang": 6128,
+ "malhaessda": 6129,
+ "euge": 6130,
+ "nop": 6131,
+ "ingan": 6132,
+ "bomyeon": 6133,
+ "taeg": 6134,
+ "dwi": 6135,
+ "saneun": 6136,
+ "wan": 6137,
+ "anhgo": 6138,
+ "nugu": 6139,
+ "sung": 6140,
+ "damyeon": 6141,
+ "adeul": 6142,
+ "peul": 6143,
+ "ttala": 6144,
+ "geosdo": 6145,
+ "aji": 6146,
+ "meon": 6147,
+ "eumyeo": 6148,
+ "dolog": 6149,
+ "neung": 6150,
+ "modu": 6151,
+ "[ko]": 6152,
+ "\u0014": 6153,
+ "\u0016": 6154,
+ "$": 6155,
+ "*": 6156,
+ "|": 6157,
+ "°": 6158,
+ "º": 6159,
+ "ँ": 6160,
+ "ं": 6161,
+ "ः": 6162,
+ "अ": 6163,
+ "आ": 6164,
+ "इ": 6165,
+ "ई": 6166,
+ "उ": 6167,
+ "ऊ": 6168,
+ "ऋ": 6169,
+ "ऎ": 6170,
+ "ए": 6171,
+ "ऐ": 6172,
+ "ऑ": 6173,
+ "ऒ": 6174,
+ "ओ": 6175,
+ "औ": 6176,
+ "क": 6177,
+ "ख": 6178,
+ "ग": 6179,
+ "घ": 6180,
+ "ङ": 6181,
+ "च": 6182,
+ "छ": 6183,
+ "ज": 6184,
+ "झ": 6185,
+ "ञ": 6186,
+ "ट": 6187,
+ "ठ": 6188,
+ "ड": 6189,
+ "ढ": 6190,
+ "ण": 6191,
+ "त": 6192,
+ "थ": 6193,
+ "द": 6194,
+ "ध": 6195,
+ "न": 6196,
+ "ऩ": 6197,
+ "प": 6198,
+ "फ": 6199,
+ "ब": 6200,
+ "भ": 6201,
+ "म": 6202,
+ "य": 6203,
+ "र": 6204,
+ "ऱ": 6205,
+ "ल": 6206,
+ "ळ": 6207,
+ "व": 6208,
+ "श": 6209,
+ "ष": 6210,
+ "स": 6211,
+ "ह": 6212,
+ "़": 6213,
+ "ा": 6214,
+ "ि": 6215,
+ "ी": 6216,
+ "ु": 6217,
+ "ू": 6218,
+ "ृ": 6219,
+ "ॄ": 6220,
+ "ॅ": 6221,
+ "ॆ": 6222,
+ "े": 6223,
+ "ै": 6224,
+ "ॉ": 6225,
+ "ॊ": 6226,
+ "ो": 6227,
+ "ौ": 6228,
+ "्": 6229,
+ "ॐ": 6230,
+ "ॖ": 6231,
+ "क़": 6232,
+ "ख़": 6233,
+ "ग़": 6234,
+ "ज़": 6235,
+ "ड़": 6236,
+ "ढ़": 6237,
+ "फ़": 6238,
+ "य़": 6239,
+ "ॠ": 6240,
+ "।": 6241,
+ "॥": 6242,
+ "०": 6243,
+ "१": 6244,
+ "२": 6245,
+ "३": 6246,
+ "४": 6247,
+ "५": 6248,
+ "६": 6249,
+ "७": 6250,
+ "८": 6251,
+ "९": 6252,
+ "॰": 6253,
+ "ॲ": 6254,
+ "": 6255,
+ "": 6256,
+ "": 6257,
+ "": 6258,
+ "₹": 6259,
+ "के": 6260,
+ "है": 6261,
+ "ें": 6262,
+ "्र": 6263,
+ "ार": 6264,
+ "ने": 6265,
+ "या": 6266,
+ "में": 6267,
+ "से": 6268,
+ "की": 6269,
+ "का": 6270,
+ "ों": 6271,
+ "ता": 6272,
+ "कर": 6273,
+ "स्": 6274,
+ "कि": 6275,
+ "को": 6276,
+ "र्": 6277,
+ "ना": 6278,
+ "क्": 6279,
+ "ही": 6280,
+ "और": 6281,
+ "पर": 6282,
+ "ते": 6283,
+ "हो": 6284,
+ "प्र": 6285,
+ "ान": 6286,
+ "्य": 6287,
+ "ला": 6288,
+ "वा": 6289,
+ "ले": 6290,
+ "सा": 6291,
+ "हैं": 6292,
+ "लि": 6293,
+ "जा": 6294,
+ "हा": 6295,
+ "भी": 6296,
+ "वि": 6297,
+ "इस": 6298,
+ "ती": 6299,
+ "न्": 6300,
+ "रा": 6301,
+ "मा": 6302,
+ "दे": 6303,
+ "दि": 6304,
+ "बा": 6305,
+ "ति": 6306,
+ "था": 6307,
+ "नि": 6308,
+ "कार": 6309,
+ "एक": 6310,
+ "हीं": 6311,
+ "हु": 6312,
+ "ंग": 6313,
+ "ैं": 6314,
+ "नी": 6315,
+ "सी": 6316,
+ "अप": 6317,
+ "त्": 6318,
+ "नहीं": 6319,
+ "री": 6320,
+ "मे": 6321,
+ "मु": 6322,
+ "ित": 6323,
+ "तो": 6324,
+ "पा": 6325,
+ "ली": 6326,
+ "लिए": 6327,
+ "गा": 6328,
+ "ल्": 6329,
+ "रह": 6330,
+ "रे": 6331,
+ "क्ष": 6332,
+ "मैं": 6333,
+ "सम": 6334,
+ "उस": 6335,
+ "जि": 6336,
+ "त्र": 6337,
+ "मि": 6338,
+ "चा": 6339,
+ "ोग": 6340,
+ "सं": 6341,
+ "द्": 6342,
+ "सि": 6343,
+ "आप": 6344,
+ "तु": 6345,
+ "दा": 6346,
+ "कु": 6347,
+ "यों": 6348,
+ "वे": 6349,
+ "जी": 6350,
+ "्या": 6351,
+ "उन": 6352,
+ "िक": 6353,
+ "ये": 6354,
+ "भा": 6355,
+ "्ट": 6356,
+ "हम": 6357,
+ "स्ट": 6358,
+ "शा": 6359,
+ "ड़": 6360,
+ "ंद": 6361,
+ "खा": 6362,
+ "म्": 6363,
+ "श्": 6364,
+ "यह": 6365,
+ "सक": 6366,
+ "पू": 6367,
+ "किया": 6368,
+ "अपने": 6369,
+ "रू": 6370,
+ "सु": 6371,
+ "मी": 6372,
+ "हि": 6373,
+ "जो": 6374,
+ "थे": 6375,
+ "रि": 6376,
+ "दी": 6377,
+ "थी": 6378,
+ "गी": 6379,
+ "लोग": 6380,
+ "गया": 6381,
+ "तर": 6382,
+ "न्ह": 6383,
+ "च्": 6384,
+ "वार": 6385,
+ "बी": 6386,
+ "प्": 6387,
+ "दो": 6388,
+ "टी": 6389,
+ "शि": 6390,
+ "करने": 6391,
+ "गे": 6392,
+ "ैसे": 6393,
+ "इन": 6394,
+ "ंड": 6395,
+ "साथ": 6396,
+ "पु": 6397,
+ "बे": 6398,
+ "बार": 6399,
+ "वी": 6400,
+ "अन": 6401,
+ "हर": 6402,
+ "उन्ह": 6403,
+ "होता": 6404,
+ "जब": 6405,
+ "कुछ": 6406,
+ "मान": 6407,
+ "क्र": 6408,
+ "बि": 6409,
+ "पह": 6410,
+ "फि": 6411,
+ "सर": 6412,
+ "ारी": 6413,
+ "रो": 6414,
+ "दू": 6415,
+ "कहा": 6416,
+ "तक": 6417,
+ "शन": 6418,
+ "ब्": 6419,
+ "स्थ": 6420,
+ "वह": 6421,
+ "बाद": 6422,
+ "ओं": 6423,
+ "गु": 6424,
+ "ज्": 6425,
+ "्रे": 6426,
+ "गर": 6427,
+ "रहे": 6428,
+ "वर्": 6429,
+ "हू": 6430,
+ "ार्": 6431,
+ "पी": 6432,
+ "बहु": 6433,
+ "मुझ": 6434,
+ "्रा": 6435,
+ "दिया": 6436,
+ "सब": 6437,
+ "करते": 6438,
+ "अपनी": 6439,
+ "बहुत": 6440,
+ "कह": 6441,
+ "टे": 6442,
+ "हुए": 6443,
+ "किसी": 6444,
+ "रहा": 6445,
+ "ष्ट": 6446,
+ "ज़": 6447,
+ "बना": 6448,
+ "सो": 6449,
+ "डि": 6450,
+ "कोई": 6451,
+ "व्य": 6452,
+ "बात": 6453,
+ "रु": 6454,
+ "वो": 6455,
+ "मुझे": 6456,
+ "द्ध": 6457,
+ "चार": 6458,
+ "मेरे": 6459,
+ "वर": 6460,
+ "्री": 6461,
+ "जाता": 6462,
+ "नों": 6463,
+ "प्रा": 6464,
+ "देख": 6465,
+ "टा": 6466,
+ "क्या": 6467,
+ "अध": 6468,
+ "लग": 6469,
+ "लो": 6470,
+ "पि": 6471,
+ "यु": 6472,
+ "चे": 6473,
+ "जिस": 6474,
+ "ंत": 6475,
+ "ानी": 6476,
+ "पै": 6477,
+ "जन": 6478,
+ "ारे": 6479,
+ "ची": 6480,
+ "मिल": 6481,
+ "दु": 6482,
+ "देश": 6483,
+ "च्छ": 6484,
+ "ष्": 6485,
+ "सू": 6486,
+ "खे": 6487,
+ "चु": 6488,
+ "िया": 6489,
+ "लगा": 6490,
+ "बु": 6491,
+ "उनके": 6492,
+ "ज्ञ": 6493,
+ "क्षा": 6494,
+ "तरह": 6495,
+ "्यादा": 6496,
+ "वाले": 6497,
+ "पूर्": 6498,
+ "मैंने": 6499,
+ "काम": 6500,
+ "रूप": 6501,
+ "होती": 6502,
+ "उप": 6503,
+ "जान": 6504,
+ "प्रकार": 6505,
+ "भार": 6506,
+ "मन": 6507,
+ "हुआ": 6508,
+ "टर": 6509,
+ "हूँ": 6510,
+ "परि": 6511,
+ "पास": 6512,
+ "अनु": 6513,
+ "राज": 6514,
+ "लोगों": 6515,
+ "अब": 6516,
+ "समझ": 6517,
+ "डी": 6518,
+ "मौ": 6519,
+ "शु": 6520,
+ "चि": 6521,
+ "पे": 6522,
+ "कृ": 6523,
+ "सकते": 6524,
+ "मह": 6525,
+ "योग": 6526,
+ "दर्": 6527,
+ "उसे": 6528,
+ "ंध": 6529,
+ "डा": 6530,
+ "जाए": 6531,
+ "बो": 6532,
+ "ूल": 6533,
+ "मो": 6534,
+ "ोंने": 6535,
+ "ंस": 6536,
+ "तुम": 6537,
+ "पहले": 6538,
+ "बता": 6539,
+ "तथा": 6540,
+ "यो": 6541,
+ "गई": 6542,
+ "उत्": 6543,
+ "सकता": 6544,
+ "कम": 6545,
+ "ज्यादा": 6546,
+ "रख": 6547,
+ "समय": 6548,
+ "ारा": 6549,
+ "अगर": 6550,
+ "स्त": 6551,
+ "चल": 6552,
+ "फिर": 6553,
+ "वारा": 6554,
+ "करना": 6555,
+ "शी": 6556,
+ "गए": 6557,
+ "बन": 6558,
+ "ौर": 6559,
+ "होने": 6560,
+ "चाह": 6561,
+ "खु": 6562,
+ "हाँ": 6563,
+ "उन्हें": 6564,
+ "उन्होंने": 6565,
+ "छो": 6566,
+ "म्ह": 6567,
+ "प्रति": 6568,
+ "निक": 6569,
+ "वन": 6570,
+ "्यू": 6571,
+ "रही": 6572,
+ "तुम्ह": 6573,
+ "जैसे": 6574,
+ "ियों": 6575,
+ "क्यों": 6576,
+ "लों": 6577,
+ "फ़": 6578,
+ "ंत्र": 6579,
+ "होते": 6580,
+ "क्ति": 6581,
+ "त्य": 6582,
+ "कर्": 6583,
+ "कई": 6584,
+ "वं": 6585,
+ "किन": 6586,
+ "पो": 6587,
+ "कारण": 6588,
+ "ड़ी": 6589,
+ "भि": 6590,
+ "इसके": 6591,
+ "बर": 6592,
+ "उसके": 6593,
+ "द्वारा": 6594,
+ "शे": 6595,
+ "कॉ": 6596,
+ "दिन": 6597,
+ "न्न": 6598,
+ "ड़ा": 6599,
+ "स्व": 6600,
+ "निर्": 6601,
+ "मुख": 6602,
+ "लिया": 6603,
+ "टि": 6604,
+ "ज्ञान": 6605,
+ "क्त": 6606,
+ "द्र": 6607,
+ "ग्": 6608,
+ "क्स": 6609,
+ "मै": 6610,
+ "गो": 6611,
+ "जे": 6612,
+ "ट्र": 6613,
+ "मार": 6614,
+ "त्व": 6615,
+ "धार": 6616,
+ "भाव": 6617,
+ "करता": 6618,
+ "खि": 6619,
+ "कं": 6620,
+ "चाहि": 6621,
+ "यर": 6622,
+ "प्त": 6623,
+ "कों": 6624,
+ "ंच": 6625,
+ "जु": 6626,
+ "मत": 6627,
+ "अच्छ": 6628,
+ "हुई": 6629,
+ "कभी": 6630,
+ "लेकिन": 6631,
+ "भू": 6632,
+ "अपना": 6633,
+ "दूस": 6634,
+ "चाहिए": 6635,
+ "यू": 6636,
+ "घर": 6637,
+ "सबसे": 6638,
+ "मेरी": 6639,
+ "नाम": 6640,
+ "ढ़": 6641,
+ "ंट": 6642,
+ "ेंगे": 6643,
+ "बै": 6644,
+ "फा": 6645,
+ "एवं": 6646,
+ "यी": 6647,
+ "ग्र": 6648,
+ "क्षे": 6649,
+ "आज": 6650,
+ "आपको": 6651,
+ "भाग": 6652,
+ "ठा": 6653,
+ "कै": 6654,
+ "भारत": 6655,
+ "उनकी": 6656,
+ "पहु": 6657,
+ "सभी": 6658,
+ "धा": 6659,
+ "णा": 6660,
+ "सान": 6661,
+ "होगा": 6662,
+ "तब": 6663,
+ "संग": 6664,
+ "पर्": 6665,
+ "अव": 6666,
+ "तना": 6667,
+ "गि": 6668,
+ "यन": 6669,
+ "स्था": 6670,
+ "चित": 6671,
+ "ट्": 6672,
+ "छा": 6673,
+ "जाने": 6674,
+ "क्षेत्र": 6675,
+ "वाली": 6676,
+ "पूर्ण": 6677,
+ "समा": 6678,
+ "कारी": 6679,
+ "[hi]": 6680
+ },
+ "merges": [
+ "t h",
+ "i n",
+ "th e",
+ "a n",
+ "e r",
+ "o u",
+ "r e",
+ "o n",
+ "a t",
+ "e d",
+ "e n",
+ "t o",
+ "in g",
+ "an d",
+ "i s",
+ "a s",
+ "a l",
+ "o r",
+ "o f",
+ "a r",
+ "i t",
+ "e s",
+ "h e",
+ "s t",
+ "l e",
+ "o m",
+ "s e",
+ "b e",
+ "a d",
+ "o w",
+ "l y",
+ "c h",
+ "w h",
+ "th at",
+ "y ou",
+ "l i",
+ "v e",
+ "a c",
+ "t i",
+ "l d",
+ "m e",
+ "w as",
+ "g h",
+ "i d",
+ "l l",
+ "w i",
+ "en t",
+ "f or",
+ "a y",
+ "r o",
+ "v er",
+ "i c",
+ "h er",
+ "k e",
+ "h is",
+ "n o",
+ "u t",
+ "u n",
+ "i r",
+ "l o",
+ "w e",
+ "r i",
+ "h a",
+ "wi th",
+ "gh t",
+ "ou t",
+ "i m",
+ "i on",
+ "al l",
+ "a b",
+ "on e",
+ "n e",
+ "g e",
+ "ou ld",
+ "t er",
+ "m o",
+ "h ad",
+ "c e",
+ "s he",
+ "g o",
+ "s h",
+ "u r",
+ "a m",
+ "s o",
+ "p e",
+ "m y",
+ "d e",
+ "a re",
+ "b ut",
+ "om e",
+ "f r",
+ "the r",
+ "f e",
+ "s u",
+ "d o",
+ "c on",
+ "t e",
+ "a in",
+ "er e",
+ "p o",
+ "i f",
+ "the y",
+ "u s",
+ "a g",
+ "t r",
+ "n ow",
+ "ou n",
+ "th is",
+ "ha ve",
+ "no t",
+ "s a",
+ "i l",
+ "u p",
+ "th ing",
+ "fr om",
+ "a p",
+ "h im",
+ "ac k",
+ "at ion",
+ "an t",
+ "ou r",
+ "o p",
+ "li ke",
+ "u st",
+ "es s",
+ "b o",
+ "o k",
+ "u l",
+ "in d",
+ "e x",
+ "c om",
+ "s ome",
+ "the re",
+ "er s",
+ "c o",
+ "re s",
+ "m an",
+ "ar d",
+ "p l",
+ "w or",
+ "w ay",
+ "ti on",
+ "f o",
+ "c a",
+ "w ere",
+ "b y",
+ "at e",
+ "p ro",
+ "t ed",
+ "oun d",
+ "ow n",
+ "w ould",
+ "t s",
+ "wh at",
+ "q u",
+ "al ly",
+ "i ght",
+ "c k",
+ "g r",
+ "wh en",
+ "v en",
+ "c an",
+ "ou gh",
+ "in e",
+ "en d",
+ "p er",
+ "ou s",
+ "o d",
+ "id e",
+ "k now",
+ "t y",
+ "ver y",
+ "s i",
+ "a k",
+ "wh o",
+ "ab out",
+ "i ll",
+ "the m",
+ "es t",
+ "re d",
+ "y e",
+ "c ould",
+ "on g",
+ "you r",
+ "the ir",
+ "e m",
+ "j ust",
+ "o ther",
+ "in to",
+ "an y",
+ "wh i",
+ "u m",
+ "t w",
+ "as t",
+ "d er",
+ "d id",
+ "i e",
+ "be en",
+ "ac e",
+ "in k",
+ "it y",
+ "b ack",
+ "t ing",
+ "b r",
+ "mo re",
+ "a ke",
+ "p p",
+ "the n",
+ "s p",
+ "e l",
+ "u se",
+ "b l",
+ "sa id",
+ "o ver",
+ "ge t",
+ "e n",
+ "e r",
+ "c h",
+ "e i",
+ "i e",
+ "u n",
+ "i ch",
+ "ei n",
+ "s t",
+ "a n",
+ "t e",
+ "g e",
+ "a u",
+ "i n",
+ "s ch",
+ "d er",
+ "un d",
+ "d ie",
+ "d a",
+ "e s",
+ "a l",
+ "d en",
+ "a r",
+ "g en",
+ "z u",
+ "d e",
+ "h r",
+ "o n",
+ "t en",
+ "e l",
+ "o r",
+ "m i",
+ "s ie",
+ "da s",
+ "a t",
+ "b e",
+ "ein e",
+ "ich t",
+ "b er",
+ "l e",
+ "a ch",
+ "v er",
+ "s e",
+ "au f",
+ "w i",
+ "s o",
+ "t er",
+ "l ich",
+ "c k",
+ "u r",
+ "n icht",
+ "m m",
+ "b en",
+ "a s",
+ "w ar",
+ "r e",
+ "mi t",
+ "s ich",
+ "i g",
+ "l l",
+ "au s",
+ "i st",
+ "w ie",
+ "o ch",
+ "un g",
+ "an n",
+ "ü r",
+ "h n",
+ "i hr",
+ "s a",
+ "s en",
+ "t z",
+ "de m",
+ "ei t",
+ "u m",
+ "h at",
+ "wi r",
+ "v on",
+ "h a",
+ "s p",
+ "w ei",
+ "i er",
+ "r o",
+ "h er",
+ "r a",
+ "ein en",
+ "n e",
+ "v or",
+ "al s",
+ "an d",
+ "al l",
+ "w as",
+ "w o",
+ "r ei",
+ "st e",
+ "l ie",
+ "au ch",
+ "d u",
+ "d es",
+ "k o",
+ "ü ber",
+ "a m",
+ "b ei",
+ "h en",
+ "h m",
+ "l ei",
+ "a ber",
+ "w en",
+ "h l",
+ "g er",
+ "i m",
+ "u t",
+ "n ach",
+ "h e",
+ "i s",
+ "b r",
+ "f t",
+ "en t",
+ "i mm",
+ "j e",
+ "sch en",
+ "w er",
+ "s er",
+ "a b",
+ "ä n",
+ "m e",
+ "s ein",
+ "i t",
+ "o l",
+ "ch t",
+ "f ür",
+ "k l",
+ "f f",
+ "eine m",
+ "n en",
+ "w e",
+ "j a",
+ "u s",
+ "n och",
+ "hat te",
+ "t r",
+ "p f",
+ "h in",
+ "d i",
+ "ch en",
+ "b l",
+ "m an",
+ "r ü",
+ "ie l",
+ "s el",
+ "das s",
+ "i hn",
+ "mi r",
+ "sch l",
+ "ö n",
+ "g an",
+ "g t",
+ "ein er",
+ "st en",
+ "m ich",
+ "wen n",
+ "el l",
+ "g te",
+ "in d",
+ "m al",
+ "ge l",
+ "k en",
+ "n ur",
+ "mm en",
+ "f ü",
+ "er n",
+ "ö r",
+ "un ter",
+ "f r",
+ "an der",
+ "g r",
+ "i l",
+ "d ur",
+ "u ch",
+ "f e",
+ "t a",
+ "m en",
+ "m ach",
+ "d och",
+ "t i",
+ "dur ch",
+ "o s",
+ "g l",
+ "h al",
+ "ihr e",
+ "w ä",
+ "imm er",
+ "i hm",
+ "k ann",
+ "or t",
+ "d ann",
+ "l an",
+ "tz t",
+ "o der",
+ "hr en",
+ "e t",
+ "k ön",
+ "i ck",
+ "f a",
+ "in g",
+ "i r",
+ "wie der",
+ "da ß",
+ "m ein",
+ "f en",
+ "gan z",
+ "die se",
+ "st er",
+ "da r",
+ "w a",
+ "ge s",
+ "n a",
+ "f l",
+ "i gen",
+ "sch e",
+ "un gen",
+ "me hr",
+ "ß en",
+ "o t",
+ "k on",
+ "ge w",
+ "ha ben",
+ "ge h",
+ "ä t",
+ "s ind",
+ "d r",
+ "w el",
+ "un s",
+ "v o",
+ "m a",
+ "u te",
+ "sch on",
+ "b es",
+ "ge sch",
+ "b t",
+ "ch e",
+ "s on",
+ "o b",
+ "l a",
+ "p p",
+ "rü ck",
+ "s eine",
+ "k r",
+ "f re",
+ "ei l",
+ "zu m",
+ "u l",
+ "h ier",
+ "k t",
+ "i ge",
+ "sp r",
+ "k e",
+ "le ben",
+ "b st",
+ "z eit",
+ "i on",
+ "g ro",
+ "den n",
+ "h o",
+ "sch a",
+ "b ar",
+ "al le",
+ "ge gen",
+ "w ür",
+ "m ü",
+ "z e",
+ "wer den",
+ "je tzt",
+ "ko mmen",
+ "n ie",
+ "s ei",
+ "h eit",
+ "so ll",
+ "g lei",
+ "m eine",
+ "wo ll",
+ "n er",
+ "ha be",
+ "w ur",
+ "lich en",
+ "p er",
+ "as sen",
+ "n te",
+ "se hen",
+ "wir d",
+ "b is",
+ "g ar",
+ "i en",
+ "m us",
+ "u ß",
+ "ä r",
+ "st ell",
+ "k eit",
+ "z wei",
+ "sel bst",
+ "st a",
+ "p a",
+ "sa gte",
+ "te t",
+ "k am",
+ "s sen",
+ "v iel",
+ "u g",
+ "z en",
+ "h ei",
+ "m ann",
+ "wi ll",
+ "ge b",
+ "war en",
+ "ü ck",
+ "ä ch",
+ "m er",
+ "r u",
+ "w or",
+ "h au",
+ "ei gen",
+ "an g",
+ "we g",
+ "bl ick",
+ "f ra",
+ "all es",
+ "k a",
+ "au gen",
+ "f in",
+ "lich e",
+ "t o",
+ "un ser",
+ "der n",
+ "her r",
+ "n un",
+ "v ie",
+ "ch te",
+ "wo hl",
+ "f all",
+ "h t",
+ "ü n",
+ "et was",
+ "st and",
+ "en d",
+ "ä u",
+ "e m",
+ "m ö",
+ "te l",
+ "r ie",
+ "d ich",
+ "die s",
+ "h and",
+ "b in",
+ "ff en",
+ "nicht s",
+ "d an",
+ "p l",
+ "hn e",
+ "ihn en",
+ "es en",
+ "die ser",
+ "fr au",
+ "an t",
+ "ar t",
+ "di r",
+ "i sch",
+ "er st",
+ "glei ch",
+ "ko mm",
+ "h ör",
+ "ß e",
+ "d ig",
+ "se hr",
+ "z ei",
+ "sa m",
+ "au m",
+ "h ät",
+ "in gen",
+ "g ut",
+ "b o",
+ "m ut",
+ "ck en",
+ "kon nte",
+ "st imm",
+ "p ro",
+ "zu r",
+ "i tz",
+ "wei l",
+ "wür de",
+ "f ä",
+ "kön nen",
+ "k eine",
+ "f er",
+ "i schen",
+ "vo ll",
+ "ein es",
+ "se tz",
+ "z ie",
+ "de l",
+ "te te",
+ "sein er",
+ "ier en",
+ "ge st",
+ "zu rück",
+ "wur de",
+ "sch n",
+ "p r",
+ "lie ß",
+ "t ra",
+ "m ä",
+ "gen d",
+ "f ol",
+ "i k",
+ "schl a",
+ "scha ft",
+ "at er",
+ "wei ß",
+ "s einen",
+ "l assen",
+ "l u",
+ "und en",
+ "t eil",
+ "ne u",
+ "ier t",
+ "men schen",
+ "hm en",
+ "st r",
+ "g i",
+ "sa h",
+ "ihr en",
+ "el n",
+ "wei ter",
+ "ge hen",
+ "ig er",
+ "mach t",
+ "ta g",
+ "al so",
+ "hal ten",
+ "n is",
+ "ach t",
+ "ge ben",
+ "f or",
+ "o g",
+ "n at",
+ "m ar",
+ "de t",
+ "o hne",
+ "h aus",
+ "t ro",
+ "an ge",
+ "l au",
+ "sp iel",
+ "t re",
+ "sch r",
+ "in n",
+ "s u",
+ "l os",
+ "mach en",
+ "hät te",
+ "be g",
+ "wir k",
+ "al t",
+ "g lich",
+ "te s",
+ "r icht",
+ "fre und",
+ "m o",
+ "ihr er",
+ "f el",
+ "b el",
+ "so l",
+ "ein mal",
+ "e ben",
+ "h ol",
+ "h än",
+ "q u",
+ "ter n",
+ "h ö",
+ "sch w",
+ "re cht",
+ "wa hr",
+ "s einem",
+ "ste hen",
+ "hl en",
+ "in s",
+ "g ing",
+ "woll te",
+ "wi ssen",
+ "ung s",
+ "al d",
+ "as s",
+ "ja hr",
+ "m or",
+ "wel t",
+ "un der",
+ "zu sa",
+ "at ion",
+ "ko pf",
+ "lan g",
+ "hin ter",
+ "at z",
+ "st ra",
+ "an gen",
+ "an k",
+ "a de",
+ "gl au",
+ "f ach",
+ "hat ten",
+ "l o",
+ "f ort",
+ "ei cht",
+ "i ff",
+ "l er",
+ "m ei",
+ "diese m",
+ "k ein",
+ "f rei",
+ "fü hr",
+ "vo m",
+ "e s",
+ "e n",
+ "a i",
+ "o u",
+ "o n",
+ "l e",
+ "d e",
+ "r e",
+ "q u",
+ "a n",
+ "e r",
+ "en t",
+ "e t",
+ "l a",
+ "n e",
+ "i l",
+ "a r",
+ "i s",
+ "ai t",
+ "t e",
+ "a u",
+ "i n",
+ "qu e",
+ "i t",
+ "u r",
+ "s e",
+ "l es",
+ "c h",
+ "c e",
+ "m e",
+ "o r",
+ "ou r",
+ "a s",
+ "p r",
+ "a v",
+ "o m",
+ "ai s",
+ "u n",
+ "an t",
+ "ou s",
+ "t r",
+ "t i",
+ "l u",
+ "o i",
+ "e u",
+ "l le",
+ "s i",
+ "p ar",
+ "d es",
+ "an s",
+ "m ent",
+ "é t",
+ "es t",
+ "j e",
+ "u ne",
+ "a l",
+ "p as",
+ "t re",
+ "qu i",
+ "d u",
+ "r i",
+ "c on",
+ "s on",
+ "c om",
+ "e lle",
+ "d é",
+ "p our",
+ "d ans",
+ "l i",
+ "s a",
+ "r é",
+ "t ou",
+ "v ous",
+ "d i",
+ "v i",
+ "a g",
+ "a m",
+ "a t",
+ "ou v",
+ "a p",
+ "ti on",
+ "m on",
+ "s ur",
+ "c i",
+ "o s",
+ "p lu",
+ "s u",
+ "en d",
+ "a b",
+ "è re",
+ "ai n",
+ "m ais",
+ "o is",
+ "r es",
+ "plu s",
+ "é e",
+ "ai ent",
+ "m p",
+ "ch e",
+ "lu i",
+ "av e",
+ "ét ait",
+ "m a",
+ "s es",
+ "tou t",
+ "i r",
+ "v o",
+ "a c",
+ "s er",
+ "an d",
+ "f f",
+ "oi r",
+ "g r",
+ "av ait",
+ "é s",
+ "m es",
+ "n ous",
+ "eu x",
+ "b i",
+ "t er",
+ "c o",
+ "on s",
+ "p u",
+ "c es",
+ "g e",
+ "t u",
+ "le ur",
+ "pr o",
+ "d on",
+ "e ur",
+ "et te",
+ "ai re",
+ "ave c",
+ "d it",
+ "t é",
+ "i e",
+ "u s",
+ "il le",
+ "p er",
+ "com me",
+ "c r",
+ "or t",
+ "m i",
+ "e x",
+ "u x",
+ "v er",
+ "m o",
+ "è s",
+ "v e",
+ "au x",
+ "r a",
+ "j our",
+ "il s",
+ "bi en",
+ "c ou",
+ "p e",
+ "que l",
+ "p eu",
+ "c ette",
+ "t es",
+ "p o",
+ "in s",
+ "c u",
+ "m ê",
+ "s o",
+ "f ait",
+ "g u",
+ "m ar",
+ "ê tre",
+ "l o",
+ "it é",
+ "f r",
+ "a tion",
+ "en s",
+ "b r",
+ "n i",
+ "l é",
+ "d is",
+ "b le",
+ "m an",
+ "n é",
+ "pu is",
+ "mê me",
+ "qu es",
+ "f i",
+ "e l",
+ "ag e",
+ "g ar",
+ "m oi",
+ "en ce",
+ "on t",
+ "m ain",
+ "or s",
+ "au t",
+ "an ce",
+ "v en",
+ "m é",
+ "s ans",
+ "e m",
+ "s é",
+ "l on",
+ "h om",
+ "r o",
+ "u t",
+ "c ar",
+ "ab le",
+ "i m",
+ "de r",
+ "ch er",
+ "n o",
+ "vi e",
+ "au s",
+ "b e",
+ "de ux",
+ "en f",
+ "o ù",
+ "t en",
+ "p h",
+ "u re",
+ "te mp",
+ "p os",
+ "r ent",
+ "p é",
+ "f aire",
+ "p i",
+ "tr es",
+ "ç a",
+ "an g",
+ "end re",
+ "f or",
+ "p a",
+ "b on",
+ "s ou",
+ "in t",
+ "pr é",
+ "s ent",
+ "t ant",
+ "n er",
+ "c er",
+ "l à",
+ "l ais",
+ "pr ès",
+ "b re",
+ "c our",
+ "p et",
+ "i on",
+ "i ne",
+ "com p",
+ "l ait",
+ "tr ouv",
+ "t a",
+ "ent re",
+ "son t",
+ "de v",
+ "n u",
+ "temp s",
+ "d ou",
+ "r ait",
+ "b ou",
+ "qu and",
+ "jour s",
+ "l an",
+ "er s",
+ "av oir",
+ "ét é",
+ "a le",
+ "p re",
+ "f ois",
+ "or te",
+ "v é",
+ "m er",
+ "n on",
+ "t ous",
+ "j us",
+ "cou p",
+ "t s",
+ "hom me",
+ "ê te",
+ "a d",
+ "aus si",
+ "ur s",
+ "se u",
+ "or d",
+ "o b",
+ "m in",
+ "g é",
+ "co re",
+ "v a",
+ "v re",
+ "en core",
+ "se m",
+ "i te",
+ "au tre",
+ "pr is",
+ "peu t",
+ "u e",
+ "an te",
+ "m al",
+ "g n",
+ "ré p",
+ "h u",
+ "si on",
+ "vo tre",
+ "di re",
+ "e z",
+ "f em",
+ "leur s",
+ "m et",
+ "f in",
+ "c ri",
+ "m is",
+ "t our",
+ "r ai",
+ "j am",
+ "re gar",
+ "ri en",
+ "ver s",
+ "su is",
+ "p ouv",
+ "o p",
+ "v is",
+ "gr and",
+ "ant s",
+ "c or",
+ "re r",
+ "ar d",
+ "c é",
+ "t ent",
+ "pr es",
+ "v ou",
+ "f a",
+ "al ors",
+ "si eur",
+ "ai ne",
+ "le r",
+ "qu oi",
+ "f on",
+ "end ant",
+ "ar ri",
+ "eu re",
+ "a près",
+ "don c",
+ "it u",
+ "l è",
+ "s ait",
+ "t oi",
+ "ch a",
+ "ai l",
+ "as se",
+ "i mp",
+ "vo y",
+ "con n",
+ "p la",
+ "pet it",
+ "av ant",
+ "n om",
+ "t in",
+ "don t",
+ "d a",
+ "s ous",
+ "e mp",
+ "per son",
+ "el les",
+ "be au",
+ "par ti",
+ "ch o",
+ "pr it",
+ "tou jours",
+ "m en",
+ "r ais",
+ "jam ais",
+ "tr av",
+ "tion s",
+ "tr ès",
+ "v oi",
+ "r en",
+ "y eux",
+ "f er",
+ "v oir",
+ "pre mi",
+ "c a",
+ "g ne",
+ "h eure",
+ "r ou",
+ "e ff",
+ "no tre",
+ "ment s",
+ "t on",
+ "f ais",
+ "ce la",
+ "i er",
+ "rép on",
+ "con s",
+ "ai r",
+ "ô t",
+ "p endant",
+ "i ci",
+ "tou te",
+ "j et",
+ "p ort",
+ "ét aient",
+ "p en",
+ "h é",
+ "au tres",
+ "p ère",
+ "o c",
+ "quel ques",
+ "i que",
+ "l is",
+ "fem me",
+ "j ou",
+ "te ur",
+ "mon de",
+ "u se",
+ "n es",
+ "d re",
+ "a ff",
+ "r ap",
+ "par t",
+ "le ment",
+ "c la",
+ "f ut",
+ "quel que",
+ "pr endre",
+ "r ê",
+ "ai lle",
+ "s ais",
+ "ch es",
+ "le t",
+ "ch ar",
+ "è res",
+ "ent s",
+ "b er",
+ "g er",
+ "mo ins",
+ "e au",
+ "a î",
+ "j eu",
+ "h eur",
+ "é es",
+ "tr i",
+ "po int",
+ "m om",
+ "v ent",
+ "n ouv",
+ "gr an",
+ "tr ois",
+ "s ant",
+ "tout es",
+ "con tre",
+ "è rent",
+ "che z",
+ "ave z",
+ "û t",
+ "a lle",
+ "at t",
+ "p au",
+ "p orte",
+ "ouv er",
+ "b ar",
+ "l it",
+ "f ort",
+ "o t",
+ "as s",
+ "pr és",
+ "cho se",
+ "v it",
+ "mon sieur",
+ "h ab",
+ "t ête",
+ "j u",
+ "te ment",
+ "c tion",
+ "v rai",
+ "la r",
+ "c et",
+ "regar d",
+ "l ant",
+ "de m",
+ "s om",
+ "mom ent",
+ "il les",
+ "p le",
+ "p s",
+ "b es",
+ "m ère",
+ "c l",
+ "s our",
+ "y s",
+ "tr op",
+ "en ne",
+ "jus qu",
+ "av aient",
+ "av ais",
+ "jeu ne",
+ "de puis",
+ "person ne",
+ "f it",
+ "cer t",
+ "j o",
+ "g es",
+ "ou i",
+ "r est",
+ "sem b",
+ "c ap",
+ "m at",
+ "m u",
+ "lon g",
+ "fr an",
+ "f aut",
+ "it i",
+ "b li",
+ "che v",
+ "pr i",
+ "ent e",
+ "ain si",
+ "ch am",
+ "l ors",
+ "c as",
+ "d o",
+ "il i",
+ "b é",
+ "n os",
+ "an ge",
+ "su i",
+ "r it",
+ "cr o",
+ "gu e",
+ "d e",
+ "e n",
+ "e s",
+ "o s",
+ "l a",
+ "e r",
+ "q u",
+ "a r",
+ "a n",
+ "o n",
+ "qu e",
+ "a s",
+ "o r",
+ "e l",
+ "d o",
+ "a l",
+ "c i",
+ "u n",
+ "r e",
+ "a b",
+ "i n",
+ "t e",
+ "t o",
+ "s e",
+ "d i",
+ "t r",
+ "d a",
+ "c on",
+ "t a",
+ "s u",
+ "m i",
+ "c o",
+ "t i",
+ "l e",
+ "l os",
+ "n o",
+ "l o",
+ "í a",
+ "c u",
+ "c a",
+ "s i",
+ "v i",
+ "m e",
+ "p or",
+ "m o",
+ "p ar",
+ "r a",
+ "r i",
+ "la s",
+ "c h",
+ "r o",
+ "m a",
+ "p er",
+ "ó n",
+ "m en",
+ "de s",
+ "un a",
+ "m p",
+ "s o",
+ "ab a",
+ "p u",
+ "d os",
+ "t u",
+ "g u",
+ "er a",
+ "de l",
+ "h a",
+ "m u",
+ "l i",
+ "en t",
+ "m b",
+ "h ab",
+ "es t",
+ "g o",
+ "p a",
+ "r es",
+ "par a",
+ "p o",
+ "á s",
+ "m os",
+ "tr a",
+ "t en",
+ "an do",
+ "p i",
+ "qu i",
+ "b i",
+ "m an",
+ "co mo",
+ "v e",
+ "m ás",
+ "j o",
+ "ci ón",
+ "i s",
+ "t an",
+ "v o",
+ "da d",
+ "c e",
+ "a do",
+ "v er",
+ "f u",
+ "ci a",
+ "c er",
+ "p e",
+ "c as",
+ "c ar",
+ "men te",
+ "n i",
+ "su s",
+ "t ar",
+ "n a",
+ "f i",
+ "t er",
+ "z a",
+ "p ro",
+ "tr o",
+ "s a",
+ "l u",
+ "b a",
+ "per o",
+ "s er",
+ "c es",
+ "d as",
+ "d u",
+ "s in",
+ "e mp",
+ "m ar",
+ "l la",
+ "e x",
+ "á n",
+ "c or",
+ "i a",
+ "v a",
+ "r an",
+ "ch o",
+ "g a",
+ "y o",
+ "t os",
+ "c os",
+ "mi s",
+ "l es",
+ "t es",
+ "v en",
+ "h o",
+ "y a",
+ "en te",
+ "on es",
+ "hab ía",
+ "n u",
+ "u s",
+ "p as",
+ "h i",
+ "n os",
+ "es ta",
+ "la n",
+ "m as",
+ "t or",
+ "l le",
+ "h e",
+ "s on",
+ "b re",
+ "p re",
+ "ab an",
+ "d or",
+ "í an",
+ "i r",
+ "t as",
+ "é n",
+ "r u",
+ "en do",
+ "a que",
+ "er o",
+ "i o",
+ "qu é",
+ "m in",
+ "c ab",
+ "j a",
+ "de r",
+ "t al",
+ "é s",
+ "se ñ",
+ "or a",
+ "to do",
+ "la r",
+ "d on",
+ "g ar",
+ "s al",
+ "p r",
+ "cu ando",
+ "j e",
+ "h u",
+ "g un",
+ "b u",
+ "g i",
+ "d ar",
+ "n e",
+ "r as",
+ "de n",
+ "es to",
+ "par e",
+ "p en",
+ "é l",
+ "tr as",
+ "c an",
+ "b o",
+ "j os",
+ "mi en",
+ "pu e",
+ "c re",
+ "co mp",
+ "p on",
+ "d ía",
+ "tr os",
+ "s ab",
+ "so bre",
+ "es e",
+ "mb re",
+ "er on",
+ "a ñ",
+ "m or",
+ "f or",
+ "i do",
+ "por que",
+ "el la",
+ "p ri",
+ "g ran",
+ "f a",
+ "c en",
+ "di s",
+ "c ri",
+ "mu y",
+ "ch a",
+ "c al",
+ "es te",
+ "h as",
+ "c ó",
+ "g ra",
+ "r os",
+ "p os",
+ "o b",
+ "al l",
+ "aque l",
+ "j u",
+ "p res",
+ "m er",
+ "di jo",
+ "c ía",
+ "ent re",
+ "z o",
+ "ci ones",
+ "bi en",
+ "mb i",
+ "el o",
+ "t ó",
+ "in a",
+ "to dos",
+ "g en",
+ "ti en",
+ "est aba",
+ "de ci",
+ "ci o",
+ "h er",
+ "ñ o",
+ "l or",
+ "nu es",
+ "me di",
+ "l en",
+ "vi da",
+ "f e",
+ "al i",
+ "m on",
+ "c la",
+ "d re",
+ "pu es",
+ "al es",
+ "vo l",
+ "m í",
+ "r ar",
+ "b le",
+ "ci on",
+ "has ta",
+ "señ or",
+ "con o",
+ "a h",
+ "di os",
+ "s en",
+ "es a",
+ "ú n",
+ "v ar",
+ "s an",
+ "gu i",
+ "a c",
+ "o tros",
+ "ta do",
+ "bu en",
+ "ñ a",
+ "ti emp",
+ "ha cer",
+ "j er",
+ "f er",
+ "v u",
+ "f in",
+ "an a",
+ "as í",
+ "an tes",
+ "t in",
+ "ve z",
+ "mien to",
+ "j ar",
+ "la b",
+ "ch e",
+ "cas a",
+ "d r",
+ "es o",
+ "e go",
+ "di ó",
+ "an te",
+ "est á",
+ "m al",
+ "en cia",
+ "el i",
+ "í as",
+ "tiemp o",
+ "z ar",
+ "v an",
+ "m un",
+ "er ta",
+ "ta mbi",
+ "s í",
+ "b ar",
+ "a un",
+ "al e",
+ "mis mo",
+ "ent es",
+ "vi s",
+ "man o",
+ "el e",
+ "na da",
+ "se gu",
+ "me j",
+ "er ra",
+ "ab le",
+ "b e",
+ "ti r",
+ "un o",
+ "don de",
+ "to da",
+ "des de",
+ "r en",
+ "tambi én",
+ "cu er",
+ "per son",
+ "ho mbre",
+ "o tro",
+ "li b",
+ "tr ar",
+ "cu al",
+ "ha y",
+ "a u",
+ "ca da",
+ "t aba",
+ "i mp",
+ "men to",
+ "ten ía",
+ "qu er",
+ "er an",
+ "si emp",
+ "siemp re",
+ "er to",
+ "qu í",
+ "g os",
+ "pu és",
+ "el los",
+ "des pués",
+ "nu e",
+ "g an",
+ "l lo",
+ "in ter",
+ "có mo",
+ "tr i",
+ "ah ora",
+ "us te",
+ "tr aba",
+ "la do",
+ "in o",
+ "po co",
+ "er te",
+ "mu jer",
+ "i m",
+ "qui er",
+ "al gun",
+ "fu e",
+ "o jos",
+ "ent on",
+ "v os",
+ "es per",
+ "mu ch",
+ "o tra",
+ "a z",
+ "a d",
+ "in g",
+ "e za",
+ "a quí",
+ "ci as",
+ "gu a",
+ "mu cho",
+ "deci r",
+ "es ti",
+ "i dad",
+ "al go",
+ "e z",
+ "o cu",
+ "enton ces",
+ "di do",
+ "ent os",
+ "g ri",
+ "da do",
+ "i os",
+ "so l",
+ "dos e",
+ "uste d",
+ "qui en",
+ "a mi",
+ "un to",
+ "f r",
+ "mi r",
+ "mej or",
+ "b as",
+ "so lo",
+ "pre gun",
+ "tu r",
+ "al g",
+ "p la",
+ "to das",
+ "par te",
+ "e mb",
+ "c to",
+ "mun do",
+ "tien e",
+ "tan te",
+ "pa lab",
+ "tr an",
+ "aque lla",
+ "ci os",
+ "aun que",
+ "a y",
+ "cu en",
+ "ten er",
+ "f un",
+ "res pon",
+ "all í",
+ "x i",
+ "h an",
+ "pen s",
+ "con tra",
+ "tu ra",
+ "v al",
+ "di o",
+ "tr es",
+ "t re",
+ "tan to",
+ "ca min",
+ "m ó",
+ "es p",
+ "a da",
+ "í o",
+ "in s",
+ "ha cia",
+ "de j",
+ "est ar",
+ "i ón",
+ "g as",
+ "b er",
+ "v as",
+ "no che",
+ "é r",
+ "añ os",
+ "pa dre",
+ "gu s",
+ "á r",
+ "sin o",
+ "man os",
+ "ci do",
+ "es tu",
+ "a de",
+ "hu bi",
+ "vi r",
+ "b ri",
+ "ra z",
+ "ch i",
+ "pue de",
+ "men os",
+ "hab i",
+ "ho mb",
+ "ne ces",
+ "ma y",
+ "er os",
+ "r ía",
+ "he cho",
+ "es cu",
+ "l ti",
+ "án do",
+ "b us",
+ "cos as",
+ "t ú",
+ "es pa",
+ "re ci",
+ "c tor",
+ "pri m",
+ "di a",
+ "de se",
+ "mien tras",
+ "h or",
+ "fu er",
+ "i da",
+ "pos i",
+ "lan te",
+ "t on",
+ "an o",
+ "est as",
+ "p li",
+ "ch ar",
+ "lu ego",
+ "si ón",
+ "ci n",
+ "ti erra",
+ "m es",
+ "gu ar",
+ "ca do",
+ "en con",
+ "pr en",
+ "may or",
+ "f al",
+ "e r",
+ "o n",
+ "a n",
+ "t o",
+ "d i",
+ "r e",
+ "l a",
+ "i n",
+ "e n",
+ "a l",
+ "t a",
+ "c h",
+ "e l",
+ "r i",
+ "c o",
+ "t i",
+ "t e",
+ "s i",
+ "r a",
+ "u n",
+ "l e",
+ "l i",
+ "ch e",
+ "r o",
+ "c i",
+ "c a",
+ "s e",
+ "q u",
+ "m a",
+ "p o",
+ "s o",
+ "i l",
+ "d o",
+ "e s",
+ "v a",
+ "p er",
+ "l o",
+ "c on",
+ "d el",
+ "p a",
+ "m o",
+ "s a",
+ "p i",
+ "d a",
+ "m i",
+ "g i",
+ "s u",
+ "d e",
+ "v i",
+ "z i",
+ "m e",
+ "g li",
+ "n o",
+ "m en",
+ "v o",
+ "t u",
+ "n on",
+ "v e",
+ "t to",
+ "s t",
+ "on e",
+ "an o",
+ "ch i",
+ "er a",
+ "er e",
+ "f a",
+ "c e",
+ "z a",
+ "un a",
+ "b i",
+ "p re",
+ "s ta",
+ "o r",
+ "a r",
+ "f i",
+ "on o",
+ "t ra",
+ "n a",
+ "n el",
+ "n e",
+ "p ro",
+ "t ro",
+ "al e",
+ "v er",
+ "n i",
+ "c u",
+ "t ti",
+ "men te",
+ "del la",
+ "t er",
+ "zi one",
+ "g u",
+ "p e",
+ "t ta",
+ "an do",
+ "t à",
+ "al i",
+ "u o",
+ "qu el",
+ "co m",
+ "s en",
+ "co me",
+ "b a",
+ "al la",
+ "p ri",
+ "d u",
+ "qu es",
+ "l u",
+ "on i",
+ "g gi",
+ "pa r",
+ "s si",
+ "v en",
+ "in a",
+ "g a",
+ "pi ù",
+ "ci a",
+ "i m",
+ "co r",
+ "m an",
+ "in o",
+ "in i",
+ "t en",
+ "r an",
+ "b b",
+ "g o",
+ "s to",
+ "t re",
+ "a ve",
+ "a v",
+ "s ono",
+ "er i",
+ "a c",
+ "s se",
+ "er o",
+ "h a",
+ "s c",
+ "su l",
+ "f or",
+ "v ano",
+ "po r",
+ "s ti",
+ "su o",
+ "c chi",
+ "t an",
+ "z za",
+ "an che",
+ "p u",
+ "i o",
+ "t te",
+ "vo l",
+ "es s",
+ "s ci",
+ "co l",
+ "r u",
+ "p en",
+ "f u",
+ "al l",
+ "s so",
+ "s te",
+ "se m",
+ "s sa",
+ "d en",
+ "a d",
+ "t ri",
+ "de i",
+ "in e",
+ "ave va",
+ "men to",
+ "z z",
+ "a mo",
+ "g no",
+ "f o",
+ "un o",
+ "su a",
+ "g en",
+ "ri a",
+ "g e",
+ "st ra",
+ "s ì",
+ "c er",
+ "ch é",
+ "b u",
+ "a p",
+ "c en",
+ "d al",
+ "on a",
+ "s pe",
+ "g ni",
+ "b o",
+ "t t",
+ "del le",
+ "ques to",
+ "nel la",
+ "f f",
+ "d ere",
+ "an no",
+ "del l",
+ "un i",
+ "bb e",
+ "an ti",
+ "g ra",
+ "s p",
+ "en e",
+ "gi o",
+ "u to",
+ "qu al",
+ "gli a",
+ "qu ando",
+ "tu tto",
+ "c an",
+ "gli o",
+ "zi oni",
+ "ca m",
+ "h o",
+ "es so",
+ "s s",
+ "mo l",
+ "a t",
+ "lo ro",
+ "per ché",
+ "co sa",
+ "du e",
+ "po i",
+ "ca r",
+ "s co",
+ "ci o",
+ "to r",
+ "c co",
+ "c re",
+ "a m",
+ "g na",
+ "te m",
+ "pri ma",
+ "lu i",
+ "co sì",
+ "qu e",
+ "gu ar",
+ "ess ere",
+ "an i",
+ "con o",
+ "b ra",
+ "al le",
+ "m on",
+ "ri o",
+ "an co",
+ "cu i",
+ "s pi",
+ "vi a",
+ "g ran",
+ "gi or",
+ "a i",
+ "bi le",
+ "u l",
+ "ggi o",
+ "f e",
+ "an te",
+ "ma i",
+ "ta re",
+ "in ter",
+ "in di",
+ "re bbe",
+ "sen za",
+ "so lo",
+ "zi o",
+ "e d",
+ "en te",
+ "tu tti",
+ "sta to",
+ "zi a",
+ "d alla",
+ "tu ra",
+ "mi a",
+ "vi ta",
+ "quel la",
+ "qu a",
+ "ma r",
+ "do ve",
+ "g h",
+ "al lo",
+ "sem pre",
+ "zz o",
+ "si a",
+ "mo r",
+ "do po",
+ "por ta",
+ "d re",
+ "c cia",
+ "er ano",
+ "an ni",
+ "di o",
+ "chi a",
+ "en za",
+ "pro pri",
+ "qu i",
+ "m u",
+ "m b",
+ "an da",
+ "c ca",
+ "o cchi",
+ "ques ta",
+ "f fi",
+ "le i",
+ "par te",
+ "d on",
+ "r on",
+ "mi o",
+ "tan to",
+ "ri s",
+ "o gni",
+ "di s",
+ "r in",
+ "fa r",
+ "men ti",
+ "t el",
+ "anco ra",
+ "f ra",
+ "fa tto",
+ "man i",
+ "sen ti",
+ "p ra",
+ "tem po",
+ "es si",
+ "b bi",
+ "f in",
+ "a re",
+ "la re",
+ "per s",
+ "f on",
+ "b el",
+ "so r",
+ "d er",
+ "pre n",
+ "an za",
+ "di re",
+ "pi e",
+ "o ra",
+ "ver so",
+ "se gu",
+ "al tro",
+ "ta to",
+ "ca to",
+ "a to",
+ "vol ta",
+ "c c",
+ "fa re",
+ "pa re",
+ "ci ò",
+ "li b",
+ "bi li",
+ "n uo",
+ "s er",
+ "quel lo",
+ "co lo",
+ "p po",
+ "ca sa",
+ "tro va",
+ "o re",
+ "f er",
+ "r ono",
+ "d es",
+ "mol to",
+ "al mente",
+ "s ca",
+ "vo le",
+ "t ali",
+ "sul la",
+ "s ce",
+ "men o",
+ "an to",
+ "p un",
+ "s tu",
+ "ca pi",
+ "so l",
+ "gi u",
+ "m ini",
+ "m ano",
+ "z e",
+ "pi a",
+ "par ti",
+ "s al",
+ "la vo",
+ "ver o",
+ "r si",
+ "al tri",
+ "es ti",
+ "s cia",
+ "suo i",
+ "gli e",
+ "so tto",
+ "b ene",
+ "sc ri",
+ "t ale",
+ "de gli",
+ "n u",
+ "al c",
+ "uo mo",
+ "p el",
+ "f re",
+ "po te",
+ "es sa",
+ "s cu",
+ "si gno",
+ "el e",
+ "st ro",
+ "u ti",
+ "di a",
+ "si one",
+ "g re",
+ "f ini",
+ "ar ri",
+ "l un",
+ "c ri",
+ "e si",
+ "pa ssa",
+ "r à",
+ "men tre",
+ "an d",
+ "h anno",
+ "el o",
+ "u sci",
+ "gi a",
+ "gi à",
+ "di e",
+ "m ina",
+ "b e",
+ "ti ca",
+ "gior no",
+ "t in",
+ "es se",
+ "mo do",
+ "c al",
+ "s pa",
+ "propri o",
+ "l en",
+ "o ri",
+ "con tro",
+ "st ru",
+ "di ven",
+ "di sse",
+ "ra to",
+ "no i",
+ "v ere",
+ "pu ò",
+ "di ce",
+ "s an",
+ "es a",
+ "c ci",
+ "se con",
+ "re n",
+ "c cio",
+ "qual che",
+ "tu tta",
+ "g g",
+ "mon do",
+ "for ma",
+ "p li",
+ "m ma",
+ "pen sa",
+ "de va",
+ "tu r",
+ "fo sse",
+ "so pra",
+ "ta mente",
+ "n ess",
+ "qu anto",
+ "ra ga",
+ "un que",
+ "ca re",
+ "st re",
+ "gran de",
+ "pi cco",
+ "guar da",
+ "b en",
+ "nel l",
+ "a ff",
+ "po ssi",
+ "pre sen",
+ "r ò",
+ "pa ro",
+ "tu a",
+ "v in",
+ "an e",
+ "a s",
+ "ste sso",
+ "da v",
+ "ne i",
+ "nel le",
+ "gh i",
+ "pi o",
+ "ta r",
+ "an a",
+ "la to",
+ "si d",
+ "f ine",
+ "f uo",
+ "m er",
+ "z o",
+ "qua si",
+ "ul ti",
+ "i to",
+ "su e",
+ "si e",
+ "f il",
+ "allo ra",
+ "m in",
+ "ven i",
+ "t ano",
+ "el lo",
+ "d e",
+ "r a",
+ "e s",
+ "d o",
+ "e n",
+ "q u",
+ "c o",
+ "a s",
+ "o s",
+ "e r",
+ "a r",
+ "s e",
+ "qu e",
+ "a n",
+ "i n",
+ "i s",
+ "t o",
+ "ã o",
+ "t e",
+ "d a",
+ "m a",
+ "e l",
+ "t a",
+ "o r",
+ "i a",
+ "r e",
+ "e m",
+ "a l",
+ "co m",
+ "p a",
+ "o u",
+ "c a",
+ "u m",
+ "r o",
+ "v a",
+ "t i",
+ "s o",
+ "m en",
+ "n ão",
+ "h a",
+ "co n",
+ "m e",
+ "r i",
+ "pa ra",
+ "p o",
+ "d i",
+ "s a",
+ "v o",
+ "u ma",
+ "c i",
+ "n a",
+ "p or",
+ "n o",
+ "g u",
+ "s u",
+ "h o",
+ "an do",
+ "t ra",
+ "e i",
+ "v i",
+ "e u",
+ "i m",
+ "do s",
+ "el e",
+ "r es",
+ "m o",
+ "en t",
+ "f i",
+ "l a",
+ "e ra",
+ "l e",
+ "de s",
+ "el a",
+ "men te",
+ "l h",
+ "p er",
+ "l i",
+ "ç ão",
+ "m as",
+ "t er",
+ "m u",
+ "es t",
+ "v e",
+ "g o",
+ "l o",
+ "u s",
+ "ma is",
+ "v er",
+ "c ê",
+ "in ha",
+ "vo cê",
+ "f a",
+ "t u",
+ "c u",
+ "p ar",
+ "com o",
+ "p ro",
+ "s i",
+ "m os",
+ "e c",
+ "p re",
+ "d as",
+ "ç a",
+ "es ta",
+ "s er",
+ "u n",
+ "da de",
+ "d is",
+ "f o",
+ "e x",
+ "c h",
+ "i r",
+ "ra n",
+ "t ar",
+ "en te",
+ "g a",
+ "t r",
+ "p e",
+ "t os",
+ "b o",
+ "c ia",
+ "p en",
+ "c ar",
+ "s en",
+ "su a",
+ "se m",
+ "c as",
+ "f or",
+ "to u",
+ "n os",
+ "te m",
+ "r ia",
+ "m es",
+ "se u",
+ "co r",
+ "o n",
+ "a o",
+ "p os",
+ "ra m",
+ "v el",
+ "é m",
+ "t en",
+ "po de",
+ "t es",
+ "esta va",
+ "c e",
+ "b a",
+ "qu ando",
+ "m i",
+ "qu er",
+ "men to",
+ "se gu",
+ "t as",
+ "is so",
+ "mu i",
+ "g ar",
+ "t ro",
+ "d u",
+ "fa z",
+ "õ es",
+ "p es",
+ "an to",
+ "l u",
+ "p i",
+ "i x",
+ "ve z",
+ "s im",
+ "j a",
+ "p r",
+ "m in",
+ "b e",
+ "ra s",
+ "m an",
+ "p res",
+ "est á",
+ "c er",
+ "b re",
+ "p as",
+ "d ia",
+ "m b",
+ "dis se",
+ "n i",
+ "r os",
+ "es se",
+ "v ia",
+ "o lh",
+ "is a",
+ "an te",
+ "ê n",
+ "z a",
+ "qu i",
+ "b i",
+ "t inha",
+ "me u",
+ "s ão",
+ "m inha",
+ "a c",
+ "ri o",
+ "m ar",
+ "a t",
+ "p el",
+ "mui to",
+ "ta l",
+ "to r",
+ "fo i",
+ "h or",
+ "j o",
+ "b em",
+ "g i",
+ "f al",
+ "vo l",
+ "po n",
+ "di z",
+ "l ar",
+ "gu n",
+ "m or",
+ "r u",
+ "par ec",
+ "ç o",
+ "do r",
+ "pes so",
+ "n e",
+ "f er",
+ "b er",
+ "p u",
+ "po is",
+ "in a",
+ "es p",
+ "d ar",
+ "en do",
+ "de n",
+ "so bre",
+ "co s",
+ "p ri",
+ "al i",
+ "mes mo",
+ "ç ões",
+ "g ra",
+ "se us",
+ "me i",
+ "b ra",
+ "vi da",
+ "an tes",
+ "b ri",
+ "at é",
+ "ên cia",
+ "lh e",
+ "ti v",
+ "m ã",
+ "al g",
+ "qu anto",
+ "s ó",
+ "g os",
+ "de r",
+ "t ão",
+ "tu do",
+ "ent ão",
+ "r ou",
+ "es s",
+ "in da",
+ "b al",
+ "in do",
+ "ci o",
+ "n do",
+ "j á",
+ "va m",
+ "re i",
+ "l es",
+ "ei to",
+ "v is",
+ "tem po",
+ "de pois",
+ "c ha",
+ "m el",
+ "ch e",
+ "l ha",
+ "a inda",
+ "faz er",
+ "con tra",
+ "p ou",
+ "per gun",
+ "de ix",
+ "ta mb",
+ "ra r",
+ "al a",
+ "v en",
+ "t in",
+ "pel o",
+ "tamb ém",
+ "fi ca",
+ "pre c",
+ "el es",
+ "tra n",
+ "ha via",
+ "l á",
+ "to dos",
+ "j u",
+ "qu al",
+ "c an",
+ "ta do",
+ "cas a",
+ "es sa",
+ "n as",
+ "g em",
+ "m em",
+ "se i",
+ "na da",
+ "sen ti",
+ "c ri",
+ "ó s",
+ "de u",
+ "ei ro",
+ ". .",
+ "f un",
+ "as sim",
+ "s ou",
+ "ent re",
+ "com e",
+ "i or",
+ "h ar",
+ "f e",
+ "por que",
+ "s or",
+ "f in",
+ "ta mente",
+ "a qui",
+ "cu l",
+ "t ó",
+ "for ma",
+ "s ar",
+ "ou tra",
+ "olh os",
+ "i ma",
+ "m im",
+ "a go",
+ "in s",
+ "co u",
+ "g ran",
+ "v al",
+ "pesso as",
+ "era m",
+ "ei ra",
+ "a que",
+ "com p",
+ "de i",
+ "p ela",
+ "co isa",
+ "m ão",
+ "con h",
+ "ca da",
+ "ago ra",
+ "ia m",
+ "h á",
+ "con s",
+ "su as",
+ "gu ém",
+ "o b",
+ "l an",
+ "es ti",
+ "á s",
+ "la do",
+ "in ter",
+ "ca be",
+ "por ta",
+ "n em",
+ "í vel",
+ "r is",
+ "j e",
+ "n un",
+ "sem pre",
+ "con segu",
+ "h as",
+ "tra bal",
+ "f u",
+ "le v",
+ "l em",
+ "l as",
+ "va i",
+ "tr os",
+ "t ante",
+ "te i",
+ "pr ó",
+ "que m",
+ "tu ra",
+ "on de",
+ "cabe ça",
+ "nun ca",
+ "men tos",
+ "h um",
+ "de le",
+ "ver dade",
+ "t á",
+ "h os",
+ "el i",
+ "ent es",
+ "m er",
+ "alg um",
+ "diz er",
+ "s in",
+ "pen as",
+ "n ós",
+ "en quanto",
+ "ou tro",
+ "l ho",
+ "es te",
+ "mel hor",
+ "est ar",
+ "g an",
+ "b ar",
+ "pri mei",
+ "a u",
+ "i u",
+ "pen sa",
+ "a penas",
+ "p ra",
+ "es tou",
+ "con te",
+ "res pon",
+ "ho mem",
+ "do is",
+ "a do",
+ "c al",
+ "a b",
+ "l os",
+ "ç as",
+ "pou co",
+ "sen hor",
+ "t ando",
+ "esp era",
+ "pa i",
+ "ri os",
+ "no i",
+ "i da",
+ "ba ix",
+ "as e",
+ "is as",
+ "f r",
+ "ho ra",
+ "mu ndo",
+ "pas sa",
+ "fi car",
+ "to do",
+ "se ja",
+ "al mente",
+ "â n",
+ "c lar",
+ "a d",
+ "in c",
+ "f os",
+ "lo n",
+ "g ri",
+ "ou vi",
+ "v em",
+ "g e",
+ "ta va",
+ "á rio",
+ "mo n",
+ "s os",
+ "in ho",
+ "ma l",
+ "t an",
+ "t re",
+ "gran de",
+ "ran do",
+ "b u",
+ "v ou",
+ "ê s",
+ "co isas",
+ "a conte",
+ "lh er",
+ "g en",
+ "ci on",
+ "an os",
+ "i do",
+ "tal vez",
+ "est ão",
+ "li v",
+ "sa b",
+ "su r",
+ "ou tros",
+ "c re",
+ "qual quer",
+ "g ou",
+ "t ri",
+ "l í",
+ "tiv esse",
+ "ra do",
+ "prec isa",
+ "mã e",
+ "su s",
+ "t anto",
+ "de la",
+ "men os",
+ "s al",
+ "en tra",
+ "p é",
+ "ma ior",
+ "noi te",
+ "ti va",
+ "p ala",
+ "so n",
+ "ra ção",
+ "de us",
+ "s as",
+ "un i",
+ "l or",
+ "u l",
+ "in te",
+ "f ei",
+ "an o",
+ "par ti",
+ "pala v",
+ "tr ás",
+ "par te",
+ "b el",
+ "ci dade",
+ "lu gar",
+ "v os",
+ "vez es",
+ "do u",
+ "en contra",
+ "tr u",
+ "e ci",
+ "a r",
+ "e r",
+ "a n",
+ "e n",
+ "i n",
+ "i r",
+ "o r",
+ "d e",
+ "a k",
+ "ı n",
+ "a l",
+ "d i",
+ "d a",
+ "b u",
+ "b ir",
+ "y or",
+ "i l",
+ "e k",
+ "y a",
+ "m a",
+ "l a",
+ "e l",
+ "u n",
+ "k a",
+ "l ar",
+ "i m",
+ "d ı",
+ "e t",
+ "o n",
+ "d u",
+ "o l",
+ "e y",
+ "t ı",
+ "m i",
+ "h a",
+ "b a",
+ "l er",
+ "ü n",
+ "m ı",
+ "i z",
+ "l e",
+ "ı r",
+ "m e",
+ "i s",
+ "n e",
+ "o k",
+ "t a",
+ "s a",
+ "u m",
+ "r a",
+ "g ö",
+ "i k",
+ "s ı",
+ "d en",
+ "e s",
+ "b il",
+ "t i",
+ "l ı",
+ "ü z",
+ "i ç",
+ "ü r",
+ "g i",
+ "u r",
+ "t e",
+ "b en",
+ "d an",
+ "i y",
+ "ı m",
+ "u z",
+ "v e",
+ "c ak",
+ "a y",
+ "c e",
+ "i ş",
+ "ın ı",
+ "i yor",
+ "ba ş",
+ "d ü",
+ "a t",
+ "a m",
+ "g el",
+ "de ğ",
+ "k ar",
+ "i ̇",
+ "m u",
+ "e v",
+ "ö y",
+ "bu n",
+ "v ar",
+ "ya p",
+ "s en",
+ "an a",
+ "s un",
+ "in i",
+ "gö r",
+ "y ı",
+ "k i",
+ "l i",
+ "ar a",
+ "al ı",
+ "on u",
+ "ç ı",
+ "ş ey",
+ "s ın",
+ "k ı",
+ "ka d",
+ "s e",
+ "t an",
+ "a ğ",
+ "değ il",
+ "s in",
+ "ü k",
+ "a z",
+ "ç ok",
+ "s on",
+ "ş ı",
+ "b i",
+ "ü l",
+ "t u",
+ "v er",
+ "iç in",
+ "g e",
+ "k en",
+ "ey e",
+ "ol du",
+ "mı ş",
+ "y e",
+ "k al",
+ "m ek",
+ "l an",
+ "öy le",
+ "yor du",
+ "er i",
+ "y üz",
+ "mi ş",
+ "b e",
+ "m ak",
+ "o la",
+ "in e",
+ "y an",
+ "h er",
+ "c ek",
+ "yor um",
+ "b ak",
+ "ü m",
+ "ö n",
+ "lar ı",
+ "o ğ",
+ "d er",
+ "kad ar",
+ "h al",
+ "ar ı",
+ "s t",
+ "s an",
+ "ın da",
+ "du r",
+ "g ün",
+ "v a",
+ "y ok",
+ "y er",
+ "dı m",
+ "k o",
+ "da ha",
+ "l u",
+ "ın a",
+ "di m",
+ "e m",
+ "bil ir",
+ "ik i",
+ "s iz",
+ "s i",
+ "n a",
+ "di ğ",
+ "s u",
+ "b ü",
+ "ha y",
+ "s or",
+ "dü ş",
+ "ü ç",
+ "un u",
+ "ö r",
+ "d ir",
+ "m ü",
+ "c a",
+ "am an",
+ "f ak",
+ "a da",
+ "e de",
+ "son ra",
+ "h iç",
+ "ak i",
+ "ğ ı",
+ "bu l",
+ "r u",
+ "ma z",
+ "an la",
+ "bu ra",
+ "ge ç",
+ "ma ya",
+ "l en",
+ "k onu",
+ "c i",
+ "c u",
+ "d in",
+ "t ek",
+ "z aman",
+ "el er",
+ "ö z",
+ "dı r",
+ "gi bi",
+ "o t",
+ "ş a",
+ "g er",
+ "ler i",
+ "k im",
+ "k u",
+ "fak at",
+ "y ar",
+ "gö z",
+ "c ı",
+ "yor sun",
+ "b ek",
+ "in de",
+ "r o",
+ "p ek",
+ "bun u",
+ "l ik",
+ "m an",
+ "il er",
+ "e di",
+ "ö l",
+ "s ür",
+ "b in",
+ "s ır",
+ "çı k",
+ "sı l",
+ "al ar",
+ "k es",
+ "y ak",
+ "ç ek",
+ "yı l",
+ "e cek",
+ "ı z",
+ "gi t",
+ "ka p",
+ "a ma",
+ "ı l",
+ "lar ın",
+ "b iz",
+ "tı r",
+ "o y",
+ "an cak",
+ "d oğ",
+ "ç a",
+ "b ana",
+ "ş im",
+ "baş la",
+ "l ü",
+ "ma dı",
+ "ben i",
+ "t ir",
+ "y ük",
+ "lı k",
+ "be ş",
+ "b el",
+ "b er",
+ "m er",
+ "na sıl",
+ "tı k",
+ "k e",
+ "t ür",
+ "a v",
+ ". .",
+ "d aki",
+ "p ar",
+ "t er",
+ "ce ğ",
+ "t en",
+ "z ı",
+ "iy i",
+ "d ok",
+ "ben im",
+ "c ağ",
+ "n er",
+ "y en",
+ "ş u",
+ "me z",
+ "düş ün",
+ "ken di",
+ "şim di",
+ "y ol",
+ "y u",
+ "de v",
+ "is te",
+ "s ek",
+ "ma m",
+ "s öyle",
+ "di k",
+ "t o",
+ "k ur",
+ "oldu ğ",
+ "s ını",
+ "t ar",
+ "bil iyor",
+ "k an",
+ "y al",
+ "m eye",
+ "mu ş",
+ "f a",
+ "ka ç",
+ "bil e",
+ "iy e",
+ "t ü",
+ "e f",
+ "tı m",
+ "ev et",
+ "ç o",
+ "y et",
+ "g en",
+ "bura da",
+ "t im",
+ "bir az",
+ "es i",
+ "k or",
+ "doğ ru",
+ "in in",
+ "kı z",
+ "di ye",
+ "d ör",
+ "et ti",
+ "on un",
+ "is ti",
+ "ğ i",
+ "h e",
+ "s ana",
+ "ü ş",
+ "ar ka",
+ "hay ır",
+ "kar şı",
+ "h ar",
+ "il e",
+ "h ak",
+ "ı yor",
+ "ne den",
+ "s ev",
+ "sı z",
+ "ço cu",
+ "me m",
+ "ç alı",
+ "ol ur",
+ "b ır",
+ "g ir",
+ "is e",
+ "i h",
+ "c an",
+ "k ır",
+ "d ön",
+ "b öyle",
+ "sen i",
+ "! \"",
+ "al t",
+ "dör t",
+ "s öy",
+ "o ş",
+ "mu sun",
+ "la ş",
+ "h an",
+ "i p",
+ "ka y",
+ "h em",
+ "bü yük",
+ "a ç",
+ "bır ak",
+ "mi sin",
+ "s öz",
+ "u l",
+ "değ iş",
+ "ün ü",
+ "g ül",
+ "k ö",
+ "kar ı",
+ "ta mam",
+ "ol u",
+ "r ar",
+ "yen i",
+ "la m",
+ "mış tı",
+ "ya ş",
+ "al a",
+ "in iz",
+ "kad ın",
+ "bun un",
+ "m ey",
+ "al tı",
+ "y i",
+ "s o",
+ "in den",
+ "sen in",
+ "ya t",
+ "to p",
+ "s er",
+ "is i",
+ "d ün",
+ "s es",
+ "hiç bir",
+ "y on",
+ "d ın",
+ "t ün",
+ "baş ka",
+ "a s",
+ "he p",
+ "i t",
+ "ir mi",
+ "dev am",
+ "ola cak",
+ "ar tık",
+ "r e",
+ "dur um",
+ "im iz",
+ "üz el",
+ "ler ini",
+ "sa ğ",
+ "p ro",
+ "ger ek",
+ "y irmi",
+ "ş ek",
+ "ba ğ",
+ "me di",
+ "lar a",
+ "a h",
+ "t ur",
+ "y ür",
+ "ma sı",
+ "ka tı",
+ "de di",
+ "g ü",
+ "sor un",
+ "el i",
+ "ün e",
+ "mı z",
+ "yap ı",
+ "m il",
+ "ğ ını",
+ "t ara",
+ "m en",
+ "ha t",
+ "var dı",
+ "m et",
+ "konu ş",
+ "ar ak",
+ "lar ak",
+ "çocu k",
+ "bü tün",
+ "l ey",
+ "d ür",
+ "g üzel",
+ "ay ı",
+ "yap a",
+ "n ı",
+ "ay r",
+ "ö ne",
+ "yordu m",
+ "b an",
+ "i̇ ş",
+ "du m",
+ "un a",
+ "on a",
+ "yor lar",
+ "lar ını",
+ "çı kar",
+ "z an",
+ "se ç",
+ "l iyor",
+ "t ak",
+ "şı k",
+ "tek rar",
+ "a ş",
+ "e ş",
+ "miş ti",
+ "f ar",
+ "k in",
+ "im i",
+ "i f",
+ "e ğ",
+ "gi di",
+ "le ş",
+ "başla dı",
+ "gi de",
+ "ot ur",
+ "d de",
+ "ın dan",
+ "üz er",
+ "ın ın",
+ "n ız",
+ "u y",
+ "ye di",
+ "ka t",
+ "o larak",
+ "la dı",
+ "yal nız",
+ "ba h",
+ "iy et",
+ "m al",
+ "s ak",
+ "a çık",
+ "sın da",
+ ".. .",
+ "in san",
+ "ay nı",
+ "e der",
+ "is tan",
+ "uz un",
+ "sa h",
+ "d o",
+ "g eri",
+ "er ek",
+ "ol an",
+ "ger çek",
+ "f en",
+ "al an",
+ "dı ş",
+ "alı k",
+ "far k",
+ "ü st",
+ "sa de",
+ "r i",
+ "k iş",
+ "l dı",
+ "z or",
+ "et ir",
+ "her kes",
+ "s al",
+ "ö mer",
+ "s el",
+ "un da",
+ "ha f",
+ "bun a",
+ "y dı",
+ "pek i",
+ "ada m",
+ "ha z",
+ "sın a",
+ "kap ı",
+ "gör üş",
+ "sade ce",
+ "al dı",
+ "gel di",
+ "i e",
+ "n ie",
+ "n a",
+ "r z",
+ "s z",
+ "c z",
+ "p o",
+ "s t",
+ "c h",
+ "i ę",
+ "d z",
+ "n i",
+ "a ł",
+ "r a",
+ "j e",
+ "r o",
+ "d o",
+ "s ię",
+ "z a",
+ "g o",
+ "e m",
+ "w i",
+ "c i",
+ "rz e",
+ "k o",
+ "l e",
+ "l i",
+ "w a",
+ "t o",
+ "k a",
+ "m i",
+ "ż e",
+ "t a",
+ "w ie",
+ "b y",
+ "m o",
+ "w y",
+ "rz y",
+ "ł a",
+ "j a",
+ "n o",
+ "ł o",
+ "w o",
+ "p a",
+ "m a",
+ "t e",
+ "t y",
+ "n y",
+ "k i",
+ "d a",
+ "n e",
+ "dz ie",
+ "dz i",
+ "cz y",
+ "c ie",
+ "m y",
+ "p rze",
+ "d y",
+ "o d",
+ "l a",
+ "k ie",
+ "r y",
+ "st a",
+ "j ą",
+ "ó w",
+ "c e",
+ "p rzy",
+ "c o",
+ "k u",
+ "m ie",
+ "sz y",
+ "cz e",
+ "r e",
+ "b a",
+ "s i",
+ "b ie",
+ "m u",
+ "w e",
+ "c y",
+ "ni a",
+ "ś ci",
+ "sz e",
+ "je st",
+ "k t",
+ "s a",
+ "b o",
+ "t u",
+ "ż y",
+ "n ą",
+ "b i",
+ "r u",
+ "a le",
+ "kt ó",
+ "p ra",
+ "ał a",
+ "m nie",
+ "p ie",
+ "ł y",
+ "cz a",
+ "ja k",
+ "ro z",
+ "r ó",
+ "l u",
+ "z na",
+ "g a",
+ "ra z",
+ "ł u",
+ "ta k",
+ "j u",
+ "p i",
+ "ś ć",
+ "s o",
+ "wi a",
+ "m ó",
+ "ch o",
+ "w szy",
+ "p e",
+ "s po",
+ "c a",
+ "g dy",
+ "w ał",
+ "w ię",
+ "d e",
+ "b e",
+ "p ro",
+ "ł em",
+ "j ę",
+ "s k",
+ "z e",
+ "l o",
+ "g i",
+ "r ę",
+ "do b",
+ "d u",
+ "ju ż",
+ "st o",
+ "b ę",
+ "ał em",
+ "sz a",
+ "m e",
+ "po d",
+ "d la",
+ "pa n",
+ "n ę",
+ "z o",
+ "mo że",
+ "ś li",
+ "s ie",
+ "ał o",
+ "t em",
+ "l ko",
+ "ny ch",
+ "po wie",
+ "c ię",
+ "s u",
+ "ty lko",
+ "i n",
+ "b u",
+ "na j",
+ "ch a",
+ "te go",
+ "p u",
+ "s ki",
+ "ne go",
+ "wszy st",
+ "sz cze",
+ "je d",
+ "je j",
+ "t wo",
+ "ą d",
+ "ś my",
+ "cz ę",
+ "wa ć",
+ "je go",
+ "ż a",
+ "i m",
+ "s y",
+ "pra w",
+ "ty m",
+ "któ ry",
+ "ał y",
+ "t rze",
+ "nie j",
+ "s e",
+ "ny m",
+ "i ch",
+ "o b",
+ ". .",
+ "g ło",
+ "ją c",
+ "mó wi",
+ "s ka",
+ "o n",
+ "ne j",
+ "s łu",
+ "w ła",
+ "bę dzie",
+ "d ę",
+ "p ó",
+ "be z",
+ "ni c",
+ "p ła",
+ "ś cie",
+ "mi a",
+ "s ą",
+ "t rzy",
+ "kie m",
+ "by ł",
+ "mo g",
+ "ro bi",
+ "ta m",
+ "c u",
+ "te n",
+ "m ię",
+ "z y",
+ "pe w",
+ "ci a",
+ "my ś",
+ "prze d",
+ "s ko",
+ "n u",
+ "któ re",
+ "a l",
+ "l ę",
+ "w sze",
+ "ą c",
+ "by ło",
+ "so bie",
+ "p y",
+ "ci ą",
+ "ba r",
+ "je szcze",
+ "h a",
+ "t ę",
+ "b ra",
+ "cza s",
+ "sz ę",
+ "g ł",
+ "k ę",
+ "ma r",
+ "cz u",
+ "prze z",
+ "f i",
+ "s ło",
+ "w z",
+ "k to",
+ "k ów",
+ "cz o",
+ "li śmy",
+ "st ra",
+ "wię c",
+ "r ą",
+ "ma m",
+ "w ó",
+ "rz a",
+ "g ro",
+ "no ści",
+ "f a",
+ "we t",
+ "ną ł",
+ "ś mie",
+ "na wet",
+ "mu si",
+ "s wo",
+ "te j",
+ "w ą",
+ "w u",
+ "wi ą",
+ "ni u",
+ "cz ą",
+ "b li",
+ "dz o",
+ "s kie",
+ "n em",
+ "je śli",
+ "cze go",
+ "ch y",
+ "d ł",
+ "ty ch",
+ "by m",
+ "ż o",
+ "e ś",
+ "si ą",
+ "kie dy",
+ "na s",
+ "w ró",
+ "dz e",
+ "d ro",
+ "t ra",
+ "r ów",
+ "pa ni",
+ "z ie",
+ "ku l",
+ "na d",
+ "ch wi",
+ "ni m",
+ "t ro",
+ "by ć",
+ "cho dzi",
+ "ni o",
+ "dob rze",
+ "te raz",
+ "wo kul",
+ "co ś",
+ "k ł",
+ "pie r",
+ "h e",
+ "g dzie",
+ "dz y",
+ "p ię",
+ "d ź",
+ "k ą",
+ "g ó",
+ "z da",
+ "ch ce",
+ "st ę",
+ "o r",
+ "ś wia",
+ "wszyst ko",
+ "st ro",
+ "pe ł",
+ "wie m",
+ "wie l",
+ "ka ż",
+ "ki m",
+ "rz u",
+ "s ły",
+ "jed na",
+ "z u",
+ "myś l",
+ "mó j",
+ "g u",
+ "wa r",
+ "jest em",
+ "ó ż",
+ "mie j",
+ "mo ż",
+ "k ła",
+ "re sz",
+ "d łu",
+ "st wo",
+ "n ię",
+ "ma sz",
+ "że by",
+ "nie m",
+ "ja kie",
+ "st y",
+ "ni ą",
+ "we j",
+ "o j",
+ "g ra",
+ "s ła",
+ "no ść",
+ "z ło",
+ "sz czę",
+ ".. .",
+ "r i",
+ "le j",
+ "we go",
+ "c ał",
+ "dzi ał",
+ "ki ch",
+ "dz a",
+ "dz ię",
+ "o czy",
+ "zo sta",
+ "cz ło",
+ "na m",
+ "ki l",
+ "o na",
+ "sz u",
+ "w ę",
+ "pa r",
+ "mi ał",
+ "st rze",
+ "ce j",
+ "e j",
+ "zna j",
+ "da ć",
+ "miej s",
+ "k ró",
+ "k ry",
+ "bar dzo",
+ "si a",
+ "z i",
+ "ś nie",
+ "l ą",
+ "g ie",
+ "cie bie",
+ "d ni",
+ "st u",
+ "po trze",
+ "wokul ski",
+ "u wa",
+ "u mie",
+ "jedna k",
+ "k ra",
+ "wró ci",
+ "czło wie",
+ "czy ć",
+ "by ła",
+ "że li",
+ "m ę",
+ "c ę",
+ "z robi",
+ "mog ę",
+ "pro wa",
+ "r em",
+ "nie ch",
+ "cz nie",
+ "k ro",
+ "t ą",
+ "ch ci",
+ "b ro",
+ "dzie ć",
+ "sz ą",
+ "pa d",
+ "t rz",
+ "t ru",
+ "je m",
+ "a ni",
+ "t ów",
+ "a r",
+ "d ru",
+ "ta j",
+ "rze kł",
+ "sa m",
+ "st e",
+ "nie go",
+ "ta kie",
+ "w ała",
+ "to wa",
+ "ka pła",
+ "wi dzi",
+ "po dob",
+ "dz ę",
+ "t ał",
+ "stę p",
+ "b ą",
+ "po ko",
+ "w em",
+ "g ę",
+ "a by",
+ "g e",
+ "al bo",
+ "s pra",
+ "z no",
+ "de n",
+ "s mo",
+ "je sz",
+ "k się",
+ "jest eś",
+ "po z",
+ "ni gdy",
+ "k sią",
+ "c óż",
+ "w s",
+ "po w",
+ "t ka",
+ "ś wie",
+ "sz ka",
+ "sa mo",
+ "s ł",
+ "rz ę",
+ "na le",
+ "chce sz",
+ "ni k",
+ "p ę",
+ "chy ba",
+ "cią g",
+ "ją cy",
+ "wo j",
+ "na sze",
+ "mnie j",
+ "wię cej",
+ "z wy",
+ "o sta",
+ "f e",
+ "wa ż",
+ "h o",
+ "se r",
+ "śmie r",
+ "wie r",
+ "dz ą",
+ "za ś",
+ "gdy by",
+ "ja ki",
+ "wo l",
+ "wi n",
+ "d ą",
+ "ści a",
+ "roz ma",
+ "wa l",
+ "pa nie",
+ "sta r",
+ "ka z",
+ "je żeli",
+ "d em",
+ "w ra",
+ "ko ń",
+ "sie bie",
+ "zno wu",
+ "p ró",
+ "cz em",
+ "st wa",
+ "i sto",
+ "pó ł",
+ "d ał",
+ "ko bie",
+ "ała m",
+ "wy ch",
+ "ce sa",
+ "ni ch",
+ "za wsze",
+ "dzi ć",
+ "te ż",
+ "le pie",
+ "pro szę",
+ "k re",
+ "t wa",
+ "o t",
+ "ł ą",
+ "ch u",
+ "c ą",
+ "p rz",
+ "ł e",
+ "sze dł",
+ "od powie",
+ "my śli",
+ "ś wią",
+ "e n",
+ "e r",
+ "d e",
+ "a n",
+ "e t",
+ "i j",
+ "i n",
+ "e l",
+ "a a",
+ "s t",
+ "o r",
+ "g e",
+ "i s",
+ "a t",
+ "i e",
+ "c h",
+ "o n",
+ "e en",
+ "h et",
+ "i t",
+ "v er",
+ "aa r",
+ "a l",
+ "o or",
+ "g en",
+ "v an",
+ "o p",
+ "d en",
+ "h e",
+ "o m",
+ "t e",
+ "w e",
+ "i k",
+ "r e",
+ "z e",
+ "ij n",
+ "d at",
+ "b e",
+ "d er",
+ "in g",
+ "o e",
+ "ij k",
+ "a an",
+ "ch t",
+ "v oor",
+ "l e",
+ "i et",
+ "r o",
+ "m o",
+ "k en",
+ "z ijn",
+ "m en",
+ "i g",
+ "j e",
+ "n iet",
+ "a r",
+ "o o",
+ "i d",
+ "u n",
+ "i l",
+ "s ch",
+ "mo et",
+ "st e",
+ "u r",
+ "o l",
+ "he b",
+ "u it",
+ "g el",
+ "w ij",
+ "a s",
+ "m e",
+ "t en",
+ "w or",
+ "o u",
+ "v en",
+ "l en",
+ "aa t",
+ "d it",
+ "m et",
+ "r a",
+ "b en",
+ "s p",
+ "o ver",
+ "d ie",
+ "n o",
+ "w er",
+ "l ijk",
+ "f t",
+ "s l",
+ "an d",
+ "v e",
+ "t er",
+ "i er",
+ "i en",
+ "t o",
+ "d aar",
+ "g r",
+ "b el",
+ "de ze",
+ "d u",
+ "a g",
+ "k an",
+ "wor den",
+ "in gen",
+ "moet en",
+ "n en",
+ "on der",
+ "heb ben",
+ "r u",
+ "oo k",
+ "s en",
+ "c t",
+ "k t",
+ "no g",
+ "aa l",
+ "w as",
+ "u l",
+ "e er",
+ "b ij",
+ "m ijn",
+ "p ro",
+ "v ol",
+ "d o",
+ "k om",
+ "at ie",
+ "e ft",
+ "k el",
+ "al s",
+ "r ij",
+ "he id",
+ "a f",
+ "st el",
+ "m aar",
+ "a p",
+ "we e",
+ "a d",
+ "he eft",
+ "w aar",
+ "i cht",
+ "d an",
+ "er en",
+ "n e",
+ "w el",
+ "w at",
+ "w il",
+ "a cht",
+ "aa g",
+ "ge b",
+ "c on",
+ "z o",
+ "k e",
+ "b et",
+ "h ij",
+ "d ig",
+ "k un",
+ "u w",
+ "d t",
+ "d oor",
+ "t ij",
+ "a m",
+ "an g",
+ "on d",
+ "er s",
+ "is ch",
+ "ge en",
+ "i ge",
+ "ge v",
+ "ve el",
+ "n u",
+ "m a",
+ "on s",
+ "o f",
+ "b l",
+ "n aar",
+ "g ro",
+ "p l",
+ "an der",
+ "at en",
+ "kun nen",
+ "e cht",
+ "h ier",
+ "g oe",
+ "an t",
+ "u s",
+ "t wee",
+ "on t",
+ "de lijk",
+ "el e",
+ "u ur",
+ "al le",
+ "t oe",
+ "me er",
+ "i st",
+ "n a",
+ "n ie",
+ "on ze",
+ "l o",
+ "i m",
+ "p en",
+ "h ad",
+ "tij d",
+ "h oe",
+ "to t",
+ "z ou",
+ "a k",
+ "aa k",
+ "a men",
+ "d r",
+ "w oor",
+ "s e",
+ "wor dt",
+ "o t",
+ "gel ijk",
+ "g aan",
+ "i c",
+ "g er",
+ "k er",
+ "el d",
+ "e m",
+ "h ou",
+ "de l",
+ "z en",
+ "z el",
+ "te gen",
+ "b o",
+ "kom en",
+ "c om",
+ "i gen",
+ "e it",
+ "wer k",
+ "goe d",
+ "z al",
+ "z ij",
+ "sl ag",
+ "e s",
+ "z ien",
+ "a st",
+ "echt er",
+ "it ie",
+ "t ie",
+ "el ijk",
+ "m is",
+ "isch e",
+ "bel an",
+ "h aar",
+ "i ch",
+ "b er",
+ "h an",
+ "v r",
+ "al e",
+ "c i",
+ "gr ijk",
+ "in d",
+ "do en",
+ "l and",
+ "belan grijk",
+ "p un",
+ "op en",
+ "ct ie",
+ "zel f",
+ "m ij",
+ "it eit",
+ "ste m",
+ "me e",
+ "ar en",
+ "al l",
+ "b r",
+ "re cht",
+ "d ien",
+ "h u",
+ "g aat",
+ "pro b",
+ "m oe",
+ "p er",
+ "a u",
+ "ul len",
+ "z ich",
+ "daar om",
+ "or m",
+ "k l",
+ "v o",
+ "en t",
+ "st aat",
+ "z it",
+ "du i",
+ "n at",
+ "du s",
+ "d s",
+ "ver slag",
+ "kel ijk",
+ "prob le",
+ "w et",
+ "ge m",
+ "c r",
+ "i on",
+ "p r",
+ "sch ap",
+ "g d",
+ "h un",
+ "z a",
+ "er d",
+ "z et",
+ "st aan",
+ "st r",
+ "m aal",
+ "in der",
+ "e id",
+ "st en",
+ "p ar",
+ "k ken",
+ "ge d",
+ "z ullen",
+ "re s",
+ "men sen",
+ "j aar",
+ "re gel",
+ "ie der",
+ "vol gen",
+ "ge ven",
+ "e ven",
+ "l u",
+ "bl ij",
+ "i ë",
+ "k o",
+ "u we",
+ "m an",
+ "ma ken",
+ "l ie",
+ "g a",
+ "oe k",
+ "nie uwe",
+ "b aar",
+ "h o",
+ "h er",
+ "in ter",
+ "ander e",
+ "ru ik",
+ "s u",
+ "a gen",
+ "or t",
+ "m er",
+ "ou w",
+ "st er",
+ "wil len",
+ "aa kt",
+ "h oo",
+ "an den",
+ "f f",
+ "l ig",
+ "t re",
+ "s amen",
+ "ze er",
+ "dui delijk",
+ "ant woor",
+ "he el",
+ "men t",
+ "pun t",
+ "hou den",
+ "we g",
+ "vr aag",
+ "gel e",
+ "een s",
+ "be sch",
+ "om en",
+ "er g",
+ "do el",
+ "d ag",
+ "sp e",
+ "ur en",
+ "ing s",
+ "or en",
+ "l ang",
+ "de len",
+ "m ar",
+ "ste un",
+ "in nen",
+ "p ol",
+ "o on",
+ "i de",
+ "s n",
+ "s ie",
+ "r icht",
+ "z onder",
+ "no dig",
+ "all een",
+ "m id",
+ "ra gen",
+ "iet s",
+ "ver sch",
+ "geb ruik",
+ "st u",
+ "ro uw",
+ "stel len",
+ "be g",
+ "men ten",
+ "v in",
+ "eer ste",
+ "l aat",
+ "gro ot",
+ "oo d",
+ "to ch",
+ "l aten",
+ "aar d",
+ "s le",
+ "de el",
+ "st and",
+ "pl aat",
+ "re e",
+ "bet re",
+ "d i",
+ "l id",
+ "uit en",
+ "ra cht",
+ "bel eid",
+ "g et",
+ "ar t",
+ "st ie",
+ "st aten",
+ "g gen",
+ "re ken",
+ "e in",
+ "al en",
+ "m ing",
+ "mo gelijk",
+ "gro te",
+ "al tijd",
+ "z or",
+ "en kel",
+ "w ik",
+ "pol itie",
+ "e igen",
+ "el k",
+ "han del",
+ "g t",
+ "k we",
+ "m aat",
+ "el en",
+ "i p",
+ "v rij",
+ "s om",
+ "je s",
+ "aa m",
+ "hu is",
+ "v al",
+ "we er",
+ "lid staten",
+ "k ing",
+ "k le",
+ "be d",
+ "gev al",
+ "stel l",
+ "a i",
+ "wik kel",
+ "kwe stie",
+ "t al",
+ "ste e",
+ "a b",
+ "h el",
+ "kom st",
+ "p as",
+ "s s",
+ "it u",
+ "i den",
+ "eer d",
+ "m in",
+ "c e",
+ "p o",
+ "twee de",
+ "proble em",
+ "w aren",
+ "us sen",
+ "sn el",
+ "t ig",
+ "ge w",
+ "j u",
+ "ul t",
+ "ne men",
+ "com mis",
+ "versch il",
+ "k on",
+ "z oek",
+ "k rij",
+ "gr aag",
+ "den k",
+ "l anden",
+ "re den",
+ "be sl",
+ "oe g",
+ "bet er",
+ "he den",
+ "m ag",
+ "p e",
+ "bo ven",
+ "a c",
+ "con t",
+ "f d",
+ "h ele",
+ "k r",
+ "v ier",
+ "w in",
+ "ge z",
+ "k w",
+ "m il",
+ "v or",
+ "he m",
+ "ra m",
+ "aa s",
+ "ont wikkel",
+ "dr ie",
+ "v aak",
+ "plaat s",
+ "l a",
+ "g ang",
+ "ij f",
+ "f in",
+ "nat uur",
+ "t ussen",
+ "u g",
+ "in e",
+ "d a",
+ "b at",
+ "kom t",
+ "w acht",
+ "aa d",
+ "u t",
+ "é n",
+ "acht er",
+ "geb ie",
+ "ver k",
+ "lig t",
+ "c es",
+ "nie uw",
+ "van d",
+ "s t",
+ "n í",
+ "j e",
+ "p o",
+ "c h",
+ "r o",
+ "n a",
+ "s e",
+ "t o",
+ "n e",
+ "l e",
+ "k o",
+ "l a",
+ "d o",
+ "r a",
+ "n o",
+ "t e",
+ "h o",
+ "n ě",
+ "v a",
+ "l i",
+ "l o",
+ "ř e",
+ "c e",
+ "d e",
+ "v e",
+ "b y",
+ "n i",
+ "s k",
+ "t a",
+ "n á",
+ "z a",
+ "p ro",
+ "v o",
+ "v ě",
+ "m e",
+ "v á",
+ "s o",
+ "k a",
+ "r á",
+ "v y",
+ "z e",
+ "m i",
+ "p a",
+ "t i",
+ "st a",
+ "m ě",
+ "n é",
+ "ř i",
+ "ř í",
+ "m o",
+ "ž e",
+ "m a",
+ "j í",
+ "v ý",
+ "j i",
+ "d ě",
+ "r e",
+ "d a",
+ "k u",
+ "j a",
+ "c i",
+ "r u",
+ "č e",
+ "o b",
+ "t ě",
+ "m u",
+ "k y",
+ "d i",
+ "š e",
+ "k é",
+ "š í",
+ "t u",
+ "v i",
+ "p ře",
+ "v í",
+ "s i",
+ "n ý",
+ "o d",
+ "so u",
+ "v é",
+ "n y",
+ "r i",
+ "d y",
+ "b u",
+ "b o",
+ "t y",
+ "l á",
+ "l u",
+ "n u",
+ "ž i",
+ "m á",
+ "st i",
+ "c í",
+ "z á",
+ "p ra",
+ "sk é",
+ "m í",
+ "c o",
+ "d u",
+ "d á",
+ "by l",
+ "st o",
+ "s a",
+ "t í",
+ "je d",
+ "p ří",
+ "p ři",
+ "t é",
+ "s í",
+ "č i",
+ "v ní",
+ "č a",
+ "d í",
+ "z i",
+ "st u",
+ "p e",
+ "b a",
+ "d ní",
+ "ro z",
+ "va l",
+ "l í",
+ "s po",
+ "k á",
+ "b e",
+ "p i",
+ "no u",
+ "ta k",
+ "st e",
+ "r y",
+ "l é",
+ "vě t",
+ "se m",
+ "p ě",
+ "ko n",
+ "ne j",
+ "l y",
+ "ko u",
+ "ý ch",
+ "b ě",
+ "p r",
+ "f i",
+ "p rá",
+ "a le",
+ "ja ko",
+ "po d",
+ "ž í",
+ "z í",
+ "j sou",
+ "j sem",
+ "ch o",
+ "l ní",
+ "c ké",
+ "t á",
+ "m y",
+ "a k",
+ "h u",
+ "va t",
+ "pře d",
+ "h la",
+ "k e",
+ "st á",
+ "č í",
+ "š i",
+ "s le",
+ "k la",
+ "š tě",
+ "lo u",
+ "m ů",
+ "z na",
+ "ch á",
+ "o r",
+ "p ů",
+ "h a",
+ "b i",
+ "ta ké",
+ "d ů",
+ "no st",
+ "t ře",
+ "te r",
+ "p u",
+ "i n",
+ "v r",
+ "ve l",
+ "sk u",
+ "v še",
+ "t ní",
+ "do b",
+ "by la",
+ "č ní",
+ "ja k",
+ "v u",
+ "je ho",
+ "b ý",
+ "vá ní",
+ "ný ch",
+ "po u",
+ "te n",
+ "t ři",
+ "v z",
+ "st ře",
+ "d va",
+ "h le",
+ "č á",
+ "no sti",
+ "c k",
+ "v š",
+ "vo u",
+ "s u",
+ "h e",
+ "h ra",
+ "je n",
+ "s y",
+ "da l",
+ "po z",
+ "s lo",
+ "te l",
+ "d ru",
+ "de n",
+ "vš ak",
+ "g i",
+ "k dy",
+ "by lo",
+ "bu de",
+ "st ra",
+ "j ší",
+ "m é",
+ "me n",
+ "vý ch",
+ "ní m",
+ "s m",
+ "ko li",
+ "r ů",
+ "t ra",
+ "mů že",
+ "ne ní",
+ "ho d",
+ "b í",
+ "do u",
+ "sk a",
+ "t ý",
+ "st ě",
+ "u je",
+ "s á",
+ "pě t",
+ "ne s",
+ "k rá",
+ "to m",
+ "st ví",
+ "v ně",
+ "se d",
+ "s vé",
+ "p í",
+ "z o",
+ "mu sí",
+ "u ž",
+ "tí m",
+ "jí cí",
+ "jed no",
+ "t r",
+ "ča s",
+ "e v",
+ "č ty",
+ "sk ý",
+ "ni c",
+ "ev ro",
+ "to ho",
+ "h y",
+ "k ter",
+ "r ní",
+ "st í",
+ "s vě",
+ "pa k",
+ "vše ch",
+ "k ů",
+ "n g",
+ "á d",
+ "chá zí",
+ "a ni",
+ "a r",
+ "jed na",
+ "bý t",
+ "t ro",
+ "k ra",
+ "pr vní",
+ "m no",
+ "ské ho",
+ "p á",
+ "p la",
+ "le m",
+ "ne bo",
+ "ke m",
+ "st ro",
+ "s la",
+ "né ho",
+ "z de",
+ "dal ší",
+ "ř a",
+ "čty ři",
+ "h rá",
+ "dru h",
+ "l ně",
+ "v la",
+ "sk ých",
+ "š ko",
+ "pů so",
+ "pro to",
+ "v ů",
+ "sk á",
+ "ve n",
+ "še st",
+ "d ně",
+ "je ště",
+ "me zi",
+ "te k",
+ "s ko",
+ "ch a",
+ "ně koli",
+ "be z",
+ "g ra",
+ "ji ž",
+ "č ně",
+ "j á",
+ "s lu",
+ "z ná",
+ "ve r",
+ "sed m",
+ "k ro",
+ "ta m",
+ "a no",
+ "v lá",
+ "o sm",
+ "byl y",
+ "vá m",
+ "ck ý",
+ "te ch",
+ "dě ji",
+ "vel mi",
+ "le ži",
+ "va la",
+ "l ý",
+ "t vo",
+ "spo le",
+ "ch u",
+ "stu p",
+ "mo ž",
+ "evro p",
+ "g e",
+ "sta l",
+ "j de",
+ "ch y",
+ "ro di",
+ "je jí",
+ "po li",
+ "de vět",
+ "s me",
+ "a ž",
+ "té to",
+ "re m",
+ "d é",
+ "f or",
+ "u ni",
+ "f o",
+ "ten to",
+ "a u",
+ "ka ž",
+ "nu la",
+ "na d",
+ "by ch",
+ "mo c",
+ "sto u",
+ "e x",
+ "le n",
+ "k do",
+ "z d",
+ "pra co",
+ "to mu",
+ "ný m",
+ "ži vo",
+ "ze m",
+ "f e",
+ "f u",
+ "ná sle",
+ "j o",
+ "sk y",
+ "ji ch",
+ "h á",
+ "mě l",
+ "dě la",
+ "j sme",
+ "p re",
+ "ni ce",
+ "ste j",
+ "ne m",
+ "st ní",
+ "he m",
+ "ná ro",
+ "z u",
+ "b li",
+ "ni t",
+ "pa r",
+ "a l",
+ "poz ději",
+ "ta ko",
+ "n ce",
+ "če r",
+ "ší m",
+ "ně co",
+ "vá l",
+ "ře j",
+ "krá t",
+ "á lní",
+ "u r",
+ ". .",
+ "a si",
+ "kter é",
+ "sta v",
+ "ma jí",
+ "my s",
+ "do bě",
+ "s ně",
+ "ce n",
+ "z y",
+ "z ku",
+ "t ů",
+ "ch od",
+ "s pě",
+ "je jich",
+ "sou čas",
+ "d r",
+ "va li",
+ "ri e",
+ "k te",
+ "pr ů",
+ "ze ní",
+ "pa t",
+ "a n",
+ "po tře",
+ "de m",
+ "d nes",
+ "ze mí",
+ "sa mo",
+ "zna m",
+ "b ra",
+ "má m",
+ "te dy",
+ "g o",
+ "hla vní",
+ "pou ží",
+ "b ní",
+ "ve de",
+ "le p",
+ "je k",
+ "pra v",
+ "poli ti",
+ "d ne",
+ "je m",
+ "le t",
+ "če ní",
+ "pro b",
+ "ne ž",
+ "dě l",
+ "fi l",
+ "č o",
+ "cí ch",
+ "st é",
+ "d lou",
+ "h i",
+ "a by",
+ "to u",
+ "několi k",
+ "d la",
+ "vy u",
+ "vi t",
+ "ho u",
+ "ck ých",
+ "no vé",
+ "či n",
+ "st y",
+ "dě lá",
+ "k ý",
+ "ob la",
+ "pod le",
+ "ra n",
+ "dů leži",
+ "ta to",
+ "po ku",
+ "ko ne",
+ "d ý",
+ "d vě",
+ "ž ád",
+ "nou t",
+ "t ku",
+ "t vr",
+ "cké ho",
+ "ro v",
+ "r é",
+ "te le",
+ "p sa",
+ "s vět",
+ "ti vní",
+ "do sta",
+ "te m",
+ "še l",
+ "druh é",
+ "s kou",
+ "ž o",
+ "jed ná",
+ "vý znam",
+ "prob lé",
+ "pu bli",
+ "vá n",
+ "od po",
+ "pod po",
+ "d le",
+ "ja ké",
+ "še ní",
+ "ví m",
+ "bě hem",
+ "na chází",
+ "s lou",
+ "pou ze",
+ "o tá",
+ "p lo",
+ "to vé",
+ "vět ši",
+ "ko mi",
+ "va jí",
+ "ty to",
+ "zá pa",
+ "z mě",
+ "mo h",
+ "ví ce",
+ "spole č",
+ "au to",
+ "pro ti",
+ "st ru",
+ "dě t",
+ "chá ze",
+ "že l",
+ "с т",
+ "е н",
+ "н о",
+ "н а",
+ "п р",
+ "т о",
+ "п о",
+ "р а",
+ "г о",
+ "к о",
+ "н е",
+ "в о",
+ "в а",
+ "е т",
+ "е р",
+ "н и",
+ "е л",
+ "и т",
+ "н ы",
+ "з а",
+ "р о",
+ "ен и",
+ "к а",
+ "л и",
+ "е м",
+ "д а",
+ "о б",
+ "л а",
+ "д о",
+ "с я",
+ "т ь",
+ "о т",
+ "л о",
+ "л ь",
+ "е д",
+ "с о",
+ "м и",
+ "р е",
+ "м о",
+ "ц и",
+ "пр о",
+ "т а",
+ "э то",
+ "к и",
+ "р у",
+ "пр и",
+ "т и",
+ "с е",
+ "ст а",
+ "в ы",
+ "м ы",
+ "в и",
+ "б ы",
+ "м а",
+ "е с",
+ "л я",
+ "ст и",
+ "л е",
+ "ч то",
+ "м е",
+ "р и",
+ "ч а",
+ "о д",
+ "е й",
+ "ел ь",
+ "ени я",
+ "г а",
+ "н у",
+ "с и",
+ "п а",
+ "ра з",
+ "б о",
+ "ст о",
+ "с у",
+ "с а",
+ "д у",
+ "е го",
+ "е ст",
+ "и н",
+ "ит ь",
+ "и з",
+ "ж е",
+ "м у",
+ "п ер",
+ "по д",
+ "ени е",
+ "с ь",
+ "к у",
+ "пр ед",
+ "но го",
+ "ны х",
+ "в ер",
+ "т е",
+ "но й",
+ "ци и",
+ "д е",
+ "р ы",
+ "д ел",
+ "л ю",
+ "в е",
+ "о н",
+ "м ен",
+ "г и",
+ "н я",
+ "б у",
+ "пр а",
+ "в се",
+ "ет ся",
+ "ст ь",
+ "ж а",
+ "до л",
+ "ж и",
+ "б е",
+ "ко н",
+ "с л",
+ "ш и",
+ "д и",
+ "ст в",
+ "с ко",
+ "ны е",
+ "ч и",
+ "ю т",
+ "д ер",
+ "ст ра",
+ "т ы",
+ "х од",
+ "щ и",
+ "з о",
+ "з на",
+ "но сти",
+ "ч ес",
+ "в ля",
+ "ва ть",
+ "о р",
+ "по л",
+ "в ет",
+ "та к",
+ "ш а",
+ "т у",
+ "с во",
+ "пр е",
+ "о на",
+ "ит ель",
+ "ны й",
+ "с ло",
+ "ка к",
+ "в л",
+ "но сть",
+ "х о",
+ "мо ж",
+ "п е",
+ "д ля",
+ "ни я",
+ "но е",
+ "ра с",
+ "дол ж",
+ "да р",
+ "т ель",
+ "с ка",
+ "п у",
+ "ст во",
+ "ко то",
+ "ра б",
+ "е е",
+ "ро д",
+ "э ти",
+ "с об",
+ "о ру",
+ "ж ен",
+ "ны м",
+ "ит и",
+ "ни е",
+ "ко м",
+ "д ет",
+ "ст у",
+ "г у",
+ "п и",
+ "ме ж",
+ "ени ю",
+ "т ер",
+ "раб от",
+ "во з",
+ "ци я",
+ "ко й",
+ "щ ест",
+ "г ра",
+ "з и",
+ "р я",
+ "меж ду",
+ "ст ва",
+ "в с",
+ "ел о",
+ "ш е",
+ "м ер",
+ "б а",
+ "з ы",
+ "л у",
+ "а ль",
+ "д ей",
+ "г ла",
+ "на род",
+ "к ти",
+ "пред ста",
+ "л ся",
+ "я вля",
+ "с ки",
+ "но в",
+ "ед ин",
+ "ро в",
+ "и с",
+ "ни ма",
+ "р ем",
+ "ход и",
+ "так же",
+ "д ру",
+ "а ть",
+ "сл ед",
+ "го во",
+ "на я",
+ "ю щи",
+ "ен ь",
+ "кото ры",
+ "х от",
+ "в у",
+ "и х",
+ "ем у",
+ "ч ит",
+ "ва ж",
+ "ор га",
+ "чес ки",
+ "щ е",
+ "к е",
+ "х а",
+ "по с",
+ "то м",
+ "бо ль",
+ "м не",
+ "па с",
+ "об ъ",
+ "пра в",
+ "кон ф",
+ "сл у",
+ "под дер",
+ "ст ви",
+ "на ш",
+ "ль ко",
+ "сто я",
+ "ну ю",
+ "л ем",
+ "ен ных",
+ "к ра",
+ "д ы",
+ "между народ",
+ "г да",
+ "не об",
+ "го су",
+ "ств у",
+ "ени и",
+ "госу дар",
+ "к то",
+ "и м",
+ "ч ест",
+ "р ет",
+ "во про",
+ "л ен",
+ "ел и",
+ "ро ва",
+ "ци й",
+ "на м",
+ "это й",
+ "ж ения",
+ "необ ходи",
+ "мен я",
+ "бы ло",
+ "си ли",
+ "ф и",
+ "в я",
+ "ш ь",
+ "это го",
+ "о ни",
+ "орга ни",
+ "бе зо",
+ "пр об",
+ "и ме",
+ "ре ш",
+ "б и",
+ "безо пас",
+ "ют ся",
+ "о ста",
+ "ен но",
+ "го д",
+ "ел а",
+ "предста в",
+ "ть ся",
+ "сло во",
+ "органи за",
+ "долж ны",
+ "это м",
+ "б ла",
+ "ч е",
+ "ч у",
+ "бла го",
+ "это му",
+ "в рем",
+ "с пе",
+ "но м",
+ "ени й",
+ "с по",
+ "на с",
+ "не т",
+ "з у",
+ "в ед",
+ "е ще",
+ "ска за",
+ "се й",
+ "ер ен",
+ "да н",
+ "са м",
+ "ел я",
+ "ра н",
+ "зы ва",
+ "явля ется",
+ "бу дет",
+ "кти в",
+ "т ре",
+ "дел е",
+ "м от",
+ "конф ерен",
+ "ла сь",
+ "ча с",
+ "сто ро",
+ "ко го",
+ "е з",
+ "не й",
+ "о с",
+ "ли сь",
+ "раз ору",
+ "пер е",
+ "с си",
+ "ны ми",
+ "про ц",
+ "го ло",
+ "ч ело",
+ "бо ле",
+ "чело ве",
+ "с ер",
+ "п л",
+ "ч ет",
+ "стра н",
+ "п я",
+ "бы л",
+ "к ла",
+ "то в",
+ "ж д",
+ "дел а",
+ "е ра",
+ "у же",
+ "со вет",
+ "г ен",
+ "безопас ности",
+ "ц а",
+ "се да",
+ "по з",
+ "от вет",
+ "проб лем",
+ "на ко",
+ "т ем",
+ "до ста",
+ "п ы",
+ "щ а",
+ "во й",
+ "су щест",
+ "необходи мо",
+ "бы ть",
+ "мож ет",
+ "д ем",
+ "что бы",
+ "е к",
+ "ч ер",
+ "у сили",
+ "ре с",
+ "ру д",
+ "един енных",
+ "д об",
+ "до сти",
+ "ств ен",
+ "я дер",
+ "год ня",
+ "ка за",
+ "се годня",
+ "сей час",
+ "то лько",
+ "во д",
+ "ес ь",
+ "м ного",
+ "бу ду",
+ "е в",
+ "ест ь",
+ "т ри",
+ "об щест",
+ ". .",
+ "я вл",
+ "вы сту",
+ "р ед",
+ "с чит",
+ "с ит",
+ "деле га",
+ "ло ж",
+ "это т",
+ "ф ор",
+ "к лю",
+ "воз мож",
+ "ва ния",
+ "б ли",
+ "и ли",
+ "в з",
+ "на ций",
+ "ско го",
+ "при ня",
+ "п ла",
+ "о ч",
+ "ить ся",
+ "ст е",
+ "на ши",
+ "которы е",
+ "а р",
+ "име ет",
+ "с от",
+ "зна ч",
+ "пер ь",
+ "след у",
+ "ен ы",
+ "та ки",
+ "объ единенных",
+ "ст ро",
+ "те перь",
+ "б ле",
+ "благо дар",
+ "раз в",
+ "а н",
+ "жи ва",
+ "оч ень",
+ "я т",
+ "бе з",
+ "об ес",
+ "г ро",
+ "ло сь",
+ "с ы",
+ "организа ции",
+ "ч лен",
+ "то го",
+ "она ль",
+ "ж да",
+ "все х",
+ "с вя",
+ "боле е",
+ "со в",
+ "ко гда",
+ "во т",
+ "к ре",
+ "к ры",
+ "по этому",
+ "во ль",
+ "о й",
+ "ген ера",
+ "ч ем",
+ "л ы",
+ "пол ити",
+ "в ен",
+ "конферен ции",
+ "проц ес",
+ "б я",
+ "ит е",
+ "от но",
+ "разв ити",
+ "а ф",
+ "ю щ",
+ "в но",
+ "ми р",
+ "ни и",
+ "ка я",
+ "а с",
+ "итель но",
+ "в то",
+ "ени ем",
+ "генера ль",
+ "пр от",
+ "вс ем",
+ "сам бле",
+ "ас самбле",
+ "о м",
+ "з д",
+ "с мот",
+ "ре ги",
+ "ч его",
+ "од нако",
+ "усили я",
+ "дей стви",
+ "ч но",
+ "у ча",
+ "об раз",
+ "во с",
+ "э та",
+ "пер его",
+ "гово р",
+ "ва м",
+ "мо ло",
+ "врем я",
+ "д ь",
+ "хот ел",
+ "г ру",
+ "за явл",
+ "пре доста",
+ "по ль",
+ "не е",
+ "ре зо",
+ "перего во",
+ "резо лю",
+ "к рет",
+ "поддер ж",
+ "обес пе",
+ "не го",
+ "представ ит",
+ "на де",
+ "к ри",
+ "ч ь",
+ "про ек",
+ "л ет",
+ "дру ги",
+ "ا ل",
+ "َ ا",
+ "و َ",
+ "ّ َ",
+ "ِ ي",
+ "أ َ",
+ "ل َ",
+ "ن َ",
+ "ال ْ",
+ "ه ُ",
+ "ُ و",
+ "م ا",
+ "ن ْ",
+ "م ن",
+ "ع َ",
+ "ن ا",
+ "ل ا",
+ "م َ",
+ "ت َ",
+ "ف َ",
+ "أ ن",
+ "ل ي",
+ "م ِ",
+ "ا ن",
+ "ف ي",
+ "ر َ",
+ "ي َ",
+ "ه ِ",
+ "م ْ",
+ "ق َ",
+ "ب ِ",
+ "ل ى",
+ "ي ن",
+ "إ ِ",
+ "ل ِ",
+ "و ا",
+ "ك َ",
+ "ه ا",
+ "ً ا",
+ "م ُ",
+ "و ن",
+ "ال م",
+ "ب َ",
+ "ي ا",
+ "ذ ا",
+ "س ا",
+ "ال ل",
+ "م ي",
+ "ي ْ",
+ "ر ا",
+ "ر ي",
+ "ل ك",
+ "م َا",
+ "ن َّ",
+ "ل م",
+ "إ ن",
+ "س ت",
+ "و م",
+ "ّ َا",
+ "ل َا",
+ "ه م",
+ "ّ ِ",
+ "ك ُ",
+ "ك ان",
+ "س َ",
+ "ب ا",
+ "د ي",
+ "ح َ",
+ "ع ْ",
+ "ب ي",
+ "ال أ",
+ "و ل",
+ "ف ِي",
+ "ر ِ",
+ "د ا",
+ "مِ نْ",
+ "ُو نَ",
+ "و ْ",
+ "ه َا",
+ "ّ ُ",
+ "ال س",
+ "ال َ",
+ "ن ي",
+ "ل ْ",
+ "ت ُ",
+ "ه ل",
+ "ر ة",
+ "د َ",
+ "س ْ",
+ "ت ِ",
+ "ن َا",
+ "ر ْ",
+ "الل َّ",
+ "سا مي",
+ "ك ن",
+ "ك ل",
+ "ه َ",
+ "عَ لَ",
+ "ع لى",
+ "م ع",
+ "إ لى",
+ "ق د",
+ "ال ر",
+ "ُو ا",
+ "ي ر",
+ "ع ن",
+ "ي ُ",
+ "ن ِ",
+ "ب ْ",
+ "ال ح",
+ "هُ مْ",
+ "ق ا",
+ "ذ ه",
+ "ال ت",
+ "ِي نَ",
+ "ج َ",
+ "ه ذا",
+ "ع د",
+ "ال ع",
+ "د ْ",
+ "قَ الَ",
+ "ر ُ",
+ "ي م",
+ "ي ة",
+ "ن ُ",
+ "خ َ",
+ "ر ب",
+ "ال ك",
+ "و َا",
+ "أ نا",
+ "ة ِ",
+ "ال ن",
+ "ح د",
+ "ع ِ",
+ "ت ا",
+ "ه و",
+ "ف ا",
+ "ع ا",
+ "ال ش",
+ "ل ُ",
+ "ي ت",
+ "ذ َا",
+ "ي ع",
+ "ال ذ",
+ "ح ْ",
+ "ال ص",
+ "إِ نَّ",
+ "ج ا",
+ "ع لي",
+ "ك َا",
+ "ب ُ",
+ "ت ع",
+ "و ق",
+ "م ل",
+ "ل َّ",
+ "ي د",
+ "أ خ",
+ "ر ف",
+ "ت ي",
+ "ال ِ",
+ "ّ ا",
+ "ذ لك",
+ "أَ نْ",
+ "س ِ",
+ "ت وم",
+ "م ر",
+ "مَ نْ",
+ "ب ل",
+ "ال ق",
+ "الل ه",
+ "ِي َ",
+ "ك م",
+ "ذ َ",
+ "ع ل",
+ "ح ب",
+ "س ي",
+ "ع ُ",
+ "ال ج",
+ "ال د",
+ "ش َ",
+ "ت ك",
+ "ف ْ",
+ "ص َ",
+ "ل ل",
+ "د ِ",
+ "ب ر",
+ "ف ِ",
+ "ت ه",
+ "أ ع",
+ "ت ْ",
+ "ق ْ",
+ "الْ أَ",
+ "ئ ِ",
+ "عَ نْ",
+ "و ر",
+ "ح ا",
+ "ال َّ",
+ "م ت",
+ "ف ر",
+ "د ُ",
+ "ه نا",
+ "وَ أَ",
+ "ت ب",
+ "ة ُ",
+ "أ ي",
+ "س ب",
+ "ري د",
+ "و ج",
+ "كُ مْ",
+ "ح ِ",
+ "ك ْ",
+ "د ر",
+ "َا ء",
+ "ه ذه",
+ "ال ط",
+ "الْ مُ",
+ "د ة",
+ "ق ل",
+ "غ َ",
+ "ي وم",
+ "الَّ ذ",
+ "ك ر",
+ "ت ر",
+ "ك ِ",
+ "ك ي",
+ "عَلَ ى",
+ "رَ ب",
+ "ع ة",
+ "ق ُ",
+ "ج ْ",
+ "ف ض",
+ "ل ة",
+ "ه ْ",
+ "ر َا",
+ "وَ لَ",
+ "الْ مَ",
+ "أَ نَّ",
+ "ي َا",
+ "أ ُ",
+ "ش ي",
+ "اللَّ هُ",
+ "لَ ى",
+ "ق ِ",
+ "أ ت",
+ "عَلَ يْ",
+ "اللَّ هِ",
+ "ال ب",
+ "ض َ",
+ "ة ً",
+ "ق ي",
+ "ا ر",
+ "ب د",
+ "خ ْ",
+ "سْ تَ",
+ "ط َ",
+ "قَ دْ",
+ "ذه ب",
+ "أ م",
+ "ما ذا",
+ "وَ إِ",
+ "ة ٌ",
+ "و نَ",
+ "لي لى",
+ "و لا",
+ "ح ُ",
+ "ه ي",
+ "ص ل",
+ "ال خ",
+ "و د",
+ "لي س",
+ "ل دي",
+ "ق ال",
+ "كَا نَ",
+ "م َّ",
+ "ح ي",
+ "ت م",
+ "ل ن",
+ "وَ لَا",
+ "ب ع",
+ "يم كن",
+ "س ُ",
+ "ة َ",
+ "ح ت",
+ "ر ًا",
+ "ك ا",
+ "ش ا",
+ "هِ مْ",
+ "لَ هُ",
+ "ز َ",
+ "دا ً",
+ "م س",
+ "ك ث",
+ "الْ عَ",
+ "ج ِ",
+ "ص ْ",
+ "ف َا",
+ "ل ه",
+ "و ي",
+ "ع َا",
+ "هُ وَ",
+ "ب ِي",
+ "ب َا",
+ "أ س",
+ "ث َ",
+ "ل ِي",
+ "ر ض",
+ "الر َّ",
+ "لِ كَ",
+ "ت َّ",
+ "ف ُ",
+ "ق ة",
+ "ف عل",
+ "مِ ن",
+ "ال آ",
+ "ث ُ",
+ "س م",
+ "م َّا",
+ "بِ هِ",
+ "ت ق",
+ "خ ر",
+ "ل قد",
+ "خ ل",
+ "ش ر",
+ "أن ت",
+ "ل َّا",
+ "س ن",
+ "الس َّ",
+ "الذ ي",
+ "س َا",
+ "و ما",
+ "ز ل",
+ "و ب",
+ "أ ْ",
+ "إ ذا",
+ "ر ِي",
+ "ح ة",
+ "ن ِي",
+ "الْ حَ",
+ "وَ قَالَ",
+ "ب ه",
+ "ة ٍ",
+ "س أ",
+ "ر ٌ",
+ "ب ال",
+ "م ة",
+ "ش ْ",
+ "و ت",
+ "عن د",
+ "ف س",
+ "بَ عْ",
+ "ه ر",
+ "ق ط",
+ "أ ح",
+ "إن ه",
+ "و ع",
+ "ف ت",
+ "غ ا",
+ "هنا ك",
+ "ب ت",
+ "مِ نَ",
+ "س ر",
+ "ذَ لِكَ",
+ "ر س",
+ "حد ث",
+ "غ ْ",
+ "ّ ِي",
+ "ال إ",
+ "وَ يَ",
+ "ج ل",
+ "ا ست",
+ "ق ِي",
+ "ع ب",
+ "و س",
+ "ي ش",
+ "الَّذ ِينَ",
+ "تا ب",
+ "د ِي",
+ "ج ب",
+ "ك ون",
+ "ب ن",
+ "ال ث",
+ "لَ يْ",
+ "ب عد",
+ "وَ الْ",
+ "فَ أَ",
+ "ع م",
+ "هُ م",
+ "ت ن",
+ "ذ ْ",
+ "أ ص",
+ "أ ين",
+ "رَب ِّ",
+ "الذ ين",
+ "إِ ن",
+ "ب ين",
+ "ج ُ",
+ "عَلَيْ هِ",
+ "ح َا",
+ "ل و",
+ "ست ط",
+ "ظ ر",
+ "لَ مْ",
+ "ء ِ",
+ "كُ ل",
+ "ط ل",
+ "ت َا",
+ "ض ُ",
+ "كن ت",
+ "ل ًا",
+ "م ٌ",
+ "ق بل",
+ "ـ ـ",
+ "ذ ِ",
+ "قَ وْ",
+ "ص ِ",
+ "م ًا",
+ "كان ت",
+ "ص ا",
+ "ي ق",
+ "ال ف",
+ "ال نا",
+ "م ٍ",
+ "إِ نْ",
+ "ال نَّ",
+ "ج د",
+ "وَ مَا",
+ "ت ت",
+ "ب ح",
+ "م كان",
+ "كي ف",
+ "ّ ة",
+ "ال ا",
+ "ج َا",
+ "أ و",
+ "سا عد",
+ "ض ِ",
+ "إ لا",
+ "را ً",
+ "ق َا",
+ "ر أ",
+ "ع ت",
+ "أ حد",
+ "ه د",
+ "ض ا",
+ "ط ر",
+ "أ ق",
+ "ما ء",
+ "د َّ",
+ "ال با",
+ "م ُو",
+ "أَ وْ",
+ "ط ا",
+ "ق ُو",
+ "خ ِ",
+ "ت ل",
+ "ستط يع",
+ "د َا",
+ "الن َّا",
+ "إ لَى",
+ "وَ تَ",
+ "هَ ذَا",
+ "ب ة",
+ "علي ك",
+ "ج ر",
+ "ال من",
+ "ز ا",
+ "ر ٍ",
+ "د ع",
+ "ّ ًا",
+ "س ة",
+ "ثُ مَّ",
+ "شي ء",
+ "ال غ",
+ "ت ح",
+ "ر ُونَ",
+ "ال يوم",
+ "م ِي",
+ "ن ُوا",
+ "أ ر",
+ "تُ مْ",
+ "ع ر",
+ "ي ف",
+ "أ ب",
+ "د ًا",
+ "ص َا",
+ "الت َّ",
+ "أ ريد",
+ "ال ز",
+ "يَ وْ",
+ "إ لي",
+ "ج ي",
+ "يَ عْ",
+ "فض ل",
+ "ال إن",
+ "أن ه",
+ "n g",
+ "i 4",
+ "a n",
+ "s h",
+ "z h",
+ "i 2",
+ "ng 1",
+ "u 4",
+ "i 1",
+ "ng 2",
+ "d e",
+ "j i",
+ "a o",
+ "x i",
+ "u 3",
+ "de 5",
+ "e 4",
+ "i 3",
+ "ng 4",
+ "an 4",
+ "e n",
+ "u o",
+ "sh i4",
+ "an 2",
+ "u 2",
+ "c h",
+ "u 1",
+ "ng 3",
+ "a 1",
+ "an 1",
+ "e 2",
+ "a 4",
+ "e i4",
+ "o ng1",
+ "a i4",
+ "ao 4",
+ "h u",
+ "a ng1",
+ "l i",
+ "y o",
+ "an 3",
+ "w ei4",
+ "uo 2",
+ "n 1",
+ "en 2",
+ "ao 3",
+ "e 1",
+ "y u",
+ "q i",
+ "e ng2",
+ "zh o",
+ "a ng3",
+ "a ng4",
+ "a ng2",
+ "uo 4",
+ "m i",
+ "g e4",
+ "y i1",
+ "g uo2",
+ "e r",
+ "b i",
+ "a 3",
+ "h e2",
+ "e 3",
+ "y i2",
+ "d i4",
+ "zh ong1",
+ "b u4",
+ "g u",
+ "a i2",
+ "n 2",
+ "z ai4",
+ "sh i2",
+ "e ng1",
+ "r en2",
+ "o ng2",
+ "xi an4",
+ "y i",
+ "x u",
+ "n 4",
+ "l i4",
+ "en 4",
+ "y u2",
+ "e i2",
+ "yi2 ge4",
+ "o u4",
+ "e i3",
+ "d i",
+ "u i4",
+ "a 2",
+ "yo u3",
+ "ao 1",
+ "d a4",
+ "ch eng2",
+ "en 1",
+ "e ng4",
+ "y i4",
+ "s i1",
+ "zh i4",
+ "ji a1",
+ "yu an2",
+ "n i",
+ "t a1",
+ "de5 yi2ge4",
+ "k e1",
+ "sh u3",
+ "x i1",
+ "j i2",
+ "ao 2",
+ "t i",
+ "o u3",
+ "o ng4",
+ "xi a4",
+ "a i1",
+ "g ong1",
+ "zh i1",
+ "en 3",
+ "w ei2",
+ "j u",
+ "xu e2",
+ "q u1",
+ "zho u1",
+ "er 3",
+ "mi ng2",
+ "zho ng3",
+ "l i3",
+ "w u4",
+ "y i3",
+ "uo 1",
+ "e 5",
+ "j i4",
+ "xi ng2",
+ "ji an4",
+ "hu a4",
+ "y u3",
+ "uo 3",
+ "j i1",
+ "a i3",
+ "z uo4",
+ "h ou4",
+ "hu i4",
+ "e i1",
+ "ni an2",
+ "q i2",
+ "p i",
+ "d ao4",
+ "sh eng1",
+ "de 2",
+ "d ai4",
+ "u an2",
+ "zh e4",
+ "zh eng4",
+ "b en3",
+ "sh ang4",
+ "zh u3",
+ "b ei4",
+ "y e4",
+ "ch u1",
+ "zh an4",
+ "l e5",
+ "l ai2",
+ "sh i3",
+ "n an2",
+ "r en4",
+ "yo u2",
+ "k e4",
+ "b a1",
+ "f u4",
+ "d ui4",
+ "y a4",
+ "m ei3",
+ "z i4",
+ "xi n1",
+ "ji ng1",
+ "zh u",
+ "n 3",
+ "yo ng4",
+ "m u4",
+ "ji ao4",
+ "y e3",
+ "ji n4",
+ "bi an4",
+ "l u4",
+ "q i1",
+ "sh e4",
+ "xi ang1",
+ "o ng3",
+ "sh u4",
+ "d ong4",
+ "s uo3",
+ "gu an1",
+ "s an1",
+ "b o",
+ "t e4",
+ "d uo1",
+ "f u2",
+ "mi n2",
+ "l a1",
+ "zh i2",
+ "zh en4",
+ "o u1",
+ "w u3",
+ "m a3",
+ "i 5",
+ "z i5",
+ "j u4",
+ "er 4",
+ "y ao4",
+ "xia4 de5yi2ge4",
+ "s i4",
+ "t u2",
+ "sh an1",
+ "z ui4",
+ "ch u",
+ "yi n1",
+ "er 2",
+ "t ong2",
+ "d ong1",
+ "y u4",
+ "y an2",
+ "qi an2",
+ "shu3 xia4de5yi2ge4",
+ "ju n1",
+ "k e3",
+ "w en2",
+ "f a3",
+ "l uo2",
+ "zh u4",
+ "x i4",
+ "k ou3",
+ "b ei3",
+ "ji an1",
+ "f a1",
+ "di an4",
+ "ji ang1",
+ "wei4 yu2",
+ "xi ang4",
+ "zh i3",
+ "e ng3",
+ "f ang1",
+ "l an2",
+ "sh u",
+ "r i4",
+ "li an2",
+ "sh ou3",
+ "m o",
+ "qi u2",
+ "ji n1",
+ "h uo4",
+ "shu3xia4de5yi2ge4 zhong3",
+ "f en1",
+ "n ei4",
+ "g ai1",
+ "mei3 guo2",
+ "u n2",
+ "g e2",
+ "b ao3",
+ "qi ng1",
+ "g ao1",
+ "t ai2",
+ "d u",
+ "xi ao3",
+ "ji e2",
+ "ti an1",
+ "ch ang2",
+ "q uan2",
+ "li e4",
+ "h ai3",
+ "f ei1",
+ "t i3",
+ "ju e2",
+ "o u2",
+ "c i3",
+ "z u2",
+ "n i2",
+ "bi ao3",
+ "zhong1 guo2",
+ "d u4",
+ "yu e4",
+ "xi ng4",
+ "sh eng4",
+ "ch e1",
+ "d an1",
+ "ji e1",
+ "li n2",
+ "pi ng2",
+ "f u3",
+ "g u3",
+ "ji e4",
+ "w o",
+ "v 3",
+ "sh eng3",
+ "n a4",
+ "yu an4",
+ "zh ang3",
+ "gu an3",
+ "d ao3",
+ "z u3",
+ "di ng4",
+ "di an3",
+ "c eng2",
+ "ren2 kou3",
+ "t ai4",
+ "t ong1",
+ "g uo4",
+ "n eng2",
+ "ch ang3",
+ "hu a2",
+ "li u2",
+ "yi ng1",
+ "xi ao4",
+ "c i4",
+ "bian4 hua4",
+ "li ang3",
+ "g ong4",
+ "zho ng4",
+ "de5 yi1",
+ "s e4",
+ "k ai1",
+ "w ang2",
+ "ji u4",
+ "sh i1",
+ "sh ou4",
+ "m ei2",
+ "k u",
+ "s u",
+ "f eng1",
+ "z e2",
+ "tu2 shi4",
+ "t i2",
+ "q i4",
+ "ji u3",
+ "sh en1",
+ "zh e3",
+ "ren2kou3 bian4hua4",
+ "ren2kou3bian4hua4 tu2shi4",
+ "di4 qu1",
+ "y ang2",
+ "m en",
+ "men 5",
+ "l ong2",
+ "bi ng4",
+ "ch an3",
+ "zh u1",
+ "w ei3",
+ "w ai4",
+ "xi ng1",
+ "bo 1",
+ "b i3",
+ "t ang2",
+ "hu a1",
+ "bo 2",
+ "shu i3",
+ "sh u1",
+ "d ou1",
+ "s ai4",
+ "ch ao2",
+ "b i4",
+ "li ng2",
+ "l ei4",
+ "da4 xue2",
+ "f en4",
+ "shu3 de5",
+ "m u3",
+ "ji ao1",
+ "d ang1",
+ "ch eng1",
+ "t ong3",
+ "n v3",
+ "q i3",
+ "y an3",
+ "mi an4",
+ "l uo4",
+ "ji ng4",
+ "g e1",
+ "r u4",
+ "d an4",
+ "ri4 ben3",
+ "p u3",
+ "yu n4",
+ "hu ang2",
+ "wo 3",
+ "l v",
+ "h ai2",
+ "shi4 yi1",
+ "xi e1",
+ "yi ng3",
+ "w u2",
+ "sh en2",
+ "w ang3",
+ "gu ang3",
+ "li u4",
+ "s u4",
+ "shi4 zhen4",
+ "c an1",
+ "c ao3",
+ "xi a2",
+ "k a3",
+ "d a2",
+ "h u4",
+ "b an4",
+ "d ang3",
+ "h u2",
+ "z ong3",
+ "de ng3",
+ "de5yi2ge4 shi4zhen4",
+ "ch uan2",
+ "mo 4",
+ "zh ang1",
+ "b an1",
+ "mo 2",
+ "ch a2",
+ "c e4",
+ "zhu3 yao4",
+ "t ou2",
+ "j u2",
+ "shi4 wei4yu2",
+ "s a4",
+ "u n1",
+ "ke3 yi3",
+ "d u1",
+ "h an4",
+ "li ang4",
+ "sh a1",
+ "ji a3",
+ "z i1",
+ "lv 4",
+ "f u1",
+ "xi an1",
+ "x u4",
+ "gu ang1",
+ "m eng2",
+ "b ao4",
+ "yo u4",
+ "r ong2",
+ "zhi1 yi1",
+ "w ei1",
+ "m ao2",
+ "guo2 jia1",
+ "c ong2",
+ "g ou4",
+ "ti e3",
+ "zh en1",
+ "d u2",
+ "bi an1",
+ "c i2",
+ "q u3",
+ "f an4",
+ "xi ang3",
+ "m en2",
+ "j u1",
+ "h ong2",
+ "z i3",
+ "ta1 men5",
+ "ji 3",
+ "z ong1",
+ "zhou1 de5yi2ge4shi4zhen4",
+ "t uan2",
+ "ji ng3",
+ "gong1 si1",
+ "xi e4",
+ "l i2",
+ "li4 shi3",
+ "b ao1",
+ "g ang3",
+ "gu i1",
+ "zh eng1",
+ "zhi2 wu4",
+ "ta1 de5",
+ "pi n3",
+ "zhu an1",
+ "ch ong2",
+ "shi3 yong4",
+ "w a3",
+ "sh uo1",
+ "chu an1",
+ "l ei2",
+ "w an1",
+ "h uo2",
+ "q u",
+ "s u1",
+ "z ao3",
+ "g ai3",
+ "q u4",
+ "g u4",
+ "l u",
+ "x i2",
+ "h ang2",
+ "yi ng4",
+ "c un1",
+ "g en1",
+ "yi ng2",
+ "ti ng2",
+ "cheng2 shi4",
+ "ji ang3",
+ "li ng3",
+ "l un2",
+ "bu4 fen4",
+ "de ng1",
+ "xu an3",
+ "dong4 wu4",
+ "de2 guo2",
+ "xi an3",
+ "f an3",
+ "zh e5",
+ "h an2",
+ "h ao4",
+ "m i4",
+ "r an2",
+ "qi n1",
+ "ti ao2",
+ "zh an3",
+ "h i",
+ "k a",
+ "n o",
+ "t e",
+ "s u",
+ "s hi",
+ "t a",
+ "t o",
+ "n a",
+ "w a",
+ "o u",
+ "r u",
+ "n i",
+ "k u",
+ "k i",
+ "g a",
+ "d e",
+ "k o",
+ "m a",
+ "r e",
+ "r a",
+ "m o",
+ "t su",
+ "w o",
+ "e n",
+ "r i",
+ "s a",
+ "d a",
+ "s e",
+ "j i",
+ "h a",
+ "c hi",
+ "k e",
+ "te ki",
+ "m i",
+ "y ou",
+ "s h",
+ "s o",
+ "y o",
+ "y a",
+ "na i",
+ "t te",
+ "a ru",
+ "b a",
+ "u u",
+ "t ta",
+ "ka i",
+ "ka n",
+ "shi te",
+ "m e",
+ "d o",
+ "mo no",
+ "se i",
+ "r o",
+ "ko to",
+ "ka ra",
+ "shi ta",
+ "b u",
+ "m u",
+ "c h",
+ "su ru",
+ "k ou",
+ "g o",
+ "ma su",
+ "ta i",
+ "f u",
+ "k en",
+ "i u",
+ "g en",
+ "wa re",
+ "shi n",
+ "z u",
+ "a i",
+ "o n",
+ "o ku",
+ "g i",
+ "d ou",
+ "n e",
+ "y uu",
+ "i ru",
+ "i te",
+ "ji ko",
+ "de su",
+ "j u",
+ "ra re",
+ "sh u",
+ "b e",
+ "sh ou",
+ "s ha",
+ "se kai",
+ "s ou",
+ "k you",
+ "ma shita",
+ "s en",
+ "na ra",
+ "sa n",
+ "ke i",
+ "i ta",
+ "a ri",
+ "i tsu",
+ "ko no",
+ "j ou",
+ "na ka",
+ "ch ou",
+ "so re",
+ "g u",
+ "na ru",
+ "ga ku",
+ "re ba",
+ "g e",
+ "h o",
+ "i n",
+ "hi to",
+ "sa i",
+ "na n",
+ "da i",
+ "tsu ku",
+ "shi ki",
+ "sa re",
+ "na ku",
+ "p p",
+ "bu n",
+ "ju n",
+ "so no",
+ "ka ku",
+ "z ai",
+ "b i",
+ "to u",
+ "wa ta",
+ "sh uu",
+ "i i",
+ "te i",
+ "ka re",
+ "y u",
+ "shi i",
+ "ma de",
+ "sh o",
+ "a n",
+ "ke reba",
+ "shi ka",
+ "i chi",
+ "ha n",
+ "de ki",
+ "ni n",
+ "ware ware",
+ "na kereba",
+ "o ite",
+ "h ou",
+ "ya ku",
+ "ra i",
+ "mu jun",
+ "l e",
+ "yo ku",
+ "bu tsu",
+ "o o",
+ "ko n",
+ "o mo",
+ "ga e",
+ "nara nai",
+ "ta chi",
+ "z en",
+ "ch uu",
+ "kan gae",
+ "ta ra",
+ "to ki",
+ "ko ro",
+ "mujun teki",
+ "z e",
+ "na ga",
+ "ji n",
+ "shi ma",
+ "te n",
+ "i ki",
+ "i ku",
+ "no u",
+ "i masu",
+ "r ou",
+ "h on",
+ "ka e",
+ "t to",
+ "ko re",
+ "ta n",
+ "ki ta",
+ "i s",
+ "da tta",
+ "ji tsu",
+ "ma e",
+ "i e",
+ "me i",
+ "da n",
+ "h e",
+ "to ku",
+ "dou itsu",
+ "ri tsu",
+ "k yuu",
+ "h you",
+ "rare ta",
+ "kei sei",
+ "k kan",
+ "rare ru",
+ "m ou",
+ "do ko",
+ "r you",
+ "da ke",
+ "naka tta",
+ "so ko",
+ "ta be",
+ "e r",
+ "ha na",
+ "c o",
+ "fu ku",
+ "p a",
+ "so n",
+ "ya su",
+ "ch o",
+ "wata ku",
+ "ya ma",
+ "z a",
+ "k yo",
+ "gen zai",
+ "b oku",
+ "a ta",
+ "j a",
+ "ka wa",
+ "ma sen",
+ "j uu",
+ "ro n",
+ "b o",
+ "na tte",
+ "wataku shi",
+ "yo tte",
+ "ma i",
+ "g ou",
+ "ha i",
+ "mo n",
+ "ba n",
+ "ji shin",
+ "c a",
+ "re te",
+ "n en",
+ "o ka",
+ "ka gaku",
+ "na tta",
+ "p o",
+ "ka ru",
+ "na ri",
+ "m en",
+ "ma ta",
+ "e i",
+ "ku ru",
+ "ga i",
+ "ka ri",
+ "sha kai",
+ "kou i",
+ "yo ri",
+ "se tsu",
+ "j o",
+ "re ru",
+ "to koro",
+ "ju tsu",
+ "i on",
+ "sa ku",
+ "tta i",
+ "c ha",
+ "nin gen",
+ "n u",
+ "c e",
+ "ta me",
+ "kan kyou",
+ "de n",
+ "o oku",
+ "i ma",
+ "wata shi",
+ "tsuku ru",
+ "su gi",
+ "b en",
+ "ji bun",
+ "shi tsu",
+ "ke ru",
+ "ki n",
+ "ki shi",
+ "shika shi",
+ "mo to",
+ "ma ri",
+ "i tte",
+ "de shita",
+ "n de",
+ "ari masu",
+ "te r",
+ "z ou",
+ "ko e",
+ "ze ttai",
+ "kkan teki",
+ "h en",
+ "re kishi",
+ "deki ru",
+ "tsu ka",
+ "l a",
+ "i tta",
+ "o i",
+ "ko butsu",
+ "mi ru",
+ "sh oku",
+ "shi masu",
+ "gi jutsu",
+ "g you",
+ "jou shiki",
+ "a tta",
+ "ho do",
+ "ko ko",
+ "tsuku rareta",
+ "z oku",
+ "hi tei",
+ "ko ku",
+ "rekishi teki",
+ "ke te",
+ "o ri",
+ "i mi",
+ "ka ko",
+ "naga ra",
+ "ka karu",
+ "shu tai",
+ "ha ji",
+ "ma n",
+ "ta ku",
+ "ra n",
+ "douitsu teki",
+ "z o",
+ "me te",
+ "re i",
+ "tsu u",
+ "sare te",
+ "gen jitsu",
+ "p e",
+ "s t",
+ "ba i",
+ "na wa",
+ "ji kan",
+ "wa ru",
+ "r t",
+ "a tsu",
+ "so ku",
+ "koui teki",
+ "a ra",
+ "u ma",
+ "a no",
+ "i de",
+ "ka ta",
+ "te tsu",
+ "ga wa",
+ "ke do",
+ "re ta",
+ "mi n",
+ "sa you",
+ "tte ru",
+ "to ri",
+ "p u",
+ "ki mi",
+ "b ou",
+ "mu ra",
+ "sare ru",
+ "ma chi",
+ "k ya",
+ "o sa",
+ "kon na",
+ "a ku",
+ "a l",
+ "sare ta",
+ "i pp",
+ "shi ku",
+ "u chi",
+ "hito tsu",
+ "ha tara",
+ "tachi ba",
+ "shi ro",
+ "ka tachi",
+ "to mo",
+ "e te",
+ "me ru",
+ "ni chi",
+ "da re",
+ "ka tta",
+ "e ru",
+ "su ki",
+ "a ge",
+ "oo ki",
+ "ma ru",
+ "mo ku",
+ "o ko",
+ "kangae rareru",
+ "o to",
+ "tan ni",
+ "ta da",
+ "tai teki",
+ "mo tte",
+ "ki nou",
+ "shi nai",
+ "k ki",
+ "u e",
+ "ta ri",
+ "l i",
+ "ra nai",
+ "k kou",
+ "mi rai",
+ "pp on",
+ "go to",
+ "hi n",
+ "hi tsu",
+ "te ru",
+ "mo chi",
+ "ka tsu",
+ "re n",
+ "n yuu",
+ "su i",
+ "zu ka",
+ "tsu ite",
+ "no mi",
+ "su gu",
+ "ku da",
+ "tetsu gaku",
+ "i ka",
+ "ron ri",
+ "o ki",
+ "ni ppon",
+ "p er",
+ "shi mashita",
+ "chi shiki",
+ "cho kkanteki",
+ "su ko",
+ "t ion",
+ "ku u",
+ "a na",
+ "a rou",
+ "ka tte",
+ "ku ri",
+ "i nai",
+ "hyou gen",
+ "i shiki",
+ "do ku",
+ "a tte",
+ "a tara",
+ "to n",
+ "wa ri",
+ "ka o",
+ "sei san",
+ "hana shi",
+ "s i",
+ "ka ke",
+ "na ji",
+ "su nawa",
+ "sunawa chi",
+ "u go",
+ "su u",
+ "ba ra",
+ "le v",
+ "hi ro",
+ "i wa",
+ "be tsu",
+ "yo i",
+ "se ru",
+ "shite ru",
+ "rare te",
+ "to shi",
+ "se ki",
+ "tai ritsu",
+ "wa kara",
+ "to kyo",
+ "k ka",
+ "k yoku",
+ "u n",
+ "i ro",
+ "mi te",
+ "sa ki",
+ "kan ji",
+ "mi ta",
+ "su be",
+ "r yoku",
+ "ma tta",
+ "kuda sai",
+ "omo i",
+ "ta no",
+ "ware ru",
+ "co m",
+ "hitsu you",
+ "ka shi",
+ "re nai",
+ "kan kei",
+ "a to",
+ "ga tte",
+ "o chi",
+ "mo tsu",
+ "in g",
+ "son zai",
+ "l l",
+ "o re",
+ "tai shite",
+ "a me",
+ "sei mei",
+ "ka no",
+ "gi ri",
+ "kangae ru",
+ "yu e",
+ "a sa",
+ "o naji",
+ "yo ru",
+ "ni ku",
+ "osa ka",
+ "suko shi",
+ "c k",
+ "ta ma",
+ "kano jo",
+ "ki te",
+ "mon dai",
+ "a mari",
+ "e ki",
+ "ko jin",
+ "ha ya",
+ "i t",
+ "de te",
+ "atara shii",
+ "a wa",
+ "ga kkou",
+ "tsu zu",
+ "shu kan",
+ "i mashita",
+ "mi na",
+ "ata e",
+ "da rou",
+ "hatara ku",
+ "ga ta",
+ "da chi",
+ "ma tsu",
+ "ari masen",
+ "sei butsu",
+ "mi tsu",
+ "he ya",
+ "yasu i",
+ "d i",
+ "de ni",
+ "no ko",
+ "ha ha",
+ "do mo",
+ "ka mi",
+ "su deni",
+ "na o",
+ "ra ku",
+ "i ke",
+ "a ki",
+ "me ta",
+ "l o",
+ "ko domo",
+ "so shite",
+ "ga me",
+ "ba kari",
+ "to te",
+ "ha tsu",
+ "mi se",
+ "moku teki",
+ "da kara",
+ "s z",
+ "e l",
+ "g y",
+ "e n",
+ "t t",
+ "e m",
+ "a n",
+ "a k",
+ "e r",
+ "a z",
+ "a l",
+ "e t",
+ "o l",
+ "e g",
+ "e k",
+ "m i",
+ "o n",
+ "é s",
+ "c s",
+ "a t",
+ "á r",
+ "h o",
+ "e z",
+ "á l",
+ "i s",
+ "á n",
+ "o r",
+ "a r",
+ "e gy",
+ "e s",
+ "é r",
+ "á t",
+ "o tt",
+ "e tt",
+ "m eg",
+ "t a",
+ "o k",
+ "o s",
+ "ho gy",
+ "n em",
+ "é g",
+ "n y",
+ "k i",
+ "é l",
+ "h a",
+ "á s",
+ "ü l",
+ "i n",
+ "mi n",
+ "n a",
+ "e d",
+ "o m",
+ "i k",
+ "k ö",
+ "m a",
+ "n i",
+ "v a",
+ "v ol",
+ "é t",
+ "b b",
+ "f el",
+ "i g",
+ "l e",
+ "r a",
+ "é n",
+ "t e",
+ "d e",
+ "a d",
+ "ó l",
+ "b e",
+ "on d",
+ "j a",
+ "r e",
+ "u l",
+ "b en",
+ "n ek",
+ "u t",
+ "vol t",
+ "b an",
+ "ö r",
+ "o g",
+ "a p",
+ "o d",
+ "á g",
+ "n k",
+ "é k",
+ "v al",
+ "k or",
+ "a m",
+ "i l",
+ "í t",
+ "á k",
+ "b a",
+ "u d",
+ "sz er",
+ "min d",
+ "o z",
+ "é p",
+ "el l",
+ "ér t",
+ "m ond",
+ "i t",
+ "sz t",
+ "n ak",
+ "a mi",
+ "n e",
+ "ő l",
+ "cs ak",
+ "n é",
+ "ma g",
+ "ol y",
+ "m er",
+ "ál l",
+ "án y",
+ "ö n",
+ "ö l",
+ "min t",
+ "m ár",
+ "ö tt",
+ "na gy",
+ "é sz",
+ "az t",
+ "el ő",
+ "t ud",
+ "o t",
+ "é ny",
+ "á z",
+ "m ég",
+ "kö z",
+ "el y",
+ "s ég",
+ "en t",
+ "s em",
+ "ta m",
+ "h et",
+ "h al",
+ "f i",
+ "a s",
+ "v an",
+ "ho z",
+ "v e",
+ "u k",
+ "k ez",
+ "á m",
+ "v el",
+ "b er",
+ "a j",
+ "u nk",
+ "i z",
+ "va gy",
+ "m os",
+ "sz em",
+ "em ber",
+ "f og",
+ "mer t",
+ "ü k",
+ "l en",
+ "ö s",
+ "e j",
+ "t al",
+ "h at",
+ "t ak",
+ "h i",
+ "m ás",
+ "s ág",
+ "ett e",
+ "l eg",
+ "ü nk",
+ "h át",
+ "sz a",
+ "on y",
+ "ez t",
+ "mind en",
+ "en d",
+ "ül t",
+ "h an",
+ "j ó",
+ "k is",
+ "á j",
+ "in t",
+ "ú gy",
+ "i d",
+ "mos t",
+ "ar t",
+ "í r",
+ "k er",
+ "i tt",
+ "a tt",
+ "el t",
+ "mond ta",
+ "k ell",
+ "l á",
+ "ak i",
+ "ál t",
+ "ér d",
+ "t ö",
+ "l an",
+ "v ár",
+ "h ol",
+ "t el",
+ "l át",
+ "ő k",
+ "v et",
+ "s e",
+ "ut án",
+ "k ét",
+ "na p",
+ "í v",
+ "ál y",
+ "v ég",
+ "ö k",
+ "i r",
+ "d ul",
+ "v is",
+ "né z",
+ "t er",
+ "á ban",
+ "k ül",
+ "ak kor",
+ "k ap",
+ "sz él",
+ "y en",
+ "ú j",
+ "i m",
+ "oly an",
+ "es en",
+ "k ed",
+ "h ely",
+ "t ör",
+ "b ól",
+ "el m",
+ "r á",
+ "ár a",
+ "r ó",
+ "l ó",
+ "vol na",
+ "t an",
+ "le het",
+ "e bb",
+ "t en",
+ "t ek",
+ "s ok",
+ "k al",
+ "f or",
+ "u g",
+ "ol t",
+ "k a",
+ "ek et",
+ "b or",
+ "f ej",
+ "g ond",
+ "a g",
+ "ak ar",
+ "f él",
+ "ú l",
+ "b el",
+ "ott a",
+ "mi t",
+ "val ami",
+ "j el",
+ "é d",
+ "ar c",
+ "u r",
+ "hal l",
+ "t i",
+ "f öl",
+ "á ba",
+ "ol g",
+ "ki r",
+ "ol d",
+ "m ar",
+ "k érd",
+ "j ár",
+ "ú r",
+ "sz e",
+ "z s",
+ "él et",
+ "j át",
+ "o v",
+ "u s",
+ "é z",
+ "v il",
+ "v er",
+ "ő r",
+ "á d",
+ "ö g",
+ "le sz",
+ "on t",
+ "b iz",
+ "k oz",
+ "á bb",
+ "kir ály",
+ "es t",
+ "a b",
+ "en g",
+ "ig az",
+ "b ar",
+ "ha j",
+ "d i",
+ "o b",
+ "k od",
+ "r ól",
+ "v ez",
+ "tö bb",
+ "sz ó",
+ "é ben",
+ "ö t",
+ "ny i",
+ "t á",
+ "sz ól",
+ "gond ol",
+ "eg ész",
+ "í gy",
+ "ő s",
+ "o bb",
+ "os an",
+ "b ől",
+ "a bb",
+ "c i",
+ "ő t",
+ "n ál",
+ "k ép",
+ "azt án",
+ "v i",
+ "t art",
+ "be szél",
+ "m en",
+ "elő tt",
+ "a szt",
+ "ma j",
+ "kö r",
+ "han g",
+ "í z",
+ "in cs",
+ "a i",
+ "é v",
+ "ó d",
+ "ó k",
+ "hoz z",
+ "t em",
+ "ok at",
+ "an y",
+ "nagy on",
+ "h áz",
+ "p er",
+ "p ed",
+ "ez te",
+ "et len",
+ "nek i",
+ "maj d",
+ "sz ony",
+ "án ak",
+ "fel é",
+ "egy szer",
+ "j e",
+ "ad t",
+ "gy er",
+ "ami kor",
+ "f oly",
+ "sz ak",
+ "ő d",
+ "h ú",
+ "á sz",
+ "am ely",
+ "h ar",
+ "ér e",
+ "il yen",
+ "od a",
+ "j ák",
+ "t ár",
+ "á val",
+ "l ak",
+ "t ó",
+ "m ent",
+ "gy an",
+ "él y",
+ "ú t",
+ "v ar",
+ "kez d",
+ "m ell",
+ "mi kor",
+ "h ez",
+ "val ó",
+ "k o",
+ "m es",
+ "szer et",
+ "r end",
+ "l et",
+ "vis sza",
+ "ig en",
+ "f ő",
+ "va s",
+ "as szony",
+ "r ől",
+ "ped ig",
+ "p i",
+ "sz ép",
+ "t ák",
+ "ö v",
+ "an i",
+ "vil ág",
+ "p en",
+ "mag a",
+ "t et",
+ "sz ik",
+ "é j",
+ "én t",
+ "j ött",
+ "s an",
+ "sz í",
+ "i de",
+ "g at",
+ "ett em",
+ "ul t",
+ "h ány",
+ "ás t",
+ "a hol",
+ "ők et",
+ "h ár",
+ "k el",
+ "n ő",
+ "cs i",
+ "tal ál",
+ "el te",
+ "lá tt",
+ "tör t",
+ "ha gy",
+ "e sz",
+ "s en",
+ "n él",
+ "p ar",
+ "v ál",
+ "k ut",
+ "l ány",
+ "ami t",
+ "s ő",
+ "ell en",
+ "mag át",
+ "in k",
+ "u gyan",
+ "kül ön",
+ "a sz",
+ "mind ig",
+ "l ép",
+ "tal án",
+ "u n",
+ "sz or",
+ "k e",
+ "il lan",
+ "n incs",
+ "z et",
+ "vagy ok",
+ "tel en",
+ "is mer",
+ "s or",
+ "is ten",
+ "ít ott",
+ "j obb",
+ "v es",
+ "dul t",
+ "j uk",
+ "sz en",
+ "r o",
+ "ö m",
+ "l ett",
+ "k ar",
+ "egy ik",
+ "b ár",
+ "sz i",
+ "sz ív",
+ "az on",
+ "e szt",
+ "föl d",
+ "kut y",
+ "p illan",
+ "f ér",
+ "k om",
+ "t ől",
+ "t ű",
+ "é be",
+ "t ött",
+ "bar át",
+ "í g",
+ "a hogy",
+ "e h",
+ "e p",
+ "s o",
+ "v en",
+ "jel ent",
+ "t at",
+ "sz eg",
+ "mint ha",
+ "f al",
+ "egy en",
+ "mi l",
+ "sza b",
+ "r i",
+ "é m",
+ "biz ony",
+ "j on",
+ "ör eg",
+ "d olg",
+ "cs ap",
+ "ti szt",
+ "áll t",
+ "an cs",
+ "id ő",
+ "k at",
+ "ü gy",
+ "mi ért",
+ "ó t",
+ "ü r",
+ "cs in",
+ "h az",
+ "b et",
+ "én ek",
+ "v ér",
+ "j ól",
+ "al att",
+ "m ely",
+ "l o",
+ "sem mi",
+ "ny ug",
+ "v ág",
+ "kö vet",
+ "ös sze",
+ "ma d",
+ "l i",
+ "a cs",
+ "fi ú",
+ "kö n",
+ "más ik",
+ "j ön",
+ "sz ám",
+ "g er",
+ "s ó",
+ "r ész",
+ "k ér",
+ "z el",
+ "é vel",
+ "e o",
+ "e u",
+ "a n",
+ "eu l",
+ "eu n",
+ "eo n",
+ "a e",
+ "d a",
+ "a l",
+ "s s",
+ "i n",
+ "i l",
+ "a g",
+ "an g",
+ "y eon",
+ "y eo",
+ "d o",
+ "c h",
+ "n g",
+ "j i",
+ "h an",
+ "g a",
+ "g o",
+ "u i",
+ "h ae",
+ "a m",
+ "u l",
+ "u n",
+ "g eo",
+ "s i",
+ "n eun",
+ "ss da",
+ "s eo",
+ "eon g",
+ "y o",
+ "i da",
+ "t t",
+ "k k",
+ "j eo",
+ "d eul",
+ "w a",
+ "eu m",
+ "g e",
+ "o n",
+ "o g",
+ "s al",
+ "m an",
+ "yeon g",
+ "geo s",
+ "h ag",
+ "an eun",
+ "j a",
+ "g i",
+ "s u",
+ "i ss",
+ "o l",
+ "d ae",
+ "eo b",
+ "h a",
+ "j u",
+ "eo l",
+ "g eu",
+ "j eong",
+ "s ae",
+ "do e",
+ "g eul",
+ "s eu",
+ "s in",
+ "eul o",
+ "b n",
+ "s ang",
+ "bn ida",
+ "h al",
+ "b o",
+ "han eun",
+ "m al",
+ "i m",
+ "m o",
+ "b u",
+ "jeo g",
+ "sae ng",
+ "in eun",
+ "an h",
+ "m a",
+ "sal am",
+ "j o",
+ "s a",
+ "eo m",
+ "n ae",
+ "w i",
+ "l o",
+ "g wa",
+ "yeo l",
+ "n a",
+ "e seo",
+ "y e",
+ "m yeon",
+ "tt ae",
+ "h w",
+ "j e",
+ "eob s",
+ "j ang",
+ "g u",
+ "g w",
+ "il eul",
+ "yeo g",
+ "j eon",
+ "si g",
+ "j ag",
+ "j in",
+ "y u",
+ "o e",
+ "s e",
+ "hag o",
+ "d eun",
+ "y a",
+ "m un",
+ "s eong",
+ "g ag",
+ "h am",
+ "d ang",
+ "b a",
+ "l eul",
+ "s il",
+ "do ng",
+ "kk a",
+ "b al",
+ "da l",
+ "han da",
+ "eo ssda",
+ "ae g",
+ "l i",
+ "ha ji",
+ "s eon",
+ "o ng",
+ "hae ssda",
+ "d e",
+ "i ssda",
+ "e ge",
+ "b un",
+ "m ul",
+ "ju ng",
+ "ji g",
+ "m u",
+ "iss neun",
+ "b i",
+ "g eun",
+ "seu bnida",
+ "w on",
+ "p p",
+ "d aneun",
+ "eo h",
+ "d eo",
+ "ga m",
+ "j al",
+ "hae ng",
+ "ag o",
+ "y ang",
+ "b ul",
+ "b ang",
+ "u m",
+ "s o",
+ "h i",
+ "j ae",
+ "si m",
+ "saeng gag",
+ "hag e",
+ "s og",
+ "eo ss",
+ "d an",
+ "ja sin",
+ "j il",
+ "eo g",
+ "g yeong",
+ "doe n",
+ "go ng",
+ "m i",
+ "ch i",
+ "d eu",
+ "d eon",
+ "hae ss",
+ "d u",
+ "n am",
+ "eun g",
+ "jo h",
+ "n al",
+ "m yeong",
+ "w o",
+ "eon a",
+ "i go",
+ "g yeol",
+ "y ag",
+ "gw an",
+ "ul i",
+ "yo ng",
+ "n o",
+ "l yeo",
+ "j og",
+ "eoh ge",
+ "ga t",
+ "b og",
+ "mo s",
+ "t ong",
+ "ch a",
+ "man h",
+ "jeo l",
+ "geo l",
+ "h oe",
+ "ag a",
+ "n aneun",
+ "g an",
+ "un eun",
+ "ch eol",
+ "ch e",
+ "do l",
+ "b on",
+ "b an",
+ "ba d",
+ "ch u",
+ "ham yeon",
+ "yeo ssda",
+ "i bnida",
+ "g ye",
+ "eo s",
+ "hw al",
+ "salam deul",
+ "ji man",
+ "dang sin",
+ "ji b",
+ "ttae mun",
+ "m ae",
+ "i b",
+ "e neun",
+ "eu g",
+ "jeo m",
+ "geul eon",
+ "h wa",
+ "a ssda",
+ "b eob",
+ "bu t",
+ "b ae",
+ "yeo ss",
+ "ch in",
+ "ch aeg",
+ "g eon",
+ "g ae",
+ "nae ga",
+ "i ga",
+ "m og",
+ "sig an",
+ "g il",
+ "h yeon",
+ "l yeog",
+ "gu g",
+ "p yeon",
+ "s an",
+ "w ae",
+ "j ul",
+ "s eul",
+ "deun g",
+ "haji man",
+ "eum yeon",
+ "p il",
+ "m ol",
+ "n eu",
+ "a ss",
+ "n yeon",
+ "t ae",
+ "h u",
+ "p yo",
+ "s ul",
+ "g ang",
+ "j ineun",
+ "b eon",
+ "ha da",
+ "seo l",
+ "si p",
+ "dal eun",
+ "a p",
+ "sal m",
+ "g yo",
+ "ch eon",
+ "hag i",
+ "in a",
+ "cheol eom",
+ "g al",
+ "il a",
+ "kka ji",
+ "anh neun",
+ "ha bnida",
+ "tt eon",
+ "n u",
+ "hae seo",
+ "doen da",
+ "s ol",
+ "tt al",
+ "l a",
+ "il o",
+ "seu b",
+ "b yeon",
+ "m yeo",
+ "b eol",
+ "s on",
+ "n un",
+ "j un",
+ "j am",
+ "j eung",
+ "tt o",
+ "e n",
+ "mo m",
+ "h o",
+ "ch im",
+ "hw ang",
+ "eun eun",
+ "jo ng",
+ "bo da",
+ "n ol",
+ "n eom",
+ "but eo",
+ "jig eum",
+ "eobs da",
+ "dae lo",
+ "i g",
+ "y ul",
+ "p yeong",
+ "seon eun",
+ "sal ang",
+ "seu t",
+ "h im",
+ "n an",
+ "h eom",
+ "h yang",
+ "p i",
+ "gw ang",
+ "eobs neun",
+ "hw ag",
+ "ge ss",
+ "jag i",
+ "il eon",
+ "wi hae",
+ "dae han",
+ "ga ji",
+ "m eog",
+ "j yeo",
+ "cha j",
+ "b yeong",
+ "eo d",
+ "g yeo",
+ "do n",
+ "eo ji",
+ "g ul",
+ "mo deun",
+ "j on",
+ "in saeng",
+ "geul ae",
+ "h ang",
+ "sa sil",
+ "si b",
+ "ch al",
+ "il ago",
+ "doe l",
+ "g eum",
+ "doe neun",
+ "b ol",
+ "ga jang",
+ "geul igo",
+ "e l",
+ "h yeong",
+ "haeng bog",
+ "ch ul",
+ "h on",
+ "ch ae",
+ "s am",
+ "m ang",
+ "in da",
+ "da m",
+ "w ol",
+ "ch oe",
+ "d ul",
+ "si jag",
+ "ch eong",
+ "il aneun",
+ "ul ineun",
+ "ae n",
+ "kk e",
+ "mun je",
+ "a do",
+ "t eu",
+ "g un",
+ "geun eun",
+ "b ge",
+ "ch eo",
+ "b aeg",
+ "ju g",
+ "t a",
+ "sang dae",
+ "geu geos",
+ "do g",
+ "eu s",
+ "deu s",
+ "ja b",
+ "h yeo",
+ "tt eohge",
+ "u g",
+ "ma j",
+ "ch il",
+ "s wi",
+ "j ileul",
+ "ch ang",
+ "g aneun",
+ "m ag",
+ "i ji",
+ "da go",
+ "m in",
+ "yo han",
+ "t eug",
+ "pp un",
+ "al eul",
+ "haeng dong",
+ "p o",
+ "m il",
+ "ch am",
+ "se sang",
+ "e do",
+ "p an",
+ "man deul",
+ "am yeon",
+ "a b",
+ "kk ae",
+ "b ag",
+ "i deul",
+ "p um",
+ "m eol",
+ "s un",
+ "n eul",
+ "ham kke",
+ "chu ng",
+ "da b",
+ "yu g",
+ "s ag",
+ "gwang ye",
+ "il eohge",
+ "bal o",
+ "neun de",
+ "ham yeo",
+ "go s",
+ "geul eoh",
+ "an ila",
+ "bang beob",
+ "da si",
+ "b yeol",
+ "g yeon",
+ "gam jeong",
+ "on eul",
+ "j aneun",
+ "yeo m",
+ "l ago",
+ "i gi",
+ "hw an",
+ "t eul",
+ "eo seo",
+ "si k",
+ "ch o",
+ "jag a",
+ "geul eom",
+ "geul eona",
+ "jeong do",
+ "g yeog",
+ "geul eohge",
+ "geu deul",
+ "eu t",
+ "im yeon",
+ "j jae",
+ "k eun",
+ "i sang",
+ "mal haessda",
+ "eu ge",
+ "no p",
+ "in gan",
+ "bo myeon",
+ "t aeg",
+ "seu s",
+ "d wi",
+ "s aneun",
+ "w an",
+ "anh go",
+ "t an",
+ "nu gu",
+ "su ng",
+ "da myeon",
+ "a deul",
+ "p eul",
+ "ttal a",
+ "d i",
+ "geos do",
+ "a ji",
+ "m eon",
+ "eum yeo",
+ "dol og",
+ "neun g",
+ "mo du",
+ "क े",
+ "ह ै",
+ "े ं",
+ "् र",
+ "ा र",
+ "न े",
+ "य ा",
+ "म ें",
+ "स े",
+ "क ी",
+ "क ा",
+ "ो ं",
+ "त ा",
+ "क र",
+ "स ्",
+ "क ि",
+ "क ो",
+ "र ्",
+ "न ा",
+ "क ्",
+ "ह ी",
+ "औ र",
+ "प र",
+ "त े",
+ "ह ो",
+ "प ्र",
+ "ा न",
+ "् य",
+ "ल ा",
+ "व ा",
+ "ल े",
+ "स ा",
+ "है ं",
+ "ल ि",
+ "ज ा",
+ "ह ा",
+ "भ ी",
+ "व ि",
+ "इ स",
+ "त ी",
+ "न ्",
+ "र ा",
+ "म ा",
+ "द े",
+ "द ि",
+ "ब ा",
+ "त ि",
+ "थ ा",
+ "न ि",
+ "क ार",
+ "ए क",
+ "ही ं",
+ "ह ु",
+ "ं ग",
+ "ै ं",
+ "न ी",
+ "स ी",
+ "अ प",
+ "त ्",
+ "न हीं",
+ "र ी",
+ "म े",
+ "म ु",
+ "ि त",
+ "त ो",
+ "प ा",
+ "ल ी",
+ "लि ए",
+ "ग ा",
+ "ल ्",
+ "र ह",
+ "र े",
+ "क् ष",
+ "म ैं",
+ "स म",
+ "उ स",
+ "ज ि",
+ "त ्र",
+ "म ि",
+ "च ा",
+ "ो ग",
+ "स ं",
+ "द ्",
+ "स ि",
+ "आ प",
+ "त ु",
+ "द ा",
+ "क ु",
+ "य ों",
+ "व े",
+ "ज ी",
+ "् या",
+ "उ न",
+ "ि क",
+ "य े",
+ "भ ा",
+ "् ट",
+ "ह म",
+ "स् ट",
+ "श ा",
+ "ड ़",
+ "ं द",
+ "ख ा",
+ "म ्",
+ "श ्",
+ "य ह",
+ "स क",
+ "प ू",
+ "कि या",
+ "अप ने",
+ "र ू",
+ "स ु",
+ "म ी",
+ "ह ि",
+ "ज ो",
+ "थ े",
+ "र ि",
+ "द ी",
+ "थ ी",
+ "ग ी",
+ "ल ोग",
+ "ग या",
+ "त र",
+ "न् ह",
+ "च ्",
+ "व ार",
+ "ब ी",
+ "प ्",
+ "द ो",
+ "ट ी",
+ "श ि",
+ "कर ने",
+ "ग े",
+ "ै से",
+ "इ न",
+ "ं ड",
+ "सा थ",
+ "प ु",
+ "ब े",
+ "ब ार",
+ "व ी",
+ "अ न",
+ "ह र",
+ "उ न्ह",
+ "हो ता",
+ "ज ब",
+ "कु छ",
+ "म ान",
+ "क ्र",
+ "ब ि",
+ "प ह",
+ "फ ि",
+ "स र",
+ "ार ी",
+ "र ो",
+ "द ू",
+ "क हा",
+ "त क",
+ "श न",
+ "ब ्",
+ "स् थ",
+ "व ह",
+ "बा द",
+ "ओ ं",
+ "ग ु",
+ "ज ्",
+ "्र े",
+ "ग र",
+ "रह े",
+ "व र्",
+ "ह ू",
+ "ार ्",
+ "प ी",
+ "ब हु",
+ "मु झ",
+ "्र ा",
+ "दि या",
+ "स ब",
+ "कर ते",
+ "अप नी",
+ "बहु त",
+ "क ह",
+ "ट े",
+ "हु ए",
+ "कि सी",
+ "र हा",
+ "ष ्ट",
+ "ज ़",
+ "ब ना",
+ "स ो",
+ "ड ि",
+ "को ई",
+ "व ्य",
+ "बा त",
+ "र ु",
+ "व ो",
+ "मुझ े",
+ "द् ध",
+ "च ार",
+ "मे रे",
+ "व र",
+ "्र ी",
+ "जा ता",
+ "न ों",
+ "प्र ा",
+ "दे ख",
+ "ट ा",
+ "क् या",
+ "अ ध",
+ "ल ग",
+ "ल ो",
+ "प ि",
+ "य ु",
+ "च े",
+ "जि स",
+ "ं त",
+ "ान ी",
+ "प ै",
+ "ज न",
+ "ार े",
+ "च ी",
+ "मि ल",
+ "द ु",
+ "दे श",
+ "च् छ",
+ "ष ्",
+ "स ू",
+ "ख े",
+ "च ु",
+ "ि या",
+ "ल गा",
+ "ब ु",
+ "उन के",
+ "ज् ञ",
+ "क्ष ा",
+ "त रह",
+ "्या दा",
+ "वा ले",
+ "पू र्",
+ "मैं ने",
+ "का म",
+ "रू प",
+ "हो ती",
+ "उ प",
+ "ज ान",
+ "प्र कार",
+ "भ ार",
+ "म न",
+ "हु आ",
+ "ट र",
+ "हू ँ",
+ "पर ि",
+ "पा स",
+ "अन ु",
+ "रा ज",
+ "लोग ों",
+ "अ ब",
+ "सम झ",
+ "ड ी",
+ "म ौ",
+ "श ु",
+ "च ि",
+ "प े",
+ "क ृ",
+ "सक ते",
+ "म ह",
+ "य ोग",
+ "द र्",
+ "उ से",
+ "ं ध",
+ "ड ा",
+ "जा ए",
+ "ब ो",
+ "ू ल",
+ "म ो",
+ "ों ने",
+ "ं स",
+ "तु म",
+ "पह ले",
+ "ब ता",
+ "त था",
+ "य ो",
+ "ग ई",
+ "उ त्",
+ "सक ता",
+ "क म",
+ "ज ्यादा",
+ "र ख",
+ "सम य",
+ "ार ा",
+ "अ गर",
+ "स् त",
+ "च ल",
+ "फि र",
+ "वार ा",
+ "कर ना",
+ "श ी",
+ "ग ए",
+ "ब न",
+ "ौ र",
+ "हो ने",
+ "चा ह",
+ "ख ु",
+ "हा ँ",
+ "उन्ह ें",
+ "उन्ह ोंने",
+ "छ ो",
+ "म् ह",
+ "प्र ति",
+ "नि क",
+ "व न",
+ "्य ू",
+ "र ही",
+ "तु म्ह",
+ "ज ैसे",
+ "ि यों",
+ "क् यों",
+ "ल ों",
+ "फ ़",
+ "ं त्र",
+ "हो ते",
+ "क् ति",
+ "त ्य",
+ "कर ्",
+ "क ई",
+ "व ं",
+ "कि न",
+ "प ो",
+ "कार ण",
+ "ड़ ी",
+ "भ ि",
+ "इस के",
+ "ब र",
+ "उस के",
+ "द् वारा",
+ "श े",
+ "क ॉ",
+ "दि न",
+ "न् न",
+ "ड़ ा",
+ "स् व",
+ "नि र्",
+ "मु ख",
+ "लि या",
+ "ट ि",
+ "ज्ञ ान",
+ "क् त",
+ "द ्र",
+ "ग ्",
+ "क् स",
+ "म ै",
+ "ग ो",
+ "ज े",
+ "ट ्र",
+ "म ार",
+ "त् व",
+ "ध ार",
+ "भा व",
+ "कर ता",
+ "ख ि",
+ "क ं",
+ "चा हि",
+ "य र",
+ "प् त",
+ "क ों",
+ "ं च",
+ "ज ु",
+ "म त",
+ "अ च्छ",
+ "हु ई",
+ "क भी",
+ "ले किन",
+ "भ ू",
+ "अप ना",
+ "दू स",
+ "चाहि ए",
+ "य ू",
+ "घ र",
+ "सब से",
+ "मे री",
+ "ना म",
+ "ढ ़",
+ "ं ट",
+ "ें गे",
+ "ब ै",
+ "फ ा",
+ "ए वं",
+ "य ी",
+ "ग ्र",
+ "क्ष े",
+ "आ ज",
+ "आप को",
+ "भा ग",
+ "ठ ा",
+ "क ै",
+ "भार त",
+ "उन की",
+ "प हु",
+ "स भी",
+ "ध ा",
+ "ण ा",
+ "स ान",
+ "हो गा",
+ "त ब",
+ "स ंग",
+ "प र्",
+ "अ व",
+ "त ना",
+ "ग ि",
+ "य न",
+ "स् था",
+ "च ित",
+ "ट ्",
+ "छ ा",
+ "जा ने",
+ "क्षे त्र",
+ "वा ली",
+ "पूर् ण",
+ "स मा",
+ "कार ी"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/wait-for-it.sh b/wait-for-it.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9009a6277fc3b880bc3c55dd06cc80a6c6e8b277
--- /dev/null
+++ b/wait-for-it.sh
@@ -0,0 +1,71 @@
+#!/usr/bin/env bash
+# Use this script to test if a given URL is responding
+#
+# Usage:
+# ./wait-for-it.sh --url http://0.0.0.0:8000/health --strict -- node /app/app/server.js
+
+url=""
+cmd=""
+strict=""
+
+while [[ $# -gt 0 ]]
+do
+ key="$1"
+
+ case $key in
+ --url)
+ url="$2"
+ shift # past argument
+ shift # past value
+ ;;
+ --)
+ shift
+ cmd="$@"
+ break
+ ;;
+ --strict)
+ strict="true"
+ shift # past argument
+ ;;
+ *)
+ echo "Unknown option: $key"
+ exit 1
+ ;;
+ esac
+done
+
+if [[ -z "$url" ]]; then
+ echo "URL is required"
+ exit 1
+fi
+
+wait_for_url() {
+ response=$(curl --write-out "%{http_code}" --silent --output /dev/null "$1")
+ if [[ "$response" -eq 200 ]]; then
+ return 0
+ else
+ return 1
+ fi
+}
+
+if [[ "$strict" == "true" ]]; then
+ echo "wait-for-it.sh: waiting for $url without a timeout"
+ while ! wait_for_url "$url"; do
+ sleep 1
+ done
+ echo "wait-for-it.sh: $url is available"
+else
+ echo "wait-for-it.sh: waiting for $url with a timeout of 15 seconds"
+ timeout=15
+ while ! wait_for_url "$url"; do
+ sleep 1
+ timeout=$((timeout - 1))
+ if [[ $timeout -eq 0 ]]; then
+ echo "wait-for-it.sh: timeout occurred after waiting for $url"
+ exit 1
+ fi
+ done
+ echo "wait-for-it.sh: $url is available"
+fi
+
+exec $cmd
diff --git a/xtts_fine_tune/xtts_v2_data_formattor.py b/xtts_fine_tune/xtts_v2_data_formattor.py
new file mode 100644
index 0000000000000000000000000000000000000000..7219c6272f2594d0af04e63a2f8dbd44492a327a
--- /dev/null
+++ b/xtts_fine_tune/xtts_v2_data_formattor.py
@@ -0,0 +1,262 @@
+import pandas as pd
+import numpy as np
+import os
+import sys
+from models.parakeet import parakeet_ctc_model, parakeet_ctc_process
+from models.es_fastconformer import stt_es_model, stt_es_process
+from pydub import AudioSegment
+import json
+class Data_Pipeline():
+ """
+ A class to handle data processing and transcription using various models.
+
+ Args:
+ wav_dir (str): Directory containing the .wav files.
+ Example: "path/to/wav_files/"
+ lang (str): Language of the audio files, either 'en' for English or 'es' for Spanish.
+ Example: "en"
+ """
+ def __init__(self, wav_dir, lang):
+ self.wav_dir = wav_dir
+ self.lang = lang
+
+
+ def get_wav_files(self):
+ """
+ Retrieve all .wav files from the specified directory.
+
+ Returns:
+ list: A list of paths to the .wav files.
+ Example: ["path/to/file1.wav", "path/to/file2.wav"]
+ """
+ self.wav_files = []
+ for root, dirs, files in os.walk(self.wav_dir):
+ for file in files:
+ if file.endswith('.wav'):
+ # make the path into the full path to the file
+ file = os.path.join(self.wav_dir, file)
+ self.wav_files.append(file)
+ return self.wav_files
+ def get_combined_wav_lengths(self):
+ """
+ Calculate the total length of all .wav files in the directory.
+
+ Returns:
+ float: The total length of all .wav files in seconds.
+ Example: 123.45
+ """
+ # returns a float number of the total length of all the wav files in the directory
+ total_length = 0
+ for file in self.wav_files:
+ if file.endswith('.wav'):
+ audio = AudioSegment.from_file(file)
+ total_length += len(audio)
+ return total_length/1000
+
+ def estimated_transcription_time(self):
+ """
+ Estimate the transcription time based on the real-time factor.
+
+ Returns:
+ float: The estimated transcription time in seconds.
+ Example: 185.175
+ str: Error message if the language is not supported.
+ Example: "Error: Language not supported."
+ """
+ # returns a float number of the estimated time based on the real time factor
+ # real time factor is 1.5
+ if self.lang == "en":
+ return self.get_combined_wav_lengths() * 1.5
+ elif self.lang == "es":
+ return self.get_combined_wav_lengths() * 1.5
+ return "Error: Language not supported."
+
+ def load_models(self):
+ """
+ Load the appropriate ASR model based on the language.
+
+ Returns:
+ object: The loaded ASR model.
+ Example:
+ str: Error message if the language is not supported.
+ Example: "Error: Language not supported."
+ """
+ if self.lang == "en":
+
+ self.parakeet_model = parakeet_ctc_model()
+ return self.parakeet_model
+ elif self.lang == "es":
+
+ self.es_model = stt_es_model()
+ return self.es_model
+ return "Error: Language not supported."
+
+ def en_transcribe(self, audio_file):
+ """
+ Transcribe an English audio file using the Parakeet CTC model.
+
+ Args:
+ audio_file (str): Path to the audio file.
+ Example: "path/to/audio_file.wav"
+
+ Returns:
+ list: A list containing the transcribed text.
+ Example: ["transcribed text"]
+ """
+ text = parakeet_ctc_process(self.parakeet_model, audio_file)
+ return text
+
+ def es_transcribe(self, audio_file):
+ """
+ Transcribe a Spanish audio file using the FastConformer model.
+
+ Args:
+ audio_file (str): Path to the audio file.
+ Example: "path/to/audio_file.wav"
+
+ Returns:
+ list: A list containing the transcribed text.
+ Example: ["transcribed text"]
+ """
+ text = stt_es_process(self.es_model, audio_file)
+ return text
+ def read_transcriptions(self, json_path):
+ """
+ Read transcriptions from a JSON file.
+
+ Args:
+ json_path (str): Path to the JSON file.
+ Example: "path/to/data.json"
+
+ Returns:
+ dict: The data read from the JSON file.
+ Example: {"text": ["text1", "text2"], "original_path": ["path1", "path2"]}
+ """
+ # read the json file
+ with open(json_path) as f:
+ self.data = json.load(f)
+ return self.data
+
+ def get_transcription(self, file_path):
+ """
+ Get the transcription for a specific file from the JSON data.
+
+ Args:
+ file_path (str): Path to the original audio file.
+ Example: "path/to/audio_file.wav"
+
+ Returns:
+ str: The transcription for the specified file.
+ Example: "This is the transcription."
+ str: Error message if no transcription is found.
+ Example: "Error: No transcription found."
+ """
+ # the json file has the following keys: text, original_path, path_to_save, language, order, original_text
+ # get the "original_text" of the element that has the "original_path" equal to the file_path
+ for i in range(len(self.data['original_path'])):
+ if self.data['original_path'][i] == file_path:
+ return self.data['original_text'][i]
+ return "Error: No transcription found."
+
+
+
+
+ def data_formatter_with_models(self):
+ """
+ Format data by transcribing audio files using the appropriate models.
+
+ Returns:
+ pd.DataFrame: A DataFrame containing the transcriptions.
+ Example: pd.DataFrame({'wav_file': ["file1", "file2"], 'transcription': ["text1", "text2"], 'transcription2': ["text1", "text2"], 'speaker_name': ["user0", "user0"]})
+ str: Error message if the language is not supported.
+ Example: "Error: Language not supported."
+ """
+ self.transcriptions_df = pd.DataFrame(columns = ['wav_file', 'transcription','transcription2' ])
+ if self.lang == "en":
+ self.load_models()
+ self.get_wav_files()
+ for file in self.wav_files:
+ if file.endswith('.wav'):
+ transcription = parakeet_ctc_process(self.parakeet_model, file)
+ # append transcriptions_df with the wav_file and transcription
+ self.transcriptions_df = self.transcriptions_df.append({'wav_file': file, 'transcription': transcription[0], 'transcription2': transcription[0],'speaker_name': "user0"}, ignore_index=True)
+ return self.transcriptions_df
+ elif self.lang == "es":
+ self.load_models()
+ self.get_wav_files()
+ for file in self.wav_files:
+ if file.endswith('.wav'):
+ self.transcriptions_df = stt_es_process(self.es_model, file)
+ # make the path into the full path to the file
+ file = os.path.join(self.wav_dir, file)
+ # append transcriptions_df with the wav_file and transcription
+ self.transcriptions_df = self.transcriptions_df.append({'wav_file': file, 'transcription': transcription[0], 'transcription2': transcription[0], 'speaker_name':"user0"}, ignore_index=True)
+ return self.transcriptions_df
+
+ return "Error: Language not supported."
+
+ def data_formatter_without_models(self):
+ """
+ Format data by retrieving transcriptions from a JSON file and transcribing any missing data.
+
+ Returns:
+ pd.DataFrame: A DataFrame containing the transcriptions.
+ Example: pd.DataFrame({'wav_file': ["file1", "file2"], 'transcription': ["text1", "text2"], 'transcription2': ["text1", "text2"], 'speaker_name': ["user0", "user0"]})
+ """
+ self.transcriptions_df = pd.DataFrame(columns = ['wav_file', 'transcription','transcription2' ])
+ self.get_wav_files()
+ for file in self.wav_files:
+ if file.endswith('.wav'):
+ transcription = self.get_transcription(file)
+ if transcription == "Error: No transcription found." and self.lang == "en":
+ transcription = parakeet_ctc_process(self.parakeet_model, file)
+ elif transcription == "Error: No transcription found." and self.lang == "es":
+ transcription = stt_es_process(self.es_model, file)
+
+ # make the path into the full path to the file
+ #file = os.path.join(self.wav_dir, file)
+ # append transcriptions_df with the wav_file and transcription
+ self.transcriptions_df = self.transcriptions_df.append({'wav_file': file, 'transcription': transcription[0], 'transcription2': transcription[0], 'speaker_name': "user0"}, ignore_index=True)
+ return self.transcriptions_df
+
+
+ def save_transcriptions(self, output_file):
+ """
+ Save the transcriptions to CSV files, splitting into training and evaluation datasets.
+
+ Args:
+ output_file (str): Base path for the output CSV files.
+ Example: "path/to/output"
+
+ Returns:
+ tuple: A tuple containing a success message and paths to the training and evaluation CSV files.
+ Example: ("Data saved successfully.", "path/to/output_train.csv", "path/to/output_eval.csv")
+ """
+ # split the data into two data, train and eval data
+ from sklearn.model_selection import train_test_split
+ train_data, eval_data = train_test_split(self.transcriptions_df, test_size=0.2, random_state=42)
+ # save the data into csv files
+ self.path_to_train_data = output_file + "_train.csv"
+ self.path_to_eval_data = output_file + "_eval.csv"
+ train_data.to_csv(output_file + "_train.csv" , index=False, sep='|')
+ eval_data.to_csv(output_file + "_eval.csv", index=False, sep='|')
+ return "Data saved successfully.", self.path_to_train_data, self.path_to_eval_data
+
+ def get_paths(self):
+ """
+ Retrieve the paths to the training and evaluation CSV files and the .wav files directory.
+
+ Returns:
+ tuple: A tuple containing paths to the training data, evaluation data, and .wav files directory.
+ Example: ("path/to/train.csv", "path/to/eval.csv", "path/to/wav_files/")
+ """
+ # csv files, wav files directory
+ return self.path_to_train_data, self.path_to_eval_data, self.wav_dir
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/xtts_fine_tune/xtts_v2_fine_tuning.py b/xtts_fine_tune/xtts_v2_fine_tuning.py
new file mode 100644
index 0000000000000000000000000000000000000000..38942b114fbedf942ec22987ed239f436820e29c
--- /dev/null
+++ b/xtts_fine_tune/xtts_v2_fine_tuning.py
@@ -0,0 +1,68 @@
+from xtts_fine_tune.xtts_v2_data_formattor import Data_Pipeline
+from xtts_fine_tune.xtts_v2_model_utils import xtts_v2_Model
+import sys
+import time
+#!/usr/bin/env python
+
+
+def Train_XTTS_V2(audio_directory, num_epochs, batch_size, grad_acumm, output_path, max_audio_length, language):
+ """
+ Train the XTTS V2 model with the given parameters.
+
+ This function initializes the data pipeline, checks the audio length, formats the data, and trains the XTTS V2 model.
+
+ Args:
+ audio_directory (str): Path to the directory containing audio files.
+ Example: "path/to/audio_files/"
+ num_epochs (int): Number of training epochs.
+ Example: 50
+ batch_size (int): Size of each training batch.
+ Example: 16
+ grad_acumm (int): Gradient accumulation steps.
+ Example: 4
+ output_path (str): Path to save the trained model outputs.
+ Example: "path/to/output/"
+ max_audio_length (int): Maximum allowed length of audio for training in seconds.
+ Example: 3600
+ language (str): Language of the audio files, either 'en' for English or 'es' for Spanish.
+ Example: "en"
+
+ Returns:
+ tuple: A tuple containing paths to the configuration file, vocabulary file, fine-tuned XTTS checkpoint, and speaker wav file.
+ Example: ("config_path.json", "vocab_path.json", "checkpoint.pth", "speaker.wav")
+
+ Example usage:
+ config_path, vocab_path, ft_xtts_checkpoint, speaker_wav = Train_XTTS_V2(
+ "path/to/audio_files/", 50, 16, 4, "path/to/output/", 3600, "en"
+ )
+ """
+ Data_class = Data_Pipeline(audio_directory, language)
+ length_audio = Data_class.get_combined_wav_lengths()
+ if length_audio > max_audio_length:
+ print("The audio is not long enough to be fine tuned. Waiting....")
+ time.sleep(20)
+ Train_XTTS_V2(audio_directory, num_epochs, batch_size, grad_acumm, output_path, max_audio_length, language)
+
+ # get the directory before the current one
+ audio_directory_parent = audio_directory.split("/")
+ audio_directory_parent = audio_directory_parent[:-1]
+ audio_directory_parent = "/".join(audio_directory_parent)
+ _, train_meta, eval_meta = Data_class.data_formatter(audio_directory_parent)
+ xtts_v2 = xtts_v2_Model(train_meta, eval_meta, num_epochs, batch_size, grad_acumm, output_path, max_audio_length, language)
+ _, config_path, vocab_path, ft_xtts_checkpoint, speaker_wav = xtts_v2.train_model()
+
+ return config_path, vocab_path, ft_xtts_checkpoint, speaker_wav
+
+if __name__ == "__main__":
+ audio_directory = sys.argv[1]
+ num_epochs = int(sys.argv[2])
+ batch_size = int(sys.argv[3])
+ grad_acumm = int(sys.argv[4])
+ output_path = sys.argv[5]
+ max_audio_length = int(sys.argv[6])
+ language = sys.argv[7]
+
+ config_path, vocab_path, ft_xtts_checkpoint, speaker_wav = Train_XTTS_V2(audio_directory, num_epochs, batch_size, grad_acumm, output_path, max_audio_length, language)
+
+ # Do something with the returned values
+ print(config_path, vocab_path, ft_xtts_checkpoint, speaker_wav)
diff --git a/xtts_fine_tune/xtts_v2_model_utils.py b/xtts_fine_tune/xtts_v2_model_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..7d85bc2e1c52380a496fb875828e8ca89fc846c5
--- /dev/null
+++ b/xtts_fine_tune/xtts_v2_model_utils.py
@@ -0,0 +1,148 @@
+import os
+import numpy as np
+import traceback
+from TTS.demos.xtts_ft_demo.utils.gpt_train import train_gpt
+import torch
+import torchaudio
+from TTS.tts.configs.xtts_config import XttsConfig
+from TTS.tts.models.xtts import Xtts
+
+
+device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
+
+
+def load_fine_tuned_xtts_v2(config_path, checkpoint_path, reference_audio_path):
+ """
+ Load the fine-tuned XTTS v2 model and compute speaker latents.
+
+ Args:
+ config_path (str): Path to the configuration file.
+ Example: "path/to/config.json"
+ checkpoint_path (str): Path to the checkpoint directory.
+ Example: "path/to/checkpoint/"
+ reference_audio_path (str): Path to the reference audio file.
+ Example: "path/to/reference.wav"
+
+ Returns:
+ tuple: A tuple containing the model, gpt_cond_latent, and speaker_embedding.
+ Example: (model, gpt_cond_latent, speaker_embedding)
+ """
+ print("Loading model...")
+ config = XttsConfig()
+ config.load_json(config_path)
+ model = Xtts.init_from_config(config)
+ model.load_checkpoint(config, checkpoint_dir=checkpoint_path, use_deepspeed=True)
+ model.cuda()
+
+ print("Computing speaker latents...")
+ gpt_cond_latent, speaker_embedding = model.get_conditioning_latents(audio_path=[reference_audio_path])
+ return model, gpt_cond_latent, speaker_embedding
+
+def Inference(model, gpt_cond_latent, speaker_embedding,path_to_save,text, temperature=0.7):
+ """
+ Perform inference using the fine-tuned XTTS v2 model.
+
+ Args:
+ model (Xtts): The XTTS v2 model.
+ Example: model, gpt_cond_latent, speaker_embedding = load_fine_tuned_xtts_v2(config_path, checkpoint_path, reference_audio_path)
+ gpt_cond_latent (torch.Tensor): GPT conditioning latent vectors.
+ speaker_embedding (torch.Tensor): Speaker embedding vectors.
+ path_to_save (str): Path to save the generated audio.
+ Example: "path/to/output.wav"
+ text (str): The input text for synthesis.
+ Example: "Hello, world!"
+ temperature (float, optional): Sampling temperature. Default is 0.7.
+ Example: 0.7
+
+ Returns:
+ None
+ """
+ print("Inference...")
+ out = model.inference(
+ text,
+ gpt_cond_latent,
+ speaker_embedding,
+ temperature, # Add custom parameters here # 3
+ )
+ torchaudio.save(path_to_save, torch.tensor(out["wav"]).unsqueeze(0), 24000)
+
+#model, gpt_cond_latent, speaker_embedding = load_fine_tuned_xtts_v2("C:/tmp/xtts_ft/run/training/GPT_XTTS_FT-April-02-2024_05+08PM-0000000/config.json", "C:/tmp/xtts_ft/run/training/GPT_XTTS_FT-April-02-2024_05+08PM-0000000/best_model_72.pth", "old_man_segments/wavs/segment_10.wav")
+
+class xtts_v2_Model():
+ """
+ A class to handle training of the XTTS v2 model.
+
+ Args:
+ train_csv_path (str): Path to the training CSV file.
+ Example: "path/to/train.csv"
+ eval_csv_path (str): Path to the evaluation CSV file.
+ Example: "path/to/eval.csv"
+ num_epochs (int): Number of training epochs.
+ Example: 10
+ batch_size (int): Size of each training batch.
+ Example: 4
+ grad_acumm (int): Gradient accumulation steps.
+ Example: 1
+ output_path (str): Path to save the trained model outputs.
+ Example: "path/to/output/"
+ max_audio_length (int): Maximum allowed length of audio for training in seconds.
+ Example: 10
+ language (str, optional): Language of the audio files, either 'en' for English or 'es' for Spanish. Default is "en".
+ Example: "en"
+ """
+ def __init__(self, train_csv_path, eval_csv_path, num_epochs, batch_size, grad_acumm, output_path, max_audio_length, language="en"):
+ self.train_csv_path = train_csv_path
+ self.eval_csv_path = eval_csv_path
+ self.num_epochs = num_epochs
+ self.batch_size = batch_size
+ self.grad_acumm = grad_acumm
+ self.output_path = output_path
+ self.max_audio_length = max_audio_length
+ self.language = language
+ self.config_path = None
+ self.original_xtts_checkpoint = None
+ self.vocab_file = None
+ self.exp_path = None
+ self.speaker_wav = None
+
+
+ def train_model(self):
+ """
+ Train the XTTS v2 model.
+
+ Returns:
+ tuple: A tuple containing a status message, config_path, vocab_file, fine-tuned XTTS checkpoint, and speaker wav file.
+ Example: ("Model training done!", "path/to/config.json", "path/to/vocab.json", "path/to/best_model.pth", "path/to/speaker.wav")
+ """
+ #clear_gpu_cache()
+ if not self.train_csv_path or not self.eval_csv_path:
+ return "You need to run the data processing step or manually set `Train CSV` and `Eval CSV` fields !", "", "", "", ""
+ try:
+ # convert seconds to waveform frames
+ max_audio_length = int(max_audio_length * 22050)
+ self.config_path, self.original_xtts_checkpoint, self.vocab_file, self.exp_path, self.speaker_wav = train_gpt(self.language, self.num_epochs, self.batch_size, self.grad_acumm, self.train_csv_path, self.eval_csv_path, output_path=self.output_path, max_audio_length=max_audio_length)
+ except:
+ traceback.print_exc()
+ error = traceback.format_exc()
+ return f"The training was interrupted due an error !! Please check the console to check the full error message! \n Error summary: {error}", "", "", "", ""
+
+ # copy original files to avoid parameters changes issues
+ os.system(f"cp {self.config_path} {self.exp_path}")
+ os.system(f"cp {self.vocab_file} {self.exp_path}")
+
+ ft_xtts_checkpoint = os.path.join(self.exp_path, "best_model.pth")
+ print("Model training done!")
+ #clear_gpu_cache()
+ return "Model training done!", self.config_path, self.vocab_file, ft_xtts_checkpoint, self.speaker_wav
+
+# example
+#train_meta = "C:/tmp/xtts_ft/run/training/GPT_XTTS_FT-April-02-2024_05+08PM-0000000/train.csv"
+#eval_meta = "C:/tmp/xtts_ft/run/training/GPT_XTTS_FT-April-02-2024_05+08PM-0000000/eval.csv"
+#num_epochs = 10
+#batch_size = 4
+#grad_acumm = 1
+#out_path = "C:/tmp/xtts_ft/run/training/GPT_XTTS_FT-April-02-2024_05+08PM-0000000"
+#max_audio_length = 10
+#lang = "en"
+#xtts_v2 = xtts_v2_Model(train_meta, eval_meta, num_epochs, batch_size, grad_acumm, out_path, max_audio_length, lang)
+#_, config_path, vocab_path, ft_xtts_checkpoint, speaker_wav = xtts_v2_Model.train_model()
\ No newline at end of file
diff --git a/xtts_v2_weights/readme.md b/xtts_v2_weights/readme.md
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391