应用小波变换提取语音基音频率 matlab
时间: 2023-10-19 13:06:25 浏览: 84
可以使用matlab中的wavread函数读取语音信号,然后使用小波变换进行基音频率提取。
具体步骤如下:
1. 读取语音信号
```matlab
[x, fs] = wavread('filename.wav');
```
其中,x为语音信号,fs为采样率。
2. 对语音信号进行小波分解
```matlab
[c, l] = wavedec(x, n, 'db4');
```
其中,n为小波分解的阶数,'db4'为小波基。
3. 对小波系数进行阈值处理
```matlab
thr = wthrmngr('dw1ddenoLvl', c, 'heursure');
s = wthresh(c, 'h', thr);
```
其中,'heursure'为阈值选择方法,可以根据实际情况选择。
4. 对处理后的小波系数进行重构
```matlab
y = waverec(s, l, 'db4');
```
5. 提取基音频率
基音频率是指声音中最低的频率,通常对应人的声音中的音调或音高。可以使用自相关函数来提取基音频率。
```matlab
R = xcorr(y);
[pks, locs] = findpeaks(R);
[~, idx] = sort(pks, 'descend');
f0 = fs / (locs(idx(1)) - 1);
```
其中,findpeaks函数用于查找自相关函数R的峰值,sort函数用于将峰值按降序排列,idx(1)即为最大峰值对应的位置,fs为采样率。
以上就是利用小波变换提取语音基音频率的基本步骤,需要注意的是,由于语音信号通常存在噪声等干扰,因此在实际应用中还需要进行一些处理,例如去除噪声、分段处理等。
阅读全文