语音识别(Speech Recongnition)

embedded/2024/9/21 21:46:26/
  • Speech Recongnition
  • TTS(Text-to-Speech),属于Speech Synthesis

    典型模型Tacotron,用的是一个典型的 Seq2Seq + Attention 的模型架构。它输出还会有个后处理(Post-processing)才会产生声音频谱(spectrogram)。

    CBHG结构(G2P,Grapheme-to-Phoneme,字素到音素):

SR基本概念

语音模型:即将 sound 转为 text。

  • Text: a sequence of Token 长度:N,总种类数量:V
  • Sound: vectors sequence 长度:T,维度:d

一、Text Token

  • Phoneme(音位、音素):即 a unit of sound,可以理解为发音的音标
  • Grapheme(字位,书写位,最多使用⭐):即 smallest unit of a writting,比如【26个英文字母+空格+标点符号】
  • Word:即语言中的单词
  • Morpheme(字位,书写位):即 smallest meaningful unit,比如英语单词的词根。词素是构成词的要素。词素是比词低一级的单位,词是语言中能够独立运用的最小单位,是指词在句法结构中的地位和作用而言的。
  • Bytes:直接用字节表示一组Text,常见的诸如 UTF-8 编码

二、声音特征 Acoustic Feature

通常以 25ms 为窗口长度,将声音讯号转为 一个向量(frame,也即帧),每次窗口移动 10ms,也就是说 1s →100 frames

frame 制作方法

  1. sample points:当 声音采样率 在 16KHz 时,其在 25ms 内一共有 400个 sample points,直接将这400个数字拿过来当frame即可
  2. 39-dim MFCC:一共有39维
  3. 80-dim filter bank output:一共有80维

frame 制作过程
首先,Waveform(波形) 通过 DFT 变为 spectrogram(频谱),此时已经可以用于训练了

一个人说一句话,其 waveform 可以很不一样,但是 spectrogram 基本上会相似,甚至有人可以通过 spectrogram 来判断说话的内容


DFT(Discrete Fourier Transform)是将连续音频信号转换为离散频域表示的一项重要操作。DFT是一种数学变换,用于将时域信号(如音频波形)转换为频域表示。它是连续傅立叶变换(Continuous Fourier Transform,CFT)的离散版本,适用于离散时间序列。

然后,spectrogram 通过 filter bank(滤波器组) 变为一个个向量

滤波器组(filter bank)是由一组滤波器所组成的系统,用于对输入信号进行频率分析。在声学特征提取中,常用的滤波器组是梅尔滤波器组(Mel filter bank)。梅尔滤波器组是一种非线性的滤波器组,它的设计基于梅尔刻度(Mel scale),该刻度是一种根据人耳感知频率的特性而设计的心理声学刻度。

随后再取 log,再进行 DCT,最后生成 MFCC。

在声学特征提取中,通常会使用梅尔滤波器组计算每个滤波器通道的能量,得到梅尔频谱系数(Mel-frequency cepstral coefficients,MFCCs)。然而,MFCCs包含了大量的频率信息,而且相邻帧之间往往高度相关,这可能导致冗余信息和过多的数据。
为了降低数据维度并捕捉主要信息,通常会将MFCCs序列通过DCT转化为倒谱系数(Cepstral coefficients)。倒谱系数不同于原始频谱系数,它们具有更好的特性和表示能力,适合语音和音频信号的建模和分析。


MFCC 其实为 MFCC系数,MFCC(Mel Frequency Cepstral Coefficients)是一种常用于音频信号处理和语音识别领域的声学特征提取方法。在声学特征提取中,MFCC用于将连续的音频信号划分成一帧一帧的小片段,并将每帧表示为一组系数,以便在后续的分析中使用

Listen, Attend and Spell(LAS)

Listen:即 Encoder;Spell:Decoder,这是一个经典的使用注意力机制的 seq2seq 模型

一、Listen

  • 输入:一串 acoustic features(声音向量)
  • 输出:同样也是一串向量,数量、维度和长度均和输入相同
  • 作用:提取语言内容信息,将音频信号分析为高级的声学特征表示,将语种之间的差异抹除,将噪声去除

    种类
    1. RNN(Recurrent Neural Network)
    2. 1-D CNN(一维卷积神经网络)
    3. Self-attention Layers(自注意力)

Down Sampling
起因:数据量过大,计算量过大,相邻 acoustic features 包含信息差异较小,为了节省数据量,让训练更有效率

种类:

  • Pyramid RNN:两个 Tensor 结合起来送入下一层,RNN的变种
  • Pooling over time:两个 Tensor 选一个送入下一层,RNN的变种
  • Time-delay DNN(TDNN):CNN的常见变种
  • Truncated Self-attention:在生成output时,一个Tensor的attention只作用于一段范围,而不是整个input,Self-attention的变种

