购物网站建设方案/2345中国最好的网址站
语音是指人们讲话时发出的话语,是一种人们进行信息交流的声音,是由一连串的音组成语言的声音,我们可以理解为语音(speech)=声音(acoustic)+语言(language)。
目录
0.声音的基本属性
0.1.音高(pitch)
0.2.音量(Volume)
0.3.音色(Timbre)
0.4.能量(Energy)
1.傅里叶变换(FT)
1.1.快速傅里叶变换 (FFT)
1.2.短时傅里叶变换 (STFT)
1.2.短时傅里叶逆变换 (iSTFT)
2.频谱图
3.梅尔量表
4.梅尔倒谱系数(Mel-frequency Cepstral Coefficients, MFCC)
梅尔频谱图(mel-spectrogram)
总结
关于语音研究主要可分为两个方面:语言学和语音学。
0.声音的基本属性
【8】由于语音是发声器官发出的一种声波,因而具有一定的音色、音调、音强和音长等基本特征。
- 音调:表示声音的高低,由于声波的频率决定。
- 音强:表示声音的强弱,由声波的振动幅度决定。
- 音色:即音质,是一种声音区别于另一种声音的基本特征,其与声带的振动频率、发音器官的送气方式,声道的形状尺寸等因素密切相关,是一种对各种频率、强度的声波的综合反应,
- 音长:发音时间的长短
0.1.音高(pitch)
在语音中,耳朵感知到的音调的相对高低,这取决于声带每秒产生的振动次数。音高是音调和语调(qq.v.)的主要声学相关性。
0.2.音量(Volume)
音量通常可以用振幅(Amplitude)或分贝(Decibels,dB)来表示。振幅表示声音的振动强度,而分贝则是用对数单位来表达声音的相对强度。
在语音合成中,音量的调整可以通过控制振幅或分贝来实现,以确保生成的语音在听觉上具有合适的音量水平。
0.3.音色(Timbre)
音色是声音的质地或音质,通常由声音的谐波结构和频谱特征来描述。
在语音合成中,可以使用谐波合成或者声码器参数(如倒谱系数)来表示音色。调整音色可以使得合成语音更加自然,并匹配特定的语音风格或说话者特征。
0.4.能量(Energy)
能量通常用于描述声音的强度或活力。在语音信号中,能量可以通过短时能量、功率谱等来表示。
能量的调整可以影响语音的清晰度和强度。在语音合成中,适当地调整能量可以使合成语音听起来更加生动和富有表现力。
1.傅里叶变换(FT)
频信号由几个单频声波组成。当随时间对信号进行采样时,我们只捕获由此产生的振幅。傅里叶变换是一个数学公式,它允许我们将信号分解为它的各个频率和频率的幅度。换句话说,它将信号从时域转换为频域。结果称为频谱。
因为每个信号都可以分解为一组正弦波和余弦波,这些正弦波加起来就是原始信号。这是一个非凡的定理,称为傅立叶定理。
1.1.快速傅里叶变换 (FFT)
FFT是一种可以有效计算傅里叶变换的算法,用于将信号从时域转换到频域。它是对传统傅里叶变换算法的一种改进,能够大大提高计算速度。
傅里叶变换的目的: 将一个信号从时域表示转换为频域表示,即将信号表示为不同频率分量的叠加。
FFT算法基于分治法和迭代的思想,通过将信号划分为较小的子问题,然后合并这些子问题的结果来实现傅里叶变换。主要步骤如下:
- 划分: 将输入信号划分为偶数索引和奇数索引的两部分,分别进行傅里叶变换。
- 递归: 对划分后的子问题进行递归应用FFT算法。
- 合并: 合并子问题的结果,得到整体的傅里叶变换。
从技术上讲,FFT是实现“离散傅里叶变换”(DFT)的优化算法。在一段时间内对信号进行采样,并划分为频率分量。这些分量是单个正弦频率,每个分量都有自己的幅度和相位。下图演示了此转换。在测量的时间段内,信号包含三个不同的主频率。
在第一步中,扫描一部分信号并将其存储在内存中以供进一步处理。在这种情况下,这两个参数是相关的:
- 测量系统的采样率或采样频率fs(例如48 kHz)。这是在 1 秒内获得的平均样本数(每秒样本数)。
- 选择的样本数量;块长度 BL。这始终是 FFT 中以 2 为基数的整数倍(例如,2^10 = 1024 个样本)
从两个基本参数 fs 和 BL 可以确定测量的其他参数:Bandwidth fn (= Nyquist frequency)
该值表示可由FFT确定的理论最大频率,也就是max wav value。
例如,48 kHz的采样率理论上可以确定高达24 kHz的频率分量。在模拟系统的情况下,实际可以达到的值是模拟滤波器,例如在0 kHz时。
测量持续时间 D。测量持续时间由采样率 fs 和块长度 BL 给出。
D = BL / fs。
在 fs = 48 kHz 和 BL = 1024 时,即 1024/48000 Hz = 21.33 ms
频率分辨率 df.频率分辨率是指两个测量结果之间的频率间隔。
df = fs / BL
在 fs = 48 kHz 和 BL = 1024 时,df 为 48000 Hz / 1024 = 46.88 Hz。
1.2.短时傅里叶变换 (STFT)
STFT 是信号在时间上分段,并在每个时间段内进行傅里叶变换的过程。通过这种方式,可以得到信号在时间和频率上的局部表示。
步骤:
- 将信号分帧,形成许多短时窗口。
- 对每个窗口应用傅里叶变换,得到每个窗口的频谱。
- 沿着时间轴滑动窗口,重复步骤2,直到覆盖整个信号。
# pip install torch-stft
import torch
from torch_stft import STFT
import numpy as np
import librosa
import matplotlib.pyplot as pltaudio = librosa.load(librosa.util.example_audio_file(), duration=10.0, offset=30)[0]
device = 'cpu'
filter_length = 1024
hop_length = 256
win_length = 1024 # doesn't need to be specified. if not specified, it's the same as filter_length
window = 'hann'audio = torch.FloatTensor(audio)
audio = audio.unsqueeze(0)
audio = audio.to(device)stft = STFT(filter_length=filter_length, hop_length=hop_length, win_length=win_length,window=window
).to(device)magnitude, phase = stft.transform(audio)
output = stft.inverse(magnitude, phase)
output = output.cpu().data.numpy()[..., :]
audio = audio.cpu().data.numpy()[..., :]
print(np.mean((output - audio) ** 2)) # on order of 1e-16
1.2.短时傅里叶逆变换 (iSTFT)
iSTFT(inverse short-time fourier transforms)是将经过STFT处理的频域表示恢复为时域表示的逆过程。
步骤:
- 对每个频谱进行逆傅里叶变换,得到每个窗口的时域表示。
- 将所有时域表示进行叠加,得到完整的时域信号。
如果STFT的结果表示为X(t, f),其中t是时间,f是频率,那么iSTFT可以表示为:
iSTFT的目标是重建原始信号,但在实践中,由于STFT通常使用了窗函数和重叠,因此可能存在信号重建时的失真。
为了减小这种失真,通常需要在STFT中使用适当的窗函数,并调整窗口的长度和重叠参数。
更多细节可查看【4】
2.频谱图
频谱图是一种用于可视化信号频谱的图形表示方法。它显示了信号在不同频率上的能量分布,通常以频率为横轴,以信号强度或能量为纵轴。频谱图可用于分析音频、无线通信、雷达等领域中的信号特性。
快速傅里叶变换是一个强大的工具,它允许我们分析信号的频率成分,但是如果我们信号的频率成分随时间变化怎么办?大多数音频信号(如音乐和语音)都是这种情况。这些信号被称为非周期信号。我们需要一种方法来表示这些信号的频谱,因为它们随时间变化。通过在信号的几个窗口段上执行FFT来计算多个频谱,它被称为短时傅里叶变换。 FFT是在信号的重叠窗口段上计算的,我们得到所谓的频谱图。
经过处理后生成频谱图
-
横轴(X轴):频率轴
横轴表示信号的频率范围,通常以赫兹(Hz)为单位。低频在图的左侧,高频在图的右侧。 -
纵轴(Y轴):振幅或功率
纵轴通常表示信号的振幅、功率或能量,取决于具体的应用。在一些图中,可以使用线性或对数刻度来表示振幅。 -
颜色:表示信号强度
频谱图中的颜色深浅一般用于表示信号的强度,深色通常表示较高的能量,浅色表示较低的能量。有时,也可以使用不同颜色来区分不同的信号或频带。 -
时间维度(如果有):时频图
有些频谱图还包括时间维度,形成了时频图。时频图可以显示信号在时间和频率上的变化,适用于分析非稳态信号(随时间变化的信号)。 -
窗函数和FFT(快速傅里叶变换)
在频谱图的制作过程中,通常会使用窗函数对信号进行分段,然后对每个窗口应用FFT来获取频域信息。FFT是一种计算傅里叶变换的高效算法。 -
谱线和谱带
频谱图上的谱线表示信号在不同频率上的分量,而谱带表示每个频率范围内的信号能量。
3.梅尔量表
我们可以很容易地分辨出 500 和 1000 Hz 之间的区别,但我们几乎无法分辨出 10,000 和 10,500 Hz 之间的区别,即使两对之间的距离相同。
1937年,史蒂文斯,福克曼和纽曼提出了一个音高单位,使得相等的音高距离听起来对听众来说同样遥远。这称为梅尔量表。 我们对频率执行数学运算以将它们转换为 mel 刻度。
4.梅尔倒谱系数(Mel-frequency Cepstral Coefficients, MFCC)
概念
- MFCC 是梅尔频谱图的一种紧凑的表示形式,主要用于语音识别和音频特征提取。它是梅尔频谱图上的系数,通常选择前13个或更多的系数作为特征。
处理步骤:
- 从梅尔频谱图中选择一定数量的系数,通常通过离散余弦变换(DCT)进行。
- 取对数,然后应用离散余弦变换,最终得到MFCC。
特点:
- MFCC提供了音频信号在梅尔刻度上的重要信息,同时通过DCT,使得它们更加紧凑且不相关,适用于机器学习算法的输入。
梅尔频谱图(mel-spectrogram)
梅尔频谱图是将频率转换为梅尔刻度的频谱图。
概念:
- 梅尔频谱图是对音频信号进行频域分析的一种方法。它与常规的频谱图类似,但使用了梅尔刻度(Mel scale),该刻度更符合人类听觉的感知。梅尔刻度在低频部分更密集,在高频部分更稀疏,与人类听觉对音调的感知更相符。
处理步骤:
- 将音频信号分帧,对每一帧进行傅里叶变换,得到能量谱。
- 将能量谱映射到梅尔刻度上,通常使用三角滤波器组(Mel滤波器组)来实现这一映射。
- 对每个滤波器的能量进行对数运算,得到梅尔频谱图。
特点:
- 梅尔频谱图在频域上更符合人类听觉的感知,能够更好地反映音频信号的重要特征。
- 通常使用对数尺度,使得相对较小的能量变化更加显著。
Mel-spectogram feature
机器学习的时候,每一个音频段可用对应的mel-spectogram表示,每一帧对应的某个频段即为一个feature。
实际操作中,每个音频要采用同样的长度,feature数量才是相同的。通常还要进行归一化,即每一帧的每个元素要减去该帧的平均值,以保证每一帧的均值均为0。
总结
1.音频信号处理
得到一个音频,以数字方式表示音频信号。然后使用快速傅里叶变换将音频信号从时域映射到频域,并在音频信号的重叠窗口段上执行此操作。
将y轴(频率)转换为对数刻度,将颜色维度(振幅)转换为分贝以形成频谱图。
将y轴(频率)映射到mel刻度上以形成mel频谱图。
2.MFCC和梅尔语谱图(Mel spectrogam)的区别
-
表示形式:
- 梅尔频谱图是一个矩阵,每一行表示一个频带,每一列表示一个时间窗口。
- MFCC是从梅尔频谱图中提取的系数,可以看作是对梅尔频谱的降维表示。
-
应用:
- 梅尔频谱图通常用于可视化音频信号的频域分布。
- MFCC通常用于作为语音信号的特征向量,用于语音识别等任务。
-
维度:
- 梅尔频谱图的维度与原始信号长度和频带数相关。
- MFCC通常选择前13个或更多的系数,因此维度较低,适合作为机器学习模型的输入。
参考文献
【1】 Understanding the Mel Spectrogram | by Leland Roberts | Analytics Vidhya | Medium
【2】Getting to Know the Mel Spectrogram | by Dalya Gartzman | Towards Data Science
【3】【精选】Mel spectrum梅尔频谱与MFCCs_melspectrum-CSDN博客
【4】Inverse short-time Fourier transform - MATLAB istft - MathWorks 한국
【5】 使用一维卷积计算stft与istft - 知乎 (zhihu.com)
【6】傅里叶变换@(stft和istft)-CSDN博客
【7】【精选】语音处理/语音识别基础(五)- 声音的音量,过零率,音高的计算_davidullua的博客-CSDN博客
【8】 语音基础知识(附相关实现代码) - 知乎 (zhihu.com)
【9】FFT (nti-audio.com)
相关文章:

