跳到正文

配置参考

配置

config.json 按职责分组,顶层为 server / concurrency / timeouts / transport / mp3 / tts 六个对象。缺省的分组或字段都会回退到默认值, 但 tts.activeModeltts.models 为必填。

server(网络监听与运行时)

字段类型默认值说明
listenHoststring"127.0.0.1"实际监听地址
listenPortuint169080实际监听端口
publicBaseUrlstring"http://127.0.0.1:9080"返回给客户端的 wav URL 前缀,可与 listenHost 不同(如部署在反代后)
logDirstring"logs"日志目录;相对路径按运行目录解析,按天滚动
startupScanCachebooltrue启动时是否扫描已有 wav 缓存
maxCacheEntriesint3210000wav 缓存条数上限;超限按 O(1) LRU 批量收敛到 90% 水位。正在 /wav 下载或缓存流播放的条目持有读取租约,不参与删除;失败删除会记录并重试。0 表示不限制,负数为配置错误;启动扫描按文件时间恢复顺序并收敛历史缓存

concurrency(并发与线程)

字段类型默认值说明
workerThreadsint32CPU 核心数HTTP 请求处理线程数(accept 之后入队列,由工作线程消费)
ttsPoolSizeint32max(CPU/2, 1)预热的 OfflineTts 实例数;越大并发合成能力越强,但占用更多内存
ttsModelNumThreadsint322单个 OfflineTts 实例内部的 ONNX Runtime 推理线程数;调低偏吞吐,调高偏单请求低 RTF
maxQueuedRequestsint320 (不限制)等待队列上限;超出时新连接立即返回 503
maxActiveStreamsint3224同时处理的 GET /tts-stream/<id>.mp3 上限;超出时在发送音频头前返回 503

timeouts(超时,单位 ms)

字段类型默认值说明
socketReadMsint325000HTTP socket 读超时;设为 0 表示使用系统默认
socketSendMsint3215000HTTP socket 写超时;慢读或断连客户端超过该时间会使本次请求失败
ffmpegExitMsint325000启动探测和请求处理时等待 ffmpeg 退出的超时时间;超时后会 kill 并回收子进程、记录失败
streamMaxDurationMsint3260000单条流式 GET /tts-stream/<id>.mp3 允许占用连接的最长时间;到点后服务端主动断开并释放 worker

transport(传输限制)

字段类型默认值说明
wavSendChunkBytessize_t65536GET /wav/... 流式发送的块大小
maxRequestBodyBytessize_t1048576单请求体最大字节数;超过直接 400

mp3(流式 MP3 编码)

字段类型默认值说明
encoderPathstring"ffmpeg"流式 TTS 使用的 MP3 编码器路径;启动时会执行一次最小 MP3 编码探测;mod_shout 需要 MPEG 音频,服务通过 ffmpeg 把 PCM 实时编码为 MP3
bitrateKbpsint32192流式 TTS 转 MP3 的 CBR 码率,范围 64..320
volumeGainDbfloat3.0流式 TTS 转 MP3 时追加的响度增益,单位 dB,范围 -20..20;正增益会同时启用 limiter 降低削波风险

tts(模型选择)

字段类型默认值说明
activeModelstring必填当前加载的具体模型 profile id,必须存在于 tts.models
modelsobject必填模型 profile 表;每个 profile 的 backend 才是 sherpa-onnx 后端类型

tts.activeModel 用于选择具体模型,例如 matcha-icefall-zh-envits-zh-ll。 profile 内的 backend 只表达 sherpa-onnx 初始化分支,取值为 matchavitskokoro。旧的扁平顶层字段(listenHost/workerThreads/activeTtsModel/ ttsModels 等)已迁移到上述分组,不再做兼容转换。

profile 通用字段:

字段后端说明
backend全部必填,matcha / vits / kokoro
modelDir全部必填,模型目录;相对 models/,也可填绝对路径
speakerNames全部可选,/health.model.speakers 的名称表;未配置时 Kokoro 使用内置名称,其它模型返回空数组
lengthScale全部可选,默认 1.0,必须 > 0
noiseScale / noiseScaleWVITS可选,默认 0.667 / 0.8
ruleFsts / dictDirVITS可选,逗号分隔 FST 文件或字典目录,相对 modelDir
dictDir / langKokoro可选,lang 默认 zh

默认配置同时声明四个 profile,切换模型只需修改 tts.activeModel

json
{
  "tts": {
    "activeModel": "matcha-icefall-zh-en",
    "models": {
      "matcha-icefall-zh-en": {
        "backend": "matcha",
        "modelDir": "matcha-icefall-zh-en",
        "acousticModel": "model-steps-3.onnx",
        "vocoder": "vocos-16khz-univ.onnx",
        "tokens": "tokens.txt",
        "lexicon": "lexicon.txt",
        "dataDir": "espeak-ng-data",
        "noiseScale": 0.667,
        "lengthScale": 1.0
      },
      "vits-aishell3": {
        "backend": "vits",
        "modelDir": "vits-zh-aishell3",
        "model": "vits-aishell3.onnx",
        "tokens": "tokens.txt",
        "lexicon": "lexicon.txt",
        "noiseScale": 0.667,
        "noiseScaleW": 0.8,
        "lengthScale": 1.0
      },
      "vits-zh-ll": {
        "backend": "vits",
        "modelDir": "sherpa-onnx-vits-zh-ll",
        "model": "model.onnx",
        "tokens": "tokens.txt",
        "lexicon": "lexicon.txt",
        "ruleFsts": "phone.fst,number.fst",
        "lengthScale": 1.0,
        "speakerNames": ["ll_0", "ll_1", "ll_2", "ll_3", "ll_4"]
      },
      "kokoro-multi-lang-v1_1": {
        "backend": "kokoro",
        "modelDir": "kokoro-multi-lang-v1_1",
        "model": "model.onnx",
        "voices": "voices.bin",
        "tokens": "tokens.txt",
        "lexicon": "lexicon-us-en.txt,lexicon-zh.txt",
        "dataDir": "espeak-ng-data",
        "dictDir": "dict",
        "lang": "zh",
        "lengthScale": 1.0
      }
    }
  }
}

Kokoro kokoro-multi-lang-v1_1 是中英双语多音色模型。Aishell3 vits-zh-aishell3sherpa-onnx-vits-zh-ll 都是多说话人中文模型, 都可通过 speakerId 选择音色。

默认监听:

text
http://127.0.0.1:9080

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