Это 21-й день моего участия в августовском испытании обновлений.Подробности о событии:Испытание августовского обновления
Библиотека обработки звука с искусственным интеллектом - librosa (установка и использование)
Преамбула
Один, установка libsora
pypi
conda
source
2. Общие функции librosa
Основные функции обработки звука
обработка звука
Спектральное представление
Преобразование амплитуды
время-частотное преобразование
Извлечение признаков
Отображение чертежей
Три часто используемые реализации функционального кода
Чтение звука
Характеристики извлечения
Извлечение функций спектрограммы Log-Mel
Извлечение функций MFCC
Отображение чертежей
нарисовать форму звуковой волны
Постройте спектрограмму
Преамбула
Librosa — это набор инструментов Python для анализа и обработки аудио и музыки. Он имеет некоторые общие функции, такие как частотно-временная обработка, извлечение признаков и рисование звуковой графики. Он очень мощный. Эта статья в основном знакомит с установкой и использованием librosa.
Один, установка libsora
Официальный сайт Librosa предоставляет различные способы установки, подробности в следующем:
pypi
Проще всего сделать установку pip, которая может удовлетворить все зависимости, команда выглядит следующим образом:
pip install librosa
conda
Если Anaconda установлена, ее можно установить с помощью команды conda:
conda install -c conda-forge librosa
source
Для установки напрямую из исходников необходимо заранее скачать исходники (GitHub.com/lib Роза/Поклонение…
tar xzf librosa-VERSION.tar.gz
cd librosa-VERSION/
python setup.py install
2. Общие функции librosa
Основные функции обработки звука
В этой части представлены наиболее часто используемые функции обработки звука, в том числе функция чтения звука load(), функция передискретизации resample(), кратковременное преобразование Фурье stft(), функция преобразования амплитуды амплитуда_to_db() и функция преобразования частоты hz_to_mel. ( ) Подождите. В этой части много функций, подробности на официальном сайте librosa.librosa.github.io/ librosa/core.html
обработка звука
Спектральное представление
Преобразование амплитуды
время-частотное преобразование
Извлечение признаков
В этом разделе перечислены некоторые распространенные методы извлечения спектральных признаков, включая стандартную спектрограмму Мела, MFCC, CQT и т. д. Подробную информацию о функциях см. на странице http://librosa.github.io/librosa/feature.html.
Отображение чертежей
Содержит часто используемую функцию отображения спектра specshow(), функцию отображения формы волны waveplot().lib Роза.GitHub.IO/lib Роза/3rd…. html
Три часто используемые реализации функционального кода
1. Прочитайте аудио
#导入库
import librosa
# # 读取音频
# Load a wav file
y, sr = librosa.load('./sample.wav')
print(y)
#Librosa默认的采样率是22050,如果需要读取原始采样率,需要设定参数sr=None:
print(sr)
y, sr = librosa.load('./sample.wav',sr=None)
#可见,'beat.wav'的原始采样率为16000。如果需要重采样,只需要将采样率参数sr设定为你需要的值:
print(sr)
y, sr = librosa.load('./sample.wav',sr=18000)
print(sr)
2. Извлечение функций
Извлечение функций спектрограммы Log-Mel
Функция спектрограммы Log-Mel является широко используемой функцией распознавания речи и распознавания окружающего звука.Благодаря мощной способности CNN в обработке изображений использование функций спектрограммы аудиосигналов используется более широко, даже более широко, чем использование МФЦК Подробнее. В librosa извлечение функции Log-Mel Spectrogram занимает всего несколько строк кода:
# # 提取特征
# Load a wav file
y, sr = librosa.load('./sample.wav', sr=None)
# extract mel spectrogram feature
melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
# convert to log scale
logmelspec = librosa.power_to_db(melspec)
print(logmelspec.shape)
Можно видеть, что функция Log-Mel Spectrogram представлена в виде двумерного массива, 128 представляет размерность частоты Mel (частотная область), а 100 — длину временного кадра (временная область), поэтому Функция спектрограммы Log-Mel представляет собой характеристику частотно-временного представления звукового сигнала. Среди них n_fft относится к размеру окна, здесь 1024; hop_length представляет собой расстояние между соседними окнами, здесь 512, то есть между соседними окнами имеется 50% перекрытие; n_mels — количество mel-полос, установленных вот 128.
3. Извлечение функций MFCC
Функция MFCC — это функция, широко используемая для автоматического распознавания речи и распознавания говорящего. Для получения дополнительной информации о функциях MFCC заинтересованные стороны могут обратиться к блогу http://blog.csdn.net/zzc15806/article/details/79246716. В librosa для извлечения функций MFCC требуется только одна функция:
# # 提取MFCC特征
# extract mfcc feature
mfccs = librosa.feature.mfcc(y=y, sr=sr, n_mfcc=40)
print(mfccs)
print(mfccs.shape)
Что касается mfcc, я не буду здесь вдаваться в подробности.
Librosa также имеет много других методов извлечения аудиофункций, таких как функции CQT, функции цветности и т. д., которые подробно представлены во второй части «Общие функции Librosa».
4. Отображение чертежей
4.1 Рисование звуковой волны
В Librosa есть функция waveplot() для отображения звуковых сигналов:
# # 绘图显示
import librosa.display
import matplotlib.pyplot as plt
get_ipython().run_line_magic('matplotlib', 'inline')
plt.figure()
librosa.display.waveplot(y, sr)
plt.title('sample wavform')
plt.show()
4.2 Рисование спектрограммы
Librosa имеет функцию specshow() для отображения формы сигнала спектрограммы:
# # 绘制频谱图
melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
logmelspec = librosa.power_to_db(melspec)
plt.figure()
librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')
plt.title('sample wavform')
plt.show()
Постройте звуковой сигнал и спектрограмму на одном графике:
# # 将声音波形和频谱图绘制在一张图表中:
# extract mel spectrogram feature
melspec = librosa.feature.melspectrogram(y, sr, n_fft=1024, hop_length=512, n_mels=128)
# convert to log scale
logmelspec = librosa.power_to_db(melspec)
plt.figure()
# plot a wavform
plt.subplot(2, 1, 1)
librosa.display.waveplot(y, sr)
plt.title('sample wavform')
# plot mel spectrogram
plt.subplot(2, 1, 2)
librosa.display.specshow(logmelspec, sr=sr, x_axis='time', y_axis='mel')
plt.title('Mel spectrogram')
plt.tight_layout() #保证图不重叠
plt.show()
На этом этапе представлены установка и простое использование librosa. На самом деле, librosa — это гораздо больше, чем эти функции.
Текст закончился! ! !