PaddleSpeech 服务端 ONNX 推理会话配置详解:读懂 `paddlespeech.server.utils.onnx_infer` 的 `get_sess` 实现
人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载本篇技术指南围绕 PaddleSpeech 服务端工具模块paddlespeech.server.utils.onnx_infer文档入口见 paddlespeech.server.utils.onnx_infer 模块 API展开深入剖析其核心函数get_sess如何基于 ONNX Runtime 创建推理会话、如何通过配置字典控制执行设备、图优化级别与线程数。读完本文你将能够看懂服务端 ASR / TTS 在线引擎的 ONNX 推理参数体系并能在实际部署配置文件中精准调优sess_conf。一、模块定位服务端 ONNX 推理的统一入口在 PaddleSpeech 的服务端架构中paddlespeech/server/utils/onnx_infer.py承担着为 ONNX 模型创建推理会话这一基础职责。整个模块非常精炼只对外暴露一个函数get_sess(model_path, sess_conf)读取一个.onnx模型文件路径和一份会话配置字典返回一个onnxruntime.InferenceSession实例。从源码结构看见 onnx_infer.py该函数内部完成了三件核心工作组装onnxruntime.SessionOptions图优化级别、执行模式、线程数依据配置选择 ExecutionProviderCPU / CUDA / TensorRT调用ort.InferenceSession完成会话创建。它与服务端另一套基于 Paddle Inference 的工具模块paddle_predictor.py形成对照前者面向 ONNX Runtime 推理路径后者面向 Paddle Inference 推理路径二者在服务端引擎层通过不同的engine_type被选择使用。二、get_sess源码逐段拆解以下是get_sess的完整实现摘自 onnx_infer.pydef get_sess(model_path: Optional[os.PathLike]None, sess_conf: dictNone): logger.debug(fort sessconf: {sess_conf}) sess_options ort.SessionOptions() sess_options.graph_optimization_level ort.GraphOptimizationLevel.ORT_ENABLE_ALL if sess_conf.get(graph_optimization_level, 99) 0: sess_options.graph_optimization_level ort.GraphOptimizationLevel.ORT_DISABLE_ALL sess_options.execution_mode ort.ExecutionMode.ORT_SEQUENTIAL # gpu:0 providers [CPUExecutionProvider] if gpu in sess_conf.get(device, ): device_id int(sess_conf[device].split(:)[1]) providers [(CUDAExecutionProvider, {device_id: device_id})] # fastspeech2/mb_melgan cant use trt now! if sess_conf.get(use_trt, 0): providers [TensorrtExecutionProvider] logger.debug(fort providers: {providers}) if cpu_threads in sess_conf: sess_options.intra_op_num_threads sess_conf.get(cpu_threads, 0) else: sess_options.intra_op_num_threads sess_conf.get( intra_op_num_threads, 0) sess_options.inter_op_num_threads sess_conf.get(inter_op_num_threads, 0) sess ort.InferenceSession( model_path, providersproviders, sess_optionssess_options) return sess2.1 SessionOptions 的默认策略图优化级别默认全开函数默认设置graph_optimization_level ORT_ENABLE_ALL这是 ONNX Runtime 提供的最高级别图优化含基本优化、扩展优化与布局优化仅在配置中显式传入graph_optimization_level: 0时才降级为ORT_DISABLE_ALL。执行模式固定为顺序执行execution_mode ORT_SEQUENTIAL即算子按拓扑顺序逐个执行。对于语音服务这类以推理延迟为主要指标的在线场景顺序执行通常已足够若需要图内算子并行可考虑ORT_PARALLEL当前模块未开放该选项。2.2 Provider 选择逻辑CPU / CUDA / TensorRTdevice字段的取值格式为gpu:id或cpu未配置或配置为cpu使用[CPUExecutionProvider]配置为gpu:0这类字符串解析冒号后的数字作为device_id使用[(CUDAExecutionProvider, {device_id: device_id})]在 GPU 基础上再开启use_trt: True直接切换到[TensorrtExecutionProvider]。源码注释特别强调了一个兼容性约束fastspeech2/mb_melgan cant use trt now!意味着 FastSpeech2 声学模型与 MB-MelGAN 声码器当前无法配合 TensorRT 使用配置use_trt前需要确认目标模型的支持情况。2.3 线程数配置的两种写法线程配置体现了对两套配置命名习惯的兼容优先读取cpu_threads服务端 TTS 配置中使用若不存在则回退读取intra_op_num_threads服务端 ASR 配置中使用二者本质都作用于sess_options.intra_op_num_threads即节点内部算子并行执行的线程数inter_op_num_threads控制图中跨节点并行执行的线程数独立读取。intra_op_num_threads与inter_op_num_threads的含义与 onnxruntime 官方InferenceSession参数一致前者决定单个算子内部的数据并行线程数后者决定整个计算图中多个算子之间的并行度。对延迟敏感的在线推理通常建议inter_op_num_threads保持为 0由 Runtime 自动决定或设小值避免线程调度开销影响单请求延迟。三、服务端引擎中的实际调用链3.1 在线 ASRonnx 引擎在 asr_engine.py 中ASRServerExecutor.init_model对deepspeech2系列模型调用self.am_predictor onnx_infer.get_sess( model_pathself.am_model, sess_confself.am_predictor_conf)配置从self.config.am_predictor_conf注入见 asr_engine.py即服务端 yaml 中asr_online-onnx段落下的am_predictor_conf字段。该引擎通过CommonTaskResource(taskasr, model_formatonnx, inference_modeonline)管理模型资源下载ONNX 引擎只使用am_modelonnx 静态图文件am_params会被断言为 None。3.2 在线 TTSonnx 引擎在 tts_engine.py 中get_sess被复用多次覆盖声学模型与声码器两类子模型FastSpeech2fastspeech2_csmsc_onnx单个 onnx 模型创建self.am_sesstts_engine.pyFastSpeech2 CNN Decoderfastspeech2_cnndecoder_csmsc_onnx支持流式 AM 推理需要三个子模型 encoder / decoder / postnet分别创建self.am_encoder_infer_sess、self.am_decoder_sess、self.am_postnet_sesstts_engine.py同时加载am_stat中的均值方差用于归一化声码器mb_melgan_csmsc_onnx/hifigan_csmsc_onnx创建self.voc_sesstts_engine.py。可以看出get_sess是服务端onnx 化在线推理的最小公共原语无论模型形态是单个 onnx 文件还是多个子图文件统一通过它生成推理会话上层引擎只负责按需调用。四、服务端配置文件中的sess_conf参数对照get_sess实际消费的配置键与两个官方服务端配置文件的对应关系如下配置键默认行为作用典型配置出处devicecpu默认 CPUExecutionProvider选择推理设备gpu:id触发 CUDA Providertts_online_application.yaml、ws_ds2_application.yamluse_trt0GPU 下切换 TensorrtExecutionProviderFastSpeech2/MB-MelGAN 暂不支持tts_online_application.yamlgraph_optimization_level非 0 时启用 ORT_ENABLE_ALL显式为0时 ORT_DISABLE_ALL控制 onnxruntime 图优化级别ws_ds2_application.yamlcpu_threads0不设置则回退读取 intra_op_num_threadsintra_op 线程数TTS 命名风格tts_online_application.yamlintra_op_num_threads0节点内算子并行线程数ASR 命名风格ws_ds2_application.yamlinter_op_num_threads0图内跨节点并行线程数ws_ds2_application.yaml其中log_severity_level、log_verbosity_level两个日志相关键在配置中给出见 ws_ds2_application.yaml用于控制会话加载与初始化阶段的日志级别属于 onnxruntime 会话级日志配置get_sess当前实现中未直接消费但保留在配置中以备排查问题。在线 TTS 配置实例流式 TTS 服务端配置tts_online_application.yaml中tts_online-onnx引擎对 AM 与声码器分别给出会话配置tts_online-onnx: am: fastspeech2_cnndecoder_csmsc_onnx am_ckpt: # list am_sess_conf: device: cpu use_trt: False cpu_threads: 4 voc: hifigan_csmsc_onnx voc_sess_conf: device: cpu use_trt: False cpu_threads: 4配合流式推理参数am_block: 72、am_pad: 12CNN Decoder 流式 AM 的块长与 paddingam_pad设为 12 时流式合成结果与非流式一致以及voc_block: 36、voc_pad: 14MB-MelGAN 声码器流式参数这些参数与get_sess创建的会话共同构成完整的流式 TTS 推理链路。若am选fastspeech2_csmsc_onnxam_ckpt只需单个 ckpt若选fastspeech2_cnndecoder_csmsc_onnx则am_ckpt需按 [encoder, decoder, postnet] 顺序给出三个模型文件。在线 ASR 配置实例流式 ASR 服务端配置ws_ds2_application.yaml中asr_online-onnx引擎的配置示例asr_online-onnx: model_type: deepspeech2online_wenetspeech am_model: # the pdmodel file of onnx am static model [optional] lang: zh sample_rate: 16000 device: cpu am_predictor_conf: device: cpu graph_optimization_level: 0 intra_op_num_threads: 0 inter_op_num_threads: 0 log_severity_level: 2 log_verbosity_level: 0chunk_buffer_conf段则与 VAD/分帧相关frame_duration_ms、window_n、shift_n等描述流式输入的音频分块策略与推理会话配置相互独立。五、配置要点与调优建议结合get_sess实现与服务端配置文件部署时建议关注以下几点CPU 推理默认即 CPU Provider。可调cpu_threads/intra_op_num_threads提升单算子并行度由于服务端推理以单请求延迟为主inter_op_num_threads建议保持默认0由 Runtime 决定过大会引入线程调度开销。GPU 推理将device设为gpu:0按实际卡号调整get_sess会自动携带device_id创建 CUDAExecutionProvider。TensorRT 限制use_trt仅对支持 TensorRT 的模型生效FastSpeech2 与 MB-MelGAN 系列当前不能使用源码注释明确提示配置前应确认模型类别。图优化开关默认ORT_ENABLE_ALL适合绝大多数场景若遇到算子兼容性问题或需要逐算子调试可显式配置graph_optimization_level: 0关闭优化。命名兼容cpu_threads与intra_op_num_threads均可配置get_sess优先读取前者跨引擎复制配置时注意不要两者同时设置造成困惑。六、小结paddlespeech.server.utils.onnx_infer.get_sess是 PaddleSpeech 服务端 ONNX 推理的底层会话工厂一段不足 30 行的实现统一封装了图优化、执行模式、Provider 选择CPU/CUDA/TensorRT与线程数配置被在线 ASRdeepspeech2 onnx与在线 TTSFastSpeech2 系列 onnx 流式声码器引擎复用。理解它的行为就能读懂am_predictor_conf/am_sess_conf/voc_sess_conf等配置段的全部语义进而在实际部署中对推理性能与兼容性进行精准控制。赞分享人工智能语音音频【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 在线 ASR ONNX 引擎深度解析基于 onnxruntime 的流式语音识别服务端实现PaddleSpeech 在线 ASR ONNX 引擎深度解析基于 onnxruntime 的流式语音识别服务端实现 本文围绕 PaddleSpeech 服务人工智能语音音频NLP媒体生成使用 Label Studio 与 ReactCode 审阅 Langfuse 追踪数据的完整实战指南使用 Label Studio 与 ReactCode 审阅 Langfuse 追踪数据的完整实战指南 本指南面向 LLM 应用开发者与评估工程师将 Lang人工智能语音音频AutoAgent 会话数据持久化实战通过 config.toml 配置 file_store 与 jwt_secret 实现服务重启后的会话恢复AutoAgent 会话数据持久化实战通过 config.toml 配置 file_store 与 jwt_secret 实现服务重启后的会话恢复 本指南基于人工智能大模型AI AgentAgent 框架工具调用自主智能体RAG创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

