STT_Server/README.md

113 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# FunASR WebSocket服务
## 简介
本项目基于FunASR实现了一个WebSocket语音识别服务支持实时语音流的在线和离线识别。利用ModelScope开源语音模型该服务可以进行高精度的中文语音识别并支持语音活动检测(VAD)和自动添加标点符号。
## 项目结构
```
.
├── src/ # 源代码目录
│ ├── __init__.py # 包初始化文件
│ ├── server.py # WebSocket服务器实现
│ ├── config.py # 配置处理模块
│ ├── models.py # 模型加载模块
│ ├── service.py # ASR服务实现
│ └── client.py # 测试客户端
├── tests/ # 测试目录
│ ├── __init__.py # 测试包初始化文件
│ └── test_config.py # 配置模块测试
├── requirements.txt # Python依赖
├── Dockerfile # Docker配置
├── docker-compose.yml # Docker Compose配置
├── .gitignore # Git忽略文件
└── README.md # 项目说明
```
## 功能特性
- **多模式识别**:支持离线(offline)、在线(online)和两阶段(2pass)识别模式
- **语音活动检测**:自动检测语音开始和结束
- **标点符号**:支持自动添加标点符号
- **WebSocket接口**基于二进制WebSocket提供实时语音识别
- **Docker支持**:提供容器化部署支持
## 安装与使用
### 环境要求
- Python 3.8+
- CUDA支持 (若需GPU加速)
- 内存 >= 8GB
### 安装依赖
```bash
pip install -r requirements.txt
```
### 运行服务器
```bash
python src/server.py
```
常用启动参数:
- `--host`: 服务器监听地址,默认为 0.0.0.0
- `--port`: 服务器端口,默认为 10095
- `--device`: 设备类型(cuda或cpu),默认为 cuda
- `--ngpu`: GPU数量0表示使用CPU默认为 1
### 测试客户端
```bash
python src/client.py --audio_file path/to/audio.wav
```
常用客户端参数:
- `--audio_file`: 要识别的音频文件路径
- `--mode`: 识别模式,可选 2pass/online/offline默认为 2pass
- `--host`: 服务器地址,默认为 localhost
- `--port`: 服务器端口,默认为 10095
## Docker部署
### 构建镜像
```bash
docker build -t funasr-websocket .
```
### 使用Docker Compose启动
```bash
docker-compose up -d
```
## API说明
### WebSocket消息格式
1. **客户端配置消息**:
```json
{
"mode": "2pass", // 可选: "2pass", "online", "offline"
"chunk_size": "5,10", // 块大小,格式为"encoder_size,decoder_size"
"wav_name": "audio1", // 音频标识名称
"is_speaking": true // 是否正在说话
}
```
2. **客户端音频数据**:
二进制音频数据流16kHz采样率16位PCM格式
3. **服务器识别结果**:
```json
{
"mode": "2pass-online", // 识别模式
"text": "识别的文本内容", // 识别结果
"wav_name": "audio1", // 音频标识
"is_final": false // 是否是最终结果
}
```
## 许可证
[MIT](LICENSE)