跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言AI大前端java算法

FunASR 离线文件转写服务开发指南(实践篇)

FunASR 离线文件转写服务提供完整的语音识别链路,支持长音频视频转写及多路并发。基于 openEuler 与 Docker 环境,详解服务端启动、模型参数配置及 Python/C++/Java/HTML 客户端调用方法。包含热词定制、SSL 证书处理及常见报错排查,并对比了 Whisper 识别效果,验证了 FunASR 在中文场景下的准确率与稳定性。

剑仙发布于 2026/3/22更新于 2026/7/2032 浏览

FunASR 离线文件转写服务开发指南(实践篇)

FunASR(Automatic Speech Recognition)离线文件转写软件包提供了一套功能强大的语音识别服务。它拥有完整的语音识别链路,结合语音端点检测、语音识别及标点模型,能将长音频与视频识别为带标点的文字,并支持字级别时间戳、ITN 及用户自定义热词。服务端集成 ffmpeg,支持多种音视频格式输入,且具备高并发处理能力。

部署环境

本文基于以下环境进行实践:

  • 系统: openEuler 22.03 (LTS-SP3)
  • Docker: version 27.4.0

快速上手

1. Docker 安装

推荐使用官方脚本安装 Docker:

# 下载安装脚本
curl -O https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/shell/install_docker.sh
# 执行安装命令
sudo bash install_docker.sh

2. 镜像拉取与启动

拉取 FunASR 运行时 SDK CPU 版本镜像,并创建资源目录:

# 拉取镜像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.7

# 创建资源文件夹
mkdir -p ./funasr-runtime-resources/models

# 交互式启动容器
sudo docker run -p 10095:10095 -it --privileged=true \
-v $PWD/funasr-runtime-resources/models:/workspace/models \
registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.7

3. 服务端启动

进入容器后,使用 run_server.sh 启动服务。注意参数配置,特别是模型路径和热词文件。

cd FunASR/runtime
nohup bash run_server.sh \
--download-model-dir /workspace/models \
--vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-onnx \
--model-dir damo/speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx \
--punc-dir damo/punc_ct-transformer_cn-en-common-vocab471067-large-onnx \
--lm-dir damo/speech_ngram_lm_zh-cn-ai-wesp-fst \
--itn-dir thuduj12/fst_itn_zh \
--hotword /workspace/models/hotwords.txt > log.txt 2>&1 &

参数说明:

  • --certfile 0: 如需关闭 SSL,请添加此参数。
  • --model-dir: 可替换为 SenseVoiceSmall-onnx 或 Paraformer 不同变体以支持时间戳或 NN 热词。
  • --hotword: 热词文件格式为 (如:阿里巴巴 20),建议长度不超过 10,个数不超过 1k。
热词 权重

启动日志中若出现 Unable to open hotwords file 但您未设置热词,可忽略该警告。成功加载模型后,会显示 listen on port:10095。

注意: 如果希望部署 8k 采样率模型,请将 --vad-dir 和 --model-dir 等参数调整为对应的 8k 版本 ID。

客户端测试与使用

下载官方提供的 samples 进行测试:

wget https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/funasr_samples.tar.gz

Python 客户端

Python 是最常用的测试语言,支持 .wav, .pcm, .mp3 及 .mp4 等多种格式。

python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav"

常见报错处理: 如果遇到 ModuleNotFoundError: No module named 'websockets',请安装依赖:

pip install websockets==13.1

运行结果示例: 输出包含识别文本及字级时间戳列表。例如:

{
  "text": "欢迎大家来体验达摩院推出的语音识别模型。",
  "timestamp": [[880,1120],[1120,1380],...]
}

C++ 客户端

进入 samples/cpp 目录编译运行:

./funasr-wss-client --server-ip 127.0.0.1 --port 10095 --wav-path ../audio/asr_example.wav

返回结果为 JSON 格式,包含 text 字段及详细的 stamp_sents 信息。

HTML 网页版

浏览器打开 html/static/index.html 即可体验。默认需输入 WebSocket 地址 wss://IP:10095/。

