语音识别-paddlespeech-流程梳理

2024-05-13 19:28

本文主要是介绍语音识别-paddlespeech-流程梳理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一次研究语音识别是21年年底的事情了,记得当时是先进行了语音识别的应用,然后操作了模型的再次训练;两年过去,关于ASR相关流程忘得差不多了,这次基于paddlespeech的代码,进行了流程的梳理,关于一些细节还在学习中,先记录于此:

'zh:[conformer_wenetspeech-zh-16k], '
'en:[transformer_librispeech-en-16k], '
'zh_en:[conformer_talcs-codeswitch_zh_en-16k]'

本次测试的是中文、非流式模型,model = conformer_wenetspeech

语音识别,输入可以是.wav,输出是其对应的中文文字;

针对该测试调用的模型,该代码可简单分为三部分:

  • Init model and other resources from a specific path;
  • 对输入的.wav预处理,wav–>vector/tensor;
  • 预测,并输出结果

针对第二部分,涉及到的基本是:文件的读取,及,特征提取,等。

涉及的关键词,比如是:
.wav的读取,波形变换,MFCC, pcm16 -> pcm 32,fbank,等;

涉及的库:soundfile,librosa,python_speech_features 等;

针对第三部分,可以分为三步来阐述:
在这里插入图片描述

# paddlespeech.s2t.models.u2  line 876  --- U2Model(U2DecodeModel)
def _init_from_config(cls, configs: dict):"""init sub module for model.Returns:vocab size(int), encoder(nn.Layer), decoder(nn.Layer), ctc(nn.Layer)"""# U2 Encoder type: conformer---ConformerEncoder---paddlespeech.s2t.modules.encoder.py# U2 Decoder type: bitransformer---BiTransformerDecoder----error# U2 Decoder type: transformer---paddlespeech.s2t.modules.decoder.py# ctc decoder and ctc loss---CTCDecoderBase---paddlespeech.s2t.modules.ctc.py

第一步:代码调用了conformer-encoder,进行编码:
输入:(batch, max_len, feat_dim) — [1, 498, 80]
输出:(B, maxlen, encoder_dim) — [1, 123, 512]

第二步:使用 CTCDecoderBase + ctc prefix beam search 对 encoder-out 进行 操作,输出 beam_size个预测结果:
输入:(B, maxlen, encoder_dim) — [1, 123, 512]
输出:长度为beam_size的列表,列表的每一项包括一个预测结果,及其得分;

[((1719, 4412, 66, 4641, 2397, 2139, 4935, 4381, 3184, 1286, 2084, 3642,1719, 1411, 2180, 98, 4698, 205, 309, 1458), -0.0025442275918039605), ((1719, 4412, 66, 4641, 2397, 2139, 4935, 4381, 3184, 1286, 2084, 3642, 1719, 1411, 2180, 4698, 205, 309, 1458), -7.808644069258369), ----
]

第三步:使用 TransformerDecoder 进行最后的纠正与预测,其输入是第一步的encoder-out 和第二步的初步预测结果;

(['我认为跑步最重要的就是给我带来了身体健康'], [(1719, 4412, 66, 4641, 2397, 2139, 4935, 4381, 3184, 1286, 2084, 3642, 1719, 1411, 2180, 98, 4698, 205, 309, 1458)]
)

关于第二步的:CTCDecoderBase + ctc prefix beam search:

对于 CTCDecoderBase,其输入是:
输入:(B, maxlen, encoder_dim) — [1, 123, 512]

 ctc_probs = self.ctc.log_softmax(encoder_out)

输出:(1, maxlen, vocab_size) — [1, 123, 5537]

将 encoder_out 进行了一个linear,输出维度是[1, maxlen, vocab_size],然后进行softmax,得到每一步的关于vocab的概率分布;

然后针对该输出,进行pefix beam search,得到:长度为beam_size的列表,其中,列表的每一项包括一个预测结果,及其得分;

关于prefix beam search:

这篇关于语音识别-paddlespeech-流程梳理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/986611

相关文章

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo