Este projeto é inspirado no Silero-Api-Server e utiliza XTTSV2.
Este servidor foi criado para Sillytavern, mas você pode usá -lo para suas necessidades
Sinta -se à vontade para fazer PRs ou usar o código para suas próprias necessidades
Há uma versão do Google Collab, você pode usá -la se o seu computador estiver fraco.
Se você está procurando uma opção para XTTs normais, use, procure aqui https://github.com/daswer123/xtts-webui
Recentemente, tenho pouco tempo para fazer este projeto, então aconselho você a se familiarizar com um projeto semelhante
Você pode acompanhar todas as alterações na página de lançamento
Instalação simples:
pip install xtts-api-serverIsso instalará todas as dependências necessárias, incluindo apenas uma versão de suporte da CPU do Pytorch
Eu recomendo que você instale a versão da GPU para melhorar a velocidade de processamento (até 3 vezes mais rápida)
python -m venv venv
venv S cripts a ctivate
pip install xtts-api-server
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118sudo apt install -y python3-dev python3-venv portaudio19-dev
python -m venv venv
source venv b in a ctivate
pip install xtts-api-server
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118 # Clone REPO
git clone https://github.com/daswer123/xtts-api-server
cd xtts-api-server
# Create virtual env
python -m venv venv
venv/scripts/activate or source venv/bin/activate
# Install deps
pip install -r requirements.txt
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118
# Launch server
python -m xtts_api_server
Um dockerfile é fornecido para criar uma imagem do Docker, e um arquivo Docker-comppose.yml é fornecido para executar o servidor com o Docker Compose como um serviço.
Você pode construir a imagem com o seguinte comando:
mkdir xtts-api-server
cd xtts-api-server
docker run -d daswer123/xtts-api-server
OU
cd docker
docker compose buildEntão você pode executar o servidor com o seguinte comando:
docker compose up # or with -d to run in background python -m xtts_api_server será executado em IP e porta padrão (localhost: 8020)
Use o sinalizador --deepspeed para processar o resultado rapidamente (aceleração 2-3x)
usage: xtts_api_server [-h] [-hs HOST] [-p PORT] [-sf SPEAKER_FOLDER] [-o OUTPUT] [-t TUNNEL_URL] [-ms MODEL_SOURCE] [--listen] [--use-cache] [--lowvram] [--deepspeed] [--streaming-mode] [--stream-play-sync]
Run XTTSv2 within a FastAPI application
options:
-h, --help show this help message and exit
-hs HOST, --host HOST
-p PORT, --port PORT
-d DEVICE, --device DEVICE `cpu` or `cuda`, you can specify which video card to use, for example, `cuda:0`
-sf SPEAKER_FOLDER, --speaker-folder The folder where you get the samples for tts
-o OUTPUT, --output Output folder
-mf MODELS_FOLDERS, --model-folder Folder where models for XTTS will be stored, finetuned models should be stored in this folder
-t TUNNEL_URL, --tunnel URL of tunnel used (e.g: ngrok, localtunnel)
-ms MODEL_SOURCE, --model-source ["api","apiManual","local"]
-v MODEL_VERSION, --version You can download the official model or your own model, official version you can find [here](https://huggingface.co/coqui/XTTS-v2/tree/main) the model version name is the same as the branch name [v2.0.2,v2.0.3, main] etc. Or you can load your model, just put model in models folder
--listen Allows the server to be used outside the local computer, similar to -hs 0.0.0.0
--use-cache Enables caching of results, your results will be saved and if there will be a repeated request, you will get a file instead of generation
--lowvram The mode in which the model will be stored in RAM and when the processing will move to VRAM, the difference in speed is small
--deepspeed allows you to speed up processing by several times, automatically downloads the necessary libraries
--streaming-mode Enables streaming mode, currently has certain limitations, as described below.
--streaming-mode-improve Enables streaming mode, includes an improved streaming mode that consumes 2gb more VRAM and uses a better tokenizer and more context.
--stream-play-sync Additional flag for streaming mod that allows you to play all audio one at a time without interruption
Você pode especificar o caminho para o arquivo como texto, então o caminho contam e o arquivo será dublado
Você pode carregar seu próprio modelo, para isso, para criar uma pasta nos modelos e carregar o modelo com as configurações, nota na pasta deve ser 3 arquivos config.json vocab.json model.pth
Se você deseja que seu host ouça, use -hs 0.0.0.0 ou use -Listen
O sinalizador -t ou - -tunnel é necessário para que, quando você obtém alto -falantes, obtenha o link correto para ouvir a visualização. Mais informações aqui
Model-Source define em que formato você deseja usar o XTTS:
local - Carrega a versão 2.0.2 por padrão, mas você pode especificar a versão através do sinalizador -v, o modelo salva na pasta Modelos e usa XttsConfig e inference .apiManual - Carrega a versão 2.0.2 por padrão, mas você pode especificar a versão através do sinalizador -v, o modelo salva na pasta Modelos e usa a função tts_to_file da API TTS APIapi - Carregará a versão mais recente do modelo. A bandeira -v não funcionará.Todas as versões do modelo XTTSV2 podem ser encontradas aqui, o nome da versão do modelo é o mesmo que o nome da filial [v2.0.2, v2.0.3, main] etc.
Na primeira vez que você executa ou gera, pode ser necessário confirmar que você concorda em usar o XTTS.
O modo de streaming permite obter áudio e reproduzi -lo quase imediatamente. No entanto, possui várias limitações.
Você pode ver como esse modo funciona aqui e aqui
Agora, sobre as limitações
tts_to_file SOMENTE tts_to_audio e retorna 1 segundo do silêncio. Você pode especificar a versão do modelo XTTS usando o sinalizador -v .
O modo de streaming aprimorado é adequado para idiomas complexos, como chinês, japonês, hindi ou se você deseja que o mecanismo de idiomas leve em consideração mais informações ao processar a fala.
--stream-play-sync -permite reproduzir todas as mensagens na ordem da fila, útil se você usar bate-papos em grupo. Em Sillytavern, você precisa desligar o streaming para funcionar corretamente
Os documentos da API podem ser acessados em http: // localhost: 8020/docs
Por padrão, a pasta speakers deve aparecer na pasta, você precisa colocar lá o arquivo WAV com a amostra de voz, você também pode criar uma pasta e colocar lá várias amostras de voz, isso dará resultados mais precisos
Você pode alterar as pastas para os alto -falantes e a pasta para saída através da API.
A postagem a seguir é uma cotação do usuário material1276 do Reddit
Algumas sugestões sobre como fazer boas amostras
Mantenha-os cerca de 7-9 segundos. Mais não é necessariamente melhor.
Certifique -se de que o áudio esteja abaixo da amostra para um arquivo WAV mono, 22050Hz de 16 bits. Você desacelerará o processamento em um % grande e parece causar resultados de baixa qualidade (com base em alguns testes). 24000Hz é a qualidade em que produz de qualquer maneira!
Usando a versão mais recente do Audacity, selecione seu clipe e faixas> Resvemple para 22050Hz e depois rastreia> Mix> estéreo para mono. e depois Arquivo> Exportar áudio, salvando -o como um ondas de 22050Hz
Se você precisar fazer qualquer limpeza de áudio, faça -o antes de compactá -lo até as configurações acima (mono, 22050Hz, 16 bits).
Verifique se o clipe que você usa não possui ruídos ou músicas de fundo, por exemplo, muitos filmes têm música tranquila quando muitos dos atores estão conversando. O áudio de má qualidade terá assobio que precisa de esclarecer. A IA pegará isso, mesmo que não o fizermos e, até certo ponto, use -o na voz simulada até certo ponto, então o áudio limpo é fundamental!
Tente fazer do seu clipe um de boa fala de fluxo, como os arquivos de exemplo incluídos. Não há grandes pausas, lacunas ou outros sons. De preferência, um que a pessoa que você está tentando copiar mostrará um pouco de gama vocal. Os arquivos de exemplo estão aqui
Certifique -se de que o clipe não comece ou termine com sons impressionantes (respirando/out etc).
O uso de clipes de áudio gerados por IA pode introduzir sons indesejados como já é uma cópia/simulação de uma voz, isso precisaria de testes.