语音信号基本知识和处理

article/2025/10/22 0:34:18

语音信号(音频;声音)是模拟信号,现实生活中表现为连续的、平滑的波形,其横坐标为时间轴,纵坐标表示声音的强弱。

我们需要将其保存为数字信号再进行处理。

1. 声音三要素

1.1 音调

人耳对声音高低的感觉称为音调。音调主要与声波的频率有关。声波的频率高,则音调也高。

人耳听觉音频范围是20Hz-20000Hz

1.2 音量

人耳对声音强弱的主观感觉称为响度。响度和声波的振幅有关。一般说来,声波振动幅度越大则响度也越大。

1.3 音色

音色是人们区别具有同样响度、同样音调的两个声音之所以不同的特性,或者说是人耳对各种频率、各种强度的声波的综合反应。

音色与声波的振动波形有关,或者说与声音的频谱结构有关。

 

2.语音信号四个重要参数

2.1 声道数

为了播放声音时能够还原真实的声场,在录制声音时在前后左右几个不同的方位同时获取声音,每个方位的声音就是一个声道。

主要分为单声道、双声道

2.2 采样率(Sample rate)

每秒内对声音信号采样样本的总数目,一般采样率有8kHz、16kHz、32kHz、44.1kHz、48kHz等。 (8kHz=8k/s, 每秒采样8k个点)

采样频率越高,声音的还原就越真实越自然,当然数据量就越大。

2.3 量化位数(Bit depth)

也称为“位深”,每个采样点中信息的比特(bit)数。

2.4 码率

也叫比特率,是指每秒传送的bit数。单位为 bps(Bit Per Second),比特率越高,每秒传送数据就越多,音质就越好。

码率计算公式: 码率 = 采样率 * 采样大小 * 声道数

在对音频进行压缩时,比特率就成为了我们的一个要选的选项了,越高的比特率,其音质也就越好

 

3. 冗余信息

冗余信息包括人类听觉范围之外的音频信号和被掩蔽掉的音频信号。

什么是被掩蔽的信号呢?信号的掩蔽分为频域掩蔽和时域掩蔽。

3.1 时域掩蔽效应

在时间上相邻的声音之间有掩蔽现象,称为时域掩蔽。

时域掩蔽又分为超前掩蔽和滞后掩蔽,如下图所示。产生时域掩蔽的主要原因是人的大脑处理信息需要花费一定的时间。

一般来说,超前掩蔽很短,只有大约5~20ms,而滞后掩蔽可以持续50~200ms。

3.2 频域掩蔽效应

人类听觉范围是20-20000Hz,但这并不意味着只要是这个频率范围内的声音都可以听到,能否听到还与声音的分贝大小有关。

1)有个分贝临界值,高于临界值的声音才能听到,低于临界值的声音就听不到,在不同的频率下这个临界值是不一样的。

如下图所示,横坐标为频率,纵坐标为分贝值,图中的黑色曲线就是这个临界值曲线,所以位于曲线下方的声音是听不到的。

2)还有一种情况,比如2个音调(频率)差不多的人同时说话,一个声音很大,一个声音很小,声音小的会受到声音大的影响,导致声音小的无法被听到。

如下图所示,红色柱子是一个很大分贝的声音,它会产生掩蔽效应将与它频率相近的小分贝的声音掩蔽掉,红柱子两边的蓝色曲线就是它的掩蔽范围曲线,紫色柱子在它的掩蔽范围内,所以听不到的;而绿色柱子不在,所以可听到。

4. python读取音频文件的库

4.1 wave

