飞桨paddlespeech 语音唤醒初探

这篇具有很好参考价值的文章主要介绍了飞桨paddlespeech 语音唤醒初探。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PaddleSpeech提供了MDTC模型(paper: The NPU System for the 2020 Personalized Voice Trigger Challenge)在Hey Snips数据集上的语音唤醒(KWS)的实现。这篇论文是用空洞时间卷积网络(dilated temporal convolution network, DTCN)的方法来做的,曾获the 2020 personalized voice trigger challenge (PVTC2020)的第二名,可见这个方案是比较优秀的。想看看到底是怎么做的,于是我对其做了一番初探。

1,模型理解

论文是用空洞时间卷积网络(DTCN)的方法来实现的。为了减少参数量,用了depthwise & pointwise 一维卷积。一维卷积以及BatchNormal、relu等组成1个DTCNBlock, 4个DTCNBlock组成一个DTCNStack。实现的模型跟论文里的有一些差异。论文里的模型具体见论文,实现的模型框图见下图:

飞桨paddlespeech 语音唤醒初探

模型有PreProcess、DTCNStack(3个, DTCN:空洞时间卷积网络)、FCN(全连接网络)、sigmoid这些模块。PreProcess是做前处理,主要是由3个一维卷积(1个depthwise和两个pointwise)组成。每个DTCNStack由4个DTCNBlock组成,DTCNBlock跟preprocess模块相似,唯一的区别是多了残差模块(图中画红线的)。

这个模型的参数个数不到37K,见下图:

飞桨paddlespeech 语音唤醒初探

参数个数是比较少的,相对论文里的也少了不少。刚开始我不太相信,后来我对网络中的模型每层都算了参数个数,的确是这么多。想了一下,对比paper里的模型,参数变少主要有两点:一是少了一些模块,二是FCN由linear替代(linear替代FCN会少不少参数)。

模型用的特征是80维的mel-filter bank,即每帧的特征是一个80维的数据。把一个utterance的这些帧的特征作为模型的输入,输出是每一帧的后验概率,如果有一帧的后验概率大于threshold,就认为这一utterance是关键词,从而唤醒设备。举例来说,一个utterance有158帧,模型的输入就是158*80的矩阵(158是帧数,80是特征的维度),输出是158*1的矩阵,即158个后验概率。假设threshold设为0.8,这158个后验概率中只要有一个达到0.8,这个utterance就认为是关键词。

2,环境搭建

PaddleSpeech相关的文档里讲了如何搭建环境(Ubuntu下的),这里简述一下:

1)创建conda环境以及激活这个conda环境等:

conda create --name paddletry python=3.7

conda activate paddletry

2)安装 paddelpaddle (paddlespeech 是基于paddelpaddle的)

pip install paddlepaddle

3)clone 以及编译paddlespeech 代码

git clone https://github.com/PaddlePaddle/PaddleSpeech.git

pip install .

3,数据集准备

数据集用的是sonos公司的”hey snips”。我几天内用三个不同的邮箱去注册申请,均没给下载链接,难道是跟目前在科技领域紧张的中美关系有关?后来联系到了这篇paper的作者, 他愿意分享数据集。在此谢谢他,真是个热心人!他用百度网盘分享了两次数据集,下载后均是tar包解压出错,估计是传输过程中出了问题。在走投无路的情况下尝试去修复坏的tar包。找到了tar包修复工具gzrt,运气不错,能修复大部分,关键是定义train/dev/test集的json文件能修复出来。如果自己写json文件太耗时耗力了。Json中一个wav文件数据格式大致如下:

{

"duration": 4.86,

"worker_id": "0007cc59899fa13a8e0af4ed4b8046c6",

"audio_file_path": "audio_files/41dac4fb-3e69-4fd0-a8fc-9590d30e84b4.wav",

"id": "41dac4fb-3e69-4fd0-a8fc-9590d30e84b4",

"is_hotword": 0

},

数据集中原有wav文件96396个,修复了81401个。写python把在json中出现的但是audio_files目录中没有的去掉,形成新的json文件。原始的以及新的数据集中train/dev/test wav数如下:

飞桨paddlespeech 语音唤醒初探

从上表可以看出新的数据集在train/dev/test上基本都是原先的84%左右。

4,训练和评估

在PaddleSpeech/examples/hey_snips/kws0下做训练。训练前要把这个目录下conf/mdtc.yaml里的数据集的路径改成自己放数据集的地方。由于我用CPU训练,相应的命令就是./run.sh conf/mdtc.yaml 。 训练50个epoch(默认配置)后,在验证集下的准确率为99.79%(见下图),还是不错的,就没再训练下去。

飞桨paddlespeech 语音唤醒初探

评估出的DET图如下:

飞桨paddlespeech 语音唤醒初探

