Аудио под искусственным интеллектом все еще может воспроизводиться так — librosa

задняя часть

Это 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 — это гораздо больше, чем эти функции.

lib Rosa.GitHub.IO/lib Rosa/Ind…

Текст закончился! ! !