import wave
import matplotlib.pyplot as plt
import numpy as npplt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示符号file='E:/MEAD/database/MEAD-W017/audio/angry/0.wav'# 文件读取
wave_read = wave.open(file,mode="rb")# 返回声音信号的参数(声道数、量化位数、采样频率、采样点数、压缩类型、压缩类型的描述)
params = wave_read.getparams()
nchannels, sampwidth, framerate, nframes = params[:4]# 读取N个音频数据(以取样点为单位),返回字符串格式
str_data = wave_read.readframes(nframes)  #  ‘\x00\x00....’# 关闭文件
wave_read.close()# 将字符串转换为数组,得到一维的short类型的数组
# 如果声音文件是双声道的,则它由左右两个声道的取样交替构成:LR
wave_data = np.fromstring(str_data, dtype=np.short)  # len: 采样点数*2# 赋值的归一化
wave_data = wave_data * 1.0 / (max(abs(wave_data)))# 整合左声道和右声道的数据
wave_data = np.reshape(wave_data, [nframes, nchannels])# 最后通过采样点数和取样频率计算出每个取样的时间
time = np.arange(0, nframes) * (1.0 / framerate)plt.figure()
# 左声道波形
plt.subplot(2, 1, 1)
plt.plot(time, wave_data[:, 0])
plt.xlabel("时间/s",fontsize=14)
plt.ylabel("幅度",fontsize=14)
plt.title("左声道",fontsize=14)
plt.grid()  # 标尺plt.subplot(2, 1, 2)
# 右声道波形
plt.plot(time, wave_data[:, 1], c="g")
plt.xlabel("时间/s",fontsize=14)
plt.ylabel("幅度",fontsize=14)
plt.title("右声道",fontsize=14)plt.tight_layout()  # 紧密布局
plt.show()

4.2 scipy.io.wavfile

import numpy as np
import scipy.io.wavfile
from matplotlib import pyplot as plt# 读取数据,返回采样率和audio数据,如果是多通道signal为多维向量
file='E:/MEAD/database/MEAD-W017/audio/angry/0.wav'
sample_rate, signal = scipy.io.wavfile.read(file) # len: 采样数signal=signal[:,0]
original_signal = signal[0:int(1*sample_rate)]
sample_num = np.arange(len(original_signal))# 绘图
plt.figure(figsize=(11,7), dpi=500)
plt.subplot(212)
plt.plot(sample_num/sample_rate, original_signal, color='blue')
plt.xlabel("Time (sec)")
plt.ylabel("Amplitude")
plt.title("1s signal of Voice ")
plt.savefig('audio.png')

4.3 librosa

import librosa#返回audio data 和采样率; 返回结果是经过归一化处理的 
#如果sr 缺省,会默认以22050的采样率读取音频
y, sr = librosa.load(file, sr=None)  # len: 采样数 # 可以读取双通道数据
# mono:该值为true时候是单通道、否则为双通道
y, sr = librosa.core.load(file, sr=None,mono=False) # y:[2,采样数]

 

 


http://chatgpt.dhexx.cn/article/3NYUOMyb.shtml

相关文章

语音信号处理

文章目录 语音信号处理第一章 绪论第二章 语音信号处理基础知识语音和语言 **浊音的声带振动基本频率(fundamental frequency)称为基音频率。浊音的基音频率(pitch):**???&#xff1…

语音信号处理概述及流程

一、语音信号处理的三个主要方向。 1,语音合成。 语音合成的是为了让计算机产生高质量的、高自然度的连续语音。计算机语音合成系统又称文语转换系统(TTS),主要是将文本输出语音。 发展过程:共振峰合成、LPC合成、PSOL…

基于matlab的语音信号处理

摘要 利用所学习的数字信号处理知识,设计了一个有趣的音效处理系统,首先设计了几种不同的滤波器对声音进行滤波处理,分析了时域和频域的变化,比较了经过滤波处理后的声音与原来的声音有何变化。同时设计实现了语音的倒放&#xff…

【无线通信篇 | Zstack协议栈】CC2530 Zigbee Zstack协议栈组网项目及详细讲解篇

演示视频:https://www.bilibili.com/video/BV1Ew411o7Fp 物联网无线通信技术,ZigBee无线传感网络 CC2530最大的特点就是一个拥有无线收发器(RF)的单片机,既能实现单片机功能,也能实现无线传输 Zstack协议…

【Zigbee】进阶篇(1) Zigbee协议栈创建简单项目,协议栈、事件、消息学习

大家好,我是皮皮猫吖! 每文一言:梦想不会逃跑,会逃跑的永远都是自己! 本篇文章: 主要是协议栈的介绍,使用协议栈完成一个简单例子,协调器创建网络的相关问题,学会在协议…

ZigBee协议栈TI Z-Stack分析

ZigBee协议栈TI Z-Stack分析 2010-11-05 11:26 转载自 slcfhr 最终编辑 slcfhr 标签(TAG): ZigBee 协议栈 Z-Stack 2007年4月,德州仪器推出业界领先的ZigBee协议栈(Z-Stack)。Z-Stack符合ZigBee 2006规范,支持…

