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

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

FunASR 离线文件转写服务提供完整的语音识别链路,支持长音频视频转写及标点恢复。介绍基于 Docker 的快速部署流程,包括镜像拉取、服务端启动参数配置及热词加载方法。涵盖 Python、C++、Java 等多种语言客户端的使用示例与命令参数说明,并包含服务端模型替换、SSL 证书配置及自定义开发接口参考,适用于需要集成语音识别能力的开发者环境搭建与测试验证。

CoderByte发布于 2026/4/8更新于 2026/6/626 浏览

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

1. 简介

FunASR (Automatic Speech Recognition) 离线文件转写软件包提供了一款功能强大的语音离线文件转写服务。拥有完整的语音识别链路,结合了语音端点检测、语音识别、标点等模型,可以将几十个小时的长音频与视频识别成带标点的文字,而且支持上百路请求同时进行转写。输出为带标点的文字,含有字级别时间戳,支持 ITN 与用户自定义热词等。服务端集成有 ffmpeg,支持各种音视频格式输入。软件包提供有 html、python、c++、java 与 c#等多种编程语言客户端,用户可以直接使用与进一步开发。

推荐配置:

  • 配置 1: (X86,计算型),4 核 vCPU,内存 8G,单机可以支持大约 32 路的请求
  • 配置 2: (X86,计算型),16 核 vCPU,内存 32G,单机可以支持大约 64 路的请求
  • 配置 3: (X86,计算型),64 核 vCPU,内存 128G,单机可以支持大约 200 路的请求

2. 快速上手

2.1 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 软件包的 docker 镜像:

# 拉取镜像
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 服务端启动

docker 启动之后,进入到 docker 里边启动 funasr-wss-server 服务程序:

# 容器内的操作
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 &

如果您想关闭 ssl,增加参数:--certfile 0。 如果您想使用 SenseVoiceSmall 模型、时间戳、nn 热词模型进行部署,请设置 --model-dir 为对应模型。 如果您想在服务端加载热词,请在宿主机文件 配置热词(docker 映射地址为 ):每行一个热词,格式 (热词 权重):阿里巴巴 20。

./funasr-runtime-resources/models/hotwords.txt
/workspace/models/hotwords.txt

服务启动日志示例:

I20260303 11:01:52.311225 56 funasr-wss-server.cpp:516] asr model init finished. listen on port:10095
2.4 客户端测试与使用

下载客户端测试工具目录 samples:

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

以 Python 语言客户端为例,支持多种音频格式输入(.wav, .pcm, .mp3 等),也支持视频输入 (.mp4 等),以及多文件列表 wav.scp 输入。

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

3. 客户端用法详解

目前分别支持以下几种编程语言客户端:Python, CPP, HTML 网页版本,Java。

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

命令参数说明:

  • --host: FunASR runtime-SDK 服务部署机器 ip,默认为本机 ip(127.0.0.1)
  • --port: 10095 部署端口号
  • --mode: offline 表示离线文件转写
  • --audio_in: 需要进行转写的音频文件,支持文件路径,文件列表 wav.scp
  • --thread_num: 设置并发发送线程数,默认为 1
  • --ssl: 设置是否开启 ssl 证书校验,默认 1 开启,设置为 0 关闭
  • --hotword: 热词文件,每行一个热词,格式 (热词 权重)
  • --use_itn: 设置是否使用 itn,默认 1 开启,设置为 0 关闭
3.2 C++ Client

进入 samples/cpp 目录后,可以用 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 服务地址 wss://IP:10095/。 若遇到 TLS handshake failed 错误,需关闭 SSL 重新启动 funasr 服务(增加参数 --certfile 0),并将地址改为 ws://IP:10095/。

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

详细可以参考文档。构建环境需安装 Java 环境(如 Ubuntu 下 apt-get install openjdk-11-jdk)。

4. 服务端用法详解

