思考与练习
练习2.1
- 语音信号在产生的过程中,以及被感知的过程中,分别要经过人体的哪些器官?
1.产生过程:
肺部空气
→
\rightarrow
→冲击声带
→
\rightarrow
→通过声道(可以调节)
→
\rightarrow
→发出不同声音
2.感知过程:
空气传播
→
\rightarrow
→进入人耳
→
\rightarrow
→鼓膜震动
→
\rightarrow
→听小骨
→
\rightarrow
→耳蜗
→
\rightarrow
→电信号
→
\rightarrow
→中枢听觉系统
练习2.2
- 汉语拼音的声调,对应的是语音信号的哪种特征?
1.基频:一段信号有10Hz和100Hz叠加而成,那么基频就是10Hz,如图1所示。
2.基音轨迹: 信号以横轴为时间,纵轴为基频得到的曲线。汉语拼音四声如图2所示 1 ^1 1。
练习2.3
- 人耳听觉的非线性是由哪些因素造成的?
人耳构造非线性:
1.外耳:耳翼、外耳道、鼓膜,外耳道看似一条管道,有许多共振频率,对某些频率的声音进行放大。
2.中耳:通过三块听小骨传到内耳,在一定声强范围内,传递是线性的,超出一定范围,这种传递变成非线性的(保护内耳)
3.内耳:耳蜗依靠毛细胞将机械振动(耳蜗中流体速度变化)转化电信号,耳蜗不同位置的毛细胞,对应不同频率声音,分布大致按频率对数分布。
非线性体现在两方面:对频率感知的非线性,对声强感知的非线性。
练习2.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∣)
练习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−α)−αcosN−12πn
练习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()
练习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教程
参考文献
- 宋刚, 姚艳红. 用于汉语拼音单音节声调识别的基频轨迹拟合方法[J]. 计算机工程与应用, 2008, 44(29):239-240.