【飞桨PaddleSpeech语音技术课程】— 语音唤醒

(以下内容搬运自飞桨PaddleSpeech语音技术课程,点击链接可直接运行源码)

1. KWS 概述

随着人工智能的飞速发展,市场上推出了各式各样的智能设备,AI 语音的发展更是使得语音助手成为各大智能终端设备必不可少的软件。语音是人类与设备最直接的交互方式,不需要和实物接触,可远程操控,对于人们来说是最方便自然的交流方式。

自动语音识别(Automatic Speech Recognition, ASR)是一种将语音转化为文字的技术,是人与机器、人与人自然交流的关键技术之一。ASR 是人与智能设备交互的入口,它的功能就是让设备”听懂“人类的语言,从而能够根据识别到的内容去完成人类想要让它做的事情。

语音唤醒(Keyword Spotting, KWS)是语音识别的入口,如何高效、准确地对用户指令给出反应成为这一技术的最重要的目标。

下图是 IPhone 中 Siri 语音助手的交互示意图,总体上可分为以下三个步骤:

  1. 麦克风持续检测声音信号
  2. 逐帧对声音信号进行特征提取和模型预测
  3. 当接收到一个完整的 “Hey Siri” 的语音时,此刻模型的得分达到最大值,触发唤醒事件
图片来源:https://machinelearning.apple.com/research/hey-siri
图片来源:https://machinelearning.apple.com/research/hey-siri

1.1 产品应用

Apple 广告中 Siri 语音助手的交互演示视频。
点击播放

1.2 KWS、ASR 和声音检测

KWS、ASR 和声音检测的关系:

  • KWS VS ASR:KWS 可以看作是一类特殊的 ASR,他只识别声音中的固定的关键词。ASR 需要语言模型来理解一段声音中的文字,而 KWS 仅需关注固定样式的发音。从模型输入输出的角度看,KWS 输入音频,输出是判别结果;ASR 输入音频,输出是文字序列。
  • KWS VS 声音检测:KWS 和声音检测都是捕获特定的声音,KWS 注重语音中的关键词,而声音检测的范围更为宽泛,可以是自然界中的语音,工业领域里机器产生的声音,人类的哭声,尖叫声等异常声音。从模型输入输出的角度看,KWS 和声音检测都是输入音频,输出判别结果。
图片来源:http://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/Speaker%20(v3).pdf
图片来源:http://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/Speaker%20(v3).pdf

2. 适用于 KWS 的模型

2.1 传统 HMM 模型

与语音识别 ASR 类似,KWS 可以用传统的 HMM 模型完成建模和识别,模型结构上是也是声学模型加解码器。

基于 HMM 的 KWS 模型和传统 ASR 模型的区别:

  • 声学模型:KWS 只需关注少量的音素,对于其他发音可以当作 Filler 处理,因此声学模型的类别数可以做到很低,譬如在单音素建模下只需要 10 个以内;而 ASR 面向所有的发音,音素全,因此声学模型类别数会大很多。
  • 解码器:ASR 的解码器是一个 FST,输入声学模型的结果输出文字序列;而 KWS 的解码器是一个 FSA,如果到达最终状态可以给出一个得分作为唤醒词的分数,解码图的大小相对于 ASR 会小很多。
图片来源:https://developer.nvidia.com/blog/how-to-build-domain-specific-automatic-speech-recognition-models-on-gpus
图片来源:https://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/42537.pdf

2.2 端到端模型

2.2.1 基于后验概率平滑的模型

在 2014 年的文章 Small-footprint keyword spotting using deep neural networks 中,作者提出了一种基于神经网络加后验概率平滑的 KWS 方法,该方法利用词粒度来建模声学模型,可分为以下四个执行步骤:

  • 特征提取和重叠:对音频信号进行逐帧的特征提取,预测每一帧的声学概率分布时,加入了上下文信息(前30帧+后10帧)后作为模型输入。
  • 声学模型:对叠加了上下文信息的频域特征进行声学概率分布的预测,模型总共有 N 个标签,其中标签 0 为 Filler,将与唤醒词的发音无关的归类至此。
  • 后验概率平滑:从声学模型得到整段音频的声学概率分布后,采用滑窗的进行后验概率平滑的计算,这么做可以去除一些噪音,增强鲁棒性。
  • 唤醒词得分计算:引入一个得分窗口,在窗口内统计除 Filler 外的所有声学概率的最大值,通过累乘和开方的计算方式得到最终得分。
### 如何获取并使用 PaddleSpeech 飞桨语音合成工具 #### 工具概述 PaddleSpeech 是由百度飞桨开源的一个强大的语音处理工具包,涵盖了多种语音技术应用,包括但不限于语音识别语音合成、声纹识别以及语音指令等功能[^3]。 #### 获取文档与教程资源 官方提供了详尽的学习资料和实践指南来帮助开发者快速上手。具体可以通过以下途径获得相关文档: - **在线学习课程**:可以参考《飞桨PaddleSpeech语音技术课程》,其中包含了关于如何通过 paddle astudio 平台训练模型的具体指导[^1]。 - **GitHub 仓库中的 README 文件**:此文件不仅介绍了安装方法还列举了一些常见问题解答链接至 issues 页面供进一步查阅[^2]。 #### 安装与环境搭建 为了能够顺利运行该工具包内的各项功能模块,在正式操作之前需完成必要的软件依赖项配置工作: ##### 步骤说明(非实际步骤描述) 以下是推荐的一种实现方案用于设置开发环境以便于后续实验开展: ```bash # 克隆项目代码库到本地机器 git clone https://github.com/PaddlePaddle/PaddleSpeech.git # 进入指定子目录位置准备执行特定任务流程 cd PaddleSpeech/examples/zh_en_tts/tts3/ ``` 接着按照指示进行数据集准备工作之后即可启动针对 fastspeech2 和 hifigan 模型参数调整过程从而构建属于自己的个性化声音生成解决方案[^4]。 #### 功能探索实例分享 下面给出一段简单的 Python 脚本用来演示基本 API 接口调用方式实现文本转语音转换效果如下所示: ```python from paddlespeech.t2s.bin.synthesize import main as synthesize_main config_path = 'conf/default.yaml' checkpoint_path = './exp/checkpoints/snapshot_iter_10000.pdz' synthesize_main(config=config_path, ckpt=checkpoint_path, text="你好世界", output_dir='./output/') ``` 以上代码片段展示了如何利用 `main` 函数加载预先定义好的配置文件路径(`default.yaml`) 及保存下来的权重参数快照 (`snapshot_iter_10000.pdz`) 来完成给定字符串 ("你好世界") 向对应音频片段输出的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值