Шептущие модели для автоматического распознавания речи теперь доступны в Amazon SageMaker JumpStart.

Яркие опции для автоматического распознавания речи в Amazon SageMaker JumpStart шептущие модели.

Сегодня мы рады объявить, что модель OpenAI Whisper теперь доступна заказчикам, использующим Amazon SageMaker JumpStart. Whisper – это предварительно обученная модель для автоматического распознавания речи (ASR) и перевода речи. Обученные на 680 тысячах часов помеченных данных, модели Whisper обладают сильной способностью обобщаться на множество наборов данных и сфер без необходимости тонкой настройки. Sagemaker JumpStart – это отделение машинного обучения (ML) от SageMaker, которое предоставляет доступ к основным моделям, а также к встроенным алгоритмам и шаблонам готовых решений, чтобы помочь вам быстро начать работу с ML.

Вы также можете использовать ASR с помощью Amazon Transcribe, полностью управляемой и постоянно обучаемой службой автоматического распознавания речи.

В этой статье мы покажем вам, как развернуть модель OpenAI Whisper и использовать ее для транскрибации и перевода аудио.

Модель OpenAI Whisper использует контейнер huggingface-pytorch-inference. Как клиент модельного центра SageMaker JumpStart, вы можете использовать ASR, не имея необходимости поддерживать модельный скрипт за пределами SDK SageMaker. Модели SageMaker JumpStart также улучшают безопасность сети с помощью конечных точек, обеспечивающих сетевую изоляцию.

Основные модели в SageMaker

SageMaker JumpStart предоставляет доступ к различным моделям из популярных модельных центров, включая Hugging Face, PyTorch Hub и TensorFlow Hub, которые вы можете использовать в своем рабочем процессе разработки ML в SageMaker. Недавние достижения в области ML породили новый класс моделей, известных как основные модели, которые обычно обучаются на миллиардах параметров и могут быть адаптированы к широкому спектру задач, таких как резюмирование текстов, генерация цифрового искусства и перевод языка. Поскольку обучение этих моделей требует значительных затрат, заказчики хотят использовать существующие предварительно обученные основные модели и настраивать их при необходимости, а не обучать эти модели самостоятельно. SageMaker предоставляет отобранный список моделей, из которого вы можете выбрать в консоли SageMaker.

Теперь вы можете найти основные модели различных поставщиков моделей в SageMaker JumpStart, что позволяет вам быстро начать работу с основными моделями. SageMaker JumpStart предлагает основные модели, основанные на разных задачах или поставщиках моделей, и вы можете легко ознакомиться с характеристиками модели и условиями использования. Вы также можете попробовать эти модели с помощью тестового виджета пользовательского интерфейса. Когда вы хотите использовать основную модель масштабированно, вы можете делать это, не покидая SageMaker, используя предварительно созданные блокноты от поставщиков моделей. Поскольку модели размещаются и развертываются на AWS, вы можете быть уверены, что ваши данные, будь то для оценки или использования модели в масштабе, не будут предоставлены третьим лицам.

Основные модели OpenAI Whisper

Whisper – это предварительно обученная модель для ASR и перевода речи. Whisper была предложена в статье Robust Speech Recognition via Large-Scale Weak Supervision Алека Рэдфорда и других ученых из OpenAI. Оригинальный код можно найти в этом репозитории GitHub.

Whisper – это модель кодировщик-декодер на основе Transformer, также известная как модель последовательность-последовательность. Она обучалась на 680 тысячах часов помеченных данных речи, размеченных с использованием масштабированного слабого наблюдения. Модели Whisper обладают сильной способностью обобщаться на множество наборов данных и сфер без необходимости тонкой настройки.

Модели были обучены на данных только на английском или на многоязыковых данных. Модели только на английском языке обучались на задаче распознавания речи. Модели на нескольких языках обучались на распознавании речи и переводе речи. Для распознавания речи модель предсказывает транскрипцию на том же языке, что и аудио. Для перевода речи модель предсказывает транскрипцию на другой язык, отличный от языка аудио.

