177 lines
7.4 KiB
Python
177 lines
7.4 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
# 版本信息
|
|
__version__ = '2.6'
|
|
|
|
# 项目根目录
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
|
|
|
|
# 服务端配置
|
|
class ServerConfig:
|
|
addr = '0.0.0.0'
|
|
port = '6016'
|
|
|
|
# 语音模型选择:'qwen_asr', 'fun_asr_nano', 'sensevoice', 'paraformer'
|
|
model_type = 'qwen_asr'
|
|
|
|
format_num = True # 输出时是否将中文数字转为阿拉伯数字
|
|
format_spell = True # 输出时是否调整中英之间的空格
|
|
|
|
enable_tray = True # 是否启用托盘图标功能
|
|
hotwords_path = Path() / 'hot-server.txt' # 全局热词配置文件路径
|
|
|
|
# 日志配置
|
|
log_level = 'DEBUG' # 日志级别:'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL'
|
|
aligner_idle_timeout = 10 # 对齐引擎空闲多少秒后自动释放显存 (0 表示不释放)
|
|
|
|
# GPU 预加速配置(有识别任务时,提前调高显存频率,降低延迟,需管理员权限运行)
|
|
gpu_boost_enabled = False # 总开关,默认关闭
|
|
gpu_boost_cmd = 'nvidia-smi -lmc 9000' # GPU 预加速命令,锁定显存频率到9000MHz(根据实际 GPU 调整)
|
|
gpu_unboost_cmd = 'nvidia-smi -rmc' # GPU 取消预加速命令,恢复显存到默认频率
|
|
gpu_unboost_timeout = 1 # 空闲多少秒后取消加速
|
|
|
|
# 集成显卡兼容性补丁
|
|
# os.environ["GGML_VK_DISABLE_COOPMAT"] = "1" # AMD集显无法加载 GGUF 模型时尝试
|
|
# os.environ["GGML_VK_DISABLE_F16"] = "1" # 集成显卡解码有误,强制熔断时尝试
|
|
|
|
|
|
|
|
|
|
class ModelDownloadLinks:
|
|
"""模型下载链接配置"""
|
|
# 统一导向 GitHub Release 模型页面
|
|
models_page = "https://github.com/HaujetZhao/CapsWriter-Offline/releases/tag/models"
|
|
|
|
|
|
class ModelPaths:
|
|
"""模型文件路径配置"""
|
|
|
|
# 基础目录
|
|
model_dir = Path() / 'models'
|
|
|
|
# Paraformer 模型路径
|
|
paraformer_dir = model_dir / 'Paraformer' / "speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404-onnx"
|
|
paraformer_model = paraformer_dir / 'model.onnx'
|
|
paraformer_tokens = paraformer_dir / 'tokens.txt'
|
|
|
|
# 标点模型路径
|
|
punc_model_dir = model_dir / 'Punct-CT-Transformer' / 'sherpa-onnx-punct-ct-transformer-zh-en-vocab272727-2024-04-12' / 'model.onnx'
|
|
|
|
# SenseVoice 模型路径,自带标点
|
|
sensevoice_dir = model_dir / 'SenseVoice-Small' / 'Sensevoice-Small-ONNX'
|
|
sensevoice_encoder = sensevoice_dir / 'SenseVoice-Encoder.fp16.onnx'
|
|
sensevoice_decoder = sensevoice_dir / 'SenseVoice-CTC.fp16.onnx'
|
|
sensevoice_tokenizer = sensevoice_dir / 'tokenizer.bpe.model'
|
|
|
|
|
|
# Fun-ASR-Nano 模型路径,自带标点
|
|
fun_asr_nano_gguf_dir = model_dir / 'Fun-ASR-Nano' / 'Fun-ASR-Nano-GGUF'
|
|
fun_asr_nano_gguf_encoder_adaptor = fun_asr_nano_gguf_dir / 'Fun-ASR-Nano-Encoder-Adaptor.fp16.onnx'
|
|
fun_asr_nano_gguf_ctc = fun_asr_nano_gguf_dir / 'Fun-ASR-Nano-CTC.fp16.onnx'
|
|
fun_asr_nano_gguf_llm_decode = fun_asr_nano_gguf_dir / 'Fun-ASR-Nano-Decoder.q5_k.gguf'
|
|
fun_asr_nano_gguf_token = fun_asr_nano_gguf_dir / 'tokens.txt'
|
|
fun_asr_nano_gguf_hotwords = Path() / 'hot-server.txt'
|
|
|
|
# Qwen3-ASR 模型路径,自带标点
|
|
qwen3_asr_gguf_dir = model_dir / 'Qwen3-ASR' / 'Qwen3-ASR-1.7B'
|
|
qwen3_asr_gguf_encoder_frontend = qwen3_asr_gguf_dir / 'qwen3_asr_encoder_frontend.onnx'
|
|
qwen3_asr_gguf_encoder_backend = qwen3_asr_gguf_dir / 'qwen3_asr_encoder_backend.onnx'
|
|
qwen3_asr_gguf_llm_decode = qwen3_asr_gguf_dir / 'qwen3_asr_llm.gguf'
|
|
|
|
# Force-Aligner 模型路径
|
|
force_aligner_gguf_dir = model_dir / 'Qwen3-ForcedAligner' / 'Qwen3-ForcedAligner-0.6B'
|
|
force_aligner_gguf_encoder_frontend = force_aligner_gguf_dir / 'qwen3_aligner_encoder_frontend.int4.onnx'
|
|
force_aligner_gguf_encoder_backend = force_aligner_gguf_dir / 'qwen3_aligner_encoder_backend.int4.onnx'
|
|
force_aligner_gguf_llm_decode = force_aligner_gguf_dir / 'qwen3_aligner_llm.q5_k.gguf'
|
|
|
|
|
|
|
|
class ParaformerArgs:
|
|
"""Paraformer 模型参数配置"""
|
|
|
|
paraformer = ModelPaths.paraformer_model.as_posix()
|
|
tokens = ModelPaths.paraformer_tokens.as_posix()
|
|
num_threads = 4
|
|
sample_rate = 16000
|
|
feature_dim = 80
|
|
decoding_method = 'greedy_search'
|
|
provider = 'cpu'
|
|
debug = False
|
|
|
|
|
|
class SenseVoiceArgs:
|
|
"""SenseVoice 模型参数配置"""
|
|
|
|
encoder_path = ModelPaths.sensevoice_encoder.as_posix()
|
|
decoder_path = ModelPaths.sensevoice_decoder.as_posix()
|
|
tokenizer_path = ModelPaths.sensevoice_tokenizer.as_posix()
|
|
itn = True # 原生输出阿拉伯数字
|
|
onnx_provider = 'CPU' # ONNX 推理后端 (CPU, DML)
|
|
top_k = 8 # 热词检索的 CTC 空间大小
|
|
dml_pad_to = 30 # 开启 DirectML 加速时,短音频统一填充到指定长度,有加速效果
|
|
|
|
|
|
class FunASRNanoGGUFArgs:
|
|
"""Fun-ASR-Nano-GGUF 模型参数配置"""
|
|
|
|
# 模型路径
|
|
encoder_onnx_path = ModelPaths.fun_asr_nano_gguf_encoder_adaptor.as_posix()
|
|
ctc_onnx_path = ModelPaths.fun_asr_nano_gguf_ctc.as_posix()
|
|
decoder_gguf_path = ModelPaths.fun_asr_nano_gguf_llm_decode.as_posix()
|
|
tokens_path = ModelPaths.fun_asr_nano_gguf_token.as_posix()
|
|
|
|
# 显卡加速
|
|
onnx_provider = 'CPU' # ONNX 推理后端 (CPU, DML)
|
|
llm_use_gpu = True # 是否启用 GPU 加速 GGUF 模型
|
|
vulkan_force_fp32 = False # 是否强制 FP32 计算(如果 GPU 是 Intel 集显且出现精度溢出,可设为 True)
|
|
|
|
# 模型细节
|
|
enable_ctc = True # 是否启用 CTC 热词检索
|
|
n_predict = 512 # LLM 最大生成 token 数
|
|
n_threads = None # 线程数,None 表示自动
|
|
similar_threshold = 0.6 # 热词相似度阈值,超过阈值的热词会被传入 llm decoder 的上下文
|
|
max_hotwords = 20 # 传入上下文的热词数量上限
|
|
dml_pad_to = 30 # 开启 DirectML 加速时,短音频统一填充到指定长度,有加速效果
|
|
verbose = False
|
|
|
|
class Qwen3ASRGGUFArgs:
|
|
"""Qwen3-ASR-GGUF 模型参数配置"""
|
|
|
|
# 模型路径
|
|
model_dir = ModelPaths.qwen3_asr_gguf_dir.as_posix()
|
|
encoder_frontend_fn = ModelPaths.qwen3_asr_gguf_encoder_frontend.name
|
|
encoder_backend_fn = ModelPaths.qwen3_asr_gguf_encoder_backend.name
|
|
llm_fn = ModelPaths.qwen3_asr_gguf_llm_decode.name
|
|
|
|
# 显卡加速
|
|
onnx_provider = 'CPU' # ONNX 推理后端 (CPU, DML)
|
|
llm_use_gpu = True # 是否启用 GPU 加速 GGUF 模型
|
|
|
|
# 模型细节
|
|
n_ctx = 2048 # 上下文窗口大小
|
|
chunk_size = 80.0 # 分段长度(秒)
|
|
memory_num = 1 # 记忆段数
|
|
dml_pad_to = 30 # 开启 DirectML 加速时,短音频统一填充到指定长度,有加速效果
|
|
verbose = False
|
|
|
|
|
|
class ForceAlignerGGUFArgs:
|
|
"""Force-Aligner-GGUF 模型参数配置"""
|
|
|
|
# 模型路径
|
|
model_dir = ModelPaths.force_aligner_gguf_dir.as_posix()
|
|
encoder_frontend_fn = ModelPaths.force_aligner_gguf_encoder_frontend.name
|
|
encoder_backend_fn = ModelPaths.force_aligner_gguf_encoder_backend.name
|
|
llm_fn = ModelPaths.force_aligner_gguf_llm_decode.name
|
|
|
|
# 显卡加速
|
|
onnx_provider = 'CPU' # ONNX 推理后端 (CPU, DML)
|
|
llm_use_gpu = False # 是否启用 GPU 加速 GGUF 模型
|
|
|
|
# 对齐细节
|
|
n_ctx = 3072 # 上下文窗口大小
|
|
dml_pad_to = 30 # 开启 DirectML 加速时,短音频统一填充到指定长度,有加速效果
|
|
|