AASIST模型用于高效检测语音真伪,可识别多种语音欺骗攻击,建模时空域相关伪影以区分伪造与真实语音。
| 内容 | 版本 |
|---|---|
| 固件与驱动 | 25.3.rc1 |
| CANN | 8.2.rc1 |
| Python | 3.11.9 |
| Pytorch | 2.7.1 |
| torch_npu | 2.7.1 |
| 部署方式 | mindie镜像或裸机部署 |
### (方式一)从github下载并解压AASIST模型的源码,参考下述修改main.py文件,完成适配
git clone https://github.com/clovaai/aasist.git### (方式二)从gitcode下载并解压已适配后的AASIST模型的代码,即aasist.tar压缩包
git clone https://atomgit.com/Ascend-SACT/AASIST.gitASVspoof2019 dataset是用于第三届自动说话人验证欺骗和对策挑战的数据库,旨在评估针对 TTS、VC 和重放三种欺骗攻击的反欺骗技术。下载的ASVspoof2019数据集解压后保存在./dataset目录。
vim docker_start.sh
# 脚本内容如下
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
CONTAINER_NAME=容器名称
IMAGE=镜像ID
docker run -itd --privileged --name=$CONTAINER_NAME --ipc=host \
--device=/dev/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /usr/local/sbin:/usr/local/sbin \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /tmp:/tmp \
-v /mnt:/mnt \
-v /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime \
-v /home:/home \
-v /data:/data \
-w /home \
$IMAGE \
/bin/bash
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# 进入容器
bash docker_start.sh
docker exec -it <容器名称> bash修改源码中./main.py文件,添加torch_npu和torchair。
### 添加torch_npu和torchair
import torch_npu
import torchair
from torchair.configs.compiler_config import CompilerConfig### 修改设备选择和添加torchair配置
def main(args: argparse.Namespace) -> None:
"""
Main function.
Trains, validates, and evaluates the ASVspoof detection model.
"""
......
# set device
# device = "cuda" if torch.cuda.is_available() else "cpu"
# print("Device: {}".format(device))
# if device == "cpu":
# raise ValueError("GPU not detected!")
device = "npu:0" if torch.npu.is_available() else "cpu"
print("Device: {}".format(device))
if device == "cpu":
raise ValueError("NPU not detected!")
......
# evaluates pretrained model and exit script
if args.eval:
model.load_state_dict(
torch.load(config["model_path"], map_location=device))
# set torchair
config_torchair = CompilerConfig()
npu_backend = torchair.get_npu_backend(compiler_config=config_torchair)
model = torch.compile(model, backend=npu_backend)
### 进入./aasist目录后执行
python main.py --eval --config ./config/AASIST.conf| 适配操作 | 单图推理性能 |
|---|---|
| 开箱 | 0.310s |
| torch_npu | 0.13s |
| torch_npu+torch_air | 0.145s |