解决FunASR流式语音识别客户端在无音频设备环境下的运行问题

【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc. 【免费下载链接】FunASR 项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR

在使用FunASR进行流式语音识别时,无音频设备环境可能导致客户端无法正常工作。本文将详细分析这一问题的原因,并提供解决方案,帮助您在没有麦克风等音频输入设备的情况下顺利运行FunASR流式语音识别客户端。

问题分析

FunASR的流式语音识别功能依赖于音频输入设备来获取语音信号。当系统中没有可用的音频输入设备时,客户端程序可能会因无法捕获音频而抛出错误或陷入停滞状态。这种情况常见于服务器环境、虚拟机或一些精简的操作系统中。

相关模块路径

解决方案

针对无音频设备环境下的运行问题,我们提供以下两种解决方案:

使用离线文件模式

在没有实时音频输入的情况下,可以使用FunASR的离线文件转写功能,直接对已有的音频文件进行处理。

操作步骤
  1. 准备音频文件,确保格式符合要求(如WAV格式,16kHz采样率等)。
  2. 部署离线文件转写服务:
sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-cpu-0.4.5
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.5
  1. 启动服务端:
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_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 &
  1. 运行客户端测试:
python3 funasr_wss_client.py --host "127.0.0.1" --port 10095 --mode offline --audio_in "../audio/asr_example.wav"
离线文件转写服务架构

离线文件转写服务架构

使用虚拟音频设备

如果确实需要模拟实时音频输入,可以在系统中安装虚拟音频设备,如Linux系统中的PulseAudio虚拟麦克风。

安装PulseAudio虚拟麦克风
sudo apt-get install pulseaudio pulseaudio-utils
配置虚拟音频设备
pactl load-module module-null-sink sink_name=Virtual_Speaker sink_properties=device.description="Virtual_Speaker"
pactl load-module module-virtual-source source_name=Virtual_Microphone master=Virtual_Speaker.monitor
设置默认音频输入设备
pactl set-default-source Virtual_Microphone
使用虚拟设备运行流式客户端
  1. 部署流式语音识别服务:
sudo docker pull registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr:funasr-runtime-sdk-online-cpu-0.1.10
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.10
  1. 启动服务端:
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_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 \
  --itn-dir thuduj12/fst_itn_zh \
  --hotword /workspace/models/hotwords.txt > log.txt 2>&1 &
  1. 运行客户端测试:
python3 funasr_wss_client.py --host "127.0.0.1" --port 10096 --mode 2pass

相关模块路径

常见问题解决

服务启动失败

如果服务启动失败,可能是由于模型文件未正确下载。请检查模型下载路径是否正确,并确保网络连接正常。相关代码可以查看runtime/quick_start_zh.md中的模型下载部分。

客户端连接超时

客户端连接超时通常是由于服务端未正确启动或端口被占用。可以使用以下命令检查服务是否正在运行:

ps aux | grep funasr-wss-server

如果端口被占用,可以修改启动脚本中的端口号,如将10095改为其他未使用的端口。

相关模块路径

总结

通过本文介绍的两种方法,您可以在无音频设备的环境下顺利运行FunASR的流式语音识别客户端。离线文件模式适用于对已有音频文件进行处理的场景,而虚拟音频设备则可以模拟实时音频输入,满足更多样化的应用需求。

如果您在实施过程中遇到其他问题,可以查阅官方文档或提交issue寻求帮助。

相关资源

希望本文能够帮助您解决无音频设备环境下FunASR流式语音识别客户端的运行问题,充分发挥FunASR的强大功能。

【免费下载链接】FunASR A Fundamental End-to-End Speech Recognition Toolkit and Open Source SOTA Pretrained Models, Supporting Speech Recognition, Voice Activity Detection, Text Post-processing etc. 【免费下载链接】FunASR 项目地址: https://gitcode.com/GitHub_Trending/fun/FunASR

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