[CosyVoice Paper][CosyVoice Studio][CosyVoice 코드]
SenseVoice
의 경우 SenseVoice 저장소 및 SenseVoice 공간을 방문하세요.
2024/07
2024/08
2024/09
미정
복제 및 설치
git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git
# If you failed to clone submodule due to network failures, please run following command until success
cd CosyVoice
git submodule update --init --recursive
conda create -n cosyvoice python=3.8
conda activate cosyvoice
# pynini is required by WeTextProcessing, use conda to install it as it can be executed on all platform.
conda install -y -c conda-forge pynini==2.1.5
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
# If you encounter sox compatibility issues
# ubuntu
sudo apt-get install sox libsox-dev
# centos
sudo yum install sox sox-devel
모델 다운로드
사전 훈련된 CosyVoice-300M
CosyVoice-300M-SFT
CosyVoice-300M-Instruct
모델과 CosyVoice-ttsfrd
리소스를 다운로드하는 것이 좋습니다.
이 분야의 전문가이고 CosyVoice 모델을 처음부터 훈련하는 데에만 관심이 있다면 이 단계를 건너뛸 수 있습니다.
# SDK模型下载
from modelscope import snapshot_download
snapshot_download ( 'iic/CosyVoice-300M' , local_dir = 'pretrained_models/CosyVoice-300M' )
snapshot_download ( 'iic/CosyVoice-300M-25Hz' , local_dir = 'pretrained_models/CosyVoice-300M-25Hz' )
snapshot_download ( 'iic/CosyVoice-300M-SFT' , local_dir = 'pretrained_models/CosyVoice-300M-SFT' )
snapshot_download ( 'iic/CosyVoice-300M-Instruct' , local_dir = 'pretrained_models/CosyVoice-300M-Instruct' )
snapshot_download ( 'iic/CosyVoice-ttsfrd' , local_dir = 'pretrained_models/CosyVoice-ttsfrd' )
# git模型下载,请确保已安装git lfs
mkdir -p pretrained_models
git clone https://www.modelscope.cn/iic/CosyVoice-300M.git pretrained_models/CosyVoice-300M
git clone https://www.modelscope.cn/iic/CosyVoice-300M-25Hz.git pretrained_models/CosyVoice-300M-25Hz
git clone https://www.modelscope.cn/iic/CosyVoice-300M-SFT.git pretrained_models/CosyVoice-300M-SFT
git clone https://www.modelscope.cn/iic/CosyVoice-300M-Instruct.git pretrained_models/CosyVoice-300M-Instruct
git clone https://www.modelscope.cn/iic/CosyVoice-ttsfrd.git pretrained_models/CosyVoice-ttsfrd
선택적으로 더 나은 텍스트 정규화 성능을 위해 ttsfrd
리소스의 압축을 풀고 ttsfrd
패키지를 설치할 수 있습니다.
이 단계는 필요하지 않습니다. ttsfrd
패키지를 설치하지 않으면 기본적으로 WeTextProcessing을 사용합니다.
cd pretrained_models/CosyVoice-ttsfrd/
unzip resource.zip -d .
pip install ttsfrd-0.3.6-cp38-cp38-linux_x86_64.whl
기본 사용법
zero_shot/cross_lingual 추론을 위해서는 CosyVoice-300M
모델을 사용하세요. Sft 추론을 위해서는 CosyVoice-300M-SFT
모델을 사용하세요. 지시 추론을 위해서는 CosyVoice-300M-Instruct
모델을 사용하세요. 먼저 PYTHONPATH
에 third_party/Matcha-TTS
추가하세요.
export PYTHONPATH=third_party/Matcha-TTS
from cosyvoice . cli . cosyvoice import CosyVoice
from cosyvoice . utils . file_utils import load_wav
import torchaudio
cosyvoice = CosyVoice ( 'pretrained_models/CosyVoice-300M-SFT' , load_jit = True , load_onnx = False , fp16 = True )
# sft usage
print ( cosyvoice . list_avaliable_spks ())
# change stream=True for chunk stream inference
for i , j in enumerate ( cosyvoice . inference_sft ( '你好,我是通义生成式语音大模型,请问有什么可以帮您的吗?' , '中文女' , stream = False )):
torchaudio . save ( 'sft_{}.wav' . format ( i ), j [ 'tts_speech' ], 22050 )
cosyvoice = CosyVoice ( 'pretrained_models/CosyVoice-300M-25Hz' ) # or change to pretrained_models/CosyVoice-300M for 50Hz inference
# zero_shot usage, <|zh|><|en|><|jp|><|yue|><|ko|> for Chinese/English/Japanese/Cantonese/Korean
prompt_speech_16k = load_wav ( 'zero_shot_prompt.wav' , 16000 )
for i , j in enumerate ( cosyvoice . inference_zero_shot ( '收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。' , '希望你以后能够做的比我还好呦。' , prompt_speech_16k , stream = False )):
torchaudio . save ( 'zero_shot_{}.wav' . format ( i ), j [ 'tts_speech' ], 22050 )
# cross_lingual usage
prompt_speech_16k = load_wav ( 'cross_lingual_prompt.wav' , 16000 )
for i , j in enumerate ( cosyvoice . inference_cross_lingual ( '<|en|>And then later on, fully acquiring that company. So keeping management in line, interest in line with the asset that ' s coming into the family is a reason why sometimes we don ' t buy the whole thing.' , prompt_speech_16k , stream = False )):
torchaudio . save ( 'cross_lingual_{}.wav' . format ( i ), j [ 'tts_speech' ], 22050 )
# vc usage
prompt_speech_16k = load_wav ( 'zero_shot_prompt.wav' , 16000 )
source_speech_16k = load_wav ( 'cross_lingual_prompt.wav' , 16000 )
for i , j in enumerate ( cosyvoice . inference_vc ( source_speech_16k , prompt_speech_16k , stream = False )):
torchaudio . save ( 'vc_{}.wav' . format ( i ), j [ 'tts_speech' ], 22050 )
cosyvoice = CosyVoice ( 'pretrained_models/CosyVoice-300M-Instruct' )
# instruct usage, support <laughter></laughter><strong></strong>[laughter][breath]
for i , j in enumerate ( cosyvoice . inference_instruct ( '在面对挑战时,他展现了非凡的<strong>勇气</strong>与<strong>智慧</strong>。' , '中文男' , 'Theo ' Crimson ' , is a fiery, passionate rebel leader. Fights with fervor for justice, but struggles with impulsiveness.' , stream = False )):
torchaudio . save ( 'instruct_{}.wav' . format ( i ), j [ 'tts_speech' ], 22050 )
웹 데모 시작
웹 데모 페이지를 사용하면 CosyVoice에 빠르게 익숙해질 수 있습니다. 웹 데모에서는 sft/zero_shot/cross_lingual/instruct 추론을 지원합니다.
자세한 내용은 데모 웹사이트를 참조하세요.
# change iic/CosyVoice-300M-SFT for sft inference, or iic/CosyVoice-300M-Instruct for instruct inference
python3 webui . py - - port 50000 - - model_dir pretrained_models / CosyVoice - 300 M
고급 사용법
고급 사용자를 위해 examples/libritts/cosyvoice/run.sh
에 학습 및 추론 스크립트를 제공했습니다. 이 레시피를 따라 CosyVoice에 익숙해질 수 있습니다.
배포용 빌드
선택적으로 서비스 배포에 grpc를 사용하려는 경우 다음 단계를 실행할 수 있습니다. 그렇지 않으면 이 단계를 무시해도 됩니다.
cd runtime/python
docker build -t cosyvoice:v1.0 .
# change iic/CosyVoice-300M to iic/CosyVoice-300M-Instruct if you want to use instruct inference
# for grpc usage
docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v1.0 /bin/bash -c " cd /opt/CosyVoice/CosyVoice/runtime/python/grpc && python3 server.py --port 50000 --max_conc 4 --model_dir iic/CosyVoice-300M && sleep infinity "
cd grpc && python3 client.py --port 50000 --mode < sft | zero_shot | cross_lingual | instruct >
# for fastapi usage
docker run -d --runtime=nvidia -p 50000:50000 cosyvoice:v1.0 /bin/bash -c " cd /opt/CosyVoice/CosyVoice/runtime/python/fastapi && python3 server.py --port 50000 --model_dir iic/CosyVoice-300M && sleep infinity "
cd fastapi && python3 client.py --port 50000 --mode < sft | zero_shot | cross_lingual | instruct >
Github 이슈에 대해 직접 토론할 수 있습니다.
QR 코드를 스캔하여 공식 Dingding 채팅 그룹에 참여할 수도 있습니다.
위에 제공된 콘텐츠는 학문적 목적으로만 제공되며 기술적 능력을 입증하기 위한 것입니다. 몇 가지 예는 인터넷에서 가져온 것입니다. 콘텐츠가 귀하의 권리를 침해하는 경우 당사에 연락하여 삭제를 요청하세요.