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 мы фильтруем модели классификации аудио и сортируем их по объему загрузки от высокого к меньшему:
В этой статье представлена аудиоклассификация (аудиоклассификация) конвейера трансформаторов с точки зрения обзора, технических принципов, параметров конвейера, практики работы с конвейерами, ранжирования моделей и т. д. Читатели могут использовать код в статье для проведения минималистских рассуждений по аудиоклассификации. на основе конвейера и применять его для распознавания звуковых эмоций, оценки музыкального жанра и других бизнес-сценариев.