Inglês | 简体中文 | 日本語
O modelo lançado atualmente suporta conversão de voz zero-shot ? , conversão de voz em tempo real de disparo zero e conversão de voz de canto de disparo zero . Sem qualquer treinamento, é capaz de clonar uma voz com um discurso de referência de 1 a 30 segundos.
Para encontrar uma lista de demonstrações e comparações com modelos anteriores de conversão de voz, visite nossa página de demonstração
Continuamos melhorando a qualidade do modelo e adicionando mais recursos.
Realizamos uma série de avaliações objetivas nas capacidades de conversão de voz do nosso Seed-VC. Para facilitar a reprodução, os áudios de origem são 100 declarações aleatórias do LibriTTS-test-clean, e os áudios de referência são 12 vozes escolhidas aleatoriamente com características únicas.
Os áudios de origem podem ser encontrados em ./examples/libritts-test-clean
Áudios de referência podem ser encontrados em ./examples/reference
Avaliamos os resultados da conversão em termos de similaridade de cosseno de incorporação de alto-falante (SECS), taxa de erro de palavra (WER) e taxa de erro de caractere (CER) e comparamos nossos resultados com duas linhas de base fortes de código aberto, nomeadamente OpenVoice e CosyVoice.
Os resultados na tabela abaixo mostram que nosso modelo Seed-VC supera significativamente os modelos básicos tanto em inteligibilidade quanto em similaridade de alto-falante.
| ModelosMétricas | SECS↑ | WER↓ | CER↓ | SIG↑ | BAK↑ | OVRL↑ |
|---|---|---|---|---|---|---|
| Verdade fundamental | 1,0000 | 8.02 | 1,57 | ~ | ~ | ~ |
| OpenVoice | 0,7547 | 15h46 | 4,73 | 3,56 | 4.02 | 3.27 |
| Voz aconchegante | 0,8440 | 18.98 | 7.29 | 3.51 | 4.02 | 3.21 |
| Semente-VC (Nossa) | 0,8676 | 11.99 | 2,92 | 3,42 | 3,97 | 3.11 |
Também comparamos modelos de conversão de voz sem disparo zero para vários alto-falantes (com base na disponibilidade do modelo):
| Personagens | ModelosMétricas | SECS↑ | WER↓ | CER↓ | SIG↑ | BAK↑ | OVRL↑ |
|---|---|---|---|---|---|---|---|
| ~ | Verdade fundamental | 1,0000 | 6,43 | 1,00 | ~ | ~ | ~ |
| Tokai Teio | So-VITS-4.0 | 0,8637 | 21h46 | 9,63 | 3.06 | 3,66 | 2,68 |
| Semente-VC (Nossa) | 0,8899 | 15h32 | 4,66 | 3.12 | 3,71 | 2,72 | |
| Verde leitoso | So-VITS-4.0 | 0,6850 | 48,43 | 32,50 | 3,34 | 3.51 | 2,82 |
| Semente-VC (Nossa) | 0,8072 | 7.26 | 1,32 | 3,48 | 4.07 | 3.20 | |
| Matikane Tannhuaser | So-VITS-4.0 | 0,8594 | 16h25 | 8,64 | 3,25 | 3,71 | 2,84 |
| Semente-VC (Nossa) | 0,8768 | 12,62 | 5,86 | 3.18 | 3,83 | 2,85 |
Os resultados mostram que, apesar de não ser treinado nos alto-falantes alvo, o Seed-VC é capaz de alcançar resultados significativamente melhores do que os modelos diferentes de zero shot. Porém, isso pode variar muito dependendo da qualidade do modelo SoVITS. PR ou Issue são bem-vindos se você achar esta comparação injusta ou imprecisa.
(Modelo Tokai Teio de zomehwh/sovits-tannhauser)
(Modelo Matikane Tannhuaser de zomehwh/sovits-tannhauser)
(Modelo Milky Green de sparanoid/milky-green-sovits-4)
Resultado ASR em inglês calculado pelo modelo facebook/hubert-large-ls960-ft
Incorporação de alto-falante calculada pelo modelo de semelhança
Você pode reproduzir a avaliação executando o script eval.py
python eval.py --source ./examples/libritts-test-clean --target ./examples/referência --output ./examples/eval/converted --difusão-etapas 25 --comprimento-ajuste 1.0 --inferência-cfg-taxa 0,7 --xvector-extractor "resemblyzer"--baseline "" # preencha openvoice ou cosyvoice para calcular o resultado da linha de base --max-samples 100 # máximo de declarações de origem a serem analisadas
Antes disso, certifique-se de ter o repositório openvoice e cosyvoice instalados corretamente em ../OpenVoice/ e ../CosyVoice/ se desejar executar a avaliação de linha de base.
A avaliação adicional da conversão de voz cantada é feita no conjunto de dados M4Singer, com 4 alto-falantes alvo cujos dados de áudio estão disponíveis aqui.
A similaridade do alto-falante é calculada calculando a média das semelhanças de cosseno entre o resultado da conversão e todas as amostras disponíveis no respectivo conjunto de dados de caracteres.
Para cada caractere, uma expressão aleatória é escolhida como prompt para inferência zero-shot. Para comparação, treinamos o respectivo modelo RVCv2-f0-48k para cada personagem como linha de base.
100 declarações aleatórias para cada tipo de cantor são usadas como fonte de áudio.
| ModelosMétricas | F0CORR↑ | F0RMSE↓ | SECS↑ | CER↓ | SIG↑ | BAK↑ | OVRL↑ |
|---|---|---|---|---|---|---|---|
| RVCv2 | 0,9404 | 30h43 | 0,7264 | 28h46 | 3.41 | 4.05 | 3.12 |
| Semente-VC (Nossa) | 0,9375 | 33,35 | 0,7405 | 19h70 | 3,39 | 3,96 | 3.06 |
| Tipo de cantor de origem | Personagens | ModelosMétricas | F0CORR↑ | F0RMSE↓ | SECS↑ | CER↓ | SIG↑ | BAK↑ | OVRL↑ |
|---|---|---|---|---|---|---|---|---|---|
| Alto (feminino) | ~ | Verdade fundamental | 1,0000 | 0,00 | ~ | 8.16 | ~ | ~ | ~ |
| Azuma (feminino) | RVCv2 | 0,9617 | 33.03 | 0,7352 | 24h70 | 3,36 | 4.07 | 3.07 | |
| Semente-VC (Nossa) | 0,9658 | 31,64 | 0,7341 | 15.23 | 3,37 | 4.02 | 3.07 | ||
| Diana (feminina) | RVCv2 | 0,9626 | 32,56 | 0,7212 | 19,67 | 3,45 | 4.08 | 3.17 | |
| Semente-VC (Nossa) | 0,9648 | 31,94 | 0,7457 | 16,81 | 3,49 | 3,99 | 3.15 | ||
| Ding Zhen (masculino) | RVCv2 | 0,9013 | 26,72 | 0,7221 | 18h53 | 3,37 | 4.03 | 3.06 | |
| Semente-VC (Nossa) | 0,9356 | 21,87 | 0,7513 | 15,63 | 3,44 | 3,94 | 3.09 | ||
| Kobe Bryant (masculino) | RVCv2 | 0,9215 | 23h90 | 0,7495 | 37,23 | 3,49 | 4.06 | 3.21 | |
| Semente-VC (Nossa) | 0,9248 | 23h40 | 0,7602 | 26,98 | 3,43 | 4.02 | 3.13 | ||
| Baixo (masculino) | ~ | Verdade fundamental | 1,0000 | 0,00 | ~ | 8,62 | ~ | ~ | ~ |
| Azuma | RVCv2 | 0,9288 | 32,62 | 0,7148 | 24,88 | 3,45 | 4.10 | 3.18 | |
| Semente-VC (Nossa) | 0,9383 | 31,57 | 0,6960 | 10h31 | 3,45 | 4.03 | 3.15 | ||
| Diana | RVCv2 | 0,9403 | 30h00 | 0,7010 | 14.54 | 3,53 | 4.15 | 3.27 | |
| Semente-VC (Nossa) | 0,9428 | 30.06 | 0,7299 | 9,66 | 3,53 | 4.11 | 3,25 | ||
| Ding Zhen | RVCv2 | 0,9061 | 19h53 | 0,6922 | 25,99 | 3,36 | 4.09 | 3.08 | |
| Semente-VC (Nossa) | 0,9169 | 18h15 | 0,7260 | 14.13 | 3,38 | 3,98 | 3.07 | ||
| Kobe Bryant | RVCv2 | 0,9302 | 16h37 | 0,7717 | 41.04 | 3.51 | 4.13 | 3,25 | |
| Semente-VC (Nossa) | 0,9176 | 17,93 | 0,7798 | 24.23 | 3,42 | 4.08 | 3.17 | ||
| Soprano (feminino) | ~ | Verdade fundamental | 1,0000 | 0,00 | ~ | 27,92 | ~ | ~ | ~ |
| Azuma | RVCv2 | 0,9742 | 47,80 | 0,7104 | 38,70 | 3.14 | 3,85 | 2,83 | |
| Semente-VC (Nossa) | 0,9521 | 64,00 | 0,7177 | 33.10 | 3.15 | 3,86 | 2,81 | ||
| Diana | RVCv2 | 0,9754 | 46,59 | 0,7319 | 32,36 | 3.14 | 3,85 | 2,83 | |
| Semente-VC (Nossa) | 0,9573 | 59,70 | 0,7317 | 30,57 | 3.11 | 3,78 | 2,74 | ||
| Ding Zhen | RVCv2 | 0,9543 | 31h45 | 0,6792 | 40,80 | 3.41 | 4.08 | 3.14 | |
| Semente-VC (Nossa) | 0,9486 | 33,37 | 0,6979 | 34,45 | 3.41 | 3,97 | 3.10 | ||
| Kobe Bryant | RVCv2 | 0,9691 | 25h50 | 0,6276 | 61,59 | 3,43 | 4.04 | 3.15 | |
| Semente-VC (Nossa) | 0,9496 | 32,76 | 0,6683 | 39,82 | 3.32 | 3,98 | 3.04 | ||
| Tenor (masculino) | ~ | Verdade fundamental | 1,0000 | 0,00 | ~ | 5,94 | ~ | ~ | ~ |
| Azuma | RVCv2 | 0,9333 | 42.09 | 0,7832 | 16,66 | 3,46 | 4.07 | 3.18 | |
| Semente-VC (Nossa) | 0,9162 | 48.06 | 0,7697 | 8,48 | 3,38 | 3,89 | 3.01 | ||
| Diana | RVCv2 | 0,9467 | 36,65 | 0,7729 | 15.28 | 3,53 | 4.08 | 3.24 | |
| Semente-VC (Nossa) | 0,9360 | 41,49 | 0,7920 | 8,55 | 3,49 | 3,93 | 3.13 | ||
| Ding Zhen | RVCv2 | 0,9197 | 22,82 | 0,7591 | 12,92 | 3h40 | 4.02 | 3.09 | |
| Semente-VC (Nossa) | 0,9247 | 22,77 | 0,7721 | 13,95 | 3,45 | 3,82 | 3.05 | ||
| Kobe Bryant | RVCv2 | 0,9415 | 19h33 | 0,7507 | 30,52 | 3,48 | 4.02 | 3.19 | |
| Semente-VC (Nossa) | 0,9082 | 24,86 | 0,7764 | 13h35 | 3,39 | 3,93 | 3.07 |
Apesar do Seed-VC não ser treinado nos falantes-alvo e apenas um enunciado aleatório ser usado como prompt, ele ainda supera constantemente os modelos RVCv2 específicos do locutor em termos de similaridade de locutor (SECS) e inteligibilidade (CER), o que demonstra a voz superior capacidade de clonagem e robustez do Seed-VC.
Porém, observa-se que a qualidade de áudio do Seed-VC (DNSMOS) é um pouco inferior ao RVCv2. Levamos essa desvantagem a sério e daremos alta prioridade à melhoria da qualidade do áudio no futuro.
PR ou problema são bem-vindos se você achar esta comparação injusta ou imprecisa.
Resultado ASR chinês calculado por SenseVoiceSmall
Incorporação de alto-falante calculada pelo modelo de semelhança
Definimos +12 semitons de mudança de tom para conversão de homem para mulher e -12 semitons para conversão de mulher para homem, caso contrário, mudança de tom de 0
Python 3.10 sugerido no Windows ou Linux.
pip instalar -r requisitos.txt
Os pontos de verificação do lançamento do modelo mais recente serão baixados automaticamente na primeira execução da inferência.
Inferência de linha de comando:
python inference.py --source <source-wav>--target <referene-wav>--output <output-dir>--diffusion-steps 25 # recomendado 50 ~ 100 para conversão de voz cantada - ajuste de comprimento 1.0 --inferência-cfg-taxa 0,7 --f0-condition False # definido como True para conversão de voz cantada --auto-f0-adjust False # definido como True para ajustar automaticamente o tom da fonte para o nível de tom alvo, normalmente não usado na conversão de voz cantada --mudança de semitom 0 # mudança de tom em semitons para conversão de voz cantada
onde:
source é o caminho para o arquivo de fala a ser convertido em voz de referência
target é o caminho para o arquivo de fala como referência de voz
output é o caminho para o diretório de saída
diffusion-steps é o número de etapas de difusão a serem usadas, o padrão é 25, use 50-100 para melhor qualidade, use 4-10 para inferência mais rápida
length-adjust é o fator de ajuste de comprimento, o padrão é 1,0, defina <1,0 para fala acelerada, >1,0 para fala mais lenta
inference-cfg-rate tem uma diferença sutil na saída, o padrão é 0,7
f0-condition é o sinalizador para condicionar o tom da saída ao tom do áudio de origem, o padrão é False, definido como True para conversão de voz cantada
auto-f0-adjust é o sinalizador para ajustar automaticamente o tom de origem para o nível de tom alvo, o padrão é False, normalmente não usado na conversão de voz cantada
semi-tone-shift é a mudança de tom em semitons para conversão de voz cantada, o padrão é 0
Interface web Gradio:
aplicativo python.py
Em seguida, abra o navegador e acesse http://localhost:7860/ para usar a interface web.
GUI de conversão de voz em tempo real:
python em tempo real-gui.py
IMPORTANTE: É altamente recomendável usar uma GPU para conversão de voz em tempo real.
Alguns testes de desempenho foram feitos em uma GPU de laptop NVIDIA RTX 3060. Os resultados e configurações de parâmetros recomendadas estão listados abaixo:
| Observações | Etapas de difusão | Taxa de Inferência CFG | Comprimento máximo do prompt | Tempo(s) de bloqueio | Comprimento(s) do crossfade | Contexto extra (esquerda)(s) | Contexto extra (direita)(s) | Latência (ms) | Qualidade | Tempo de inferência por pedaço (ms) |
|---|---|---|---|---|---|---|---|---|---|---|
| adequado para a maioria das vozes | 10 | 0,7 | 3,0 | 1,0s | 0,04s | 0,5s | 0,02s | 2070ms | Médio | 849ms |
| melhor desempenho para vozes femininas agudas | 20 | 0,7 | 3,0 | 2,0s | 0,04s | 0,5s | 0,02s | 4070ms | Alto | 1585ms |
| adequado para algumas vozes masculinas, pois o requisito de qualidade de áudio é menor | 5 | 0,7 | 3,0 | 0,6s | 0,04s | 0,5s | 0,02s | 1270ms | Baixo | 488ms |
| Inferência mais rápida definindo inference_cfg_rate como 0,0, mas não tenho certeza se o desempenho cai... | 10 | 0,0 | 3,0 | 0,7s | 0,04s | 0,5s | 0,02s | 1470ms | Médio | 555ms |
Você pode ajustar os parâmetros na GUI de acordo com o desempenho do seu próprio dispositivo. O fluxo de conversão de voz deve funcionar bem, desde que o tempo de inferência seja menor que o tempo de bloqueio.
Observe que a velocidade de inferência pode cair se você estiver executando outras tarefas com uso intensivo de GPU (por exemplo, jogos, assistir vídeos)
Geralmente, a latência fica em torno de 1 a 2s para evitar queda de qualidade (a triste natureza dos modelos de difusão...?), mas continuamos procurando maneiras de reduzi-la.
(A GUI e a lógica de agrupamento de áudio foram modificadas no RVC, obrigado por sua implementação brilhante!)
Código de liberação
Modelo pré-treinado da versão v0.1:
Demonstração do espaço Huggingface:
Página de demonstração HTML (talvez com comparações com outros modelos de VC): Demo
Inferência de streaming
Reduza a latência de inferência de streaming
Vídeo de demonstração para conversão de voz em tempo real
Cantando conversão de voz
Resiliência de ruído para áudio de origem e referência
O áudio de origem é resiliência ao ruído
Potenciais melhorias na arquitetura
Conexões de salto estilo U-ViT
Entrada alterada para OpenAI Whisper
Código para treinamento em dados personalizados
Alterado para BigVGAN da NVIDIA para decodificação de voz cantada
Modelo de versão Whisper para conversão de voz cantada
Avaliação objetiva e comparação com RVC/SoVITS para conversão de voz cantada
Melhorar a qualidade do áudio
Mais a ser adicionado
28/10/2024:
Modelo atualizado de conversão de voz cantada em 44k com melhor qualidade de áudio
27/10/2024:
Adicionada GUI de conversão de voz em tempo real
25/10/2024:
Adicionados resultados de avaliação exaustivos e comparações com RVCv2 para conversão de voz cantada
24/10/2024:
Modelo atualizado de conversão de voz cantada de 44kHz, com OpenAI Whisper como entrada de conteúdo de fala
07/10/2024:
Modelo pré-treinado v0.3 atualizado, codificador de conteúdo de fala alterado para OpenAI Whisper
Adicionados resultados de avaliação objetiva para o modelo pré-treinado v0.3
22/09/2024:
Modelo de conversão de voz cantada atualizado para usar BigVGAN da NVIDIA, proporcionando grande melhoria para vozes cantadas agudas
Suporta saída de chunking e streaming para arquivos de áudio longos na interface da Web
18/09/2024:
Modelo condicionado f0 atualizado para conversão de voz cantada
14/09/2024:
Modelo pré-treinado v0.2 atualizado, com tamanho menor e menos etapas de difusão para alcançar a mesma qualidade e capacidade adicional de controlar a preservação da prosódia
Adicionado script de inferência de linha de comando
Adicionadas instruções de instalação e uso