ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

PaddleSpeech 语音识别(ASR)Demo 实战:命令行与 Python API 快速实现语音转文本

PaddleSpeech 语音识别(ASR)Demo 实战:命令行与 Python API 快速实现语音转文本 PaddleSpeech 语音识别ASRDemo 实战命令行与 Python API 快速实现语音转文本【免费下载链接】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导读语音识别Automatic Speech Recognition, ASR是用计算机程序将语音自动转录为文本的技术也是语音交互、字幕生成、会议转写等应用的核心环节。本篇文章基于 PaddleSpeech 仓库中的 speech_recognition Demo 文档完整讲解如何通过一条paddlespeech asr命令或几行 Python 代码把给定的 WAV 音频文件快速转成文本并覆盖中文、英文、中英混合Code-Switch以及语音识别 标点恢复组合流水线等实战场景。读完本文你将掌握 ASRExecutor 的完整调用方式、全部命令行参数的含义与底层实现、预训练模型的选择策略以及音频输入格式与采样率的处理细节。一、Demo 概览与能力边界PaddleSpeech 是一个开源的语音处理工具包提供自监督学习模型、流式/非流式 ASR含标点恢复、流式 TTS、说话人验证、语音翻译与关键词唤醒等能力。本 Demo 聚焦于其中最基本的离线语音识别能力输入单个.wav音频文件要求采样率与模型一致默认 16k输出识别出的文本字符串调用方式命令行paddlespeech asr或 Python 中实例化ASRExecutor。Demo 的核心执行逻辑集中在 paddlespeech/cli/asr/infer.py 中的ASRExecutor类它继承自 paddlespeech/cli/executor.py 的BaseExecutor遵循统一的参数解析 → 模型初始化 → 输入校验 → 预处理 → 推理 → 后处理流水线。命令行入口由 paddlespeech/cli/entry.py 负责分发将paddlespeech asr ...解析并路由到ASRExecutor.execute()。二、环境安装三种方式任选Demo 文档要求先完成 PaddleSpeech 的安装详细步骤见 安装文档。安装方式按难度分为三档方式功能支持系统简单使用 PaddleSpeech 命令行功能在 AI Studio 上体验Linux、Mac不支持 M1、Windows中等支持主要功能如使用 examples 中的模型、训练自己的模型Linux、Mac不支持训练、Windows不支持训练困难全部功能含结合 Kaldi 的 CTC 解码、语言模型训练、强制对齐等Ubuntu简单方式的核心步骤以 conda 环境为例conda install -y -c conda-forge sox libsndfile bzip2 pip install pytest-runner -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple pip install paddlespeech -i https://pypi.tuna.tsinghua.edu.cn/simple两个常见注意事项官方文档明确说明若下载nltk_data失败多半是网络原因可手动下载官方提供的 nltk_data 压缩包解压到${HOME}目录若提示paddlespeech-ctcdecoders这个 Python 包没有找到无需担心该包是非必须的仅影响 DeepSpeech2 系列模型的解码不影响其他模型推理。三、准备输入WAV 文件与采样率约定本 Demo 的输入必须是一个.wav文件且采样率必须与所选模型保持一致预训练模型采样率统一为 16ksample_rate参数可选 8000 或 16000。Demo 文档提供了三个示例音频可以直接下载wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/zh.wav https://paddlespeech.cdn.bcebos.com/PaddleAudio/en.wav https://paddlespeech.cdn.bcebos.com/PaddleAudio/ch_zh_mix.wav这三个文件分别用于中文、英文、中英混合Code-Switch识别演示。如果输入音频采样率与模型不一致程序会给出提示并询问是否自动重采样——详见后文--yes参数的说明。四、命令行快速上手推荐安装完成后直接使用paddlespeech asr即可完成识别。Demo 文档给出了四类典型用法# 中文使用默认模型 conformer_wenetspeech paddlespeech asr --input ./zh.wav -v # 英文 paddlespeech asr --model transformer_librispeech --lang en --input ./en.wav -v # 中英混合Code-Switch paddlespeech asr --model conformer_talcs --lang zh_en --codeswitch True --input ./ch_zh_mix.wav -v # 中文 ASR 标点恢复管道组合 paddlespeech asr --input ./zh.wav -v | paddlespeech text --task punc -v其中-v用于显示 logger 日志信息如果不想看到日志去掉-v即可。最后一条命令把 ASR 的输出通过管道交给paddlespeech text --task punc标点恢复任务做二次处理一次性得到带标点的完整文本这正是 PaddleSpeech 命令行可以自由组合任务的一大优势。4.1 查看帮助paddlespeech asr --help4.2 命令行参数详解Demo 文档列出的核心参数如下结合 infer.py 中的 argparse 定义 可确认它们的默认值与可选范围参数必填默认值说明--input是无用于识别的音频文件.wav--model否conformer_wenetspeechASR 模型类型可选值来自预训练模型注册表--lang否zh模型语言可选zh/en/zh_en--codeswitch否False是否启用中英语言转换仅zh_en模型可用--sample_rate否16000模型音频采样率可选8000/16000--config否NoneASR 任务配置文件为None时使用预训练模型自带默认配置--ckpt_path否None模型参数文件为None时自动下载预训练权重--yes否False设置后默认同意程序的所有请求包括自动转换输入音频采样率不再交互询问--device否当前 paddlepaddle 默认 device执行推理的设备CPU/GPU--verbose否关闭设置后显示 logger 信息除文档列出的参数外从源码还可以看到三个额外的实用参数--decode_method解码方式可选ctc_greedy_search、ctc_prefix_beam_search、attention、attention_rescoring默认attention_rescoring仅 transformer/conformer 类模型支持见 infer.py--rtf打印实时率Real-time FactorRTF 任务耗时 / 音频时长用于评估推理速度见 infer.py-d/--job_dump_result将批量任务结果保存到*.job.done文件见 executor.py。4.3 输出示例# 中文 [2021-12-08 13:12:34,063] [ INFO] [utils.py] [L225] - ASR Result: 我认为跑步最重要的就是给我带来了身体健康 # 英文 [2022-01-12 11:51:10,815] [ INFO] - ASR Result: i knocked at the door on the ancient side of the building五、Python API 调用不想用命令行时可以用几行 Python 代码完成同样的识别。Demo 文档给出的示例import paddle from paddlespeech.cli.asr import ASRExecutor asr_executor ASRExecutor() text asr_executor( modelconformer_wenetspeech, langzh, sample_rate16000, configNone, # Set config and ckpt_path to None to use pretrained model. ckpt_pathNone, audio_file./zh.wav, force_yesFalse, devicepaddle.get_device()) print(ASR Result: \n{}.format(text))输出ASR Result: 我认为跑步最重要的就是给我带来了身体健康从源码看ASRExecutor.__call__()infer.py的完整调用链为paddle.set_device(device)设置推理设备_init_from_path(...)根据model lang codeswitch sample_rate拼接出资源 tag如conformer_wenetspeech-zh-16k从预训练模型注册表加载配置与权重若指定了config/ckpt_path则加载本地文件ckpt_path会自动补.pdparams后缀_check(...)校验音频文件存在性、格式、时长默认单次输入时长上限 50 秒与采样率若采样率不匹配且force_yesFalse会进入交互式询问Y/Npreprocess(...)用soundfile读取音频PCM16必要时做 16bit↔32bit 转换与librosa.resample重采样再按preprocess_config提取 FBank 特征infer(...)在paddle.no_grad()下执行模型解码DeepSpeech2 走 CTC 解码器conformer/transformer 走 attention_rescoring 等解码方法postprocess(...)返回识别文本。六、预训练模型一览下表是 Demo 文档列出的、可被命令行与 Python API 直接使用的预训练模型。模型的下载地址、MD5、配置路径与权重路径等元数据均注册在 paddlespeech/resource/pretrained_models.py 的asr_dynamic_pretrained_models字典中首次使用时按需自动下载到本地模型目录。模型语言转换Code-Switch语言采样率conformer_wenetspeechFalsezh16kconformer_online_multicnFalsezh16kconformer_aishellFalsezh16kconformer_online_aishellFalsezh16ktransformer_librispeechFalseen16kdeepspeech2online_wenetspeechFalsezh16kdeepspeech2offline_aishellFalsezh16kdeepspeech2online_aishellFalsezh16kdeepspeech2offline_librispeechFalseen16kconformer_talcsTruezh_en16k6.1 模型选择建议中文首选conformer_wenetspeechDemo 默认模型基于大规模中文语料 WenetSpeech 训练英文transformer_librispeech基于 LibriSpeech 训练对应--lang en中英混合/语码转换conformer_talcs对应--lang zh_en --codeswitch True。注意源码中有一个约束codeswitch为True时lang必须是zh_en否则会抛出codeswitch is true only in zh_en model异常见 infer.py在线流式场景名称中含online的模型如conformer_online_multicn、conformer_online_aishell适合流式识别需求。6.2 使用本地配置与权重如果你有自己的模型可通过--config和--ckpt_path指定本地文件此时程序不会自动下载预训练模型paddlespeech asr --config ./model.yaml --ckpt_path ./checkpoint --input ./test.wav -v注意ckpt_path传入的是去掉.pdparams后缀的路径前缀源码会自动补全后缀见 infer.py。七、进阶玩法与常见问题7.1 批量识别paddlespeech asr支持传入.job/.txt/.scp格式的批量任务文件。文件每行格式为id 音频路径程序会逐条识别并按行输出id 结果配合-d参数可将结果落盘到*.job.done文件见 executor.py。也可以把音频路径通过标准输入管道传入。7.2 采样率不匹配怎么办如果输入 WAV 采样率不是模型要求的 16k/8k_check()会打印警告并询问是否自动重采样命令行加--yes或-y可跳过交互询问直接自动重采样Python API 设置force_yesTrue同理若不想依赖自动重采样官方建议用 sox 预先转换sox input.xx --rate 16k --bits 16 --channels 1 output.wav8k 时把--rate换成 8000。7.3 音频时长限制从源码看默认单条音频的最大时长上限约为 50 秒self.max_len 50且会随 transformer 类模型的位置编码与下采样配置动态计算超时会提示Please input audio file less then {max_len} seconds见 infer.py 与 infer.py。因此长音频建议先切片再识别。7.4 ASR 标点恢复中文 ASR 的裸输出通常没有标点PaddleSpeech 提供了独立的标点恢复任务paddlespeech text --task punc其实现位于 paddlespeech/cli/text/infer.py。管道组合一行即可拿到带标点的文本paddlespeech asr --input ./zh.wav -v | paddlespeech text --task punc -v7.5 观察推理性能加上--rtf参数即可输出样本数与平均 RTF任务耗时 / 音频时长用于评估模型在目标设备上的实时性实现见 executor.pypaddlespeech asr --input ./zh.wav --rtf -v八、小结本 Demo 展示了 PaddleSpeech 语音识别能力的最小可用闭环一条命令或几行 Python 代码即可完成从 WAV 音频到文本的转录支持中文、英文、中英混合三种语言场景并可无缝衔接标点恢复、批量识别等进阶能力。其背后由ASRExecutor统一管理模型加载、音频校验、特征提取与解码推理预训练模型则通过 pretrained_models.py 集中注册、按需下载。如果想要更进一步如自行训练 ASR 模型、部署流式识别服务或接入 C 推理可以继续阅读仓库中的 examples 目录、流式 ASR 服务 Demo 与 runtime 工程。【免费下载链接】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创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表