From 64b78bed3b48f595e27fbe302819b2df13124095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Wed, 5 Jun 2024 18:10:59 +0900 Subject: [PATCH] 20240604 --- README.md | 192 +- configs/config.json | 2 +- docs/en/README.en.md | 105 +- docs/fr/README.fr.md | 68 +- docs/jp/README.ja.md | 272 ++- docs/kr/Changelog_KO.md | 24 +- docs/kr/README.ko.han.md | 2 +- docs/kr/README.ko.md | 249 ++- docs/pt/README.pt.md | 2 +- docs/tr/README.tr.md | 4 +- docs/小白简易教程.doc | Bin 0 -> 602624 bytes gui_v1.py | 29 +- i18n/locale/zh_CN.json | 2 +- infer/lib/infer_pack/models.py | 439 ++-- infer/lib/rtrvc.py | 461 ++++ poetry.lock | 3642 ++++++++++++++++++++++++++++++++ pyproject.toml | 64 + 17 files changed, 4970 insertions(+), 587 deletions(-) create mode 100644 docs/小白简易教程.doc create mode 100644 infer/lib/rtrvc.py create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/README.md b/README.md index 1fdca28..ee4b2b7 100644 --- a/README.md +++ b/README.md @@ -14,28 +14,35 @@ [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk) -[**更新日志**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/cn/Changelog_CN.md) | [**常见问题解答**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDL·5毛钱训练AI歌手**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**对照实验记录**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95)) | [**在线演示**](https://modelscope.cn/studios/FlowerCry/RVCv2demo) +[**更新日志**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_CN.md) | [**常见问题解答**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDL·5毛钱训练AI歌手**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**对照实验记录**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95)) | [**在线演示**](https://modelscope.cn/studios/FlowerCry/RVCv2demo) + +[**English**](./docs/en/README.en.md) | [**中文简体**](./README.md) | [**日本語**](./docs/jp/README.ja.md) | [**한국어**](./docs/kr/README.ko.md) ([**韓國語**](./docs/kr/README.ko.han.md)) | [**Français**](./docs/fr/README.fr.md) | [**Türkçe**](./docs/tr/README.tr.md) | [**Português**](./docs/pt/README.pt.md) ------- - -[**English**](./docs/en/README.en.md) | [**中文简体**](./README.md) | [**日本語**](./docs/jp/README.ja.md) | [**한국어**](./docs/kr/README.ko.md) ([**韓國語**](./docs/kr/README.ko.han.md)) | [**Français**](./docs/fr/README.fr.md)| [**Türkçe**](./docs/tr/README.tr.md) - -点此查看我们的[演示视频](https://www.bilibili.com/video/BV1pm4y1z7Gm/) ! - -训练推理界面:go-web.bat - -![image](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/assets/129054828/092e5c12-0d49-4168-a590-0b0ef6a4f630) - -实时变声界面:go-realtime-gui.bat - -![image](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/assets/129054828/143246a9-8b42-4dd1-a197-430ede4d15d7) - > 底模使用接近50小时的开源高质量VCTK训练集训练,无版权方面的顾虑,请大家放心使用 > 请期待RVCv3的底模,参数更大,数据更大,效果更好,基本持平的推理速度,需要训练数据量更少。 + + + + + + + + + + + + + + + + + +
训练推理界面实时变声界面
go-web.batgo-realtime-gui.bat
可以自由选择想要执行的操作。我们已经实现端到端170ms延迟。如使用ASIO输入输出设备,已能实现端到端90ms延迟,但非常依赖硬件驱动支持。
+ ## 简介 本仓库具有以下特点 + 使用top1检索替换输入源特征为训练集特征来杜绝音色泄漏 @@ -47,47 +54,55 @@ + 使用最先进的[人声音高提取算法InterSpeech2023-RMVPE](#参考项目)根绝哑音问题。效果最好(显著地)但比crepe_full更快、资源占用更小 + A卡I卡加速支持 +点此查看我们的[演示视频](https://www.bilibili.com/video/BV1pm4y1z7Gm/) ! + ## 环境配置 以下指令需在 Python 版本大于3.8的环境中执行。 -(Windows/Linux) -首先通过 pip 安装主要依赖: +### Windows/Linux/MacOS等平台通用方法 +下列方法任选其一。 +#### 1. 通过 pip 安装依赖 +1. 安装Pytorch及其核心依赖,若已安装则跳过。参考自: https://pytorch.org/get-started/locally/ ```bash -# 安装Pytorch及其核心依赖,若已安装则跳过 -# 参考自: https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio - -#如果是win系统+Nvidia Ampere架构(RTX30xx),根据 #21 的经验,需要指定pytorch对应的cuda版本 -#pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +``` +2. 如果是 win 系统 + Nvidia Ampere 架构(RTX30xx),根据 #21 的经验,需要指定 pytorch 对应的 cuda 版本 +```bash +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +``` +3. 根据自己的显卡安装对应依赖 +- N卡 +```bash +pip install -r requirements.txt +``` +- A卡/I卡 +```bash +pip install -r requirements-dml.txt +``` +- A卡ROCM(Linux) +```bash +pip install -r requirements-amd.txt +``` +- I卡IPEX(Linux) +```bash +pip install -r requirements-ipex.txt ``` -可以使用 poetry 来安装依赖: +#### 2. 通过 poetry 来安装依赖 +安装 Poetry 依赖管理工具,若已安装则跳过。参考自: https://python-poetry.org/docs/#installation ```bash -# 安装 Poetry 依赖管理工具, 若已安装则跳过 -# 参考自: https://python-poetry.org/docs/#installation curl -sSL https://install.python-poetry.org | python3 - - -# 通过poetry安装依赖 -poetry install ``` -你也可以通过 pip 来安装依赖: +通过 Poetry 安装依赖时,python 建议使用 3.7-3.10 版本,其余版本在安装 llvmlite==0.39.0 时会出现冲突 ```bash -N卡: - pip install -r requirements.txt - -A卡/I卡: - pip install -r requirements-dml.txt - -A卡Rocm(Linux): - pip install -r requirements-amd.txt - -I卡IPEX(Linux): - pip install -r requirements-ipex.txt +poetry init -n +poetry env use "path to your python.exe" +poetry run pip install -r requirments.txt ``` ------- -Mac 用户可以通过 `run.sh` 来安装依赖: +### MacOS +可以通过 `run.sh` 来安装依赖 ```bash sh ./run.sh ``` @@ -97,48 +112,48 @@ RVC需要其他一些预模型来推理和训练。 你可以从我们的[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)下载到这些模型。 -以下是一份清单,包括了所有RVC所需的预模型和其他文件的名称: +### 1. 下载 assets +以下是一份清单,包括了所有RVC所需的预模型和其他文件的名称。你可以在`tools`文件夹找到下载它们的脚本。 + +- ./assets/hubert/hubert_base.pt + +- ./assets/pretrained + +- ./assets/uvr5_weights + +想使用v2版本模型的话,需要额外下载 + +- ./assets/pretrained_v2 + +### 2. 安装 ffmpeg +若ffmpeg和ffprobe已安装则跳过。 + +#### Ubuntu/Debian 用户 ```bash -./assets/hubert/hubert_base.pt - -./assets/pretrained - -./assets/uvr5_weights - -想测试v2版本模型的话,需要额外下载 - -./assets/pretrained_v2 - -如果你正在使用Windows,则你可能需要这个文件,若ffmpeg和ffprobe已安装则跳过; ubuntu/debian 用户可以通过apt install ffmpeg来安装这2个库, Mac 用户则可以通过brew install ffmpeg来安装 (需要预先安装brew) - -./ffmpeg - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe - -./ffprobe - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe - -如果你想使用最新的RMVPE人声音高提取算法,则你需要下载音高提取模型参数并放置于RVC根目录 - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt - - A卡I卡用户需要的dml环境要请下载 - - https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx - +sudo apt install ffmpeg ``` -之后使用以下指令来启动WebUI: +#### MacOS 用户 ```bash -python infer-web.py +brew install ffmpeg ``` -如果你正在使用Windows 或 macOS,你可以直接下载并解压`RVC-beta.7z`,前者可以运行`go-web.bat`以启动WebUI,后者则运行命令`sh ./run.sh`以启动WebUI。 +#### Windows 用户 +下载后放置在根目录。 +- 下载[ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) -对于需要使用IPEX技术的I卡用户,请先在终端执行`source /opt/intel/oneapi/setvars.sh`(仅Linux)。 +- 下载[ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) -仓库内还有一份`小白简易教程.doc`以供参考。 +### 3. 下载 rmvpe 人声音高提取算法所需文件 + +如果你想使用最新的RMVPE人声音高提取算法,则你需要下载音高提取模型参数并放置于RVC根目录。 + +- 下载[rmvpe.pt](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt) + +#### 下载 rmvpe 的 dml 环境(可选, A卡/I卡用户) + +- 下载[rmvpe.onnx](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx) + +### 4. AMD显卡Rocm(可选, 仅Linux) -## AMD显卡Rocm相关(仅Linux) 如果你想基于AMD的Rocm技术在Linux系统上运行RVC,请先在[这里](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)安装所需的驱动。 若你使用的是Arch Linux,可以使用pacman来安装所需驱动: @@ -155,11 +170,32 @@ export HSA_OVERRIDE_GFX_VERSION=10.3.0 sudo usermod -aG render $USERNAME sudo usermod -aG video $USERNAME ```` -之后运行WebUI: + +## 开始使用 +### 直接启动 +使用以下指令来启动 WebUI ```bash python infer-web.py ``` +若先前使用 Poetry 安装依赖,则可以通过以下方式启动WebUI +```bash +poetry run python infer-web.py +``` + +### 使用整合包 +下载并解压`RVC-beta.7z` +#### Windows 用户 +双击`go-web.bat` +#### MacOS 用户 +```bash +sh ./run.sh +``` +### 对于需要使用IPEX技术的I卡用户(仅Linux) +```bash +source /opt/intel/oneapi/setvars.sh +``` + ## 参考项目 + [ContentVec](https://github.com/auspicious3000/contentvec/) + [VITS](https://github.com/jaywalnut310/vits) diff --git a/configs/config.json b/configs/config.json index 3c99324..e79bd50 100644 --- a/configs/config.json +++ b/configs/config.json @@ -1 +1 @@ -{"pth_path": "assets/weights/kikiV1.pth", "index_path": "logs/kikiV1.index", "sg_hostapi": "MME", "sg_wasapi_exclusive": false, "sg_input_device": "VoiceMeeter Output (VB-Audio Vo", "sg_output_device": "VoiceMeeter Input (VB-Audio Voi", "sr_type": "sr_device", "threhold": -60.0, "pitch": 12.0, "rms_mix_rate": 0.5, "index_rate": 0.0, "block_time": 0.15, "crossfade_length": 0.08, "extra_time": 2.0, "n_cpu": 4.0, "use_jit": false, "use_pv": false, "f0method": "fcpe"} \ No newline at end of file +{"pth_path": "assets/weights/kikiV1.pth", "index_path": "logs/kikiV1.index", "sg_hostapi": "MME", "sg_wasapi_exclusive": false, "sg_input_device": "VoiceMeeter Output (VB-Audio Vo", "sg_output_device": "VoiceMeeter Input (VB-Audio Voi", "sr_type": "sr_device", "threhold": -60.0, "pitch": 12.0, "formant": 0.0, "rms_mix_rate": 0.5, "index_rate": 0.0, "block_time": 0.15, "crossfade_length": 0.08, "extra_time": 2.0, "n_cpu": 4.0, "use_jit": false, "use_pv": false, "f0method": "fcpe"} \ No newline at end of file diff --git a/docs/en/README.en.md b/docs/en/README.en.md index 1459811..c4344bd 100644 --- a/docs/en/README.en.md +++ b/docs/en/README.en.md @@ -14,44 +14,52 @@ An easy-to-use Voice Conversion framework based on VITS.

[![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk) +[**Changelog**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_EN.md) | [**FAQ (Frequently Asked Questions)**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/FAQ-(Frequently-Asked-Questions)) + +[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Français**](../fr/README.fr.md) | [**Türkçe**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) + ------- -[**Changelog**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/en/Changelog_EN.md) | [**FAQ (Frequently Asked Questions)**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/FAQ-(Frequently-Asked-Questions)) +> Check out our [Demo Video](https://www.bilibili.com/video/BV1pm4y1z7Gm/) here! -[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Türkçe**](../tr/README.tr.md) + + + + + + + + + + + + + + + + + +
Training and inference WebuiReal-time voice changing GUI
go-web.batgo-realtime-gui.bat
You can freely choose the action you want to perform.We have achieved an end-to-end latency of 170ms. With the use of ASIO input and output devices, we have managed to achieve an end-to-end latency of 90ms, but it is highly dependent on hardware driver support.
+> The dataset for the pre-training model uses nearly 50 hours of high quality audio from the VCTK open source dataset. -Check our [Demo Video](https://www.bilibili.com/video/BV1pm4y1z7Gm/) here! - -Training/Inference WebUI:go-web.bat - -![image](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/assets/129054828/00387c1c-51b1-4010-947d-3f3ecac95b87) - -Realtime Voice Conversion GUI:go-realtime-gui.bat - -![image](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/assets/129054828/143246a9-8b42-4dd1-a197-430ede4d15d7) - -> The dataset for the pre-training model uses nearly 50 hours of high quality VCTK open source dataset. - -> High quality licensed song datasets will be added to training-set one after another for your use, without worrying about copyright infringement. +> High quality licensed song datasets will be added to the training-set often for your use, without having to worry about copyright infringement. > Please look forward to the pretrained base model of RVCv3, which has larger parameters, more training data, better results, unchanged inference speed, and requires less training data for training. -## Summary -This repository has the following features: +## Features: + Reduce tone leakage by replacing the source feature to training-set feature using top1 retrieval; -+ Easy and fast training, even on relatively poor graphics cards; -+ Training with a small amount of data also obtains relatively good results (>=10min low noise speech recommended); -+ Supporting model fusion to change timbres (using ckpt processing tab->ckpt merge); -+ Easy-to-use Webui interface; -+ Use the UVR5 model to quickly separate vocals and instruments. -+ Use the most powerful High-pitch Voice Extraction Algorithm [InterSpeech2023-RMVPE](#Credits) to prevent the muted sound problem. Provides the best results (significantly) and is faster, with even lower resource consumption than Crepe_full. -+ AMD/Intel graphics cards acceleration supported. ++ Easy + fast training, even on poor graphics cards; ++ Training with a small amounts of data (>=10min low noise speech recommended); ++ Model fusion to change timbres (using ckpt processing tab->ckpt merge); ++ Easy-to-use WebUI; ++ UVR5 model to quickly separate vocals and instruments; ++ High-pitch Voice Extraction Algorithm [InterSpeech2023-RMVPE](#Credits) to prevent a muted sound problem. Provides the best results (significantly) and is faster with lower resource consumption than Crepe_full; ++ AMD/Intel graphics cards acceleration supported; + Intel ARC graphics cards acceleration with IPEX supported. ## Preparing the environment -The following commands need to be executed in the environment of Python version 3.8 or higher. +The following commands need to be executed with Python 3.8 or higher. (Windows/Linux) First install the main dependencies through pip: @@ -125,15 +133,6 @@ If you want to test the v2 version model (the v2 version model has changed the i ./assets/pretrained_v2 -#If you are using Windows, you may also need these two files, skip if FFmpeg and FFprobe are installed -ffmpeg.exe - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe - -ffprobe.exe - -https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe - If you want to use the latest SOTA RMVPE vocal pitch extraction algorithm, you need to download the RMVPE weights and place them in the RVC root directory https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt @@ -144,14 +143,22 @@ https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt ``` -Intel ARC graphics cards users needs to run `source /opt/intel/oneapi/setvars.sh` command before starting Webui. +### 2. Install FFmpeg +If you have FFmpeg and FFprobe installed on your computer, you can skip this step. -Then use this command to start Webui: +#### For Ubuntu/Debian users ```bash -python infer-web.py +sudo apt install ffmpeg ``` +#### For MacOS users +```bash +brew install ffmpeg +``` +#### For Windwos users +Download these files and place them in the root folder: +- [ffmpeg.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) -If you are using Windows or macOS, you can download and extract `RVC-beta.7z` to use RVC directly by using `go-web.bat` on windows or `sh ./run.sh` on macOS to start Webui. +- [ffprobe.exe](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) ## ROCm Support for AMD graphic cards (Linux only) To use ROCm on Linux install all required drivers as described [here](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html). @@ -166,16 +173,30 @@ You might also need to set these environment variables (e.g. on a RX6700XT): export ROCM_PATH=/opt/rocm export HSA_OVERRIDE_GFX_VERSION=10.3.0 ```` -Also make sure your user is part of the `render` and `video` group: +Make sure your user is part of the `render` and `video` group: ```` sudo usermod -aG render $USERNAME sudo usermod -aG video $USERNAME ```` -After that you can run the WebUI: + +## Get started +### start up directly +Use the following command to start WebUI: ```bash python infer-web.py ``` - +### Use the integration package +Download and extract file `RVC-beta.7z`, then follow the steps below according to your system: +#### For Windows users +双击`go-web.bat` +#### For MacOS users +```bash +sh ./run.sh +``` +### For Intel IPEX users (Linux Only) +```bash +source /opt/intel/oneapi/setvars.sh +``` ## Credits + [ContentVec](https://github.com/auspicious3000/contentvec/) + [VITS](https://github.com/jaywalnut310/vits) diff --git a/docs/fr/README.fr.md b/docs/fr/README.fr.md index 272631a..1cb6180 100644 --- a/docs/fr/README.fr.md +++ b/docs/fr/README.fr.md @@ -14,13 +14,13 @@ Un framework simple et facile à utiliser pour la conversion vocale (modificateu [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk) -[**Journal de mise à jour**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/cn/Changelog_CN.md) | [**FAQ**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDL·Formation d'un chanteur AI pour 5 centimes**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**Enregistrement des expériences comparatives**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95)) | [**Démonstration en ligne**](https://huggingface.co/spaces/Ricecake123/RVC-demo) +[**Journal de mise à jour**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_CN.md) | [**FAQ**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%E8%A7%A3%E7%AD%94) | [**AutoDL·Formation d'un chanteur AI pour 5 centimes**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**Enregistrement des expériences comparatives**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95) | [**Démonstration en ligne**](https://huggingface.co/spaces/Ricecake123/RVC-demo) ------ -[**English**](./docs/en/README.en.md) |[ **中文简体**](./docs/cn/README.md) | [**日本語**](./docs/jp/README.ja.md) | [**한국어**](./docs/kr/README.ko.md) ([**韓國語**](./docs/kr/README.ko.han.md)) | [**Turc**](./docs/tr/README.tr.md) +[**English**](../en/README.en.md) | [ **中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Français**](../fr/README.fr.md) | [**Turc**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) Cliquez ici pour voir notre [vidéo de démonstration](https://www.bilibili.com/video/BV1pm4y1z7Gm/) ! @@ -39,10 +39,10 @@ Ce dépôt a les caractéristiques suivantes : + Interface web simple et facile à utiliser. + Peut appeler le modèle UVR5 pour séparer rapidement la voix et l'accompagnement. + Utilise l'algorithme de pitch vocal le plus avancé [InterSpeech2023-RMVPE](#projets-référencés) pour éliminer les problèmes de voix muette. Meilleurs résultats, plus rapide que crepe_full, et moins gourmand en ressources. -+ Support d'accélération pour les cartes A et I. ++ Support d'accélération pour les cartes AMD et Intel. ## Configuration de l'environnement -Exécutez les commandes suivantes dans un environnement Python de version supérieure à 3.8. +Exécutez les commandes suivantes dans un environnement Python de version 3.8 ou supérieure. (Windows/Linux) Installez d'abord les dépendances principales via pip : @@ -52,7 +52,10 @@ Installez d'abord les dépendances principales via pip : pip install torch torchvision torchaudio # Pour les utilisateurs de Windows avec une architecture Nvidia Ampere (RTX30xx), en se basant sur l'expérience #21, spécifiez la version CUDA correspondante pour Pytorch. -# pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 + +# Pour Linux + carte AMD, utilisez cette version de Pytorch: +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.4.2 ``` Vous pouvez utiliser poetry pour installer les dépendances : @@ -67,15 +70,17 @@ poetry install Ou vous pouvez utiliser pip pour installer les dépendances : ```bash -Cartes Nvidia : - +# Cartes Nvidia : pip install -r requirements.txt -Cartes AMD/Intel : -pip install - +# Cartes AMD/Intel : +pip install -r requirements-dml.txt -r requirements-dml.txt +# Cartes Intel avec IPEX +pip install -r requirements-ipex.txt +# Cartes AMD sur Linux (ROCm) +pip install -r requirements-amd.txt ``` ------ @@ -87,7 +92,12 @@ sh ./run.sh ## Préparation d'autres modèles pré-entraînés RVC nécessite d'autres modèles pré-entraînés pour l'inférence et la formation. -Vous pouvez télécharger ces modèles depuis notre [espace Hugging Face](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/). +```bash +#Télécharger tous les modèles depuis https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/ +python tools/download_models.py +``` + +Ou vous pouvez télécharger ces modèles depuis notre [espace Hugging Face](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/). Voici une liste des modèles et autres fichiers requis par RVC : ```bash @@ -97,29 +107,30 @@ Voici une liste des modèles et autres fichiers requis par RVC : ./assets/uvr5_weights -Pour tester la version v2 du modèle, téléchargez également : +# Pour tester la version v2 du modèle, téléchargez également : ./assets/pretrained_v2 -Si vous utilisez Windows, vous pourriez avoir besoin de ces fichiers pour ffmpeg et ffprobe, sautez cette étape si vous avez déjà installé ffmpeg et ffprobe. Les utilisateurs d'ubuntu/debian peuvent installer ces deux bibliothèques avec apt install ffmpeg. Les utilisateurs de Mac peuvent les installer avec brew install ffmpeg (prérequis : avoir installé brew). +# Si vous utilisez Windows, vous pourriez avoir besoin de ces fichiers pour ffmpeg et ffprobe, sautez cette étape si vous avez déjà installé ffmpeg et ffprobe. Les utilisateurs d'ubuntu/debian peuvent installer ces deux bibliothèques avec apt install ffmpeg. Les utilisateurs de Mac peuvent les installer avec brew install ffmpeg (prérequis : avoir installé brew). -./ffmpeg +# ./ffmpeg https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe -./ffprobe +# ./ffprobe https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe -Si vous souhaitez utiliser le dernier algorithme RMVPE de pitch vocal, téléchargez les paramètres du modèle de pitch et placez-les dans le répertoire racine de RVC. +# Si vous souhaitez utiliser le dernier algorithme RMVPE de pitch vocal, téléchargez les paramètres du modèle de pitch et placez-les dans le répertoire racine de RVC. https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt - Les utilisateurs de cartes AMD/Intel nécessitant l'environnement DML doivent télécharger : + # Les utilisateurs de cartes AMD/Intel nécessitant l'environnement DML doivent télécharger : https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx ``` +Pour les utilisateurs d'Intel ARC avec IPEX, exécutez d'abord `source /opt/intel/oneapi/setvars.sh`. Ensuite, exécutez la commande suivante pour démarrer WebUI : ```bash python infer-web.py @@ -127,7 +138,28 @@ python infer-web.py Si vous utilisez Windows ou macOS, vous pouvez télécharger et extraire `RVC-beta.7z`. Les utilisateurs de Windows peuvent exécuter `go-web.bat` pour démarrer WebUI, tandis que les utilisateurs de macOS peuvent exécuter `sh ./run.sh`. -Il y a également un `Guide facile pour les débutants.doc` inclus pour référence. +## Compatibilité ROCm pour les cartes AMD (seulement Linux) +Installez tous les pilotes décrits [ici](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html). + +Sur Arch utilisez pacman pour installer le pilote: +```` +pacman -S rocm-hip-sdk rocm-opencl-sdk +```` + +Vous devrez peut-être créer ces variables d'environnement (par exemple avec RX6700XT): +```` +export ROCM_PATH=/opt/rocm +export HSA_OVERRIDE_GFX_VERSION=10.3.0 +```` +Assurez-vous que votre utilisateur est dans les groupes `render` et `video`: +```` +sudo usermod -aG render $USERNAME +sudo usermod -aG video $USERNAME +```` +Enfin vous pouvez exécuter WebUI: +```bash +python infer-web.py +``` ## Crédits + [ContentVec](https://github.com/auspicious3000/contentvec/) diff --git a/docs/jp/README.ja.md b/docs/jp/README.ja.md index 98a3b25..575b14a 100644 --- a/docs/jp/README.ja.md +++ b/docs/jp/README.ja.md @@ -3,107 +3,255 @@

Retrieval-based-Voice-Conversion-WebUI

VITSに基づく使いやすい音声変換(voice changer)framework

-[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange -)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) +[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)
[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/Retrieval_based_Voice_Conversion_WebUI.ipynb) -[![Licence](https://img.shields.io/github/license/RVC-Project/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE) +[![Licence](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE) [![Huggingface](https://img.shields.io/badge/🤗%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/) [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk) +[**更新日誌**](./Changelog_JA.md) | [**よくある質問**](./faq_ja.md) | [**AutoDL·5 円で AI 歌手をトレーニング**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**対照実験記録**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95) | [**オンラインデモ**](https://modelscope.cn/studios/FlowerCry/RVCv2demo) + +[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Français**](../fr/README.fr.md) | [**Türkçe**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) + ------- - -[**更新日誌**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/cn/Changelog_CN.md) - -[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Türkçe**](../tr/README.tr.md) - > デモ動画は[こちら](https://www.bilibili.com/video/BV1pm4y1z7Gm/)でご覧ください。 -> RVCによるリアルタイム音声変換: [w-okada/voice-changer](https://github.com/w-okada/voice-changer) +> RVC によるリアルタイム音声変換: [w-okada/voice-changer](https://github.com/w-okada/voice-changer) -> 著作権侵害を心配することなく使用できるように、基底モデルは約50時間の高品質なオープンソースデータセットで訓練されています。 +> 著作権侵害を心配することなく使用できるように、基底モデルは約 50 時間の高品質なオープンソースデータセットで訓練されています。 -> 今後も、次々と使用許可のある高品質な歌声の資料集を追加し、基底モデルを訓練する予定です。 +> RVCv3 の基底モデルルをご期待ください。より大きなパラメータ、より大きなデータ、より良い効果を提供し、基本的に同様の推論速度を維持しながら、トレーニングに必要なデータ量はより少なくなります。 + + + + + + + + + + + + + + + + + + +
トレーニングと推論インターフェースリアルタイム音声変換インターフェース
go-web.batgo-realtime-gui.bat
実行したい操作を自由に選択できます。既に端から端までの170msの遅延を実現しました。ASIO入出力デバイスを使用すれば、端から端までの90msの遅延を達成できますが、ハードウェアドライバーのサポートに非常に依存しています。
## はじめに + 本リポジトリには下記の特徴があります。 -+ Top1検索を用いることで、生の特徴量を訓練用データセット特徴量に変換し、トーンリーケージを削減します。 -+ 比較的貧弱なGPUでも、高速かつ簡単に訓練できます。 -+ 少量のデータセットからでも、比較的良い結果を得ることができます。(10分以上のノイズの少ない音声を推奨します。) -+ モデルを融合することで、音声を混ぜることができます。(ckpt processingタブの、ckpt mergeを使用します。) -+ 使いやすいWebUI。 -+ UVR5 Modelも含んでいるため、人の声とBGMを素早く分離できます。 +- Top1 検索を用いることで、生の特徴量を訓練用データセット特徴量に変換し、トーンリーケージを削減します。 +- 比較的貧弱な GPU でも、高速かつ簡単に訓練できます。 +- 少量のデータセットからでも、比較的良い結果を得ることができます。(10 分以上のノイズの少ない音声を推奨します。) +- モデルを融合することで、音声を混ぜることができます。(ckpt processing タブの、ckpt merge を使用します。) +- 使いやすい WebUI。 +- UVR5 Model も含んでいるため、人の声と BGM を素早く分離できます。 +- 最先端の[人間の声のピッチ抽出アルゴリズム InterSpeech2023-RMVPE](#参照プロジェクト)を使用して無声音問題を解決します。効果は最高(著しく)で、crepe_full よりも速く、リソース使用が少ないです。 +- A カードと I カードの加速サポート + +私たちの[デモビデオ](https://www.bilibili.com/video/BV1pm4y1z7Gm/)をチェックしてください! ## 環境構築 -Poetryで依存関係をインストールすることをお勧めします。 -下記のコマンドは、Python3.8以上の環境で実行する必要があります: +下記のコマンドは、Python3.8 以上の環境で実行する必要があります: + +### Windows/Linux/MacOS などのプラットフォーム共通方法 + +以下の方法のいずれかを選択してください。 + +#### 1. pip を通じた依存関係のインストール + +1. Pytorch 及びその主要な依存関係のインストール、すでにインストールされている場合はスキップ。参照:https://pytorch.org/get-started/locally/ + ```bash -# PyTorch関連の依存関係をインストール。インストール済の場合は省略。 -# 参照先: https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio - -#Windows+ Nvidia Ampere Architecture(RTX30xx)の場合、 #21 に従い、pytorchに対応するcuda versionを指定する必要があります。 -#pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 - -# PyTorch関連の依存関係をインストール。インストール済の場合は省略。 -# 参照先: https://python-poetry.org/docs/#installation -curl -sSL https://install.python-poetry.org | python3 - - -# Poetry経由で依存関係をインストール -poetry install ``` -pipでも依存関係のインストールが可能です: +2. win システム + Nvidia Ampere アーキテクチャ(RTX30xx)の場合、#21 の経験に基づいて pytorch に対応する cuda バージョンを指定 + +```bash +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +``` + +3. 自分のグラフィックカードに合わせた依存関係のインストール + +- N カード ```bash pip install -r requirements.txt ``` -## 基底modelsを準備 -RVCは推論/訓練のために、様々な事前訓練を行った基底モデルを必要とします。 +- A カード/I カード -modelsは[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)からダウンロードできます。 - -以下は、RVCに必要な基底モデルやその他のファイルの一覧です。 ```bash -./assets/hubert/hubert_base.pt - -./assets/pretrained - -./assets/uvr5_weights - -V2のモデルを使用するには、追加でファイルをダウンロードする必要があります - -./assets/pretrained_v2 - -# ffmpegがすでにinstallされている場合は省略 -./ffmpeg +pip install -r requirements-dml.txt ``` -その後、下記のコマンドでWebUIを起動します。 + +- A カード ROCM(Linux) + ```bash +pip install -r requirements-amd.txt +``` + +- I カード IPEX(Linux) + +```bash +pip install -r requirements-ipex.txt +``` + +#### 2. poetry を通じた依存関係のインストール + +Poetry 依存関係管理ツールのインストール、すでにインストールされている場合はスキップ。参照:https://python-poetry.org/docs/#installation + +```bash +curl -sSL https://install.python-poetry.org | python3 - +``` + +poetry を使って依存関係をインストール + +```bash +poetry install +``` + +### MacOS + +`run.sh`を使って依存関係をインストールできます + +```bash +sh ./run.sh +``` + +## その他の事前訓練されたモデルの準備 + +RVC は推論とトレーニングのために他のいくつかの事前訓練されたモデルが必要です。 + +これらのモデルは私たちの[Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)でダウンロードできます。 + +### 1. assets のダウンロード + +以下は、RVC に必要なすべての事前学習モデルとその他のファイルのリストです。`tools`フォルダーにこれらをダウンロードするスクリプトがあります。 + +- ./assets/hubert/hubert_base.pt + +- ./assets/pretrained + +- ./assets/uvr5_weights + +v2 バージョンのモデルを使用する場合、追加で以下をダウンロードする必要があります。 + +- ./assets/pretrained_v2 + +### 2. ffmpeg のインストール + +ffmpeg と ffprobe が既にインストールされている場合はスキップします。 + +#### Ubuntu/Debian ユーザー + +```bash +sudo apt install ffmpeg +``` + +#### MacOS ユーザー + +```bash +brew install ffmpeg +``` + +#### Windows ユーザー + +ダウンロード後、ルートディレクトリに配置してください。 + +- [ffmpeg.exe をダウンロード](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) + +- [ffprobe.exe をダウンロード](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) + +### 3. RMVPE 人間の声のピッチ抽出アルゴリズムに必要なファイルのダウンロード + +最新の RMVPE 人間の声のピッチ抽出アルゴリズムを使用する場合、ピッチ抽出モデルのパラメータをダウンロードして RVC のルートディレクトリに配置する必要があります。 + +- [rmvpe.pt をダウンロード](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt) + +#### dml 環境の RMVPE をダウンロード(オプション、A カード/I カードユーザー) + +- [rmvpe.onnx をダウンロード](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx) + +### 4. AMD グラフィックカード Rocm(オプション、Linux のみ) + +Linux システムで AMD の Rocm 技術をベースに RVC を実行したい場合、[こちら](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)で必要なドライバーを先にインストールしてください。 + +Arch Linux を使用している場合、pacman を使用して必要なドライバーをインストールできます。 + +``` +pacman -S rocm-hip-sdk rocm-opencl-sdk +``` + +一部のモデルのグラフィックカード(例:RX6700XT)の場合、以下のような環境変数を追加で設定する必要があるかもしれません。 + +``` +export ROCM_PATH=/opt/rocm +export HSA_OVERRIDE_GFX_VERSION=10.3.0 +``` + +同時に、現在のユーザーが`render`および`video`ユーザーグループに属していることを確認してください。 + +``` +sudo usermod -aG render $USERNAME +sudo usermod -aG video $USERNAME +``` + +## 使用開始 + +### 直接起動 + +以下のコマンドで WebUI を起動します +'''bash python infer-web.py -``` -Windowsをお使いの方は、直接`RVC-beta.7z`をダウンロード後に展開し、`go-web.bat`をクリックすることで、WebUIを起動することができます。(7zipが必要です。) +''' -また、リポジトリに[小白简易教程.doc](./小白简易教程.doc)がありますので、参考にしてください(中国語版のみ)。 +### 統合パッケージの使用 + +`RVC-beta.7z`をダウンロードして解凍 + +#### Windows ユーザー + +`go-web.bat`をダブルクリック + +#### MacOS ユーザー + +'''bash +sh ./run.sh +''' + +### IPEX 技術が必要な I カードユーザー向け(Linux のみ) + +'''bash +source /opt/intel/oneapi/setvars.sh +''' ## 参考プロジェクト -+ [ContentVec](https://github.com/auspicious3000/contentvec/) -+ [VITS](https://github.com/jaywalnut310/vits) -+ [HIFIGAN](https://github.com/jik876/hifi-gan) -+ [Gradio](https://github.com/gradio-app/gradio) -+ [FFmpeg](https://github.com/FFmpeg/FFmpeg) -+ [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui) -+ [audio-slicer](https://github.com/openvpi/audio-slicer) -## 貢献者(contributor)の皆様の尽力に感謝します +- [ContentVec](https://github.com/auspicious3000/contentvec/) +- [VITS](https://github.com/jaywalnut310/vits) +- [HIFIGAN](https://github.com/jik876/hifi-gan) +- [Gradio](https://github.com/gradio-app/gradio) +- [FFmpeg](https://github.com/FFmpeg/FFmpeg) +- [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui) +- [audio-slicer](https://github.com/openvpi/audio-slicer) +- [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE) + - 事前訓練されたモデルは[yxlllc](https://github.com/yxlllc/RMVPE)と[RVC-Boss](https://github.com/RVC-Boss)によって訓練され、テストされました。 + +## すべての貢献者の努力に感謝します + diff --git a/docs/kr/Changelog_KO.md b/docs/kr/Changelog_KO.md index b835a2d..c9ba32f 100644 --- a/docs/kr/Changelog_KO.md +++ b/docs/kr/Changelog_KO.md @@ -1,5 +1,22 @@ -### 2023-08-13 +### 2023년 10월 6일 업데이트 + +실시간 음성 변환을 위한 인터페이스인 go-realtime-gui.bat/gui_v1.py를 제작했습니다(사실 이는 이미 존재했었습니다). 이번 업데이트는 주로 실시간 음성 변환 성능을 최적화하는 데 중점을 두었습니다. 0813 버전과 비교하여: + +- 1. 인터페이스 조작 최적화: 매개변수 핫 업데이트(매개변수 조정 시 중단 후 재시작 필요 없음), 모델 지연 로딩(이미 로드된 모델은 재로드 필요 없음), 음량 인자 매개변수 추가(음량을 입력 오디오에 가깝게 조정) +- 2. 내장된 노이즈 감소 효과 및 속도 최적화 +- 3. 추론 속도 크게 향상 + +입력 및 출력 장치는 동일한 유형을 선택해야 합니다. 예를 들어, 모두 MME 유형을 선택해야 합니다. + +1006 버전의 전체 업데이트는 다음과 같습니다: + +- 1. rmvpe 음성 피치 추출 알고리즘의 효과를 계속해서 향상, 특히 남성 저음역에 대한 개선이 큼 +- 2. 추론 인터페이스 레이아웃 최적화 + +### 2023년 08월 13일 업데이트 + 1-정기적인 버그 수정 + - 최소 총 에포크 수를 1로 변경하고, 최소 총 에포크 수를 2로 변경합니다. - 사전 훈련(pre-train) 모델을 사용하지 않는 훈련 오류 수정 - 반주 보컬 분리 후 그래픽 메모리 지우기 @@ -9,9 +26,10 @@ - 실시간 음성 변경 중 faiss 검색으로 인한 CPU 소모 문제 해결 2-키 업데이트 + - 현재 가장 강력한 오픈 소스 보컬 피치 추출 모델 RMVPE를 훈련하고, 이를 RVC 훈련, 오프라인/실시간 추론에 사용하며, PyTorch/Onx/DirectML을 지원합니다. -- 파이토치_DML을 통한 AMD 및 인텔 그래픽 카드 지원 -(1) 실시간 음성 변화 (2) 추론 (3) 보컬 반주 분리 (4) 현재 지원되지 않는 훈련은 CPU 훈련으로 전환, Onnx_Dml을 통한 gpu의 RMVPE 추론 지원 +- 파이토치\_DML을 통한 AMD 및 인텔 그래픽 카드 지원 + (1) 실시간 음성 변화 (2) 추론 (3) 보컬 반주 분리 (4) 현재 지원되지 않는 훈련은 CPU 훈련으로 전환, Onnx_Dml을 통한 gpu의 RMVPE 추론 지원 ### 2023년 6월 18일 업데이트 diff --git a/docs/kr/README.ko.han.md b/docs/kr/README.ko.han.md index 0259048..ff227b4 100644 --- a/docs/kr/README.ko.han.md +++ b/docs/kr/README.ko.han.md @@ -19,7 +19,7 @@ VITS基盤의 簡單하고使用하기 쉬운音聲變換틀

------ [**更新日誌**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_KO.md) -[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Türkçe**](../tr/README.tr.md) +[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Français**](../fr/README.fr.md) | [**Türkçe**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) > [示範映像](https://www.bilibili.com/video/BV1pm4y1z7Gm/)을 確認해 보세요! diff --git a/docs/kr/README.ko.md b/docs/kr/README.ko.md index 36c455d..d86becc 100644 --- a/docs/kr/README.ko.md +++ b/docs/kr/README.ko.md @@ -3,104 +3,243 @@

Retrieval-based-Voice-Conversion-WebUI

VITS 기반의 간단하고 사용하기 쉬운 음성 변환 프레임워크.

-[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange -)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI) +[![madewithlove](https://img.shields.io/badge/made_with-%E2%9D%A4-red?style=for-the-badge&labelColor=orange)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI)
[![Open In Colab](https://img.shields.io/badge/Colab-F9AB00?style=for-the-badge&logo=googlecolab&color=525252)](https://colab.research.google.com/github/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/Retrieval_based_Voice_Conversion_WebUI.ipynb) -[![Licence](https://img.shields.io/github/license/RVC-Project/Retrieval-based-Voice-Conversion-WebUI?style=for-the-badge)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE) +[![Licence](https://img.shields.io/badge/LICENSE-MIT-green.svg?style=for-the-badge)](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/LICENSE) [![Huggingface](https://img.shields.io/badge/🤗%20-Spaces-yellow.svg?style=for-the-badge)](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/) [![Discord](https://img.shields.io/badge/RVC%20Developers-Discord-7289DA?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/HcsmBBGyVk) +[**업데이트 로그**](./Changelog_KO.md) | [**자주 묻는 질문**](./faq_ko.md) | [**AutoDL·5원으로 AI 가수 훈련**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/Autodl%E8%AE%AD%E7%BB%83RVC%C2%B7AI%E6%AD%8C%E6%89%8B%E6%95%99%E7%A8%8B) | [**대조 실험 기록**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/%E5%AF%B9%E7%85%A7%E5%AE%9E%E9%AA%8C%C2%B7%E5%AE%9E%E9%AA%8C%E8%AE%B0%E5%BD%95) | [**온라인 데모**](https://modelscope.cn/studios/FlowerCry/RVCv2demo) + +[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Français**](../fr/README.fr.md) | [**Türkçe**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) + ---- - -[**업데이트 로그**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/kr/Changelog_KO.md) - -[**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Türkçe**](../tr/README.tr.md) - > [데모 영상](https://www.bilibili.com/video/BV1pm4y1z7Gm/)을 확인해 보세요! > RVC를 활용한 실시간 음성변환: [w-okada/voice-changer](https://github.com/w-okada/voice-changer) > 기본 모델은 50시간 가량의 고퀄리티 오픈 소스 VCTK 데이터셋을 사용하였으므로, 저작권상의 염려가 없으니 안심하고 사용하시기 바랍니다. -> 저작권 문제가 없는 고퀄리티의 노래를 이후에도 계속해서 훈련할 예정입니다. +> 더 큰 매개변수, 더 큰 데이터, 더 나은 효과, 기본적으로 동일한 추론 속도, 더 적은 양의 훈련 데이터가 필요한 RVCv3의 기본 모델을 기대해 주십시오. + + + + + + + + + + + + + + + + + + +
훈련 및 추론 인터페이스실시간 음성 변환 인터페이스
go-web.batgo-realtime-gui.bat
원하는 작업을 자유롭게 선택할 수 있습니다.우리는 이미 끝에서 끝까지 170ms의 지연을 실현했습니다. ASIO 입력 및 출력 장치를 사용하면 끝에서 끝까지 90ms의 지연을 달성할 수 있지만, 이는 하드웨어 드라이버 지원에 매우 의존적입니다.
## 소개 본 Repo는 다음과 같은 특징을 가지고 있습니다: -- top1 검색을 이용하여 입력 음색 특징을 훈련 세트 음색 특징으로 대체하여 음색의 누출을 방지; -- 상대적으로 낮은 성능의 GPU에서도 빠른 훈련 가능; -- 적은 양의 데이터로 훈련해도 좋은 결과를 얻을 수 있음 (최소 10분 이상의 저잡음 음성 데이터를 사용하는 것을 권장); -- 모델 융합을 통한 음색의 변조 가능 (ckpt 처리 탭->ckpt 병합 선택); -- 사용하기 쉬운 WebUI (웹 인터페이스); +- top1 검색을 이용하여 입력 음색 특징을 훈련 세트 음색 특징으로 대체하여 음색의 누출을 방지 +- 상대적으로 낮은 성능의 GPU에서도 빠른 훈련 가능 +- 적은 양의 데이터로 훈련해도 좋은 결과를 얻을 수 있음 (최소 10분 이상의 저잡음 음성 데이터를 사용하는 것을 권장) +- 모델 융합을 통한 음색의 변조 가능 (ckpt 처리 탭->ckpt 병합 선택) +- 사용하기 쉬운 WebUI (웹 인터페이스) - UVR5 모델을 이용하여 목소리와 배경음악의 빠른 분리; +- 최첨단 [음성 피치 추출 알고리즘 InterSpeech2023-RMVPE](#参考项目)을 사용하여 무성음 문제를 해결합니다. 효과는 최고(압도적)이며 crepe_full보다 더 빠르고 리소스 사용이 적음 +- A카드와 I카드 가속을 지원 -## 환경의 준비 +해당 프로젝트의 [데모 비디오](https://www.bilibili.com/video/BV1pm4y1z7Gm/)를 확인해보세요! -poetry를 통해 dependecies를 설치하는 것을 권장합니다. +## 환경 설정 -다음 명령은 Python 버전 3.8 이상의 환경에서 실행되어야 합니다: +다음 명령은 Python 버전이 3.8 이상인 환경에서 실행해야 합니다. + +### Windows/Linux/MacOS 등 플랫폼 공통 방법 + +아래 방법 중 하나를 선택하세요. + +#### 1. pip를 통한 의존성 설치 + +1. Pytorch 및 의존성 모듈 설치, 이미 설치되어 있으면 생략. 참조: https://pytorch.org/get-started/locally/ ```bash -# PyTorch 관련 주요 dependencies 설치, 이미 설치되어 있는 경우 건너뛰기 가능 -# 참조: https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio - -# Windows + Nvidia Ampere Architecture(RTX30xx)를 사용하고 있다면, https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/issues/21 에서 명시된 것과 같이 PyTorch에 맞는 CUDA 버전을 지정해야 합니다. -#pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 - -# Poetry 설치, 이미 설치되어 있는 경우 건너뛰기 가능 -# Reference: https://python-poetry.org/docs/#installation -curl -sSL https://install.python-poetry.org | python3 - - -# Dependecies 설치 -poetry install ``` -pip를 활용하여 dependencies를 설치하여도 무방합니다. +2. win 시스템 + Nvidia Ampere 아키텍처(RTX30xx) 사용 시, #21의 사례에 따라 pytorch에 해당하는 cuda 버전을 지정 + +```bash +pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu117 +``` + +3. 자신의 그래픽 카드에 맞는 의존성 설치 + +- N카드 ```bash pip install -r requirements.txt ``` -## 기타 사전 모델 준비 - -RVC 모델은 추론과 훈련을 위하여 다른 사전 모델이 필요합니다. - -[Huggingface space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)를 통해서 다운로드 할 수 있습니다. - -다음은 RVC에 필요한 사전 모델 및 기타 파일 목록입니다: +- A카드/I카드 ```bash -./assets/hubert/hubert_base.pt - -./assets/pretrained - -./assets/uvr5_weights - -V2 버전 모델을 테스트하려면 추가 다운로드가 필요합니다. - -./assets/pretrained_v2 - -# Windows를 사용하는 경우 이 사전도 필요할 수 있습니다. FFmpeg가 설치되어 있으면 건너뛰어도 됩니다. -ffmpeg.exe +pip install -r requirements-dml.txt ``` -그 후 이하의 명령을 사용하여 WebUI를 시작할 수 있습니다: +- A카드ROCM(Linux) + +```bash +pip install -r requirements-amd.txt +``` + +- I카드IPEX(Linux) + +```bash +pip install -r requirements-ipex.txt +``` + +#### 2. poetry를 통한 의존성 설치 + +Poetry 의존성 관리 도구 설치, 이미 설치된 경우 생략. 참조: https://python-poetry.org/docs/#installation + +```bash +curl -sSL https://install.python-poetry.org | python3 - +``` + +poetry를 통한 의존성 설치 + +```bash +poetry install +``` + +### MacOS + +`run.sh`를 통해 의존성 설치 가능 + +```bash +sh ./run.sh +``` + +## 기타 사전 훈련된 모델 준비 + +RVC는 추론과 훈련을 위해 다른 일부 사전 훈련된 모델이 필요합니다. + +이러한 모델은 저희의 [Hugging Face space](https://huggingface.co/lj1995/VoiceConversionWebUI/tree/main/)에서 다운로드할 수 있습니다. + +### 1. assets 다운로드 + +다음은 RVC에 필요한 모든 사전 훈련된 모델과 기타 파일의 목록입니다. `tools` 폴더에서 이들을 다운로드하는 스크립트를 찾을 수 있습니다. + +- ./assets/hubert/hubert_base.pt + +- ./assets/pretrained + +- ./assets/uvr5_weights + +v2 버전 모델을 사용하려면 추가로 다음을 다운로드해야 합니다. + +- ./assets/pretrained_v2 + +### 2. ffmpeg 설치 + +ffmpeg와 ffprobe가 이미 설치되어 있다면 건너뜁니다. + +#### Ubuntu/Debian 사용자 + +```bash +sudo apt install ffmpeg +``` + +#### MacOS 사용자 + +```bash +brew install ffmpeg +``` + +#### Windows 사용자 + +다운로드 후 루트 디렉토리에 배치. + +- [ffmpeg.exe 다운로드](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffmpeg.exe) + +- [ffprobe.exe 다운로드](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/ffprobe.exe) + +### 3. RMVPE 인간 음성 피치 추출 알고리즘에 필요한 파일 다운로드 + +최신 RMVPE 인간 음성 피치 추출 알고리즘을 사용하려면 음피치 추출 모델 매개변수를 다운로드하고 RVC 루트 디렉토리에 배치해야 합니다. + +- [rmvpe.pt 다운로드](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.pt) + +#### dml 환경의 RMVPE 다운로드(선택사항, A카드/I카드 사용자) + +- [rmvpe.onnx 다운로드](https://huggingface.co/lj1995/VoiceConversionWebUI/blob/main/rmvpe.onnx) + +### 4. AMD 그래픽 카드 Rocm(선택사항, Linux만 해당) + +Linux 시스템에서 AMD의 Rocm 기술을 기반으로 RVC를 실행하려면 [여기](https://rocm.docs.amd.com/en/latest/deploy/linux/os-native/install.html)에서 필요한 드라이버를 먼저 설치하세요. + +Arch Linux를 사용하는 경우 pacman을 사용하여 필요한 드라이버를 설치할 수 있습니다. + +``` +pacman -S rocm-hip-sdk rocm-opencl-sdk +``` + +일부 모델의 그래픽 카드(예: RX6700XT)의 경우, 다음과 같은 환경 변수를 추가로 설정해야 할 수 있습니다. + +``` +export ROCM_PATH=/opt/rocm +export HSA_OVERRIDE_GFX_VERSION=10.3.0 +``` + +동시에 현재 사용자가 `render` 및 `video` 사용자 그룹에 속해 있는지 확인하세요. + +``` +sudo usermod -aG render $USERNAME +sudo usermod -aG video $USERNAME +``` + +## 시작하기 + +### 직접 시작 + +다음 명령어로 WebUI를 시작하세요 ```bash python infer-web.py ``` -Windows를 사용하는 경우 `RVC-beta.7z`를 다운로드 및 압축 해제하여 RVC를 직접 사용하거나 `go-web.bat`을 사용하여 WebUi를 시작할 수 있습니다. +### 통합 패키지 사용 -## 참고 +`RVC-beta.7z`를 다운로드하고 압축 해제 + +#### Windows 사용자 + +`go-web.bat` 더블 클릭 + +#### MacOS 사용자 + +```bash +sh ./run.sh +``` + +### IPEX 기술이 필요한 I카드 사용자를 위한 지침(Linux만 해당) + +```bash +source /opt/intel/oneapi/setvars.sh +``` + +## 참조 프로젝트 - [ContentVec](https://github.com/auspicious3000/contentvec/) - [VITS](https://github.com/jaywalnut310/vits) @@ -109,8 +248,10 @@ Windows를 사용하는 경우 `RVC-beta.7z`를 다운로드 및 압축 해제 - [FFmpeg](https://github.com/FFmpeg/FFmpeg) - [Ultimate Vocal Remover](https://github.com/Anjok07/ultimatevocalremovergui) - [audio-slicer](https://github.com/openvpi/audio-slicer) +- [Vocal pitch extraction:RMVPE](https://github.com/Dream-High/RMVPE) + - 사전 훈련된 모델은 [yxlllc](https://github.com/yxlllc/RMVPE)와 [RVC-Boss](https://github.com/RVC-Boss)에 의해 훈련되고 테스트되었습니다. -## 모든 기여자 분들의 노력에 감사드립니다. +## 모든 기여자들의 노력에 감사드립니다 diff --git a/docs/pt/README.pt.md b/docs/pt/README.pt.md index 86a9f5a..bc31e60 100644 --- a/docs/pt/README.pt.md +++ b/docs/pt/README.pt.md @@ -17,7 +17,7 @@ Uma estrutura de conversão de voz fácil de usar baseada em VITS.

------ -[**Changelog**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/en/Changelog_EN.md) | [**FAQ (Frequently Asked Questions)**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/FAQ-(Frequently-Asked-Questions)) +[**Changelog**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_EN.md) | [**FAQ (Frequently Asked Questions)**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/FAQ-(Frequently-Asked-Questions)) [**English**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Türkçe**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) diff --git a/docs/tr/README.tr.md b/docs/tr/README.tr.md index f2817cb..d90c68e 100644 --- a/docs/tr/README.tr.md +++ b/docs/tr/README.tr.md @@ -18,9 +18,9 @@ VITS'e dayalı kullanımı kolay bir Ses Dönüşümü çerçevesi.

------ -[**Değişiklik Geçmişi**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/tr/Changelog_TR.md) | [**SSS (Sıkça Sorulan Sorular)**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/SSS-(Sıkça-Sorulan-Sorular)) +[**Değişiklik Geçmişi**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/blob/main/docs/Changelog_TR.md) | [**SSS (Sıkça Sorulan Sorular)**](https://github.com/RVC-Project/Retrieval-based-Voice-Conversion-WebUI/wiki/SSS-(Sıkça-Sorulan-Sorular)) -[**İngilizce**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Türkçe**](../tr/README.tr.md) +[**İngilizce**](../en/README.en.md) | [**中文简体**](../../README.md) | [**日本語**](../jp/README.ja.md) | [**한국어**](../kr/README.ko.md) ([**韓國語**](../kr/README.ko.han.md)) | [**Français**](../fr/README.fr.md) | [**Türkçe**](../tr/README.tr.md) | [**Português**](../pt/README.pt.md) Burada [Demo Video'muzu](https://www.bilibili.com/video/BV1pm4y1z7Gm/) izleyebilirsiniz! diff --git a/docs/小白简易教程.doc b/docs/小白简易教程.doc new file mode 100644 index 0000000000000000000000000000000000000000..2e291891303f0f805c36a463a3fecbde8d82c4de GIT binary patch literal 602624 zcmeF(bzBx*zc6~dZB!5eK@d>7k(O4vk#0~@T3TAALAqN>0Rcfem2RXPq`Rf-{f+l? z@BN(T*?Ygw`#JlMv(Gt;&-a?SCa#%Tvu4ejwbt;X3*+a|`2QdN9})wnupgJ< zJR#@s5)A#}0~x;xBK9Dr@1t95Y6(DKp03hkFomy|1tdD57;;|{}OD32!_Z# z2u1qBqa6P_*K6l<(il43^24srWjySxoyp8RtgmSya~dNbqg;_o3g?vem%0A?Izra{ zYZJ&gvd^ZFBiTZZYy^1)l1KmJGJn7P-;X2lV){EL|G%#D1g5{~6US%P9=?E#qb&6d z{*^}}Uy=2Y@YfL89&#^MhP#hE$^*C$8NijNOX35E~k+(iTAw^9LePLVW%q=ia=q>Xxj zq^EX(9Ah7V(}(gCAZcY0Ao0ElkhFrNDO7-L42g$pf7>>a#{Q#okL(i?{qxc?#N5s4Ed&-vdikIWYXxBnJNg0OX)-=&~`WzBzH2Fbhr zKCk=dCH{E|lKyb_kW}^G6aG)P|KGFKfB%*LJKJ}Yy98wqBsKnXAku6X)VP3L;s13& zN4d0#q{@OzsGI*5t8kH8qukhJf$452Z%_g*c>ey8OHYxXbGz^W(q#>d-bOix&ub`e z+>xvLOi9G*!S6CXGYat*lGg`cM3xWz{aJGne&`LXvv~=oL3pEsa&@yz_7cjKE7HNS zSBzrzelhxQ-5>K5!#_uffa%D({}#*%Hv?eWKP~C|Oj_g?Dju@^TVkSua*#nW!i5`l z4Y|e&fB2li;G#9Zn8LMd*G8vge!|!5uS8X?Aw#Q2T!^4SgU6c(C}M(76<)`$jyu_e z**h{Ec|UxpF-xFgC@hCw-+`&MYJeQjH;axR>PKmO$79Bj z^=(ib9IDpbZ}4w#Dxq7>vy~#k)oCYtZ&>e;y0KNftwG!}Blw~uY%8r$!9-D6-NF3i zg?C12ay#4FJ)Q02@>l4#GlZj$qDneZ>C>L27Ddr0@1qj=G$W(L<_6ykO_Vvfk zHhm`5`pK4D8icQAPJJ2wFk1T|YBli=@t!FDm}Rp3c>~068>Z;5L%Xivf(;xycE^@= zs;+)lZ{u6iN6r0N%Y0tkk(_+T6i(beYwU~^gnNS{cUa#~CQjMKmHZf;ZVqE8%Xng) zb0}|-kXJC>XWruNr&HbPmw8c@n<(W>ZE#b1nEGW77DoP>%#Fp|)8`B>5rqWny>E=-nbA>@$5 zOQZS~hc0>Ye#XW0cLJ-ieZQ`l_=w*9G;LJBbkm{CD^?4g<6g;J{gswRQoFnmPQ1{! z2ScyEO&OCA`yD!-ut@8(1s&;|vJ0f3FIlmDb&HP1yqey&e3DBo65sq}e);2s@ov*@ zf0QkjQ4#li_UD&`QM{q0m}F}LR!vz&S=no{+B>fWO(TqDLwW5?Z5~Z?{s^W0@Bzbi zTJW?e*Qh~vtJ<+qM9@{ZU$Iwm)yiT&N69c2_u>*SrSZoQA64k|DOg|73mF>mEhz42AxQaJP(x)mwJ z*oRU0sv<}BK=)%%l1*pS&HRt3Ux`zD9@aQYFc93|IipUALO=B$?@YXU zO}V_ueR(&a)j~z+8z)?C4xh4UDE-O3N6iAXylKRqv<@ul2ZaTDpUZ{SqjAyh%s+AMdfwA^%%H-&20-r`BpB>5Oh?^U$UiPMF`h#d)^g;k^9i z+6vzC$0v;ym%E1i)(0o(3wRS>)2MX2Q@`LwTWHz$-5$V>C6?d7oWqzKMt>YnA@IJ; zV|qjSSw7hg3o2Wv5Y|Q*?_D@2nmJWF-I&*E2A*mVK5ZV<7{gj+*&$E}$T6d|xE|@h z5s{u<4_U`DvDkXB$f?K``*_@*)pzrpoK6Ix$^+%;?BvUWG1=aZ*%1$;UsaeTe;=h; zlgcl{9^Ec&*gJU7Rb`4g8Y4f06|9H3xT;^Zc&E+v$x&Xg_l7_gv8rinM1f&*Q}k>$ z(MC2yMe456@=1MoX3sCu6@49Pn~}_}@%DrUM#aSN#>av=q)|Qt#p1CaLO%89*?vN& z9_P-q(VIDlSvd@ikG@*(rC`JCOM1`kLR`{)sqe9o&zp5K<9WMVuCfo)pp^7}wR5F= zAXZ5Zi8@+G{dGu)*1KBs49;J1go;cSLz>-^cD671!e*Y5BvPVQBOZ7j zm&eNpm!;-d@2Pitb{*4nS4Cqtm9v3mX9UYZF6;NL`kO`0WxNU;^E{F$_w;7o{+S>X z0}7$8c;fjVb!Te$PC*JjCO(?OualG|z5I@xoCVRQEb=Q7ADlc4S$X{2g0PG~^|&C1 zJf-VAZ}OmSjbpVYFNxQoyVN?Rk!B}Jr}_{JL$=alI^a9O)vN<-tepltI$mA(63+@V z`lW~lI6L&%lx#j_UIDk}%xTl-LtfeXs%}5v(qUYBj3*UKU?G+&*)!Z$iGLf_(HGCh zN2fZ`*Q@T{UT3X2#SAkwXZEsk5oCExfx>IC43JQ3_Fmo?B%9f8E4DzT(T6Uy2K*4sRi^jBN^ zM@G{ZUwJuq%*=8IFIV5FS-<{D_EAnHwb7&^=kkv^Q#Qt14I@orm3h^s!3T`0M)e$X z1f~fuMd8Gyc;q(-*0=d^Cdh|oF-N^ky5V;6(#2eSK?1dYCyI=Km@dlD0>9wKTKh(J z$x!LfKir%?)bb0~&zD=hs5doDvJ5iNA#bXGd26CwrG393WAlkc@<+Gjss7fduk5;R z>na5;D^|C6m3ok{iK*BT26}(0Del}bHcRFVxMXNF5x-6RO}j|%Y4#oR#ofX3_>5Tw zrTFdUFy!`q@J>BAT48AXv0}gN&(In}_n9A8_DvpElz+u>9T$Ks&c^H1u(FFwQBj@_ zJwcR{nsKsi+QQzbRsl~OS1c`yMt-KT)?2^JO-1MM#$?TWs6 ztatP;-U+<_9ImLtPZ3kIU@>8yk+}3YrU6anS9_-AOlRFaA^+r+y^^~TnU0sU)}`8& zRV}H*&>xt8A-v~HIk8|)Z+AHiZT%S^t=ARej_Ju|UX^y`dt?2^`vX#oE^j{CG=*nR zESOo&UO&|LyTH1Asp?ZrlOf+T0hZdL&7wf!u3*#27M+xbK|@pFaCw*qcVb_>uJJT*!b?jLTqbj#L2HJ=t@m|7;nhrpSA~! zaFCm5j0BmD#C*18jv^N1>QPBZO+F(bz+k%GhV{<9Ct`X>`_eM5cX>5>&50+s>-_8L zRQ|_qa~E1I*Io=3Sbpb!^$@PakhZC$@|QQ?w_WWwSU3^qwA(mcdSle|(czjXMwQb% z*6Wifx z=&i_;@Hd>%Kk8HY3FnEelgaHHr3CdT?L#^+mCgunC579w-JGNA!Ihs%DHAN~7pPk0 zn{in;(BW3BYbPW2lhR^IkMIvkzCna_-*q{l#%-ms*NKqWFX1FZo8!#ik~}9m{7%%4 ztq-|RDTW&yy-l~eNlL=R-K$*lvT9qY_0w4<;lf+fx^*%8>DyMf93+3JKU=Xn7FRF! zl@YC=zrV8no|kymgghm}hmws`Wj5rJ)E{cQFZ*_tN~` zK)FD|XfQRJB4TB6Hqc>dagZ(dj3>&OB9C+~Y_Ln5c1&x*UXf9rpcPdqQ+GcqyNHHQ zJlrsMZ~c=kN8Io@1%6#Nqg@w!bnR6vny=Ru9?Uxp%P)SpN}rYJD=j12O<&~_Wz3W5 z$?H0AQ=LjWYeHXK(MaK8nU^`B5p*=#M3_h4H5dBCdzIPTt!q8@=M-}h8^!gvot}I( zH-pG&pD5K{lAv6*ld}vf70!y*ePYRD6PzouW|n{jw~OpwCKhS4)_9cU_kUzJQr_-7 zk_@_O~XlZc=1(3mef9&VX@j*;klHI&H5CMhUb z7T6hCR?Lj`OD;rYcvQ96Xkq=vxfyMBllg1*13rs2bI0(B=-!Nj*rv6_PL1WT{X&1u ztA6-SjXG!n`Bw9qXgc-%Q31xX`&ulnt^U^uPRQpr8YK+0lJdASUpb8nx(~9>ZQq&W zXX1-yX|@CAOrAG`+vAP@urq>e8Hgn}@D)OSUI zNDu{(y1y6@3*taLNC1f-348z_K{7}IsUQucgADKqWP&V^4L*Y$kPGqvQkR$y3cy!T z2#P>4C;_FQ43vWkfYdowfof0#zJc$c7SsWFnn!5>ji3o21+Ny+3fe$B=m4Fd3;Y1x zpa=AVKF|*az#td`!(arAf-x`-Ccq^438ug_m;tk34$OlEun3mGGFSntU=6H;4X_Ee zz&6+czrZfo1N#7}D?J29;24~MQ-D-xoCBnKUDq$Zh)KM z7C-~&0I74u0CxZ;zyjFdF2Dguz3@GN2k^mtKmZ5<5qJO|0%AY{NC6oj2NVElC!hk< zfCkV4IzSH?z$3s2m;f_C+7nm-8(;^I0SDj&T!0(!0A9cco&cmeiXR97q#Z&C2m=uy z3XsYXaUcOCffSGiGT<4I1#&Lf-n#cB0waF0?{A_#DX{w4-!BkNCF?gN01CsKq^QB z=^z7q0+}ESWP{Hj2jqf0@CD?90`L_Sf+A21N;32p&2fDUd03~&cv0xW30ye-79s>@*3An&h@b`UI{u<|p z=>k9y2mxUr0z`or5C;-K5=a4QAOoHOSs(}GfdWtjNQe9=zLGz%Sh+Aj{$Gu@oO1C>MR-ZF`yVK}n}*`Z=hc>(BcSFQ_Z zWI!bYSzo7H@Y($k)XX_CvHiScZjKU6-D>d+Pjvn=wK$)ZI`&Yzk9SqI`xLt*Ibuh| zGfes~T8BP&kG6}d+o)=e#|`a^@BCVFYq-wbFs9m< zyWTLF@W5MQMx=ZxJ6GM!dRw!?*7V0_QB7yY{v8GiMprf()Sc^Gv@2e=^CD|+IbGFw zICiYx_cvfy1nfKLTNg^~Jd=yF4(aRM$K9Q93habLtJ18U175wX4Y~EFbMI$b zozBYHmpfRizQ;!A71Z`TT#1e`iPfkU&hyQSjW^^|VAa?waEoJ#ctVSsn=5{oa0|1W z%4qRX*MyP)f2X&>6s~HtfT^6ZgWTBJt&&l^DqlJLgJ7LLZJMPzlRg8vpocDgl(AN! z;iVZKGPKcFMg!|petI7^s$+lM7ypRoI2KFVj=D%G#m<=p%P@Ok827I z7f8j;u83jV3153F9ALetA9}-9iEeD`g9JyXi*)EhNQXZEMdXAW#K$y6W3jUa6`(L< zV8ob|<5APlns-zbY0UqjJm_Hh_~&yxddDHE1(r|7uU-y34r-gk+Sqv?$#l}C!FDLh zEcopCDT(oY{Ez1g_I5?Qg4Vubp4>Ot<07m+5F^#(LIEQy%~zf+b5~Se<{`jPHfb9R zmC*^q5u*$-AO8|afTb!GZW_9c)qEV>vQ>p)f<3d0I}pG7J}7g-fGXR`UFJ<}Ir=w8Vl}?ap^sBKBIb zJeSEFFqh2T=n7bF3-yW0$%vm_lT9wWJk%)BxbDdvS)O{!7wTd4bc*Tpv=vOhnyx15 zHIs6cD-qo8%cdY>Ja3Ze(>9UVaTb$EtSXQ9$rZ&<^V@)?5A2TmRfdOtM?o4^m#ccA zs`VjX;K5W(&&*TiU4yd{nPy$FaMxxG{!h6B6U(7k^o}}PyB|fHehk|6*W9ObbHywF?3im-#XE6eLQrB z{IOuY;^w#||FFZO8~p{Bws_Aa%f{O;KcmLQ2}u!SZWJMvq>k!~pvo0=JV*^fRk!x_ z;fGcT&y9@+=LmC7?(_Y$h}~4lc3cD_TC zY0a^+Yn_!hl}r(-13z1JQhJI={N7e(=`n{PO+GdU6KpVqe$a&#l`%+}iWf z*n!t8XkvZ4DqiS**yiRsG@|baQ#)8Ak#O!+P58BwDrX3lrFSqI^n$AS2p-gIJ4ZFK zD2iofHoRowC7frnW8mZw!pIX2rIN9XqFnn?IX{a$5TR@eG4e4|*%4Ph4^UOy6kSZl z#jm967m(63`8@ukpL`4@3i~x$2~^F|qt3j1r1&VpdQBRsjOF|UwXE%nI2+l9&d>;> zTOen6=#VB8r`2&jLt#C?Sw_s;O5P`-q)0gRzC59Wx5AsisR8XdX|n$|$AKWDcF<&b z1v$rY| zRx`t&8`T=+hEPOQt<_DwR*7F+j-YDczPM#iaVIb_u8lN9E|UN~=8-bG@6_?;3L%?y zS^NBp{atQtmOEW+4{lDypI< z!tgBDDoQ+)i2O6A4*8)qJ?F+N47%h@U)u&L+fRP<=A0kc93_1c!qeB)jOkh33UrF~ z~)^@8qM+h&jVq~P8sU3rrA`@)_HJ=3~woot-^xszjokb(V*--haS z>ra!m))Ebq*cra@Uzyj~f}(urKBs$*qY00jmO_19#(N@tS7)mjE+ii^V6zpP7@U(1 zo87{wLgl()f0Fv?Loi+&HPsH9^L5PoR$o|0?ml1t>N(8YZF}rpE=)s1>%K!&_T#f9 zeciy*nLzJUp=nlK&dh-EHnt_Qw)GFtNKxCvxS%8Bu*cSt;I+Auh>|31oU?396D3q% zYUGSm*%;0r+Wd}XoVX2#eJ0G^LF2xg)695GEs>~6zgkRGzPQL@;_OdFZs@0L1Qg+y zkF;7J%HpCHOg8zAl%yusigjPJPl*aD@U6p^YQHXYYa4?Xm%=9c@T@H5tG&9mi)unI z%>=d~mu==AwjsUH=L(aXvga5?Wom0)!5L*Lob{nAYWS@tc+}(7l!L=RCn9RM7oJ~e zBo;aq;S?RvzmvWmYOtAU_x25bCaKI##_*C$M7t_X9rL%->#U3R#OE=XmC<*VL{5v? z4Bzy*n=s*3WXKK)sfm!cFp?0+wi)hiU2cNf;ozstE?2e6_>5<^(l)l9L1RPP@RbY0`E4UKMJ001d~LneODVO#u8nOmyD=kWW0Y^28=W}ciYB5G$98+-qKcA^lq^_Q z=z6SOrm{hpU%QLS<|OJlJ@JH1A7l@`lu6Dp54&FfqDLX zHR)CN*E-V9%UTC(PW>jzNe_KYsu-3E{p^n@9G!O7F(VQj|-C&WiJDMDqKA&yT(Y8jhbhT4sEeEsCe!_v2fzECdvby_=> zn@IXZLbXbD;n1x=$DugQaK9d@!ulN^jNT4Iq6G) z+?jl)7Wb8>aHs=CXWx@T5~?#xhPbC1%+Z|9p&hl@QQIaTc?^fJDa4e=NX1M1M1QIQ#8pw{k$WPuCIzUWZG&){ZfcM1(!hK?VSBO-n8 zyj^wR*`Q%w^7wJrSE5&fv6^CNZ+`6$j+4&Dj4qvD#@wc?R>hiReNn>PqKp(g91Fd< zmlw;{Ls@fWuUCJBwRgAfn~SVsBL}cfzTdu3JCTGIjf$4GS^F9;YZ21^hS+G#1UrF= z8LrIacFo(L87W*ukSsWpJ`o!4@V?GGl3%eZF4Z|H=ueUq`423olUq( zA}x%wJtMwTcIqkYbB&8}(eFb!7^0dd*z{xyHU%XlYIy$EC4N^v)ZFuae|mq=S4>^B&PeOnEAL-F6_OseLEj9CUKMltsp9jQ@XUSi6%$9)qaG|^TVvKW{ zSCJDMthsY9%&&&)X~W&6Ad7&ZtD{oX&{Uj_a~nFXNG}Px`B)JoNXZvBs&#bw#+RkD ztAuT0L!S|oqc?>lA%+$^a%*j82X!`r<6TRizSz8SLme-Et<5u9C%apO^aC-t6PAJH z^6^c;%B}LOXey?4=f_(ksjbwbHgIEYz&c;@Bh(}x zQ0DllMD2{}h0%4rAB3(8kcS7h5b^~a)A^Zy`4JY?_=W#F);p=GK~7>pj1Cma^N(sS zGYXcBG_f$jT>d{$2S4(O^Fhn1>!n< zoU3+BI5C*sgAKl^>Rnk*MUr!yN`!PTO1_G0-BIlmBZv6~S0SqX2uR7a0!b|_PzOHC z3x9w|@c?|^`V~5vGoPVHy6(z^ZSo@P2Q~eZH_E%|?E=uSRJG8#NR`oF9O4Z=8K*2> z4!k`2dW&{OIlzf~G3{Cly-rNRV1Y$@K!eTlIBvwOoNvmK3h?#W1nO=pVPYZ=Zq+qSN+|amaPL-K& zxx@UjQbpQ=WTo>9SJwIAQBGf<(vw)^vY_g#C?VPow|(YbGWbTqt`=&xe)k0o!7(op zEAKUx5txX=Jm%k4QGv_uJ#j2!_e7B$jqj*vm<@~Gk^$oS_!n=D|ND2SSjcrdi6N*~Oilglh_&B=6 zIs)AMaYelig>u|?P!D6pC<4QvC6oGP32U*$@uBHW(UT0~Kxcj9%9qLo1a#`(;b2+m z0umQJNlS5qo#itsYI;IUa*eK=@2fzMBz;CpqsMjf^Wudkm!`0dBrDtJ9~L;N^_orb zt2riZQdERs4|;oqq=YY}dKop;9N<2KzGpZ$2cviNpT0Wd>TGgZ5!>^jeUeTE&HZ-1 z=ibw8Tk!bf%!7GrLd){u!=N;2U5?#E zxLU59+Ccx9<=Z^EH09d)W9q$ctJ$U9p8aC*rfaL$zjC9du_4vK`>gSh9aG8fEeW6Q z*~gk?3cgp|t<{#%d#gi*{1z*B5_VS)D&AFlSf-Ui=E}do^)mAeY4t&Q{-Rw*G7HHP z@X&r9xf=bn4y^4byUtZc_Wn$i@^VhaK#Pd0*u;4`#d94rF{=bp_Qv7Fi^nUI8a#c9 zDylE?^JRvi6xeDT9K<*!XLMh(uEB@6_u;DDo~cUIG+t*){V3nr`X$*^RSYg`2R1ZS z(UP$Ht~n&r#%7E!Q?o_4Q+tL|U z!<9T$&bwl4+w{vDTNoT3H4O^a)(BrW*BvzX$95KnTB!HyU}w_6Q(ls!ByXCRnH%;X zo1#`kxgpX8E3;Ir=WHyXp|5>6%(oeKo5n@J87f>}6}1eA;@RAAl)8L;sEB#IFr(q~ zy?;b8+LVlxz*beBf+5s)f2KexVg0NX#mzG8Jx70YXB!GWX4K^oenMhCUHQhBpA}== z#CtHl)3;1=c-amd4`Pg;e>+t;*c2E`k#$37HqBK}z-7@;qxQPT`p%?X^ecv_7Qcph63Vck zV}+N!qx${Xjjen3jtd_v6&yoN-PS5oUu&O+@U}@~O8EwP${c_S>IlsK#vWwm3bLbV)tlXR6(r=qrL#ATy&ej`y&%g!aMAu z?HMlB{x{ROJ`-q7T5n%d`&-|Y9H~PZBFB`mO`-dhCHSr<2wo+~&ofO&V%dPwu4$-ui9riAwq3<{jJ^EB4_`~cuhzkTXN%msX?MX5$@b{xq zZ+pnK9J=Qzp4XK)c~y`63ZGt^=Q+NSXkF8H^4)*(wHJ+41o6%p(S5DM@w_Bzo-t!> znf-b0*VgCmlaII6mR2SoO`x5A<}p3gI(4HwsUxCYIoMI-+)Sx)jE|g%6A(19XLqqs zMZ+*V>^dKR|NE7IC&eAgl73Y)tqpj0nh5mZ0*_jHmJ#EVBw6Kg-SM=D-q2dyQ!@_= zbvfzR57#Ek{PxS@T3$vBvgXlaaB;`7_NB?|XKDw3L3w2PwIS^`nV9fmO&S}A3+Jdd z-Up22hp{0Eo6UlCQ+STUd<}ee7K87ag`AkhN;E0CKf;qBRP~Y4BBj>)VtH@7p#DOf zcDLeQVDlBBPK{)*y1kS97sR1+V@r<)e_es+HeW4fYbyR!E-c2Aa*8K{1lW-hc(PX* z=b1!D+_lm&Daq%L8=(J9_13O}uG|){y|rbp@2!af34R_c;%Vc#RXM{ep4{&rCB)d! zMi852bS`0|OBADUcYmmeG?pV0Gjt8iFDK2EGZmfaS2;O88*tgbas06hTSveFK+e1SN*vYBExtY$;sMK!_N{n#bX6~ zxT(zLv&|J2Gv4Pr$X(YRQ`6n&7o6GNURZUU8y;25phJ3MHMR%DDJj?xi}j=>RV96= z;e7SMr<`LA^Q8Qp-`g;W8;OU-rvUzR=CJrc(lL_$aahn8=#-tyJmTJ_a`3PQzMO4)H@+%=?%1c z7{*f>;Abv{KAb ze%!1Ea!q}N^j~_uaDKQ?xK(lAF3;J}X!o!Vis9>B&wiK`R5Wi81pRo7?oA|rQ ztri492-6@LEyZQp!(S%x2#eJ!~W%r9QFv#LEB5dRv!*^3lDcy{(zJVq( zVq$7bmS}3+5}^`PCFpKek>No}N3;Ss|X{BrgCV`+~a zupMH!kL}N_4$4NN)@e=$d?}R3+<1@#pf}Flkh;BUrj=#OA){zp#Dn)M)-GOjJDU;d z{h#i^ry>#k^ERd(SDR^Xt4HRi$^Gha+1kk^I=aWZ+uYKPO-;{`+Dmw41e>-CTfE{j3egDhuuMT~CyCUGQ-V}#15%mH=V2!A3+|;{3N4D9`yoa% zAd-<2@qP|Ef&|{3cDHdk_{?_(FJL^p& zdcKXV1o9xx52m?Gtlr!cmm=P)bT1(l4ADdRZ*wnddh#GeP4&YFJ9XXTy;;^yRj=*4 zU1SuaXS3J|JtNxpexTa51#;%-z9A^V{bX%?w`cywb4$;0vcS4_D&nG>yPD6|h`Y>2)ipDF$#gXF2E> zUF09eG8co6#l^aDlg5NUgHuj&!d-4aTIsWY99rA@SR>LZCF;P%KAZnu^anG0VYeJ$gO?sg;Cwq~dp4o*y@n+cvIal!UAiD*g}&hwDxe`i+;X z#fdU_ODno_i}6qm-+W&dDDB!>T=|Ya`Av$ii81sGC+RqwYEQd{U15XXXEQ?5;$S)j?? zGs=#v$d8V_Du0dAM9}#CtsIRf!30jPlRbpX+(Q#;85{zv-#SzzIJ?G{{Mfut`EHyl zVEjhS0LH_xaiI~R@7wH;60Mj$3;j%@pmvSAG&)Ma@>8n340XAA&8y2k@VZwoSGLcm zZX}l}sVXN{nfZuv$+dSqyVswH=}xem{gT=V$GZ*nbM}J* zCr?Hn-xOL{d6)D1SVMig+ds+=K9KRHRe&nEa%fu8BHp&Vz-zSR zQglhNtH(Hq7+qRLxI#iy_!VTX(X9@YH%U{(2X3^9mtn7N^r2zJnmD>+?I?EYGBY`6 zA96G<;}HgoG#p-H3A?3eA})xvn?y|Py87{91D0z0$3tg!iA?$dtd3PxT)>vTmKDil3ogn8Oo& zOtc0C*_ymWQPGbC^J)=M!fY{R>HGCwM+KbdMqO68_ym%;N=m)0Pvx=us|qw!AIxLn-*GX=Yvx8x}9?6r)SMUE3SLrrZ#Gxs|gF*9M2qFCGxlY zpr37}kaB{W^un%O>uf70dE+)l_u7{7c>%pC*NL`<%q+dScnQVi>b=taC5vA7` zti8fRN4>jMt)}_;gRTqP$*YHx9loFBJr^q|u zdxXPJ?>dZ;n)D;DDh^M;Yk$@AI?9iNC|lXrInoz)AMtRzq`Ko(+FcBpf>-LywKEGX z;4y~bFa)QCAtjnwaMd$MJ3MrnTayK zK9M=r&NJsn>Apb^G=I5PX%z6V@|k-ce$$Sbd^ts|-6qLUX?4&~;wFDOgFbXQ*YW7v zKANxfj+AT7bXN^S_3-*Vo%Rxnx{ovz8%f*>krkh3v-`7a)Q^+Sl7syc$ItVR2L{hR z(nk4MCF-D^%J15r=l9tiBPZ6p@* zhI~vP6p(H-M&-Z^d~& zZA>>9wpqakeM3gvmHMzoJtPB8^!}OFs_mODalkFOzx1p_o*F0zJu42eWcaV?} zTd^bzJ&ONODyGrz8t{U3hA} z`%L-8-2H;I)Vj~V7W2Y~*d8v`)yMyE%oi4O71PWiRm_%GseV_M-lA_po1Kc8aC!T| zXX6PT#huTJV(*0gei-JMsI5eYW6G#!G_XZAD{w-uk)?i%`4#q-IQCuh_u?KAa!EmQ zu8s2x`{bCWWD=U5X##|HVmXNl(4_Q>Za#!l1?U0|1esA zPG6#oS#exC^Fs}Jn+l4NX(eT(SH(CPdCOiW4N73FsIyq2;G91D~CXR5#Ma&&K^L!wtu>ipQb4iJEE-5?`PjmvP~N zP1nngCH;POr^tJ2lMel73F<^$6Om+cOVWbP=n`17+_tX|sJ4>4dT>ULv`SCAn`+J^ z6Jye-=NeUC90qReE~m9cVsy);v>gX^Id5*|DSvKN6_(C_rnuhAchZzG%%^N&vB{&l z+nupLUW2NO^yWvoJDG5}IqyF=xg3y1R5Nhg6UK0M65Gi)m;ASOb&B&Zy?hQ(Eqdv0&%VjM%{`KArIe~tC;hIu!us2`QkOumxF&OoERyGNsQoVQyY zK3!gU>Zj!{AN9KTI?dT0`f$-te7Br^GV`j^^Ivuynljud)gSI8ChioTcw8L{tC)Ai zon$@O;i+pA;vW;sn24?w5e@gKG>3?v5#1+c_*niSs*QLXb@-z3=VZl^1wf>2+9O%pk3kNhgFYQa!IkL^Nd!sN;PSM{Wmqm&>EjP9uF zUul)L**F!le{KoI2)b@m{}{TNNhT5bS@ra1)xK+@SApx%l0~lO`A_&K8_ki(lMZz9 z=pyNR?9Grnn&jGwHhesGIn`%z!f8YG>(Nu+`6l$!CZ8HsPQY(OCAZE9PgsBoV&+6zOIt(mYH+^In_DjU;6(ZHM@+N*}6@~ zL6>t;&jYVsDGy2t#MH!H+)q-k_j(#jpTuit^L%w%hy5bT&yu0J-ljk_ZIx9eWEZhAhr{BI^f9o^*)<^pqkKV5tm7*t^&FYv*v!5rQKNwN?;yAy$uo+dt$zp9D9Z*0P zbwuOqvsnAYO)U>++9i`V<_1hnq$YYzibP4D0WsiR3oeOO` zM9%BScizfyG;Qzjd<$jVMc&v&f08ZN?z5xBLHs*g-`;dG7Jq{XNiTA-2|QHD!_IUq zw8>7y*NUe@qT|C{VuSe;HR7|B1;fI`=E;Knw%$`iqM^Odwr214wQ(Qw31pXi&2upQ zO2u^4$uaUPdeij0nYAT*&~!q2K|ko464vT?Nq=xRXS=NP_Q5Zr=01lNJU;2NC4-QC?` z7-VLf=l#BS&;GN!=j>U|!Mc0;cHdjK>Q}#8Rrmbz^zTPhC!O}NJe)jTLo|OzcRNtJ z46@W>#)3_3u}6+D$^G8UvA(&DM>BhTZnwT}CJT387CK^77Upm<4vFtRBB`Wb#=hT$ zWBDFd_gD7N(fMvIOefU-W*JoW^6*L_L&$y_N=tBbKDgfT+{gE%TN4vRj2wyNjTv1p z*u!V{V|>e(S^}huqh2JW;vEmx0Foo!V`m|js8)428<7}^sW{w6Cc5l>(R5u7yo z;jjq)Q6r%@qWR}#J-n%uIrlvwV#~nTl9L*!|ItJ=ROe0c^gIv3w4Mh(#Ovl1mYp7o zKHOz$e(8ePCMqR9kIEp&upSY-FYgx1_o8xDSJ9srXs^hv{?W)g=)+S7ZyZcT{}dc`FAi?kIsAy>t4xI$GZoFZij}Y{MS| z-1f&@(!|pn7?Cc%b%+(RoS`3|)+(|xzTmt3Z!CcJ@*PX+Zt2wVTc6u~A9o1-%c-qfvc?u+f~xqt2LPoIN+h&u6H)zgnI^W? zr2J~=VVWmlxvI#^-gKBtjS;T)AhaXR#LgWQU3I(MdJZ(fbbW zC0pel)W2*+JiL|JF>MVYxvg+rj|_<5`Ox|48?f{ZFqqkk-mM<1XLJJleD8-aU6r;g zBjUoYqq