【每日刷题——语音信号篇】

2023/11/30 10:20:39

思考与练习

练习2.1

  • 语音信号在产生的过程中,以及被感知的过程中,分别要经过人体的哪些器官?

1.产生过程
肺部空气 → \rightarrow 冲击声带 → \rightarrow 通过声道(可以调节) → \rightarrow 发出不同声音
2.感知过程
空气传播 → \rightarrow 进入人耳 → \rightarrow 鼓膜震动 → \rightarrow 听小骨 → \rightarrow 耳蜗 → \rightarrow 电信号 → \rightarrow 中枢听觉系统

练习2.2

  • 汉语拼音的声调,对应的是语音信号的哪种特征?
    1.基频:一段信号有10Hz和100Hz叠加而成,那么基频就是10Hz,如图1所示。
    图1
图1 基频为10Hz的正弦波

2.基音轨迹: 信号以横轴为时间,纵轴为基频得到的曲线。汉语拼音四声如图2所示 1 ^1 1

在这里插入图片描述

图2 普通话声调的基音轨迹

练习2.3

  • 人耳听觉的非线性是由哪些因素造成的?
    人耳构造非线性
    1.外耳:耳翼、外耳道、鼓膜,外耳道看似一条管道,有许多共振频率,对某些频率的声音进行放大。
    2.中耳:通过三块听小骨传到内耳,在一定声强范围内,传递是线性的,超出一定范围,这种传递变成非线性的(保护内耳)
    3.内耳:耳蜗依靠毛细胞将机械振动(耳蜗中流体速度变化)转化电信号,耳蜗不同位置的毛细胞,对应不同频率声音,分布大致按频率对数分布。
    非线性体现在两方面:对频率感知的非线性,对声强感知的非线性。

图3

图3 耳的构造

练习2.4

  • 动圈式麦克风的工作原理是什么?与电容式麦克风相比,动圈式麦克风有哪些优缺点?
    动圈式麦克风
图4 动圈式麦克风

1.工作原理:当声波使膜片振动时,连接在膜片上的线圈随着一起振动,产生感应电流(电信号),通过信号放大器,并从扬声器发出声音。
2.优缺点:优点有不需要直流工作电压,缺点包括灵敏度低。

练习2.5

  • 编写一段程序,利用μ-law 变换的公式,将16 位线性脉冲编码格式存储的音频转换为8 位非线性脉冲编码格式,并比较转换前后音频的声音质量及文件大小。
sox input.wav -e mu-law -b 8 output.wav
sox input.wav -e mu-law output1.wav

output.wav和output1.wav一样大小,均为input.wav一半。上面两行代码一直,表示 μ − law \mu-\text{law} μlaw默认为8位
μ − law \mu-\text{law} μlaw公式为:
f ( x ) = sgn ( x ) ln ( 1 + μ ∣ x ∣ ) ln ( 1 + μ ) f(x) =\text{sgn}(x)\frac{\text{ln}(1+\mu|x|)}{\text{ln}(1+\mu)} f(x)=sgn(x)ln(1+μ)ln(1+μx)
在这里插入图片描述

图5

练习2.6

  • 窗函数的作用是什么?有哪些常见的窗函数?
    作用
    1.吉布斯现象(Gibbs phenomenon):在不连续点出产生高频分量,导致傅里叶变换后的频谱出现局部峰值。
    2.频谱泄露:周期信号在分帧过程中被截断,导致频谱在整个频带内发生拖尾现象。
    常见的窗函数
    1.汉宁窗
    α = 0.5 \alpha=0.5 α=0.5
    2.汉明窗
    α = 0.46 \alpha=0.46 α=0.46
    ω [ n ] = ( 1 − α ) − α c o s 2 π n N − 1 \omega[n]=(1-\alpha)-\alpha cos\frac{2\pi n}{N-1} ω[n]=(1α)αcosN12πn
    在这里插入图片描述
图6 汉明窗和汉宁窗

练习2.7

  • 编写一段程序,用以计算一段有限离散信号的离散傅里叶变换。
import scipy
import matplotlib.pyplot as plt
import numpy as np

# 读取音频文件
rate, data = scipy.io.wavfile.read("resampled.wav")

