# 具有说话人验证功能的实时流式 SenseVoice **Repository Path**: backend-code---personal/sensevoice-main ## Basic Information - **Project Name**: 具有说话人验证功能的实时流式 SenseVoice - **Description**: 该服务实现了一个端到端的实时语音交互系统,核心流程为:音频流接收→VAD 检测语音片段→(可选)说话人验证→ASR 转文本→表情格式化→实时返回。适用于需要实时语音转写并增强可读性(如带情感 / 事件表情)的场景,如实时会议记录、语音助手等。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-07-30 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 具有说话人验证功能的实时流式 SenseVoice 它继承了 SenseVoice 的一些增强功能: - **语音活动检测 (VAD)** - **实时流式识别** - **说话人验证 (Speaker Verification)**。 ## 更新日志 #### 2024-09-30 1. 通过累积音频数据优化了说话人验证处理流程,以提高识别准确率。 2. 在识别结果中添加了 `logprob` 字段,代表识别的置信度,供上层应用程序使用。 ## 安装 首先,将此仓库克隆到本地机器: ```bash git clone https://github.com/0x5446/api4sensevoice.git cd api4sensevoice ``` 然后,使用以下命令安装所需的依赖项: ```bash conda create -n api4sensevoice python=3.10 conda activate api4sensevoice conda install -c conda-forge ffmpeg pip install -r requirements.txt ``` ## 运行 ### 单句识别 API 服务器 ```python if __name__ == "__main__": parser = argparse.ArgumentParser(description="运行 FastAPI 应用并指定端口。") parser.add_argument('--port', type=int, default=7000, help='运行 FastAPI 应用的端口号。') parser.add_argument('--certfile', type=str, default='path_to_your_certfile', help='SSL 证书文件') parser.add_argument('--keyfile', type=str, default='path_to_your_keyfile', help='SSL 密钥文件') args = parser.parse_args() uvicorn.run(app, host="0.0.0.0", port=args.port, ssl_certfile=args.certfile, ssl_keyfile=args.keyfile) ``` 以上代码位于 `server.py` 文件的末尾。您可以修改它以定义端口、证书文件和密钥文件,然后直接运行 `python server.py` 来启动 API 服务。 您也可以通过命令行参数设置这些选项,例如: ```bash python server.py --port 8888 --certfile path_to_your_certfile --keyfile path_to_your_key ``` #### API 描述 ##### 转录音频 - 路径: `/transcribe` - 方法: `POST` - 摘要: 转录音频 - 请求体: - `multipart/form-data` - 参数: - `file` (必填): 要转录的音频文件 - 响应: - 200 成功 - 内容类型: `application/json` - 架构: - `code` (integer): 状态码 - `msg` (string): 元信息 - `data` (object): 响应对象 - 请求示例: ```bash curl -X 'POST' \ 'http://yourapiaddress/transcribe' \ -H 'accept: application/json' \ -H 'Content-Type: multipart/form-data' \ -F 'file=@path_to_your_audio_file' ``` - 响应示例 (200 成功): ```json { "code": 0, "msg": "Success", "data": { // 转录结果 } } ``` ### 流式实时识别 WebSocket 服务器 ```python if __name__ == "__main__": parser = argparse.ArgumentParser(description="运行 FastAPI 应用并指定端口。") parser.add_argument('--port', type=int, default=27000, help='运行 FastAPI 应用的端口号。') parser.add_argument('--certfile', type=str, default='path_to_your_certfile', help='SSL 证书文件') parser.add_argument('--keyfile', type=str, default='path_to_your_keyfile', help='SSL 密钥文件') args = parser.parse_args() uvicorn.run(app, host="0.0.0.0", port=args.port, ssl_certfile=args.certfile, ssl_keyfile=args.keyfile) ``` 以上代码位于 `server_wss.py` 文件的末尾。您可以修改它以定义端口、证书文件和密钥文件,然后直接运行 `python server_wss.py` 来启动 WebSocket 服务。 您也可以通过命令行参数设置这些选项,例如: ```bash python server_wss.py --port 8888 --certfile path_to_your_certfile --keyfile path_to_your_key ``` 如果您想启用说话人验证 (Speaker Verification): 1. 准备好待验证说话人的语音音频文件:采样率 16000、单声道、16 位宽、WAV 格式,并将它们放置在 `speaker` 目录中。 2. 修改 `server_wss.py` 的以下部分,将列表中的文件路径替换为您自己的文件(可以添加多个文件,匹配其中任意一个即视为验证通过,并继续进行 ASR 推理)。 ```python reg_spks_files = [ "speaker/speaker1_a_cn_16k.wav" ] ``` #### WebSocket 参数 - 端点: /ws/transcribe - 查询参数: - sv:是否启用说话人验证 - 可选 - 默认值: 0 - 上游数据 (发送到服务器): PCM 二进制数据 - 通道数: 1 (单声道) - 采样率: 16000 Hz - 采样深度: 16 bit - 下游数据 (服务器返回): Json 字符串 - 架构: - `code` (integer): 状态码 - `msg` (string): 元信息 - `data` (object): 响应对象 #### 客户端测试页面 - `client_wss.html` - 将 `wsUrl` 更改为您自己的 WebSocket 服务器地址以进行测试 ```javascript ws = new WebSocket(`wss://your_wss_server_address/ws/transcribe${sv ? '?sv=1' : ''}`); ``` ## 发展计划 (Roadmap) - [x] 单句识别(适用于短语音段) - [x] 流式实时识别 - [x] 带说话人验证的流式实时识别 - [ ] 延迟优化 ## 贡献 欢迎任何形式的贡献,包括但不限于: - 报告错误 - 请求功能 - 提交代码改进 - 更新文档 ## 许可证 本项目遵循 https://opensource.org/license/mit。详细信息请参阅 LICENSE 文件。 ## 依赖项目 - https://github.com/FunAudioLLM/SenseVoice - https://modelscope.cn/models/iic/speech_campplus_sv_zh_en_16k-common_advanced (说话人验证模型) - https://modelscope.cn/models/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch (语音活动检测模型) ---