O CosyVoice é um modelo de geração de fala multilíngue de código aberto que se concentra na tecnologia de conversão de texto em fala (TTS) de alta qualidade. Ele é compatível com a síntese de fala em vários idiomas e oferece recursos como geração de fala com amostra zero, clonagem de fala em vários idiomas e controle de emoção refinado.
O yVoice 2.0 reduz significativamente o erro de pronúncia de 30% para 50% em comparação com a versão anterior, com uma melhoria significativa na qualidade do som e na naturalidade rítmica, e um aumento na pontuação MOS de 5,4 para 5,53. O projeto oferece inferência completa, treinamento e suporte à implantação, e os desenvolvedores podem começar a usá-lo facilmente, tornando-o adequado para aplicativos como assistentes de voz, dublagem e criação de conteúdo multilíngue.
Serviços abertos:CosyVoice: projeto de código aberto de clonagem de voz de 3 segundos lançado por Ali com suporte para tags controladas emocionalmente
Lista de funções
- Geração de fala com amostra zero: gera fala semelhante à voz alvo com base em amostras curtas de áudio sem treinamento adicional.
- Síntese de fala em vários idiomas: suporta a geração de fala em vários idiomas, mantém a consistência do timbre e é adequado para a criação de conteúdo global.
- Controle detalhado de emoções: suporta a adição de risos, pausas e outras expressões emocionais para gerar uma fala mais natural.
- Ajuste de dialeto e sotaque: gere fala em dialetos específicos (por exemplo, Sichuan) ou sotaques para aprimorar a experiência de localização.
- Síntese de fala em streaming: suporta saída de streaming de baixa latência com latência do primeiro pacote de até 150 ms, adequada para aplicativos em tempo real.
- Suporte ao treinamento de modelos: fornece um processo completo de pré-treinamento de modelos e treinamento do zero para atender às necessidades do desenvolvedor.
- Saída de som de alta qualidade: qualidade de som e ritmo otimizados, com uma pontuação MOS de 5,53, próxima aos níveis comerciais.
Usando a Ajuda
Processo de instalação
Para usar o CosyVoice, primeiro você precisa instalar o ambiente e as dependências necessárias. Abaixo estão as etapas de instalação detalhadas para garantir que os usuários possam configurar e executar o projeto rapidamente.
- Instalando o Conda
A CosyVoice recomenda o uso do Conda para gerenciar seu ambiente. Acessehttps://docs.conda.io/en/latest/miniconda.html
Baixe e instale o Miniconda e, em seguida, crie e ative um ambiente virtual:conda create -n cosyvoice python=3.10 conda activate cosyvoice
- Instalação de dependências
Use o pip para instalar os pacotes Python necessários para o projeto. Por motivos de rede, é recomendável usar uma fonte espelho doméstica (por exemplo, Aliyun):pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com
montagem
pynini
(para processamento de texto):conda install -y -c conda-forge pynini==2.1.5
- Solução de problemas de compatibilidade do sox
Se estiver enfrentando problemas relacionados ao sox, instale o sox de acordo com seu sistema operacional:- Ubuntu::
sudo apt-get install sox libsox-dev
- CentOS::
sudo yum install sox sox-devel
- Ubuntu::
- Download do modelo pré-treinado
O CosyVoice fornece vários modelos pré-treinados (por exemploCosyVoice2-0.5B
eCosyVoice-300M
eCosyVoice-300M-SFT
responder cantandoCosyVoice-300M-Instruct
). Os usuários podem baixar esses modelos do repositório do GitHub e colocá-los na pastapretrained_models
diretório. Faça também o downloadCosyVoice-ttsfrd
recursos para dar suporte ao processamento de front-end de texto. - Clonagem do código do projeto
Clone o repositório do CosyVoice usando o Git e verifique se os submódulos estão carregados corretamente:git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git cd CosyVoice git submodule update --init --recursive
Uso
O CosyVoice oferece uma variedade de módulos funcionais, incluindo geração de fala com amostra zero, síntese entre idiomas e geração de fala imperativa. Veja como ele funciona.
Geração de fala com amostragem zero
A geração de fala com amostra zero permite que o usuário gere fala com um timbre-alvo com base em amostras curtas de áudio. Por exemplo, para gerar uma fala com um timbre específico:
from cosyvoice import CosyVoice2
import torchaudio
cosyvoice = CosyVoice2('pretrained_models/CosyVoice2-0.5B', load_jit=False, load_trt=False, fp16=False)
prompt_speech_16k = torchaudio.load('./asset/zero_shot_prompt.wav')[0]
for i, j in enumerate(cosyvoice.inference_zero_shot(
'收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。',
'希望你以后能够做的比我还好呦。',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'zero_shot_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- procedimento::
- Prepare um áudio de sinalização de 16kHz (por exemplo
zero_shot_prompt.wav
). - invocações
inference_zero_shot
passando o texto de destino, o texto de sinalização e o áudio. - Salve o arquivo de voz gerado.
- Prepare um áudio de sinalização de 16kHz (por exemplo
- tomar nota dePara reproduzir os resultados do site oficial, defina a opção
text_frontend=False
.
síntese de fala em vários idiomas
A síntese entre idiomas suporta a geração de fala multilíngue com timbre consistente. Por exemplo, a geração de discurso com risadas:
for i, j in enumerate(cosyvoice.inference_cross_lingual(
'在他讲述那个荒诞故事的过程中,他突然[laughter]停下来,因为他自己也被逗笑了[laughter]。',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'fine_grained_control_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- procedimento::
- Prepare o áudio de sinalização.
- Adicione tags de sentimento ao texto (por exemplo
[laughter]
), para rótulos específicos suportados, consultecosyvoice/tokenizer/tokenizer.py#L248
. - Salve o arquivo de voz gerado.
Geração de fala baseada em comandos
O Command Generation suporta a especificação de dialetos ou estilos. Por exemplo, a geração do discurso do dialeto de Sichuan:
for i, j in enumerate(cosyvoice.inference_instruct2(
'收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。',
'用四川话说这句话',
prompt_speech_16k,
stream=False)):
torchaudio.save(f'instruct_{i}.wav', j['tts_speech'], cosyvoice.sample_rate)
- procedimento::
- Forneça o texto-alvo e as instruções (por exemplo, "Speak in Sichuan").
- Gerar fala usando áudio solicitado.
- Salve o arquivo de saída.
síntese de streaming
A síntese de streaming é adequada para aplicativos em tempo real, com latência do primeiro pacote tão baixa quanto 150 ms. stream=True
Você pode ativar a saída de streaming, consulte o exemplo acima para obter o código específico.
Outras considerações
- Seleção de modelosUso recomendado
CosyVoice2-0.5B
para obter qualidade de som e desempenho ideais. - Configuração do ambienteVerifique se a versão do Python é a 3.10 e se as dependências estão instaladas corretamente.
- ajustar os componentes durante o testeSe a clonagem do submódulo falhar, execute-a várias vezes
git submodule update --init --recursive
Até que funcione. - referência de documentaçãoPara obter mais detalhes, consulte
cosyvoice/tokenizer/tokenizer.py
e documentação oficialhttps://funaudiollm.github.io/cosyvoice2
.
cenário do aplicativo
- Desenvolvimento do assistente de voz
A síntese de streaming de baixa latência e o suporte a vários idiomas do CosyVoice são ideais para o desenvolvimento de assistentes de voz inteligentes. Os desenvolvedores podem personalizar rapidamente os tons personalizados com geração de amostra zero e gerar respostas de voz naturais e suaves para aprimorar a experiência de interação com o usuário. - Criação de conteúdo multilíngue
Os criadores de conteúdo podem usar a síntese entre idiomas para gerar rapidamente locuções multilíngues. Por exemplo, gere vozes para vídeos ou podcasts em inglês, chinês ou outros idiomas para manter um tom consistente e reduzir os custos de produção. - Educação e aprendizado de idiomas
O CosyVoice suporta controle de dialeto e emoção e pode ser usado em aplicativos de aprendizagem de idiomas para gerar fala com um sotaque ou emoção específicos para ajudar os alunos a praticar a audição e a pronúncia. - Dublagem de filmes, TV e jogos
Os desenvolvedores de filmes, TV e jogos podem usar o controle refinado de emoções para gerar falas com efeitos como risos e pausas para aprimorar a expressão dos personagens e melhorar a imersão de seu trabalho.
QA
- Quais idiomas são suportados pelo CosyVoice?
O CosyVoice oferece suporte à síntese de fala em vários idiomas, cuja lista pode ser encontrada na documentação oficial ou na páginacosyvoice/tokenizer/tokenizer.py
Exibição em, abrangendo idiomas comuns e alguns dialetos. - Como reduzir a latência da geração de fala?
Usando o modo de síntese de streaming (stream=True
) pode reduzir a latência do primeiro pacote para 150 ms. Certifique-se de que o uso de hardware de alto desempenho e modelos otimizados (como oCosyVoice2-0.5B
). - É necessário treinar o modelo?
Não. O CosyVoice fornece modelos pré-treinados que podem ser baixados e usados diretamente. Se precisar personalizá-lo, você pode consultar a documentação oficial para treiná-lo do zero. - Como faço para adicionar um tom personalizado?
fazer uso deinference_zero_shot
passe a amostra de áudio de destino e o texto de sinalização para gerar um tom personalizado. O salvamento das informações do tom pode ser feito chamando o métodocosyvoice.add_zero_shot_spk
.