Paddlespeech也提供了KWS推理命令: paddlespeech kws。需要研究一下这个命令是怎么用的,看相关代码。--input 后面既可以是一个具体的wav文件(这时只能评估一个文件),也可以是一个txt文件,把要评估的文件名都写在里面,具体格式如下图:

飞桨paddlespeech 语音唤醒初探

--ckpt_path是模型的路径,--config是设置配置文件,也就是mdtc.yaml。因为要对整个测试集做评估,所以--input要写成txt的形式。Hey Snips数据集wav文件都在audio_files目录下,需要写脚本把测试集的wav文件取出来放在一个目录下(我的是heytest), 还要写脚本把这次测试文件的文件名以及路径写到上图所示的txt文件里。同时还要在paddlespeech 里加些代码看推理出的值是否跟期望值一致,做些统计。把这些都弄好后就开始做运行了,具体命令如下图:

飞桨paddlespeech 语音唤醒初探

最终测试集下的结果,见下图:

飞桨paddlespeech 语音唤醒初探

共19442个文件,跟期望一致的(图中correct的)是19410个,准确率为99.84%。与验证集下的大体相当。文章来源地址https://www.toymoban.com/news/detail-450493.html

到了这里,关于飞桨paddlespeech 语音唤醒初探的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 百度飞桨paddlespeech实现小程序实时语音流识别

    前言: 哈哈,这是我2023年4月份的公司作业。如果仅仅是简单的语音识别倒也没什么难度,wav文件直接走模型输出结果的事。可是注意标题,流式识别、实时! 那么不得不说一下流式的优点了。 1、解决内存溢出的烦恼。 2、打算做成无文件生成,接收语音流直接走模型,减

    2023年04月21日
    浏览(58)
  • 百度飞桨PaddleSpeech的简单使用

    PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型,一些典型的应用示例如下:语音识别、语音翻译 (英译中)、语音合成、标点恢复等。 我只用到了语音识别(语音转文字)、语

    2024年02月03日
    浏览(52)
  • 语音识别系列︱paddlespeech的开源语音识别模型测试(三)

    参考: 语音识别系列︱用python进行音频解析(一) 语音识别系列︱paddlehub的开源语音识别模型测试(二) 上一篇paddlehub是一些预训练模型,paddlespeech也有,所以本篇就是更新paddlespeech里面的模型。 参考:PaddleSpeech 一键预测,快速上手Speech开发任务 PaddleSpeech 是 all-in-one 的语

    2024年02月05日
    浏览(75)
  • Python使用PaddleSpeech实现语音识别(ASR)、语音合成(TTS)

    目录 安装 语音识别 补全标点 语音合成 参考 PaddleSpeech是百度飞桨开发的语音工具 注意,PaddleSpeech不支持过高版本的Python,因为在高版本的Python中,飞桨不再提供paddle.fluid API。这里面我用的是Python3.7 需要通过3个pip命令安装PaddleSpeech: 在使用的时候,urllib3库可能会报错,因

    2024年04月25日
    浏览(43)
  • 人工智能-语音识别技术paddlespeech的搭建和使用

    PaddleSpeech是百度飞桨(PaddlePaddle)开源深度学习平台的其中一个项目,它基于飞桨的语音方向模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型。PaddleSpeech支持语音识别、语音翻译(英译中)、语音合成、标点恢复等应用示例。

    2024年02月02日
    浏览(64)
  • 部署paddleSpeech

    docker pull ubuntu:18.04 docker run -itd --name pd_base ubuntu:18.04 2.1 不安装conda 2.2 安装python3.10 https://blog.csdn.net/weixin_43935402/article/details/121416812 2.2.1 apt update 2.2.2安装依赖 apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev 2.2.

    2023年04月23日
    浏览(34)
  • paddlespeech 安装和测试教程

    项目地址 https://github.com/PaddlePaddle/PaddleSpeech 环境要求 paddlepaddle = 2.3.1 python3.7 pip版本为20.2.2或更高版本  python -m pip --version 别的环境不太确定,就把自己的环境写一下,供参考 首先要建立python 3.9的环境 在坏境中配置 因为出现过一些安装问题,所以用这种方法安装 如果没有

    2024年02月06日
    浏览(36)
  • 安装PaddleSpeech

    python: 3.8.10

    2024年01月21日
    浏览(32)
  • paddlespeech on centos7

    paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、识别、音频分类和语音翻译等功能。 paddlespeech整体是比较简单易用的,但是安装部署依然有很多坑,本文为探坑而写。 centos

    2024年02月09日
    浏览(42)
  • PaddleSpeech 的环境搭建与使用(windows)

    一、环境搭建准备 安装Anaconda 下载地址:https://www.anaconda.com/download#downloads 进入后根据自己的电脑系统下载,这是python 3.10版本下载地址,如果想要下载其它版本可进入此链接(https://www.python.org/downloads/) 下载完成后点击进行安装 点击下一步,到这一步时,可以选择将Anaco

    2024年02月07日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包