# 计算 STFT
f, t, Z = scipy.signal.stft(
    data, fs=rate, window='hann', nperseg=400, noverlap=240,
    nfft=None, detrend=False, return_onesided=True,
    boundary='zeros', padded=True, axis=-1
)

# 绘制音频波形
plt.figure(figsize=(12, 6))
plt.subplot(2, 1, 1)
plt.plot(data)
plt.title('Audio Waveform')
plt.xlabel('Sample')
plt.ylabel('Amplitude')

# 绘制频谱
plt.subplot(2, 1, 2)
plt.pcolormesh(t, f, 10 * np.log10(np.abs(Z)), shading='auto')
plt.title('Spectrogram')
plt.xlabel('Time (s)')
plt.ylabel('Frequency (Hz)')
plt.colorbar()
plt.tight_layout()
plt.show()

在这里插入图片描述

图7 声波图及频谱图

练习2.8

  • 感知线性预测与梅尔倒谱系数在设计与实现上有哪些相同点与不同点?
    1.相同点:频域转换使用SIFT,最终系数都采用IDFT
    2.不同点
  • 1 ^{1} 1PLP通过对功率谱进行巴克刻度变换,再与临界频带滤波器组卷积,结果通过等响度曲线预加重,而MFCC在第一步先进行预加重。
  • 2 ^{2} 2频率校正:PLP系数通过巴克刻度、临界频带
  • 3 ^{3} 3声强校正:PLP采用 y = x 1 3 y=x^\frac{1}{3} y=x31,MFCC采用 y = log x y=\text{log}x y=logx

练习2.9

  • 除了LibROSA,还有一些基于Python 语言的音频特征提取工具库。下载并熟悉pyAudioAnalysis 与python_speech_features 工具库,利用其从音频中提取特征并进行可视化。
  • pyAudioAnalysis教程
  • python_speech_features教程

参考文献

  1. 宋刚, 姚艳红. 用于汉语拼音单音节声调识别的基频轨迹拟合方法[J]. 计算机工程与应用, 2008, 44(29):239-240.

http://www.jnnr.cn/a/1081975.html

相关文章

【洛谷 P3743】kotori的设备 题解(二分答案+循环)

kotori的设备 题目背景 kotori 有 n n n 个可同时使用的设备。 题目描述 第 i i i 个设备每秒消耗 a i a_i ai​ 个单位能量。能量的使用是连续的,也就是说能量不是某时刻突然消耗的,而是匀速消耗。也就是说,对于任意实数,…

ModernCSS.dev - 来自微软前端工程师的 CSS 高级教程,讲解如何用新的 CSS 语法来解决旧的问题

今天给大家安利一套现代 CSS 的教程,以前写网页的问题,现在都可以用新的写法来解决了。 ModernCSS.dev 是一个现代 CSS 语法的教程,讲解新的 CSS 语法如何解决一些传统问题,一共有30多课。 这套教程的作者是 Stephanie Eckles&am…

人工智能给我们的生活带来了巨大的影响?

1. 人工智能从哪些方面给我们带来了影响? 人工智能出现,极大地影响了人类的生活,下面是人工智能所影响的领域: 1. 日常生活 智能家居: AI驱动的设备,如智能扬声器、灯光、恒温器,正在改变我们与家居环境的…

基于AVR单片机的便携式心电监测设备设计与实现

基于AVR单片机的便携式心电监测设备是一种常用的医疗设备,用于随时监测和记录人体的心电信号。本文将介绍便携式心电监测设备的设计原理和实现步骤,并提供相应的代码示例。 1. 设计概述 便携式心电监测设备是一种小巧、方便携带的设备,能够…

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码

基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于水基湍流算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于水基湍流优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

Linux内核的安装

1.通过tftp 加载内核和根文件系统 即sd内存卡启动: SD卡的存储以扇区为单位,每个扇区的大小为512Byte, 其中零扇区存储分区表(即分区信息),后续的扇区可自行分区和格式化; 若选择SD卡启动,处理器上电后从第一个扇区开…

【C++上层应用】2. 预处理器

文章目录 【 1. #define 预处理 】【 2. #ifdef、#if 条件编译 】2.1 #ifdef2.2 #if2.3 实例 【 3. # 和 ## 预处理 】3.1 # 替换预处理3.2 ## 连接预处理 【 4. 预定义宏 】 预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是…

