100 дней искусственного интеллекта. День 5: Транскрипция и извлечение информации из подкастов с помощью OpenAI

100 дней искусственного интеллекта. День 5: Транскрипция и извлечение информации из подкастов с помощью OpenAI

10 января 2024 г.

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

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

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

Подводя итог, мы достигаем нашей цели в три этапа:

  • Шаг 1. Выберите видео-подкаст YouTube.
  • Шаг 2. Расшифруйте видео.
  • Шаг 3. Получите информацию из транскрипции.

Шаг 1. Выберите видео-подкаст YouTube

Недавний разговор о подкасте, который взорвал YouTube, был о подкасте Лекса Фридмана с Джеффом Безосом. Итак, для этого упражнения я выберу это видео.< /п>

Шаг 2. Расшифруйте видео

Я использовал langchain YouTubeAudioLoader вместе с моделью преобразования аудио в текст Open AI для расшифровки видео с YouTube. Как обычно, для использования следующего скрипта вам понадобится секретный ключ OpenAI.

import os
import sys
import openai

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
openai.api_key  = os.environ['OPENAI_API_KEY']


## youtube video's audio loader - langchain 
from langchain_community.document_loaders.blob_loaders.youtube_audio import YoutubeAudioLoader
from langchain_community.document_loaders.generic import GenericLoader
from langchain_community.document_loaders.parsers import OpenAIWhisperParser #, OpenAIWhisperParserLocal

url="https://www.youtube.com/watch?v=DcWqzZ3I2cY&ab_channel=LexFridman"
save_dir="outputs/youtube/"
loader = GenericLoader(
     YoutubeAudioLoader([url],save_dir),
     OpenAIWhisperParser()
 )
docs = loader.load()
print(docs[0].page_content[0:500])

# Specify the file path where you want to save the text
file_path = "audio-transcript.txt"
try:
    with open(file_path, 'a', encoding='utf-8') as file:
        for doc in docs:
            file.write(doc.page_content)
    print(f'Large text saved to {file_path}')
except FileNotFoundError:
    print(f"Error: Input file '{file_path}' not found.")
except Exception as e:
    print(f"An error occurred: {e}")

При запуске этого сценария вы можете увидеть следующую ошибку, и я вставил решение, которое работает, если вы используете систему Windows.

  • ОШИБКА: Постобработка: ffprobe и ffmpeg не найдены. Пожалуйста, установите или укажите путь, используя –ffmpeg-location.

Запуск этого сценария создаст расшифровку и сохранит ее в текстовом файле audio-transcript.txt.

Шаг 3. Извлеките информацию из разговора

Для извлечения информации я использую Open AI API, и вот скрипт. Код загружает текст расшифровки и передает его вместе с подсказкой, предназначенной для извлечения информации, людей и информации. книги. Чтобы получить больше интересного из этого разговора, можно придумать более интересную подсказку. Обратите внимание, что имя файла немного отличается, поскольку мне пришлось сократить расшифровку до короткой длины, поскольку мой запрос на завершение к Open AI API превысил ограничения моего TPM.

import os
import sys
import openai
import shutil
from pprint import pprint

from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv()) # read local .env file
openai.api_key  = os.environ['OPENAI_API_KEY']

client = openai.OpenAI()

file_path = "audio-transcript-copy.txt"
try:
    with open(file_path, 'r', encoding='utf-8') as file:
        long_text = file.read()
    print(f'{file_path} is rad')
except FileNotFoundError:
    print(f"Error: Input file '{file_path}' not found.")
except Exception as e:
    print(f"An error occurred: {e}")

prompt2 = f"""
You will be provided with text deilimited by triple quotes.
The given text is a podcast transcript.

Provide the host and guest name.
Summarize the transcript in to 10 points.

If there are any people referred in the transcript. Extract the people mentioned and list them along with some info about them in the following format
1. Person 1's Name: Person 1's profession or what he or she is known for or the context in which he or she was referred to.
2. Person 2's Name: Person 2's profession or what he or she is known for or the context in which he or she was referred to.
...
2. Person N's Name: Person N's profession or what he or she is known for or the context in which he or she was referred to.
If the transcript doesnt contain refereces to any people then simply write "No people referred to in the conversation."

Extract the books mentioned and list them in the following format.
1. Book 1's Title: Context in which the book was referred to.
2. Book 2's Title: Context in which the book was referred to.
...
N. Book N's Title: Context in which the book was referred to.
If the transcript doesnt contain refereces to any books then simply write "No books referred to in the conversation."

IF you find any inspiration quotoes complie them in to a list.

"""{long_text}"""
"""

response = client.chat.completions.create(
  model="gpt-4",
  messages=[
    {
      "role": "user",
      "content": prompt2
    }
  ],
  temperature=0.7,
  #max_tokens=64,
  #top_p=1
)

print(response.choices[0].message.content)

Вот что я получил:

Результат: Лекс Фрейдман & Краткое содержание подкаста Джеффа Безоса

ПРЕДУПРЕЖДЕНИЕ ОБ ИДЕИ ПРОДУКТА 1: Может предоставить подкастерам услугу по созданию интеллектуальных расшифровок с аналитической информацией. Это будет игра B2B.

ПРЕДУПРЕЖДЕНИЕ 2: ИИ-ПРОДУКТ ИДЕЯ: Вместо услуги для создателей подкастов это могут быть клиенты B2C, которые слушают подкасты и хотят читать подкасты и создавать свою собственную библиотеку аналитических данных.

>

Ожидается, что обе эти идеи будут использованы существующими хостинговыми компаниями подкастов, такими как Spotify & запустите эти идеи как новые функции. Если бы я был менеджером по продукту в таких компаниях, я бы уже сейчас их продвигал.

Вот и закончился пятый день программы «100 дней искусственного интеллекта».

Следуйте за мной в Twitter, LinkedIn чтобы получать последние новости о 100 днях ИИ, или добавьте эту страницу в закладки & Ознакомьтесь с День 4. Как использовать ChatGPT, чтобы быть больше Продуктивно?


Также опубликовано здесь.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE