funasr华为昇腾服务器部署会议纪要,说话人分离的组合模(保姆级)
1:conda 命令:
conda create --name funasr python=3.10
conda activate funasr
2:检查NPU状态
npu-smi info

3:CANN 软件安装
进入CANN安装目录:
cd /usr/local/Ascend/ascend-toolkit/latest/aarch64-linux
查看版本文件:
cat ascend_toolkit_install.info

这里可以根据版本寻找对应的torch_npu兼容版本:
https://gitcode.com/Ascend/pytorch#ascend-extension-for-pytorch%E6%8F%92%E4%BB%B6
4:安装工具依赖ffmpeg
yum install ffmpeg
接下来开始正式代码流程
----------------------------------------------------------------------------------------------------------
5:安装FunASR
pip3 install funasr
pip3 install -U modelscope
pip3 install numpy==1.26.4
6:安装torch,torch_npu
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 torch_npu==2.5.1
好了,安装完成:现在执行
cpu版本:代码
from funasr import AutoModel
print("开始")
# 使用支持说话人分离的组合模型
# 混合设备配置
model = AutoModel(
model="paraformer-zh", # ASR主模型(计算密集型)
vad_model="fsmn-vad", # VAD模型(轻量级)
punc_model="ct-punc", # 标点模型(轻量级)
spk_model="cam++", # 说话人识别模型(计算密集型)
# 设备分配
device="cpu", # ASR主模型在GPU
# 优化配置
quantize=True, # 启用INT8量化
batch_size=16,
disable_update=True,
)
print("模型加载成功")
res = model.generate(input="./2speakers_example.wav", batch_size_s=300)
# 定义输出数组
results = []
# 解析结果
for result in res:
sentences = result["sentence_info"]
for sentence in sentences:
speaker_id = sentence["spk"]
text = sentence["text"]
start_time = sentence["start"]
end_time = sentence["end"]
#json 格式输出
results.append({
"speakerId": speaker_id,
"text": text,
"startTime": start_time,
"endTime": end_time
})
print(f"说话人{speaker_id}: {text} ({start_time:.2f}s-{end_time:.2f}s)")
执行:python cpu.py

npu版本:
from funasr import AutoModel
import torch
import torch_npu # 导入昇腾插件
# 自动迁移:将cuda API映射为npu API
from torch_npu.contrib import transfer_to_npu
import time
print("PyTorch版本:", torch.__version__)
print("NPU设备数量:", torch_npu.npu.device_count())
print("当前NPU设备:", torch_npu.npu.get_device_name(0))
print("Cuda available:", torch.cuda.is_available())
print("开始")
# 使用支持说话人分离的组合模型
# 混合设备配置
model = AutoModel(
model="paraformer-zh", # ASR主模型(计算密集型)
vad_model="fsmn-vad", # VAD模型(轻量级)
punc_model="ct-punc", # 标点模型(轻量级)
spk_model="cam++", # 说话人识别模型(计算密集型)
# 设备分配
device="npu:0", # ASR主模型在GPU
# 优化配置
quantize=True, # 启用INT8量化
batch_size=16,
disable_update=True,
)
for i in range(100): # 循环100次
# 输出每次循环的运行时长
print("模型加载成功")
start = time.perf_counter()
res = model.generate(input="./2speakers_example.wav", batch_size_s=300)
elapsed = time.perf_counter() - start
# 定义输出数组
results = []
# 解析结果
for result in res:
sentences = result["sentence_info"]
for sentence in sentences:
speaker_id = sentence["spk"]
text = sentence["text"]
start_time = sentence["start"]
end_time = sentence["end"]
#json 格式输出
results.append({
"speakerId": speaker_id,
"text": text,
"startTime": start_time,
"endTime": end_time
})
print(f"说话人{speaker_id}: {text} ({start_time:.2f}s-{end_time:.2f}s)")
print(f"Iteration {i+1:03d} elapsed: {elapsed:.3f} s")
执行:python npu.py


成功!
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)