SSL 证书问题: 如果浏览器提示 TLS 握手失败,需关闭服务端的 SSL 校验:

  1. 重启服务时增加参数 --certfile 0。
  2. 前端页面将地址改为 ws://IP:10095/。

Java 客户端

Java 客户端需要构建环境。在 Linux/Unix 下:

cd funasr/runtime/java
make downjar
make buildwebsocket
make runclient

运行命令示例:

FunasrWsClient --host localhost --port 10095 --audio_in ./asr_example.wav --mode offline

服务端管理

启动与停止

启动服务后,可通过日志查看状态。停止服务时,先查找进程 PID:

ps -x | grep funasr-wss-server
kill -9 <PID>

参数调整

修改模型或端口等参数需重启服务。若指定 ModelScope 的 model ID,服务会自动下载对应模型(如 FSMN-VAD, Paraformer, CT-Transformer 等)。如需部署微调后的模型,请将模型重命名为 model.pb 并替换原文件路径。

定制开发参考

FunASR Runtime 代码已开源,支持二次开发。以下是核心 API 调用逻辑:

VAD 模型

FUNASR_HANDLE vad_hanlde = FsmnVadInit(model_path, thread_num);
FUNASR_RESULT result = FsmnVadInfer(vad_hanlde, wav_file.c_str(), NULL, 16000);

ASR 模型

FUNASR_HANDLE asr_hanlde = FunOfflineInit(model_path, thread_num);
FUNASR_RESULT result = FunOfflineInfer(asr_hanlde, wav_file.c_str(), RASR_NONE, NULL, 16000);

PUNC 模型

FUNASR_HANDLE punc_hanlde = CTTransformerInit(model_path, thread_num);
FUNASR_RESULT result = CTTransformerInfer(punc_hanlde, txt_str.c_str(), RASR_NONE, NULL);

效果对比

在实际测试中,FunASR 对中文长音频的识别表现稳定。我们对比了 Whisper 与 FunASR 的效果,FunASR 在特定中文场景下的标点还原和专有名词识别上具有优势,但也存在少量误识情况。整体而言,对于生产环境部署,FunASR 提供了较好的准确率与性能平衡。

文章配图

文章配图

目录

  1. FunASR 离线文件转写服务开发指南(实践篇)
  2. 部署环境
  3. 快速上手
  4. 1. Docker 安装
  5. 下载安装脚本
  6. 执行安装命令
  7. 2. 镜像拉取与启动
  8. 拉取镜像
  9. 创建资源文件夹
  10. 交互式启动容器
  11. 3. 服务端启动
  12. 客户端测试与使用
  13. Python 客户端
  14. C++ 客户端
  15. HTML 网页版
  16. Java 客户端
  17. 服务端管理
  18. 启动与停止
  19. 参数调整
  20. 定制开发参考
  21. 效果对比
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ADI SHARC C/C++ 编译器指令优化
  • 前端技术趋势:React 18 并发模式与 Server Components
  • FastGPT 结合 MCP 协议构建工具增强型 AI Agent
  • C++11 详解:列表初始化与右值引用移动语义
  • HTML Popover API:原生浮层交互的零 JS 解决方案
  • MCP 插件实战:以 browser-tools-mcp 为例集成浏览器调试工具
  • 基于 Stable Diffusion 与 YOLOv5 的智能安防原型搭建实战
  • Spring AI 实战:Spring Boot + OpenAI 集成 Chroma 向量数据库
  • C++ 类与对象:封装特性实现与实战应用
  • GPT-o1 发布后国内大模型发展现状与挑战分析
  • Python 爬虫实战:爬取网易云热歌榜歌曲
  • 算法优选:位运算详解与实战
  • 宇树机器人 G1 二次开发:FAST-LIO 建图与 RViz 配置
  • 鸿蒙独立生态的三重挑战:兼容性、开发者意愿与全球市场突围
  • 大模型落地为何优先选择知识库场景
  • Neo4j Aura Agent 正式上线:图谱驱动的智能体构建新范式
  • 大语言模型(LLM)学习路线与初学者入门指南
  • 腾讯混元图像 3.0 图生图模型开源,LMArena 评测跻身全球第一梯队
  • 顺序文件的基本概念与查找算法
  • 用初中数学理解 LLM 工作原理

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online