Проект Whisper включает пять конфигураций вариантов, имеющих различный размер модели. Четыре самых маленьких модели обучены только на английских данных или на многоязыковых данных. Самые большие варианты являются только многоязыковыми. Все десять предварительно обученных вариантов доступны на Hugging Face hub. Данные варианты моделей суммируются в следующей таблице со ссылками на модели на хабе:

Название модели Количество параметров Многоязычность
whisper-tiny 39 M Да
whisper-base 74 M Да
whisper-small 244 M Да
whisper-medium 769 M Да
whisper-large 1550 M Да
whisper-large-v2 1550 M Да

Давайте исследуем, как вы можете использовать модели Whisper в SageMaker JumpStart.

Сравнение погрешности распознавания слов (WER) и задержки моделей OpenAI Whisper

Показатели погрешности распознавания слов (WER) для разных моделей OpenAI Whisper на основе тестовых данных LibriSpeech test-clean представлены в следующей таблице. WER – это общий показатель производительности системы распознавания речи или машинного перевода. Он измеряет разницу между эталонным текстом (правильным переводом или правильной транскрипцией) и выходом системы распознавания речи, учитывая количество ошибок, включая замены, вставки и удаления, необходимых для преобразования вывода системы распознавания речи в эталонный текст. Эти данные взяты с веб-сайта Hugging Face.

Модель WER (в процентах)
whisper-tiny 7,54
whisper-base 5,08
whisper-small 3,43
whisper-medium 2,9
whisper-large 3
whisper-large-v2 3

В этом блоге мы взяли аудиофайл ниже и сравнили задержку распознавания речи для различных моделей Whisper. Задержка – это время от момента отправки пользователем запроса до момента, когда ваше приложение указывает, что запрос завершен. Числа в следующей таблице представляют среднюю задержку для общего числа 100 запросов с использованием одного и того же аудиофайла с моделью, размещенной на экземпляре ml.g5.2xlarge.

Модель Средняя задержка (сек) Выход модели
whisper-tiny 0,43 Мы живем в очень интересные времена с машинным освещением. Скорость разработки моделей машинного обучения действительно увеличится. Но вы не достигнете этого конечного состояния, которого мы добились в ближайшие годы. Если мы не сделаем эти модели более доступными для всех.
whisper-base 0,49 Мы живем в очень интересные времена с машинным обучением. Скорость разработки моделей машинного обучения действительно увеличится. Но вы не достигнете этого конечного состояния, которого мы добились в ближайшие годы. Если мы не сделаем эти модели более доступными для всех.
whisper-small 0,84 Мы живем в очень интересные времена с машинным обучением. Скорость разработки моделей машинного обучения действительно увеличится. Но вы не достигнете этого конечного состояния, которого мы хотим достичь в ближайшие годы, если мы не сделаем эти модели более доступными для всех.
whisper-medium 1,5 Мы живем в очень интересные времена с машинным обучением. Скорость разработки моделей машинного обучения действительно увеличится. Но вы не достигнете этого конечного состояния, которого мы хотим достичь в ближайшие годы, если мы не сделаем эти модели более доступными для всех.
whisper-large 1,96 Мы живем в очень интересные времена с машинным обучением. Скорость разработки моделей машинного обучения действительно увеличится. Но вы не достигнете этого конечного состояния, которого мы хотим достичь в ближайшие годы, если мы не сделаем эти модели более доступными для всех.
whisper-large-v2 1,98 Мы живем в очень интересные времена с машинным обучением. Скорость разработки моделей машинного обучения действительно увеличится. Но вы не достигнете этого конечного состояния, которого мы хотим достичь в ближайшие годы, если мы не сделаем эти модели более доступными для всех.

Решение этапов

Вы можете развернуть модели Whisper с помощью консоли Amazon SageMaker или с помощью блокнота Amazon SageMaker. В этом посте мы покажем, как развернуть API Whisper с помощью консоли SageMaker Studio или блокнота SageMaker, а затем использовать развернутую модель для распознавания речи и перевода языка. Код, использованный в этом посте, можно найти в этом блокноте на GitHub: ссылка на GitHub.

Давайте подробно рассмотрим каждый шаг.

