Docker 또는 Conda 로 환경을 구축 할 수 있습니다.
Docker가 설치되지 않은 경우 링크를 따라 Ubuntu, Mac 또는 Windows에 대한 설치 지침을 찾으십시오.
도커 이미지 빌드 :
docker build -t emospeech .
도커 이미지 실행 :
bash run_docker.sh
Conda가 설치되어 있지 않은 경우 여기에서 OS의 설치 지침을 찾으십시오.
conda create -n etts python=3.10
conda activate etts
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
pip install -r requirements.txt
컴퓨터에 다른 버전의 CUDA가있는 경우 여기에서 Pytorch 설치에 해당 링크를 찾을 수 있습니다.
ESD 데이터 세트에서 10 명의 영어 사용자의 데이터를 사용했습니다. mfa를 사용하여 생성 된 .TextGrid 파일과 함께 모든 .wav , .txt 파일을 다운로드하려면 :
bash download_data.sh
모델을 훈련시키기 위해서는 기간, 에너지, 피치 및 EGEMAP 기능이 필요합니다. src 디렉토리 실행 :
python -m src.preprocess.preprocess
이것이 데이터 폴더의 모습입니다.
.
├── data
│ ├── ssw_esd
│ ├── test_ids.txt
│ ├── val_ids.txt
└── └── preprocessed
├── duration
├── egemap
├── energy
├── mel
├── phones.json
├── pitch
├── stats.json
├── test.txt
├── train.txt
├── trimmed_wav
└── val.txt
config/config.py 에서 인수를 구성하십시오.python -m src.scripts.train 실행하십시오.ESD 데이터 세트의 서브 세트 테스트에서 테스트가 구현됩니다. 오디오를 합성하고 신경 MOS (nisqa tts)를 계산하기 위해 :
Inference 섹션에서 config/config.py 에서 인수를 구성하십시오.python -m src.scripts.test 실행하십시오. test.log 에서 독창적, 재구성 및 생성 오디오에 대한 NISQA TTS를 찾을 수 있습니다.
Emospeech는 음소 시퀀스에 대해 교육을받습니다. 지원되는 전화는 data/preprocessed/phones.json 에서 찾을 수 있습니다. 이 repositroy는 학업 연구를 위해 만들어졌으며 자동 그래프-프로 em 전환을 지원하지 않습니다. 그러나 감정 조건으로 임의의 문장을 종합하려면 다음을 수행 할 수 있습니다.
MFA를 사용한 그래프에서 음소 시퀀스를 생성합니다.
1.1 설치 안내서를 따르십시오
1.2 영어 G2P 모델 다운로드 : mfa model download g2p english_us_arpa
1.3 Graphemes.txt에서 phoneme.txt를 생성합니다. txt : mfa g2p graphemes.txt english_us_arpa phoneme.txt
python -m src.scripts.inference , 인수 지정 : 실행 :
| аrgument | 의미 | 가능한 값 | 기본값 |
|---|---|---|---|
-sq | 합성에 대한 음소 서열 | data/phones.json 을 찾으십시오. | 설정되지 않고 필요한 인수. |
-emo | 원하는 목소리 감정의 ID | 0 : 중립, 1 : 화난, 2 : 행복, 3 : 슬픈, 4 : 놀라움. | 1 |
-sp | 스피커 음성의 ID | 1에서 10까지, 원래 ESD 표기법에서 0011 ... 0020에 해당합니다. | 5 |
-p | 합성 된 오디오를 저장하는 경로 | .wav 확장 기능이 있습니다. | Generation_From_phoneme_Sequence.wav |
예를 들어
python -m src.scripts.inference --sq "S P IY2 K ER1 F AY1 V T AO1 K IH0 NG W IH0 TH AE1 NG G R IY0 IH0 M OW0 SH AH0 N"
결과 파일이 합성되지 않은 경우 OOV 전화에 대한 inference.log 확인하십시오.