高级人工智能之语音识别

article/2025/9/12 14:32:18

文章目录

    • 语音识别预处理
    • 语音识别配对

这章是将前面学的一些处理综合起来,设计出一个语音识别系统,判断当前语音的匹配度。

很多知识是和我前面总结的CMSC5707是重合的,因此笔者只关注其中不太相同的部分。

语音识别预处理

进行语音识别的过程主要如下:

  1. 首尾端点检测 endpoint detection
  2. 预加重 pre-emphasis
  3. 加窗分帧 frame blocking and windowing
  4. 特征提取 feature extraction,在课间中用的是Mel频率倒谱系数(MFCC)特征提取。
  5. 失真测量 distortion measure

关于第1步,首尾端点检测其实就是为了检测在一段语音(一般有多帧)中开始和结束的位置,方便我们分析。其需要统计帧的累积能量以及该帧中过零点的个数,过零点定义如下,直观理解下,开始位置的能量会增高,同时过零点数目变多;结束的位置的能量会降低,同时过零点数量也会降低。
在这里插入图片描述
找starting point, 假设一帧the time frame length =20 ms, and non-overlapping =10 ms,需要统计出连续帧(比如3个连续帧)的能量energy以及过零点数目zero crossing count,当这连续帧的能量和过零点都超过某个阈值,则可认为当前第一帧的第一个时间点,为starting point。
当3个连续帧,第一个帧id=32,找starting point的流程如下:

if (E(i=32)> e_threshold  and ZC(i=32) > zc_threshold ) andand (E(i=33)> e_threshold  and ZC(i=33) > zc_threshold) andand (E(i=34)> e_threshold  and ZC(i=34) > zc_threshold)) then the starting time (in seconds) of the 32th frame is the starting point其中一帧的能量E(i)=0.5*sum(s(k)*s(k))

找ending point就是找连续低于阈值的时候。

关于第2,3步,在我之前CMSC5707的文章中有讲到。

