跳到正文

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 — 网络与路由

字段名类型默认值说明与取值范围
hoststring"0.0.0.0"监听的网卡 IP 地址。"0.0.0.0" 绑定所有网卡。
portuint1610094HTTP 服务监听端口。
healthPathstring"/health"健康检查端点路径(兼容量 /health/healthz)。返回服务状态、活跃模型、模型类型、正常运行时间与累计处理请求数。
asrPathstring"/asr"标准文件转写接口路径。
recognizePathstring"/recognize"兼容识别接口路径(功能与 /asr 完全一致)。
transcriptionsPathstring"/v1/audio/transcriptions"兼容 OpenAI Whisper API 规范的识别端点路径。
maxPayloadBytessize_t67108864 (64MB)允许上传的单个音频最大字节数。在 Socket 接收和 Content-Length 阶段即时校验,超过后返回 413 Payload Too Large

2.2 concurrency — 并发与队列管理

字段名类型默认值说明与调优建议
workerThreadsint322HTTP 请求处理工作线程数。每个 Worker 从任务队列取出 Socket 进行连接解析与调度。推荐设置为 2 ~ CPU 核心数。
instancePoolSizeint322FunASR 引擎实例池容量。预先初始化指定数量的模型实例,实现多个请求真正的多实例并行推理(缺省时自动等于 workerThreads)。
maxQueueSizeint32128请求等待队列最大容量。当并发突发导致排队请求数达到该值时,后续请求立即返回 503 Service Unavailable 快速熔断并断开连接,杜绝高并发堆积导致内存 OOM。
numThreadsint321每个 Worker / 实例分配的底层计算线程数。

2.3 asr — 模型与多 Profile 配置

字段名类型默认值说明与调优建议
activeModelstring"funasr-paraformer-large-zh-onnx"当前激活的模型 Profile ID。必须匹配 models 字典中的某个 Key。
modelsobject{...}模型 Profile 字典映射表
quantizebooltrueint8 量化模型全局默认开关true 加载 model_quant.onnx,内存节省 60%,CPU 推理速度提升 2~3 倍;false 加载 float32 model.onnx
sampleRateint3216000模型输入音频采样率(固定 16000 Hz)。
useItnbooltrue逆文本归一化开关(Inverse Text Normalization)。可在 HTTP 请求中通过 use_itn 参数覆盖。
hotwordsFilestring"hotword.json"独立热词配置文件路径。
defaultHotwordProfilestring"default"默认使用的热词 Profile ID。

模型 Profile 字段明细:

  • Paraformer 模型 Profile (funasr-paraformer-large-zh-onnx):
    • modelDir: 模型目录相对/绝对路径(目录下包含 model_quant.onnxam.mvnconfig.yamltokens.json)。
    • vadDir: FSMN-VAD 模型目录(负责整段长音频切句)。
    • puncDir: CT-Transformer 标点恢复模型目录(负责插入标点符号)。
  • SenseVoice 模型 Profile (funasr-sensevoicesmall-zh-cantonese-en-ja-ko-onnx):
    • modelDir: SenseVoiceSmall 模型目录(目录下包含 model_quant.onnxam.mvnconfig.yamltokens.json)。
    • language: 语种代码("auto" / "zh" / "en" / "yue" / "ja" / "ko")。原生内置标点与富文本标签。

2.4 hotword.json — 独立热词配置

json
{
  "defaultHotwordProfile": "default",
  "hotwordProfiles": {
    "default": {
      "words": [
        "阿里巴巴",
        "通义千问",
        "智能语音平台"
      ]
    }
  }
}

2.5 ffmpeg — 音频预处理与重采样

字段名类型默认值说明
enabledbooltrue是否启用 ffmpeg 自动转码支持(支持 mp3, m4a, ogg, aac, flac 等各类音频格式自动转 16kHz PCM)。
ffmpegPathstring"ffmpeg"ffmpeg 可执行文件路径。默认 "ffmpeg"(自动搜索系统 PATH)。
timeoutSecondsint3230ffmpeg 进程转码基础超时时间(秒)
sampleRateint3216000内部推理目标采样率(固定为 16kHz)。
channelsint321内部推理声道数(固定为单声道 Mono)。

2.6 logging — 日志配置

字段名类型默认值说明
dirstring"logs"日志输出目录,服务会自动按天滚动切片(fanasr_asr_offline-YYYY-MM-DD.log)。
levelstring"info"日志级别("info""warn""error")。

文档与代码在同一仓库维护,现有 Markdown 是唯一内容源。