音乐基础、音频合成、特征提取工具liborsa

2020-05-30  本文已影响0人  缠禅可禅

[TOC]

工具

Kaldi,虽然非常高效,表现也好,但是忒难用,不灵活,总得改C++代码;
PyKaldi,虽然用上了机器学习界宠儿Python,但本质上跟Kaldi还是一回事嘛;
PyTorch-Kaldi,虽然灵活了一些,声学模型也易于修改,但是,跟前面一样,它也还是Kaldi呀;
ESPNET,虽然是基于Python和PyTorch的,但是只支持端到端语音识别,太不全面了;

音高

基频(基音,fundamental tone)

泛音(overtones) == 谐波 (Harmonics)

分音 Partials

如何看音准?

清音和浊音

音频合成

  1. 什么是midi格式?
  2. 音乐数字接口(Music Instrument Digital Interface,简称MIDI)是一个工业标准的电子通信协议,为电子乐器等演奏设备(如合成器)定义各种音符或弹奏码,容许电子乐器、电脑、手机或其它的舞台演出配备彼此连接,调整和同步,得以即时交换演奏数据。
  1. A Generative Model for Raw Audio
  2. speech synthesis and text to speech
  3. based model :concatenative TTS and newly :parametric TTS
  4. wavenet 模仿原始的波形因此可以可以很好的模拟任何音乐。
  5. 音频处理和基础就是运用RNN和CNN来处理。
  6. wavenet is just CNN.
  7. WaveNet是一个端到端的TTS模型,
  1. WAV:Waveform Audio File Format(WAVE,又或者是因为扩展名而被大众所知的WAV),是微软与IBM公司所开发在个人电脑存储音频流的编码格式,在Windows平台的应用软件受到广泛的支持,地位上类似于麦金塔电脑里的AIFF。
  1. 多音色训练Wavenet比单音色效果好的多,Wavenet可以同时记住多个人的音色。
  2. text to speech: wavenet is the best.
  3. TTS:是一个一个序列到另外一个序列的

音频基础

节拍跟踪

Madmom

pyAudioAnalysis

audioAnalysis.py: 主要实现了对命令行语句的执行
audioFeatureExtraction.py: 实现了音频特征抽取的全部功能。包括:一共21个短期时长的特征及计算。此外,为了抽取音频特征的统计特性,也实现了一个中期时长窗口的特征计算。
audioTrainTest.py: 实现了音频分类的过程。可以使用SVM和KNN分类器进行模型训练。此外还提供了方法的封装和常用的训练、评估、特征标准化等工具
audioSegmentation.py: 实现了音频切割的功能,比如固定大小的分割、演讲者数字化等
audioBasicIO.py: 主要提供了一些对音频文件的基础IO操作,如文件读取、格式转换
audioVisualization.py: 提供了一系列功能,来把结果生成友好的和有代表性的图表

$ pip install pyAudioAnalysis

音频特征提取工具liborsa

pip install librosa
ffmpeg is very stronger.

librosa.beat:用于检测速度和节拍
librosa.core:用于从磁盘加载音频和计算各种频谱图
librosa.decompose:实现矩阵分解进行谐波和冲击源分离通用频谱图分解
librosa.display:音频特征的显示
librosa.effects:时域音频处理,音高变换和时间拉伸,时域包装器。
librosa.feature:特征提取和操作:色度图,伪常数Q(对数频率)变换,Mel频谱图,MFCC和调谐估计
librosa.filters:滤波器生成色度。伪CQT、CQT等
librosa.onset:其实检测和起始强度计算。
librosa.segment:用于结构分段的函数
librosa.swquence:顺序建模功能
librosa.util:辅助工具(规范化。填充、居中)

音频特征提取工具包librosa

  1. 音乐信息检索(Music information retrieval,MIR)
  2. 应用方向
目前MIR的商业应用主要包括:

1. 推荐系统
目前音乐推荐的应用很多,但很少是基于MIR技术实现的,现在主流技术是通过人工标记或者用户的评论以及收听历史等简介数据进行分类判断,进而实现推荐,但事实上不同音乐本身的相似性是很多的
2. 轨道分离及乐器识别
实现音乐的轨道分离,以及从音乐中识别出是何种乐器在演奏
3. 自动录音
根据音乐自动转换成MIDI文件或者乐谱
4. 音乐分类
根据音乐的产地、艺术家身份、音乐节奏等特征,借助机器学习方法进行5. 音乐分类
6. 自动生成音乐
利用数据库训练模式,让机器自主创造音乐
* [参考维基百科]
  1. librosa 核心代码【* 参考librosa官方文档*]
    3.1 音频信号提取

3.4 时间和频率转化

3.5 音高和曲调

3.9 节奏特征

source code

# -*- coding:utf-8 -*-
# /usr/bin/python
'''
@Author  :  Yan Errol 
@Describe:  音频处理
@Evn     :  pip install librosa
@Date    :  2019-08-04  15:23
'''

# Beat tracking example
#from __future__ import print_function
import librosa

# 1. Get the file path to the included audio example
filename = librosa.util.example_audio_file()

# 2. Load the audio as a waveform `y`
#    Store the sampling rate as `sr`
filename = "../datasets/test.wav"
y, sr = librosa.load(filename)
print("y",y,"\nsr",sr)

# 3. Run the default beat tracker
tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
print("tempo",tempo, "\nbeat_frames",beat_frames)

print('Estimated tempo: {:.2f} beats per minute'.format(tempo))

# 4. Convert the frame indices of beat events into timestamps
beat_times = librosa.frames_to_time(beat_frames, sr=sr)

show result

ap
f0
sp waveform
上一篇 下一篇

猜你喜欢

热点阅读