4.1 启动 FunASR 服务
cd /workspace/FunASR/runtime
nohup bash run_server.sh \
--download-model-dir /workspace/models \
--model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx \
--vad-dir damo/speech_fsmn_vad_zh-cn-16k-common-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 \
--certfile ../../../ssl_key/server.crt \
--keyfile ../../../ssl_key/server.key \
--hotword ../../hotwords.txt > log.txt 2>&1 &

run_server.sh 命令参数介绍:

  • --download-model-dir: 模型下载地址,通过设置 model ID 从 Modelscope 下载模型
  • --model-dir: modelscope model ID 或者本地模型路径
  • --port: 服务端监听的端口号,默认为 10095
  • --decoder-thread-num: 服务端线程池个数 (支持的最大并发路数)
  • --io-thread-num: 服务端启动的 IO 线程数
  • --certfile: ssl 的证书文件,默认为 ../../../ssl_key/server.crt,如果需要关闭 ssl,参数设置为 0
  • --hotword: 热词文件路径,每行一个热词,格式:热词 权重
4.2 关闭 FunASR 服务
ps -x | grep funasr-wss-server
kill -9 PID
4.3 修改模型及其他参数

替换正在使用的模型或者其他参数,需先关闭 FunASR 服务,修改需要替换的参数,并重新启动 FunASR 服务。其中模型需为 ModelScope 中的 ASR/VAD/PUNC 模型,或者从 ModelScope 中模型 finetune 后的模型。 例如替换 ASR 模型为 damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx,则如下设置参数 --model-dir。 如果希望部署您 finetune 后的模型,需要手动将模型重命名为 model.pb,并将原 modelscope 中模型 model.pb 替换掉,将路径指定为 model_dir 即可。

5. 如何定制服务部署

FunASR-runtime 的代码已开源,如果服务端和客户端不能很好的满足您的需求,您可以根据自己的需求进行进一步的开发:

  • C++ 客户端:https://github.com/alibaba-damo-academy/FunASR/tree/main/runtime/websocket
  • Python 客户端:https://github.com/alibaba-damo-academy/FunASR/tree/main/runtime/python/websocket
  • 自定义客户端:参考 websocket 通信协议。

C++ 服务端开发接口示例:

  • VAD: FsmnVadInit, FsmnVadInfer
  • ASR: FunOfflineInit, FunOfflineInfer
  • PUNC: CTTransformerInit, CTTransformerInfer

目录

  1. FunASR 离线文件转写服务开发指南
  2. 1. 简介
  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 启动 FunASR 服务
  21. 4.2 关闭 FunASR 服务
  22. 4.3 修改模型及其他参数
  23. 5. 如何定制服务部署
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

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

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

更多推荐文章

查看全部
  • 在 Cursor 中使用 MCP 服务配置与实战
  • Python 核心应用领域与职业发展方向详解
  • 基于闲置 Mac Mini 部署 OpenClaw 打造私人金融 AI 助手
  • 基于 Java+SpringBoot+SSM 的音乐分享与交流平台设计与实现
  • Python FastAPI 快速入门与实战指南
  • Rust 与 WebAssembly 实战:浏览器与 Node.js 高性能应用
  • 金仓数据库 KingbaseES:多模融合架构与全场景替代方案
  • 异步编程实战:构建高性能Python网络应用
  • AI 写作工具全流程应用指南:从开题到答辩
  • LangChain Agent 基础入门:LLM 外部工具调用
  • 旋转位置编码 RoPE:从 2D 到 nD 的扩展与原理
  • 基于统一 API 的大模型选型策略与成本优化实践
  • Qwen3 与 Qwen Agent 智能体开发实战:接入 MCP 工具
  • 融合大模型与遥感技术:人工智能基础模型综述
  • C++ Qt 网络编程指南:QUdpSocket、QTcpSocket 与 Http
  • 基于 Llama-Factory 微调中文小说续写模型实践
  • Ubuntu 环境下 RabbitMQ 快速安装与配置指南
  • Leaflet 与 SpringBoot 实现地图点击获取当地时间
  • Python 实现 AI 文档总结、代码生成与资料检索工具
  • Web 后端安全系列:PHP 基础语法与序列化

相关免费在线工具

  • 加密/解密文本

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