基于瞬时频率的语言信号清/浊音判决和高音检测(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)')
相关推荐
j_xxx404_3 分钟前
C++ STL简介:从原理到入门使用指南
开发语言·c++
咕咚-萌西10 分钟前
MLLM-LLaVA-FL: Multimodal Large Language Model Assisted FederatedLearning
人工智能·语言模型·自然语言处理
人工智能研究所16 分钟前
视频与音频碰撞,谷歌 Veo 3.1,生成“有声电影”,人物对话超震撼
人工智能·文生图·谷歌·文生视频·veo3.1
DisonTangor23 分钟前
PaddleOCR-VL: 通过0.9B超紧凑视觉语言模型增强多语言文档解析
人工智能·计算机视觉·语言模型·自然语言处理·开源·aigc
skywalk816323 分钟前
在Ubuntu Linux安装brew 使用brew安装llama.cpp 运行文心Ernie大模型
人工智能·ubuntu·llama·ernie·brew·1024程序员节
golang学习记29 分钟前
Vibe Coding不香了,试试深信服的CoStrict 严肃编程模式
人工智能
蒙奇·D·路飞-33 分钟前
Grok、Claude、ChatGPT、Gemini模型适用场景比较
人工智能·chatgpt
腾视科技37 分钟前
安全驾驶 智在掌控|腾视科技ES06终端,为车辆运营赋能
大数据·人工智能·科技·安全·大模型
飞哥数智坊42 分钟前
Cursor + CloudBase,两周闲暇时间做出我的“AI 碎片助理”
人工智能·ai编程
懒惰蜗牛43 分钟前
Day44 | J.U.C中的LockSupport详解
java·开发语言·后端·java-ee