Речь в текст
Узнайте, как преобразовать аудио в текст.
Введение
Аудио 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.