如何用python和essentia提取一段音符的音高并输出
时间: 2023-05-19 15:06:45 浏览: 146
您可以使用以下代码来提取一段音符的音高并输出:
```python
import essentia.standard as es
# Load audio file
audio = es.MonoLoader(filename='audio_file.wav')()
# Define parameters for pitch detection
pitch_extractor = es.PitchYinFFT()
pitch_range = es.PitchMelodia()
# Extract pitch
pitch_yin = pitch_extractor(audio)
pitch_melodia, pitch_melodia_confidence = pitch_range(audio)
# Print pitch values
print("Pitch (Yin):", pitch_yin)
print("Pitch (Melodia):", pitch_melodia)
```
这段代码使用了 Essentia 库中的 PitchYinFFT 和 PitchMelodia 提取器来获取音高。PitchYinFFT 提取器使用了 YinFFT 算法来获取音高,而 PitchMelodia 提取器使用了 Melodia 算法来获取音高。这两种算法都是常用的音高提取算法。
注意:在运行代码之前,您需要先安装 Essentia 库。您可以使用以下命令来安装 Essentia:
```bash
pip install essentia
```
相关问题
如何用python在提取音高的基础上利用Essentia合并音符
您可以使用Essentia库中的PitchMelodia算法来提取音高,并使用Essentia中的音符合并算法来合并音符。以下是一个示例代码片段:
```python
import essentia.standard as es
# Load audio file
audio = es.MonoLoader(filename='audio.wav')()
# Extract pitch using PitchMelodia algorithm
pitch_extractor = es.PitchMelodia()
pitch, confidence = pitch_extractor(audio)
# Merge notes using NoteMergin algorithm
note_merger = es.NoteMerging()
notes = note_merger(pitch, confidence)
# Print the resulting notes
print(notes)
```
请注意,您需要安装Essentia库才能运行此代码。您可以使用以下命令在Python中安装Essentia:
```
pip install essentia
```
python音乐可视化效果_python 处理音频并提取特征可视化
Python可以使用一些库来处理音频并提取特征,例如Librosa和Essentia。在处理完音频并提取特征后,可以使用Matplotlib或Seaborn等可视化工具来可视化这些特征。
下面是一个简单的示例代码,它使用Librosa库来加载音频文件、提取特征,并使用Matplotlib库来可视化这些特征:
```python
import librosa
import librosa.display
import matplotlib.pyplot as plt
# 加载音频文件
audio_file = 'audio.wav'
y, sr = librosa.load(audio_file)
# 提取特征
chroma_stft = librosa.feature.chroma_stft(y=y, sr=sr)
mfcc = librosa.feature.mfcc(y=y, sr=sr)
spectral_contrast = librosa.feature.spectral_contrast(y=y, sr=sr)
# 可视化特征
plt.figure(figsize=(10, 6))
plt.subplot(3, 1, 1)
librosa.display.specshow(chroma_stft, y_axis='chroma')
plt.colorbar()
plt.title('Chromagram')
plt.subplot(3, 1, 2)
librosa.display.specshow(mfcc, x_axis='time')
plt.colorbar()
plt.title('MFCC')
plt.subplot(3, 1, 3)
librosa.display.specshow(spectral_contrast, x_axis='time')
plt.colorbar()
plt.title('Spectral Contrast')
plt.tight_layout()
plt.show()
```
此代码将生成一个包含三个子图的图形,每个子图都显示一种特征。第一个子图显示音频的色谱图(chromagram),第二个子图显示音频的Mel频率倒谱系数(MFCC),第三个子图显示音频的谱对比度(spectral contrast)。
注意:在运行此代码之前,需要先安装Librosa和Matplotlib库。可以使用以下命令来安装这些库:
```
pip install librosa matplotlib
```
阅读全文