f0, voiced_flag, voiced_probs = librosa.pyin(y, fmin=librosa.note_to_hz('C2'), fmax=librosa.note_to_hz('C7'))计算原理
时间: 2024-03-11 15:44:21 浏览: 35
librosa.pyin函数是基于基音自适应算法(Pitch-adaptive Fourier decomposition,PAFD)的基音音高估计方法之一。它使用自相关函数(ACF)和差分函数(DF)来识别基音周期,并利用基音周期来计算基音频率。
函数参数中的y是一个长度为N的音频信号,fmin和fmax是基音频率的最小和最大值。函数返回值f0是一个长度为N的一维数组,包含信号中每个时间点的基音频率。voiced_flag是一个布尔类型的一维数组,它指示每个时间点声音是否有基音,其中True表示存在基音,False表示不存在基音。voiced_probs是一个长度为N的一维数组,它指示每个时间点是否存在基音的概率。
该函数的计算过程如下:
1. 对音频信号进行预处理,包括帧化、加窗和差分滤波。
2. 计算每个帧的自相关函数(ACF)和差分函数(DF)。
3. 根据ACF和DF计算每个帧中可能的周期,其中周期的范围由fmin和fmax定义。
4. 使用一个置信度函数来估计每个周期的置信度,以确定每个帧的基音周期。
5. 根据基音周期计算每个帧的基音频率。
6. 根据基音频率和置信度函数,估计每个帧是否有基音以及存在基音的概率。
需要注意的是,该函数的计算结果受到信号质量、信噪比、基音频率范围等因素的影响,因此结果可能存在一定的误差。
相关问题
python 声音基频f0_如何得到一个曲子的基频?
要得到一个曲子的基频,需要进行音频信号处理和分析。在Python中,可以使用一些音频处理库和算法来计算基频。以下是一个基本的流程:
1. 读取音频文件并将其转换为数字信号。
2. 使用数字信号处理技术,如快速傅里叶变换(FFT),将信号转换为频域。
3. 通过自相关函数或YIN算法等技术计算基频。其中自相关函数法是一种常用的方法,它通过计算信号与其自身的延迟版本之间的相关性来确定基频。
4. 可以使用Python中的音频可视化库,如matplotlib,将基频可视化。
以下是使用Python中的librosa库来计算基频的示例代码:
```python
import librosa
# 读取音频文件
y, sr = librosa.load('audiofile.wav')
# 计算基频
f0, voiced_flag, voiced_probs = librosa.pyin(y, fmin=librosa.note_to_hz('C2'), fmax=librosa.note_to_hz('C7'))
# 可视化基频
import matplotlib.pyplot as plt
plt.plot(f0)
plt.show()
```
这里使用的是librosa库中的pyin函数,它是一种基于YIN算法的基频估计方法。
python怎么用librosa给音频做音调分析
要使用Librosa进行音频音调分析,您可以按照以下步骤进行:
1. 安装Librosa库
```python
pip install librosa
```
2. 导入Librosa库
```python
import librosa
```
3. 加载音频文件
```python
audio_file = 'path/to/audio/file.wav'
y, sr = librosa.load(audio_file, sr=None)
```
其中,`y` 是音频数据,`sr` 是采样率。
4. 计算基频
```python
f0, voiced_flag, voiced_probs = librosa.pyin(y, sr=sr, fmin=librosa.note_to_hz('C2'), fmax=librosa.note_to_hz('C7'))
```
其中,`f0` 是基频序列,`voiced_flag` 是布尔值序列,表示是否有声音,`voiced_probs` 是置信度。
5. 将基频转换成音调
```python
chroma = librosa.hz_to_midi(librosa.tone(2 * f0)[0])
```
其中,`chroma` 是音调序列。
6. 可视化音调
```python
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 4))
plt.plot(chroma)
plt.xlabel('Time')
plt.ylabel('Pitch class')
plt.show()
```
这样,您就可以使用Librosa进行音频音调分析了。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)