1. 研究背景

在会议场景中,我们通常需要做会议纪要,并且最好是实时会议纪要,也就是领导一边讲话,系统应该一边出文字,同时可以做到区分说话人,并且是无需提前注册声纹信息,使用SPK标识。

Fun-ASR-Nano这个模型更好可以做到这些,可以实时转写为文字,然后区分说话人使用的是另外的一个模型,我们只需要安装FunASR就可以方便使用这些模型,这个依赖中已经帮我们集成好了语音识别模型和声纹模型。

2. 硬件和软件

2.1 硬件

显卡使用的是英伟达的A40显卡,这里只租了1/6张显卡,也就是8GB显存,这也是跑这个项目要求的最低显存。

这里选择vultr服务器,因为下载资料更快。点击这里跳转到服务器。

首先进入到vultr控制台中,找到左侧的Complute菜单中的Instances,然后点击右上角的Create Instance

image-20260528172543636

image-20260528172807026

点击进入之后,再点击Cloud GPU,如下图。

image-20260528173032569

然后选择一个NVIDIA显卡,这里选择A40的显卡,并且为了节省资金,只选择了8GB的显卡,也就是1/6A40显卡。

image-20260528173348195

硬件情况是8GB显存,20GB运行内存,4核心CPU360GB硬盘。

2.2 软件

上面选择完了硬件,现在选择一下软件方面的。

点击下面的Step 2 Configure Software & Deploy Instance

image-20260528173643871

然后选择操作系统,这里选择Ubuntu 24.04

image-20260528173738282

这里一定要注意要选择支持GPU的系统,也就是图标上有GPU标识的系统,并且系统版本也要选择有GPU Enabled标识的。入上图所示。

最后要记得把Automatic Backups关闭,否则扣费很高。

image-20260528174044598

3. 环境安装

3.1 安装CUDA

vultr默认只安装了显卡驱动,我们需要根据显卡驱动来安装对应版本的CUDA

首先查看NVIDIA驱动,可以使用下面的命令。

nvidia-smi

可以看到如下截图

image-20260528174358097

这里可以看到最高支持12.4版本的CUDA。那么这里我们就下载这个版本的CUDA

可以访问官方网站下载,下面直接给出下载和安装命令。

wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda_12.4.1_550.54.15_linux.run
chmod +x cuda_12.4.1_550.54.15_linux.run
./cuda_12.4.1_550.54.15_linux.run

安装的时候把显卡驱动去掉,其它的默认即可。

安装完成之后还要记得配置系统环境变量。

vim ~/.bashrc

在文本的末尾添加下面的内容。

export PATH=/usr/local/cuda-12.4/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH

最后还要记得执行下面命令或者重新进入ssh

source ~/.bashrc

检查是否配置成功。

nvcc -V

3.2 安装Python环境

这里使用uv作为python项目管理工具,你也可以用Minconda

安装uv,使用下面命令

curl -LsSf https://astral.sh/uv/install.sh | sh

安装完成之后也一样需要执行下面命令才能生效。

source ~/.bashrc

最后检查一下是否安装配置成功,执行下面的命令。

uv --version

创建指定python版本的项目

mkdir asr && cd asr && uv venv --python 3.12 && source .venv/bin/activate

3.3 源码编译安装FunASR

这里使用源码编译方式安装FunASR,先拉取源码。

git clone https://github.com/modelscope/FunASR.git

然后执行下面命令安装。

uv pip install -e ./

安装完成之后验证一下。

uv pip show funasr

3.4 安装vLLM

这里一定要主要安装的版本不能过低也不能过高,经过验证0.12.0这个版本是可以的,并且对应的torch版本是2.9.0

执行下面的命令安装vllm

uv pip install vllm==0.12.0

验证一下是否安装成功。

uv pip show vllm

4. 启动接口

可以参考这篇文章。

uv run python serve_realtime_ws.py \
    --port 10095 \
    --model FunAudioLLM/Fun-ASR-Nano-2512 \
    --hub hf \
    --device cuda:0 \
    --decode-interval 0.48 \
    --hotword-file 热词列表 \
    --language 中文 \
    --dtype bf16 \
    --tensor-parallel-size 1 \
    --gpu-memory-utilization 0.8 \
    --max-model-len 2048

上面这个是在一张显卡中运行的,如果有多张显卡,就修改tensor-parallel-size的值,想要用几张显卡就填写数字几。

如果显存不够,可以修改gpu-memory-utilization的值,和修改max-model-len的值。

5. 测试效果

上面启动了服务端接口后就可以在本地启动客户端测试了,有两种方式,一种是通过浏览器来测试,另外一种是直接跑客户端python代码来测试。这里选择第一种,使用浏览器方式来测试。

由于我是部署到服务器中的,并且并没有使用SSL证书,如果想要浏览器可以实时获取音频流数据,就必须将服务器地址映射到本地,也就是穿透到本地,这样访问接口,就可以直接使用localhost或者127.0.0.1

下面是穿透的命令。

ssh -CNg -L 10095:127.0.0.1:10095 root@your_ip 

如果你修改过ssh的端口,可以在上面的命令后添加参数-p your_port

具体演示效果,可以看我之前录制的发布到我B站账号的视频,点击这里跳转到演示视频处。

image-20260528182113007

Q.E.D.


热爱生活,热爱程序