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

安装依赖

pip install -r requirements.txt

运行服务器

python src/server.py

常用启动参数:

  • --host: 服务器监听地址,默认为 0.0.0.0
  • --port: 服务器端口,默认为 10095
  • --device: 设备类型(cuda或cpu),默认为 cuda
  • --ngpu: GPU数量0表示使用CPU默认为 1

测试客户端

python src/client.py --audio_file path/to/audio.wav

常用客户端参数:

  • --audio_file: 要识别的音频文件路径
  • --mode: 识别模式,可选 2pass/online/offline默认为 2pass
  • --host: 服务器地址,默认为 localhost
  • --port: 服务器端口,默认为 10095

Docker部署

构建镜像

docker build -t funasr-websocket .

使用Docker Compose启动

docker-compose up -d

API说明

WebSocket消息格式

  1. 客户端配置消息:
{
  "mode": "2pass",  // 可选: "2pass", "online", "offline"
  "chunk_size": "5,10",  // 块大小,格式为"encoder_size,decoder_size"
  "wav_name": "audio1",  // 音频标识名称
  "is_speaking": true    // 是否正在说话
}
  1. 客户端音频数据: 二进制音频数据流16kHz采样率16位PCM格式

  2. 服务器识别结果:

{
  "mode": "2pass-online", // 识别模式
  "text": "识别的文本内容",   // 识别结果
  "wav_name": "audio1",    // 音频标识
  "is_final": false        // 是否是最终结果
}

许可证

MIT

Description
Keeeer自用STT_Server模板
Readme 1.8 MiB
Languages
Python 98.3%
Dockerfile 1.7%