人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载paddlespeech.server.engine.text是飞桨 PaddleSpeech 服务端框架中负责文本处理Text任务的引擎包其核心能力是为无标点文本自动恢复标点punctuation restoration任务名punc。本文以 paddlespeech.server.engine.text.rst 文档为主线结合 text_engine.py、application.yaml、RESTful 接口与客户端实现完整讲解该引擎的模块结构、初始化流程、请求处理调用链、配置参数与部署调用方式帮助你掌握在 PaddleSpeech 离线服务中接入标点恢复能力的完整方案。一、模块定位与文档骨架paddlespeech.server.engine.text包属于 PaddleSpeech 服务端paddlespeech/server的多引擎体系。服务端通过engine_list配置同时挂载 ASR、TTS、CLS、Text、Vector 等多种引擎其中 Text 引擎负责纯文本侧的标点恢复常作为 ASR 识别结果的“后处理增强”环节也可独立对外提供文本 → 带标点文本的 HTTP 服务。该 API 文档页面docs/source/api/paddlespeech.server.engine.text.rst通过 Sphinxautomodule指令自动生成该包的成员文档并声明了一个子包.. automodule:: paddlespeech.server.engine.text :members: :undoc-members: :show-inheritance: Subpackages ----------- .. toctree:: :maxdepth: 4 paddlespeech.server.engine.text.python也就是说text包的真实实现位于其python子包中即paddlespeech/server/engine/text/python/目录。从源码结构看该包包含三个层次模块文件核心内容paddlespeech/server/engine/text/init.py包入口空实现仅版权声明paddlespeech/server/engine/text/python/init.pypython 子包入口空实现paddlespeech/server/engine/text/python/text_engine.py引擎主体TextEngine、TextServerExecutor、PaddleTextConnectionHandler三个类整个包的设计与 ASR/TTS 等引擎保持一致引擎类负责资源初始化执行器Executor负责模型加载连接处理器Connection Handler负责单次请求的预处理—推理—后处理。二、TextEngine引擎初始化与设备管理TextEngine继承自服务端引擎基类 BaseEngine。基类使用Singleton元类保证整个服务进程中每个引擎只有一份实例并通过init()完成配置注入run()与postprocess()作为子类覆写点。class TextEngine(BaseEngine): def __init__(self): super(TextEngine, self).__init__() logger.debug(Create the TextEngine Instance) def init(self, config: dict): logger.debug(Init the text engine) try: self.config config if self.config.device: self.device self.config.device else: self.device paddle.get_device() paddle.set_device(self.device) except BaseException as e: ... self.executor TextServerExecutor() if fast in config.model_type: self.executor._init_from_path_new(...) else: self.executor._init_from_path(...) logger.info(Using model: %s. % (config.model_type)) logger.info(Initialize Text server engine successfully on device: %s. % (self.device)) return Trueinit()的关键流程可归纳为四步设备选择优先读取配置中的device字段支持gpu:id或cpu为空时回退到paddle.get_device()随后调用paddle.set_device()完成设备绑定。设备设置失败会记录错误日志并返回False供上层 engine_pool.py 判定引擎池初始化失败。创建执行器实例化TextServerExecutor其本身是 CLI 层 TextExecutor 的子类包装无额外逻辑注释为 “The wrapper for TextEcutor”。按模型类型分流初始化init()中以fast in config.model_type作为分支条件fast 系列模型如ernie_linear_p3_wudao中含fast标识的变体走_init_from_path_new()采用ErnieLinear动态图模型 paddle.load()加载 checkpointTokenizer 使用ernie-3.0-mini-zh普通模型走_init_from_path()基于ErnieForTokenClassificationfrom_pretrained(ernie-1.0)的旧路径。返回初始化标志成功打印模型类型与设备信息并返回True。三、TextServerExecutor模型与词表加载细节TextServerExecutor直接复用 CLI 执行器TextExecutor的全部能力因此服务端与命令行paddlespeech text共用同一套模型加载与推理逻辑。这里重点说明初始化时加载的资源_punc_list从vocab_file逐行读取标点词表。该词表首行为0表示“无标点”其余为可插入的标点符号后处理时按下标索引拼接。模型根据model_type去掉末尾_p3/_p7之类后缀得到model_name再通过任务资源表get_model_class()取回模型类与 Tokenizer 类。Tokenizerpaddlenlp的 Ernie 系列 Tokenizer服务端文本会被按字符切分is_split_into_wordsTrue后送入。_clean_text()推理前对输入做规范化将文本转小写、剔除非字母数字汉字字符、并剔除_punc_list中已有的标点保证输入是“干净的无标点文本”。四、PaddleTextConnectionHandler单次请求的完整调用链PaddleTextConnectionHandler是每次文本请求的连接处理器。RESTful 层在 text_api.py 中为每个请求新建一个 handler 实例注释明确 “each request has its own connection to process the text”调用其run(text)完成整条推理链路。4.1 run三阶段流水线paddle.no_grad() def run(self, text): self.preprocess(text) self.infer() res self.postprocess() return res整个推理被paddle.no_grad()包裹避免构建计算图、节省显存与内存。三个阶段均以task punc为唯一分支否则抛出NotImplementedError。4.2 preprocess文本清洗与 Tokenizerif self.task punc: clean_text self.text_engine.executor._clean_text(text) assert len(clean_text) 0, fInvalid input string: {text} tokenized_input self.tokenizer( list(clean_text), return_lengthTrue, is_split_into_wordsTrue) self._inputs[input_ids] tokenized_input[input_ids] self._inputs[seg_ids] tokenized_input[token_type_ids] self._inputs[seq_len] tokenized_input[seq_len]输入先经_clean_text()清洗若清洗后为空字符串则直接断言失败返回无效输入错误随后按字符列表形式送入 Tokenizer产出input_ids输入 ID、token_type_ids句段 ID与seq_len序列长度统一缓存在OrderedDict类型的_inputs中。4.3 infer模型前向与标签预测input_ids paddle.to_tensor(self._inputs[input_ids]).unsqueeze(0) seg_ids paddle.to_tensor(self._inputs[seg_ids]).unsqueeze(0) logits, _ self.model(input_ids, seg_ids) preds paddle.argmax(logits, axis-1).squeeze(0) self._outputs[preds] preds输入张量在第 0 维扩展出 batch 维度后送入模型。底层模型 ErnieLinear 基于paddlenlp的ErnieForTokenClassification构建forward()返回(y, logits)两个值其中logits为Softmax归一化后的逐 token 分类概率随后argmax取每个 token 概率最大的类别下标作为预测标签。4.4 postprocess标签还原为标点文本tokens self.tokenizer.convert_ids_to_tokens(input_ids[1:seq_len - 1]) labels preds[1:seq_len - 1].tolist() assert len(tokens) len(labels) text is_fast_model fast in self.text_engine.config.model_type for t, l in zip(tokens, labels): text t if l ! 0: # Non punc. if is_fast_model: text self._punc_list[l - 1] else: text self._punc_list[l] return text后处理将input_ids与preds去掉首尾的[CLS]/[SEP]特殊 token逐 token 拼接标签为0表示无标点直接拼接字符标签非0则在字符后插入_punc_list中对应下标的标点。值得注意的是fast 模型与普通模型的索引偏移不同fast 模型使用_punc_list[l - 1]词表首项0不计入普通模型直接使用_punc_list[l]这一差异源于新旧两套训练范式下词表定义的差别。五、服务端配置text_python 参数详解Text 引擎通过 application.yaml 中的text_python配置块启用。默认engine_list已包含text_pythonengine_list: [asr_python, tts_python, cls_python, text_python, vector_python]text_python的完整参数如下################### text task: punc; engine_type: python ####################### text_python: task: punc model_type: ernie_linear_p3_wudao lang: zh sample_rate: 16000 cfg_path: # [optional] ckpt_path: # [optional] vocab_file: # [optional] device: # set gpu:id or cpu参数默认值说明taskpunc文本任务类型目前仅支持标点恢复puncmodel_typeernie_linear_p3_wudao模型类型。CLI 层 TextExecutor 的--model可选值由task_resource.pretrained_models动态生成默认ernie_linear_p7_wudao服务端默认配置为ernie_linear_p3_wudao含fast关键字的模型走新版初始化路径langzh语言可选zh/ensample_rate16000采样率文本任务实际不使用音频为服务端统一字段cfg_path空可选模型配置文件留空时自动下载并定位默认资源ckpt_path空可选模型 checkpoint 文件留空时自动下载默认权重vocab_file空可选标点词表文件留空时使用默认词表device空推理设备gpu:id或cpu留空时使用paddle.get_device()当cfg_path/ckpt_path/vocab_file三者任一为空时TextExecutor._init_from_path()会以-.join([model_type, task, lang])拼接资源标签如ernie_linear_p3_wudao-punc-zh通过task_resource.set_task_model()自动获取预训练资源的本地路径即用户无需手动指定任何模型文件即可启动服务。六、引擎注册与引擎池text_python 如何被拉起服务启动时engine_pool.py 的init_engine_pool(config)遍历config.engine_list把text_python按下划线拆分为enginetext与engine_typepython交给 engine_factory.py 的工厂方法elif engine_name.lower() text and engine_type.lower() python: from paddlespeech.server.engine.text.python.text_engine import TextEngine return TextEngine()工厂返回TextEngine()后引擎池调用ENGINE_POOL[engine].init(configconfig[engine_and_type])完成初始化初始化失败则整体返回False服务拒绝启动。运行期 RESTful 层通过get_engine_pool()[text]取出单例引擎供每个请求的 Connection Handler 共享模型权重只加载一份请求间复用。七、对外接口与客户端调用7.1 RESTful 接口Text 服务的 HTTP 路由定义在 text_api.pyGET /paddlespeech/text/help返回接口说明result.punc_text即标点化文本字段。POST /paddlespeech/text接收TextRequestrequest.py 中定义请求体为{text: ...}经 Connection Handler 处理后返回TextResponse。请求示例沿用官方响应示例结构{ text: 今天的天气真不错啊你下午有空吗我想约你一起去吃饭 }响应示例结构见 response.py 中TextResponse的注释{ success: true, code: 200, message: {description: success}, result: {punc_text: 今天的天气真不错啊你下午有空吗我想约你一起去吃饭。} }服务端异常通过ServerBaseException捕获并转换为ErrorResponse未知异常统一映射为ErrorCode.SERVER_UNKOWN_ERR。7.2 官方客户端命令服务端自带命令行客户端paddlespeech_clientpaddlespeech_client.pyTextClientExecutor提供text子命令paddlespeech_client text --server_ip 127.0.0.1 --port 8090 --input 今天的天气真好啊你下午有空吗我想约你一起去吃饭参数说明参数默认值说明--server_ip127.0.0.1服务端 IP--port8090服务端端口--input必填待处理的无标点句子客户端内部向http://server_ip:port/paddlespeech/text发起POST请求从响应result.punc_text中取出结果并打印响应耗时。官方示例脚本见 demos/speech_server/text_client.sh测试客户端见 paddlespeech/server/tests/text/http_client.py支持--output将结果写入文件并统计逐字耗时。7.3 完整部署流程按官方安装指南完成 PaddleSpeech 与依赖安装服务端额外依赖fastapi、uvicorn、requests等参见 demos/speech_server/README.md 与requirements相关说明启动多进程服务text_python需在 application.yaml 的engine_list中启用paddlespeech_server start --config_file ./conf/application.yaml使用paddlespeech_client text或直接curl -X POST -d {text: 今天天气真不错啊} http://127.0.0.1:8090/paddlespeech/text验证服务。八、与其他模块的协作关系从调用关系看Text 引擎在服务端生态中扮演“文本后处理”角色与 ASR 协作ASR 引擎asr_python等输出的裸文本可通过paddlespeech/text接口补充标点形成“语音识别 → 标点恢复”的完整链路paddlespeech/server/utils/audio_handler.py中亦存在对/paddlespeech/text的引用可作为管线化调用入口。与 CLI 复用服务端执行器TextServerExecutor直接继承 paddlespeech/cli/text/infer.py 的TextExecutor因此paddlespeech text --input ...命令行、Python API 与服务端共享同一套模型与推理逻辑行为一致。与模型层协作核心模型 ErnieLinear 构建在ErnieForTokenClassification之上num_classes即标点类别数含“无标点”输出logits经 Softmax 后由引擎侧argmax解码。九、小结paddlespeech.server.engine.text是 PaddleSpeech 服务端架构中结构清晰、链路完整的标点恢复引擎TextEngine负责设备与模型资源初始化TextServerExecutor复用 CLI 推理逻辑PaddleTextConnectionHandler以“预处理—推理—后处理”三段式处理每次请求配合text_python配置块、EngineFactory工厂注册、/paddlespeech/textRESTful 接口与paddlespeech_client text客户端可以快速搭建独立的标点恢复服务或作为 ASR 识别结果的增强环节嵌入语音处理流水线。赞分享人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 标点恢复Punctuation Restoration实战指南从命令行到源码原理PaddleSpeech 标点恢复Punctuation Restoration实战指南从命令行到源码原理 标点恢复Punctuation Restor人工智能语音音频PaddleSpeech 标点恢复Punctuation Restoration实战指南从命令行到源码级原理PaddleSpeech 标点恢复Punctuation Restoration实战指南从命令行到源码级原理 标点恢复是语音识别ASR系统中提升转录文人工智能语音音频NLP媒体生成PaddleSpeech 文本服务引擎解析基于 PaddleTextConnectionHandler 的标点恢复服务实现PaddleSpeech 文本服务引擎解析基于 PaddleTextConnectionHandler 的标点恢复服务实现 导读 本文围绕 PaddleSpe人工智能语音音频NLP媒体生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Python入侵检测项目源码解析:数据预处理与模型实现 简介:面向计算机相关专业学生与毕业设计、课程设计、期末大作业场景,这份基于机器学习/深度学习的入侵检测项目提供了可直接运行的完整代码体系。项目涵盖CNN与LSTM两类模型实现,配套数据预处理、特征提取、不平衡处理、分类评估等Python脚本… · 2026/9/23 23:32:57
认识 Yii 2:高性能、组件化 PHP 框架的官方入门导读 后端Web框架 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 点击查看 免费下载 本文基于 Yii 2 官方《Definitive Guide》的开篇章节(docs/guide-vi/intro-yii.md&a… · 2026/9/23 23:32:32
微信小程序【模块化】 一、完成效果二、制作流程1.在小程序根目录下新建一个common文件夹,在该文件夹下新建common.js文件.// common.js
const comMsg 来自不同目录下模块的变量
function comFunc() {return 来自不同目录下模块的函数
}// 导出模块的变量和函数
module.exports {comMsg… · 2026/9/23 23:32:32
基于UNet与UNet++的细胞医学图像分割Python实现源码 简介:这份源码面向计算机相关专业的毕业设计、课程设计及期末综合作业需求,提供基于UNet与UNet两种编码器-解码器架构的医学细胞图像分割完整实现,采用Python编写,原为本科三年级课程设计,在导师指导下获99分评价&… · 2026/9/24 0:11:22
边缘驱动对流原理与跨学科应用解析 1. 边缘驱动对流(EDC)的核心原理边缘驱动对流(Edge-driven convection,简称EDC)是地球物理学中描述岩石圈-软流圈系统内物质循环的重要机制。其本质是水平方向上的物理性质突变(温度、密度、粘度差异&#… · 2026/9/24 0:11:16
PyTorch从零实现贝叶斯神经网络:不确定性量化实战 简介:本资源是一份面向机器学习进阶学习者与研究者的贝叶斯神经网络实践教程代码包,聚焦于不确定性建模这一核心需求,助力读者掌握小样本学习、模型校准与置信度预测等关键能力。压缩包共12个文件,含6个Python脚本(如b… · 2026/9/24 0:10:51
极化联合特征与机器学习:海杂波中雷达目标检测的Python实现 简介:面向雷达信号处理与海面目标检测研究人员,该PDF复现了《基于极化联合特征的海面目标检测方法》的完整实现。通过Cloude分解提取极化熵与反熵,利用Krogager分解得到球、二面角、螺旋体散射归一化系数,构成5维联合特征… · 2026/9/24 0:10:45
Mosquitto 1.0.2 版本解析:$SYS 持久化缺陷修复与配套工具链改进 后端消息队列消息路由 【免费下载链接】mosquitto Eclipse Mosquitto - An open source MQTT broker 项目地址: https://gitcode.com/gh_mirrors/mos/mosquitto 点击查看 免费下载 本篇技术指南围绕 Eclipse Mosquitto 1.0.2 版本发布公告展开,逐一拆解… · 2026/9/24 0:10:32
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44