二、Attention(Attend)

主要作用是通过注意力机制建立声学特征和文本之间的关联,帮助模型更好地将声学特征转化为文本输出。其可以动态地分配注意力权重,以捕获输入序列中不同位置的重要信息的关键组件。

参考:https://blog.csdn.net/m0_56942491/article/details/133984968

三、Spell

  1. 上下文信息融合:

    • Input:
      • 前一个时间步的隐藏状态( z i z_i zi,初始为 z 0 z_0 z0
      • 前一个时间步生成的标记(token,初始为起始符号如<s>
      • 当前时间步"Attend"环节的输出(即上下文向量Context Vector)
    • Method:通常是使用前馈神经网络,如RNN单元
    • Output:
      • 新的隐藏状态 z 1 z_1 z1
      • vocabulary 各个token的概率值(distribution)。
  2. 随后一般就从 distribution 中取概率值最大的那个token,作为本次的 token 输出,比如cat,第一次输出token:c。

    需要明确的是,如何选取 token 也是需要进行研究的,这里取 概率值最大的 Token 采用的技术叫 贪心解码(Greedy Decoding),常见的还有 束搜索(Beam Search)

  3. 然后将刚刚得到的新的hidden state z1,去做attention,得到c1,然后再进行刚刚的操作,即将得到的 z1 投入新一轮的 attention 中,计算得到c1,再去计算下一轮。

  4. 然后不停循环,直到最后生成结束标志或达到最大生成长度为止。

CTC,RNA,RNN-T,Neural Transducer,MoChA模型

To Be Continued…

https://blog.csdn.net/m0_56942491/article/details/134012653


http://www.ppmy.cn/embedded/113512.html

相关文章

如何删除git提交记录

今天在提交github时&#xff0c;不小心提交了敏感信息&#xff0c; 不要问我提交了啥&#xff0c;问就是不知道 查了下资料&#xff0c;终于找到简单粗暴的方式来删除提交记录。方法如下 git reset --soft HEAD~i i代表要恢复到多少次提交前的状态&#xff0c;如指定i 2&…

Oracle数据库中的Oracle Real Application Clusters是什么

Oracle Real Application Clusters&#xff08;简称Oracle RAC&#xff09;是Oracle数据库的一个关键特性&#xff0c;它允许多个数据库实例同时访问和管理同一个数据库。这种架构设计的目的是为了提高数据库系统的可扩展性、可用性和性能。 Oracle RAC的核心特点包括&#xf…

局域网windows下使用Git

windows下如何使用局域网进行git部署 准备工作第一步 &#xff0c;ip设置设置远程电脑的ip设置&#xff0c;如果不会设置请点击[这里](https://blog.csdn.net/Black_Friend/article/details/142170705?spm1001.2014.3001.5501)设置本地电脑的ip&#xff1a;验证 第二步&#x…

从数据仓库到数据中台再到数据飞轮:社交媒体的数据技术进化史

前言 大家好&#xff0c;我是在大数据方面具有一定理解的博主。今天我想分享下从数据仓库到数据中台再到数据飞轮:社交媒体的数据技术进化史&#xff0c;也是这篇文章主题。我亲眼目睹了社交媒体的快速发展&#xff0c;以及随之而来的海量数据的生成与积累。如何有效地管理和利…

高级c语言(五)

输出缓冲区&#xff1a; 当我们使用标准库的输出系列函数打印数据到屏幕&#xff0c;数据并不会立即显示到屏幕上&#xff0c;而先存储到一块内存中&#xff0c;我们把这块内存称为输出缓冲区&#xff0c;等满足相关条件后&#xff0c;再从缓冲区中显示到屏幕&#xff0c;相关…

DAY 13 : 排序

定义 稳定排序和非稳定排序 设文件f&#xff08;R1……Ri……Rj……Rn&#xff09;中记录Ri、Rj&#xff08;i≠j&#xff0c;i、j1……n&#xff09;的key相等&#xff0c;即KiKj。 若在排序前Ri领先于Rj&#xff0c;排序后Ri仍领先于Rj&#xff0c;则称这种排序是稳定的&…

机器学习与深度学习的区别

1. 定义 机器学习&#xff08;Machine Learning&#xff09; 定义&#xff1a;机器学习是一种通过构建和训练模型&#xff0c;使计算机能够从数据中学习并做出预测的技术。它包括一系列算法&#xff0c;这些算法可以从数据中识别模式&#xff0c;并使用这些模式对新数据进行预…

静态库 动态库

https://blog.csdn.net/mahoon411/article/details/113565482 库&#xff1a;可执行代码的二进制文件&#xff0c;里面有可以直接使用的函数&#xff0c;变量等&#xff1b;不能单独运行 因为 Linux 和 Win 的链接器、汇编器、编译器的不同&#xff0c;相同代码的库不同 Lin…