尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FunASR 实时语音听写服务部署实战:一键部署、2pass 转写与多语言客户端使用详解

FunASR 实时语音听写服务部署实战:一键部署、2pass 转写与多语言客户端使用详解 FunASR 实时语音听写服务部署实战一键部署、2pass 转写与多语言客户端使用详解【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR本篇基于 FunASR 仓库中的实时语音听写部署文档 SDK_tutorial_online_zh.md 展开讲解如何用一键部署脚本在本地或云端服务器拉起基于 runtime-SDK 的实时语音识别服务VAD 端点检测 Paraformer 流式/非流式 ASR 标点预测并完整覆盖服务端管理命令与 Python/C/HTML/Java 客户端的使用方式。读完后你将能够独立部署一套支持高并发多路请求、句尾自动纠错并输出标点的实时语音转写服务。2pass 实时转写服务的架构与能力FunASR 提供的实时语音听写服务内核是其已开源的 runtime-SDK集成了达摩院语音实验室在 Modelscope 社区开源的一组模型能力语音端点检测VAD、Paraformer-large 非流式语音识别ASR、Paraformer-large 流式语音识别ASR与标点预测PUNC。软件包可以实时地进行语音转文字并在说话句尾用高精度的离线转写文字修正输出最终文字带标点且支持高并发多路请求。从 websocket 协议文档 中的系统架构图可以看到 2pass 的整体流程客户端以 WebSocket 方式持续发送 PCM 音频分片服务端内的流式模型边收边出结果当 VAD 判断说话人句尾时该句音频交给非流式大模型做一次精转写最终以带标点的离线结果覆盖流式草稿。通信协议方面客户端与服务端之间的消息分为两类配置参数与 meta 信息用 JSON 表达音频数据用 bytes 表达。实时模式下首次通信的消息形如{mode: 2pass, wav_name: wav_name, is_speaking: True, wav_format:pcm, chunk_size:[5,10,5], hotwords:{\阿里巴巴\:20,\通义实验室\:30},itn:True}其中mode取offline一句话识别、online实时识别或2pass实时识别 句尾离线纠错chunk_size为流式模型延迟配置[5,10,5]表示当前音频解码片段为 600ms回看 300ms、右看 300ms实时模式下wav_format只支持 pcm 音频流热词权重仅在 FST 热词服务下生效。协议细节可参见 websocket/grpc 通信协议文档。推荐服务器配置用户可以根据业务需求选择合适的服务器配置文档推荐的配置如下配置CPU 架构类型vCPU内存单机可支持路数约配置1X86计算型4 核8G16 路配置2X86计算型16 核32G32 路配置3X86计算型64 核128G100 路详细性能测试报告见 benchmark_onnx_cpp.md。快速上手一键安装部署工具并启动服务端下载部署工具注意一键部署工具的完整过程分为安装 Docker、下载 Docker 镜像、启动服务三步。如果希望直接从 FunASR Docker 镜像启动跳过自动安装可参考 SDK 开发指南。curl -O https://raw.githubusercontent.com/modelscope/FunASR/main/runtime/deploy_tools/funasr-runtime-deploy-online-cpu-zh.sh; # 如遇到网络问题中国大陆用户可以使用下面的命令 # curl -O https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/shell/funasr-runtime-deploy-online-cpu-zh.sh;该脚本在仓库中的位置是 funasr-runtime-deploy-online-cpu-zh.sh当前版本号为 0.0.3。执行部署sudo bash funasr-runtime-deploy-online-cpu-zh.sh install --workspace ./funasr-runtime-resources在提示处输入回车键即可完成服务端安装与部署。便捷部署工具目前仅支持 Linux 环境其他环境的部署请参考 开发指南。注如果需要部署时间戳模型或者热词模型在安装部署的步骤 2 处选择对应模型即可其中 1 为 paraformer-large 模型2 为 paraformer-large 时间戳模型3 为 paraformer-large NN 热词模型服务端加载的热词文件地址为./funasr-runtime-resources/hotwords.txt每行一个热词格式为热词 权重例如阿里巴巴 20。部署流程的源码级解读从 部署脚本源码 可以看到install流程按[0/6]到[6/6]六个阶段推进检查 root 权限rootNess脚本要求以 ROOT 用户运行选择 Docker 镜像selectDockerImages脚本先从镜像列表文件拉取可选镜像清单并交互选择镜像列表定义在 docker_online_cpu_zh_lists 中镜像仓库为registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr当前列表包含funasr-runtime-sdk-online-cpu-0.1.8至0.1.13共 6 个版本选择模型selectModels分别选择 ASR、VAD、PUNC 三类模型。默认模型 ID 在脚本中定义脚本 L1520-L1542ASRdamo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnxVADdamo/speech_fsmn_vad_zh-cn-16k-common-onnxPUNCdamo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx镜像列表文件中还列出了流式 ASR 模型damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx它是 2pass 模式中“流式第一遍”的底座配置宿主机端口setupHostPort输入范围 1-65535默认 10095映射到 Docker 内部端口默认同为 10095确认参数并保存showAllParamssaveParams所有配置项镜像、模型 ID、本地工作区、端口、线程数、SSL 标志、Docker ID 等会持久化到~/.funasr_online/config后续的start/restart/update都基于这份配置恢复现场安装 Docker、拉取镜像并运行容器installFunasrDockerdockerRun容器以--privilegedtrue启动将本地模型目录挂载进容器挂载到/workspace/models并通过环境变量DAEMON_SERVER_CONFIG注入一段 JSON 服务端配置serverConfigGeneration 函数其中包含容器内服务端可执行文件路径/workspace/FunASR/runtime/websocket/build/bin/funasr-wss-server-2pass、模型目录、线程数、端口与 SSL 证书路径。脚本中还有几处值得注意的默认值脚本 L1544-L1548PARAMS_HOST_PORT10095、PARAMS_DOCKER_PORT10095、PARAMS_DECODER_THREAD_NUM32、PARAMS_IO_THREAD_NUM8、PARAMS_SSL_FLAG1。同时若未手动指定 IO 线程数脚本会按解码线程数的 1/4 自动推算complementParameters 函数最小为 1。部署完成时脚本还会把客户端测试样例包samples下载解压到--workspace指定的目录默认./funasr-runtime-resources并安装 Python 客户端依赖requirements_client.txt、ffmpeg、ffmpeg-python。客户端测试与使用在服务器上完成部署后即可测试和使用实时语音听写服务。文档支持以下语言客户端PythonCCPPHTML浏览器JavaC#更多版本客户端支持请参考 websocket/grpc 协议文档。以 Python 客户端为例支持麦克风输入运行命令为python3 funasr_wss_client.py --host 127.0.0.1 --port 10096 --mode 2pass端口说明文档示例使用 10096而一键部署脚本的默认端口为 10095可用update --host_port修改。实际使用时请以部署时设置的宿主机端口为准。仓库中 Python 客户端源码位于 funasr_wss_client.py其完整参数定义可在 脚本 L16-L65 查看。Python 客户端参数详解命令参数说明文档定义 源码默认值参数说明默认值源码--hostFunASR runtime-SDK 服务部署机器 IP默认为本机127.0.0.1client 与服务不在同一台服务器时需改为部署机器 IPlocalhost--port部署端口号10095--modeoffline一句话识别online实时语音识别2pass实时识别且句尾用离线模型纠错2pass--chunk_size流式模型 latency 配置[5,10,5]表示当前音频解码片段为 600ms回看 300ms、右看 300ms5, 10, 5--audio_in需要转写的音频文件支持文件路径、文件列表 wav.scp不传则使用麦克风需安装 PyAudio无麦克风--thread_num并发发送线程数1--ssl是否开启 SSL 证书校验1 开启、0 关闭1--hotword热词文件每行一个热词格式热词 权重如阿里巴巴 20空--use_itn是否使用 ITN逆文本正则化1 开启、0 关闭1--audio_fsPCM 音频采样率16000--result_timeout等待服务端“输入结束确认”的超时时间秒300.0C 客户端进入 samples/cpp 目录后可以用 C 进行测试指令如下./funasr-wss-client-2pass --server-ip 127.0.0.1 --port 10096 --mode 2pass \ --wav-path ../audio/asr_example.pcm命令参数说明--server-ip 为FunASR runtime-SDK服务部署机器ip默认为本机ip127.0.0.1如果client与服务不在同一台服务器 需要改为部署机器ip --port 10096 部署端口号 --modeoffline表示推理模式为一句话识别online表示推理模式为实时语音识别2pass表示为实时语音识别 并且说话句尾采用离线模型进行纠错。 --chunk-size表示流式模型latency配置[5,10,5]表示当前音频解码片段为600ms并且回看300ms右看300ms。 --record 1表示使用麦克风作为输入默认为0 --wav-path 需要进行转写的音频文件支持文件路径 --audio-fs pcm音频采样率 --thread-num 设置并发发送线程数默认为1 --is-ssl 设置是否开启ssl证书校验默认1开启设置为0关闭 --hotword 热词文件每行一个热词格式(热词 权重)阿里巴巴 20 --use-itn 设置是否使用itn默认1开启设置为0关闭HTML浏览器客户端在浏览器中打开 html/static/index.html即可出现如下页面支持麦克风输入与文件上传直接进行体验该页面由 runtime/html5 目录下的静态资源main.js、wsconnecter.js、recorder-core.js等实现可直接作为产品演示页使用。Java 客户端FunasrWsClient --host localhost --port 10096 --mode 2passJava 客户端的详细构建与运行方式见 java readme先安装 JDK如apt-get install openjdk-11-jdk再在funasr/runtime/java目录下执行make downjar下载 jar 包、make buildwebsocket编译、make runclient运行。完整命令形式为usage: FunasrWsClient [-h] [--port PORT] [--host HOST] [--audio_in AUDIO_IN] [--num_threads NUM_THREADS] [--chunk_size CHUNK_SIZE] [--chunk_interval CHUNK_INTERVAL] [--mode MODE]示例FunasrWsClient --host localhost --port 8889 --audio_in ./asr_example.wav --num_threads 1 --mode 2pass服务端返回 JSON 结果形如{mode:offline,text:欢迎大家来体验达摩院推出的语音识别模型,wav_name:javatest}。C# 与其他客户端C# 客户端示例参见仓库 runtime/csharp 目录更多语言如 Go、gRPC的支持情况请阅读 websocket/grpc 协议文档。服务端用法详解一键部署完成后所有管理操作都通过同一脚本完成配置自动从~/.funasr_online/config恢复。启动已经部署过的 FunASR 服务若出现重启电脑等关闭 Docker 的动作可通过如下命令直接启动 FunASR 服务启动配置为上次一键部署的设置sudo bash funasr-runtime-deploy-online-cpu-zh.sh start关闭 FunASR 服务sudo bash funasr-runtime-deploy-online-cpu-zh.sh stop释放 FunASR 服务释放停止并删除已经部署的 FunASR 服务同时清理配置文件sudo bash funasr-runtime-deploy-online-cpu-zh.sh remove重启 FunASR 服务根据上次一键部署的设置重启 FunASR 服务sudo bash funasr-runtime-deploy-online-cpu-zh.sh restart替换模型并重启 FunASR 服务替换正在使用的模型并重新启动 FunASR 服务。模型需为 ModelScope 中的 ASR/VAD/PUNC 模型或者从 ModelScope 中模型 finetune 后的模型sudo bash funasr-runtime-deploy-online-cpu-zh.sh update [--asr_model | --vad_model | --punc_model] model_id or local model path e.g sudo bash funasr-runtime-deploy-online-cpu-zh.sh update --asr_model damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-pytorch从源码看modelChange 函数该命令会自动判断传入值是 ModelScope 模型 ID 还是本地目录若为本地目录则清空对应的PARAMS_*_ID并将本地路径挂载进容器模型目录名取目录 basename。更新参数并重启 FunASR 服务更新已配置参数并重新启动 FunASR 服务生效。可更新参数包括宿主机和 Docker 的端口号以及推理和 IO 的线程数量sudo bash funasr-runtime-deploy-online-cpu-zh.sh update [--host_port | --docker_port] port number sudo bash funasr-runtime-deploy-online-cpu-zh.sh update [--decode_thread_num | --io_thread_num] the number of threads sudo bash funasr-runtime-deploy-online-cpu-zh.sh update [--workspace] workspace in local sudo bash funasr-runtime-deploy-online-cpu-zh.sh update [--ssl] 0: close SSL; 1: open SSL, default:1 e.g sudo bash funasr-runtime-deploy-online-cpu-zh.sh update --decode_thread_num 32 sudo bash funasr-runtime-deploy-online-cpu-zh.sh update --workspace ./funasr-runtime-resources源码中对这些参数有取值校验线程数范围 1-1024threadNumChange 函数端口范围 1-65535portChange 函数。update执行后会自动docker stop再重启容器使新配置生效。此外脚本还提供show子命令查看当前全部已保存参数client子命令交互式下载并运行 Python/C 客户端样例displayHelp 函数。关闭 SSL 证书sudo bash funasr-runtime-deploy-online-cpu-zh.sh update --ssl 0从 serverConfigGeneration 函数 可以看到SSL 开启时服务端加载证书/workspace/FunASR/runtime/ssl_key/server.crt与密钥server.key对应仓库 runtime/ssl_key 目录关闭 SSL 后客户端也需相应将--ssl/--is-ssl置为 0。延伸资料性能与并发能力评测benchmark_onnx_cpp.md、benchmark_libtorch.md从 Docker 镜像直接启动与进阶配置SDK 在线服务开发指南协议细节与更多语言客户端websocket/grpc 通信协议云端服务器申请教程aliyun_server_tutorial.md客户端样例源码runtime/python/websocket、runtime/java、runtime/html5部署遇到问题时可参考仓库 README 中提供的用户社区渠道反馈。【免费下载链接】FunASROpen-source speech recognition toolkit for training, inference, streaming ASR, VAD, punctuation, speaker diarization pipelines, and OpenAI-compatible/MCP serving.项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表