RAID 0/1/5/6/10详解:从原理到实战选型与配置指南

RAID 0/1/5/6/10详解:从原理到实战选型与配置指南

干运维和服务器这行,RAID这三个字母基本躲不过去。不管是在服务器开机时对着“Press CtrlR / CtrlH”的提示发愣,还是半夜被“Array Degraded”的告警短信叫醒,你都得先搞明白Raid0、Raid1、Raid5、Raid6、Raid10这几个编号到底意味着什么。数…

2026/9/24 21:59:03 阅读更多 →
Mac微信双开实操指南:从open -n到AppleScript的完整方案

Mac微信双开实操指南:从open -n到AppleScript的完整方案

以前一直有一个很困扰我的点:手机微信可以双开,电脑微信不行。尤其是我这种工作号和生活号分开的人,每天在Mac和手机之间来回切换,电脑上只能登录一个微信,另一个号的消息要么漏看,要么得拿手机答复&#x…

2026/9/24 21:59:03 阅读更多 →
Python在线考试系统后端开发实战:从模块设计到部署避坑

Python在线考试系统后端开发实战:从模块设计到部署避坑

简介:这是一份面向计算机相关专业毕业设计的在线考试系统后端源码,采用Python作为主要开发语言,适合正在准备毕设或希望系统学习Web后端开发的学生参考。项目围绕在线考试场景,涵盖用户认证、试题管理、考试记录、数据库设计等核心…

