1. Введение
Pipeline (конвейер) — это минималистичный способ использования абстракции рассуждений больших моделей в библиотеке преобразователей Huggingface. Все большие модели делятся на аудио (Audio), компьютерное зрение (Computer Vision), обработку естественного языка (NLP), мультимодальные (Multimodal). ) и другие 4 большие категории, а также 28 малых категорий задач (задач). Охватывает в общей сложности 320 000 моделей.
Сегодня я представляю первую статью об аудио-аудио, аудио-классификации. В библиотеке HuggingFace имеется 2500 моделей классификации аудио.
Классификация аудио,Как следует из названия, это означает Аудио Ярлыкилиназначенная категория Задача。Основные сценарии применения:Классификация речевых эмоций、Категории голосовых команд、Классификация динамиков、Определение музыкального стиля、языковая дискриминацияждать。
Основная идея классификации звука состоит в том, чтобы разрезать спектр звука на сегменты по 25–60 мс, извлечь признаки с помощью моделей сверточных нейронных сетей, таких как CNN, и встроить их, а также обучить на основе выравнивания преобразователя с текстовыми категориями. Ниже представлены две репрезентативные модели:
Wav2vec 2.0 — это модель предварительной тренировки речи без учителя, опубликованная Meta в 2020 году. Его основная идея состоит в том, чтобы создать самостоятельно созданную контролируемую обучающую цель с помощью векторного квантования (VQ), замаскировать входные данные в больших количествах, а затем использовать функцию контрастных потерь обучения для обучения. Структура модели показана на рисунке. Экстрактор признаков на основе сверточной нейронной сети (CNN) кодирует исходный звук в последовательность признаков кадра и преобразует каждый признак кадра в дискретный признак Q через используемый модуль VQ. как самоконтролируемая цель. В то же время последовательность признаков кадра подвергается операции маскировки и затем поступает в модель Трансформера [5] для получения контекстного представления C. Наконец, благодаря контрастной функции потерь обучения расстояние между контекстным представлением положения маски и соответствующим дискретным признаком q, то есть парой положительных образцов, сокращается.
HuBERT — модель, выпущенная Meta в 2021 году. Структура модели аналогична Wav2vec 2.0, но разница заключается в методе обучения. Wav2vec 2.0 дискретизирует речевые характеристики как самоконтролируемую цель во время обучения, в то время как HuBERT получает цель обучения, выполняя кластеризацию K-средних по функциям MFCC или функциям HuBERT. Модель HuBERT использует итеративный метод обучения. Первая итерация модели BASE выполняет кластеризацию по признакам MFCC. Вторая итерация выполняет кластеризацию по функциям среднего уровня модели HuBERT, полученным в первой итерации. Модели LARGE и XLARGE используют. вторая итерация модели BASE извлекает функции для кластеризации. Судя по экспериментальным результатам оригинальной статьи, модель HuBERT лучше, чем Wav2vec 2.0, особенно когда последующие задачи имеют очень мало данных контролируемого обучения, например 1 час или 10 минут.
str
илиModelCard
,Необязательный) — Карты моделей, принадлежащие этому конвейеру Модель.str
,Необязательный)— структура для использования,"pt"
Применимо к PyTorch или"tf"
TensorFlow。Указанный фреймворк должен быть установлен。
Если платформа не указана, по умолчанию используется установленная в данный момент платформа. Если платформа не указана и установлены две платформы, по умолчанию используется значение рамкаmodel
,Если Модель не указана,По умолчанию используется PyTorch.str
,По умолчанию""
)— Идентификатор задачи канала.int
,Необязательный,По умолчанию 8)— Когда трубопровод будет использоватьDataLoader(При передаче набора данных,существовать Pytorch Модель的 GPU выше), количество рабочих, которые будут использоваться.int
,Необязательный,По умолчанию 1)— Когда трубопровод будет использоватьDataLoader(При передаче набора данных,Когда на графическом процессоре модели Pytorch,Размер используемой партии,для рассуждений,Это не всегда выгодно,Пожалуйста, прочитайтеИспользование конвейеров для пакетной обработки。int
,Необязательный,По умолчанию -1)— CPU/GPU Поддерживаемые серийные номера оборудования. установите его на -1 будет использовать ЦП, установка положительного числа приведет к соответствующему CUDA оборудование ID беги дальше Модель。Вы можете передать роднойtorch.device
илиstr
слишкомstr
илиtorch.dtype
,Необязательный) - Отправить напрямуюmodel_kwargs
(Просто более простой ярлык)использовать это Модельдоступная точность(torch.float16
,,torch.bfloat16
...или"auto"
)bool
,Необязательный,По умолчаниюFalse
)——Флаг, указывающий, должен ли вывод канала быть в сериализованном формате.(即 рассол) или необработанные выходные данные (например, текст).np.ndarray
илиbytes
илиstr
илиdict
) — входитьможет быть: str
Это Аудиоимя файла,Файл будет читаться с правильной частотой дискретизации.ffmpegПолучить сигнал。这需要существовать系统上安装ffmpeg 。bytes
это должно быть Аудиосодержимое файла,и таким же образом черезffmpeg объясняет.np.ndarray
Форма(n,)Типnp.float32
илиnp.float64
)Правильная частота дискретизации оригинала Аудио(никаких дополнительных проверок)dict
Форма может использоваться для передачи произвольных выборок необработанных данных.Аудиоsampling_rate
,и пусть этот конвейер выполнит повторную выборку。Словарь должен использовать или Формат{"sampling_rate": int, "raw": np.array}
,{"sampling_rate": int, "array": np.array}
где ключ"raw"
или "array"
используется для обозначения оригинала Аудиоформа волны。int
,Необязательный,По умолчанию None)— Количество верхних меток, которые вернет конвейер.。如果提供的数字ждать于None
иливыше, чем Модель Количество тегов, доступных в конфигурации,по умолчанию будет указано количество тегов.Модель конвейера для классификации звука по умолчанию — super/wav2vec2-base-superb-ks. Если при использовании конвейера вы задаете только Task=audio-classification и не задаете модель, будет загружена и использована модель по умолчанию.
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from transformers import pipeline
speech_file = "./output_video_enhanced.mp3"
pipe = pipeline(task="audio-classification")
result = pipe(speech_file)
print(result)
Это модель распознавания инструкций «вверх», «вниз», «влево», «вправо» и «нет», которая напоминает дрессировку животного.
[{'score': 0.9988580942153931, 'label': '_unknown_'}, {'score': 0.000909291033167392, 'label': 'down'}, {'score': 9.889943612506613e-05, 'label': 'no'}, {'score': 7.015655864961445e-05, 'label': 'yes'}, {'score': 5.134344974067062e-05, 'label': 'stop'}]
Мы указываем модель как модель распознавания эмоций ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition. Конкретный код:
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from transformers import pipeline
speech_file = "./output_video_enhanced.mp3"
pipe = pipeline(task="audio-classification",model="ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition")
result = pipe(speech_file)
print(result)
На входе — фрагмент речи в формате mp3, на выходе —
[{'score': 0.13128453493118286, 'label': 'angry'}, {'score': 0.12990005314350128, 'label': 'calm'}, {'score': 0.1262471228837967, 'label': 'happy'}, {'score': 0.12568499147891998, 'label': 'surprised'}, {'score': 0.12327362596988678, 'label': 'disgust'}]
На HuggingFace мы фильтруем модели классификации аудио и сортируем их по объему загрузки от высокого к меньшему:
В этой статье представлена аудиоклассификация (аудиоклассификация) конвейера трансформаторов с точки зрения обзора, технических принципов, параметров конвейера, практики работы с конвейерами, ранжирования моделей и т. д. Читатели могут использовать код в статье для обоснования классификации аудио на основе находится в стадии разработки и применить его к бизнес-сценариям, таким как распознавание звуковых эмоций и определение музыкального жанра.