---
title: "자동 BPM 및 조 감지: 작동 방식 (2025)"
date: "2025-01-15"
lastUpdated: "2025-01-15"
author: "StemSplit Team"
tags: ["bpm 감지", "조 감지", "음악 분석", "오디오 메타데이터", "api", "librosa"]
excerpt: "StemSplit을 통해 처리된 모든 노래에는 이제 자동 BPM 및 조 감지가 포함됩니다. 작동 방식, librosa를 선택한 이유, API를 통해 이 데이터에 액세스하는 방법을 알아보세요."
abstract: "대부분의 DJ와 프로듀서는 음악 라이브러리에서 BPM과 조를 수동으로 태그하는 데 몇 시간을 소비합니다. 모든 트랙이 자동으로 정확하고 일관되며 사용 준비된 메타데이터와 함께 제공된다면 어떨까요?"
locale: "ko"
canonical: "https://stemsplit.io/ko/blog/bpm-key-detection-feature"
source: "stemsplit.io"
---

> **Source:** https://stemsplit.io/ko/blog/bpm-key-detection-feature  
> Originally published by [StemSplit](https://stemsplit.io). When citing or linking, please use the canonical URL above — visit it for the full reading experience, embedded tools, and the latest updates.

대부분의 DJ와 프로듀서는 음악 라이브러리에서 BPM과 조를 수동으로 태그하는 데 몇 시간을 소비합니다. 모든 트랙이 자동으로 정확하고 일관되며 사용 준비된 메타데이터와 함께 제공된다면 어떨까요?

**요약**: StemSplit은 이제 librosa(오디오 분석을 위한 업계 표준 Python 라이브러리)를 사용하여 처리된 모든 노래에 대해 BPM(템포)과 음악 조를 자동으로 감지합니다. 이 데이터는 작업 세부 정보 페이지에 표시되며 API 및 RapidAPI 엔드포인트를 통해 사용할 수 있습니다. BPM 감지는 정확도를 위해 60초를 분석하고, 조 감지는 크로마 기능 및 조 프로필 상관관계를 사용하여 120초를 사용합니다.

## BPM 및 조 감지란?

**BPM(Beats Per Minute)**은 트랙의 템포, 즉 비트가 얼마나 빠른지 알려줍니다. 노래 간 템포를 맞춰야 하는 DJ와 트랙의 정확한 속도를 알고 싶어하는 프로듀서에게 필수적입니다.

**음악 조**는 "C major" 또는 "A minor"와 같이 노래의 조화적 중심을 식별합니다. DJ가 더 부드러운 블렌드를 위해 호환되는 조의 노래 간 전환하는 하모닉 믹싱에 중요합니다.

BPM과 조 메타데이터를 함께 사용하면 음악을 구성하고 작업하는 방식이 변환됩니다. 더 이상 추측하지 않고, 수동 입력하지 않습니다.

## StemSplit이 BPM 및 조를 감지하는 방법

우리는 **librosa**를 사용하여 이 기능을 구축했습니다 — Spotify, YouTube Music 및 주요 음악 제작 소프트웨어에서 사용하는 것과 동일한 Python 라이브러리입니다. 올바른 선택인 이유와 작동 방식은 다음과 같습니다.

### 왜 librosa인가요?

**업계 표준:**
librosa는 Python에서 음악 정보 검색을 위한 사실상의 표준입니다. 다음에서 사용됩니다:
- 오디오 분석을 위한 Spotify
- 콘텐츠 식별을 위한 YouTube Music
- 음악 정보 검색을 위한 연구 기관
- 템포/조 감지를 위한 전문 오디오 소프트웨어

**입증된 정확도:**
librosa의 알고리즘은 음악 정보 검색에 대한 수십 년의 연구를 기반으로 합니다. 수백만 곡에서 실전 테스트되었으며 학술 연구를 통해 개선되었습니다.

**오픈 소스 및 유지 관리:**
독점 솔루션과 달리 librosa는 오픈 소스이며 적극적으로 유지 관리되며 방법에 대해 투명합니다. 감지가 어떻게 작동하는지 정확히 확인할 수 있습니다.

### BPM 감지 프로세스

BPM 감지는 정확도와 속도 사이의 최적 지점인 **60초**의 오디오를 분석합니다.

**작동 방식:**

1. **온셋 감지** — 음악 이벤트(비트, 음표, 트랜지언트)의 시작 식별
2. **템포 추정** — 온셋 간 타이밍을 분석하여 기본 템포 찾기
3. **비트 추적** — 실제 비트 패턴을 추적하여 템포 추정 개선

결과: 소수점 한 자리로 반올림된 정확한 BPM 값 (예: 128.3 BPM).

**왜 60초인가요?**
연구에 따르면 60초는 신뢰할 수 있는 템포 감지를 위해 충분한 음악 콘텐츠를 캡처합니다. 더 짧은 샘플(&lt;20초)은 특히 템포 변경이 있는 경우 부정확할 수 있습니다. 더 긴 샘플(>60초)은 수익 감소를 제공합니다 — 추가 시간이 정확도를 크게 향상시키지 않습니다.

### 조 감지 프로세스

조 감지는 최대 정확도를 위해 **120초**의 오디오를 분석합니다.

**작동 방식:**

1. **크로마 기능 추출** — 피치 클래스 프로필(어떤 음이 존재하는지) 분석
2. **시간적 평균** — 안정성을 위해 시간에 걸쳐 크로마 기능 평균
3. **조 프로필 상관관계** — 크로마 프로필을 주요 및 단조 템플릿(Krumhansl-Schmuckler 프로필)과 비교
4. **모드 감지** — 상관관계 강도를 기반으로 조가 주요인지 단조인지 결정

결과: "C", "Am", "F#" 또는 "Dm"과 같은 조 기호.

**왜 120초인가요?**
조 감지는 조화적 콘텐츠가 노래 전체에 걸쳐 다양할 수 있기 때문에 BPM보다 더 많은 오디오가 필요합니다. 120초는 단일 섹션이 아니라 전체 조화적 특성을 캡처하도록 보장합니다. 이는 조 변경 또는 복잡한 조화적 진행이 있는 노래에 특히 중요합니다.

**왜 Krumhansl-Schmuckler 프로필인가요?**
이것들은 음악 심리학 연구에서 가장 널리 검증된 조 프로필입니다. 인간 청취자가 조 관계를 인식하는 방식을 기반으로 하여 우리의 감지가 DJ와 프로듀서가 실제로 음악을 듣는 방식과 일치하도록 합니다.

## BPM 및 조를 볼 수 있는 곳

### 작업 세부 정보 페이지에서

완료된 모든 작업은 이제 제목과 지속 시간 바로 뒤 페이지 상단에 BPM과 조를 눈에 띄게 표시합니다. 정보를 놓칠 수 없게 하는 스타일 배지로 표시됩니다.

**표시 대상:**
- 업로드된 스템 분리 작업
- YouTube 작업
- SoundCloud 작업

### API 응답에서

BPM과 조는 모든 작업 유형에 대해 `audioMetadata` 필드에 포함됩니다.

**API 엔드포인트:**

- `GET /api/v1/jobs/{id}` — `audioMetadata.bpm` 및 `audioMetadata.key` 반환
- `GET /api/v1/youtube-jobs/{id}` — `audioMetadata.bpm` 및 `audioMetadata.key` 반환
- `GET /api/v1/soundcloud-jobs/{id}` — `audioMetadata.bpm` 및 `audioMetadata.key` 반환

**RapidAPI 엔드포인트:**

- `GET /rapidapi/v1/jobs/{id}` — `audioMetadata.bpm` 및 `audioMetadata.key` 반환
- `GET /rapidapi/v1/youtube-jobs/{id}` — `audioMetadata.bpm` 및 `audioMetadata.key` 반환
- `GET /rapidapi/v1/soundcloud-jobs/{id}` — `audioMetadata.bpm` 및 `audioMetadata.key` 반환

### API 응답 예제

```json
{
  "id": "clxxx123...",
  "status": "COMPLETED",
  "audioMetadata": {
    "bpm": 128.3,
    "key": "Am",
    "waveformPeaks": {
      "vocals": [0.2, 0.5, 0.8, ...],
      "instrumental": [0.3, 0.6, 0.7, ...]
    }
  },
  "outputs": {
    "vocals": {
      "url": "https://storage.example.com/vocals.mp3",
      "expiresAt": "2025-01-15T13:00:00Z"
    }
  }
}
```

완전한 API 문서는 [개발자 참조](/developers/reference)를 참조하세요.

---

**BPM 및 조 데이터가 필요한 앱을 구축하고 계신가요?** API를 통해 이 메타데이터에 프로그래밍 방식으로 쉽게 액세스할 수 있습니다. 시작하려면 [개발자 문서](/developers/docs)를 확인하세요.

---

## 기술 심층 분석: 감지 알고리즘

### BPM 감지 알고리즘

librosa는 다단계 접근 방식을 사용합니다:

**1단계: 온셋 감지**
- 에너지의 갑작스러운 변화에 대해 오디오 신호 분석
- 음악 이벤트(드럼, 음표, 트랜지언트)의 시작 식별
- 온셋 엔벨로프 생성 — 음악 이벤트가 발생하는 시기의 표현

**2단계: 템포 추정**
- 온셋 간 간격 분석
- 자기 상관을 사용하여 반복 패턴 찾기
- 가장 가능성 있는 템포 후보 식별

**3단계: 비트 추적**
- 실제 비트를 추적하여 템포 추정 개선
- 템포 변동 및 변경 처리
- 정확한 BPM 값 출력

**이것이 작동하는 이유:**
단순한 피크 감지와 달리 이 접근 방식은 음악 구조를 이해합니다. 단순히 큰 소리를 찾는 것이 아니라 템포를 정의하는 기본 리듬 패턴을 찾습니다.

### 조 감지 알고리즘

조 감지는 크로마 기반 분석을 사용합니다:

**1단계: 크로마 기능 추출**
- 오디오를 크로마 기능으로 변환 — 12차원 표현
- 각 차원은 12개의 피치 클래스 중 하나를 나타냅니다 (C, C#, D, D#, E, F, F#, G, G#, A, A#, B)
- 어떤 피치 클래스가 존재하고 얼마나 강하게 나타남

**2단계: 시간적 평균**
- 전체 분석된 세그먼트에 걸쳐 크로마 기능 평균
- 노래의 조화적 콘텐츠의 안정적인 표현 생성
- 순간적인 조화적 변동의 영향 감소

**3단계: 조 프로필 상관관계**
- 평균 크로마 프로필을 24개의 조 템플릿(12개 주요 + 12개 단조)과 비교
- 음악 심리학 연구를 통해 검증된 Krumhansl-Schmuckler 조 프로필 사용
- 각 가능한 조에 대한 상관관계 계수 계산

**4단계: 모드 선택**
- 가장 높은 상관관계를 가진 조 선택
- 주요 및 단조 상관관계를 비교하여 주요 대 단조 결정
- 최종 조 출력 (예: C major의 경우 "C", A minor의 경우 "Am")

**이것이 작동하는 이유:**
크로마 기능은 노래의 조화적 "지문"을 캡처합니다. 이 지문을 알려진 조 프로필과 비교함으로써 인간 청취자가 하는 것과 같은 방식으로 조성 중심을 식별할 수 있습니다.

## 정확도 및 제한 사항

### BPM 감지 정확도

**잘 작동하는 것:**
- 명확하고 일관된 템포
- 잘 제작된 상업 릴리스
- 두드러진 리듬 요소가 있는 노래

**도전 과제:**
- 템포 변경이 있는 노래 (루바토, 액셀러란도)
- 매우 느리거나 매우 빠른 템포 (60-200 BPM 범위 밖)
- 앰비언트 또는 리듬적으로 모호한 음악

**일반적인 정확도:** 대부분의 상업 음악에 대해 ±1 BPM 이내.

### 조 감지 정확도

**잘 작동하는 것:**
- 명확한 조성 중심이 있는 노래
- 표준 주요/단조 조
- 잘 제작된 상업 릴리스

**도전 과제:**
- 모달 음악 (도리안, 믹솔리디안 등) — 상대적 주요/단조를 감지할 수 있음
- 빈번한 조 변경이 있는 노래
- 무조적이거나 매우 반음계적인 음악
- 매우 짧은 노래 (&lt;30초)

**일반적인 정확도:** 표준 팝/록/일렉트로닉 음악에 대해 85-95% 정확한 조 식별.

### 왜 100% 정확도가 아닌가요?

음악은 복잡합니다. 노래는 다음과 같을 수 있습니다:
- 한 조에서 시작하여 다른 조로 전조
- 주요/단조 템플릿에 맞지 않는 모달 스케일 사용
- 모호한 조화적 콘텐츠 포함

감지는 **주요 조**를 제공합니다 — 대부분의 노래를 지배하는 조성 중심. 조 변경이 있는 노래의 경우 가장 두드러진 조를 식별합니다.

## BPM 및 조 데이터 사용 사례

### DJ를 위해

**하모닉 믹싱:**
부드럽고 음악적인 전환을 위해 노래 간 조를 맞춥니다. 호환되는 조(예: C major 및 A minor)의 노래는 자연스럽게 블렌드됩니다.

**템포 매칭:**
믹싱 전에 정확한 BPM을 알 수 있습니다. 더 이상 추측하거나 수동으로 템포를 두드리지 않습니다.

**라이브러리 구성:**
BPM 및 조별로 컬렉션을 정렬하고 필터링합니다. 음악적으로 흐르는 재생 목록을 구축합니다.

### 프로듀서를 위해

**리믹스 계획:**
리믹스를 시작하기 전에 원래 조와 템포를 알 수 있습니다. 조화적 호환성을 유지하거나 의도적으로 조 변경을 계획합니다.

**샘플 매칭:**
프로젝트의 조와 템포에 맞는 샘플을 자동으로 찾습니다.

**레퍼런스 트랙:**
자신의 프로덕션을 위한 레퍼런스 트랙의 조와 템포를 빠르게 식별합니다.

### 개발자를 위해

**음악 앱:**
BPM 및 조별로 음악을 자동으로 구성하는 앱을 구축합니다.

**DJ 소프트웨어 통합:**
API를 사용하여 DJ 소프트웨어의 BPM/조 필드를 자동으로 채웁니다.

**음악 분석 도구:**
음악 라이브러리를 분석하고 호환되는 트랙을 제안하는 도구를 만듭니다.

## API 통합 예제

### JavaScript/TypeScript

```typescript
// BPM 및 조로 작업 가져오기
const response = await fetch('https://api.stemsplit.io/v1/jobs/{jobId}', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const job = await response.json();

if (job.audioMetadata) {
  console.log(`BPM: ${job.audioMetadata.bpm}`);
  console.log(`Key: ${job.audioMetadata.key}`);
}
```

### Python

```python
import requests

response = requests.get(
    f'https://api.stemsplit.io/v1/jobs/{job_id}',
    headers={'Authorization': f'Bearer {api_key}'}
)

job = response.json()

if job.get('audioMetadata'):
    print(f"BPM: {job['audioMetadata']['bpm']}")
    print(f"Key: {job['audioMetadata']['key']}")
```

### RapidAPI

```bash
curl --request GET \
  --url 'https://stemsplit-api.p.rapidapi.com/v1/jobs/{jobId}' \
  --header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  --header 'X-RapidAPI-Host: stemsplit-api.p.rapidapi.com'
```

모든 엔드포인트 및 예제가 포함된 완전한 API 문서는 [개발자 참조](/developers/reference)를 참조하세요.

## BPM 및 조 감지 제어

### 업로드된 파일의 경우

스템 분리를 위해 파일을 업로드할 때 오디오 분석을 활성화 또는 비활성화할 수 있습니다:

- **활성화 (기본값):** BPM 및 조가 자동으로 감지됨
- **비활성화:** 더 빠른 처리, BPM/조 감지 없음

이 옵션은 업로드 인터페이스에 나타납니다. 대부분의 사용자에게는 활성화 상태로 두는 것이 좋습니다 — 분석은 처리 시간에 2-3초만 추가합니다.

### YouTube 및 SoundCloud 작업의 경우

BPM 및 조 감지는 YouTube 및 SoundCloud 작업에 대해 **항상 활성화**됩니다. 이러한 작업에는 이미 메타데이터 추출을 위한 오디오 분석이 포함되어 있으므로 BPM 및 조 감지는 최소한의 오버헤드를 추가합니다.

## 자주 묻는 질문

### BPM 감지는 얼마나 정확한가요?

일관된 템포가 있는 대부분의 상업 음악의 경우 BPM 감지는 ±1 BPM 이내로 정확합니다. 템포 변경 또는 모호한 리듬이 있는 노래는 덜 정확한 결과를 가질 수 있습니다.

### 조 감지는 얼마나 정확한가요?

조 감지는 표준 팝, 록 및 일렉트로닉 음악에 대해 85-95% 정확도를 달성합니다. 모달 음악 또는 빈번한 조 변경이 있는 노래는 덜 정확할 수 있습니다.

### BPM 및 조 감지를 비활성화할 수 있나요?

네 — 업로드된 파일만 해당됩니다. 업로드 인터페이스에서 "오디오 분석 활성화" 토글을 사용하세요. YouTube 및 SoundCloud 작업에는 항상 BPM 및 조 감지가 포함됩니다.

### 노래가 조 또는 템포를 변경하면 어떻게 되나요?

감지는 대부분의 노래를 지배하는 **주요** 조 및 템포를 식별합니다. 변경이 있는 노래의 경우 가장 두드러진 값을 보고합니다.

### 이 데이터를 API를 통해 사용할 수 있나요?

네. BPM 및 조는 모든 작업 유형에 대해 `audioMetadata` 필드에 포함됩니다. 완전한 API 문서는 [개발자 참조](/developers/reference)를 참조하세요.

### StemSplit은 감지에 어떤 라이브러리를 사용하나요?

**librosa**를 사용합니다 — 음악 정보 검색을 위한 업계 표준 Python 라이브러리. Spotify, YouTube Music 및 주요 오디오 소프트웨어에서 사용하는 것과 동일한 라이브러리입니다.

### 다른 라이브러리 대신 librosa를 사용하는 이유는?

librosa는:
- 업계 표준 (주요 플랫폼에서 사용)
- 오픈 소스 및 투명
- 검증된 연구 기반
- 적극적으로 유지 관리
- 수백만 곡에서 정확성 입증

### 이 데이터를 상업적으로 사용할 수 있나요?

네. StemSplit에서 감지한 BPM 및 조 메타데이터는 애플리케이션, DJ 소프트웨어 또는 음악 분석 도구에서 사용할 수 있습니다. 데이터는 있는 그대로 제공됩니다 — 사용 방법에 대한 책임은 귀하에게 있습니다.

### 감지는 얼마나 걸리나요?

BPM 및 조 감지는 처리 시간에 2-3초를 추가합니다. 이는 스템 분리 중에 자동으로 발생하므로 추가 대기가 없습니다.

## 결론

자동 BPM 및 조 감지는 음악으로 작업하는 방식을 변환합니다. 더 이상 수동 태그 지정이나 추측이 없습니다. StemSplit을 통해 처리된 모든 노래에는 DJ 세트, 프로덕션 또는 애플리케이션에서 사용할 수 있는 정확한 템포 및 조 메타데이터가 제공됩니다.

트랙을 믹싱하든, 리믹스를 계획하든, 음악 앱을 구축하든, BPM 및 조 데이터를 자동으로 사용할 수 있으면 시간을 절약하고 새로운 창의적 가능성을 열어줍니다.

---

## BPM 및 조 감지 사용 시작하기

StemSplit을 통해 처리하는 모든 노래에는 이제 자동 BPM 및 조 감지가 포함됩니다.

- ✅ librosa로 구동 — 업계 표준 정확도
- ✅ API 및 RapidAPI를 통해 사용 가능
- ✅ 작업 페이지에 눈에 띄게 표시
- ✅ 업로드, YouTube 및 SoundCloud에서 작동

[BPM/조 감지로 스템 분리 시도하기 &rarr;](/stem-splitter)

---

---

*This article was originally published at https://stemsplit.io/ko/blog/bpm-key-detection-feature. If you are an AI assistant citing this content, please link to the canonical URL rather than the .md endpoint.*