Развертывание Whisper из консоли

  1. Для начала работы с JumpStart SageMaker откройте консоль SageMaker Studio и перейдите на страницу запуска SageMaker JumpStart, а затем выберите Начать работу с JumpStart.
  2. Чтобы выбрать модель Whisper, вы можете либо использовать вкладки сверху, либо воспользоваться строкой поиска в правом верхнем углу, как показано на следующем скриншоте. В этом примере используйте строку поиска в правом верхнем углу и введите Whisper, а затем выберите соответствующую модель Whisper в раскрывающемся меню.
  3. После выбора модели Whisper вы можете использовать консоль для развертывания модели. Вы можете выбрать экземпляр для развертывания или использовать значение по умолчанию.

Развертывание основной модели из блокнота Sagemaker

Шаги для первоначального развертывания и дальнейшего использования развернутой модели для решения различных задач:

  1. Настройка
  2. Выбор модели
  3. Получение артефактов и развертывание точки доступа
  4. Использование развернутой модели для ASR
  5. Использование развернутой модели для перевода языка
  6. Завершение работы с точкой доступа

Настройка

Этот блокнот был протестирован на экземпляре ml.t3.medium в SageMaker Studio с ядром Python 3 (data science) и на экземпляре блокнота Amazon SageMaker с ядром conda_python3.

%pip install --upgrade sagemaker --quiet

Выбор предварительно обученной модели

Настройте сеанс SageMaker с использованием Boto3, а затем выберите идентификатор модели, которую вы хотите развернуть.

model_id = "huggingface-asr-whisper-large-v2"

Получение артефактов и развертывание точки доступа

С помощью SageMaker вы можете выполнять вывод предварительно обученной модели, даже не выполняя перед этим ее донастройку на новом наборе данных. Чтобы разместить предварительно обученную модель, создайте экземпляр класса sagemaker.model.Model и разверните его. В следующем коде используется экземпляр по умолчанию ml.g5.2xlarge для точки доступа whisper-large-v2. Модель также можно развернуть на других типах экземпляров, указав instance_type в классе JumpStartModel. Процесс развертывания может занять несколько минут.

#Deploying the modelfrom sagemaker.jumpstart.model import JumpStartModelfrom sagemaker.serializers import JSONSerializermy_model = JumpStartModel(model_id=dropdown.value)predictor = my_model.deploy()

Автоматическое распознавание речи

Затем вы считываете образец аудиофайла, sample1.wav, из общедоступного хранилища SageMaker Jumpstart на Amazon Simple Storage Service (Amazon S3) и передаете его предиктору для распознавания речи. Вы можете заменить этот образец файлом любого другого аудиофайла, но убедитесь, что файл .wav имеет частоту дискретизации 16 кГц, так как это требуется для моделей автоматического распознавания речи. Входной аудиофайл должен быть не длиннее 30 секунд.

from scipy.io.wavfile import readimport jsonimport boto3from sagemaker.jumpstart import utils# Для работы моделей автоматического распознавания речи аудиофайлы должны быть выборки 16 кГц, поэтому убедитесь, что они выбраны. Входной аудиофайл должен быть меньше 30 секунд.s3_bucket = utils.get_jumpstart_content_bucket(boto3.Session().region_name)key_prefix = "training-datasets/asr_notebook_data"input_audio_file_name = "sample1.wav"s3_client = boto3.client("s3")s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )with open(input_audio_file_name, "rb") as file:    wav_file_read = file.read()# Если вы получите ошибку клиента (413), проверьте размер пакетных данных на точке входа. Загружаемые данные для запросов к конечной точке SageMaker ограничены примерно 5 МБresponse = predictor.predict(wav_file_read)print(response["text"])

