版本信息
- 产品版本:2.4.10
- 代码版本:bfac45ea958477a2c012d67ae1eb2a49e648f7e4
更新说明
现有机制下,所有启用的模型都会在 OddASR 启动的时候检测模型是否已下载,若未下载会自动开始下载,而部分模型(如:SenseVoice ONNX)在国内下载不稳定,普通的环境经常下载失败,导致普通的、不会github上网的非技术人员在使用 OddASR 的时候体验不佳。
上周用 OddASR 做了一个录音转写的产品:小奥录音,考虑到产品的用户群主要是普通用户,因此,决定默认禁用一些下载不稳定的模型。
但是 OddASR 的所有模型的功能都还是完整的,知道如何稳定下载各模型的技术人员可以自行修改配置文件,将相应的模型启用起来即可。
详细功能修改
- 默认禁用 moonshine, SenseVoice ONNX, SenseVoiceSmall 模型,保留 Paraformer 模型并设为默认模型。
- 配置文件中可指定每一个模型的路径,去掉原先根据模型类型走不同分支的判断处理,以简化内部代码逻辑。
- 配置文件中可指定每一个模型所支持语言类别,初始化的时候默认以支持的语言列表中的第一种语言来加载,但是可以在每个转写任务的请求中指定当前转写任务应该使用的语言,以优化模型转写的准确率。
- 修复Moonshine模型加载错误的bug。
版本特性
2-Pass ASR 架构
OddASR 2.x 采用 2-Pass ASR 策略,结合流式识别和离线识别:
- 第一遍(流式):使用流式模型实时输出中间结果
- 第二遍(离线):使用离线模型对完整音频进行精细化识别
- 标点恢复:自动添加标点符号
核心特性
- 多模型支持:Paraformer, Moonshine, SenseVoice, SenseVoice FunASR 等模型
- VAD 智能检测:自动检测语音结束,无需手动提交音频
- WebSocket 流式输出:实时获取部分识别结果
- OpenAI API 兼容:直接替换 Whisper API,无需修改代码
快速开始
安装
- 普通用户:pypi安装并启动
pip install oddasr
oddasr-server
- 技术人员:源码安装
git clone https://github.com/oddmeta/oddasr.git
cd oddasr
pip install -r requirements.txt
python app.py
服务启动后:
- HTTP API: http://localhost:9002/v1
- WebSocket: ws://localhost:9003/v1/realtime
无需
config.json配置文件,服务使用内置DEFAULT_CONFIG启动。如需自定义,创建config.json覆盖需要修改的项即可。切换模型时若配置文件不存在会自动创建。
Python 客户端
OddAsr支持OpenAI兼容接口,推荐使用OpenAI的API接口来调用。
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:9002/v1",
api_key="dummy"
)
with open("audio.wav", "rb") as f:
result = client.audio.transcriptions.create(
model="oddasr-2",
response_format="text",
model_type="paraformer-funasr",
file=f
)
print(result.text)
版本历史
v2.x (当前)
- 全新 2-Pass ASR 架构
- 支持 Paraformer, Moonshine ONNX, SenseVoice ONNX, SenseVoiceSmall 多后端
- 前端动态加载模型选项,支持 API 切换模型(无需重启)
- Silero VAD 语音活动检测
- WebSocket 流式输出
- OpenAI API 完全兼容
系统要求
- Python 3.8+
- CPU: 推荐 4 核以上
- 内存: 6GB+ (取决于并发数)
- 磁盘: 3GB+ (模型存储)
常见问题
首次运行需要下载模型吗?
是的,首次运行需要下载 ASR 模型。可以通过设置 HuggingFace 镜像加速:
Windows 环境下,设置镜像为:
set HF_ENDPOINT=https://hf-mirror.com
Linux/MacOS 环境下,设置镜像为:
export HF_ENDPOINT=https://hf-mirror.com
如何启用默认被禁用的模型
支持,在配置中设置 "enabled": True:
{
"model_type": ModelType.MOONSHINE.value,
"display_name": "Moonshine ONNX",
"enabled": True,
"output_type": ["text"],
...
}
{
"model_type": ModelType.PARAFORMER_FUNASR.value,
"display_name": "Paraformer",
"enabled": True,
"output_type": ["text", "srt", "vtt", "json", "verbose_json", "spk"],
...
}
{
"model_type": ModelType.PARAFORMER_FUNASR.value,
"display_name": "Paraformer",
"enabled": True,
"output_type": ["text", "srt", "vtt", "json", "verbose_json", "spk"],
...
}
支持 GPU 加速吗?
支持,在配置中设置 "device": "cuda:0":
{
"models": {
"streaming": { "device": "cuda:0" },
"offline": { "device": "cuda:0" }
}
}
默认模型为 FunASR (Paraformer)。默认 VAD 模型为 Silero VAD。默认返回格式为 text。默认使用 CPU。
如何调整识别灵敏度?
调整 VAD 参数:
{
"asr": {
"vad_silence_duration": 0.5, // 静音后多久触发
"vad_speech_padding": 0.2, // 语音结束后缓冲
"vad_model_threshold": 0.5 // 语音检测阈值
}
}
获取帮助
- 文档:docs/
- 问题反馈:GitHub Issues
- 完整 API 文档:oddasr-api-guideline.md
- 贡献指南:CONTRIBUTING.md