FunASR 上 Android:从服务端到 App 的三步实时语音识别部署
【免费下载链接】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 是端到端语音识别工具包,VAD、识别、标点、逆文本规整开箱即用,也支持 Android 移动端部署:模型跑在服务器上,手机侧只是一个轻量的 WebSocket 客户端。下面带你用一套 Docker 部署起实时服务,再完成 Android 实时语音识别集成。
为什么模型放服务端而不是手机
FunASR 的 Android 方案不把模型塞进手机:客户端通过 WebSocket 把音频流推给服务端,模型推理在服务端完成,再回传文字。Paraformer 这类模型有几百 MB,手机的算力和存储都吃力;更重要的是换模型、调热词只改服务端,客户端不用发版。这种"端-云"拆分让 App 保持轻量,迭代也快。
⚙️ 服务端:三步启动 FunASR 2pass 服务
安装 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 Installation。
拉取镜像并挂载模型目录
这一步是 FunASR Docker 部署的核心:拉取官方实时 CPU 镜像,用一条docker run起容器。两个参数值得弄懂——-v把宿主机目录映射到容器内/workspace/models,模型和热词文件都放这里;-p 10096:10095把容器内服务端口 10095 映射到宿主机 10096,这就是后面 Android 客户端要连的地址。
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 --privileged=true \ -v $PWD/funasr-runtime-resources/models:/workspace/models \ registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.13启动 FunASR 2pass 实时服务
容器起来后,进入容器内FunASR/runtime目录执行run_server_2pass.sh,首次运行会自动下载模型。命令里各参数一一对应组件:--vad-dir端点检测、--model-dir离线高精主模型、--online-model-dir流式模型先出初稿、--punc-dir加标点、--lm-dir语言模型纠偏、--itn-dir逆文本规整、--hotword加载热词文件。2pass 流程就是流式模型快速响应、离线模型修正,客户端收到的是修正加标点后的结果。
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 2>&1 &换模型、改端口、调推理线程数,到 SDK 进阶指南 的"服务端用法详解"一节查。
📱 客户端:从打开项目到看到识别结果
打开 AndroidClient 项目
示例客户端在仓库runtime/android/AndroidClient/目录,用最新版 Android Studio 直接打开即可。
按住即说的交互方式
App 只有一个流程:按住按钮开始录音识别,松开结束,识别结果实时滚动上屏。服务器地址和热词都能在菜单栏调整。
安装 APK 并首次配置服务器地址
用 Android Studio 编译出 APK 装到手机,首次启动填入刚才服务端的 WebSocket 地址(例如服务器IP:10096),之后随时可在菜单栏改。连上之后,按住说话就能看到结果。
WebSocket 协议:手机和服务端怎么对话
手机与服务端走 WebSocket 协议通信。FunASR 同时提供 Python、CPP、Java、C# 等语言的客户端示例,想自己写客户端,看 SDK 进阶指南 的"客户端用法详解"。
卡住了去哪里查
部署卡住,先查 实时语音听写服务开发指南 和 FQA,这是主要排错入口。若 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
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考