Implementação oficial do TSELM: extração de alto-falante alvo usando tokens discretos e modelos de linguagem.
Para consultar a classe do modelo, verifique exp/tselm/model.py diretamente. Observe que o áudio mixado é cortado para comprimento 48080 (3,05sx 16khz) e a fala de referência é cortada para 64080 (4,05sx 16khz) para treinamento, respectivamente.
Propomos TSELM, uma nova rede de extração de falantes alvo que utiliza tokens discretos e modelos de linguagem. O TSELM utiliza múltiplas camadas discretizadas do WavLM como tokens de entrada e incorpora mecanismos de atenção cruzada para integrar informações do falante alvo. Modelos de linguagem são empregados para capturar as dependências de sequência, enquanto um HiFi-GAN escalável é usado para reconstruir o áudio dos tokens. Ao aplicar uma perda de entropia cruzada, o TSELM modela a distribuição de probabilidade dos tokens de saída, convertendo assim o complexo problema de regressão da geração de áudio em uma tarefa de classificação. Os resultados experimentais mostram que o TSELM alcança excelentes resultados na qualidade da fala e resultados comparáveis na inteligibilidade da fala.
requirements.txt
Antes de realizar experimentos, precisamos baixar os seguintes modelos pré-treinados congelados.
Nome | Link | Resultado |
---|---|---|
WavLM Grande | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-grande |
Kmeans | Baixe o ponto de verificação Kmeans | kmeans_ckpt |
HiFiGAN escalável | Baixe o ponto de verificação HiFiGAN | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
Observe que para a saída do WavLM Large, é recomendado clonar todo o repositório ou baixar todo o diretório. Para Kmeans e Scalable HiFiGAN, precisamos extraí-los após o download.
A configuração de treinamento é especificada usando o pacote hyperpyyaml
, que é basicamente uma reflexão.
A configuração para treinamento TSELM-L
pode ser encontrada em config/tselm_l.yaml. Antes do treinamento, você precisa especificar a configuração dos modelos pré-treinados congelados e outros detalhes do treinamento. Detalhes podem ser encontrados em config/tselm_l.yaml e config/README.md.
Após a configuração, você pode executar
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
especifica o caminho para o arquivo de configuração.--log
especifica o diretório de saída do log. Todos os logs serão colocados aqui.--ckpt_path
especifica o diretório do ponto de verificação. O treinamento pode ser retomado usando o mesmo caminho do ponto de verificação. Após o treinamento, o melhor modelo estará em
.
Para inferir nosso modelo no conjunto de testes libri2mix, por exemplo, você pode executar
# # Generate output audio on libri2mix testset
python inference.py -scp < path_to_libri2mix_test_scp_folder >
-config ./config/tselm_l.yaml
-ckpt < path_to_ckpt >
--output < path_to_output_folder >
-gpus cuda:0 cuda:1 cuda:2 cuda:3
-proc 8
-scp
especifica o caminho para a pasta testset libri2mix contendo aux_s1.scp
, s1.scp
e mix_clean.scp
.-config
especifica a configuração. Esta configuração precisa ter o campo model
.-ckpt
especifica o ponto de verificação do modelo.--output
especifica o diretório de saída. O áudio de saída será enviado para esta pasta. Seus nomes serão iguais aos dos arquivos .scp.-gpus
especifica o gpus disponível para executar a inferência.-proc
especifica o número total de processos para executar a inferência em paralelo. Ele usará o GPS fornecido e dividirá os processos igualmente em cada dispositivo. Os dados serão divididos igualmente para cada processo. Nosso ponto de verificação TSELM-L pode ser baixado aqui.
Você pode inferir sobre o conjunto de testes libri2mix substituindo -ckpt
pelo caminho para o ponto de verificação.
Observe que você ainda precisa baixar os modelos pré-treinados e adicionar a pasta do ponto de verificação correspondente a config/tselm_l.yaml.