Speech | 人工智能中关于语音务必需要了解的基础知识(信号处理)及代码
语音是指人们讲话时发出的话语,是一种人们进行信息交流的声音,是由一连串的音组成语言的声音,我们可以理解为语音(speech)声音(acoustic)语言(language)。 目录 0.声音的基本属性 0.1.音高(pitch) 0.2.音量(Volume) 0.3.音色(Timbre) 0…...

c# 单例模式实现
方式一: 在C#中,可以使用单例模式来确保一个类只有一个实例,并提供一个全局访问点。 public class Singleton {private static Singleton instance;private static readonly object lockObject new object();private Singleton(){// 私有构…...

万字长文详解Java线程池面试题
王有志,一个分享硬核 Java 技术的互金摸鱼侠 加入 Java 人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第 6 篇文章,我们一起来看看面试中会问到哪些关于线程池的问题吧。数据来源: 大部分来自于各机构(J…...

【jQuery入门】链式编程、修改css、类操作和className的区别
文章目录 前言一、链式编程二、修改css2.1 获取css的值2.2 设置单个css属性2.3 设置类样式添加类移除类切换类 三、类操作与className的区别总结 前言 jQuery是一个流行的JavaScript库,广泛用于简化DOM操作和处理事件。在jQuery中,链式编程是一种强大的…...

使用的uview 微信高版本 头像昵称填写能力
<template><view><button class"cu-btn block bg-blue margin-tb-sm lg" tap"wxGetUserInfo">一键登录</button><view><!-- 提示窗示例 --><u-popup :show"show" background-color"#fff">&…...

Hadoop3完全分布式搭建
一、第一台的操作搭建 修改主机名 使用hostnamectl set-hostname 修改当前主机名 关闭防火墙和SELlinux 1,使用 systemctl stop firewalld systemctl disable firewalld 关闭防火墙 2,使用 vim /etc/selinux/config 修改为 SELINUXdisabled 使用N…...

中断——外部中断EXIT
前期疑问:中断可以分成外部中断和内部中断吗 文章目录 前言一、中断知识二、中断编程三、EXIT外部中断/事件控制器 3.1 中断事件线3.2 EXTI初始化结构体详解 四、软件设计 4.1 编程要点 五、代码回顾实现六、补充中断知识总结 前言 野火中断章节有这样一句话 【F…...

Kafka-服务端-副本机制
Kafka从0.8版本开始引入副本(Replica)的机制,其目的是为了增加Kafka集群的高可用性。 Kafka实现副本机制之后,每个分区可以有多个副本,并且会从其副本集合(Assigned Replica,AR)中选出一个副本作为Leader副本,所有的读写请求都由…...

银行数据仓库体系实践(4)--数据抽取和加载
1、ETL和ELT ETL是Extract、Transfrom、Load即抽取、转换、加载三个英文单词首字母的集合: E:抽取,从源系统(Souce)获取数据; T:转换,将源系统获取的数据进行处理加工,比如数据格式转化、数据精…...

云计算入门——Linux 命令行入门
云计算入门——Linux 命令行入门 前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 如今,我们许多人都熟悉计算机(台式机和笔记本电…...

自然语言处理(NLP)的发展
自然语言处理的发展 随着深度学习和大数据技术的进步,自然语言处理取得了显著的进步。人们正在研究如何使计算机更好地理解和生成人类语言,以及如何应用NLP技术改善搜索引擎、语音助手、机器翻译等领域。 方向一:技术进步 自然语言处理&…...

让uniapp小程序支持多色图标icon:iconfont-tools-cli
前景: uniapp开发小程序项目时,对于iconfont多色图标无法直接支持;若将多色icon下载引入项目则必须关注包体,若将图标放在oss或者哪里管理,加载又是一个问题,因此大多采用iconfont-tools工具,但…...

丹麦公司注册优势 丹麦公司注册条件 丹麦公司注册注意事项
丹麦公司注册优势 1、开-放的商业环境,拥有公平透明的商业法律和制度。 2、简化的注册流程,无需繁琐的审批程序和复杂的材料准备。 3、全球认可的声誉,有助于提升贵公司的国际形象。 4、该国的政-府在坚持适度紧缩的财政政策,…...

C++PythonC# 三语言OpenCV从零开发(4):视频流读取
文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料课件笔记) OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…...

vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭
vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮,取消按钮,及点击遮罩层关闭 实现效果: 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…...

Oracle 日常健康脚本
文章目录 摘要常用脚本 摘要 保持 Oracle 数据库的良好健康状况对于系统的可靠性和性能至关重要。本文将介绍一些常用的 Oracle 日常健康脚本,帮助您监控数据库并及时识别潜在的问题,以保证数据库的稳定运行。 常用脚本 1.查询数据库实例和实例级别的…...

leetcode670最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 108] int maximumSwap(int num) {…...

XML 注入漏洞原理以及修复方法
漏洞名称:XML注入 漏洞描述:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具 有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XM…...

x-cmd pkg | dasel - JSON、YAML、TOML、XML、CSV 数据的查询和修改工具
目录 简介首次用户快速实验指南基本功能性能特点竞品进一步探索 简介 dasel,是数据(data)和 选择器(selector)的简写,该工具使用选择器查询和修改数据结构。 支持 JSON,YAML,TOML&…...

Oracle 19c RAC集群管理 ---------关键参数以及常用命令
Oracle 19c RAC集群管理 ---------关键参数 Oracle 19C RAC 参数最佳实践 --开启强制归档 ALTER DATABASE FORCE LOGGING; --设置 30分钟 强制归档 ALTER SYSTEM SET ARCHIVE_LAG_TARGET1800 SCOPEBOTH SID*; --设置期望undo保持时间3h ALTER SYSTEM SET UNDO_RETENTION21600…...

时限挑战——深度解析Pytest插件 pytest-timeout
在软件开发中,测试用例的执行时间通常是一个关键考虑因素。Pytest插件 pytest-timeout 提供了一个强大的插件,允许你设置测试用例的超时时间。本文将深入介绍 pytest-timeout 插件的基本用法和实际案例,助你精确掌控测试用例的执行时限。 什么…...

Java入门篇:打造你的Java开发环境——从零开始配置IDEA与Eclipse
引言 “工欲善其事,必先利其器” 作为每一位Java初学者的必经之路,搭建合适的开发环境是至关重要的第一步。本篇将详细指导你如何安装并配置两大主流Java开发工具——IntelliJ IDEA和Eclipse,助你在编程之旅上迈出坚实的第一步。 一、Java开发环境准备 1. 下载并安装Java D…...

文本批量处理大师:简化文本处理,释放无限生产力!
在数字化时代,我们每天都要处理大量的文本数据,无论是办公文档、网页内容还是社交媒体帖子。然而,面对海量的信息,传统的一键式操作已经无法满足我们的需求。我们需要一个更高效、更智能的工具来提升我们的工作效率。今天…...

Go 方法
第 1 章 方法 Go 语言也支持面向对象的思想;所谓面向对象编程:1对象就是简单的一个值或者变量,并且拥有其方法2方法是某种特定类型的函数3 面向对象编程就是使用方法来描述每个数据结构的属性和操作; 使用者不需要了解对象本身的…...

深度学习与大数据在自然语言处理中的应用与进展
引言 在当今社会,深度学习和大数据技术的快速发展为自然语言处理(NLP)领域带来了显著的进步。这种技术能够使计算机更好地理解和生成人类语言,从而推动了搜索引擎、语音助手、机器翻译等领域的创新和改进。 NLP的发展与技术进步…...

GPT4+Python近红外光谱数据分析及机器学习与深度学习建模
详情点击链接:GPT4Python近红外光谱数据分析及机器学习与深度学习建模 第一:GPT4 1、ChatGPT(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验 3、GPT-4与GPT-3.5的区别,以及与国内大语言模…...

Java项目:12 Springboot的垃圾回收管理系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类…...

HarmonyOS自定义弹出对话框CustomDialog并传递变量
HarmonyOS定义了一系列弹窗反馈类的组件 和前端开发框架VUE3配套生态库element plus中的提供各种组件相比,还是要少一些。可能是手机端操作和PC端操作的差异导致的 如果内置的弹窗不满足要求,可以基于CustomDialog自定义出各种个性化的反馈组件。 首先新建一个ets文件,…...

React16源码: React中的renderRoot的错误处理的源码实现
renderRoot的错误处理 1 )概述 在 completeWork这个方法之后, 再次回到 renderRoot 里面在 renderRoot 里面执行了 workLoop, 之后,对 workLoop 使用了try catch如果在里面有任何一个节点在更新的过程当中 throw Error 都会被catch到catch到之后就是错误…...

强化学习:MuJoCo机器人强化学习仿真入门(1)
声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…...