[TOC]
基于开源项目 CapsWriter 二次开发,非常感谢这位作者的无私奉献
支持 中英
两张语言识别
个人建议不启用标点模型(因为太慢了,也没啥用)
服务器请选择GPU服务器个人测试到 没有GPU的服务器好慢
处理器 | 显卡 | 速度 | |
---|---|---|---|
I7-11800H @ 2.3GHz | RTX 3050 | 毫秒级(看上图 没具体测试) | 个人的笔记本 |
Inter Xeon Gold 6148 @ 2.4GHz | 无 | 10s 以上 | 服务器 |
测试对 某验,某象 的语音验证码识别是没有问题的
无论是源码方式还是懒人包都需要下载模型
默认加载所有语音模型 不需要的请修改配置文件:
ParaFormerPath_En: Null # 英文语音模型
TokensPath_En: Null # 英文语音模型
pip install -r requirements.txt
python main.py
懒人包由 nuitka 编译
直接运行 VoiceServer.exe 文件
需要先安装 nuitka
pip install nuitka
nuitka --onefile --standalone --include-package=uvicorn --include-package=fastapi --nofollow-import-to=*.test --nofollow-import-to=numba --noinclude-default-mode=error --enable-plugin=upx --jobs=16 --output-dir=build --windows-icon-from-ico=./resource/logo.ico --output-filename=VoiceServer .\main.py
配置文件名:startup_param.yaml
host: '0.0.0.0' # 监听地址
port: 4563 # 监听端口
title: VoiceServer # 标题
SaveCache: False # 保存文件缓存
ForMatPunc: False # 处理标点符号(开启这个会加载标点模型)
ForMatSpell: True # 处理空格
ForMatNum: True # 转换数字
ModelPath: ./models # 模型文件夹
ParaFormerPath_Zh: ${ModelPath}/paraformer-offline-zh/model.onnx # 中文语音模型
TokensPath_Zh: ${ModelPath}/paraformer-offline-zh/tokens.txt # 中文语音模型
#ParaFormerPath_En: ${ModelPath}/paraformer-offline-en/model.onnx # 英文语音模型
#TokensPath_En: ${ModelPath}/paraformer-offline-en/tokens.txt # 英文语音模型
ParaFormerPath_En: Null # 英文语音模型
TokensPath_En: Null # 英文语音模型
PuncModelPath: ${ModelPath}/punc_ct-transformer_cn-en # 标点模型
POST /api/asr HTTP/1.1
Content-Type: application/json
{"Language":"zh","HotWords":"","UpFile_B64":""}
POST /api/asr
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
content-type | string | application/json | 是 |
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
Language | string | 语言类型 默认zh | 否 |
HotWords | string | 热词列表 使用逗号(,)分割 | 否 |
UpFile_B64 | string | 音频文件的base64编码 | 是 |
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
code | int | 错误码 正确 200 大于200失败 | 是 |
result | dict | 结果信息 | 否 |
message | string | 错误信息 | 是 |
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
timestamps | list | 每个文字对应的时间点 | 是 |
tokens | list | 文字列表 | 是 |
duration | float | 音频文件时长 | 是 |
text | string | 最后的返回结果(包括热词处理后的) | 是 |
import base64
import requests
AudioFile = b''
result = requests.post('http://127.0.0.1/api/asr', json={
'Language': 'zh',
'HotWords': '',
'UpFile_B64': base64.b64encode(AudioFile).decode()
}, headers={
'Content-Type': 'application/json'
})
print(result)
非常感谢你的支持