+++新闻:NISQA模型最近已更新为NISQA V2.0。新版本提供了具有更高精度的多维预测,并允许训练和填充模型。
语音质量预测:
NISQA是语音质量预测的深度学习模型/框架。 NISQA模型权重可用于预测通过通信系统发送的语音样本的质量(例如电话或视频通话)。除了整体语音质量外,NISQA还提供了质量尺寸噪音,色彩,不连续性和响度的预测,以更深入地了解质量退化的原因。
TTS自然性预测:
Nisqa-TTS模型权重可用于估计由语音转换或文本到语音系统(Siri,Alexa等)产生的合成语音的自然性。
培训/填充:
NISQA可用于训练具有不同深度学习体系结构的新型单端或双终端语音质量预测模型,例如CNN或DFF->自我注意力或LSTM->注意力 - >注意或最大化。提供的模型权重也可以应用于对新数据的训练模型或转移到不同回归任务的训练模型(例如增强语音,说话者相似性估计或情感识别的质量估计)。
语音质量数据集:
我们提供了14,000多种语音样本,并提供主观语音质量和语音质量维度标签。
有关深度学习模型结构,使用过的培训数据集以及培训选项的更多信息,请参见NISQA论文和Wiki。
要安装要求安装Anaconda,然后使用:
conda env create -f env.yml
这将创建一个名称为“ Nisqa”的新环境。激活这个环境以进行:
conda activate nisqa
我们提供了使用NISQA预测语音样本质量,训练新的语音质量模型并评估训练有素的语音质量模型的性能的示例。
有三种不同的模型权重,应根据域的不同,应加载适当的权重:
| 模型 | 预测输出 | 领域 | 文件名 |
|---|---|---|---|
| NISQA(v2.0) | 总体质量,嘈杂,着色,不连续性,响度 | 传递的演讲 | nisqa.tar |
| Nisqa(v2.0)仅MOS | 总体质量仅(用于填充/转移学习) | 传递的演讲 | nisqa_mos_only.tar |
| NISQA-TTS(v1.0) | 自然 | 综合语音 | nisqa_tts.tar |
有三种模式可通过命令行参数预测语音质量:
重要的是:选择“ nisqa.tar ”来预测传播的语音样本和“ nisqa_tts.tar ”的质量,以预测合成语音样本的自然性。
为了预测单个.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
为了预测文件夹中所有.WAV文件的质量:
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
为了预测CSV表中列出的所有.WAV文件的质量:使用:
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
结果将被打印到控制台上,并将其保存到给定文件夹中的CSV文件(可选为with -unput_dir)。为了加快预测,可以增加pytorch数据加载程序的工人数量和批处理大小(可与-num_workers and -bs进行可选)。如果是立体声文件,则可以使用MS_CHANNEL来选择音频频道。
要使用模型权重来对新数据集上的模型进行验证,只需要一个带有文件名和标签的CSV文件。培训配置由YAML文件控制,可以按以下方式启动:
python run_train.py --yaml config/finetune_nisqa.yaml
如果使用NISQA语料库,则只需要在YAML文件中更新两个参数,您就可以使用了:提取的Nisqa_corpus文件夹的data_dir和output_dir ,其中应存储结果。
如果您使用自己的数据集或想加载NISQA-TTS模型,则需要其他一些更新。
您的CSV文件需要至少包含三列,并具有以下名称
db带有每个文件的单个数据集名称filepath_deg FILEPATH到退化的WAV文件,绝对路径或相对于data_dir (可以在YAML中更改CSV列名称)mos (CSV列名称可以在YAML中更改) finetune_nisqa.yaml需要进行以下更新:
data_dir路径到达主文件夹,其中包含CSV文件和数据集output_dir路径到输出文件夹,具有保存的模型权重和结果pretrained_model模型的文件名,即nisqa_mos_only.tar自然语音或nisqa_tts.tar用于合成语音csv_file的CSV名称,带有文件膜和目标标签csv_deg CSV列名称包含filepaths(例如filepath_deg )csv_mos_train和csv_mos_val CSV列的目标值(例如mos )csv_db_train和csv_db_val名称。数据集名称必须在db列中。有关更高级的培训选项,请参见YAML配置文件和Wiki中的评论(尚未添加)。一个好的起点是使用Nisqa语料库以标准配置开始培训。
NISQA也可以用作培训具有不同深度学习体系结构的新语音质量模型的框架。一般模型结构如下:
可以跳过框架和时间依赖性模型,例如,在没有CNN的情况下训练LSTM模型,该模型使用最后一个时间步骤进行预测。还可以添加第二个时间依赖性阶段,例如,对于LSTM自我意见结构。模型结构可以通过YAML配置文件轻松控制。 NISQA模型配置的培训可以从Nisqa语料库开始,如下所示:
python run_train.py --yaml config/train_nisqa_cnn_sa_ap.yaml
如果使用NISQA语料库,则仅需要将data_dir更新为YAML文件中的未拉链NISQA_CORPUS文件夹和output_dir 。否则,如果应用自定义数据集,请参见上一个列出部分以更新YAML文件。
也可以训练神经网络的任何其他组合,例如,使用LSTM而不是自我注意力训练模型, train_nisqa_cnn_lstm_avg.yaml提供了示例配置文件。
为了训练双端模型以进行全参考语音质量预测,可以将train_nisqa_double_ended.yaml配置文件用作示例。有关不同可能的模型结构和高级培训选项的更多详细信息,请参见YAML文件和Wiki中的评论(尚未添加)。
如下所示,可以在给定数据集上评估训练有素的模型(也可以用作模型安装的一致性测试):
python run_evaluate.py
在运行之前,应更新Python脚本run_evaluate.py中的选项和路径。如果使用NISQA语料库,则仅需要调整data_dir和output_dir路径。除了Pearson的相关性和RMSE外,还计算出一阶多项式映射后的RMSE。如果提供了带有每条条件标签的CSV文件,则该脚本还将输出每条条件结果和RMSE*。可选地,可以绘制相关图。该脚本应返回与Nisqa Paper在Nisqa语料库上运行时相同的结果。
NISQA语料库包括14,000多个语音样本,这些样本具有模拟(例如编解码器,数据包损失,背景噪声)和LIVE(例如手机,Zoom,Skype,WhatsApp)条件。
有关下载链接以及数据集中的更多详细信息,并使用了源语音样本,请参见Nisqa Corpus Wiki。
NISQA代码已根据MIT许可获得许可。
型号权重(Nisqa.tar,Nisqa_mos_only.tar,nisqa_tts.tar)是在创意共享属性下提供的,nisqa_tts.tar)
Nisqa语料库是根据所用的源语音和噪声样本的原始术语提供的。更多信息可以在Nisqa Corpus Wiki中找到。
版权所有©2021 Gabriel Mittag
www.qu.tu-berlin.de