基于FunAsr实现录音文件识别接口,异步处理音频文件并返回识别结果
- Python
- 2天前
- 40热度
- 0评论
FunASR 语音识别服务
基于 FunASR + Paraformer-zh + FastAPI 实现的语音识别服务,支持异步处理音频文件并返回识别结果。
Github:https://github.com/friend-nicen/asr
功能特点
- 支持本地音频文件和URL链接的音频识别
- 异步队列处理,支持并发任务
- RESTful API接口
- 自动下载和管理模型
- Redis任务队列
系统要求
- Python 3.8+
- Redis服务器
- CUDA(可选,用于GPU加速)
安装
拉取项目并安装依赖,确保Redis服务器已启动:
pip install -r requirements.txt
配置
主要配置项在 api_server.py
和 worker.py
中:
- Redis连接配置
- 并发处理数量
- 音频文件存储目录
- 模型存储目录
使用方法
启动API服务器:
python api_server.py
首次运行worker时下载模型:
python worker.py --download
启动worker处理服务:
python worker.py
API接口
1. 提交识别任务
POST /recognize
Content-Type: application/json
{
"file": "path_to_audio_file_or_url"
}
响应:
{
"task_id": "uuid",
"message": "Task submitted successfully"
}
2. 查询任务状态
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 是一个标点预测模型,可在语音识别生成的文本中添加适当的标点符号,使文本更具可读性和语义完整性。因为语音识别结果通常会缺少标点,而标点对于理解文本的语义和结构非常重要,该模型能够自动在合适的位置添加如句号、逗号、问号等标点符号,帮助用户更好地理解和使用语音识别的输出结果。