[Искусственный интеллект] Конвейер трансформеров (1): Аудио-классификация
[Искусственный интеллект] Конвейер трансформеров (1): Аудио-классификация

1. Введение

Pipeline (конвейер) — это минималистичный способ использования абстракции рассуждений больших моделей в библиотеке преобразователей Huggingface. Все большие модели делятся на аудио (Audio), компьютерное зрение (Computer Vision), обработку естественного языка (NLP), мультимодальные (Multimodal). ) и другие 4 большие категории, а также 28 малых категорий задач (задач). Охватывает в общей сложности 320 000 моделей.

Сегодня я представляю первую статью об аудио-аудио, аудио-классификации. В библиотеке HuggingFace имеется 2500 моделей классификации аудио.

2. Аудиоклассификация (аудиоклассификация)

2.1 Обзор

Классификация аудио,Как следует из названия, это означает Аудио Ярлыкилиназначенная категория Задача。Основные сценарии применения:Классификация речевых эмоцийКлассификация голосовых командКлассификация динамиковОпределение музыкального стиляязыковая дискриминацияждать。

2.2 Технические принципы

Основная идея классификации аудио состоит в том, чтобы разрезать аудиоспектр на сегменты по 25–60 мс, извлечь признаки с помощью моделей сверточных нейронных сетей, таких как CNN, и встроить их, а также обучить на основе выравнивания преобразователя с текстовыми категориями. Ниже представлены две репрезентативные модели:

2.2.1 Модель Wav2vec 2.0

Wav2vec 2.0 — это модель предварительной тренировки речи без учителя, опубликованная Meta в 2020 году. Его основная идея состоит в том, чтобы создать самостоятельно созданную контролируемую обучающую цель с помощью векторного квантования (VQ), замаскировать входные данные в больших количествах, а затем использовать функцию контрастных потерь обучения для обучения. Структура модели показана на рисунке. Экстрактор признаков на основе сверточной нейронной сети (CNN) кодирует исходный звук в последовательность признаков кадра и преобразует каждый признак кадра в дискретный признак Q через используемый модуль VQ. как самоконтролируемая цель. В то же время последовательность признаков кадра подвергается операции маскировки и затем попадает в модель Трансформатора [5] для получения контекстного представления C. Наконец, расстояние между контекстным представлением положения маски и соответствующим дискретным признаком q сокращается за счет сравнения функции потерь обучения, то есть пары положительных образцов.

2.2.1 Модель HuBERT

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 минут.

2.3 параметры трубопровода

2.3.1 Параметры создания объекта конвейера

  • МодельPreTrainedModelилиTFPreTrainedModel)— Модель, которую конвейер будет использовать для прогнозирования. для PyTorch,Это требуетPreTrainedModelнаследовать;для TensorFlow,Это требуетУнаследовано от TFPreTrainedModel.
  • feature_extractor ( SequenceFeatureExtractor ) — Экстрактор функций, который конвейер будет использовать для кодирования данных для модели. Этот объект наследуется от SequenceFeatureExtractor
  • modelcardstrилиModelCard,Необязательный) — Карты моделей, принадлежащие этому конвейеру Модель.
  • frameworkstr,Необязательный)— структура для использования,"pt"Применимо к PyTorch или"tf"TensorFlow。Указанный фреймворк должен быть установлен。 Если платформа не указана, по умолчанию используется установленная в данный момент платформа. Если платформа не указана и установлены две платформы, по умолчанию используется значение рамкаmodel,Если Модель не указана,По умолчанию используется PyTorch.
  • Задачаstr,По умолчанию"")— Идентификатор задачи канала.
  • num_workersint,Необязательный,По умолчанию 8)— Когда трубопровод будет использоватьDataLoader(При передаче набора данных,существовать Pytorch Модельиз GPU выше), количество рабочих, которые будут использоваться.
  • batch_sizeint,Необязательный,По умолчанию 1)— Когда трубопровод будет использоватьDataLoader(При передаче набора данных,Когда на графическом процессоре модели Pytorch,Размер используемой партии,для рассуждений,Это не всегда выгодно,Пожалуйста, прочитайтеИспользование конвейеров для пакетной обработки
  • args_parserArgumentHandler,Необязательный) - Ссылка на объект, ответственный за анализ предоставленных параметров конвейера.
  • оборудованиеint,Необязательный,По умолчанию -1)— CPU/GPU Поддерживаемые серийные номера оборудования. установите его на -1 будет использовать ЦП, установка положительного числа приведет к соответствующему CUDA оборудование ID беги дальше Модель。Вы можете передать роднойtorch.deviceилиstrслишком
  • torch_dtypestrилиtorch.dtype,Необязательный) - Отправить напрямуюmodel_kwargs(Просто прощеизярлык)использовать это Модельиз Доступная точность(torch.float16,,torch.bfloat16...или"auto"
  • binary_outputbool,Необязательный,По умолчаниюFalse)——знаки с указанием трубиз Должен ли вывод быть сериализован как Формат(Прямо сейчас рассол) или необработанные выходные данные (например, текст).
2.3.2 Параметры использования объекта конвейера

  • входить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"используется для обозначения оригинала Аудиоформа волны。
  • top_kint,Необязательный,По умолчанию None)— Труба вернетсяиз Количество топ-лейблов。Если предусмотреноизчислождать ВNoneиливыше, чем Модельдоступен в конфигурациииз Количество тегов,по умолчанию будет указано количество тегов.

2.4 конвейер, реальный бой

2.4.1 Идентификация инструкций (модель по умолчанию)

Модель конвейера для классификации звука по умолчанию — super/wav2vec2-base-superb-ks. Если при использовании конвейера вы задаете только Task=audio-classification и не задаете модель, будет загружена и использована модель по умолчанию.

Язык кода:javascript
копировать
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)

Это модель распознавания инструкций «вверх», «вниз», «влево», «вправо» и «нет», которая напоминает дрессировку животного.

Язык кода:javascript
копировать
[{'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'}]
2.4.2 Распознавание эмоций

Мы указываем модель как модель распознавания эмоций ehcalabres/wav2vec2-lg-xlsr-en-speech-emotion-recognition. Конкретный код:

Язык кода:javascript
копировать
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, на выходе —

Язык кода:javascript
копировать
[{'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'}]

2.5 Рейтинг моделей

На HuggingFace мы фильтруем модели классификации аудио и сортируем их по объему загрузки от высокого к меньшему:

3. Резюме

В этой статье представлена ​​аудиоклассификация (аудиоклассификация) конвейера трансформаторов с точки зрения обзора, технических принципов, параметров конвейера, практики работы с конвейерами, ранжирования моделей и т. д. Читатели могут использовать код в статье для проведения минималистских рассуждений по аудиоклассификации. на основе конвейера и применять его для распознавания звуковых эмоций, оценки музыкального жанра и других бизнес-сценариев.

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода