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


    思考与练习

    练习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
    
    • 1
    • 2

    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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    在这里插入图片描述

    图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.
  • 相关阅读:
    HTML 超链接 a 标签
    MySQL的查询计划(EXPLAIN)
    图神经网络(五):MuGNN
    6.jQuery中的Ajax上传文件
    ChatGPT WPS AI 一键制作各类汇报型PPT演示文档
    I2S总线介绍以及通信注意事项
    【附源码】计算机毕业设计SSM社区疫情防控监管系统
    数据库驱动和JDBC
    【Azure 应用服务】App Service频繁出现 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener 异常分析
    程序化交易(二)level2行情数据源接入
  • 原文地址:https://blog.csdn.net/weixin_46143783/article/details/134516212