이번 프로젝트를 진행하게 되면서 Audio Dataset를 분류하는 작업이 필요하게 되었습니다. 하지만 딥러닝에서 요구하는 Dataset은 최소 만개부터 시작하게 되는데 이 데이터를 그룹으로 나눠주는 방식을 알아보도록 하겠습니다!
K-means Clustering이란?
K-means Clustering은 비지도 학습(Unsupervised Learning) 알고리즘 중 하나로, 주어진 데이터를 K개의 그룹(클러스터) 으로 자동으로 나누는 방식입니다.
이 알고리즘의 핵심은 유사한 데이터끼리 묶고, 서로 다른 데이터는 멀리 떨어지도록 클러스터를 형성하는 것입니다.
- 초기 중심(K개)을 무작위로 선택
- 각 데이터를 가장 가까운 중심에 할당
- 각 클러스터의 새로운 중심을 계산
- 중심이 더 이상 이동하지 않을 때까지 2~3단계를 반복
즉, 데이터를 잘 대표하는 중심(K)을 찾는 반복적 과정입니다.
데이터가 들어오면 아래의 그림처럼 유사한 데이터끼리는 묶고, 서로 다른 데이터는 멀리 떨어지도록 형성됩니다.

아래의 그림처럼 Data를 그룹으로 나눠준 최종 그래프입니다.

K-means Clustering 파이썬 예제
다음은 scikit-learn과 matplotlib을 사용한 간단한 K-means Clustering 예제입니다.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
# 랜덤한 3개의 클러스터 데이터 생성
X, y_true = make_blobs(n_samples=300, centers=3, cluster_std=0.60, random_state=0)
# K-means 모델 학습
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
y_kmeans = kmeans.predict(X)
# 클러스터링 결과 시각화
plt.scatter(X[:, 0], X[:, 1], c=y_kmeans, s=50, cmap='viridis')
centers = kmeans.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], c='black', s=200, alpha=0.75, marker='X')
plt.title("K-means Clustering")
plt.show()
결과: 데이터는 세 개의 클러스터로 자동 분리되며, 각 클러스터의 중심은 큰 X 마커로 표시됩니다. (군집화가 됩니다)
Audio 분야에서의 K-means Clustering 활용
K-means Clustering은 오디오 분석 분야에서도 매우 유용하게 쓰입니다. 특히 음성을 수치화한 후(예: MFCC, 음색 벡터 등) 다음과 같은 방식으로 활용됩니다:
1. 화자 분리 (Speaker Diarization)
- 서로 다른 사람의 목소리를 자동으로 분리합니다.
- 각 말하는 사람의 특징적인 음색 벡터를 클러스터링해 구분할 수 있습니다.
2. 사운드 타입 분류
- 예: 박수, 자동차 소리, 개 짖는 소리 등을 군집화하여 자동 라벨링하거나 전처리에 활용
3. 노래 세그멘테이션
- 노래 내에서 구간을 클러스터링하여, 가사/코러스/브리지 등의 구조를 파악
4. 음성 합성/변환 전처리
- 목소리 특징 벡터를 클러스터링하여 음성 변환 품질을 높이는 데 활용
- 특히 so-vits-svc, Tacotron2와 같은 음성 모델을 사용할 때, 클러스터링은 스타일 벡터 추출, 필터링, 분리 등에 핵심적인 역할을 합니다.
틀린 내용이 있다면 댓글로 달아주시면 감사하겠습니다!
'Tools & Setup > Study' 카테고리의 다른 글
| WSL에서 파일을 삭제했는데 디스크 용량이 줄지 않는 이유와 해결 방법 (0) | 2025.12.09 |
|---|---|
| 리눅스에서 파일, 폴더 삭제하기: rm / rmdir 핵심 정리 (0) | 2025.11.26 |
| Python 도구: Poetry vs Conda vs Venv (2) | 2025.08.29 |
| XGBoost 이란? (2) | 2025.07.29 |
| 기계학습 딥러닝 실습: MNIST 손글씨 숫자 분류 모델 구현 (0) | 2025.04.03 |