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

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

综述由AI生成FunASR 离线文件转写服务支持长音频识别、标点恢复及热词定制。基于 openEuler 环境,演示了 Docker 镜像部署、服务端启动参数配置及多语言客户端(Python/C++/Java)调用方法。涵盖模型加载、SSL 证书处理、并发线程调优等实战细节,并提供自定义开发接口参考。

PgDevote发布于 2026/3/28更新于 2026/4/252 浏览

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

1. 什么是 FunASR

FunASR(Automatic Speech Recognition)离线文件转写软件包提供了一套功能完整的语音识别链路。它结合了语音端点检测(VAD)、语音识别、标点恢复等模型,能够将几十个小时的长音频或视频识别为带标点的文字,并支持字级别的时间戳输出。

服务特性包括:

  • 支持上百路并发请求进行转写
  • 输出包含标点符号和字级时间戳
  • 支持 ITN(逆文本规范化)与用户自定义热词
  • 服务端集成 ffmpeg,兼容多种音视频格式输入
  • 提供 Python、C++、Java、HTML 等多种语言客户端 SDK

推荐硬件配置如下:

  • 入门级:4 核 vCPU,8G 内存,单机约支持 32 路请求
  • 进阶级:16 核 vCPU,32G 内存,单机约支持 64 路请求
  • 高性能:64 核 vCPU,128G 内存,单机约支持 200 路请求

2. 快速上手

本次实践基于 openEuler 22.03 LTS-SP3 环境,Docker 版本为 27.4.0。

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

拉取 FunASR 运行时镜像并创建资源目录:

# 拉取镜像
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

2.3 服务端启动

进入容器后,启动 funasr-wss-server 服务。这里需要注意模型路径映射及 SSL 配置:

# 容器内操作
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 模型或开启时间戳,可替换为对应模型 ID。
  • hotwords.txt:在宿主机配置热词文件(每行格式:热词 权重),建议热词长度不超过 10,数量不超过 1k。

启动日志示例:

I20260303 11:01:52.311225  funasr-wss-server.cpp:516] asr model init finished. listen on port:10095

若需部署 8k 采样率模型,请使用以下命令调整 VAD 及 ASR 模型路径。

2.4 客户端测试

下载官方提供的测试样本:

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

以 Python 客户端为例,支持 .wav, .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

运行结果会返回识别文本及字级时间戳:

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

3. 客户端用法详解

服务部署完成后,可通过不同语言的 SDK 接入。目前主要支持 Python、C++、HTML 及 Java。

3.1 Python Client

Python 客户端最为常用,参数灵活:

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

关键参数:

  • --host: 服务 IP,默认本机。
  • --ssl: 是否开启证书校验,默认为 1。
  • --use_itn: 是否启用逆文本规范化,默认为 1。
  • --hotword: 热词文件路径。

实测对比 Whisper 模型,FunASR 在中文场景下的标点恢复和专有名词识别表现更为稳健,但也存在个别语境差异,建议结合业务数据微调。

3.2 C++ Client

进入 samples/cpp 目录进行测试:

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

返回结果为 JSON 格式,包含 text_seg 分段信息及 ts_list 时间戳列表。

3.3 HTML 网页版

浏览器打开 html/static/index.html 即可体验。注意:

  • 默认服务开启 SSL,前端地址应为 wss://IP:10095/。
  • 若遇到 TLS handshake failed,需在服务端启动时添加 --certfile 0 关闭 SSL,并将前端地址改为 ws://IP:10095/。

3.4 Java Client

Java 客户端需要编译构建:

cd funasr/runtime/java
make downjar   # 下载依赖
make build     # 编译
make runclient # 运行

命令行调用示例:

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

4. 服务端用法详解

4.1 启动与停止

启动脚本已封装了大部分参数,核心是模型路径和线程数配置。停止服务时,先查找进程 PID:

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

4.2 模型热更新与参数调整

更换模型或调整参数需重启服务。支持的模型类型包括 ModelScope 中的 ASR、VAD、PUNC 模型,也支持本地 finetune 后的模型(需重命名为 model.pb)。

常用参数调整:

  • --decoder-thread-num: 控制最大并发路数。
  • --io-thread-num: IO 线程数。
  • --model-thread-num: ONNX 推理并行线程数。

5. 定制服务部署

FunASR runtime 代码已开源,可根据需求二次开发。

  • C++ 客户端: GitHub 仓库
  • Python 客户端: GitHub 仓库
  • 通信协议: WebSocket 协议文档

若需深度定制 VAD、ASR 或 PUNC 模块,可参考底层 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);

具体实现细节请参考官方 GitHub 仓库中的 bin 目录下示例代码。

目录

  1. FunASR 离线文件转写服务开发指南
  2. 1. 什么是 FunASR
  3. 2. 快速上手
  4. 2.1 Docker 安装
  5. 下载安装脚本
  6. 执行安装命令
  7. 2.2 镜像拉取与启动
  8. 拉取镜像
  9. 创建资源文件夹
  10. 交互式启动容器
  11. 2.3 服务端启动
  12. 容器内操作
  13. 2.4 客户端测试
  14. 3. 客户端用法详解
  15. 3.1 Python Client
  16. 3.2 C++ Client
  17. 3.3 HTML 网页版
  18. 3.4 Java Client
  19. 4. 服务端用法详解
  20. 4.1 启动与停止
  21. 4.2 模型热更新与参数调整
  22. 5. 定制服务部署
  • 💰 8折买阿里云服务器限时8折了解详情
  • 💰 8折买阿里云服务器限时8折购买
  • 🦞 5分钟部署阿里云小龙虾了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 云开发 Copilot:AI 赋能的低代码开发
  • Stable Diffusion 模型原理与本地部署实战
  • Web 自动化测试入门:核心概念与百度搜索实战
  • VS Code 中 GitHub Copilot 安装后无法使用?排查与修复指南
  • Beyond Compare 安装与试用期管理指南
  • Win10 升级后 365 Copilot 弹窗频发?彻底禁用与关闭方案
  • Claude Code 与 Skills 实战:AI Coding 如何从辅助走向主力
  • Windows Git 安装配置指南:避坑与最佳实践 (2025 版)
  • OSCP 实战:获取并破解 Net-NTLMv2 哈希
  • Spring Web 模块核心架构与 RESTful API 实战
  • C++ 算法刷题实战:重组偶数、排队方案与二叉树路径和
  • OpenClaw 漏洞预警:AI 代理日志审计与风险追溯
  • 如何在 Java 中使用 protobuf-java 生成 proto 文件及序列化
  • 无人机光伏巡检:低空经济下的运维革新与实战
  • SpringBoot+Vue 库存管理系统平台设计与实现
  • 基于 MCP Server - Figma AI Bridge 实现 Figma 到前端代码自动化生成
  • 微分本质:从变化率到线性映射的 Python 可视化解析
  • 华为 OD 机试 C++ 实战:文件最小光盘备份策略
  • WebAI2API 将网页版 AI 转换为 OpenAI 兼容 API 接口
  • Visual Studio Code + Continue + Ollama 实现本地 AI 代码助手

相关免费在线工具

  • 加密/解密文本

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