# asr_proxy **Repository Path**: andy150/asr_proxy ## Basic Information - **Project Name**: asr_proxy - **Description**: ASR(自动语音识别)代理服务器是一个高性能的中间件,用于在客户端和FunASR服务器之间建立WebSocket连接,实现实时语音转文字功能。该代理支持多路复用、负载均衡以及通过HTTP或Redis传输识别结果。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-28 - **Last Updated**: 2026-02-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ASR代理服务器 ASR(自动语音识别)代理服务器是一个高性能的中间件,用于在客户端和FunASR服务器之间建立WebSocket连接,实现实时语音转文字功能。该代理支持多路复用、负载均衡以及通过HTTP或Redis传输识别结果。 ## 功能特性 - **实时语音识别**:基于WebSocket的低延迟语音传输 - **负载均衡**:支持多个FunASR服务器实例 - **多种传输方式**:支持HTTP和Redis两种结果传输方式 - **连接管理**:自动管理WebSocket连接生命周期 - **错误处理**:完善的异常处理和恢复机制 - **监控统计**:实时监控活跃会话数 ## 架构设计 ``` [Client App] <--WebSocket--> [ASR Proxy] <--WebSocket--> [FunASR Server] | +---> HTTP/Redis --> [Orchestrator] ``` ## 安装要求 - Python 3.8+ - Redis服务器(可选,用于高性能传输) ## 配置说明 编辑 `app/config.py` 文件: ```python # FunASR服务器地址列表 - 支持负载均衡 FUNASR_SERVERS = [ "ws://localhost:10096", # "ws://localhost:10097", # 添加更多服务器以实现负载均衡 ] # 编排器URL - 用于HTTP方式传输结果 ORCHESTRATOR_URL = "http://127.0.0.1:8000/realtime" # Redis配置 - 用于高性能消息传递 USE_REDIS = False # 设置为True以启用Redis,False使用HTTP REDIS_HOST = "127.0.0.1" REDIS_PORT = 6379 # 服务器设置 PROXY_HOST = "0.0.0.0" # 绑定地址 PROXY_PORT = 9000 # 端口 ``` ## 使用方法 ### 1. 启动代理服务器 使用Python直接启动: ```bash cd asr_proxy python -m app.asr_proxy_optimized ``` 或使用启动脚本(见下面说明) ### 2. 客户端连接 客户端通过WebSocket连接到代理服务器: ```javascript const ws = new WebSocket('ws://your-server:9000/call-id'); ws.onopen = () => { // 发送音频数据 ws.send(audioData); }; ws.onmessage = (event) => { // 接收识别结果 console.log(event.data); }; ``` ### 3. 识别结果传输 根据配置,识别结果将通过以下方式之一发送: - **HTTP方式**:POST到 `ORCHESTRATOR_URL` - **Redis方式**:发布到 "asr_result" 频道 ## 性能优化 - **连接池**:有效管理与FunASR服务器的连接 - **异步处理**:非阻塞I/O操作 - **负载均衡**:智能分配请求到不同的FunASR实例 - **资源清理**:自动清理不再使用的资源 ## 错误处理 - 自动重连机制 - 连接超时控制 - 异常捕获和日志记录 - 资源清理保证 ## 目录结构 ``` asr_proxy/ ├── app/ │ ├── asr_proxy_optimized.py # 主应用文件 │ ├── config.py # 配置文件 │ ├── utils/ │ │ └── audio_utils.py # 音频处理工具 │ └── scripts/ │ ├── start_proxy.sh # Linux启动脚本 │ └── start_proxy.bat # Windows启动脚本 ├── requirements.txt # 依赖包列表 └── README.md # 本文件 ``` ## 开发说明 ### 添加新功能 如需扩展功能,请遵循以下规范: 1. 所有配置项放在 `config.py` 中 2. 使用异步编程模型 3. 添加适当的错误处理和日志记录 4. 保持代码清晰简洁 ### 测试 建议在部署前进行充分测试,包括: - 连接稳定性测试 - 并发连接测试 - 错误恢复能力测试 ## 维护和支持 如需技术支持或报告问题,请联系开发团队。