尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

PaddleSpeech 命令行工具(paddlespeech.cli)实战指南:一行命令完成语音识别、合成与声纹任务

PaddleSpeech 命令行工具(paddlespeech.cli)实战指南:一行命令完成语音识别、合成与声纹任务 人工智能语音音频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.cli是 PaddleSpeech 内置的命令行工具模块它将声音分类、声纹识别、语音识别、语音翻译、语音合成、标点恢复等语音应用场景的预训练模型封装为一条条可直接执行的命令让开发者无需编写 Python 代码即可完成模型预测。本文以 paddlespeech/cli/README_cn.md 为主线结合 paddlespeech/cli 目录下的入口、执行器与参数解析源码完整讲解每个子命令的用法、关键参数、底层执行流程以及批量推理等进阶技巧。一、命令行工具的整体设计从一条命令到一次推理PaddleSpeech 的命令行工具本质上是一个命令分发器 任务执行器的组合命令分发由 paddlespeech/cli/entry.py 实现。paddlespeech命令启动后_execute()会逐段匹配用户输入的子命令如paddlespeech asr、paddlespeech tts找到对应的_entry并实例化执行执行成功返回状态码 0失败返回 1。命令注册由 paddlespeech/cli/base_commands.py 中的_commands字典统一注册。当前仓库中注册了 9 类任务命令asr语音识别、cls声音分类、st语音翻译、text文本后处理、tts语音合成、vector声纹/向量、kws关键词唤醒、ssl自监督预训练、whisperWhisper 识别/翻译README 中以示例形式重点介绍了前 6 类。统一执行器抽象所有任务都继承自 paddlespeech/cli/executor.py 中的抽象类BaseExecutor它规定了四个标准阶段——_init_from_path加载模型与资源、preprocess输入预处理、infer模型推理、postprocess结果后处理命令行入口execute()与 Python API 入口__call__()共用同一套推理逻辑。也就是说命令行工具与 Python APIpaddlespeech.cli各 Executor 类共享同一套模型资源管理CommonTaskResource和预训练模型仓库首次运行某条命令时工具会自动下载对应模型到本地缓存目录之后再次使用将直接读取本地文件无需重复下载。二、先看帮助paddlespeech help安装并配置好 PaddleSpeech 后在终端执行paddlespeech help工具会打印所有已注册子命令及其简要说明输出格式为Usage: paddlespeech command options Commands: asr Speech to text infer command. cls Audio classification infer command. ...这一行为由HelpCommand实现见 paddlespeech/cli/base_commands.py它会遍历命令字典中带_description的注册项并逐行打印。此外paddlespeech version可以查看当前安装包的版本号与 commit idpaddlespeech stats --task asr等命令可以列出对应任务支持的预训练模型清单按模型-数据集-语言-采样率等维度组织的表格。三、声音分类paddlespeech cls声音分类Audio Classification用于判断一段音频属于哪一类声音例如环境声、音乐、人声等。基本用法paddlespeech cls --input input.wav从 paddlespeech/cli/cls/infer.py 的CLSExecutor可以看到该命令支持以下常用参数参数默认值说明--input无必填待分类的音频文件路径--modelpanns_cnn14分类模型类型从预训练模型清单中动态选择--topk1返回分类结果中得分最高的前 k 个标签及其分数--configNone自定义 yaml 配置文件缺省时使用模型自带默认配置--ckpt_pathNone自定义模型权重文件缺省时自动下载官方预训练模型--label_fileNone标签列表文件--devicepaddle.get_device()推理设备如cpu、gpu:0-v/--verbose关闭开启后输出更详细的日志从源码看分类流程是先按配置中的sample_rate等参数读取音频并计算LogMelSpectrogram对数梅尔谱特征见preprocess再送入 CNN14 等模型得到 logits最后由postprocess中的_generate_topk_label输出形如标签 分数的结果。需要批量分类时也可以把多条音频路径写入.txt文件作为--input传入。四、声纹识别paddlespeech vector声纹识别Speaker Verification用于提取说话人音频的声纹向量embedding可进一步做说话人确认、1:1 打分等任务。基本用法paddlespeech vector --task spk --input input_16k.wavVectorExecutor见 paddlespeech/cli/vector/infer.py支持两种--taskspk默认任务从单条音频中提取声纹向量并输出score打分任务输入必须是一条包含两个 wav 路径的记录例如通过.txt或标准输入传入enroll.wav test.wav工具会分别提取两条音频的声纹向量再用余弦相似度paddle.nn.CosineSimilarity见get_embeddings_score计算相似度分数。关键参数包括--model默认ecapatdnn_voxceleb12、--sample_rate当前固定支持 16000、--ckpt_path、--config、--device等。预处理阶段使用melspectrogram提取 FBank 特征并进行均值归一化feature_normalize推理阶段由 ECAPA-TDNN backbone 输出固定维度的说话人向量。五、语音识别paddlespeech asr语音识别ASR是 PaddleSpeech 最核心的能力之一将语音转换为文字。基本用法paddlespeech asr --lang zh --input input_16k.wavASRExecutor见 paddlespeech/cli/asr/infer.py的参数非常丰富参数默认值说明--langzh语言可选zh、en、zh_en中英混合/语码切换场景--modelconformer_u2pp_online_wenetspeech模型类型如conformer_wenetspeech-zh-16k、transformer_librispeech-en-16k等--codeswitchFalse是否启用语码切换仅zh_en模型可用--sample_rate16000模型期望的音频采样率可选8000或16000--decode_methodattention_rescoring解码方式可选ctc_greedy_search、ctc_prefix_beam_search、attention、attention_rescoring--num_decoding_left_chunks/-num_left-1仅 Transformer/Conformer 在线模型使用控制解码左向 chunk 数量--configNone自定义模型配置文件--ckpt_pathNone自定义权重文件--rtfFalse开启后输出实时率RTFReal-time Factor即推理耗时/音频时长--yes/-yFalse自动接受程序请求例如自动重采样不再交互式询问 Y/N--devicepaddle.get_device()推理设备-d/--job_dump_resultFalse将批处理结果保存到*.job.done文件-v/--verboseFalse输出更详细日志底层推理细节值得注意输入校验与重采样_check()会用soundfile读取音频并核对采样率若输入音频采样率与模型要求不一致工具会提示是否自动重采样使用--yes可跳过交互确认源码中给出的转换建议是sox转为 16k/16bit/单声道 wav。特征提取preprocess中通过Transformation按配置计算 FBank 特征对于deepspeech2类模型还会自动下载语言模型download_lm用于解码。时长限制Transformer/Conformer 类模型根据编码器最大位置编码长度与子采样率推算max_len超出限制的音频会被拒绝因此输入音频不宜过长。RTF 统计启用--rtf后工具统计每次推理的起止时间与音频时长最后打印样本数与平均 RTF实现于 paddlespeech/cli/executor.py 的show_rtf。六、语音翻译英-中paddlespeech st端到端语音翻译Speech Translation可以直接把英语语音翻译为中文文本paddlespeech st --input input_16k.wav需要注意该命令暂不支持 Windows 系统README 中已明确标注。原因在源码中也很清楚——STExecutor见 paddlespeech/cli/st/infer.py在初始化时会下载一套 Kaldi 工具二进制kaldi_bins一个 Linux 环境的 tar.gz 包并注入PATH与LD_LIBRARY_PATH环境变量用于音频特征计算如kaldiio相关的 ark 特征读写因此依赖 Linux 环境。该命令的主要参数有--model默认fat_st_ted、--src_lang源语言默认en、--tgt_lang目标语言默认zh、--sample_rate固定 16000、--config、--ckpt_path、--device等。README 中对应任务的官方示例位于 examples/ted_en_zh/st1感兴趣可以对照查看完整的训练与推理脚本。七、语音合成paddlespeech tts语音合成Text-to-Speech将文本转换为自然语音并保存为 wav 文件paddlespeech tts --input 你好欢迎使用百度飞桨深度学习框架 --output output.wavTTSExecutor见 paddlespeech/cli/tts/infer.py的参数体系分为声学模型am与声码器voc两部分参数默认值说明--amfastspeech2_csmsc声学模型可选fastspeech2_csmsc、speedyspeech_csmsc、tacotron2_csmsc、fastspeech2_ljspeech、fastspeech2_aishell3、fastspeech2_vctk、fastspeech2_mix、fastspeech2_male、fastspeech2_canton等--am_config/--am_ckpt/--am_statNone自定义声学模型配置、权重与频谱统计文件缺省时自动下载官方模型--phones_dictNone音素词典文件声学模型必需--tones_dictNone声调词典speedyspeech等模型使用--speaker_dictNone说话人 id 映射文件多说话人模型使用--spk_id0多说话人模型的说话人编号--vochifigan_csmsc声码器可选hifigan_*、pwgan_*、mb_melgan_csmsc、style_melgan_csmsc、wavernn_csmsc等--voc_config/--voc_ckpt/--voc_statNone自定义声码器配置、权重与统计文件--langzh语言可选zh、en、mix、canton--outputoutput.wav输出音频文件名--use_onnxFalse是否使用 ONNX Runtime 推理需选择支持集内的模型--cpu_threads2ONNX 推理时使用的 CPU 线程数--fs24000使用指定 ONNX 模型文件时的采样率--devicepaddle.get_device()推理设备从源码看合成流程分为三段文本前端frontend将中文/英文文本转为音素序列get_frontendrun_frontend声学模型将音素序列预测为梅尔频谱多说话人模型还会拼接spk_id声码器将梅尔频谱还原为波形并拼接输出。支持 ONNX 的模型集合ONNX_SUPPORT_SET包括fastspeech2_*、speedyspeech_csmsc及pwgan_*、hifigan_*、mb_melgan_csmsc等启用--use_onnx时需保证所选的--am与--voc均在该集合内。合成结果通过soundfile以声学模型配置的采样率写出。八、文本后处理标点恢复语音识别结果通常是没有标点的连续文本标点恢复Punctuation Restoration为这类文本自动补全标点提升可读性。基础用法paddlespeech text --task punc --input 今天的天气真不错啊你下午有空吗我想约你一起去吃饭快速标点恢复版本使用轻量级模型推理更快paddlespeech text --task punc --input 今天的天气真不错啊你下午有空吗我想约你一起去吃饭 --model ernie_linear_p3_wudao_fastTextExecutor见 paddlespeech/cli/text/infer.py支持的参数包括--task当前仅punc、--model默认ernie_linear_p7_wudao可选快速版ernie_linear_p3_wudao_fast、--langzh或en、--config、--ckpt_path、--punc_vocab标点词表、--device等。从源码可以看到两类模型的内部差异旧版模型ernie_linear_p7_wudao、ernie_linear_p3_wudao通过_init_from_path初始化使用ernie-1.0tokenizer新版模型名称中带fast的ernie_linear_p3_wudao_fast通过_init_from_path_new初始化直接加载ErnieLinear模型并使用更快的ernie-3.0-mini-zhtokenizer。推理时preprocess会先清洗文本小写化、剔除标点外的特殊字符再由 tokenizer 切分infer得到每个位置的标点类别 logits 后取 argmaxpostprocess将预测的标点符号插回原文。标点列表来自预训练模型自带的punc_vocab词表模型会根据上下文为每个字符预测是否添加标点以及添加哪种标点。九、批量输入与更多进阶用法命令行工具并非只能处理单个输入。BaseExecutor.get_input_source见 paddlespeech/cli/executor.py支持三类输入来源单个文件路径最常用的方式如--input a.wav批量任务文件.job、.txt、.scp后缀的文件会被逐行解析每行格式为id 路径或单字段路径逐条推理后按id输出结果配合-d / --job_dump_result可以把结果写入输入文件.job.done标准输入stdin不传--input时工具会读取标准输入中的每一行作为任务适合在 shell 管道中串联使用。此外所有 Executor 都同时暴露了同名 Python API__call__因此命令行用法可以无缝迁移到 Python 脚本中例如from paddlespeech.cli.asr import ASRExecutor asr ASRExecutor() result asr(audio_fileinput_16k.wav, langzh, sample_rate16000) print(result)模型资源的下载与缓存逻辑见 paddlespeech/cli/utils.pydownload_and_decompress、load_state_dict_from_url与 paddlespeech/cli/download.pyget_path_from_url支持 MD5 校验与断点续传每个任务通过CommonTaskResource按模型-语言-采样率等标签定位官方预训练模型第一次运行某命令时只需等待模型下载完成之后即可离线使用。十、小结PaddleSpeech 命令行工具把声音分类 → 声纹识别 → 语音识别 → 语音翻译 → 语音合成 → 标点恢复这条完整的语音处理链路浓缩成了几条直观的命令。理解 paddlespeech/cli 中entry.py的命令分发、executor.py的统一执行器抽象以及各任务 Executor 的参数与推理管线就能在原型验证、批量评测、服务部署等场景中快速上手而kws、ssl、whisper等其余已注册命令同样遵循这套模式可以参照本文介绍的参数风格进一步探索。赞分享人工智能语音音频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点击查看免费下载相关推荐终极指南如何用Awesome-CV免费制作专业级求职简历终极指南如何用Awesome CV免费制作专业级求职简历 还在为简历设计发愁吗 想要一份既专业又美观的简历却不想花时间学习复杂的排版软件Awesom人工智能语音音频PaddleSpeech 命令行工具实战指南一行命令调用语音分类、识别、翻译与合成能力PaddleSpeech 命令行工具实战指南一行命令调用语音分类、识别、翻译与合成能力 PaddleSpeech 的 paddlespeech.cli 模块提人工智能语音音频NLP媒体生成PaddleSpeech Server 命令行实战一行命令搭建 ASR、TTS、流式与声纹服务PaddleSpeech Server 命令行实战一行命令搭建 ASR、TTS、流式与声纹服务 PaddleSpeech 通过 paddlespeech_se人工智能语音音频上一篇抖音批量下载终极指南开源工具让内容收集效率提升300%下一篇LinkSwift九大网盘直链解析终极指南告别限速困扰创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表