(1)利用 MATLAB或C语言,打开WAV文件,选取合适的窗口及窗口长度对语音信号进行分帧,判决每一帧的清浊音,并求出浊音的基音周期; (2)取p=10,求出数字滤波器的参数与增益G,保存形成LPC文件,比较与WAV文件的大小,求出压缩比; 打开LPC文件,恢复每帧语音信号,重新形成WAV文件,并进行播放,比较与原语音的差异。
时间: 2024-04-06 19:29:18 浏览: 103
frame_win.zip_信号分帧_短时Matlab_语音 分帧_语音信号分帧_语音分帧
这是一个比较复杂的语音信号处理任务,需要一定的编程和信号处理知识。以下是大致的实现思路:
1. 打开WAV文件,读取语音信号,并进行预处理,例如去除直流分量、归一化等。
2. 选取合适的窗口,例如汉明窗,对语音信号进行分帧。每帧的长度一般为20-30ms,帧与帧之间有一定的重叠,例如50%重叠。
3. 判决每一帧的清浊音,可以采用一些经典的方法,例如根据能量、过零率、短时自相关函数等特征进行判决。
4. 对于浊音帧,求出基音周期。可以采用自相关函数法、互相关函数法、平均律法等方法进行基音周期的估计。
5. 取p=10,使用lpc函数求出数字滤波器的参数与增益G。lpc函数可以直接对每帧语音信号进行LPC分析,得到LPC系数和增益。
6. 将LPC系数和增益写入LPC文件中,可以使用MATLAB的fwrite函数或C语言的fwrite函数进行写入操作。比较LPC文件与WAV文件的大小,计算压缩比。
7. 打开LPC文件,恢复每帧语音信号。可以采用逆滤波法、线性预测反滤波法等方法进行恢复。
8. 将每帧语音信号进行重叠相加,得到完整的语音信号。进行播放,并与原语音进行比较,计算误差。
以上是大致的实现思路,具体的实现过程比较繁琐,需要一定的编程和信号处理能力。在实现过程中,需要注意信号预处理、分帧方法、清浊音判决方法、基音周期估计方法、LPC分析方法、恢复方法等细节问题。
阅读全文