新闻详情

新闻详情

首页 / 资讯中心 / 详情

SpeechX Runtime Examples 实战指南:基于 PaddleSpeech C++ 引擎的 U2/U2++ 流式语音识别部署与验证

发布时间:2026/9/25 3:06:47来源:尧图网络
SpeechX Runtime Examples 实战指南:基于 PaddleSpeech C++ 引擎的 U2/U2++ 流式语音识别部署与验证
人工智能语音音频【免费下载链接】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点击查看免费下载SpeechX 是 PaddleSpeech 的 C 运行时推理引擎runtime/examples目录下的示例用于在真实环境下验证语音识别ASR、语音活动检测VAD、音频分类等能力的部署效果。本指南以 runtime/examples/README.md 为主线完整讲解示例的目录结构、环境准备、run.sh的分阶段执行流程、基于 AISHELL-1 测试集的 U2/U2 流式识别含 FP32、INT8 量化与 WFST/TLG 解码、Netron 模型可视化以及仅供开发调试的 codelab 工具链让读者掌握从构建引擎到跑通端到端识别并读取 CER/RTF 指标的完整实战链路。示例总览SpeechX 的部署验证矩阵runtime/examples/README.md将示例划分为三类面向用户的可用示例、开发者专用的 codelab 调试工具以及支撑示例运行的辅助模块。runtime/examples/ ├── README.md # 本文档示例总入口 ├── u2pp_ol/ # 推荐的流式 ASR 示例U2/U2 │ └── wenetspeech/ # 使用 wenetspeech 导出的模型 AISHELL-1 测试集 ├── ds2_ol/ # Deepspeech2 在线流式识别示例 ├── codelab/ # SpeechX 开发者专用nnet / feat / decoder / u2 ├── custom_asr/ # 自定义 WFST 解码图带 slot 的 G ├── text_lm/ # 构建 n-gram 语言模型前的文本预处理 ├── vad/ # VAD 示例与 Android Demo ├── audio_classification/ # 音频分类PANNSAndroid Demo └── android/ # VadJni Android 示例其中 README 明确指出u2pp_olU2/U2 流式 ASR是被推荐的示例也是本文的重点展开对象。ds2_ol对应的 Deepspeech2 在线识别在仓库中通过runtime/examples/codelab/nnet/README.md等文件保留了实现与调试入口。示例的通用入口约定所有示例都以run.sh作为统一入口遵循 Kaldi 风格的分阶段执行约定--stage N指定从哪个阶段开始--stop_stage N指定执行到哪个阶段结束参数通过utils/parse_options.sh解析该脚本位于runtime/examples/u2pp_ol/wenetspeech/utils/parse_options.sh与仓库根目录 utils/parse_options.sh 同一实现采用--keyvalue语法。这种设计让用户可以只下载数据--stop_stage 0或只做解码--stage 1 --stop_stage 1避免重复执行耗时步骤。环境准备创建 Python 虚拟环境并激活步骤一创建 venv运行示例前需要先构建好 SpeechX 引擎并准备好 Python 环境。README 给出的命令是bash tools/env.sh注意原文档写作时脚本名为tools/evn.sh拼写如此当前仓库runtime/tools/目录下实际提供的是 runtime/tools/venv.sh用于创建 Python 虚拟环境两者目的相同准备可用的 Python 环境。关于引擎构建的完整流程runtime/README.md给出了明确的环境基线Python 3.8推荐 Docker 镜像registry.baidubce.com/paddlepaddle/paddle:2.2.2-gpu-cuda10.2-cudnn7Ubuntu 16.04.7 LTS 下验证gcc/g/gfortran 8.2.0、cmake 3.16.0。构建命令序列为docker run --privileged --nethost --ipchost -it --rm \ -v /path/to/paddlespeech:/workspace --namedev \ registry.baidubce.com/paddlepaddle/paddle:2.2.2-gpu-cuda10.2-cudnn7 /bin/bash bash tools/venv.sh # 创建 venv source venv/bin/activate python -m pip install paddlepaddle2.4.2 ./build.sh # 构建 engine 与 examples其中./build.sh会同时产出 engine 二进制与示例所需可执行程序构建成功后产物位于runtime/build/Linux/x86_64/engine/asr等目录见 runtime/examples/u2pp_ol/wenetspeech/path.sh 中的ENGINE_BUILD定义。步骤二激活环境. venv/bin/activate激活后示例脚本通过path.sh自动将recognizer_main、compute_fbank_main、u2_nnet_main、ctc_prefix_beam_search_decoder_main等二进制所在目录加入PATH并将构建产物中的共享库目录加入LD_LIBRARY_PATH# runtime/examples/u2pp_ol/wenetspeech/path.sh核心片段 ENGINE_ROOT$PWD/../../../ ENGINE_BUILD$ENGINE_ROOT/build/Linux/x86_64/engine/asr export PATH$PATH:$TOOLS_BIN:$ENGINE_BUILD/nnet:$ENGINE_BUILD/decoder:...:$ENGINE_BUILD/recognizer:... export LD_LIBRARY_PATH$PADDLE_LIB_PATH:$LD_LIBRARY_PATHpath.sh还会校验构建目录是否存在若缺失会打印错误提示要求先完成引擎构建。常见环境问题排查runtime/README.md的 FAQ 部分记录了三个高频坑可在环境准备阶段提前规避现象原因与对策ModuleNotFoundError: No module named paddle未安装或未激活 paddlepaddle需安装paddlepaddle 2.4rc示例使用 2.4.2error while loading shared libraries: liblibpaddle.so需对 paddle 库修正 sonamepatchelf --set-soname libpaddle.so libpaddle.so在 site-packages/paddle/fluid 目录下执行libgfortran.so.5: cannot open shared object file需安装匹配 gcc 8.2 的 gfortranapt-get install gfortran-8跑通推荐示例u2pp_ol流式识别README 给出的核心示范命令为pushd u2pp_ol/wenetspeech bash run.sh --stop_stage 4下面结合 runtime/examples/u2pp_ol/wenetspeech/run.sh 与 runtime/examples/u2pp_ol/wenetspeech/local/ 目录下的脚本把run.sh内部的分阶段逻辑拆解清楚。阶段 0下载模型与测试数据run.sh的 stage 0 负责准备三样东西U2 静态 FP32 模型asr1_chunk_conformer_u2pp_wenetspeech_static_1.3.0.model.tar.gzU2 静态量化INT8模型asr1_chunk_conformer_u2pp_wenetspeech_static_quant_1.3.0.model.tar.gz测试数据单条验证音频zh.wav生成wav.scp与 AISHELL-1 测试集压缩包aishell_test.zip。下载完成后脚本会自动生成aishell_test.scprealpath $data/test/*/*.wav $data/wavlist awk -F / { print $(NF) } $data/wavlist | awk -F . { print $1 } $data/utt_id paste $data/utt_id $data/wavlist $data/$aishell_wav_scp生成的scp文件格式为keyTABwav绝对路径例如BAC009S0764W0121 /workspace/PaddleSpeech/runtime/examples/u2pp_ol/wenetspeech/data/test/S0764/BAC009S0764W0121.wav这里u2pp_ol/wenetspeech示例所用的模型来自 examples/wenetspeech/asr1 训练配方导出的静态模型README 明确说明若想用自己的模型可参考该 recipe 完成export否则run.sh会自动下载官方静态模型。阶段 1端到端流式识别FP32recognizer_main执行./local/recognizer.sh对应run.sh的 stage 1。该脚本把 40/20 个并发任务nj分发到 AISHELL-1 测试集核心调用如下utils/run.pl JOB1:$nj $data/split${nj}/JOB/recognizer.log \ recognizer_main \ --use_fbanktrue \ --num_bins80 \ --cmvn_file$model_dir/mean_std.json \ --model_path$model_dir/export.jit \ --word_symbol_table$model_dir/unit.txt \ --nnet_decoder_chunk16 \ --receptive_field_length7 \ --subsampling_rate4 \ --wav_rspecifierscp:$data/split${nj}/JOB/${aishell_wav_scp} \ --result_wspecifierark,t:$data/split${nj}/JOB/result_recognizer.ark关键参数含义参数取值作用--use_fbanktrue端到端模式由 recognizer 直接从 wav 在线计算 FBank 特征无需离线特征文件--num_bins80FBank 滤波器组数量与模型训练配置一致--cmvn_filemean_std.json特征均值/方差归一化文件随模型包下发--model_pathexport.jitPaddle 静态图模型JIT 导出--word_symbol_tableunit.txt词表文件输出 token 与字符的映射--nnet_decoder_chunk16流式解码块大小帧数决定每步输出的 token 数--receptive_field_length7感受野长度与 Conformer 因果卷积配置相关--subsampling_rate4特征下采样率卷积下采样后的时间压缩比--wav_rspecifierscp:...音频输入列表kaldi scp 格式--result_wspecifierark,t:...识别结果输出文本格式 ark流式三参数的内在关系--nnet_decoder_chunk16配合--receptive_field_length7、--subsampling_rate4构成 U2 chunk 流式推理的解码窗口输入按 chunk 逐块喂入编码器每个 chunk 输出固定数量的 token实现边接收音频边出结果的流式行为。阶段 2INT8 量化模型识别recognizer_quant.shrun.sh的 stage 2 调用./local/recognizer_quant.sh与阶段 1 几乎一致仅两点不同--model_path指向量化模型目录asr1_chunk_conformer_u2pp_wenetspeech_static_quant_1.3.0.model/且直接指定export不带.jit后缀结果写入独立的recognizer.quant.rsl.ark。量化模型用于在 CPU 上获得更低推理时延或更小内存占用配合支持avx512_vnni的 CPU如 RESULTS.md 中记录的环境效果更佳。阶段 3WFST/TLG 图解码recognizer_wfst.shrun.sh的 stage 3 调用./local/recognizer_wfst.sh引入语言模型约束的解码方式。脚本会先下载预编译的tlg.zip包含TLG.fst与words.txt也可参考local/run_build_tlg.sh自行构建解码图。核心参数差异recognizer_main \ ... --graph_path$lang_dir/TLG.fst \ --word_symbol_table$word_table \ --rescoring_weight0.0 \ --acoustic_scale2 \ ...--graph_pathTLG 复合 WFST 解码图Ttoken→音素L音素→词G词级语言模型--acoustic_scale2声学得分缩放系数--rescoring_weight0.0该模式不进行 attention rescore直接以 WFST 解码结果输出。三种解码方式的关系阶段 1/2 是声学模型 CTC 前缀束搜索可在解码后接 attention rescore的纯端到端方式阶段 3 则是声学模型 TLG 图搜索的词典/语言模型约束方式。仓库同时提供了 FastDeployONNX与单独 decoder 的解码脚本见下文进阶路径。阶段 4结果汇总与 CER 计算各 stage 结束后统一进行指标统计cat $data/split${nj}/*/result_recognizer.ark $exp/aishell_recognizer utils/compute-wer.py --char1 --v1 $text $exp/aishell_recognizer $exp/aishell.recognizer.err tail -n 7 $exp/aishell.recognizer.errcompute-wer.py位于 utils/compute-wer.py--char1表示按字符级计算错误率即中文场景下的 CER--v1输出详细统计最终以 CER 与 RTF 两个指标评价部署效果见下节。效果指标AISHELL-1 上的 CER 与 RTFruntime/examples/u2pp_ol/wenetspeech/RESULTS.md记录了在 AISHELL-1 测试集7176 条音频、总时长 36108.9 秒上的实测结果。测试环境为 Intel Xeon Gold 6148 CPU支持avx512_vnni解码方式脚本CERRTFFP32 端到端attention rescorelocal/recognizer.sh5.75%0.265INT8 量化端到端local/recognizer_quant.sh5.83%0.270TLG 图解码无 rescorelocal/recognizer_wfst.sh4.73%0.283要点解读CER 与 RTF 的定义CER 为字符错误率越低越好RTFReal-Time Factor为处理耗时 / 音频时长RTF 1 表示实时率优于 1 倍速0.26~0.28 意味着处理 36108.9 秒音频约耗时 9577~10247 秒量化模型 CER 略升5.83% vs 5.75%但带来推理加速潜力适合对精度损失容忍度高的生产场景TLG 图解码在引入词典/语言模型约束后 CER 反而最低4.73%说明 WFST 图搜索对中文场景的约束收益明显。这些数字仅代表该仓库在特定测试集与 CPU 环境下的记录实际部署效果取决于模型、数据与硬件不应视为通用结论。使用 Netron 可视化模型结构runtime/examples/README.md还提供了一个实用的模型调试手段用 Netron 打开导出的静态模型直观查看网络结构、算子与输入输出张量形状pip install netron netron exp/deepspeech2_online/checkpoints/avg_1.jit.pdmodel --port 8022 --host 10.21.55.20模型文件*.jit.pdmodelPaddle 静态图模型deepspeech2_online 示例的avg_1.jit.pdmodel--port 8022Netron Web 服务端口--host指定监听地址便于在浏览器远程查看适合在部署前核对模型输入输出维度与--num_bins、--nnet_decoder_chunk等运行时参数是否匹配。进阶路径FastDeploy、离线特征与自定义解码图方式一FastDeploy/ONNX 推理recognizer_fastdeploy.shruntime/examples/u2pp_ol/wenetspeech/local/recognizer_fastdeploy.sh展示了通过 FastDeploy 以 ONNX 模型推理的用法与主流程的区别在于--model_path指向 ONNX 模型目录onnx_model/增加--with_onnx_modeltrue开关不需要--cmvn_fileONNX 导出时已内嵌预处理。方式二先离线提特征、再解码feat.sh/decode.sh如果希望分离特征与解码环节便于调试可分别运行# 提 FBank 特征streaming_chunk36 对应流式特征缓存 ./local/feat.sh --stage 1 --stop_stage 1 # 仅用特征做 CTC 前缀束搜索解码 ./local/decode.shfeat.sh调用compute_fbank_main --num_bins 80 --cmvn_file ... --streaming_chunk 36产出fbank.ark/fbank.scpdecode.sh调用ctc_prefix_beam_search_decoder_main入参由--wav_rspecifier换成--feature_rspecifierscp:.../fbank.scp。中间的nnet.sh则调用u2_nnet_main输出编码器中间结果encoder_outs.ark与logprobs.ark用于逐环节定位问题。方式三自定义 TLG 解码图custom_asr/run_build_tlg.shruntime/examples/custom_asr/README.md演示了如何构建带 slot 的自定义 WFST 解码图如打车到 address_slot这类模板核心操作是fstreplace(G_with_slot, address_slot)完成图替换runtime/examples/u2pp_ol/wenetspeech/local/run_build_tlg.sh 则给出从词表、词典到 n-gram LMSRILM再到 TLG 的完整构建链路prepare_dict.py由词表与词读音词典生成data/local/dict/lexicon.txtlocal/aishell_train_lms.sh用ngram-count -order 3 -kndiscount -interpolate训练三元语言模型含 OOV 处理为SPOKEN_NOISE、划分 heldout 计算 PPLcompile_lexicon_token_fst.sh构建 T、L 图make_tlg.sh合成 TLG 图到data/lang_test。配套的 runtime/examples/text_lm/README.md 说明了 n-gram 训练前文本预处理text→text.tn的输入输出格式。开发者调试工具codelabruntime/examples/README.md末尾特别提醒codelab 仅供 SpeechX 开发者做测试使用运行前请确认自己清楚其用途。其下包含四个子模块runtime/examples/codelab/README.mdnnet神经网络前向/编码器输出调试feat特征FBank 等提取调试decoderCTC/注意力解码器调试u2U2/U2 整链调试内含local/decode.sh、local/feat.sh、local/nnet.sh、local/recognizer.sh四个环节脚本。每个子模块都提供path.sh、run.sh并在runtime/examples/codelab下附有 Valgrind 内存检查脚本valgrind.sh适合在修改 C 代码后做离线回归验证。从源码结构看codelab 的脚本与u2pp_ol示例共享同一套utils/split_data、run.pl、compute-wer.py 等 Kaldi 风格工具可视为开发者版的分步跑通脚手架。总结从 README 到可复现的部署链路runtime/examples/README.md篇幅不长但它勾勒出一条完整的 SpeechX 部署验证链路本文结合仓库源码将其还原为可直接照做的流程准备环境bash tools/venv.shREADME 原文为tools/env.sh创建 venv 并source venv/bin/activate按runtime/README.md的环境基线安装 paddlepaddle 并完成./build.sh进入示例pushd u2pp_ol/wenetspeech用run.sh --stop_stage N分阶段执行理解解码区分 FP32 端到端recognizer.sh、INT8 量化recognizer_quant.sh、TLG 图解码recognizer_wfst.sh三种方式及各自的--model_path/--graph_path等参数差异评估效果通过utils/compute-wer.py --char1计算 CER从日志读取 RTF与 RESULTS.md 对照进阶调试用 Netron 查看*.jit.pdmodel模型图需要自定义词典/语言模型时参考custom_asr与run_build_tlg.sh开发期可借助codelab分环节验证。对于希望把 PaddleSpeech 模型落地到生产 C 服务的团队u2pp_ol示例是同时覆盖流式 ASR 原理 端到端部署 指标评估三要素的最佳起点。赞分享人工智能语音音频【免费下载链接】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 基于 SpeechXruntime的 U2/U2 流式 ASR C 工业部署实战指南PaddleSpeech 基于 SpeechXruntime的 U2/U2 流式 ASR C 工业部署实战指南 PaddleSpeech 仓库中的人工智能语音音频NLP媒体生成PaddleSpeech SpeechX 实战U2/U2/DeepSpeech2 模型的 C 流式 ASR 部署指南PaddleSpeech SpeechX 实战U2/U2/DeepSpeech2 模型的 C 流式 ASR 部署指南 SpeechX 是 Paddle人工智能语音音频NLP媒体生成PaddleSpeech 工业级 ASR 部署实战基于 SpeechX 的 U2/U2/Deepspeech2 C 推理指南PaddleSpeech 工业级 ASR 部署实战基于 SpeechX 的 U2/U2/Deepspeech2 C 推理指南 本指南基于 Paddle人工智能语音音频上一篇10个超实用的系统性能分析工具从CPU到内存的全面监控指南下一篇终极指南Emscripten JSON解析性能优化——5个高效JSON库对比与实战技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

