단순화 된 중국어 | 영어
이 프로젝트는 VITS를 사용하는 Pytorch를 기반으로 한 음성 합성 프로젝트입니다. VITS (엔드 투 엔드 텍스트 음성 연설에 대한 적대적 학습에 대한 변동 추론)는 음성 합성 방법입니다. 이 엔드 투 엔드 모델은 사용하기가 매우 간단하며 텍스트 정렬과 같은 너무 복잡한 프로세스가 필요하지 않습니다. 한 번의 클릭으로 직접 교육을 받고 생성되어 학습 임계 값이 크게 줄어 듭니다.
모든 사람은 코드를 스캔하여 지식 행성 또는 QQ 그룹에 들어가서 논의 할 수 있습니다. Knowledge Planet은 프로젝트 모델 파일 및 블로거의 기타 관련 프로젝트 모델 파일 및 기타 리소스를 제공합니다.
| 데이터 세트 | 언어 (방언) | 스피커 수 | 스피커 이름 | 주소를 다운로드하십시오 |
|---|---|---|---|---|
| bznsyp | 만다린 오렌지 | 1 | 표준 여성 목소리 | 다운로드하려면 클릭하십시오 |
| 광동어 데이터 세트 | 광동어 | 10 | 남성 음성 1 여자 1 ··· | 다운로드하려면 클릭하십시오 |
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidiaPIP를 사용하여 설치하고 명령은 다음과 같습니다.
python -m pip install mvits -U -i https://pypi.tuna.tsinghua.edu.cn/simple최신 코드를 사용할 수있는 소스 코드를 설치하는 것이 좋습니다 .
git clone https://github.com/yeyupiaoling/VITS-Pytorch.git
cd VITS-Pytorch/
pip install . 이 프로젝트는 BZNSYP 및 Aishell3 데이터 목록의 직접 생성을 지원합니다. BZNSYP를 예로 들어, BZNSYP를 dataset 디렉토리 및 압축 압력으로 다운로드하십시오. 그런 다음 create_list.py 프로그램을 실행하고 다음 형식으로 데이터 테이블을 생성하면 형식은 <音频路径>|<说话人名称>|<标注数据> 입니다. 라벨링 데이터에는 라벨링 언어가 필요합니다. 예를 들어, 만다린에서는 텍스트를 [ZH] 로 래핑해야합니다. 다른 언어는 일본어를 지원합니다 : [JA] , 영어 : [en], 한국어 : [ko]. 이 형식으로 사용자 정의 데이터 세트를 생성 할 수 있습니다.
이 프로젝트는 두 가지 텍스트 처리 방법, 다른 텍스트 처리 방법을 제공하며 cjke_cleaners2 및 chinese_dialect_cleaners 와 같은 다른 언어를 지원합니다. 이 구성은 dataset_conf.text_cleaner 에서 수정됩니다. cjke_cleaners2 는 언어 {"普通话": "[ZH]", "日本語": "[JA]", "English": "[EN]", "한국어": "[KO]"} , chinese_dialect_cleaners 언어를지지합니다 {"普通话": "[ZH]", "日本語": "[JA]", "English": "[EN]", "粤语": "[GD]", "上海话": "[SH]", "苏州话": "[SZ]", "无锡话": "[WX]", "常州话": "[CZ]", "杭州话": "[HZ]", ·····} , 더 많은 언어를 볼 수 있습니다.
dataset/BZNSYP/Wave/000001.wav|标准女声|[ZH]卡尔普陪外孙玩滑梯。[ZH]
dataset/BZNSYP/Wave/000002.wav|标准女声|[ZH]假语村言别再拥抱我。[ZH]
dataset/BZNSYP/Wave/000003.wav|标准女声|[ZH]宝马配挂跛骡鞍,貂蝉怨枕董翁榻。[ZH]
데이터 목록이 있으면 음소 데이터 목록을 생성해야합니다. phoneme 데이터 목록을 생성하려면 preprocess_data.py --train_data_list=dataset/bznsyp.txt 실행합니다. 이 시점에서 데이터는 모두 준비되었습니다.
dataset/BZNSYP/Wave/000001.wav|0|kʰa↓↑əɹ`↓↑pʰu↓↑ pʰeɪ↑ waɪ↓swən→ wan↑ xwa↑tʰi→.
dataset/BZNSYP/Wave/000002.wav|0|tʃ⁼ja↓↑ɥ↓↑ tsʰwən→jɛn↑p⁼iɛ↑ ts⁼aɪ↓ jʊŋ→p⁼ɑʊ↓ wo↓↑.
dataset/BZNSYP/Wave/000003.wav|0|p⁼ɑʊ↓↑ma↓↑ pʰeɪ↓k⁼wa↓ p⁼wo↓↑ lwo↑an→, t⁼iɑʊ→ts`ʰan↑ ɥæn↓ ts`⁼ən↓↑ t⁼ʊŋ↓↑ʊŋ→ tʰa↓.
이제 모델 훈련을 시작할 수 있습니다. 구성 파일의 매개 변수는 일반적으로 수정 될 필요가 없습니다. 스피커 수와 스피커 이름은 preprocess_data.py 에 의해 수정됩니다. 수정해야 할 유일한 것은 train.batch_size 입니다. 비디오 메모리가 충분하지 않으면이 매개 변수를 줄일 수 있습니다.
# 单卡训练
CUDA_VISIBLE_DEVICES=0 python train.py
# 多卡训练
CUDA_VISIBLE_DEVICES=0,1 torchrun --standalone --nnodes=1 --nproc_per_node=2 train.py교육 출력 로그 :
[2023-08-28 21:04:42.274452 INFO ] utils:print_arguments:123 - ----------- 额外配置参数 -----------
[2023-08-28 21:04:42.274540 INFO ] utils:print_arguments:125 - config: configs/config.yml
[2023-08-28 21:04:42.274580 INFO ] utils:print_arguments:125 - epochs: 10000
[2023-08-28 21:04:42.274658 INFO ] utils:print_arguments:125 - model_dir: models
[2023-08-28 21:04:42.274702 INFO ] utils:print_arguments:125 - pretrained_model: None
[2023-08-28 21:04:42.274746 INFO ] utils:print_arguments:125 - resume_model: None
[2023-08-28 21:04:42.274788 INFO ] utils:print_arguments:126 - ------------------------------------------------
[2023-08-28 21:04:42.727728 INFO ] utils:print_arguments:128 - ----------- 配置文件参数 -----------
[2023-08-28 21:04:42.727836 INFO ] utils:print_arguments:131 - dataset_conf:
[2023-08-28 21:04:42.727909 INFO ] utils:print_arguments:138 - add_blank: True
[2023-08-28 21:04:42.727975 INFO ] utils:print_arguments:138 - batch_size: 16
[2023-08-28 21:04:42.728037 INFO ] utils:print_arguments:138 - cleaned_text: True
[2023-08-28 21:04:42.728097 INFO ] utils:print_arguments:138 - eval_sum: 2
[2023-08-28 21:04:42.728157 INFO ] utils:print_arguments:138 - filter_length: 1024
[2023-08-28 21:04:42.728204 INFO ] utils:print_arguments:138 - hop_length: 256
[2023-08-28 21:04:42.728235 INFO ] utils:print_arguments:138 - max_wav_value: 32768.0
[2023-08-28 21:04:42.728266 INFO ] utils:print_arguments:138 - mel_fmax: None
[2023-08-28 21:04:42.728298 INFO ] utils:print_arguments:138 - mel_fmin: 0.0
[2023-08-28 21:04:42.728328 INFO ] utils:print_arguments:138 - n_mel_channels: 80
[2023-08-28 21:04:42.728359 INFO ] utils:print_arguments:138 - num_workers: 4
[2023-08-28 21:04:42.728388 INFO ] utils:print_arguments:138 - sampling_rate: 22050
[2023-08-28 21:04:42.728418 INFO ] utils:print_arguments:138 - speakers_file: dataset/speakers.json
[2023-08-28 21:04:42.728448 INFO ] utils:print_arguments:138 - text_cleaner: cjke_cleaners2
[2023-08-28 21:04:42.728483 INFO ] utils:print_arguments:138 - training_file: dataset/train.txt
[2023-08-28 21:04:42.728539 INFO ] utils:print_arguments:138 - validation_file: dataset/val.txt
[2023-08-28 21:04:42.728585 INFO ] utils:print_arguments:138 - win_length: 1024
[2023-08-28 21:04:42.728615 INFO ] utils:print_arguments:131 - model:
[2023-08-28 21:04:42.728648 INFO ] utils:print_arguments:138 - filter_channels: 768
[2023-08-28 21:04:42.728685 INFO ] utils:print_arguments:138 - gin_channels: 256
[2023-08-28 21:04:42.728717 INFO ] utils:print_arguments:138 - hidden_channels: 192
[2023-08-28 21:04:42.728747 INFO ] utils:print_arguments:138 - inter_channels: 192
[2023-08-28 21:04:42.728777 INFO ] utils:print_arguments:138 - kernel_size: 3
[2023-08-28 21:04:42.728808 INFO ] utils:print_arguments:138 - n_heads: 2
[2023-08-28 21:04:42.728839 INFO ] utils:print_arguments:138 - n_layers: 6
[2023-08-28 21:04:42.728870 INFO ] utils:print_arguments:138 - n_layers_q: 3
[2023-08-28 21:04:42.728902 INFO ] utils:print_arguments:138 - p_dropout: 0.1
[2023-08-28 21:04:42.728933 INFO ] utils:print_arguments:138 - resblock: 1
[2023-08-28 21:04:42.728965 INFO ] utils:print_arguments:138 - resblock_dilation_sizes: [[1, 3, 5], [1, 3, 5], [1, 3, 5]]
[2023-08-28 21:04:42.728997 INFO ] utils:print_arguments:138 - resblock_kernel_sizes: [3, 7, 11]
[2023-08-28 21:04:42.729027 INFO ] utils:print_arguments:138 - upsample_initial_channel: 512
[2023-08-28 21:04:42.729058 INFO ] utils:print_arguments:138 - upsample_kernel_sizes: [16, 16, 4, 4]
[2023-08-28 21:04:42.729089 INFO ] utils:print_arguments:138 - upsample_rates: [8, 8, 2, 2]
[2023-08-28 21:04:42.729119 INFO ] utils:print_arguments:138 - use_spectral_norm: False
[2023-08-28 21:04:42.729150 INFO ] utils:print_arguments:131 - optimizer_conf:
[2023-08-28 21:04:42.729184 INFO ] utils:print_arguments:138 - betas: [0.8, 0.99]
[2023-08-28 21:04:42.729217 INFO ] utils:print_arguments:138 - eps: 1e-09
[2023-08-28 21:04:42.729249 INFO ] utils:print_arguments:138 - learning_rate: 0.0002
[2023-08-28 21:04:42.729280 INFO ] utils:print_arguments:138 - optimizer: AdamW
[2023-08-28 21:04:42.729311 INFO ] utils:print_arguments:138 - scheduler: ExponentialLR
[2023-08-28 21:04:42.729341 INFO ] utils:print_arguments:134 - scheduler_args:
[2023-08-28 21:04:42.729373 INFO ] utils:print_arguments:136 - gamma: 0.999875
[2023-08-28 21:04:42.729404 INFO ] utils:print_arguments:131 - train_conf:
[2023-08-28 21:04:42.729437 INFO ] utils:print_arguments:138 - c_kl: 1.0
[2023-08-28 21:04:42.729467 INFO ] utils:print_arguments:138 - c_mel: 45
[2023-08-28 21:04:42.729498 INFO ] utils:print_arguments:138 - enable_amp: True
[2023-08-28 21:04:42.729530 INFO ] utils:print_arguments:138 - log_interval: 200
[2023-08-28 21:04:42.729561 INFO ] utils:print_arguments:138 - seed: 1234
[2023-08-28 21:04:42.729592 INFO ] utils:print_arguments:138 - segment_size: 8192
[2023-08-28 21:04:42.729622 INFO ] utils:print_arguments:141 - ------------------------------------------------
[2023-08-28 21:04:42.729971 INFO ] trainer:__init__:53 - [cjke_cleaners2]支持语言:['日本語', '普通话', 'English', '한국어', "Mix": ""]
[2023-08-28 21:04:42.795955 INFO ] trainer:__setup_dataloader:119 - 训练数据:9984
epoch [1/10000]: 100%|██████████| 619/619 [05:30<00:00, 1.88it/s]]
[2023-08-25 16:44:25.205557 INFO ] trainer:train:168 - ======================================================================
epoch [2/10000]: 100%|██████████| 619/619 [05:20<00:00, 1.93it/s]s]
[2023-08-25 16:49:54.372718 INFO ] trainer:train:168 - ======================================================================
epoch [3/10000]: 100%|██████████| 619/619 [05:19<00:00, 1.94it/s]
[2023-08-25 16:55:21.277194 INFO ] trainer:train:168 - ======================================================================
epoch [4/10000]: 100%|██████████| 619/619 [05:18<00:00, 1.94it/s]
교육 로그는 VisualDL을 사용하여 저장됩니다. 이 도구를 사용하여 손실 변경 및 합성 효과를 실시간으로 볼 수 있습니다. 프로젝트의 루트 디렉토리에서 visualdl --logdir=log/ --host=0.0.0.0 실행하고 http://<IP地址>:8040 방문하여 페이지를 엽니 다. 효과는 다음과 같습니다.

특정 수준으로 훈련 한 후 발음 모델을 사용하기 시작할 수 있습니다. 명령은 다음과 같습니다. 세 가지 주요 매개 변수가 있습니다. 즉 --text 합성 해야하는 텍스트를 지정합니다. --language 복합 텍스트의 언어를 지정합니다. 언어가 Mix 로 지정되면 혼합 모드입니다. 사용자는 언어 태그로 소득 텍스트를 수동으로 래핑해야합니다. 마지막으로 스피커 --spk 의 매개 변수를 지정하십시오. 가서 빨리 시도하십시오.
python infer.py --text= "你好,我是智能语音助手。 " --language=普通话 --spk=标准女声저자를 지원하기 위해 1 달러를 보상하십시오