2026/9/24 21:59:03 阅读更多 →

最新新闻

MacBook重装系统全攻略:恢复模式与U盘启动盘实战

MacBook重装系统全攻略:恢复模式与U盘启动盘实战

手里的MacBook突然开不了机,或者系统卡得让人崩溃,再或者升级到一半弹出一个错误提示然后循环重启,这种场景不少人都遇到过。这台电脑怎么说也是天天跟着你干活的主力,真到了要重装系统那一步,你需要的不是百度来的各种…

2026/9/24 22:40:37 阅读更多 →
新能源时代下的随机潮流程序:原理、实现与工程应用

新能源时代下的随机潮流程序:原理、实现与工程应用

1. 随机潮流程序到底在算什么:确定性潮流给不了的答案1.1 为什么确定性潮流校核在新能源时代失灵了前几年做风电场并网评估时遇到一个挺尴尬的事:用确定性潮流算下来,并网点电压在各种极限工况下都没有越限,结论是满足并网要求。但…

2026/9/24 22:40:37 阅读更多 →
JavaScript构造函数与Class底层机制全解析:从new到原型链

JavaScript构造函数与Class底层机制全解析:从new到原型链

先说个我观察到的现象:很多写了两年以上JavaScript的人,被问到“Class和构造函数到底什么关系”时,也只能说出“Class是语法糖”这一句话。再追问一句“糖在哪儿、编译产物是什么、super和原型链怎么串起来的”,基本就卡住了。这其…