实战:封装一个WorkBuddy Skill,自动拉取腾讯会议AI录音笔的线下沟通上下文 2026/9/25 4:28:04

实战:封装一个WorkBuddy Skill,自动拉取腾讯会议AI录音笔的线下沟通上下文

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
JLink的隐藏技能:开启VCOM虚拟串口,一根USB线搞定调试和日志 2026/9/25 4:28:04

JLink的隐藏技能:开启VCOM虚拟串口,一根USB线搞定调试和日志

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
智慧交通实战:从路口感知到信号配时优化的全链路解析 2026/9/25 4:28:03

智慧交通实战:从路口感知到信号配时优化的全链路解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Android Studio无数据库注册页实战:Java实现输入校验与页面跳转 2026/9/25 4:28:03

Android Studio无数据库注册页实战:Java实现输入校验与页面跳转

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
工业存储物理级加密:SmartAES黑盒架构与密钥安全解析 2026/9/25 4:27:51

工业存储物理级加密:SmartAES黑盒架构与密钥安全解析

先说个结论:凡是靠软件口令、文件加密、系统权限来“保护”数据存储的工业方案,在真正面对物理攻击时,大概率撑不过一个下午。做工业存储这些年,我拆过不少号称“加密”的盘,很多就是主控里加了个AES软件库&#xff0c…

阅读更多 →
Higgsfield:从提示词到角色一致的AI图像生成与视频动态化实战 2026/9/25 4:27:39

Higgsfield:从提示词到角色一致的AI图像生成与视频动态化实战

1. 项目背景与核心能力拆解Higgsfield这个项目名字,懂物理的朋友应该一眼就能get到那个梗——希格斯场,就是赋予基本粒子质量的场。在AI图像生成领域借用这个名字,意思其实很直白:给AI图像生成赋予“质感”和“实体感”。我在第一…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