查看“音高追踪”的源代码
←
音高追踪
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{TOCright}} ==基本流程== ===Step 1 分帧=== 将整段音讯讯号切成音框(Frames),相邻音框之间可以重叠。 在切音框的过程中,我们允许左右音框的重叠,因此,我们定义「音框率」(Frame Rate)是每秒钟所出现的音框个数,如果取样频率是11025,音框长度是256 点,重叠点数是84,那么音框率就是11025/(256-84) = 64,换句话说,我们的电脑要能够每秒钟处理64个音框,才能达到实时处理的要求。我们让音框重叠的目的,只是希望相邻音框之间的变化不会太大,使输出的音高曲线更具有连续性。但是在实际应用时,音框的重叠也不能太大,否则会造成计算量的过大。 一般有以下考虑: · 音框长度至少必须包含2 个基本周期以上,才能显示语音的特性。已知人声的音高范围大约在50 Hz 至1000 Hz 之间,因此对于一个的取样频率,我们就可以计算出音框长度的最小值。例如,若取样频率fs = 8000 Hz,那么当音高f = 50 Hz(例如男低音的歌声)时,每个基本周期的点数是fs/f = 8000/50 = 160,因此音框必须至少是320 点;若音高是1000 Hz(例如女高音的歌声)时,每个基本周期的点数是8000/1000 = 8,因此音框必须至少是16 点。 · 音框长度也不能太大,太长的音框无法抓到音讯的特性随时间而变化的细微现象,同时计算量也会变大。 · 音框之间的重叠完全是看计算机的运算能力来决定,若重叠多,音框率就会变大,计算量就跟着变大。若重叠少(甚至可以不重叠或跳点),音框率就会变小,计算量也跟着变小。 ===Step 2 逐帧计算音高=== 算出每个音框所对应的音高。 由一个音框计算出音高的方法很多,可以分为时域和频域两大类: # 时域 (Time Domain) #* ACF (Autocorrelation function),自相关函数 #* AMDF (Average magnitude difference function),平均强度差分函数 #* SIFT (Simple inverse filter tracking) # 频域 (Frequency Domain) #* Harmonic product spectrum method #* Cepstrum method =====ACF音高追踪案例===== [[文件:ACFfunction.jpg]] ===Step 3 筛值=== 排除不稳定的音高值。(可由音量来筛选,或由音高值的范围来过滤。) ===Step 4 平滑=== 对整段音高进行平滑化,通常是使用「中位数滤波器」(Median Filters)。
该页面使用的模板:
模板:TOCright
(
查看源代码
)
返回至
音高追踪
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
网站首页
知识百科
编辑帮助
最近更改
工具
链入页面
相关更改
特殊页面
页面信息