从部署到输出SRT字幕|FunASR镜像实现端到端语音识别流程
1. 引言:为什么选择 FunASR 实现语音识别?
在音视频内容生产、会议记录、教育转录等场景中,自动语音识别(ASR)已成为提升效率的关键技术。然而,搭建一个稳定、高精度且支持中文的语音识别系统,往往面临模型选型复杂、依赖管理繁琐、部署门槛高等问题。
本文将围绕“FunASR 语音识别基于 speech_ngram_lm_zh-cn 二次开发构建 by 科哥”这一镜像,详细介绍如何从零开始完成端到端的语音识别流程—— 包括环境部署、WebUI 使用、音频上传/实时录音、参数配置,最终生成可用于视频嵌入的SRT 字幕文件。
该镜像封装了 Paraformer 和 SenseVoice 等主流模型,并集成 VAD(语音活动检测)、PUNC(标点恢复)、时间戳输出等功能,配合简洁易用的 Web 界面,极大降低了使用门槛,适合开发者、内容创作者和中小企业快速落地 ASR 应用。
2. 镜像简介与核心特性
2.1 镜像基本信息
- 镜像名称:
FunASR 语音识别基于speech_ngram_lm_zh-cn 二次开发构建by科哥 - 基础框架:FunASR(阿里巴巴达摩院开源)
- 语言支持:中文为主,兼容英文、粤语、日语、韩语
- 运行模式:支持 GPU(CUDA)加速与 CPU 推理
- 输出格式:文本(.txt)、结构化数据(.json)、字幕(.srt)
2.2 核心功能亮点
| 功能 | 说明 |
|---|---|
| 多模型切换 | 支持Paraformer-Large(高精度)与SenseVoice-Small(低延迟) |
| 自动标点恢复 | 启用后自动添加句号、逗号等,提升可读性 |
| 语音活动检测(VAD) | 自动切分静音段,避免无效识别 |
| 时间戳输出 | 每句话附带起止时间,便于后期对齐 |
| SRT 字幕导出 | 直接生成标准字幕文件,适用于剪辑软件 |
| 实时录音识别 | 浏览器内直接录音并识别,无需预存音频 |
该镜像由社区开发者“科哥”进行 WebUI 二次开发,优化了交互体验,并统一打包模型资源,显著简化了部署流程。
3. 部署与启动流程
3.1 前置条件
确保服务器或本地机器满足以下要求:
- 操作系统:Linux / Windows(通过 WSL2)
- Docker 已安装并正常运行
- 显卡驱动(如使用 CUDA 加速)已正确安装
- 至少 8GB 内存(推荐 16GB+)
- Python 3.8+(用于客户端测试,非必需)
若未安装 Docker,可通过如下命令快速安装:
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
3.2 拉取并运行镜像
执行以下命令拉取镜像并启动容器:
sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13 mkdir -p ./funasr-runtime-resources/models sudo docker run -p 7860:7860 -it --privileged=true \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13参数说明:
| 参数 | 作用 |
|---|---|
-p 7860:7860 | 将容器的 7860 端口映射到宿主机,供 WebUI 访问 |
--privileged=true | 赋予容器更高权限,确保能访问设备(如麦克风) |
-v ...:/workspace/models | 挂载模型目录,实现持久化存储与复用 |
funasr-runtime-sdk-online-cpu-0.1.13 | 官方 CPU 版本镜像(也可替换为 GPU 版本) |
启动成功后,终端会显示服务监听信息,表明容器已就绪。
4. WebUI 使用指南:从上传音频到生成 SRT
4.1 访问 WebUI 界面
服务启动后,在浏览器中访问:
http://localhost:7860若远程访问,请替换localhost为服务器 IP 地址:
http://<your-server-ip>:7860页面加载完成后,即可看到清晰的中文界面。
4.2 控制面板详解
左侧为控制区,包含以下关键设置:
模型选择
- Paraformer-Large:适合追求高准确率的长音频转录
- SenseVoice-Small:响应更快,适合实时对话识别
设备选择
- CUDA:启用 GPU 加速(需 NVIDIA 显卡 + CUDA 驱动)
- CPU:通用模式,兼容性好但速度较慢
建议优先选择 CUDA 模式以获得最佳性能。
功能开关
- ✅启用标点恢复 (PUNC):强烈建议开启,提升文本可读性
- ✅启用语音活动检测 (VAD):自动跳过静音片段,提高效率
- ✅输出时间戳:必须开启才能生成 SRT 字幕
操作按钮
- 加载模型:首次进入需点击此按钮初始化模型
- 刷新:查看当前模型状态是否已加载成功(✓ 表示就绪)
4.3 方式一:上传音频文件识别
步骤 1:准备音频文件
支持格式包括:
.wav,.mp3,.m4a,.flac,.ogg,.pcm
推荐参数:
- 采样率:16kHz
- 单声道(Mono)
- 音频清晰、背景噪音小
步骤 2:上传音频
在主界面找到 “ASR 语音识别” 区域,点击“上传音频”按钮,选择本地文件上传。
步骤 3:配置识别参数
| 参数 | 推荐值 | 说明 |
|---|---|---|
| 批量大小(秒) | 300 | 最大支持 600 秒(10 分钟) |
| 识别语言 | auto | 自动检测;若确定为中文可选zh |
步骤 4:开始识别
点击“开始识别”按钮,系统将自动处理音频并返回结果。
进度条显示处理状态,通常耗时约为音频时长的 1/5~1/3(GPU 加速下)。
4.4 查看识别结果
识别完成后,下方出现三个标签页:
文本结果
显示带标点的纯文本内容,可直接复制使用。
示例:
你好,欢迎使用语音识别系统。这是一个基于 FunASR 的中文语音识别 WebUI。详细信息
返回 JSON 格式的完整结果,包含每段语音的:
- 文本内容
- 开始时间(start_time)
- 结束时间(end_time)
- 置信度(confidence)
时间戳
以列表形式展示每个句子的时间范围,格式如下:
[001] 0.000s - 2.500s (时长: 2.500s) [002] 2.500s - 5.000s (时长: 2.500s)4.5 下载 SRT 字幕文件
点击“下载 SRT”按钮,即可获得标准字幕文件,内容如下:
1 00:00:00,000 --> 00:00:02,500 你好 2 00:00:02,500 --> 00:00:05,000 欢迎使用语音识别系统该文件可直接导入 Premiere、Final Cut Pro、剪映等视频编辑工具,用于自动生成字幕轨道。
4.6 方式二:浏览器实时录音识别
步骤 1:授权麦克风权限
点击“麦克风录音”按钮,浏览器会弹出权限请求,点击“允许”。
注意:部分浏览器(如 Safari)可能不支持,建议使用 Chrome 或 Edge。
步骤 2:录制语音
对着麦克风清晰说话,点击“停止录音”结束。
系统会自动播放录音片段供确认。
步骤 3:开始识别
与上传文件相同,点击“开始识别”即可获取转写结果。
实时录音同样支持时间戳和 SRT 导出,适用于会议纪要、课堂笔记等场景。
5. 输出管理与文件结构
所有识别结果均保存在容器内的outputs/目录下,按时间戳命名子目录:
outputs/outputs_20260104123456/ ├── audio_001.wav # 原始音频副本 ├── result_001.json # JSON 格式结果 ├── text_001.txt # 纯文本结果 ├── subtitle_001.srt # SRT 字幕文件 └── log.txt # 本次识别日志由于该目录已挂载至宿主机(通过-v参数),可在宿主机直接访问这些输出文件,便于后续自动化处理或集成到其他系统中。
6. 高级配置与优化建议
6.1 模型性能对比
| 模型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| Paraformer-Large | 高精度、抗噪强 | 占用显存大、推理慢 | 录音笔转录、正式文稿 |
| SenseVoice-Small | 快速响应、低资源消耗 | 准确率略低 | 实时字幕、在线会议 |
建议:对质量要求高的任务使用 Paraformer;对实时性要求高的任务使用 SenseVoice。
6.2 提升识别准确率的实践建议
音频预处理
- 使用 Audacity 或 Adobe Audition 进行降噪
- 统一采样率为 16kHz
- 转换为单声道 WAV 格式
语言设置
- 中文普通话 → 选择
zh - 英文演讲 → 选择
en - 混合语言 → 选择
auto
- 中文普通话 → 选择
环境优化
- 关闭无关程序释放内存
- 使用 SSD 存储模型路径以加快加载速度
- 在安静环境中录音,减少回声干扰
6.3 批量处理长音频技巧
虽然单次最大支持 600 秒(10 分钟),但对于更长的音频(如两小时讲座),建议采用分段策略:
# 示例:使用 ffmpeg 切分音频 import subprocess def split_audio(input_file, chunk_duration=300): cmd = [ 'ffmpeg', '-i', input_file, '-f', 'segment', '-segment_time', str(chunk_duration), '-c', 'copy', 'chunk_%03d.wav' ] subprocess.run(cmd) # 使用后再逐个上传识别 split_audio("lecture.wav")识别完成后,可合并多个 SRT 文件,保持时间轴连续。
7. 常见问题与解决方案
| 问题 | 可能原因 | 解决方法 |
|---|---|---|
| 无法打开 WebUI | 端口未映射或防火墙阻止 | 检查-p 7860:7860是否正确,开放端口 |
| 识别结果无标点 | PUNC 功能未开启 | 在控制面板勾选“启用标点恢复” |
| 识别速度极慢 | 使用了 CPU 模式 | 更换为 CUDA 模式或改用 SenseVoice-Small |
| 上传失败 | 文件过大或格式不支持 | 压缩音频至 100MB 以内,转为 MP3/WAV |
| 录音无声 | 浏览器未授权麦克风 | 检查浏览器权限设置,刷新重试 |
| 输出乱码 | 编码异常或语言错配 | 确保选择正确语言,检查音频编码 |
8. 总结
本文系统介绍了如何利用“FunASR 语音识别基于 speech_ngram_lm_zh-cn 二次开发构建 by 科哥”镜像,完成从部署、配置、识别到输出 SRT 字幕的全流程操作。
该方案具备以下优势:
- ✅开箱即用:无需手动下载模型,一键启动
- ✅功能完整:涵盖 VAD、PUNC、时间戳、多语言识别
- ✅输出多样:支持 TXT、JSON、SRT 三种主流格式
- ✅易于扩展:可通过 API 集成到自有系统中
无论是个人用户制作视频字幕,还是企业构建智能客服语音分析平台,这套方案都能提供稳定高效的 ASR 支持。
未来可进一步探索:
- 结合 Whisper 模型做多语言混合识别
- 构建 RESTful API 接口供第三方调用
- 集成 into-video 自动生成带字幕的短视频
掌握这一整套流程,意味着你已经拥有了将语音内容转化为结构化文本的核心能力。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。