
FunASR手机语音识别实战Android端连上实时听写服务从零到可用【免费下载链接】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想让自己的 App 具备按住说话、实时上屏的语音识别能力FunASR 是一个端到端语音识别工具包开源了 SOTA 预训练模型实时听写服务支持高并发、句尾高精度修正。本文把服务端跑在一台 Linux 机器上Android 端用官方示例 App 连上它全程大约 20 分钟跟着敲命令即可。先想清楚再动手先说结论模型不装在手机上。FunASR 的移动端方案是——服务端在服务器上用 ONNX Runtime 跑 VAD、流式识别、非流式识别、标点四类模型手机只做两件事录音、传流。手机和服务端之间走 WebSocket 长连接音频二进制帧上行识别结果 JSON 下行。这个设计是刻意为之。语音模型动辄上 GB塞进手机既吃内存又吃电还受芯片算力限制放到服务器上则不受此约束同一台机器还能同时服务几十路请求。对 App 端来说实现成本也只是一个 WebSocket 客户端。runtime/android/AndroidClient/ # Android 示例 AppGradle 工程 runtime/run_server_2pass.sh # 服务端 2pass 启动脚本 runtime/deploy_tools/ # Docker 安装脚本与一键部署脚本2pass 是这里的核心模式说话时流式模型实时吐中间结果句尾由非流式大模型修正最终文本再补上标点。鱼和熊掌都想要就是这个模式。搭环境以下命令在 Linux 服务器上执行。5分钟装好Docker如果机器上已有 Docker直接跳下一节。否则先下载安装脚本再执行脚本会识别发行版自动装好并启动 docker 服务curl -O https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/shell/install_docker.sh sudo bash install_docker.sh跑完执行docker info能正常输出节点信息就说明装好了。拉镜像并启动容器镜像里已经编译好服务端程序funasr-wss-server-2pass拉下来直接起容器。注意-v挂载的目录会被映射到容器内/workspace/models首次启动时模型会下载到这里sudo docker pull \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13 # 建模型存放目录映射进容器 mkdir -p ./funasr-runtime-resources/models sudo docker run -p 10096:10095 -it --privilegedtrue \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13容器起来后你会进入一个 shell。记住两个端口容器内服务监听 10095映射到宿主机 10096手机连的是后者。想换端口改-p参数即可例如-p 10097:10095。启动识别服务在容器内进入 runtime 目录用仓库自带的run_server_2pass.sh拉起服务参数已经配好 VAD、流式/非流式识别、标点、语言模型和 ITN逆文本归一化把二零二六年读成2026年这类规则cd FunASR/runtime nohup bash run_server_2pass.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 \ --online-model-dir damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-online-onnx \ --punc-dir damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-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 21 首次启动会逐个下载模型耐心等几分钟。看到 log.txt 里出现监听端口的日志服务就算就绪了。常用改法都在这一步完成换模型改--model-dir即可例如换成iic/SenseVoiceSmall-onnx支持时间戳和 nn 热词模型的版本见 SDK 开发指南关 SSL加参数--certfile 0内网测试建议先关掉改并发--decoder-thread-num控制最大并发路数脚本默认按 CPU 核数自动设置配热词在挂载目录放hotwords.txt每行一个热词格式阿里巴巴 20权重 1~100端侧集成你拿到的是一个完整 Gradle 工程位于 runtime/android/AndroidClient/用 Android Studio 打开即可编译不想自己构建也可以装现成的 APK 直接用官方仓库提供下载扫码或浏览器安装。跑通只需三步手机与服务器连同一个局域网打开 App在设置里填 WebSocket 地址格式wss://服务器IP:10096按住按钮说话松开按钮结果实时显示在界面上功能点到为止一共四个按住录音、松开出结果一次完整的实时识别菜单栏随时修改 WebSocket 服务器地址菜单栏配置客户端热词和服务端热词自动合并识别文本实时上屏句尾收到修正后的最终文本官方在 runtime/android/readme.md 中提供了应用效果图分别是主界面、识别中、识别结果三种状态。连起来把链路串一遍你就懂了手机麦克风录出 16k PCM 音频切成小帧经 WebSocket 二进制消息持续上行服务端 VAD 判断你在不在说话流式模型边收边吐中间结果句尾非流式模型出修正文本并补标点最终 JSON 消息下行到手机。你只需要关心三件事连对地址协议 IP 10096 端口、音频是 16k PCM、结束时发送结束标志。协议字段细节看 websocket_protocol_zh.md 即可不展开。App 只是客户端形态之一。同一套协议官方提供了五种语言的实现示例和用法都在 SDK_tutorial_online_zh.mdPythonruntime/python/websocket/Cruntime/websocket/HTML 网页版runtime/html5/Javaruntime/java/C#runtime/csharp/也就是说把 Android 示例里的 WebSocket 收发逻辑抠出来换成你的语言和框架服务端一行不用改。收尾现在你手上有一套能用的链路手机按住说话实时上屏句尾修正带标点。两个自然的下一步想让专有名词更准把业务词按热词 权重写进挂载目录的hotwords.txt重启服务想换更轻或带时间戳的模型改run_server_2pass.sh的--model-dir参数全部参数含义见 服务端用法详解。【免费下载链接】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),仅供参考