2026/9/24 22:40:37 阅读更多 →
Qwen3微调Embedding:RAG知识库检索准确率提升实战

Qwen3微调Embedding:RAG知识库检索准确率提升实战

做RAG项目这段时间,我最深的体会是:真正让知识库“变聪明”的瓶颈,往往不在大模型本身,而在检索这一环。用户问一个专业问题,系统从几千个切片里找出来的内容是错的,那后面无论生成模型多强,都是…

2026/9/24 22:40:37 阅读更多 →
199元手柄配置越级?北通鲲鹏20精英版霍尔摇杆与背键深度评测

199元手柄配置越级?北通鲲鹏20精英版霍尔摇杆与背键深度评测

1. 199元手柄凭什么敢对标千元配置北通鲲鹏20精英版这个手柄,我第一次看到199元这个价格的时候,第一反应是"又是那种用三个月就漂移的消耗品"。但仔细扒完它的配置单之后,我发现事情没那么简单。这篇文章不是那种开箱念参数的流水账…

2026/9/24 22:40:37 阅读更多 →
Python json.dumps实战:ensure_ascii与separators参数详解

Python json.dumps实战:ensure_ascii与separators参数详解

1. 项目概述1.1 一句话搞懂这行代码在干什么先直接说结论,json.dumps(filter_dict, ensure_asciiFalse, separators(,, :))这行代码干的事就是:把一个 Python 字典filter_dict序列化成 JSON 格式的字符串,同时保证中文不被转义成\uXXXX&#…

2026/9/24 22:39:37 阅读更多 →

日新闻

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:19 阅读更多 →
单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:19 阅读更多 →
C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/24 0:00:19 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/24 9:10:42 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →