Python으로 팟캐스트를 전사하는 방법

14333 단어 python
팟캐스트가 있거나 팟캐스트를 분석하고 싶다면 이 게시물이 적합합니다! 로컬 팟캐스트 녹음, 온라인으로 호스팅되는 녹음 및 팟캐스트 RSS 피드의 최신 에피소드를 전사하는 방법을 다룰 것입니다.

시작하기 전에



컴퓨터에 Python이 설치되어 있어야 합니다. 저는 이 글을 쓰는 시점에 Python 3.10을 사용하고 있습니다. 또한 Deepgram API 키get one here가 필요합니다.

새 디렉터리를 만들고 터미널에서 해당 디렉터리로 이동합니다. Create a virtual environmentpython3 -m venv virtual_env로 활성화하고 source virtual_env/bin/activate로 활성화합니다. pip install deepgram asyncio python-dotenv feedparser로 종속성을 설치합니다.

코드 편집기에서 디렉토리를 열고 빈.env 파일을 만듭니다. Deepgram API 키를 가져와 .env에 다음 줄을 추가합니다.

DEEPGRAM_API_KEY="replace-this-bit-with-your-key"


종속성 및 파일 설정



script.py 파일을 만들고 종속성을 가져옵니다.

import asyncio
import os
from dotenv import load_dotenv
from deepgram import Deepgram
import feedparser

.env 파일에서 값을 로드하고 Deepgram 키를 변수에 저장합니다.

load_dotenv()
DEEPGRAM_API_KEY = os.getenv('DEEPGRAM_API_KEY')


마지막으로 스크립트가 실행될 때 자동으로 실행되는 main() 함수를 설정합니다.

async def main():
    print('Hello world')

if __name__ == '__main__':
    asyncio.run(main())


성적 증명서 생성



Deepgram은 호스팅된 파일과 로컬 파일을 모두 기록할 수 있으며 팟캐스팅의 맥락에서 파일은 RSS 피드 내에 포함될 수도 있습니다.
main() 함수 내에서 API 키로 Deepgram Python SDK를 초기화합니다.

deepgram = Deepgram(DEEPGRAM_API_KEY)


옵션 1: 호스팅된 파일



호스팅된 파일을 기록하려면 url 속성을 제공합니다.

url = 'https://traffic.megaphone.fm/GLT8627189710.mp3?updated=1655947230'
source = { 'url': url }
transcription_options = { 'punctuate': True }
response = await deepgram.transcription.prerecorded(source, transcription_options)
print(response)


옵션 2: RSS 피드



최신 팟캐스트 에피소드를 기록하려면 feedparser를 사용하고 첫 번째로 반환된 항목을 선택합니다.

rss = feedparser.parse('https://feeds.npr.org/510318/podcast.xml')
url = rss.entries[0].enclosures[0].href
source = { 'url': url }
transcription_options = { 'punctuate': True }
response = await deepgram.transcription.prerecorded(source, transcription_options)
print(response)


옵션 3: 로컬 파일




with open('icymi.mp3', 'rb') as audio:
    source = { 'buffer': audio, 'mimetype': 'audio/mp3' }
    transcription_options = { 'punctuate': True }
    response = await deepgram.transcription.prerecorded(source, transcription_options)
    print(response)


파일을 열면 audio 값에 액세스하려면 모든 추가 줄을 들여써야 합니다.

화자 감지 및 단락



생성된 트랜스크립트는 꽤 좋지만 Deepgram에는 팟캐스트 트랜스크립트를 만들 때 큰 차이를 만드는 두 가지 추가 기능이 있습니다. 바로 diarization (speaker detection)paragraphs 입니다.
transcription_options 업데이트:

transcription_options = { 'punctuate': True, 'diarize': True, 'paragraphs': True }

print(response)를 다음으로 바꾸면 멋진 형식의 기록에 액세스할 수 있습니다.

transcript = response['results']['channels'][0]['alternatives'][0]['paragraphs']['transcript']
print(transcript)




파일에 성적 증명서 저장



출력과 함께 새 텍스트 파일을 저장하려면 print(transcript)를 다음으로 바꿉니다.

with open('transcript.txt', 'w') as f:
  f.write(transcript)


마무리



아래에서 전체 코드 조각을 찾을 수 있습니다. 궁금한 점이 있으면 언제든지 문의하세요.

import asyncio
import os
from dotenv import load_dotenv
from deepgram import Deepgram
import feedparser

load_dotenv()
DEEPGRAM_API_KEY = os.getenv('DEEPGRAM_API_KEY')

async def main():
    print('Hello world')
    deepgram = Deepgram(DEEPGRAM_API_KEY)

    # Option 1: Hosted File
    url = 'your-hosted-file-url'
    source = { 'url': url }

    # Option 2: Latest Podcast Feed Item
    # rss = feedparser.parse('rss-feed-url')
    # url = rss.entries[0].enclosures[0].href
    # source = { 'url': url }

    # Option 3: Local File (Indent further code)
    # with open('florist.mp3', 'rb') as audio:
    #     source = { 'buffer': audio, 'mimetype': 'audio/mp3' }

    transcription_options = { 'punctuate': True, 'diarize': True, 'paragraphs': True }
    response = await deepgram.transcription.prerecorded(source, transcription_options)

    transcript = response['results']['channels'][0]['alternatives'][0]['paragraphs']['transcript']

    with open('transcript.txt', 'w') as f:
        f.write(transcript)

if __name__ == '__main__':
    asyncio.run(main())

좋은 웹페이지 즐겨찾기