使用YIN算法提取音频的F0 Contours

使用YIN算法提取音频的F0 Contours的代码实现

简介

​ ​ F0 Contours, 全称为Fundamental Frequency Contours, 它与Pitch Contours所指相同。

​ ​ 基频提取(pitch estimation, pitch tracking)在声音处理中有广泛的应用。它最直接的应用,是用来识别音乐的旋律。它也可以用于语音处理,比如辅助带声调语言(如汉语)的语音识别,以及识别语音中的情感。

​ ​ YIN算法是基频提取的算法之一。其名称取自「阴阳」之「阴」,它表明算法的核心思想是在差函数上寻找「谷值」,而不是在自相关函数上寻找「峰值」。关于YIN算法的具体描述可见基频提取算法综述




代码实现

​ ​ 我们可以通过使用python中的librosa库的yin函数来进行YIN算法提取音频。关于yin函数详细信息可见:https://librosa.org/doc/latest/generated/librosa.yin.html?highlight=yin

​ ​ 下面给一个提取F0 Contours的代码示例:

import matplotlib.pyplot as plt
import librosa
import numpy as np

for i in range(1, 11):
    filename = "Flowtron_sigma1.0/times" + str(i) +  "_sid0_sigma1.0.wav"
    y, sr = librosa.load(filename, sr=None)
    f0 = librosa.yin(y, fmin=80, fmax=400)
    f0[np.isnan(f0)] = 0
    times = librosa.times_like(f0)
    plt.plot(times, f0, "_", linewidth=1)
    plt.xlabel("Time(s)")
    plt.ylabel("F0")

​ ​ 效果图:
在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值