Summertts é usado para comemorar os verões que se aproximam e passam de 2023
ilustrar
- Summertts é um programa de síntese de fala compilado de forma independente (TTS). Ele pode ser executado localmente sem a necessidade de rede e não há dependência adicional. A compilação com um clique pode ser usado para a síntese de fala chinesa e inglesa.
- A Biblioteca de Computação Summertts subjacente usa Eigen, que é um conjunto de funções definidas por modelos. Na maioria dos casos, ele precisa incluir apenas arquivos de cabeçalho, para que este projeto não tenha outras dependências e possa ser compilado e executado independentemente no ambiente C ++.
- Este projeto usa a biblioteca Matrix fornecida pela Eigen para implementar o operador de redes neurais e não precisa confiar em outros ambientes operacionais da NN, como Pytorch, Tensorflow, NCNN, etc.
- Este projeto é compilado e executado no Ubuntu. Outras plataformas do tipo Linux, como Android, Raspberry Pi, etc. não devem ter nenhum problema importante. Eles não foram testados no Windows e podem exigir uma pequena mudança.
- O modelo deste projeto é baseado no algoritmo de síntese de fala Vits e com base na engenharia de C ++ é realizado nele
- Este projeto é aplicável à licença do MIT. O desenvolvimento, usuário ou organização com base neste projeto, siga o MIT Licença: https://mit-license.org
Atualizar log
- 2024-12-14: Adicione informações de licença ao MIT License: https://mit-license.org
- 2023-06-16: Atualizado para adicionar um modelo de síntese de voz em inglês mais rápido: single_speaker_english_fast.bin, ou no seguinte disco de rede, a velocidade é mais rápida e a qualidade do som sintetizada não é significativamente reduzida:
Link: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h Código de extração: 2d5h - 2023-06-15: Apoie a síntese de pronúncia em inglês puro e você precisa sincronizar o código mais recente. Use o arquivo de modelo no seguinte disco de rede: single_speaker_english.bin e sintetize a pronúncia em inglês da seguinte maneira:
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
O caminho do disco de rede é o seguinte. A síntese e uso anterior de pronúncia chinesa não são afetados. Deve -se notar que esta atualização suporta apenas a síntese pura de pronúncia em inglês, e o inglês misto chinês não a suporta por enquanto.
Link: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h Código de extração: 2d5h - 2023-06-09: Um modelo de alto-falante de médio porte foi adicionado: single_speaker_mid.bin, que é um pouco mais lento que o modelo anterior, mas a qualidade do som sintetizada parece ser melhor (não sou sensível aos meus ouvidos e me sinto melhor, talvez seja um efeito psicológico: P). O código não precisa ser atualizado, só preciso baixar o single_speaker_mid.bin no disco de rede anterior e usá -lo.
- 2023-06-08: modificar test/main.cpp para apoiar a síntese de linhas de nova e texto inteiro
- 2023-06-03: FIX tem um erro na versão de ontem. Graças ao entusiasta internações Telen por fornecer testes e pistas. Somente as atualizações de código são necessárias e o modelo não precisa ser atualizado.
- 2023-06-02: A precisão da síntese de pronúncia polifônica foi bastante aprimorada. Um novo modelo é necessário no Baidu NetDisk para usar a pronúncia polifônica aprimorada e a regularização do texto (normalização do texto). O código atualizado hoje não pode usar o modelo anterior, caso contrário, ele pode levar ao travamento
- 2023-05-30: WetextProcessing integrado como módulo de regularização de texto front-end, melhorando bastante a síntese correta de pronúncia de números, moedas, temperaturas, datas, etc. Você precisa obter um novo modelo no Baidu NetDisk abaixo
- 2023-5-23: O uso de novos algoritmos melhorou bastante a velocidade de síntese de voz de alto-falantes únicos.
- 2023-4-21: criação inicial
Instruções para uso
Clonando o código deste projeto localmente, de preferência um ambiente do Ubuntu Linux
Faça o download do modelo do seguinte endereço de disco de rede Baidu e coloque-o no diretório de modelos deste projeto: Link: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vq?pwd=2d5h Código de extração: 2d5h
Depois que o arquivo do modelo é colocado, a estrutura do diretório do modelo é a seguinte:
modelos/
├── multi_speakers.bin
├── single_speaker_mid.bin
├── single_speaker_english.bin
├── single_speaker_english_fast.bin
└── single_speaker_fast.bin
Digite o diretório de compilação e execute o seguinte comando:
cmake ..
Fazer
Após a conclusão da compilação, o executor TTS_TEST será gerado no diretório de compilação.
Execute o seguinte comando para testar a síntese de fala chinesa (TTS):
./tts_test ../test.txt ../models/single_speaker_fast.bin out.wav
Execute o seguinte comando para testar a síntese de fala em inglês (TTS):
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
Nesta linha de comando:
O primeiro parâmetro é o caminho para o arquivo de texto, que contém o texto que precisa ser sintetizado para a fala.
O segundo parâmetro é o caminho para o modelo acima mencionado. Solteiro e multi no início do nome do arquivo indicam se o modelo contém um único alto -falante ou vários alto -falantes. Modelo de alto -falante único recomendado: single_speaker_fast.bin, a velocidade de síntese é mais rápida e a qualidade do som da síntese também é boa. O terceiro parâmetro é o arquivo de áudio sintetizado. Depois que o programa é executado, ele pode ser aberto com um jogador.
O programa de teste acima é implementado no teste/main.cpp, e a interface sintetizada específica é definida em incluir/synthesizertrn.h, como segue:
int16_t * inferir (const string & line, int32_t SID, float Lengthscale, int32_t & datalen)
A interface:
O primeiro parâmetro é a sequência do discurso a ser sintetizada.
O segundo parâmetro especifica que o ID do falante é usado para sintetizar a fala. Este parâmetro é válido para o modelo multi-falante e fixado em 0 para o modelo de alto-falante. O número de alto -falantes pode ser retornado pela interface int32_t getSpeakernum (), e o ID válido é 0 e o número de alto -falantes retornados à interface é reduzido em 1.
O terceiro parâmetro comprimento da escala representa a velocidade da fala da fala sintética, e quanto maior seu valor indica que a velocidade da fala é mais lenta.
O texto a ser sintetizado pode conter números e pontuações em árabe, mas como o módulo de regularização do texto (TN) deste projeto ainda é muito difícil, ele será ignorado para caracteres em inglês. Também como o módulo de regularização de texto (TN) ainda é muito áspero, a pronúncia de caracteres polifônicos em diferentes contextos é às vezes imprecisa.
Desenvolvimento de acompanhamento
- Os scripts de treinamento e conversão modelo serão abertos posteriormente
- No futuro, tentaremos treinar e fornecer aos modelos uma melhor qualidade de som
Entre em contato com o autor
- Se você tiver mais alguma dúvida ou precisar, poderá enviar um email para [email protected] ou adicionar wechat: hwang_2011. Vou tentar o meu melhor para responder.
Licença
- Este projeto é aplicável à licença do MIT. O desenvolvimento, usuário ou organização com base neste projeto, siga o MIT Licença: https://mit-license.org
grato
Este projeto usa o seguinte esquema em termos de código -fonte e algoritmos. Obrigado aqui. Se houver problemas legais, entre em contato comigo a tempo de coordená -los e resolvê -los.
- Eigen
- Vits (https://github.com/jaywalnut310/vits)
- Vits_chinese (https://github.com/uehqzxi/vits_chinese)
- Mb-istft-vits (https://github.com/masayakawamura/mb-istft-vits)
- Wetextprocessing (https://github.com/wenet-e2e/wetextprocessing)
- Glog (https://github.com/google/glog)
- Gflags (https://github.com/gflags/gflags)
- Openfst (https://github.com/kkm000/openfst)
- Personagens chineses para Pinyin (https://github.com/yangyangwithgnu/hanz2piny)
- cppjieba (https://github.com/yanyiwu/cppjieba)
- g2p_en (https://github.com/kyubyong/g2p)
- English-to-IPA (https://github.com/mphilli/english-to-ipa)
- O modelo chinês de alto-falante único deste projeto é baseado no treinamento de conjunto de dados Biaobei de código aberto, o modelo multi-falante é baseado no treinamento do conjunto de dados de código aberto Aishell3, e o modelo de alto-falante em inglês é baseado no conjunto de dados de fala LJ.