Introdução geral
O Muyan-TTS é um modelo de conversão de texto em fala (TTS) de código aberto projetado para cenários de podcasting. Ele é pré-treinado com mais de 100.000 horas de dados de áudio de podcast e oferece suporte à síntese de fala de amostra zero para gerar fala natural de alta qualidade. O modelo foi desenvolvido com base no Llama-3.2-3B e combina os seguintes recursos SOVITS O Muyan-TTS também oferece suporte à personalização da fala com dezenas de minutos de dados de fala de uma única pessoa, adaptados às necessidades de timbres específicos. O projeto é lançado sob a licença Apache 2.0, com o código de treinamento completo, o fluxo de processamento de dados e os pesos do modelo hospedados no GitHub, Hugging Face e ModelScope, e os desenvolvedores são incentivados a desenvolver e contribuir com a comunidade.
Lista de funções
- Síntese de fala com amostragem zeroGeração de discurso de alta qualidade no estilo podcast sem treinamento adicional, adaptando-se a uma ampla gama de entradas tonais.
- Personalização de voz personalizadaGerar a voz de um locutor específico por meio do ajuste fino de alguns minutos de dados de voz de uma pessoa.
- Velocidade de raciocínio eficienteGeração de áudio de aproximadamente 0,33 segundos por segundo em uma única GPU NVIDIA A100, superando o desempenho de vários modelos TTS de código aberto.
- Código de treinamento de código abertoOferece um processo de treinamento completo, desde o modelo básico até o modelo ajustado, com suporte para a personalização do desenvolvedor.
- Pipeline de processamento de dadosIntegração com Whisper, FunASR e NISQA para limpar e transcrever dados de áudio de podcast.
- Suporte à implantação de APIAPI: fornece ferramentas de API para facilitar a integração em podcasts ou outros aplicativos de voz.
- Pesos do modelo abertoOs pesos dos modelos Muyan-TTS e Muyan-TTS-SFT podem ser baixados do Hugging Face e do ModelScope.
Usando a Ajuda
Processo de instalação
A instalação do Muyan-TTS precisa ser feita em um ambiente Linux, recomendando-se o Ubuntu. Abaixo estão as etapas detalhadas:
- armazém de clones
Abra um terminal e execute o seguinte comando para clonar o repositório Muyan-TTS:git clone https://github.com/MYZY-AI/Muyan-TTS.git cd Muyan-TTS
- Criação de um ambiente virtual
Criando um ambiente virtual para o Python 3.10 com o Conda:conda create -n muyan-tts python=3.10 -y conda activate muyan-tts
- Instalação de dependências
Execute o seguinte comando para instalar as dependências do projeto:make build
Observação: O FFmpeg precisa ser instalado. Funciona no Ubuntu:
sudo apt update sudo apt install ffmpeg
- Download do modelo pré-treinado
Faça o download dos pesos do modelo no link abaixo:- Muyan-TTS. Cara de abraço, Escopo do modelo
- Muyan-TTS-SFT. Cara de abraço, Escopo do modelo
- base chinesa-hubert. Cara de abraço
Coloque o arquivo de modelo baixado na pastapretrained_models
que está estruturado da seguinte forma:
pretrained_models ├── chinese-hubert-base ├── Muyan-TTS └── Muyan-TTS-SFT
- Verificar a instalação
Depois de garantir que todas as dependências e arquivos de modelo estejam instalados corretamente, a inferência ou o treinamento podem ser realizados.
Usando o modelo básico (síntese de fala de amostra zero)
O modelo básico do Muyan-TTS oferece suporte à síntese de fala com amostra zero, o que é adequado para gerar rapidamente uma fala no estilo podcast. As etapas são as seguintes:
- Preparar o texto de entrada e o áudio de referência
Prepare um texto (text
) e discurso de referência (ref_wav_path
). Exemplo:ref_wav_path="assets/Claire.wav" prompt_text="Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige." text="Welcome to the captivating world of podcasts, let's embark on this exciting journey together."
- Execute o comando de raciocínio
Use o seguinte comando para gerar a fala, especificandomodel_type
por causa debase
::python tts.py
Ou apenas execute o código de inferência principal:
async def main(model_type, model_path): tts = Inference(model_type, model_path, enable_vllm_acc=False) wavs = await tts.generate( ref_wav_path="assets/Claire.wav", prompt_text="Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige.", text="Welcome to the captivating world of podcasts, let's embark on this exciting journey together." ) output_path = "logs/tts.wav" with open(output_path, "wb") as f: f.write(next(wavs)) print(f"Speech generated in {output_path}")
A fala gerada é salva no arquivo
logs/tts.wav
. - Substituição do áudio de referência
No modo de amostragem zero, oref_wav_path
Ela pode ser substituída pela voz de qualquer alto-falante, e o modelo imitará seu timbre para gerar uma nova voz.
Usando o modelo SFT (personalização de voz personalizada)
O modelo SFT é ajustado com dados de fala de uma única pessoa, adequados para gerar timbres específicos. O procedimento é o seguinte:
- Preparar dados de treinamento
Colete pelo menos alguns minutos de dados de fala de uma única pessoa e salve-os no formato WAV. Use como exemplo o conjunto de dados dev-clean da LibriSpeech, disponível para download:wget --no-check-certificate https://www.openslr.org/resources/12/dev-clean.tar.gz
Depois de desembalar o
prepare_sft_dataset.py
especificado emlibrispeech_dir
é o caminho de descompressão. - Gerar dados de treinamento
Execute o seguinte comando para processar os dados e gerardata/tts_sft_data.json
::./train.sh
O formato dos dados é o seguinte:
{ "file_name": "path/to/audio.wav", "text": "对应的文本内容" }
- Ajuste da configuração do treinamento
compiladortraining/sft.yaml
Defina parâmetros como taxa de aprendizado, tamanho do lote, etc. - Iniciar o treinamento
train.sh
O comando a seguir é executado automaticamente para iniciar o treinamento:llamafactory-cli train training/sft.yaml
Após a conclusão do treinamento, os pesos do modelo são salvos no arquivo
pretrained_models/Muyan-TTS-new-SFT
. - Copiar os pesos do SoVITS
Colocando osovits.pth
Copie para o novo diretório do modelo:cp pretrained_models/Muyan-TTS/sovits.pth pretrained_models/Muyan-TTS-new-SFT
- raciocínio de execução
Para gerar a fala usando o modelo SFT, você precisa manterref_wav_path
Consistente com o alto-falante usado no treinamento:python tts.py --model_type sft
Implementação via API
O Muyan-TTS oferece suporte à implantação de API para facilitar a integração em aplicativos. As etapas são as seguintes:
- Iniciando o serviço de API
Execute o seguinte comando para iniciar o serviço. A porta padrão é 8020:python api.py --model_type base
Os registros de serviço são mantidos no
logs/llm.log
. - Enviar solicitação
Use o seguinte código Python para enviar a solicitação:import requests payload = { "ref_wav_path": "assets/Claire.wav", "prompt_text": "Although the campaign was not a complete success, it did provide Napoleon with valuable experience and prestige.", "text": "Welcome to the captivating world of podcasts, let's embark on this exciting journey together.", "temperature": 0.6, "speed": 1.0, } url = "http://localhost:8020/get_tts" response = requests.post(url, json=payload) with open("logs/tts.wav", "wb") as f: f.write(response.content)
advertência
- Requisitos de hardwareGPU NVIDIA A100 (40 GB) ou equivalente é recomendada para inferência.
- restrição de idiomaComo os dados de treinamento são predominantemente em inglês, somente a entrada em inglês é suportada no momento.
- Qualidade dos dadosA qualidade da fala do modelo SFT depende da clareza e da consistência dos dados de treinamento.
- Custos de treinamentoO custo total do pré-treinamento foi de aproximadamente US$ 50.000, incluindo o processamento de dados (US$ 30.000), o pré-treinamento do LLM (US$ 19.200) e o treinamento do decodificador (US$ 0,134 milhão).
cenário do aplicativo
- Criação de conteúdo de podcast
O Muyan-TTS converte rapidamente roteiros de podcast em fala natural para que criadores independentes possam gerar áudio de alta qualidade. Os usuários podem gerar fala no estilo de podcast simplesmente inserindo texto e fala de referência, reduzindo os custos de gravação. - Produção de audiolivros
Com o modelo SFT, os criadores podem personalizar a voz de personagens específicos para gerar capítulos de audiolivros. O modelo suporta a geração de áudio longo, que é adequado para conteúdo longo. - Desenvolvimento do assistente de voz
Os desenvolvedores podem integrar o Muyan-TTS aos assistentes de voz por meio de APIs para oferecer uma experiência de interação de voz natural e personalizada. - Geração de conteúdo educacional
Escolas ou organizações de treinamento podem converter materiais didáticos em fala para gerar áudio para exercícios de audição ou explicações de cursos, adequados para o aprendizado de idiomas ou para deficientes visuais.
QA
- Quais idiomas são compatíveis com o Muyan-TTS?
No momento, somente o inglês é suportado, pois os dados de treinamento são dominados por áudio de podcast em inglês. Outros idiomas podem ser suportados no futuro, expandindo o conjunto de dados. - Como melhorar a qualidade da fala dos modelos SFT?
Use dados de fala de uma única pessoa claros e de alta qualidade para evitar ruídos de fundo. Certifique-se de que os dados de treinamento sejam consistentes com o estilo de fala da cena-alvo. - E quanto ao raciocínio lento?
Garantir o uso de suporte vLLM ambiente de GPU acelerado. Pornvidia-smi
Verifique o uso da memória para garantir que o modelo esteja carregado corretamente na GPU. - Ele é compatível com o uso comercial?
O Muyan-TTS é liberado sob a licença Apache 2.0 e tem suporte para uso comercial, sujeito aos termos da licença. - Como posso obter suporte técnico?
Os problemas podem ser enviados via GitHub (Problemas) ou participe da comunidade do Discord (Discórdia) Obtenha apoio.