跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
编程语言AIjava算法

FunASR 离线文件转写服务部署与开发实战

综述由AI生成FunASR 离线文件转写服务提供完整的语音识别链路,支持长音频视频转写及标点恢复。演示了通过 Docker 快速部署服务端的方法,涵盖模型加载、热词配置及 SSL 设置。同时详解了 Python、C++、Java 等多种客户端的调用方式与参数说明,并提供了自定义开发接口示例,帮助开发者快速集成语音识别能力到业务系统中。

1951018925发布于 2026/4/5更新于 2026/4/263 浏览

FunASR 离线文件转写服务开发指南

1. 简介

FunASR(Automatic Speech Recognition)离线文件转写软件包提供了一套功能完整的语音识别链路。它集成了语音端点检测(VAD)、语音识别、标点预测等模型,能够将长音频或视频转换为带标点的文字,并支持字级别时间戳输出。服务端集成 ffmpeg,兼容多种音视频格式,支持上百路并发请求。

推荐硬件配置如下:

  • 基础型:4 核 vCPU,8G 内存,单机约支持 32 路请求
  • 标准型:16 核 vCPU,32G 内存,单机约支持 64 路请求
  • 高性能型:64 核 vCPU,128G 内存,单机约支持 200 路请求

2. 快速上手

2.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.2 镜像拉取与启动

创建资源目录并拉取镜像:

mkdir -p ./funasr-runtime-resources/models

交互式启动容器:

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
2.3 服务端启动

进入容器后启动服务程序。默认开启 SSL,如需关闭可添加 --certfile 0 参数。

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 &

注意:

  • 热词文件格式为每行一个,例如 阿里巴巴 20。建议热词长度不超过 10,个数不超过 1k,权重 1~100。
  • 若需使用 SenseVoiceSmall 模型或开启时间戳,请调整 --model-dir 参数。
  • 日志中若出现 Unable to open hotwords file 且未设置热词,可忽略该警告。

3. 客户端用法详解

部署完成后,可通过 Python、C++、Java 或 HTML 网页版进行调用。

3.1 Python 客户端

下载测试工具包:

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

运行示例:

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

常用参数说明:

  • --host: 服务 IP,默认为本机
  • --port: 端口号,默认 10095
  • --mode: 模式,offline 表示离线文件转写
  • --audio_in: 音频文件路径或 wav.scp 列表
  • --ssl: 是否开启 SSL 校验,默认 1
  • --use_itn: 是否启用数字文本转换,默认 1

若遇到 ModuleNotFoundError: No module named 'websockets',请安装依赖:

pip install websockets==13.1
3.2 C++ 客户端

进入 samples/cpp 目录执行:

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

返回结果为 JSON 格式,包含识别文本及时间戳信息。

3.3 HTML 网页版

浏览器打开 html/static/index.html 即可体验。支持麦克风输入与文件上传。需填写 ASR 服务地址,如 ws://IP:10095/。若遇到 TLS 握手失败,请参照服务端部分关闭 SSL 证书。

3.4 Java 客户端
FunasrWsClient --host localhost --port 10095 --audio_in ./asr_example.wav --mode offline

Linux/Unix 环境下构建步骤:

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

4. 服务端用法详解

4.1 启动参数

run_server.sh 支持灵活配置,核心参数包括:

  • --model-dir: 模型 ID 或本地路径
  • --port: 监听端口,默认 10095
  • --decoder-thread-num: 解码线程数,影响最大并发路数
  • --certfile / --keyfile: SSL 证书路径,设为 0 可关闭 SSL
  • --hotword: 全局热词文件路径
4.2 停止服务
ps -x | grep funasr-wss-server
kill -9 <PID>
4.3 热更新与定制

更换模型或参数需先停止服务,修改配置后重启。若使用 ModelScope 模型 ID,服务启动时会自动下载。若使用微调后的模型(如 .pb 文件),需重命名为 model.pb 并指定本地路径。

5. 自定义服务部署

FunASR runtime 代码已开源,支持二次开发。主要接口分为 VAD、ASR、PUNC 三个模块,均基于 ONNX Runtime。

VAD 示例:

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

ASR 示例:

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

PUNC 示例:

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

详细实现可参考 GitHub 仓库中的示例代码。

目录

  1. FunASR 离线文件转写服务开发指南
  2. 1. 简介
  3. 2. 快速上手
  4. 2.1 Docker 安装
  5. 下载安装脚本
  6. 执行安装命令
  7. 2.2 镜像拉取与启动
  8. 2.3 服务端启动
  9. 3. 客户端用法详解
  10. 3.1 Python 客户端
  11. 3.2 C++ 客户端
  12. 3.3 HTML 网页版
  13. 3.4 Java 客户端
  14. 4. 服务端用法详解
  15. 4.1 启动参数
  16. 4.2 停止服务
  17. 4.3 热更新与定制
  18. 5. 自定义服务部署
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 递归算法实战:汉诺塔与合并有序链表详解
  • 十年前端技术之旅回顾:从 jQuery 到 Vue 的演进
  • CCF-GESP 2025 年 12 月 C++ 二级认证真题解析
  • OpenClaw 安装与飞书机器人接入指南
  • LangChain 输出解析器与 LCEL 链构建详解
  • Java 环境配置与首个程序实战:JDK + IDEA 从零搭建
  • LazyLLM 多 Agent 应用实战:源码部署与 Web 调试指南
  • Web 安全攻防总结与核心知识点梳理
  • AI 绘画用户评价自动分类与改进报告生成
  • OpenCV Canny 边缘检测算法原理与 C++ 实现
  • Windows 下 OpenClaw 开源 AI 代理框架部署指南
  • Spring Boot 与 jQuery 前后端分离图书管理系统实战
  • JavaSE 网络原理:UDP 与 TCP 协议核心机制
  • RAG 架构工程实践:分块策略、混合检索与重排序
  • FPGA 入门指南:Vivado 与 Vitis 2023.1 软件安装
  • 基于树莓派4B与Motion搭建轻量级本地安防监控系统
  • SecureCRT 9.1.0 安装与配置教程
  • HTML5 Web Workers 详解:提升网页性能与响应速度的关键
  • DeepSeek 深度使用指南:提示词技巧与本地知识库搭建
  • HTML Popover API:原生属性实现浮层交互,告别 JS 组件库依赖

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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