关于第4步,MFCC特征提取相当于在之前倒谱分析的过程中加入了一层Mel滤波,之前倒谱分析参考我的上一篇文章CMSC5707-高级人工智能之音频信号特征提取,加入Mel滤波的MFCC特征提取的步骤如下:

  1. 先对语音进行预加重、分帧和加窗(预处理,还未进入特征提取);
  2. 对每一个分帧窗口,通过傅立叶变换FFT得到对应的频谱;将上面的频谱通过Mel滤波器组得到Mel频谱;
  3. 在Mel频谱上面进行倒谱分析(取对数,做逆变换,实际逆变换一般是通过DCT离散余弦变换来实现),获得Mel频率倒谱系数MFCC,这个MFCC就是这帧语音的特征。通过Matlab的htk-mfcc tool可以从.wav文件中提取出13个MFCC系数组成的向量,第一个系数是关于这一帧的能量energy term,与波谱分析信息无关,因此取其中的第2个到第13个系数作为音帧的特征系数。
    在这里插入图片描述
    在这里插入图片描述
    关于第5步,就可以用上面提取出来的关于每一个frame的特征向量,衡量两个信号的差异。主要就是两个特征向量(c1,c2...c13)(c1',c2'...c13')分量差距的累加和。
    请添加图片描述

语音识别配对

在经过上面的预处理后,就可以进入语音识别阶段speech recognization了。针对已有的标准的样本(reference sample/ template sample)与一个待识别的输入(unknown input),已经可以计算出它们不同帧之间组成的差异矩阵distortion matrix了,问题是如何进行匹配,因为其中最难处理的就是不同语音之间的时间对齐,也就是不同语音对应音帧的时间是不完全相同的。课件中采取了一种动态规划Dynamic Programming的方法,进行弹性匹配,如下图所示。

在Accumulated distortion score matrix中找到累加差异的最小值optimal score,然后从这里开始回溯找到最佳匹配路径optimal path.
请添加图片描述
找到累加差异的最小值optimal score(最佳路径的终点)应该在最顶端一行top-row或者最靠近右边的一列right-most-column,其找到的最佳路径起点也应该在最底部一行bottom-row或者最靠近左边的一列left-most-cloumn的最小值。

但是也应该尽量让最佳匹配路径在下图中的白色区域,也就是最佳路径的终点也应在白色区域中。如果匹配的位置在黑色区域中,就会让匹配得到的输入未知序列input sequence和参考模板reference之间的长度差异过大,即使optimal score很小,这也不算是种好匹配。
请添加图片描述
习题1:
请添加图片描述
请添加图片描述
在有n个testing sample测试样本set B和有n个reference sample模板样本 set A的时候,我们可以通过绘制混淆矩阵,如下图,来表示每个测试样本和模板样本之间的差异,这也是最后在作业中展现结果的一种方式。混淆矩阵大小为n*n,每个格子填的是对应reference/input pair计算出来的累加差异的最小值optimal score.

由于测试样本和模板样本的特征表示都不一样,因此每个格子的值应该都不一样,但可以想到的是,对应同一类的声音,它们之间的差异值应该是最小的。
请添加图片描述


http://chatgpt.dhexx.cn/article/uBuRG1Od.shtml

相关文章

人工智能:智能语音技术应用场景介绍

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&#x…

小白如何做一个Python人工智能语音助手

小白如何做一个Python智能语音助手 真的是小白?废话不说直接上图1、录音2、语音识别3、接入图灵机器人4、语音合成5、播放语音 前期准备源代码1、录音2、语音识别 (将录音内容进行语音识别转成文字)3、接入图灵机器人(将文字发送给…

人工智能之语音识别

语言识别的概念 机器翻译用印刷文本作为输入,能清楚地区分单个单词和单词串 。 语音识别用语音作为输入,口语对话与语音信号中语言提取的不同: (1)上下文猜测 (2)肢体语言传达信息 fare | fair…

人工智能:语音识别技术介绍

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉: 数据库领域优质创作者🏆&…

AI电话机器人有没有效果?具体的功能都有哪些?

当前人工智能成为科技研发的焦点,AI电话机器人的出现就是为了更好服务企业,提高效率。那么AI电话机器人有没有效果呢?具体的功能都有哪些内容?不妨一起来看看。 ​AI电话机器人是一款适用于电话营销场景的智能语音交互系统。我们…

【第3篇】人工智能(AI)语音测试原理和实践

第1章第2节 人工智能简介 本章首先介绍语音的基本概念及语音的产生原理,然后介绍什么是人工智能语音、人工智能语音交互和人工智能语音测试,最后阐述人工智能语音测试的目的和意义,引领大家走入人工智能语音测试的世界。 目录 第1章第2节 人工…

人工智能之语音识别概述(一)

1. 语音是被研究对象和基本内容 语音识别以语音为研究对象,它是语音信号处理的一个重要研究方向,是模式识别的一个分支,涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言,最…

【第4篇】人工智能(AI)语音测试原理和实践

第1章第3节 AI语音简介 本章首先介绍语音的基本概念及语音的产生原理,然后介绍什么是人工智能语音、人工智能语音交互和人工智能语音测试,最后阐述人工智能语音测试的目的和意义,引领大家走入人工智能语音测试的世界。 目录 第1章第3节 人工智…

语音人工智能的简单介绍

语音人工智能的简单介绍 人工智能 (AI) 已将合成语音从单调的自动电话和几十年前的 GPS 导航系统转变为智能手机和智能扬声器中虚拟助手的优美音调。 对于组织来说,为其特定行业和领域使用定制的最先进的语音 AI 技术从未如此简单。 语音 AI 被用于为虚拟助手提供…

(python)生产者消费者模型

生产者消费者模型当中有两大类重要的角色,一个是生产者(负责造数据的任务),另一个是消费者(接收造出来的数据进行进一步的操作)。 为什么要使用生产者消费者模型? 在并发编程中,如果…

【生产者消费者模型】

Linux生产者消费者模型 生产者消费者模型生产者消费者模型的概念生产者消费者模型的特点生产者消费者模型优点 基于BlockingQueue的生产者消费者模型基于阻塞队列的生产者消费者模型模拟实现基于阻塞队列的生产消费模型 生产者消费者模型 生产者消费者模型的概念 生产者消费者…

【Linux】生产者消费者模型 - 详解

目录 一.生产者消费者模型概念 1.为何要使用生产者消费者模型 2.生产者消费者之间的关系 3.生产者消费者模型的优点 二.基于阻塞队列的生产消费模型 1.在阻塞队列中的三种关系 2.BlockingQueue.hpp - 阻塞队列类 3.LockGurad.hpp - RAII互斥锁类 4.Task.hpp - 在阻塞队…

操作系统 —— 生产者消费者模型

文章目录 1. 生产者消费者模型的理解1.1 串行的概念1.2 并行的概念1.3 简单总结: 2. 基于阻塞队列(block queue)实现此模型2.1 阻塞队列的实现2.2 使用阻塞队列,单线程2.3 使用阻塞队列,多线程2.4 总结:阻塞队列实现的消费者生产者…

生产者消费者案例

目录 前言一、案例描述二、创建快递柜三、创建生产者类四、创建消费者类五、测试类总结 前言 生产者消费者模式属于一种经典的多线程协作的模式,弄清生产者消费者问题能够让我们对于多线程编程有更深刻的理解,下面,为大家分享一个生产者消费…

JAVA多线程之生产者消费者模型

生产者消费者模型 所谓的生产者消费者模型,是通过一个容器来解决生产者和消费者的强耦合问题。通俗的讲,就是生产者在不断的生产,消费者也在不断的消费,可是消费者消费的产品是生产者生产的,这就必然存在一个中间容器&…

Linux生产者消费者模型

文章目录 生产者消费者模型生产者消费者模型的概念生产者消费者模型的特点生产者消费者模型优点 基于BlockingQueue的生产者消费者模型基于阻塞队列的生产者消费者模型模拟实现基于阻塞队列的生产消费模型 生产者消费者模型 生产者消费者模型的概念 生产者消费者模式就是通过一…

生产者消费者模型你知道多少

背景 进入正题之前先说点故事。从最开始学java的那里开始:我是从08年下半年开始学Java,在《我的六年程序之路》中提到了一些。当时比较简单,每天看尚学堂的视频(对于初学者而言看视频好一些。),然后写代码。…

生产者消费者模型详解

生产者消费者模型 文章目录 生产者消费者模型什么是生产者消费者模型基于BlockingQueue的生产者消费者模型单生产者单消费者模型多生产者多消费者模型 什么是生产者消费者模型 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接…

Python -- 生产者消费者

代码 # -*- coding: utf-8 -*- # Author : markadc # Time : 2021/4/14 11:43from queue import Queue import time import threading# maxsize: 指定队列最大长度 q Queue(maxsize10)# 生产者 def product(name):count 0while True:# 只要队列没有满,就一直…

生产者与消费者

生产者和消费者 目录 生产者和消费者1.什么是生产者和消费者2.生产者和消费者(不加唤醒机制)3.生产者和消费者(加唤醒机制)4.解决虚假唤醒5.使用lock锁6.面试题 1.什么是生产者和消费者 ​ 在日常生活中,我们去商店买东西,我们就是消费者,商…