FSMN-VAD服务端口怎么改?自定义配置详细步骤
1. FSMN-VAD 离线语音端点检测控制台
FSMN-VAD 是一款基于达摩院开源模型的离线语音活动检测工具,专为中文语音场景设计。它能精准识别音频中的“有声段”,自动剔除静音或无效片段,非常适合用于语音识别前处理、长录音切分、会议记录整理等实际应用。
与依赖网络请求的在线服务不同,该方案完全在本地运行,不上传任何音频数据,保障隐私安全的同时也提升了响应速度和稳定性。通过一个简洁直观的 Web 界面,用户可以轻松上传文件或使用麦克风实时录音,并立即获得结构化的时间戳结果。
2. FSMN 语音端点检测 (VAD) 离线控制台部署指南
本镜像提供了一个基于阿里巴巴 FSMN-VAD模型构建的离线语音端点检测(Voice Activity Detection)Web 交互界面。该服务能够自动识别音频中的有效语音片段,并排除静音干扰,输出精准的时间戳。
2.1 项目核心特性
- 模型支持:采用
iic/speech_fsmn_vad_zh-cn-16k-common-pytorch通用模型。 - 功能全面:支持长音频文件上传检测及麦克风实时录音检测。
- 可视化输出:检测结果以结构化 Markdown 表格形式展示,包含片段序号、开始/结束时间及持续时长。
- 快速部署:基于 Gradio 构建,适配移动端与网页端,支持一键式脚本启动。
3. 基础环境安装
在开始修改服务端口之前,首先要确保基础运行环境已正确配置。以下是在 Ubuntu/Debian 系统上的完整依赖安装流程。
3.1 安装系统级音频处理库
为了支持多种音频格式(如 MP3、WAV),需要先安装底层解码库:
apt-get update apt-get install -y libsndfile1 ffmpeg提示:
libsndfile1负责读取.wav文件,而ffmpeg支持更多压缩格式如.mp3、.m4a等。缺少这些库可能导致上传非 WAV 格式音频时报错。
3.2 安装 Python 依赖包
接下来安装必要的 Python 库:
pip install modelscope gradio soundfile torchmodelscope:用于加载阿里达摩院的 FSMN-VAD 模型gradio:构建 Web 可视化界面soundfile:处理音频 I/Otorch:PyTorch 深度学习框架(模型运行依赖)
4. 模型下载与服务脚本编写
4.1 设置国内加速镜像源
由于原始模型托管在 ModelScope 平台,建议设置国内镜像以提升下载速度并避免超时:
export MODELSCOPE_CACHE='./models' export MODELSCOPE_ENDPOINT='https://mirrors.aliyun.com/modelscope/'这会将模型缓存到当前目录下的./models文件夹中,便于后续复用。
4.2 创建 Web 服务主程序 (web_app.py)
创建名为web_app.py的 Python 脚本,内容如下:
import os import gradio as gr from modelscope.pipelines import pipeline from modelscope.utils.constant import Tasks # 设置模型缓存路径 os.environ['MODELSCOPE_CACHE'] = './models' # 初始化 VAD 模型(仅加载一次) print("正在加载 FSMN-VAD 模型...") vad_pipeline = pipeline( task=Tasks.voice_activity_detection, model='iic/speech_fsmn_vad_zh-cn-16k-common-pytorch' ) print("模型加载完成!") def process_vad(audio_file): if audio_file is None: return "请先上传音频或进行录音" try: result = vad_pipeline(audio_file) # 处理返回结果(兼容列表嵌套结构) if isinstance(result, list) and len(result) > 0: segments = result[0].get('value', []) else: return "模型返回格式异常,请检查输入音频" if not segments: return "未检测到有效语音段落" # 格式化输出表格 formatted_res = "### 🎤 检测到的语音片段 (单位: 秒)\n\n" formatted_res += "| 片段序号 | 开始时间 | 结束时间 | 时长 |\n" formatted_res += "| :--- | :--- | :--- | :--- |\n" for i, seg in enumerate(segments): start_sec = seg[0] / 1000.0 # 毫秒转秒 end_sec = seg[1] / 1000.0 duration = end_sec - start_sec formatted_res += f"| {i+1} | {start_sec:.3f}s | {end_sec:.3f}s | {duration:.3f}s |\n" return formatted_res except Exception as e: return f"检测失败: {str(e)}" # 构建 Gradio 界面 with gr.Blocks(title="FSMN-VAD 语音检测") as demo: gr.Markdown("# 🎙️ FSMN-VAD 离线语音端点检测") with gr.Row(): with gr.Column(): audio_input = gr.Audio( label="上传音频或录音", type="filepath", sources=["upload", "microphone"] ) run_btn = gr.Button("开始检测", variant="primary") with gr.Column(): output_text = gr.Markdown(label="检测结果") # 绑定按钮事件 run_btn.click(fn=process_vad, inputs=audio_input, outputs=output_text) if __name__ == "__main__": demo.launch(server_name="127.0.0.1", server_port=6006)5. 如何修改默认服务端口?
现在我们进入本文的核心问题:如何更改 FSMN-VAD 服务的默认端口?
目前代码中写死的是server_port=6006,如果你想换成其他端口(比如 8080、7860 或任意可用端口),只需修改最后一行即可。
5.1 修改端口号的方法
找到脚本末尾的这行代码:
demo.launch(server_name="127.0.0.1", server_port=6006)将其改为:
demo.launch(server_name="127.0.0.1", server_port=8080)✅ 示例:将端口从
6006改为8080
你也可以尝试其他常用端口,例如:
7860(Gradio 默认)50009000
只要目标端口未被占用,服务就能正常启动。
5.2 验证端口是否可用
在启动前,建议先检查指定端口是否已被占用:
lsof -i :8080如果无输出,则表示端口空闲;若有进程占用,可选择终止或换一个端口。
5.3 启动服务并访问新端口
保存修改后的web_app.py,然后运行:
python web_app.py成功后你会看到类似提示:
Running on local URL: http://127.0.0.1:8080说明服务已在新端口上运行。
6. 远程访问配置(SSH 隧道映射)
虽然服务在容器内监听127.0.0.1,但外部无法直接访问。要实现远程测试,必须通过 SSH 隧道将本地端口转发到你的电脑。
6.1 执行端口映射命令
在本地电脑终端执行以下命令(替换对应信息):
ssh -L 8080:127.0.0.1:8080 -p [服务器SSH端口] root@[服务器IP地址]例如:
ssh -L 8080:127.0.0.1:8080 -p 22 root@47.98.123.45🔍 参数说明:
-L:表示本地端口转发8080:127.0.0.1:8080:将本地 8080 映射到远程主机的 8080-p:指定 SSH 连接端口(通常是 22)root@xxx:登录用户名和服务器地址
连接成功后,隧道即建立。
6.2 浏览器访问测试
打开浏览器,访问:
http://127.0.0.1:8080你应该能看到 FSMN-VAD 的 Web 界面。
功能测试步骤:
- 上传测试:拖入一段含停顿的
.wav或.mp3文件,点击“开始检测” - 录音测试:点击麦克风图标录制几句话,中间加入静音间隔,观察是否准确分割
- 查看结果:右侧会生成清晰的 Markdown 表格,列出每个语音段的起止时间和长度
7. 常见问题与解决方案
7.1 修改端口后无法访问?
可能原因及解决方法:
| 问题 | 原因分析 | 解决方案 |
|---|---|---|
| 页面打不开 | 端口未开放或被防火墙拦截 | 使用 `netstat -tuln |
| SSH 隧道失败 | 端口映射地址错误 | 确保server_name="127.0.0.1",不可设为0.0.0.0 |
| 提示“Connection refused” | 目标端口无服务运行 | 检查 Python 脚本是否正在运行 |
⚠️ 注意:不要将
server_name设为"0.0.0.0",否则存在安全风险,且部分平台禁止绑定公网 IP。
7.2 音频解析失败怎么办?
常见报错:Could not read audio或Unsupported format
请确认:
- 已安装
ffmpeg - 上传的音频采样率为 16kHz(推荐)
- 尽量使用
.wav格式进行首次测试
7.3 模型下载慢或失败?
建议始终设置国内镜像源:
export MODELSCOPE_ENDPOINT='https://mirrors.aliyun.com/modelscope/'首次运行时模型会自动下载并缓存至./models目录,之后无需重复下载。
8. 总结
本文详细介绍了如何部署基于 FSMN-VAD 模型的离线语音端点检测服务,并重点解答了“如何修改默认服务端口”这一高频需求。
我们一步步完成了:
- 环境依赖安装
- 模型加速配置
- Web 服务脚本编写
- 关键操作:修改
server_port参数来自定义端口 - SSH 隧道远程访问配置
- 常见问题排查
无论你是想集成到现有系统、避免端口冲突,还是希望多实例并行运行多个 AI 工具,掌握端口自定义配置都是必不可少的基础技能。
现在你可以自由地将 FSMN-VAD 部署在你喜欢的端口上,打造属于自己的本地语音预处理工作站!
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。