
Использование Eden AI для расшифровки длинных аудиозаписей
Аудиофайлы часто встречаются в различных приложениях, начиная от подкастов и интервью и заканчивая записями лекций или совещаний. Тем не менее, работа с длинными аудиофайлами может быть сложной задачей, если целью является расшифровка или обработка определенных сегментов контента. Здесь в игру вступает Eden AI.
В этом уроке мы проведем вас через процесс разделения длинных аудиофайлов на более мелкие фрагменты, создания текстовых транскрипций и объединения полученного текста. Давайте начнем.
Предпосылки:
Заранее убедитесь, что у вас есть следующие требования:
- Действительный ключ API от Eden AI.
- Python установлен в вашей системе.
- Необходимые библиотеки Python: запросы, pydub и pydub.silence.
Шаг 1. Импортируйте необходимые библиотеки
Для начала давайте импортируем необходимые библиотеки для доступа к Eden AI API и обработки звука. Откройте среду Python или IDE и импортируйте следующие библиотеки:
import json импортировать запросы из pydub импортировать AudioSegment из pydub.silence импортировать split_on_silence

Шаг 2. Настройте ключ API и URL-адрес аудиофайла
Далее нам нужно настроить ключ API и указать URL-адрес аудиофайла, который вы хотите разделить. Чтобы получить ключ API, вам необходимо создать учетную запись в Eden AI:
Обновите следующие переменные с помощью вашего ключа API и URL-адреса аудиофайла:
# Replace with your API key and audio file URL api_key = "YOUR_API_KEY" audio_file_url = "AUDIO_FILE_URL"
Шаг 3: Загрузите и подготовьте аудиофайл
На этом шаге мы загрузим длинный аудиофайл с указанного URL-адреса и подготовим его для дальнейшей обработки. Добавьте следующий код:
# Download the audio file response = requests.get(audio_file_url) with open("temp_audio_file.mp3", "wb") as file: file.write(response.content) audio = AudioSegment.from_file("temp_audio_file.mp3", format="mp3")
Шаг 4: Разделите аудиофайл на куски
Теперь давайте разделим аудиофайл на более мелкие фрагменты в зависимости от периодов тишины. Мы будем использовать функцию split_on_silence из модуля pydub.silence. Включите следующий код:
# Load the audio file into chunks chunks = split_on_silence(audio, min_silence_len=500, silence_thresh=-40)
Шаг 5: Определите функцию транскрипции
Чтобы расшифровать каждый фрагмент аудио, нам нужно определить функцию, которая использует Eden AI API. Добавьте следующий код:
# Function to transcribe an audio chunk def transcribe_audio_chunk(chunk, index): chunk.export(f"temp_chunk_{index}.mp3", format="mp3") url = "https://api.edenai.run/v2/audio/speech_to_text_async" headers = {"Authorization": f"Bearer {api_key}"} json_payload = { "providers": "google, amazon", "language": "en-US", "file_url": f"🔗 https://drive.google.com/file/d/1i9EmD2AGn7VzQKYJZWe14cPQojY6qSBy/view?usp=share_link {index}", } response = requests.post(url, json=json_payload, headers=headers) result = json.loads(response.text) return result["result"]["google"]["transcription"]
Шаг 6: Расшифруйте и объедините текст
На этом последнем этапе мы расшифруем каждый фрагмент аудио и соединим получившийся текст. Добавьте следующий код:
# Transcribe each chunk and concatenate the text transcribed_text = "" for index, chunk in enumerate(chunks): text = transcribe_audio_chunk(chunk, index) transcribed_text += " " + text print(transcribed_text)
Рекомендации по работе с аудиофайлами
1. Формат и качество аудиофайла
Убедитесь, что ваш аудиофайл находится в совместимом формате, поддерживаемом Eden AI API. Обычно используемые форматы включают MP3, WAV, FLAC и OGG. Кроме того, обратите внимание на качество аудиофайла. Записи более высокого качества обычно дают лучшие результаты транскрипции.
2. Предварительная обработка и шумоподавление
Прежде чем разделить аудиофайл, рассмотрите возможность применения методов предварительной обработки для повышения точности транскрипции. Это включает в себя снижение фонового шума, нормализацию уровня звука и повышение четкости речи. Такие инструменты, как библиотека pydub, предоставляют функции для шумоподавления и улучшения звука.
3. Оптимальный размер блока
Выберите подходящий размер фрагмента в зависимости от ваших конкретных требований. Меньшие фрагменты обеспечивают более детальную обработку, но могут увеличить использование API и время обработки. Большие фрагменты сокращают количество вызовов API, но могут привести к увеличению времени транскрипции или снижению точности для разделов со значительным фоновым шумом или перекрывающейся речью. Поэкспериментируйте с различными размерами фрагментов, чтобы найти баланс, который соответствует вашим потребностям.
4. Порог молчания и минимальная продолжительность молчания
Функция split_on_silence требует установки параметров порога молчания и минимальной продолжительности молчания. Отрегулируйте эти значения в соответствии с характеристиками вашего аудиофайла. Более высокие пороги молчания могут привести к разделению звука при более низкой громкости, в то время как более короткие минимальные длины молчания могут привести к более частым разделениям. Настройте эти параметры для достижения желаемых результатов.
5. Механизмы обработки ошибок и повторных попыток
При выполнении API-вызовов Eden AI реализуйте соответствующие механизмы обработки ошибок и повторных попыток. Сбои в работе сети или ограничения API могут вызывать периодические сбои. Рассмотрите возможность включения обработки ошибок и повторных попыток, чтобы обеспечить надежность и надежность вашего кода.
Примечание. Рекомендуется удалить все временные файлы, созданные в процессе.
Полный код
Обработка длинных аудиофайлов может быть сложной задачей, особенно когда вам нужно извлечь определенные разделы для расшифровки или дальнейшей обработки. Благодаря знаниям, полученным из этого руководства, вы теперь готовы справиться с задачей работы с длинными аудиофайлами.
Не забывайте безопасно обращаться с ключом API и рассмотрите возможность оптимизации аудиофайлов, выбрав совместимые форматы и применяя методы предварительной обработки для уменьшения шума.
import json import requests from pydub import AudioSegment from pydub.silence import split_on_silence # Replace with your API key and audio file URL api_key = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiNDQ0YjI4NDItYjBkMC00YTdmL WI3NmMtYzI4NGY3MWNiZWFiIiwidHlwZSI6ImFwaV90b2tlbiJ9.eBl3f8bDffva4aKP-XJXgz5vxwpRIzLTnh5Vy9ptR_4" audio_file_url = "https://drive.google.com/file/d/1i9EmD2AGn7VzQKYJZWe14cPQojY6qSBy/view?usp=share_link" # Download the audio file response = requests.get(audio_file_url) with open("temp_audio_file.mp3", "wb") as file: file.write(response.content) # Load the audio file and split it into chunks audio = AudioSegment.from_file("temp_audio_file.mp3", format="mp3") chunks = split_on_silence(audio, min_silence_len=500, silence_thresh=-40) # Function to transcribe an audio chunk def transcribe_audio_chunk(chunk, index): chunk.export(f"temp_chunk_{index}.mp3", format="mp3") url = "https://api.edenai.run/v2/audio/speech_to_text_async" headers = {"Authorization": f"Bearer {api_key}"} json_payload = { "providers": "google, amazon", "language": "en-US", "file_url": f"🔗 https://drive.google.com/file/d/1i9EmD2AGn7VzQKYJZWe14cPQojY6qSBy/view?usp=share_link {index}", } response = requests.post(url, json=json_payload, headers=headers) result = json.loads(response.text) return result["result"]["google"]["transcription"] # Transcribe each chunk and concatenate the text transcribed_text = "" for index, chunk in enumerate(chunks): text = transcribe_audio_chunk(chunk, index) transcribed_text += " " + text print(transcribed_text)