Node.js环境配置级安装vue-cli脚手架

一、下载安装Node.js (略) 二、验证node.js并配置 1、下载安装后,cmd面板输入node -v查询版本、npm -v ,查看npm是否安装成功(有版本号就行了) 2、选择npm镜像(npm config set registry https://registry.npm.taobao.org&…

AIGC ChatGPT4对Gbase数据库进行总结

ChatGPT4 用一个Prompt完成Gbase数据库的总结。 AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0 54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战, ETL Informatica 数据仓库案例实战 Excel 2021实操 …

【CHI】Ordering保序

本节介绍CHI协议所包含的支持系统保序需求的机制,包括: • Multi-copy atomicity • Completion response and ordering • Completion acknowledgment • Transaction ordering 一、 Multi-copy atomicity CHI协议中所使用的memory model要求为mu…

ClickHouse的 MaterializeMySQL引擎

1 概述 MySQL 的用户群体很大,为了能够增强数据的实时性,很多解决方案会利用 binlog 将数据写入到 ClickHouse。为了能够监听 binlog 事件,我们需要用到类似 canal 这样的第三方中间件,这无疑增加了系统的复杂度。 ClickHouse 20.…

11.16~11.19绘制图表,导入EXCEL中数据,进行拟合

这个错误通常是由于传递给curve_fit函数的数据类型不正确引起的。根据你提供的代码和错误信息,有几个可能的原因: 数据类型错误:请确保ce_data、lg_data和product_data是NumPy数组或类似的可迭代对象,且其元素的数据类型为浮点数。…

【grafana | clickhouse】实现展示多折线图

说明: 采用的是 Visualizations 的 Time series,使用的 clickhouse 数据源 在工作中遇到了一个需求,写好了代码,需要在grafana上展示在一个项目中所有人的,随时间的代码提交量变化图 目前遇到的问题:展示…

使用树莓派学习Linux系统编程的 --- 库编程(面试重点)

在之前的Linux系统编程中,学习了文件的打开;关闭;读写;进程;线程等概念.... 本节补充“Linux库概念 & 相关编程”,这是一个面试的重点! 分文件编程 在之前的学习中,面对较大的…

音视频同步笔记 - 以音频时间为基

音视频同步 - 以音频时间为基 上图介绍: 该图是以音频的时间为基,对视频播放时间的延迟控制方案,只调整视频的播放延时。delayTime是视频播放的延迟时间,初始值是1 / FPS * 1000 (ms),如果FPS为25帧率,初始…

Linux进程通信——IPC、管道、FIFO的引入

进程间的通信——IPC 进程间通信 (IPC,InterProcess Communication) 是指在不同进程之间传播或交换信息。 IPC的方式通常有管道 (包括无名管道和命名管道) 、消息队列、信号量、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。 …

原理Redis-ZipList

ZipList 1) ZipList的组成2) ZipList的连锁更新问题3) 总结 1) ZipList的组成 ZipList 是一种特殊的“双端链表” ,由一系列特殊编码的连续内存块组成。可以在任意一端进行压入/弹出操作, 并且该操作的时间复杂度为 O(1)。 ZipListEntry: ZipList 中的Entry并不像…

python -opencv 边缘检测

python -opencv 边缘检测 边缘检测步骤: 第一步:读取图像为灰度图 第二步:进行二值化处理 第三步:使用cv2.findContours对二值化图像提取轮廓 第三步:将轮廓绘制到图中 代码如下: from ctypes.wintypes import SIZ…

几个强力的nodejs库

几个强力的nodejs库 nodejs被视为许多Web开发人员的理想运行时环境。 nodejs的设计是为了在运行时中使用JavaScript编写的代码,它是世界上最流行的编程语言之一,并允许广泛的开发者社区构建服务器端应用程序。 nodejs提供了通过JavaScript库重用代码的…

C#开发的OpenRA游戏之属性QuantizeFacingsFromSequence(7)

C#开发的OpenRA游戏之属性QuantizeFacingsFromSequence(7) 前面分析了身体的方向,在这里继续QuantizeFacingsFromSequence属性,这个属性就是通过序列定义文件里获取身体的方向。 根据前面分析可知,同样有一个信息类QuantizeFacingsFromSequenceInfo: [Desc("Deriv…
最新文章