Перейти к основному содержимому

Речь в текст

Узнайте, как преобразовать аудио в текст.

Введение

Аудио API предоставляет две конечные точки для преобразования речи в текст: transcriptions и translations, основанные на нашей передовой модели Whisper large-v2 с открытым исходным кодом. Их можно использовать для:

  • Транскрибирования аудио на том языке, на котором оно записано.
  • Перевода и транскрибирования аудио на английский язык.

На данный момент загрузка файлов ограничена 25 МБ, и поддерживаются следующие типы входных файлов: mp3, mp4, mpeg, mpga, m4a, wav и webm.

Быстрый старт

Транскрибирование

API для транскрибирования принимает на вход аудиофайл, который вы хотите транскрибировать, и желаемый формат выходного файла для транскрибирования аудио. В настоящее время мы поддерживаем несколько форматов входных и выходных файлов.

Транскрибирование аудио

Python:

from openai import OpenAI

client = OpenAI(
api_key = '$ROCKAPI_API_KEY',
base_url = 'https://api.rockapi.ru/openai/v1'
)

audio_file = open("/path/to/file/audio.mp3", "rb")
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
print(transcription.text)

По умолчанию тип ответа будет JSON с включенным исходным текстом.

Пример ответа:

{
"text": "Представьте самую дикую идею, которую вы когда-либо имели, и вам интересно, как она может масштабироваться до чего-то, что в 100, в 1000 раз больше."
}

Аудио API также позволяет вам задать дополнительные параметры в запросе. Например, если вы хотите установить response_format как text, ваш запрос будет выглядеть следующим образом:

Дополнительные параметры:

from openai import OpenAI

client = OpenAI(
api_key = '$ROCKAPI_API_KEY',
base_url = 'https://api.rockapi.ru/openai/v1'
)

audio_file = open("/path/to/file/speech.mp3", "rb")
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
response_format="text"
)
print(transcription.text)

Смотрите API Reference для полного списка доступных параметров.

Переводы

API для переводов принимает на вход аудиофайл на любом из поддерживаемых языков и, при необходимости, транскрибирует аудио на английский язык. Это отличается от конечной точки /Transcriptions, так как выходные данные не на оригинальном языке ввода, а переведены на английский язык.

Перевод аудио

Python:

from openai import OpenAI

client = OpenAI(
api_key = '$ROCKAPI_API_KEY',
base_url = 'https://api.rockapi.ru/openai/v1'
)

audio_file = open("/path/to/file/german.mp3", "rb")
translation = client.audio.translations.create(
model="whisper-1",
file=audio_file
)
print(translation.text)

В этом случае введенное аудио было на немецком языке, и выходной текст выглядит так:

Привет, меня зовут Вольфганг, и я из Германии. Куда вы направляетесь сегодня?

На данный момент мы поддерживаем перевод только на английский язык.

Поддерживаемые языки

В настоящее время мы поддерживаем следующие языки через конечные точки transcriptions и translations:

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

Хотя базовая модель была обучена на 98 языках, мы указываем только те языки, которые превысили <50% уровень ошибок слов (WER), который является отраслевым стандартом точности модели преобразования речи в текст. Модель будет возвращать результаты для языков, не указанных выше, но качество будет низким.

Таймстемпы

По умолчанию API Whisper выведет транскрипцию предоставленного аудио в текст. Параметр timestamp_granularities[] позволяет получить более структурированный и помеченный временем формат вывода JSON, с таймстемпами на уровне сегмента, слова или обоих. Это обеспечивает точность транскрипций на уровне слов и редактирования видео, что позволяет удалять конкретные кадры, связанные с отдельными словами.

Опции таймстемпов:

from openai import OpenAI

client = OpenAI(
api_key = '$ROCKAPI_API_KEY',
base_url = 'https://api.rockapi.ru/openai/v1'
)

audio_file = open("speech.mp3", "rb")
transcript = client.audio.transcriptions.create(
file=audio_file,
model="whisper-1",
response_format="verbose_json",
timestamp_granularities=["word"]
)
print(transcript.words)

Длинные входные данные

По умолчанию API Whisper поддерживает только файлы размером менее 25 МБ. Если у вас есть аудиофайл, который больше этого, вам нужно будет разбить его на части по 25 МБ или меньше, или использовать сжатый аудиоформат. Чтобы получить наилучшую производительность, мы предлагаем избегать разрыва аудио посреди предложения, так как это может привести к потере контекста.

Один из способов сделать это — использовать открытый пакет PyDub на Python для разделения аудио:

Python:

from pydub import AudioSegment

