FunASR 语音识别服务 基于 FunASR + Paraformer-zh + FastAPI 实现的语音识别服务,支持异步处理音频文件并返回识别结果。
功能特点
支持本地音频文件和URL链接的音频识别 异步队列处理,支持并发任务 RESTful API接口 自动下载和管理模型 Redis任务队列
系统要求
Python 3.8+ Redis服务器 CUDA(可选,用于GPU加速)
安装 拉取项目并安装依赖,确保Redis服务器已启动:
pip install -r requirements.txt
配置 api_server.pyworker.py
Redis连接配置 并发处理数量 音频文件存储目录 模型存储目录
使用方法 启动API服务器:
python api_server.py
首次运行worker时下载模型:
python worker.py –download
启动worker处理服务:
python worker.py
API接口
- 提交识别任务
POST /recognize Content-Type: application/json { “file”: “path_to_audio_file_or_url” }
响应:
{ “task_id”: “uuid”, “message”: “Task submitted successfully” }
- 查询任务状态
GET /status/{task_id}
响应:
{ “task_id”: “uuid”, “status”: “pending|processing|completed|failed”, “result”: “识别结果文本(如果完成)” }
注意事项
确保音频文件格式受支持(建议使用wav格式) 保持Redis服务器正常运行 首次运行时需要下载模型,可能需要一些时间 调整MAX_WORKERS参数以适应服务器性能
错误处理
文件不存在:返回400错误 URL下载失败:返回400错误 任务不存在:返回404错误 其他错误:相应的错误信息会记录在任务状态中
知识点
Paraformer 是一种基于 Transformer 的语音识别模型,paraformer-zh 是其针对中文语音识别的版本。它能够将中文语音信号直接转换为对应的文本内容,具有高效、准确的特点,并且可以处理不同长度的音频输入,无论是短语音片段还是长音频文件,都能较好地完成识别任务,为语音识别的基础任务提供有力支持。 FSMN-VAD 即基于 FSMN 网络的语音活动检测模型,用于检测语音信号中的语音段和非语音段,确定语音的起始和结束时间点。它能够帮助过滤掉音频中的无效部分,如静音、背景噪音等,只保留有效的语音部分,从而提高语音识别的效率和准确性,减少计算资源的浪费,通常在语音识别流程中前置使用,为后续的语音识别模型提供更精准的语音片段。 CT-Punc 是一个标点预测模型,可在语音识别生成的文本中添加适当的标点符号,使文本更具可读性和语义完整性。因为语音识别结果通常会缺少标点,而标点对于理解文本的语义和结构非常重要,该模型能够自动在合适的位置添加如句号、逗号、问号等标点符号,帮助用户更好地理解和使用语音识别的输出结果。