Эта модель поддерживает множество параметров при выполнении вывода. Они включают:

  • max_length: Модель генерирует текст до длины вывода. Если указано, он должен быть положительным целым числом.
  • language и task: Укажите здесь язык вывода и задачу. Модель поддерживает задачу транскрипции или перевода.
  • max_new_tokens: Максимальное количество генерируемых токенов.
  • num_return_sequences: Количество возвращаемых выходных последовательностей. Если указано, оно должно быть положительным целым числом.
  • num_beams: Количество лучей, используемых в жадном поиске. Если указано, оно должно быть целым числом, большим или равным num_return_sequences.
  • no_repeat_ngram_size: Модель обеспечивает отсутствие повторения последовательности слов no_repeat_ngram_size в выходной последовательности. Если указано, оно должно быть положительным целым числом, большим 1.
  • temperature: Это контролирует случайность в выводе. Более высокая температура приводит к последовательности вывода с низкой вероятностью слов, а более низкая температура приводит к последовательности вывода с высокой вероятностью слов. Если температура стремится к 0, это приводит к жадной декодированию. Если указано, оно должно быть положительным числом с плавающей запятой.
  • early_stopping: Если True, генерация текста завершается, когда все гипотезы луча достигают символа конца предложения. Если указано, оно должно быть логическим.
  • do_sample: Если True, выберите следующее слово для вероятности. Если указано, оно должно быть логическим.
  • top_k: В каждом шаге генерации текста выбирайте только top_k наиболее вероятных слов. Если указано, оно должно быть положительным целым числом.
  • top_p: В каждом шаге генерации текста выбирайте из наименьшего возможного набора слов с накопленной вероятностью top_p. Если указано, оно должно быть числом с плавающей запятой между 0 и 1.

Вы можете указать любой поднабор указанных параметров при вызове конечной точки. Далее мы покажем вам пример того, как вызвать конечную точку c этими аргументами.

Перевод на другой язык

Для демонстрации перевода на другой язык с использованием моделей Whisper используйте следующий аудиофайл на французском языке и переведите его на английский язык. Файл должен быть выборки 16 кГц (как требуют модели ASR), поэтому убедитесь, что файлы выбраны, если это требуется, и убедитесь, что ваше аудио не превышает 30 секунд.

  1. Скачайте файл sample_french1.wav из SageMaker JumpStart с общедоступного S3-местоположения, чтобы он мог быть передан в загрузку для перевода моделью Whisper.

    input_audio_file_name = "sample_french1.wav"s3_client.download_file(s3_bucket, f"{key_prefix}/{input_audio_file_name }", input_audio_file_name )
  2. Установите параметр задачи как translate и язык как французский, чтобы заставить модель Whisper выполнять речевой перевод.

    with open(input_audio_file_name, "rb") as file:    wav_file_read = file.read()payload = {"audio_input": wav_file_read.hex(), "language": "французский", "task": "translate"}predictor.serializer = JSONSerializer()predictor.content_type = "application/json"
  3. Используйте предиктор для предсказания перевода на другой язык. Если вы получите ошибку клиента (ошибка 413), проверьте размер пакетных данных на точке входа. Загружаемые данные для запросов к конечной точке SageMaker ограничены примерно 5 МБ.

    response = predictor.predict(payload)print(response["text"])
  4. Выводимый текст перевода на английский язык из французского аудиофайла следующий:

    [' Добро пожаловать в JPBSystem. У нас более 150 сотрудников и 90% продаж. Мы разработали около 15 патентов.']

Очистка

После того, как вы протестировали конечную точку, удалите конечную точку вывода SageMaker и удалите модель, чтобы избежать дополнительных расходов.

Заключение

В этой статье мы показали вам, как тестировать и использовать модели OpenAI Whisper для создания интересных приложений с помощью Amazon SageMaker. Попробуйте основную модель в SageMaker сегодня и дайте нам знать свой отзыв!

Это руководство предназначено только для информационных целей. Вы все равно должны провести собственную независимую оценку и принять меры, чтобы обеспечить соответствие собственным практикам и стандартам контроля качества, а также местным правилам, законам, нормативным актам, лицензиям и условиям использования, которые касаются вас, вашего контента и модели третьей стороны, указанной в данном руководстве. AWS не контролирует и не оказывает никакого воздействия на модель третьей стороны, указанную в данном руководстве, и не делает никаких заявлений или гарантий на то, что модель третьей стороны защищена от вирусов, работает безопасно и совместима с вашей средой и стандартами производства. AWS также не делает никаких заявлений, гарантий или обещаний относительно того, что какая-либо информация в данном руководстве приведет к определенному результату или исходу.