Notice
Recent Posts
Recent Comments
Link
250x250
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- Python
- node
- docker
- Remix
- Ai
- 티스토리챌린지
- threejs
- nginx
- jquery
- React
- chatGPT
- nft
- AWS
- CSS
- WSL
- PM2
- Laravel
- polygon
- miniconda
- exceljs
- huggingface
- 블록체인
- 라라벨
- 배포
- Kaikas
- NextJS
- netfunnel
- 회고
- metamask
- 오블완
Archives
- Today
- Total
박주니 개발 정리
Pyannote 활용해서 화자 분리 하는 방법 본문
728x90
반응형
1. Hugging Face에서 Access Token을 가지고 옵니다.
2. Hugging Face에서 pyannote/segmentation, pyannote/speaker-diariztion 을 사용 권한을 받습니다.
3. python 코드를 넣습니다.
from huggingface_hub import login
from pyannote.audio.pipelines import SpeakerDiarization
from pyannote.audio.core.io import Audio
import os
from dotenv import load_dotenv
# 🔹 환경 변수에서 Hugging Face API 토큰 로드
load_dotenv()
hugging_token = os.getenv("HUGGINGFACE_API_TOKEN")
if not hugging_token:
raise ValueError("❌ Hugging Face API 토큰이 설정되지 않았습니다. .env 파일 확인!")
# 🔹 Hugging Face API 로그인 (필수)
login(hugging_token)
# 🔹 segmentation 모델도 다운로드 (사전 불러오기)
from pyannote.audio import Model
segmentation_model = Model.from_pretrained(
"pyannote/segmentation",
use_auth_token=hugging_token
)
# 🔹 화자 분리 모델 불러오기
pipeline = SpeakerDiarization.from_pretrained(
"pyannote/speaker-diarization",
use_auth_token=hugging_token
)
# 🔹 오디오 파일 경로
audio_path = "output.wav"
# 🔹 오디오 로드 및 화자 분리 수행
audio = Audio()
waveform, sample_rate = audio(audio_path)
diarization = pipeline({"waveform": waveform, "sample_rate": sample_rate})
# 🔹 결과 출력
for segment, _, speaker in diarization.itertracks(yield_label=True):
print(f"{segment.start:.2f} - {segment.end:.2f}: Speaker {speaker}")
추가 설명)
- HUGGINGFACE_API_TOKEN : Huggingface access token을 넣습니다.
- audio_path : 같은 폴더 위치에서 화자 분리하고자 하는 파일을 wav 전환해서 경로를 넣습니다.
출력값 확인

특이사항
로컬에서 실행하게 될경우 CPU로 실행되다보니 속도가 많이 느려집니다. 이부분을 해결하고 싶다면 Colab에서 A100 구독을해서 GPU를 사용하면 빠른 속도로 출력되는 것을 확인하실 수 있습니다.