Introdução geral
O CosyVoice é um modelo multilíngue de geração de fala em larga escala que oferece recursos de pilha completa, desde a inferência, o treinamento até a implantação. Desenvolvido pela equipe do FunAudioLLM, ele tem como objetivo obter uma síntese de fala de alta qualidade por meio de transformadores autorregressivos avançados e modelos de difusão baseados em ODE. O CosyVoice não só é compatível com a geração de fala em vários idiomas, mas também executa o controle de emoções e a síntese em cantonês em um nível comparável à pronúncia humana.
Experiência on-line gratuita (conversão de texto em fala): https://modelscope.cn/studios/iic/CosyVoice-300M
Experiência on-line gratuita (fala para texto): https://www.modelscope.cn/studios/iic/SenseVoice
Lista de funções
- Geração de fala em vários idiomas: suporta a síntese de fala em vários idiomas.
- Clonagem de fala: a capacidade de clonar as características da fala de um orador específico.
- Conversão de texto em fala: converta o conteúdo de texto em uma fala natural e suave.
- Controle de emoções: expressão de emoções ajustáveis ao sintetizar a fala.
- Síntese em cantonês: oferece suporte à geração de fala em cantonês.
- Saída de áudio de alta qualidade: sintetize áudio de alta fidelidade por meio do vocoder HiFTNet.
Usando a Ajuda
Processo de instalação
Recentemente, o Ali Tongyi Labs abriu o modelo de fala CosyVoice, que suporta a geração de fala natural, multilíngue, timbre e controle de emoções, e se destaca na geração de fala em vários idiomas, geração de fala com amostra zero, síntese de som em vários idiomas e recursos de execução de comandos.
O CosyVoice usa um total de mais de 150.000 horas de treinamento de dados para dar suporte à síntese de cinco idiomas, chinês, inglês, japonês, cantonês e coreano, e o efeito da síntese é significativamente melhor do que os modelos tradicionais de síntese de fala.
O CosyVoice é compatível com a clonagem de tons em um único disparo: são necessários apenas de 3 a 10 segundos de áudio bruto para gerar tons analógicos, incluindo até mesmo detalhes como ritmo e emoção. Ele também apresenta bom desempenho na síntese de fala em vários idiomas.
Como a versão oficial não é compatível com as plataformas Windows e Mac por enquanto, desta vez implantamos o CosyVoice localmente nessas duas plataformas, respectivamente.
Plataforma Windows
Primeiro, vá para a plataforma Windows e clone o projeto:
git clone https://github.com/v3ucn/CosyVoice_For_Windows
Acesso a projetos.
cd CosyVoice_For_Windows
Gerar módulos embutidos:
git submodule update --init --recursive
Em seguida, instale as dependências:
conda create -n cosyvoice python=3.11
conda activate cosyvoice
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
A versão oficial recomendada do Python é a 3.8, mas a 3.11 realmente funciona e, teoricamente, a 3.11 tem melhor desempenho.
Em seguida, faça o download da versão Windows do instalador do deepspeed para instalá-lo:
https://github.com/S95Sedan/Deepspeed-Windows/releases/tag/v14.0%2Bpy311
Por fim, instale a versão gpu do torch: o
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
Aqui, a versão do cuda é selecionada como 12, ou você pode instalar a 11.
Em seguida, foi feito o download do modelo:
Download dos modelos git do #, verifique se você tem o git lfs instalado
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-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/speech_tts/speech_kantts_ttsfrd.git pretrained_models/speech_kantts_ttsfrd
É muito rápido porque usa o armazém Magic Hitch na China
Por fim, adicione as variáveis de ambiente:
definir PYTHONPATH=terceiro_partido/AcademiCodec;terceiro_partido/Matcha-TTS
Uso básico:
from cosyvoice.cli.cosyvoice import CosyVoice
from cosyvoice.utils.file_utils import load_wav
importar torchaudio
cosyvoice = CosyVoice('speech_tts/CosyVoice-300M-SFT')
Uso do sft #
print(cosyvoice.list_avaliable_spks())
output = cosyvoice.inference_sft('Hello, I'm Tongyi Generative Speech Large Model. , 'Chinese female')
torchaudio.save('sft.wav', output['tts_speech'], 22050)
cosyvoice = CosyVoice('speech_tts/CosyVoice-300M')
Uso do # zero_shot
prompt_speech_16k = load_wav('zero_shot_prompt.wav', 16000)
output = cosyvoice.inference_zero_shot('Recebi um presente de aniversário do meu melhor amigo de longe, a surpresa inesperada e a profunda bênção encheram meu coração de doce alegria, e meu sorriso desabrochou como uma flor. , 'I hope you can do better than me in the future.' , prompt_speech_16k)
torchaudio.save('zero_shot.wav', output['tts_speech'], 22050)
Uso do # em vários idiomas
prompt_speech_16k = load_wav('cross_lingual_prompt.wav', 16000)
output = cosyvoice.inference_cross_lingual('<|en|>Portanto, manter a gerência alinhada, o interesse alinhado com o ativo que está entrando na família é uma das razões pelas quais às vezes não compramos tudo. Por que às vezes não compramos tudo?", prompt_speech_16k)
torchaudio.save('cross_lingual.wav', output['tts_speech'], 22050)
cosyvoice = CosyVoice('speech_tts/CosyVoice-300M-Instruct')
Uso de instruções do #
output = cosyvoice.reference_instruct('Diante dos desafios, ele demonstrou uma notável<strong>corajoso</strong>junto com<strong>sabedoria</strong>.' Theo \'Crimson\', 'Chinese Man', 'Theo \'Crimson\', é um líder rebelde impetuoso e apaixonado. Luta com fervor pela justiça, mas luta contra a impulsividade.)
torchaudio.save('instruct.wav', output['tts_speech'], 22050)
O Webui é recomendado aqui para maior intuição e conveniência:
python3 webui.py --port 9886 --model_dir . /pretrained_models/CosyVoice-300M
entrevistas http://localhost:9886
Observe que o torch oficial usa o sox para o backend; aqui ele é alterado para soundfile:
torchaudio.set_audio_backend('soundfile')
Pode haver alguns bugs, portanto, fique atento às atualizações oficiais do projeto no futuro.
Plataforma MacOS
Agora, no caso da plataforma MacOs, é melhor clonar o projeto primeiro:
git clone https://github.com/v3ucn/CosyVoice_for_MacOs.git
Instale a dependência:
cd CosyVoice_for_MacOs
conda create -n cosyvoice python=3.8
conda activate cosyvoice
pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
Em seguida, você precisa instalar o sox via Homebrew:
brew install sox
Portanto, ele está configurado, mas não se esqueça de adicionar variáveis de ambiente:
export PYTHONPATH=third_party/AcademiCodec:third_party/Matcha-TTS
O uso permanece o mesmo da versão para Windows.
O webui ainda é recomendado aqui: o
python3 webui.py --port 50000 --model_dir speech_tts/CosyVoice-300M
entrevistas http://localhost:50000
observações finais
Com toda a justiça, a CosyVoice merece ser uma grande fábrica, a qualidade do modelo não é de se dizer, representando o mais alto nível de IA doméstica, o nome Tongyi Labs não é falso, é claro, se você também puder abrir o código-fonte do código após a engenharia, seria melhor, acredito que após a otimização do libtorch, esse modelo será o código-fonte aberto do TTS não é uma boa escolha.
Processo de uso
- geração de fala::
- Prepare o arquivo de texto de entrada (por exemplo, input.txt) com uma frase por linha.
- Execute o seguinte comando para geração de fala:
python generate.py --input input.txt --output output/
- Os arquivos de voz gerados serão salvos na pasta
saída/
Catálogo.
- clonagem de fala::
- Prepare um arquivo de amostra de fala (por exemplo, sample.wav) do falante-alvo.
- Execute o seguinte comando para clonagem de voz:
python clone.py --sample sample.wav --text input.txt --output output/
- Os arquivos de voz clonados serão salvos na pasta
saída/
Catálogo.
- controle emocional::
- As emoções podem ser ajustadas com parâmetros de linha de comando ao gerar a fala:
python generate.py --input input.txt --output output/ --emotion happy
- As emoções de apoio incluem: felicidade, tristeza, raiva e neutralidade.
- As emoções podem ser ajustadas com parâmetros de linha de comando ao gerar a fala:
- Síntese em cantonês::
- Prepare um arquivo de texto em cantonês (por exemplo, cantonese_input.txt).
- Execute o seguinte comando para a geração de fala em cantonês:
python generate.py --input cantonese_input.txt --output output/ --language cantonese
- Os arquivos de voz em cantonês gerados serão salvos na pasta
saída/
Catálogo.
Procedimento de operação detalhado
- Preparação do texto::
- Verifique se o arquivo de texto de entrada está formatado corretamente, com uma frase por linha.
- O texto deve ser o mais conciso e claro possível, evitando frases complexas.
- Preparação de amostras de voz::
- As amostras de fala devem ser claras, de uma única pessoa, com o mínimo possível de ruído de fundo.
- Recomenda-se que a duração da amostra seja inferior a 1 minuto para garantir a clonagem ideal.
- parametrização::
- Ajuste os parâmetros da fala gerada, como emoção, idioma, etc., conforme necessário.
- A personalização pode ser obtida modificando os arquivos de configuração ou os parâmetros da linha de comando.
- Validação dos resultados::
- Os arquivos de voz gerados podem ser ouvidos com um reprodutor de áudio.
- Se os resultados não forem satisfatórios, o texto de entrada ou as amostras de fala podem ser ajustados e gerados novamente.