gabrielher
Dseda
No recomendado
Verificado
Verificación en dos pasos activada
Verificado por Binance
Acho que ninguém publicou um guia sobre como fazer isso, sei que existem vídeos, etc., mas aqui vou fazer um pequeno guia de como treinar esta IA para gerar a voz de quem você quiser e colocá-la para cantar, como ficou tão na moda nestas últimas semanas.
Com este guia é possível obter resultados como os tão famosos do xokas, ou um de amostra que eu treinei:
Disclaimer: Guia em processo de construção e melhoria. Por enquanto sem capturas.
O que vamos utilizar?
so-vits-svc-fork
É uma versão mais simples de utilizar do so-vits-svc, que inclui uma interface gráfica (que não é necessária) e alguns scripts mais fáceis de utilizar na hora de preparar os dados.
Requisitos:
Treinamento:
Inferência:
- Aqui é um pouco mais baixo e com 4GB de VRAM você já pode executar o modelo sem muito problema.
Instalação:
A instalação é bastante simples, baixamos este arquivo:
Preparação dos dados:
Aqui cada um terá que fazer seu trabalho de campo, buscando um áudio no qual se ouça a voz corretamente, limpá-lo, cortá-lo.
Para isso, um possível fluxo é: Baixar um vídeo do YouTube onde fale, passá-lo pelo Ultimate Vocal Remover para eliminar músicas e sons que não sejam a voz e, uma vez que temos o áudio, cortá-lo em pedaços, com Adobe Audition ou Audacity, por exemplo.
O objetivo é acabar tendo entre 100 e 150 áudios de entre 5 e 10 segundos. Muito importante respeitar estas durações.
Treinando a IA:
NOTA: Quando algo está entre {}, como {voz}, significa que se substitua por um texto, como por exemplo o nome da pessoa. Assim projeto-{voz}, poderia ser projeto-ilitri.
Uma vez que temos tudo instalado e os áudios preparados, podemos começar a treinar nosso modelo.
Para isso, criamos uma pasta, podemos chamá-la de projeto-{voz}.
Dentro desta pasta, criaremos outra chamada dataset_raw. E dentro de dataset_raw, outra com o nome da voz.
Assim deveríamos ter projeto-{voz}/dataset_raw/{voz}
Agora abrimos um terminal na pasta projeto-{voz}, e começaremos a fazer os passos prévios ao treino.
Executaremos os comandos, um por um, quando acabar o anterior:
Cita:
Agora, na pasta projeto-{voz}, veremos que além de dataset_raw que havíamos criado, foram geradas outras muitas pastas.
Nos interessa configs. Entramos dentro, até encontrar um arquivo chamado config.json.
Este é o arquivo que controla como o modelo é treinado. O principal são os campos "epochs" e "batch_size".
Abrimos o arquivo config.json.
Por enquanto vamos mudar o batch size para "auto", salvamos.
Agora no terminal que tínhamos aberto antes, começamos a treinar:
Cita:
Agora temos que ver entre todo o texto que sai qual batch_size vai utilizando. Se sair algum erro e quebrar, deveremos ir mudando o batch_size manualmente. Começando por exemplo em 16, e baixando. Este valor dependerá da memória. Com uma placa de 6GB e cerca de 150 áudios de 7 segundos, o batch que funciona são 6. Com mais memória, poderia ser aumentado. Questão de ir testando.
Uma vez encontrado o batch_size, podemos mudar os epochs a treinar. Os epochs são a quantidade de "treinos" a realizar.
No geral, começaremos a ver resultados decentes a partir do step 25000. Para traduzir isto para o epoch, aplicamos a seguinte fórmula: epochs = 25000 / (num_audios / batch_size)
Já aqui só resta esperar.
Se você quiser pausar o treinamento, pressionando control + c ele para, e depois voltando a executar svc train -t ele retoma pelo último checkpoint que tenha sido salvo.
Inferência (Gerando áudios):
A inferência, por sorte, é bastante mais simples que o treinamento.
Precisamos do áudio no qual queiramos substituir a voz pela da nossa IA e executá-la. Em alguns segundos teremos o resultado.
Para isso, escolhemos o áudio que queiramos substituir, passamos pelo Ultimate Vocal Remover (ou outra ferramenta que faça o mesmo), e colocamos o arquivo que esse programa gerar na pasta projeto-{voz}.
Agora executamos no terminal:
svc infer {voz} -fm crepe-tiny {arquivo_de_voz}.wav
Finalmente, ao terminar, encontraremos na mesma pasta um novo arquivo chamado {arquivo_de_voz}.out.wav
Espero que a alguém sirva. O guia ainda está em processo de construção. Falhas, melhorias, etc., serão corrigidas.
Perguntas por mensagem 🙂
Com este guia é possível obter resultados como os tão famosos do xokas, ou um de amostra que eu treinei:
Disclaimer: Guia em processo de construção e melhoria. Por enquanto sem capturas.
O que vamos utilizar?
so-vits-svc-fork
É uma versão mais simples de utilizar do so-vits-svc, que inclui uma interface gráfica (que não é necessária) e alguns scripts mais fáceis de utilizar na hora de preparar os dados.
Requisitos:
- Este guia foca no Windows, no Linux será muito parecido, mas a instalação será um pouco diferente.
- Placa de vídeo NVIDIA. Se não, você vai levar 3 semanas para ver algum resultado decente.
- Programa para separar as vozes do resto dos sons (Por exemplo, Ultimate Vocal Remover 5)
Treinamento:
- Placa de vídeo com pelo menos 6GB de VRAM, pode funcionar com 4GB, mas as velocidades que serão alcançadas são realmente baixas. Mas se você tiver >=10GB, muito melhor.
- Entre 100 e 200 áudios de entre 5 e 10 segundos, da voz que queremos treinar. Que fale apenas essa voz e quanto mais limpos forem os áudios, melhor. Ou seja, que não corte palavras no final, que não se ouçam ruídos de fundo, etc.
Inferência:
- Aqui é um pouco mais baixo e com 4GB de VRAM você já pode executar o modelo sem muito problema.
Instalação:
A instalação é bastante simples, baixamos este arquivo:
Preparação dos dados:
Aqui cada um terá que fazer seu trabalho de campo, buscando um áudio no qual se ouça a voz corretamente, limpá-lo, cortá-lo.
Para isso, um possível fluxo é: Baixar um vídeo do YouTube onde fale, passá-lo pelo Ultimate Vocal Remover para eliminar músicas e sons que não sejam a voz e, uma vez que temos o áudio, cortá-lo em pedaços, com Adobe Audition ou Audacity, por exemplo.
O objetivo é acabar tendo entre 100 e 150 áudios de entre 5 e 10 segundos. Muito importante respeitar estas durações.
Treinando a IA:
NOTA: Quando algo está entre {}, como {voz}, significa que se substitua por um texto, como por exemplo o nome da pessoa. Assim projeto-{voz}, poderia ser projeto-ilitri.
Uma vez que temos tudo instalado e os áudios preparados, podemos começar a treinar nosso modelo.
Para isso, criamos uma pasta, podemos chamá-la de projeto-{voz}.
Dentro desta pasta, criaremos outra chamada dataset_raw. E dentro de dataset_raw, outra com o nome da voz.
Assim deveríamos ter projeto-{voz}/dataset_raw/{voz}
Agora abrimos um terminal na pasta projeto-{voz}, e começaremos a fazer os passos prévios ao treino.
Executaremos os comandos, um por um, quando acabar o anterior:
Cita:
| svc pre-resample svc pre-config svc pre-hubert -fm crepe |
Agora, na pasta projeto-{voz}, veremos que além de dataset_raw que havíamos criado, foram geradas outras muitas pastas.
Nos interessa configs. Entramos dentro, até encontrar um arquivo chamado config.json.
Este é o arquivo que controla como o modelo é treinado. O principal são os campos "epochs" e "batch_size".
Abrimos o arquivo config.json.
Por enquanto vamos mudar o batch size para "auto", salvamos.
Agora no terminal que tínhamos aberto antes, começamos a treinar:
Cita:
| svc train -t |
Agora temos que ver entre todo o texto que sai qual batch_size vai utilizando. Se sair algum erro e quebrar, deveremos ir mudando o batch_size manualmente. Começando por exemplo em 16, e baixando. Este valor dependerá da memória. Com uma placa de 6GB e cerca de 150 áudios de 7 segundos, o batch que funciona são 6. Com mais memória, poderia ser aumentado. Questão de ir testando.
Uma vez encontrado o batch_size, podemos mudar os epochs a treinar. Os epochs são a quantidade de "treinos" a realizar.
No geral, começaremos a ver resultados decentes a partir do step 25000. Para traduzir isto para o epoch, aplicamos a seguinte fórmula: epochs = 25000 / (num_audios / batch_size)
Já aqui só resta esperar.
Se você quiser pausar o treinamento, pressionando control + c ele para, e depois voltando a executar svc train -t ele retoma pelo último checkpoint que tenha sido salvo.
Inferência (Gerando áudios):
A inferência, por sorte, é bastante mais simples que o treinamento.
Precisamos do áudio no qual queiramos substituir a voz pela da nossa IA e executá-la. Em alguns segundos teremos o resultado.
Para isso, escolhemos o áudio que queiramos substituir, passamos pelo Ultimate Vocal Remover (ou outra ferramenta que faça o mesmo), e colocamos o arquivo que esse programa gerar na pasta projeto-{voz}.
Agora executamos no terminal:
svc infer {voz} -fm crepe-tiny {arquivo_de_voz}.wav
Finalmente, ao terminar, encontraremos na mesma pasta um novo arquivo chamado {arquivo_de_voz}.out.wav
Espero que a alguém sirva. O guia ainda está em processo de construção. Falhas, melhorias, etc., serão corrigidas.
Perguntas por mensagem 🙂