song = AudioSegment.from_mp3("good_morning.mp3")

# PyDub обрабатывает время в миллисекундах
ten_minutes = 10 * 60 * 1000

first_10_minutes = song[:ten_minutes]

first_10_minutes.export("good_morning_10.mp3", format="mp3")

Примечание: OpenAI не гарантирует пригодность или безопасность стороннего программного обеспечения, такого как PyDub.

Использование подсказок

Вы можете использовать подсказку для улучшения качества транскрипций, создаваемых API Whisper. Модель будет пытаться соответствовать стилю подсказки, поэтому она будет более вероятно использовать заглавные буквы и пунктуацию, если это делает подсказка. Однако текущая система подсказок гораздо более ограничена по сравнению с нашими другими языковыми моделями и предоставляет ограниченный контроль над генерируемым аудио. Вот несколько примеров того, как использование подсказок может помочь в различных сценариях:

  1. Исправление конкретных слов или аббревиатур:

    • Например, следующая подсказка улучшает транскрипцию слов DALL·E и GPT-3, которые ранее были написаны как "GDP 3" и "DALI": "Транскрипт посвящен OpenAI, который разрабатывает технологии, такие как DALL·E, GPT-3 и ChatGPT, с надеждой однажды создать AGI систему, которая принесет пользу всему человечеству."
  2. Сохранение контекста в разделенных файлах:

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

через открытый исходный код Python пакета Whisper.

  1. Улучшение пунктуации:

    • Иногда модель может пропустить пунктуацию в транскрипте. Вы можете избежать этого, используя простую подсказку, включающую пунктуацию: "Здравствуйте, добро пожаловать на мою лекцию."
  2. Сохранение слов-заполнителей:

    • Модель также может пропускать распространенные слова-заполнители в аудио. Если вы хотите сохранить слова-заполнители в вашем транскрипте, вы можете использовать подсказку, которая их содержит: "Эм, дайте мне подумать, как бы, ммм... Хорошо, вот что я, как бы, думаю."
  3. Предпочитаемый стиль письма:

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

Улучшение надежности

Одной из самых распространенных проблем при использовании Whisper является то, что модель часто не распознает необычные слова или аббревиатуры. Вот несколько техник для улучшения надежности:

Использование параметра подсказки

Используйте необязательный параметр подсказки, чтобы передать словарь с правильными написаниями. Whisper работает больше как базовая модель GPT и учитывает только первые 244 токена подсказки.

Параметр подсказки:

from openai import OpenAI

client = OpenAI(
api_key = '$ROCKAPI_API_KEY',
base_url = 'https://api.rockapi.ru/openai/v1'
)

audio_file = open("/path/to/file/speech.mp3", "rb")
transcription = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file,
response_format="text",
prompt="ZyntriQix, Digique Plus, CynapseFive, VortiQore V8, EchoNix Array, OrbitalLink Seven, DigiFractal Matrix, PULSE, RAPT, B.R.I.C.K., Q.U.A.R.T.Z., F.L.I.N.T."
)
print(transcription.text)

Хотя это увеличит надежность, эта техника ограничена только 244 символами.

Постобработка с помощью GPT-4

Другой метод включает шаг постобработки с использованием GPT-4 или GPT-3.5-Turbo.

Постобработка:

system_prompt =

"Вы полезный помощник для компании ZyntriQix. Ваша задача - исправить любые орфографические ошибки в транскрибированном тексте. Убедитесь, что названия следующих продуктов написаны правильно: ZyntriQix, Digique Plus, CynapseFive, VortiQore V8, EchoNix Array, OrbitalLink Seven, DigiFractal Matrix, PULSE, RAPT, B.R.I.C.K., Q.U.A.R.T.Z., F.L.I.N.T. Добавляйте только необходимую пунктуацию, такую как точки, запятые и заглавные буквы, и используйте только предоставленный контекст."

def generate_corrected_transcript(temperature, system_prompt, audio_file):
response = client.chat.completions.create(
model="gpt-4o",
temperature=temperature,
messages=[
{
"role": "system",
"content": system_prompt
},
{
"role": "user",
"content": transcribe(audio_file, "")
}
]
)
return completion.choices[0].message.content

corrected_text = generate_corrected_transcript(0, system_prompt, fake_company_filepath)

Использование GPT-4 для постобработки может исправить многие орфографические ошибки в транскрипте и является более надежным, так как GPT-4 можно инструктировать и направлять способами, которые невозможны с Whisper.


Следуя этим методам и руководствам, вы можете улучшить точность и надежность преобразования речи в текст с помощью модели Whisper от OpenAI.