lesson7-1 Zigbee协议栈的使用

目录 协议栈的使用 协议栈的安装和协议栈工程创建 协议栈工程配置 选项卡选择 用户代码编写注意 信道选择及PANID分配 协议栈的使用 协议栈的安装和协议栈工程创建 首先进行协议栈的安装 如何创建自己的协议栈工程: (1)先把整个协议…

物联网--Zigbee协议(一):Zigbee初识

物联网--Zigbee协议 前言一、Zigbee初识什么是物联网?什么是Zigbee? 二、Zigbee协议的基础知识Zigbee三种设备类型Zigbee三种网络拓扑结构Zigbee工作频段 三、Zigbee协议架构总结 前言 最近在学习Zigbee的相关知识,发现网上、论坛找到的知识…

ZigBee 快速入门(协议栈,协调器,路由器,终端设备,加入网络,安全,路由功能,频段)

文章目录 1、ZigBee 是什么2、ZigBee 目标3、ZigBee 协议栈4、设备类型5、Mesh网络 拓扑结构6、加入一个 ZigBee 网络7、ZigBee 安全8、频段和速率9、ZigBee相关特性和名词9.1 CSMA/CD,CSMA/CA9.2 信道访问机制9.3 dB、dBm、dBi9.4 传播损耗9.5 RSSI、LQI9.6 接收灵…

ZigBee协议介绍

简介 ZigBee是一种无线通信标准,是由ZigBee Alliance于 2001 年基于IEEE802.15.4标准定制的,这一标准界定了低功耗、低传输速率、近距离无线通信技术所需的所有相关通信协议。基于ZigBee协议的无线通信网络的工作频段主要有2.4GHz、915MHz、868MHz三个频…

zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)

一.ZigBee 协议栈简介 有问题发送邮件至468078841qq.com 什么是ZigBee 协议栈呢?它和ZigBee 协议有什么关系呢?协议是一系列的通信标准,通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗点来理解就…

ZigBee协议

ZigBee协议 简介 这个zigbee教程描述了您想要了解的有关Zigbee协议栈的所有内容。现在,一天的zigbee在低数据速率无线应用中变得非常流行。 Zigbee设备用于智能能源,医疗和家庭自动化。在智能能源应用中,zigbee产品用于监控和控制能源和水…

物联网--Zigbee协议(二):Zigbee协议架构以及数据帧结构

上一篇整理了关于Zigbee协议的一些基础知识,接下来主要讨论Zigbee协议的架构,希望通过这篇文章能够帮助小伙伴们更好地理解Zigbee协议,废话不多说,进入正题吧。 文章目录 一、Zigbee协议架构二、Zigbee协议的数据帧结构总结 一、Z…

Zigbee协议栈中文说明

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的,定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层,以及ZigBee堆栈层:网络层(NWK)、应用层和…

Zigbee 协议栈

介绍完ZigBee的物理特性,现在该转入逻辑层面,分析下协议栈的软件部分了。先看个协议栈的架构图吧: ZigBee协议栈由一组子层构成,每层为其上层提供一组特定的服务:一个数据实体提供数据传输服务;一个管理实体…

ZigBee协议栈(一)--协议栈介绍

1、Zigbee协议栈简介 协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数…

zigbee之Zstack协议栈使用

zigbee之Zstack协议栈使用 前言基于zstack协议栈开发的步骤一、OSAL操作系统1、操作系统工作流程2、OSAL初始化函数3、系统启动函数(1)任务(2)事件 4.OSAL任务与事件的关系 二、组网通信1、初始化PANID和信道2、端点和簇3、无线数…

Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子

1、Zigbee协议栈简介 协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数…

学习记录 | ZigBee协议栈工作流程

第一次来CSDN记录一下学习过程,其实就是笔记啦 之前用Typora 的 但前几天电脑出问题重装系统后打开笔记文件发现照片都打不开了,索性想换一种记笔记方式 好啦 以下是正文!!! 对了 笔记来源是深圳安联德公司提供的学…

ZigBee协议栈Zstack介绍

文中所讲述的协议栈是基于ZigBee2006\Zstack-1.4.3-1.2.1 1.ZSTACK协议栈的架构 ZigBee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供一些API,工用户调用。协议栈体系分层结构与协议栈代码文件夹对应表如下&…