项目四:语音信号时域分析
1. 实验任务
完成自定义语音类,实现读取语音信号并做简单时域分析,初步掌握语音信
号处理前端的基本流程。
(1)给定 WAVE 格式音频数据文件(以采样频率 8000Hz,采样精度 16 bits
为例),读取数据。实现 Matlab 函数 wavread 载入数字化音频信号的功能。
(2)获得指定的窗函数。
(3)对原始采样数据分帧、加窗得到短时语音帧。
(4)计算短时语音帧时域参数。
(5)编程实现输出(以 2 s 为例)语音波形、短时能量、短时平均幅度、
短时过零率结果图。
完成情况:对查找得到的代码进行研读理解并小幅度修改。
2. 基本思路
(1)读入音频文件
(2)计算短时语音帧
(3)获取窗函数并进行抽样
(4)进行简单时域分析
3. 方案设计(程序框架设计)
4. 程序源代码
音频信息读取 WAV 类:
class WAV
{
public:
WAV(const char* file){
ifstream f;
f.open(file,ios::binary);
f.seekg(0x04);
f.read((char*)&size, 4);
f.read(fmt, 4);
f.read(fmt, 4);
f.read((char*)&fmtsize, 4); //数据子块距此长度
f.seekg(0x16);
f.read((char*)&channels, 2);
f.read((char*)&sampleRate, 4);
f.read((char*)&ByteRate, 4); //为采样率两倍 16 位精度
f.seekg(0x22);
f.read((char*)&BitsPerSample,2);