# funasr-api
**Repository Path**: limoncc/funasr-api
## Basic Information
- **Project Name**: funasr-api
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-12-19
- **Last Updated**: 2025-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
开箱即用的本地私有化部署语音识别服务
基于 FunASR 的语音识别 API 服务,提供高精度中文语音识别(ASR)功能,兼容阿里云语音 API 和 OpenAI Audio API。
---



## 主要特性
- **多模型支持** - 集成 Paraformer Large 和 Fun-ASR-Nano 2 个高质量 ASR 模型
- **OpenAI API 兼容** - 支持 `/v1/audio/transcriptions` 端点,可直接使用 OpenAI SDK
- **阿里云 API 兼容** - 支持阿里云语音识别 RESTful API 和 WebSocket 流式协议
- **WebSocket 流式识别** - 支持实时流式语音识别,低延迟
- **智能远场过滤** - 流式 ASR 自动过滤远场声音和环境音,减少误触发
- **灵活配置** - 支持环境变量配置,可按需加载模型
## 快速部署
### Docker 部署(推荐)
```bash
# 启动服务(GPU 版本)
docker run -d --name funasr-api \
--gpus all \
-p 8000:8000 \
-v ./logs:/app/logs \
-v ./temp:/app/temp \
quantatrisk/funasr-api:gpu-latest
# 或使用 docker-compose
docker-compose up -d
```
服务将在 `http://localhost:8000` 启动
**CPU 版本**请使用镜像 `quantatrisk/funasr-api:latest`
> 详细部署说明请查看 [部署指南](./docs/deployment.md)
### 本地开发
**系统要求:**
- Python 3.10+
- CUDA 12.1+(可选,用于 GPU 加速)
- FFmpeg(音频格式转换)
**安装步骤:**
```bash
# 克隆项目
cd FunASR-API
# 安装依赖
pip install -r requirements.txt
# 启动服务
python start.py
```
## API 接口
### OpenAI 兼容接口
| 端点 | 方法 | 功能 |
|------|------|------|
| `/v1/audio/transcriptions` | POST | 音频转写(OpenAI 兼容) |
| `/v1/models` | GET | 模型列表 |
**使用示例:**
```bash
# 使用 OpenAI SDK
from openai import OpenAI
client = OpenAI(base_url="http://localhost:8000/v1", api_key="any")
with open("audio.wav", "rb") as f:
transcript = client.audio.transcriptions.create(
model="whisper-1", # 会映射到默认模型
file=f,
response_format="json"
)
print(transcript.text)
```
```bash
# 使用 curl
curl -X POST "http://localhost:8000/v1/audio/transcriptions" \
-H "Authorization: Bearer any" \
-F "file=@audio.wav" \
-F "model=whisper-1" \
-F "response_format=json"
```
**支持的响应格式:** `json`, `text`, `srt`, `vtt`, `verbose_json`
### 阿里云兼容接口
| 端点 | 方法 | 功能 |
|------|------|------|
| `/stream/v1/asr` | POST | 一句话语音识别 |
| `/stream/v1/asr/models` | GET | 模型列表 |
| `/stream/v1/asr/health` | GET | 健康检查 |
| `/ws/v1/asr` | WebSocket | 流式语音识别 |
| `/ws/v1/asr/test` | GET | WebSocket 测试页面 |
**使用示例:**
```bash
curl -X POST "http://localhost:8000/stream/v1/asr" \
-H "Content-Type: application/octet-stream" \
--data-binary @audio.wav
```
**WebSocket 流式识别测试:** 访问 `http://localhost:8000/ws/v1/asr/test`
## 支持的模型
| 模型 ID | 名称 | 说明 | 特性 |
|---------|------|------|------|
| `paraformer-large` | Paraformer Large | 高精度中文语音识别(默认) | 支持离线/实时 |
| `fun-asr-nano` | Fun-ASR-Nano | 轻量级多语言ASR,支持31种语言和方言 | 仅离线 |
**模型加载模式 (`ASR_MODEL_MODE`):**
- `offline` - 仅加载离线模型
- `realtime` - 仅加载实时流式模型
- `all` - 加载所有模型(默认)
**预加载自定义模型:**
```bash
# 启动时预加载 Fun-ASR-Nano
export AUTO_LOAD_CUSTOM_ASR_MODELS="fun-asr-nano"
```
## 环境变量
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `HOST` | `0.0.0.0` | 服务绑定地址 |
| `PORT` | `8000` | 服务端口 |
| `DEBUG` | `false` | 调试模式 |
| `DEVICE` | `auto` | 设备选择: `auto`, `cpu`, `cuda:0` |
| `ASR_MODEL_MODE` | `all` | 模型加载模式 |
| `AUTO_LOAD_CUSTOM_ASR_MODELS` | - | 预加载的自定义模型 |
| `APPTOKEN` | - | API 访问令牌 |
| `APPKEY` | - | 应用密钥 |
### 远场过滤配置
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `ASR_ENABLE_NEARFIELD_FILTER` | `true` | 启用远场声音过滤 |
| `ASR_NEARFIELD_RMS_THRESHOLD` | `0.01` | RMS 能量阈值 |
| `ASR_NEARFIELD_FILTER_LOG_ENABLED` | `true` | 启用过滤日志 |
> 详细配置说明请查看 [远场过滤文档](./docs/nearfield_filter.md)
## 资源需求
**最小配置(CPU):**
- CPU: 4 核
- 内存: 8GB
- 磁盘: 10GB
**推荐配置(GPU):**
- CPU: 8 核
- 内存: 16GB
- GPU: NVIDIA GPU (4GB+ 显存)
- 磁盘: 20GB
## API 文档
启动服务后访问:
- Swagger UI: `http://localhost:8000/docs`
- ReDoc: `http://localhost:8000/redoc`
## 相关链接
- **部署指南**: [详细文档](./docs/deployment.md)
- **远场过滤配置**: [配置指南](./docs/nearfield_filter.md)
- **FunASR**: [FunASR GitHub](https://github.com/alibaba-damo-academy/FunASR)
## 许可证
本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 贡献
欢迎提交 Issue 和 Pull Request 来改进项目!