基于瞬时频率的语言信号清/浊音判决和高音检测(MATLAB R2021)

语音是由气流激励声道从嘴唇或鼻孔辐射出来而产生的。根据声带是否振动,发音可分为浊音和清音。浊音和清音有明显的区别,浊音具有周期信号的特征,而清音则具有随机噪声的特征;浊音在频域上具有共振峰结构,其能量主要集中在低频带,清音的振幅值相对较小,在时域和频域没有明显的规律性。清音和浊音的正确判断在语音识别、语音合成、语音编码中具有重要作用。传统的清浊音区分方法有:短时能量法、短时自相关函数法和过零点法等。由于实际语音常有连读以及单音素发音过短的情况,现有的清浊音判断方法也会出现判断不准确的情况。

程序运行环境为MATLAB R2021B,为基于瞬时频率的语言信号清/浊音判决和高音检测,部分代码如下:

Matlab 复制代码
%% Comparison with Matlab'2020 built-infunction (pitch) (Method: SRH (Drugman 2011)%%%%
[f0_matlab_value,idx] = pitch(s,fs, ...
            'Method','SRH', ...
            'WindowLength',framedur*fs/1000, ...
            'OverlapLength',timestep*fs/1000, ...
            'Range',[f0min,f0max], ...
            'MedianFilterLength',smoothing_dur*fs/1000);
hr = harmonicRatio(s,fs,"Window",hamming(framedur*fs/1000,'periodic'),...
    "OverlapLength",timestep*fs/1000);
hr_threshold=0.4;
f0_matlab_value(hr<hr_threshold)=0;
%完整代码:mbd.pub/o/bread/mbd-ZZ6blJtu

%%%%%%%% Draw extracted f0 %%%%%%%%%%%%%%%%%%
subplot(3,1,3)
f0_matlab_time = 1000*(idx - 1)/fs;
vuv_matlab=(hr<hr_threshold);
plot(f0_matlab_time,f0_matlab_value)
hold on
plot(f0_ref_time,f0_ref_value)
xlabel('Time (s)')
ylabel('Pitch (Hz)')
legend('F0 est by Matlab','Gnd truth f0')
title('F0 contour extracted from Matlab built-in function (pitch)')
相关推荐
记忆偶然2 小时前
语音转文本技术实践:主流工具特性解析与应用场景探讨
人工智能·学习·语音识别
我很哇塞耶2 小时前
AAAI 2026 | 跨视频推理基准 CrossVid:给多模态大模型出一道“综合题”
人工智能·ai·大模型·多模态大模型
闽农2 小时前
Trae、Cursor生成式AI,Builder智能体体验报告
人工智能·生成式ai·builder智能体
是宇写的啊2 小时前
算法-前缀和
算法
leafff1232 小时前
智能体架构深度解析::一文了解LangChain、LangGraph与MCP框架集成原理分析
数据库·人工智能
CClaris2 小时前
PyTorch 损失函数与激活函数的正确组合
人工智能·pytorch·python·深度学习·机器学习
Mrliu__3 小时前
Opencv(十八) : 图像凸包检测
人工智能·opencv·计算机视觉
Brduino脑机接口技术答疑3 小时前
脑机接口数据处理连载(六) 脑机接口频域特征提取实战:傅里叶变换与功率谱分析
人工智能·python·算法·机器学习·数据分析·脑机接口
卿雪3 小时前
认识Redis:Redis 是什么?好处?业务场景?和MySQL的区别?
服务器·开发语言·数据库·redis·mysql·缓存·golang
计算所陈老师3 小时前
Palantir的核心是Ontology
大数据·人工智能·知识图谱