外观
FunASR Offline ASR Server 配置参考
本文档详细说明 fanasr-asr-offline-server 离线语音识别服务的配置文件 config.json 的所有分组、字段含义、默认值及多 Profile 配置。
1. 完整配置文件示例 (config.json)
json
{
"server": {
"host": "0.0.0.0",
"port": 10094,
"healthPath": "/health",
"asrPath": "/asr",
"recognizePath": "/recognize",
"transcriptionsPath": "/v1/audio/transcriptions",
"maxPayloadBytes": 67108864
},
"concurrency": {
"workerThreads": 2,
"maxQueueSize": 128,
"numThreads": 1,
"instancePoolSize": 2
},
"asr": {
"activeModel": "funasr-paraformer-large-zh-onnx",
"models": {
"funasr-paraformer-large-zh-onnx": {
"modelDir": "funasr-paraformer-large-zh-onnx",
"vadDir": "funasr-fsmn-vad-zh-onnx",
"puncDir": "funasr-ct-transformer-zh-onnx"
},
"funasr-sensevoicesmall-zh-cantonese-en-ja-ko-onnx": {
"modelDir": "funasr-sensevoicesmall-zh-cantonese-en-ja-ko-onnx",
"language": "auto"
}
},
"quantize": true,
"sampleRate": 16000,
"useItn": true,
"hotwordsFile": "hotword.json",
"defaultHotwordProfile": "default"
},
"ffmpeg": {
"enabled": true,
"ffmpegPath": "ffmpeg",
"timeoutSeconds": 30,
"sampleRate": 16000,
"channels": 1
},
"logging": {
"dir": "logs",
"level": "info"
}
}2. 字段分域详解
2.1 server — 网络与路由
| 字段名 | 类型 | 默认值 | 说明与取值范围 |
|---|---|---|---|
host | string | "0.0.0.0" | 监听的网卡 IP 地址。"0.0.0.0" 绑定所有网卡。 |
port | uint16 | 10094 | HTTP 服务监听端口。 |
healthPath | string | "/health" | 健康检查端点路径(兼容量 /health、/healthz)。返回服务状态、活跃模型、模型类型、正常运行时间与累计处理请求数。 |
asrPath | string | "/asr" | 标准文件转写接口路径。 |
recognizePath | string | "/recognize" | 兼容识别接口路径(功能与 /asr 完全一致)。 |
transcriptionsPath | string | "/v1/audio/transcriptions" | 兼容 OpenAI Whisper API 规范的识别端点路径。 |
maxPayloadBytes | size_t | 67108864 (64MB) | 允许上传的单个音频最大字节数。在 Socket 接收和 Content-Length 阶段即时校验,超过后返回 413 Payload Too Large。 |
2.2 concurrency — 并发与队列管理
| 字段名 | 类型 | 默认值 | 说明与调优建议 |
|---|---|---|---|
workerThreads | int32 | 2 | HTTP 请求处理工作线程数。每个 Worker 从任务队列取出 Socket 进行连接解析与调度。推荐设置为 2 ~ CPU 核心数。 |
instancePoolSize | int32 | 2 | FunASR 引擎实例池容量。预先初始化指定数量的模型实例,实现多个请求真正的多实例并行推理(缺省时自动等于 workerThreads)。 |
maxQueueSize | int32 | 128 | 请求等待队列最大容量。当并发突发导致排队请求数达到该值时,后续请求立即返回 503 Service Unavailable 快速熔断并断开连接,杜绝高并发堆积导致内存 OOM。 |
numThreads | int32 | 1 | 每个 Worker / 实例分配的底层计算线程数。 |
2.3 asr — 模型与多 Profile 配置
| 字段名 | 类型 | 默认值 | 说明与调优建议 |
|---|---|---|---|
activeModel | string | "funasr-paraformer-large-zh-onnx" | 当前激活的模型 Profile ID。必须匹配 models 字典中的某个 Key。 |
models | object | {...} | 模型 Profile 字典映射表。 |
quantize | bool | true | int8 量化模型全局默认开关。true 加载 model_quant.onnx,内存节省 60%,CPU 推理速度提升 2~3 倍;false 加载 float32 model.onnx。 |
sampleRate | int32 | 16000 | 模型输入音频采样率(固定 16000 Hz)。 |
useItn | bool | true | 逆文本归一化开关(Inverse Text Normalization)。可在 HTTP 请求中通过 use_itn 参数覆盖。 |
hotwordsFile | string | "hotword.json" | 独立热词配置文件路径。 |
defaultHotwordProfile | string | "default" | 默认使用的热词 Profile ID。 |
模型 Profile 字段明细:
- Paraformer 模型 Profile (
funasr-paraformer-large-zh-onnx):modelDir: 模型目录相对/绝对路径(目录下包含model_quant.onnx、am.mvn、config.yaml、tokens.json)。vadDir: FSMN-VAD 模型目录(负责整段长音频切句)。puncDir: CT-Transformer 标点恢复模型目录(负责插入标点符号)。
- SenseVoice 模型 Profile (
funasr-sensevoicesmall-zh-cantonese-en-ja-ko-onnx):modelDir: SenseVoiceSmall 模型目录(目录下包含model_quant.onnx、am.mvn、config.yaml、tokens.json)。language: 语种代码("auto"/"zh"/"en"/"yue"/"ja"/"ko")。原生内置标点与富文本标签。
2.4 hotword.json — 独立热词配置
json
{
"defaultHotwordProfile": "default",
"hotwordProfiles": {
"default": {
"words": [
"阿里巴巴",
"通义千问",
"智能语音平台"
]
}
}
}2.5 ffmpeg — 音频预处理与重采样
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled | bool | true | 是否启用 ffmpeg 自动转码支持(支持 mp3, m4a, ogg, aac, flac 等各类音频格式自动转 16kHz PCM)。 |
ffmpegPath | string | "ffmpeg" | ffmpeg 可执行文件路径。默认 "ffmpeg"(自动搜索系统 PATH)。 |
timeoutSeconds | int32 | 30 | ffmpeg 进程转码基础超时时间(秒)。 |
sampleRate | int32 | 16000 | 内部推理目标采样率(固定为 16kHz)。 |
channels | int32 | 1 | 内部推理声道数(固定为单声道 Mono)。 |
2.6 logging — 日志配置
| 字段名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
dir | string | "logs" | 日志输出目录,服务会自动按天滚动切片(fanasr_asr_offline-YYYY-MM-DD.log)。 |
level | string | "info" | 日志级别("info"、"warn"、"error")。 |