+++ Notícias: O modelo NISQA foi recentemente atualizado para o NISQA v2.0. A nova versão oferece previsões multidimensionais com maior precisão e permite o treinamento e o Finetuning do modelo.
Previsão da qualidade da fala:
O NISQA é um modelo de aprendizado profundo/estrutura para previsão da qualidade da fala. Os pesos do modelo NISQA podem ser usados para prever a qualidade de uma amostra de fala que foi enviada através de um sistema de comunicação (por exemplo, telefone ou videochamada). Além da qualidade geral da fala, o NISQA também fornece previsões para as dimensões da qualidade, barulho , coloração , descontinuidade e sonoridade para fornecer mais informações sobre a causa da degradação da qualidade.
Previsão de naturalidade TTS:
Os pesos do modelo NISQA-TTS podem ser usados para estimar a naturalidade da fala sintética gerada por uma conversão de voz ou sistema de texto em fala (Siri, Alexa, etc.).
Treinamento/Finetuning:
O NISQA pode ser usado para treinar novos modelos de previsão de qualidade de fala única ou de ponta dupla com diferentes arquiteturas de aprendizado profundo, como CNN ou DFF-> ATATENÇÃO ou LSTM-> Pool de atenção ou max-pool. Os pesos do modelo fornecido também podem ser aplicados para o modelo treinado para novos dados ou para o aprendizado de transferência para uma tarefa de regressão diferente (por exemplo, estimativa de qualidade de fala aprimorada, estimativa de similaridade do alto-falante ou reconhecimento de emoções).
Conjuntos de dados da qualidade da fala:
Fornecemos um grande corpus de mais de 14.000 amostras de fala com a qualidade subjetiva da fala e os rótulos da dimensão da qualidade da fala.
Mais informações sobre a estrutura do modelo de aprendizado profundo, os conjuntos de dados de treinamento usados e as opções de treinamento, consulte o artigo NISQA e o wiki.
Para instalar os requisitos, instale o anaconda e use:
conda env create -f env.yml
Isso criará um novo ambiente com o nome "nisqa". Ative esse ambiente para continuar:
conda activate nisqa
Fornecemos exemplos para o uso do NISQA para prever a qualidade das amostras de fala, treinar um novo modelo de qualidade da fala e avaliar o desempenho de um modelo treinado de qualidade da fala.
Existem três pesos do modelo diferentes disponíveis, os pesos apropriados devem ser carregados dependendo do domínio:
| Modelo | Saída de previsão | Domínio | Nome do arquivo |
|---|---|---|---|
| Nisqa (v2.0) | Qualidade geral, barulho, coloração, descontinuidade, volume | Fala transmitida | nisqa.tar |
| Nisqa (v2.0) apenas | Somente qualidade geral (para aprendizado de Finetuning/Transfer) | Fala transmitida | nisqa_mos_only.tar |
| Nisqa-tts (v1.0) | Naturalidade | Fala sintetizada | nisqa_tts.tar |
Existem três modos disponíveis para prever a qualidade do discurso por meio de argumentos da linha de comando:
Importante: selecione " nisqa.tar " para prever a qualidade de uma amostra de fala transmitida e " nisqa_tts.tar " para prever a naturalidade de uma amostra de fala sintetizada.
Para prever a qualidade de um único uso de arquivo .wav:
python run_predict.py --mode predict_file --pretrained_model weights/nisqa.tar --deg /path/to/wav/file.wav --output_dir /path/to/dir/with/results
Para prever a qualidade de todos os arquivos .wav em uma pasta, use:
python run_predict.py --mode predict_dir --pretrained_model weights/nisqa.tar --data_dir /path/to/folder/with/wavs --num_workers 0 --bs 10 --output_dir /path/to/dir/with/results
Para prever a qualidade de todos os arquivos .wav listados em um uso da tabela CSV:
python run_predict.py --mode predict_csv --pretrained_model weights/nisqa.tar --csv_file files.csv --csv_deg column_name_of_filepaths --num_workers 0 --bs 10 --output_dir /path/to/dir/with/results
Os resultados serão impressos no console e salvos em um arquivo CSV em uma determinada pasta (opcional com -oltput_dir). Para acelerar a previsão, o número de trabalhadores e o tamanho do lote do Pytorch Dataloader podem ser aumentados (opcional com --num_workers e - -BS). No caso de arquivos estéreo -MS_CHANNEL pode ser usado para selecionar o canal de áudio.
Para usar os pesos do modelo para definir o modelo em um novo conjunto de dados, é necessário apenas um arquivo CSV com os nomes de arquivos e etiquetas. A configuração de treinamento é controlada a partir de um arquivo YAML e pode ser iniciada da seguinte forma:
python run_train.py --yaml config/finetune_nisqa.yaml
Se o corpus NISQA for usado, apenas dois argumentos precisam ser atualizados no arquivo YAML e você estará pronto para ir: o data_dir para a pasta NISQA_CORPUS extraída e o output_dir , onde os resultados devem ser armazenados.
Se você usar seu próprio conjunto de dados ou deseja carregar o modelo NISQA-TTS, algumas outras atualizações serão necessárias.
Seu arquivo CSV precisa conter pelo menos três colunas com os seguintes nomes
db com os nomes individuais do conjunto de dados para cada arquivofilepath_deg filepath para o arquivo WAV degradado, caminhos absolutos ou em relação ao data_dir (o nome da coluna CSV pode ser alterado no YAML)mos com os rótulos de destino (o nome da coluna CSV pode ser alterado no YAML) O finetune_nisqa.yaml precisa ser atualizado da seguinte forma:
data_dir Path para a pasta principal, que contém o arquivo CSV e os conjuntos de dadosoutput_dir PATH para a pasta de saída com pesos e resultados do modelo salvopretrained_model do modelo pré -treinado, nisqa_mos_only.tar para discurso natural ou nisqa_tts.tar para discurso sintetizadocsv_file NOME DO CSV COM FILEPATHS E RABELOS DE TARGENScsv_deg Nome da coluna CSV que contém filepaths (por exemplo, filepath_deg )csv_mos_train e csv_mos_val CSV NOMES DE COLUNS DO VALOR DE TARGEN (por exemplo, mos )csv_db_train e csv_db_val nomes dos conjuntos de dados que você deseja usar para treinamento e validação. Os nomes dos conjuntos de dados devem estar na coluna db .Veja os comentários no arquivo de configuração da YAML e no wiki (ainda não adicionado) para obter opções de treinamento mais avançadas. Um bom ponto de partida seria usar o NISQA Corpus para iniciar o treinamento com a configuração padrão.
O NISQA também pode ser usado como uma estrutura para treinar novos modelos de qualidade de fala com diferentes arquiteturas de aprendizado profundo. A estrutura do modelo geral é a seguinte:
Os modelos de quadros e dependência de tempo podem ser ignorados, por exemplo, para treinar um modelo LSTM sem CNN que usa a etapa de última hora para a previsão. Além disso, um segundo estágio de dependência do tempo pode ser adicionado, por exemplo, para a estrutura de atendimento LSTM-Self. A estrutura do modelo pode ser facilmente controlada através do arquivo de configuração YAML. O treinamento com a configuração padrão do modelo NISQA pode ser iniciado com o corpus NISQA da seguinte forma:
python run_train.py --yaml config/train_nisqa_cnn_sa_ap.yaml
Se o corpus NISQA for usado, apenas o data_dir precisará ser atualizado para a pasta NISQA_CORPUS descompactada e o output_dir no arquivo YAML. Caso contrário, consulte a seção Finetuning anterior para atualizar o arquivo YAML se um conjunto de dados personalizado for aplicado.
Também é possível treinar qualquer outra combinação de redes neurais, por exemplo, treinar um modelo com LSTM em vez de auto-atimento, o arquivo de configuração do Exemplo de Exemplo de Exemplo de Configuração train_nisqa_cnn_lstm_avg.yaml .
Para treinar um modelo de ponta dupla para previsão de qualidade da fala de referência completa, o arquivo de configuração train_nisqa_double_ended.yaml pode ser usado como exemplo. Veja os comentários nos arquivos YAML e no wiki (ainda não adicionado) para obter mais detalhes sobre diferentes estruturas de modelos possíveis e opções de treinamento avançadas.
Os modelos treinados podem ser avaliados em um determinado conjunto de dados da seguinte forma (também pode ser usado como um teste de conformidade da instalação do modelo):
python run_evaluate.py
Antes de executar, as opções e caminhos dentro do script python run_evaluate.py devem ser atualizados. Se o corpus NISQA for usado, apenas os caminhos data_dir e output_dir precisarão ser ajustados. Além da correlação e RMSE de Pearson, também é calculado um RMSE após o mapeamento polinomial de primeira ordem. Se um arquivo CSV com etiquetas por condição for fornecido, o script também produzirá resultados por condição e RMSE*. Opcionalmente, os diagramas de correlação podem ser plotados. O script deve retornar os mesmos resultados do artigo NISQA quando é executado no NISQA Corpus.
O NISQA Corpus inclui mais de 14.000 amostras de fala com simulados (por exemplo, codecs, perda de pacotes, ruído de fundo) e condições vivas (por exemplo, telefone celular, zoom, skype, whatsapp).
Para o link de download e mais detalhes sobre os conjuntos de dados e amostras de fala de origem usadas, consulte o NISQA Corpus Wiki.
O código NISQA está licenciado sob licença do MIT.
Os pesos do modelo (nisqa.tar, nisqa_mos_only.tar, nisqa_tts.tar) são fornecidos sob uma licença Creative Commons Attribution-NonCommercial-sharealike 4.0 International (CC BY-NC-SA 4.0)
O corpus NISQA é fornecido nos termos originais das amostras de fala e ruído usadas. Mais informações podem ser encontradas no Wiki do Nisqa Corpus.
Copyright © 2021 Gabriel Mittag
www.qu.tu-berlin.de