
Ознакомьтесь с этой статьей, если хотите узнать больше об AI Endpoints.
Вы также можете найти больше информации об AI Endpoints в наших предыдущих публикациях.
В этой статье объясняется, как создать транскрипцию подкаста с помощью Whisper — мощной системы автоматического распознавания речи (ASR), разработанной OpenAI. Whisper интегрируется с AI Endpoints и упрощает транскрибирование аудиофайлов, а также добавление таких функций, как диаризация говорящих.
ℹ️ Полный код можно найти на Github ℹ️
Настройка окружения
Определите переменные окружения для доступа к AI Endpoints:
$ export OVH_AI_ENDPOINTS_WHISPER_URL=<URL модели whisper>
$ export OVH_AI_ENDPOINTS_ACCESS_TOKEN=<ваш_токен_доступа>
$ export OVH_AI_ENDPOINTS_WHISPER_MODEL=whisper-large-v3
Установите зависимости:
$ pip install -r requirements.txt
Транскрибирование аудио
С Whisper и клиентом OpenAI транскрибирование аудио так же просто, как написание нескольких строк кода:
import os
import json
from openai import OpenAI
# 🛠️ Инициализация клиента OpenAI
client = OpenAI(base_url=os.environ.get('OVH_AI_ENDPOINTS_WHISPER_URL'),
api_key=os.environ.get('OVH_AI_ENDPOINTS_ACCESS_TOKEN'))
# 🎼 Загрузка аудиофайла
with open("../resources/TdT20-trimed-2.mp3", "rb") as audio_file:
# 📝 Вызов API транскрибирования Whisper
transcript = client.audio.transcriptions.create(
model=os.environ.get('OVH_AI_ENDPOINTS_WHISPER_MODEL'),
file=audio_file,
temperature=0.0,
response_format="verbose_json",
extra_body={"diarize": True},
)
К сведению:
– мы используем параметр 'diarize' (не параметр Whisper) для включения диаризации, так как клиент OpenAI позволяет нам добавлять дополнительные параметры тела запроса.
– вам нужен формат verbose_json для диаризации (что также означает режим сегментации)
После получения полной транскрипции отформатируйте её так, чтобы её было легко читать людям.
Создание скрипта
JSON-поле 'diarization' содержит весь транскрибированный, диаризованный контент.
"diarization": [
{
"speaker": 0,
"text": "бла бла бла",
"start": 16.5,
"end": 26.38
},
{
"speaker": 1,
"text": "бла бла",
"start": 26.38,
"end": 32.6
},
{
"speaker": 1,
"text": "бла бла",
"start": 32.6,
"end": 40.6
},
{
"speaker": 2,
"text": "бла бла",
"start": 40.6,
"end": 42
}
]
Поскольку они сегментированы, вы можете объединить несколько полей для одного и того же говорящего, как показано ниже — для говорящего 1.
Вот пример кода для создания скрипта французского подкаста с участием 3 говорящих:
# 🔀 Объединение диалога, произнесённого одним говорящим
diarizedTranscript = ''
speakers = ["Орели", "Гийом", "Стефан"]
previousSpeaker = -1
jsonTranscript = json.loads(transcript.model_dump_json())
# 💬 Полезно только поле diarization
for dialog in jsonTranscript["diarization"]:
speaker = dialog.get("speaker")
text = dialog.get("text")
if (previousSpeaker == speaker):
diarizedTranscript += f" {text}"
else:
diarizedTranscript += f"nn{speakers[speaker]}: {text}"
previousSpeaker = speaker
print(f"n📝 Диаризованная транскрипция 📝:n{diarizedTranscript}")
Наконец, запустите Python-скрипт:
$ python PodcastTranscriptWithWhisper.py
📝 Диаризованная транскрипция 📝:
Стефан: Здравствуйте всем, рад снова встретиться с вами для записи этого последнего эпизода сезона перед тем, как взять заслуженный отпуск и встретиться с вами в начале следующего сезона для третьего сезона. Мы записываем этот эпизод 30 июня в прохладе, ну если можно так сказать, учитывая температуры, которые уже присутствуют этим утром. Кстати, она горячо возвращается с Sunnytech, и я с удовольствием встречаюсь с ней для записи этого эпизода. Здравствуй, Орели, как дела?
Орели: Привет, всё отлично. Признаюсь, мне тоже очень жарко. У меня вентилятор прямо рядом со мной, так что всё будет в порядке для записи подкаста.
Стефан: Да, правда жарко. И для этого последнего эпизода сезона я с радостью, но также с некоторым трепетом принимаю нашего гостя. Если я делаю эту работу так, как я её делаю, это во многом благодаря ему. Этот подкаст, в некотором смысле, имеет вдохновение от того, что делает наш гость. Поэтому я очень рад принять тебя, Гийом. Здравствуй, Гийом, как дела и не хочешь ли ты представиться нашим слушательницам и слушателям? Здравствуйте
Гийом: всем, и спасибо, что пригласили меня. Я очень рад присоединиться к вашему подкасту для этого эпизода. Меня зовут Гийом Лафорж, я Java-разработчик с самого начала, уже очень-очень давно. Я работаю в Google, в частности в Google Cloud. Я много фокусируюсь на всём, что связано с Generative AI, так как это, очевидно, в моде. Люди могут меня знать или, возможно, мой голос, потому что я являюсь частью подкаста Les Cascodeurs, который мы начали 15 лет назад или что-то вроде того. Слишком давно. Или же они меня знают, потому что я один из соучредителей языка Groovy, Apache Groovy.
Не стесняйтесь попробовать наш новый продукт, AI Endpoints, и поделитесь своими впечатлениями.

Комментарии
Категории
Случайное

GPT-5 и уроки для бизнеса: чем опасна

DNS-пропагация: что это и как избежать

5 рабочих способов зарабатывать на блоге

Создаем успешную маркетинговую кампанию
